You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					4142 lines
				
				118 KiB
			
		
		
			
		
	
	
					4142 lines
				
				118 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, '__esModule', { value: true });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _extends = require('@babel/runtime/helpers/extends');
							 | 
						||
| 
								 | 
							
								var _assertThisInitialized = require('@babel/runtime/helpers/assertThisInitialized');
							 | 
						||
| 
								 | 
							
								var _inheritsLoose = require('@babel/runtime/helpers/inheritsLoose');
							 | 
						||
| 
								 | 
							
								var _wrapNativeSuper = require('@babel/runtime/helpers/wrapNativeSuper');
							 | 
						||
| 
								 | 
							
								var _taggedTemplateLiteralLoose = require('@babel/runtime/helpers/taggedTemplateLiteralLoose');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
							 | 
						||
| 
								 | 
							
								var _assertThisInitialized__default = /*#__PURE__*/_interopDefaultLegacy(_assertThisInitialized);
							 | 
						||
| 
								 | 
							
								var _inheritsLoose__default = /*#__PURE__*/_interopDefaultLegacy(_inheritsLoose);
							 | 
						||
| 
								 | 
							
								var _wrapNativeSuper__default = /*#__PURE__*/_interopDefaultLegacy(_wrapNativeSuper);
							 | 
						||
| 
								 | 
							
								var _taggedTemplateLiteralLoose__default = /*#__PURE__*/_interopDefaultLegacy(_taggedTemplateLiteralLoose);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function last() {
							 | 
						||
| 
								 | 
							
								  var _ref;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return _ref = arguments.length - 1, _ref < 0 || arguments.length <= _ref ? undefined : arguments[_ref];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function negation(a) {
							 | 
						||
| 
								 | 
							
								  return -a;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function addition(a, b) {
							 | 
						||
| 
								 | 
							
								  return a + b;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function subtraction(a, b) {
							 | 
						||
| 
								 | 
							
								  return a - b;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function multiplication(a, b) {
							 | 
						||
| 
								 | 
							
								  return a * b;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function division(a, b) {
							 | 
						||
| 
								 | 
							
								  return a / b;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function factorial(a) {
							 | 
						||
| 
								 | 
							
								  if (a % 1 || !(+a >= 0)) return NaN;
							 | 
						||
| 
								 | 
							
								  if (a > 170) return Infinity;else if (a === 0) return 1;else {
							 | 
						||
| 
								 | 
							
								    return a * factorial(a - 1);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function power(a, b) {
							 | 
						||
| 
								 | 
							
								  return Math.pow(a, b);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function sqrt(a) {
							 | 
						||
| 
								 | 
							
								  return Math.sqrt(a);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function max() {
							 | 
						||
| 
								 | 
							
								  return Math.max.apply(Math, arguments);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function min() {
							 | 
						||
| 
								 | 
							
								  return Math.min.apply(Math, arguments);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function comma() {
							 | 
						||
| 
								 | 
							
								  return Array.of.apply(Array, arguments);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var defaultMathSymbols = {
							 | 
						||
| 
								 | 
							
								  symbols: {
							 | 
						||
| 
								 | 
							
								    '!': {
							 | 
						||
| 
								 | 
							
								      postfix: {
							 | 
						||
| 
								 | 
							
								        symbol: '!',
							 | 
						||
| 
								 | 
							
								        f: factorial,
							 | 
						||
| 
								 | 
							
								        notation: 'postfix',
							 | 
						||
| 
								 | 
							
								        precedence: 6,
							 | 
						||
| 
								 | 
							
								        rightToLeft: 0,
							 | 
						||
| 
								 | 
							
								        argCount: 1
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      symbol: '!',
							 | 
						||
| 
								 | 
							
								      regSymbol: '!'
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    '^': {
							 | 
						||
| 
								 | 
							
								      infix: {
							 | 
						||
| 
								 | 
							
								        symbol: '^',
							 | 
						||
| 
								 | 
							
								        f: power,
							 | 
						||
| 
								 | 
							
								        notation: 'infix',
							 | 
						||
| 
								 | 
							
								        precedence: 5,
							 | 
						||
| 
								 | 
							
								        rightToLeft: 1,
							 | 
						||
| 
								 | 
							
								        argCount: 2
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      symbol: '^',
							 | 
						||
| 
								 | 
							
								      regSymbol: '\\^'
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    '*': {
							 | 
						||
| 
								 | 
							
								      infix: {
							 | 
						||
| 
								 | 
							
								        symbol: '*',
							 | 
						||
| 
								 | 
							
								        f: multiplication,
							 | 
						||
| 
								 | 
							
								        notation: 'infix',
							 | 
						||
| 
								 | 
							
								        precedence: 4,
							 | 
						||
| 
								 | 
							
								        rightToLeft: 0,
							 | 
						||
| 
								 | 
							
								        argCount: 2
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      symbol: '*',
							 | 
						||
| 
								 | 
							
								      regSymbol: '\\*'
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    '/': {
							 | 
						||
| 
								 | 
							
								      infix: {
							 | 
						||
| 
								 | 
							
								        symbol: '/',
							 | 
						||
| 
								 | 
							
								        f: division,
							 | 
						||
| 
								 | 
							
								        notation: 'infix',
							 | 
						||
| 
								 | 
							
								        precedence: 4,
							 | 
						||
| 
								 | 
							
								        rightToLeft: 0,
							 | 
						||
| 
								 | 
							
								        argCount: 2
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      symbol: '/',
							 | 
						||
| 
								 | 
							
								      regSymbol: '/'
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    '+': {
							 | 
						||
| 
								 | 
							
								      infix: {
							 | 
						||
| 
								 | 
							
								        symbol: '+',
							 | 
						||
| 
								 | 
							
								        f: addition,
							 | 
						||
| 
								 | 
							
								        notation: 'infix',
							 | 
						||
| 
								 | 
							
								        precedence: 2,
							 | 
						||
| 
								 | 
							
								        rightToLeft: 0,
							 | 
						||
| 
								 | 
							
								        argCount: 2
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      prefix: {
							 | 
						||
| 
								 | 
							
								        symbol: '+',
							 | 
						||
| 
								 | 
							
								        f: last,
							 | 
						||
| 
								 | 
							
								        notation: 'prefix',
							 | 
						||
| 
								 | 
							
								        precedence: 3,
							 | 
						||
| 
								 | 
							
								        rightToLeft: 0,
							 | 
						||
| 
								 | 
							
								        argCount: 1
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      symbol: '+',
							 | 
						||
| 
								 | 
							
								      regSymbol: '\\+'
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    '-': {
							 | 
						||
| 
								 | 
							
								      infix: {
							 | 
						||
| 
								 | 
							
								        symbol: '-',
							 | 
						||
| 
								 | 
							
								        f: subtraction,
							 | 
						||
| 
								 | 
							
								        notation: 'infix',
							 | 
						||
| 
								 | 
							
								        precedence: 2,
							 | 
						||
| 
								 | 
							
								        rightToLeft: 0,
							 | 
						||
| 
								 | 
							
								        argCount: 2
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      prefix: {
							 | 
						||
| 
								 | 
							
								        symbol: '-',
							 | 
						||
| 
								 | 
							
								        f: negation,
							 | 
						||
| 
								 | 
							
								        notation: 'prefix',
							 | 
						||
| 
								 | 
							
								        precedence: 3,
							 | 
						||
| 
								 | 
							
								        rightToLeft: 0,
							 | 
						||
| 
								 | 
							
								        argCount: 1
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      symbol: '-',
							 | 
						||
| 
								 | 
							
								      regSymbol: '-'
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    ',': {
							 | 
						||
| 
								 | 
							
								      infix: {
							 | 
						||
| 
								 | 
							
								        symbol: ',',
							 | 
						||
| 
								 | 
							
								        f: comma,
							 | 
						||
| 
								 | 
							
								        notation: 'infix',
							 | 
						||
| 
								 | 
							
								        precedence: 1,
							 | 
						||
| 
								 | 
							
								        rightToLeft: 0,
							 | 
						||
| 
								 | 
							
								        argCount: 2
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      symbol: ',',
							 | 
						||
| 
								 | 
							
								      regSymbol: ','
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    '(': {
							 | 
						||
| 
								 | 
							
								      prefix: {
							 | 
						||
| 
								 | 
							
								        symbol: '(',
							 | 
						||
| 
								 | 
							
								        f: last,
							 | 
						||
| 
								 | 
							
								        notation: 'prefix',
							 | 
						||
| 
								 | 
							
								        precedence: 0,
							 | 
						||
| 
								 | 
							
								        rightToLeft: 0,
							 | 
						||
| 
								 | 
							
								        argCount: 1
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      symbol: '(',
							 | 
						||
| 
								 | 
							
								      regSymbol: '\\('
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    ')': {
							 | 
						||
| 
								 | 
							
								      postfix: {
							 | 
						||
| 
								 | 
							
								        symbol: ')',
							 | 
						||
| 
								 | 
							
								        f: undefined,
							 | 
						||
| 
								 | 
							
								        notation: 'postfix',
							 | 
						||
| 
								 | 
							
								        precedence: 0,
							 | 
						||
| 
								 | 
							
								        rightToLeft: 0,
							 | 
						||
| 
								 | 
							
								        argCount: 1
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      symbol: ')',
							 | 
						||
| 
								 | 
							
								      regSymbol: '\\)'
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    min: {
							 | 
						||
| 
								 | 
							
								      func: {
							 | 
						||
| 
								 | 
							
								        symbol: 'min',
							 | 
						||
| 
								 | 
							
								        f: min,
							 | 
						||
| 
								 | 
							
								        notation: 'func',
							 | 
						||
| 
								 | 
							
								        precedence: 0,
							 | 
						||
| 
								 | 
							
								        rightToLeft: 0,
							 | 
						||
| 
								 | 
							
								        argCount: 1
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      symbol: 'min',
							 | 
						||
| 
								 | 
							
								      regSymbol: 'min\\b'
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    max: {
							 | 
						||
| 
								 | 
							
								      func: {
							 | 
						||
| 
								 | 
							
								        symbol: 'max',
							 | 
						||
| 
								 | 
							
								        f: max,
							 | 
						||
| 
								 | 
							
								        notation: 'func',
							 | 
						||
| 
								 | 
							
								        precedence: 0,
							 | 
						||
| 
								 | 
							
								        rightToLeft: 0,
							 | 
						||
| 
								 | 
							
								        argCount: 1
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      symbol: 'max',
							 | 
						||
| 
								 | 
							
								      regSymbol: 'max\\b'
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    sqrt: {
							 | 
						||
| 
								 | 
							
								      func: {
							 | 
						||
| 
								 | 
							
								        symbol: 'sqrt',
							 | 
						||
| 
								 | 
							
								        f: sqrt,
							 | 
						||
| 
								 | 
							
								        notation: 'func',
							 | 
						||
| 
								 | 
							
								        precedence: 0,
							 | 
						||
| 
								 | 
							
								        rightToLeft: 0,
							 | 
						||
| 
								 | 
							
								        argCount: 1
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      symbol: 'sqrt',
							 | 
						||
| 
								 | 
							
								      regSymbol: 'sqrt\\b'
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// based on https://github.com/styled-components/styled-components/blob/fcf6f3804c57a14dd7984dfab7bc06ee2edca044/src/utils/error.js
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Parse errors.md and turn it into a simple hash of code: message
							 | 
						||
| 
								 | 
							
								 * @private
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								var ERRORS = {
							 | 
						||
| 
								 | 
							
								  "1": "Passed invalid arguments to hsl, please pass multiple numbers e.g. hsl(360, 0.75, 0.4) or an object e.g. rgb({ hue: 255, saturation: 0.4, lightness: 0.75 }).\n\n",
							 | 
						||
| 
								 | 
							
								  "2": "Passed invalid arguments to hsla, please pass multiple numbers e.g. hsla(360, 0.75, 0.4, 0.7) or an object e.g. rgb({ hue: 255, saturation: 0.4, lightness: 0.75, alpha: 0.7 }).\n\n",
							 | 
						||
| 
								 | 
							
								  "3": "Passed an incorrect argument to a color function, please pass a string representation of a color.\n\n",
							 | 
						||
| 
								 | 
							
								  "4": "Couldn't generate valid rgb string from %s, it returned %s.\n\n",
							 | 
						||
| 
								 | 
							
								  "5": "Couldn't parse the color string. Please provide the color as a string in hex, rgb, rgba, hsl or hsla notation.\n\n",
							 | 
						||
| 
								 | 
							
								  "6": "Passed invalid arguments to rgb, please pass multiple numbers e.g. rgb(255, 205, 100) or an object e.g. rgb({ red: 255, green: 205, blue: 100 }).\n\n",
							 | 
						||
| 
								 | 
							
								  "7": "Passed invalid arguments to rgba, please pass multiple numbers e.g. rgb(255, 205, 100, 0.75) or an object e.g. rgb({ red: 255, green: 205, blue: 100, alpha: 0.75 }).\n\n",
							 | 
						||
| 
								 | 
							
								  "8": "Passed invalid argument to toColorString, please pass a RgbColor, RgbaColor, HslColor or HslaColor object.\n\n",
							 | 
						||
| 
								 | 
							
								  "9": "Please provide a number of steps to the modularScale helper.\n\n",
							 | 
						||
| 
								 | 
							
								  "10": "Please pass a number or one of the predefined scales to the modularScale helper as the ratio.\n\n",
							 | 
						||
| 
								 | 
							
								  "11": "Invalid value passed as base to modularScale, expected number or em string but got \"%s\"\n\n",
							 | 
						||
| 
								 | 
							
								  "12": "Expected a string ending in \"px\" or a number passed as the first argument to %s(), got \"%s\" instead.\n\n",
							 | 
						||
| 
								 | 
							
								  "13": "Expected a string ending in \"px\" or a number passed as the second argument to %s(), got \"%s\" instead.\n\n",
							 | 
						||
| 
								 | 
							
								  "14": "Passed invalid pixel value (\"%s\") to %s(), please pass a value like \"12px\" or 12.\n\n",
							 | 
						||
| 
								 | 
							
								  "15": "Passed invalid base value (\"%s\") to %s(), please pass a value like \"12px\" or 12.\n\n",
							 | 
						||
| 
								 | 
							
								  "16": "You must provide a template to this method.\n\n",
							 | 
						||
| 
								 | 
							
								  "17": "You passed an unsupported selector state to this method.\n\n",
							 | 
						||
| 
								 | 
							
								  "18": "minScreen and maxScreen must be provided as stringified numbers with the same units.\n\n",
							 | 
						||
| 
								 | 
							
								  "19": "fromSize and toSize must be provided as stringified numbers with the same units.\n\n",
							 | 
						||
| 
								 | 
							
								  "20": "expects either an array of objects or a single object with the properties prop, fromSize, and toSize.\n\n",
							 | 
						||
| 
								 | 
							
								  "21": "expects the objects in the first argument array to have the properties `prop`, `fromSize`, and `toSize`.\n\n",
							 | 
						||
| 
								 | 
							
								  "22": "expects the first argument object to have the properties `prop`, `fromSize`, and `toSize`.\n\n",
							 | 
						||
| 
								 | 
							
								  "23": "fontFace expects a name of a font-family.\n\n",
							 | 
						||
| 
								 | 
							
								  "24": "fontFace expects either the path to the font file(s) or a name of a local copy.\n\n",
							 | 
						||
| 
								 | 
							
								  "25": "fontFace expects localFonts to be an array.\n\n",
							 | 
						||
| 
								 | 
							
								  "26": "fontFace expects fileFormats to be an array.\n\n",
							 | 
						||
| 
								 | 
							
								  "27": "radialGradient requries at least 2 color-stops to properly render.\n\n",
							 | 
						||
| 
								 | 
							
								  "28": "Please supply a filename to retinaImage() as the first argument.\n\n",
							 | 
						||
| 
								 | 
							
								  "29": "Passed invalid argument to triangle, please pass correct pointingDirection e.g. 'right'.\n\n",
							 | 
						||
| 
								 | 
							
								  "30": "Passed an invalid value to `height` or `width`. Please provide a pixel based unit.\n\n",
							 | 
						||
| 
								 | 
							
								  "31": "The animation shorthand only takes 8 arguments. See the specification for more information: http://mdn.io/animation\n\n",
							 | 
						||
| 
								 | 
							
								  "32": "To pass multiple animations please supply them in arrays, e.g. animation(['rotate', '2s'], ['move', '1s'])\nTo pass a single animation please supply them in simple values, e.g. animation('rotate', '2s')\n\n",
							 | 
						||
| 
								 | 
							
								  "33": "The animation shorthand arrays can only have 8 elements. See the specification for more information: http://mdn.io/animation\n\n",
							 | 
						||
| 
								 | 
							
								  "34": "borderRadius expects a radius value as a string or number as the second argument.\n\n",
							 | 
						||
| 
								 | 
							
								  "35": "borderRadius expects one of \"top\", \"bottom\", \"left\" or \"right\" as the first argument.\n\n",
							 | 
						||
| 
								 | 
							
								  "36": "Property must be a string value.\n\n",
							 | 
						||
| 
								 | 
							
								  "37": "Syntax Error at %s.\n\n",
							 | 
						||
| 
								 | 
							
								  "38": "Formula contains a function that needs parentheses at %s.\n\n",
							 | 
						||
| 
								 | 
							
								  "39": "Formula is missing closing parenthesis at %s.\n\n",
							 | 
						||
| 
								 | 
							
								  "40": "Formula has too many closing parentheses at %s.\n\n",
							 | 
						||
| 
								 | 
							
								  "41": "All values in a formula must have the same unit or be unitless.\n\n",
							 | 
						||
| 
								 | 
							
								  "42": "Please provide a number of steps to the modularScale helper.\n\n",
							 | 
						||
| 
								 | 
							
								  "43": "Please pass a number or one of the predefined scales to the modularScale helper as the ratio.\n\n",
							 | 
						||
| 
								 | 
							
								  "44": "Invalid value passed as base to modularScale, expected number or em/rem string but got %s.\n\n",
							 | 
						||
| 
								 | 
							
								  "45": "Passed invalid argument to hslToColorString, please pass a HslColor or HslaColor object.\n\n",
							 | 
						||
| 
								 | 
							
								  "46": "Passed invalid argument to rgbToColorString, please pass a RgbColor or RgbaColor object.\n\n",
							 | 
						||
| 
								 | 
							
								  "47": "minScreen and maxScreen must be provided as stringified numbers with the same units.\n\n",
							 | 
						||
| 
								 | 
							
								  "48": "fromSize and toSize must be provided as stringified numbers with the same units.\n\n",
							 | 
						||
| 
								 | 
							
								  "49": "Expects either an array of objects or a single object with the properties prop, fromSize, and toSize.\n\n",
							 | 
						||
| 
								 | 
							
								  "50": "Expects the objects in the first argument array to have the properties prop, fromSize, and toSize.\n\n",
							 | 
						||
| 
								 | 
							
								  "51": "Expects the first argument object to have the properties prop, fromSize, and toSize.\n\n",
							 | 
						||
| 
								 | 
							
								  "52": "fontFace expects either the path to the font file(s) or a name of a local copy.\n\n",
							 | 
						||
| 
								 | 
							
								  "53": "fontFace expects localFonts to be an array.\n\n",
							 | 
						||
| 
								 | 
							
								  "54": "fontFace expects fileFormats to be an array.\n\n",
							 | 
						||
| 
								 | 
							
								  "55": "fontFace expects a name of a font-family.\n\n",
							 | 
						||
| 
								 | 
							
								  "56": "linearGradient requries at least 2 color-stops to properly render.\n\n",
							 | 
						||
| 
								 | 
							
								  "57": "radialGradient requries at least 2 color-stops to properly render.\n\n",
							 | 
						||
| 
								 | 
							
								  "58": "Please supply a filename to retinaImage() as the first argument.\n\n",
							 | 
						||
| 
								 | 
							
								  "59": "Passed invalid argument to triangle, please pass correct pointingDirection e.g. 'right'.\n\n",
							 | 
						||
| 
								 | 
							
								  "60": "Passed an invalid value to `height` or `width`. Please provide a pixel based unit.\n\n",
							 | 
						||
| 
								 | 
							
								  "61": "Property must be a string value.\n\n",
							 | 
						||
| 
								 | 
							
								  "62": "borderRadius expects a radius value as a string or number as the second argument.\n\n",
							 | 
						||
| 
								 | 
							
								  "63": "borderRadius expects one of \"top\", \"bottom\", \"left\" or \"right\" as the first argument.\n\n",
							 | 
						||
| 
								 | 
							
								  "64": "The animation shorthand only takes 8 arguments. See the specification for more information: http://mdn.io/animation.\n\n",
							 | 
						||
| 
								 | 
							
								  "65": "To pass multiple animations please supply them in arrays, e.g. animation(['rotate', '2s'], ['move', '1s'])\\nTo pass a single animation please supply them in simple values, e.g. animation('rotate', '2s').\n\n",
							 | 
						||
| 
								 | 
							
								  "66": "The animation shorthand arrays can only have 8 elements. See the specification for more information: http://mdn.io/animation.\n\n",
							 | 
						||
| 
								 | 
							
								  "67": "You must provide a template to this method.\n\n",
							 | 
						||
| 
								 | 
							
								  "68": "You passed an unsupported selector state to this method.\n\n",
							 | 
						||
| 
								 | 
							
								  "69": "Expected a string ending in \"px\" or a number passed as the first argument to %s(), got %s instead.\n\n",
							 | 
						||
| 
								 | 
							
								  "70": "Expected a string ending in \"px\" or a number passed as the second argument to %s(), got %s instead.\n\n",
							 | 
						||
| 
								 | 
							
								  "71": "Passed invalid pixel value %s to %s(), please pass a value like \"12px\" or 12.\n\n",
							 | 
						||
| 
								 | 
							
								  "72": "Passed invalid base value %s to %s(), please pass a value like \"12px\" or 12.\n\n",
							 | 
						||
| 
								 | 
							
								  "73": "Please provide a valid CSS variable.\n\n",
							 | 
						||
| 
								 | 
							
								  "74": "CSS variable not found.\n\n",
							 | 
						||
| 
								 | 
							
								  "75": "fromSize and toSize must be provided as stringified numbers with the same units as minScreen and maxScreen.\n"
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * super basic version of sprintf
							 | 
						||
| 
								 | 
							
								 * @private
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function format() {
							 | 
						||
| 
								 | 
							
								  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
							 | 
						||
| 
								 | 
							
								    args[_key] = arguments[_key];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var a = args[0];
							 | 
						||
| 
								 | 
							
								  var b = [];
							 | 
						||
| 
								 | 
							
								  var c;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  for (c = 1; c < args.length; c += 1) {
							 | 
						||
| 
								 | 
							
								    b.push(args[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.
							 | 
						||
| 
								 | 
							
								 * @private
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var PolishedError = /*#__PURE__*/function (_Error) {
							 | 
						||
| 
								 | 
							
								  _inheritsLoose__default['default'](PolishedError, _Error);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function PolishedError(code) {
							 | 
						||
| 
								 | 
							
								    var _this;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (process.env.NODE_ENV === 'production') {
							 | 
						||
| 
								 | 
							
								      _this = _Error.call(this, "An error occurred. See https://github.com/styled-components/polished/blob/main/src/internalHelpers/errors.md#" + code + " for more information.") || this;
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
							 | 
						||
| 
								 | 
							
								        args[_key2 - 1] = arguments[_key2];
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      _this = _Error.call(this, format.apply(void 0, [ERRORS[code]].concat(args))) || this;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return _assertThisInitialized__default['default'](_this);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return PolishedError;
							 | 
						||
| 
								 | 
							
								}( /*#__PURE__*/_wrapNativeSuper__default['default'](Error));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var unitRegExp = /((?!\w)a|na|hc|mc|dg|me[r]?|xe|ni(?![a-zA-Z])|mm|cp|tp|xp|q(?!s)|hv|xamv|nimv|wv|sm|s(?!\D|$)|ged|darg?|nrut)/g; // Merges additional math functionality into the defaults.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function mergeSymbolMaps(additionalSymbols) {
							 | 
						||
| 
								 | 
							
								  var symbolMap = {};
							 | 
						||
| 
								 | 
							
								  symbolMap.symbols = additionalSymbols ? _extends__default['default']({}, defaultMathSymbols.symbols, additionalSymbols.symbols) : _extends__default['default']({}, defaultMathSymbols.symbols);
							 | 
						||
| 
								 | 
							
								  return symbolMap;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function exec(operators, values) {
							 | 
						||
| 
								 | 
							
								  var _ref;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var op = operators.pop();
							 | 
						||
| 
								 | 
							
								  values.push(op.f.apply(op, (_ref = []).concat.apply(_ref, values.splice(-op.argCount))));
							 | 
						||
| 
								 | 
							
								  return op.precedence;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function calculate(expression, additionalSymbols) {
							 | 
						||
| 
								 | 
							
								  var symbolMap = mergeSymbolMaps(additionalSymbols);
							 | 
						||
| 
								 | 
							
								  var match;
							 | 
						||
| 
								 | 
							
								  var operators = [symbolMap.symbols['('].prefix];
							 | 
						||
| 
								 | 
							
								  var values = [];
							 | 
						||
| 
								 | 
							
								  var pattern = new RegExp( // Pattern for numbers
							 | 
						||
| 
								 | 
							
								  "\\d+(?:\\.\\d+)?|" + // ...and patterns for individual operators/function names
							 | 
						||
| 
								 | 
							
								  Object.keys(symbolMap.symbols).map(function (key) {
							 | 
						||
| 
								 | 
							
								    return symbolMap.symbols[key];
							 | 
						||
| 
								 | 
							
								  }) // longer symbols should be listed first
							 | 
						||
| 
								 | 
							
								  // $FlowFixMe
							 | 
						||
| 
								 | 
							
								  .sort(function (a, b) {
							 | 
						||
| 
								 | 
							
								    return b.symbol.length - a.symbol.length;
							 | 
						||
| 
								 | 
							
								  }) // $FlowFixMe
							 | 
						||
| 
								 | 
							
								  .map(function (val) {
							 | 
						||
| 
								 | 
							
								    return val.regSymbol;
							 | 
						||
| 
								 | 
							
								  }).join('|') + "|(\\S)", 'g');
							 | 
						||
| 
								 | 
							
								  pattern.lastIndex = 0; // Reset regular expression object
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var afterValue = false;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  do {
							 | 
						||
| 
								 | 
							
								    match = pattern.exec(expression);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    var _ref2 = match || [')', undefined],
							 | 
						||
| 
								 | 
							
								        token = _ref2[0],
							 | 
						||
| 
								 | 
							
								        bad = _ref2[1];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    var notNumber = symbolMap.symbols[token];
							 | 
						||
| 
								 | 
							
								    var notNewValue = notNumber && !notNumber.prefix && !notNumber.func;
							 | 
						||
| 
								 | 
							
								    var notAfterValue = !notNumber || !notNumber.postfix && !notNumber.infix; // Check for syntax errors:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (bad || (afterValue ? notAfterValue : notNewValue)) {
							 | 
						||
| 
								 | 
							
								      throw new PolishedError(37, match ? match.index : expression.length, expression);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (afterValue) {
							 | 
						||
| 
								 | 
							
								      // We either have an infix or postfix operator (they should be mutually exclusive)
							 | 
						||
| 
								 | 
							
								      var curr = notNumber.postfix || notNumber.infix;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      do {
							 | 
						||
| 
								 | 
							
								        var prev = operators[operators.length - 1];
							 | 
						||
| 
								 | 
							
								        if ((curr.precedence - prev.precedence || prev.rightToLeft) > 0) break; // Apply previous operator, since it has precedence over current one
							 | 
						||
| 
								 | 
							
								      } while (exec(operators, values)); // Exit loop after executing an opening parenthesis or function
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      afterValue = curr.notation === 'postfix';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      if (curr.symbol !== ')') {
							 | 
						||
| 
								 | 
							
								        operators.push(curr); // Postfix always has precedence over any operator that follows after it
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if (afterValue) exec(operators, values);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    } else if (notNumber) {
							 | 
						||
| 
								 | 
							
								      // prefix operator or function
							 | 
						||
| 
								 | 
							
								      operators.push(notNumber.prefix || notNumber.func);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      if (notNumber.func) {
							 | 
						||
| 
								 | 
							
								        // Require an opening parenthesis
							 | 
						||
| 
								 | 
							
								        match = pattern.exec(expression);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if (!match || match[0] !== '(') {
							 | 
						||
| 
								 | 
							
								          throw new PolishedError(38, match ? match.index : expression.length, expression);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      // number
							 | 
						||
| 
								 | 
							
								      values.push(+token);
							 | 
						||
| 
								 | 
							
								      afterValue = true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  } while (match && operators.length);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (operators.length) {
							 | 
						||
| 
								 | 
							
								    throw new PolishedError(39, match ? match.index : expression.length, expression);
							 | 
						||
| 
								 | 
							
								  } else if (match) {
							 | 
						||
| 
								 | 
							
								    throw new PolishedError(40, match ? match.index : expression.length, expression);
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    return values.pop();
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function reverseString(str) {
							 | 
						||
| 
								 | 
							
								  return str.split('').reverse().join('');
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Helper for doing math with CSS Units. Accepts a formula as a string. All values in the formula must have the same unit (or be unitless). Supports complex formulas utliziing addition, subtraction, multiplication, division, square root, powers, factorial, min, max, as well as parentheses for order of operation.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *In cases where you need to do calculations with mixed units where one unit is a [relative length unit](https://developer.mozilla.org/en-US/docs/Web/CSS/length#Relative_length_units), you will want to use [CSS Calc](https://developer.mozilla.org/en-US/docs/Web/CSS/calc).
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * *warning* While we've done everything possible to ensure math safely evalutes formulas expressed as strings, you should always use extreme caution when passing `math` user provided values.
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   fontSize: math('12rem + 8rem'),
							 | 
						||
| 
								 | 
							
								 *   fontSize: math('(12px + 2px) * 3'),
							 | 
						||
| 
								 | 
							
								 *   fontSize: math('3px^2 + sqrt(4)'),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   fontSize: ${math('12rem + 8rem')};
							 | 
						||
| 
								 | 
							
								 *   fontSize: ${math('(12px + 2px) * 3')};
							 | 
						||
| 
								 | 
							
								 *   fontSize: ${math('3px^2 + sqrt(4)')};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div: {
							 | 
						||
| 
								 | 
							
								 *   fontSize: '20rem',
							 | 
						||
| 
								 | 
							
								 *   fontSize: '42px',
							 | 
						||
| 
								 | 
							
								 *   fontSize: '11px',
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function math(formula, additionalSymbols) {
							 | 
						||
| 
								 | 
							
								  var reversedFormula = reverseString(formula);
							 | 
						||
| 
								 | 
							
								  var formulaMatch = reversedFormula.match(unitRegExp); // Check that all units are the same
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (formulaMatch && !formulaMatch.every(function (unit) {
							 | 
						||
| 
								 | 
							
								    return unit === formulaMatch[0];
							 | 
						||
| 
								 | 
							
								  })) {
							 | 
						||
| 
								 | 
							
								    throw new PolishedError(41);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var cleanFormula = reverseString(reversedFormula.replace(unitRegExp, ''));
							 | 
						||
| 
								 | 
							
								  return "" + calculate(cleanFormula, additionalSymbols) + (formulaMatch ? reverseString(formulaMatch[0]) : '');
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var cssVariableRegex = /--[\S]*/g;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Fetches the value of a passed CSS Variable.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Passthrough can be enabled (off by default) for when you are unsure of the input and want non-variable values to be returned instead of an error.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   'background': cssVar('--background-color'),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${cssVar('--background-color')};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   'background': 'red'
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function cssVar(cssVariable, passThrough) {
							 | 
						||
| 
								 | 
							
								  if (!cssVariable || !cssVariable.match(cssVariableRegex)) {
							 | 
						||
| 
								 | 
							
								    if (passThrough) return cssVariable;
							 | 
						||
| 
								 | 
							
								    throw new PolishedError(73);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var variableValue;
							 | 
						||
| 
								 | 
							
								  /* eslint-disable */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  /* istanbul ignore next */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (typeof document !== 'undefined' && document.documentElement !== null) {
							 | 
						||
| 
								 | 
							
								    variableValue = getComputedStyle(document.documentElement).getPropertyValue(cssVariable);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  /* eslint-enable */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (variableValue) {
							 | 
						||
| 
								 | 
							
								    return variableValue.trim();
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    throw new PolishedError(74);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// @private
							 | 
						||
| 
								 | 
							
								function capitalizeString(string) {
							 | 
						||
| 
								 | 
							
								  return string.charAt(0).toUpperCase() + string.slice(1);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var positionMap = ['Top', 'Right', 'Bottom', 'Left'];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function generateProperty(property, position) {
							 | 
						||
| 
								 | 
							
								  if (!property) return position.toLowerCase();
							 | 
						||
| 
								 | 
							
								  var splitProperty = property.split('-');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (splitProperty.length > 1) {
							 | 
						||
| 
								 | 
							
								    splitProperty.splice(1, 0, position);
							 | 
						||
| 
								 | 
							
								    return splitProperty.reduce(function (acc, val) {
							 | 
						||
| 
								 | 
							
								      return "" + acc + capitalizeString(val);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var joinedProperty = property.replace(/([a-z])([A-Z])/g, "$1" + position + "$2");
							 | 
						||
| 
								 | 
							
								  return property === joinedProperty ? "" + property + position : joinedProperty;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function generateStyles(property, valuesWithDefaults) {
							 | 
						||
| 
								 | 
							
								  var styles = {};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  for (var i = 0; i < valuesWithDefaults.length; i += 1) {
							 | 
						||
| 
								 | 
							
								    if (valuesWithDefaults[i] || valuesWithDefaults[i] === 0) {
							 | 
						||
| 
								 | 
							
								      styles[generateProperty(property, positionMap[i])] = valuesWithDefaults[i];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return styles;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Enables shorthand for direction-based properties. It accepts a property (hyphenated or camelCased) and up to four values that map to top, right, bottom, and left, respectively. You can optionally pass an empty string to get only the directional values as properties. You can also optionally pass a null argument for a directional value to ignore it.
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...directionalProperty('padding', '12px', '24px', '36px', '48px')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${directionalProperty('padding', '12px', '24px', '36px', '48px')}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div {
							 | 
						||
| 
								 | 
							
								 *   'paddingTop': '12px',
							 | 
						||
| 
								 | 
							
								 *   'paddingRight': '24px',
							 | 
						||
| 
								 | 
							
								 *   'paddingBottom': '36px',
							 | 
						||
| 
								 | 
							
								 *   'paddingLeft': '48px'
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function directionalProperty(property) {
							 | 
						||
| 
								 | 
							
								  for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
							 | 
						||
| 
								 | 
							
								    values[_key - 1] = arguments[_key];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  //  prettier-ignore
							 | 
						||
| 
								 | 
							
								  var firstValue = values[0],
							 | 
						||
| 
								 | 
							
								      _values$ = values[1],
							 | 
						||
| 
								 | 
							
								      secondValue = _values$ === void 0 ? firstValue : _values$,
							 | 
						||
| 
								 | 
							
								      _values$2 = values[2],
							 | 
						||
| 
								 | 
							
								      thirdValue = _values$2 === void 0 ? firstValue : _values$2,
							 | 
						||
| 
								 | 
							
								      _values$3 = values[3],
							 | 
						||
| 
								 | 
							
								      fourthValue = _values$3 === void 0 ? secondValue : _values$3;
							 | 
						||
| 
								 | 
							
								  var valuesWithDefaults = [firstValue, secondValue, thirdValue, fourthValue];
							 | 
						||
| 
								 | 
							
								  return generateStyles(property, valuesWithDefaults);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Check if a string ends with something
							 | 
						||
| 
								 | 
							
								 * @private
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function endsWith(string, suffix) {
							 | 
						||
| 
								 | 
							
								  return string.substr(-suffix.length) === suffix;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var cssRegex = /^([+-]?(?:\d+|\d*\.\d+))([a-z]*|%)$/;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Returns a given CSS value minus its unit of measure.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @deprecated - stripUnit's unitReturn functionality has been marked for deprecation in polished 4.0. It's functionality has been been moved to getValueAndUnit.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   '--dimension': stripUnit('100px')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   --dimension: ${stripUnit('100px')};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   '--dimension': 100
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function stripUnit(value, unitReturn) {
							 | 
						||
| 
								 | 
							
								  if (typeof value !== 'string') return unitReturn ? [value, undefined] : value;
							 | 
						||
| 
								 | 
							
								  var matchedValue = value.match(cssRegex);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (unitReturn) {
							 | 
						||
| 
								 | 
							
								    // eslint-disable-next-line no-console
							 | 
						||
| 
								 | 
							
								    console.warn("stripUnit's unitReturn functionality has been marked for deprecation in polished 4.0. It's functionality has been been moved to getValueAndUnit.");
							 | 
						||
| 
								 | 
							
								    if (matchedValue) return [parseFloat(value), matchedValue[2]];
							 | 
						||
| 
								 | 
							
								    return [value, undefined];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (matchedValue) return parseFloat(value);
							 | 
						||
| 
								 | 
							
								  return value;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Factory function that creates pixel-to-x converters
							 | 
						||
| 
								 | 
							
								 * @private
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var pxtoFactory = function pxtoFactory(to) {
							 | 
						||
| 
								 | 
							
								  return function (pxval, base) {
							 | 
						||
| 
								 | 
							
								    if (base === void 0) {
							 | 
						||
| 
								 | 
							
								      base = '16px';
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    var newPxval = pxval;
							 | 
						||
| 
								 | 
							
								    var newBase = base;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (typeof pxval === 'string') {
							 | 
						||
| 
								 | 
							
								      if (!endsWith(pxval, 'px')) {
							 | 
						||
| 
								 | 
							
								        throw new PolishedError(69, to, pxval);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      newPxval = stripUnit(pxval);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (typeof base === 'string') {
							 | 
						||
| 
								 | 
							
								      if (!endsWith(base, 'px')) {
							 | 
						||
| 
								 | 
							
								        throw new PolishedError(70, to, base);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      newBase = stripUnit(base);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (typeof newPxval === 'string') {
							 | 
						||
| 
								 | 
							
								      throw new PolishedError(71, pxval, to);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (typeof newBase === 'string') {
							 | 
						||
| 
								 | 
							
								      throw new PolishedError(72, base, to);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return "" + newPxval / newBase + to;
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Convert pixel value to ems. The default base value is 16px, but can be changed by passing a
							 | 
						||
| 
								 | 
							
								 * second argument to the function.
							 | 
						||
| 
								 | 
							
								 * @function
							 | 
						||
| 
								 | 
							
								 * @param {string|number} pxval
							 | 
						||
| 
								 | 
							
								 * @param {string|number} [base='16px']
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   'height': em('16px')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   height: ${em('16px')}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   'height': '1em'
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var em = /*#__PURE__*/pxtoFactory('em');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var cssRegex$1 = /^([+-]?(?:\d+|\d*\.\d+))([a-z]*|%)$/;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Returns a given CSS value and its unit as elements of an array.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   '--dimension': getValueAndUnit('100px')[0],
							 | 
						||
| 
								 | 
							
								 *   '--unit': getValueAndUnit('100px')[1],
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   --dimension: ${getValueAndUnit('100px')[0]};
							 | 
						||
| 
								 | 
							
								 *   --unit: ${getValueAndUnit('100px')[1]};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   '--dimension': 100,
							 | 
						||
| 
								 | 
							
								 *   '--unit': 'px',
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function getValueAndUnit(value) {
							 | 
						||
| 
								 | 
							
								  if (typeof value !== 'string') return [value, ''];
							 | 
						||
| 
								 | 
							
								  var matchedValue = value.match(cssRegex$1);
							 | 
						||
| 
								 | 
							
								  if (matchedValue) return [parseFloat(value), matchedValue[2]];
							 | 
						||
| 
								 | 
							
								  return [value, undefined];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var ratioNames = {
							 | 
						||
| 
								 | 
							
								  minorSecond: 1.067,
							 | 
						||
| 
								 | 
							
								  majorSecond: 1.125,
							 | 
						||
| 
								 | 
							
								  minorThird: 1.2,
							 | 
						||
| 
								 | 
							
								  majorThird: 1.25,
							 | 
						||
| 
								 | 
							
								  perfectFourth: 1.333,
							 | 
						||
| 
								 | 
							
								  augFourth: 1.414,
							 | 
						||
| 
								 | 
							
								  perfectFifth: 1.5,
							 | 
						||
| 
								 | 
							
								  minorSixth: 1.6,
							 | 
						||
| 
								 | 
							
								  goldenSection: 1.618,
							 | 
						||
| 
								 | 
							
								  majorSixth: 1.667,
							 | 
						||
| 
								 | 
							
								  minorSeventh: 1.778,
							 | 
						||
| 
								 | 
							
								  majorSeventh: 1.875,
							 | 
						||
| 
								 | 
							
								  octave: 2,
							 | 
						||
| 
								 | 
							
								  majorTenth: 2.5,
							 | 
						||
| 
								 | 
							
								  majorEleventh: 2.667,
							 | 
						||
| 
								 | 
							
								  majorTwelfth: 3,
							 | 
						||
| 
								 | 
							
								  doubleOctave: 4
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function getRatio(ratioName) {
							 | 
						||
| 
								 | 
							
								  return ratioNames[ratioName];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Establish consistent measurements and spacial relationships throughout your projects by incrementing an em or rem value up or down a defined scale. We provide a list of commonly used scales as pre-defined variables.
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *    // Increment two steps up the default scale
							 | 
						||
| 
								 | 
							
								 *   'fontSize': modularScale(2)
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *    // Increment two steps up the default scale
							 | 
						||
| 
								 | 
							
								 *   fontSize: ${modularScale(2)}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   'fontSize': '1.77689em'
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function modularScale(steps, base, ratio) {
							 | 
						||
| 
								 | 
							
								  if (base === void 0) {
							 | 
						||
| 
								 | 
							
								    base = '1em';
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (ratio === void 0) {
							 | 
						||
| 
								 | 
							
								    ratio = 1.333;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (typeof steps !== 'number') {
							 | 
						||
| 
								 | 
							
								    throw new PolishedError(42);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (typeof ratio === 'string' && !ratioNames[ratio]) {
							 | 
						||
| 
								 | 
							
								    throw new PolishedError(43);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var _ref = typeof base === 'string' ? getValueAndUnit(base) : [base, ''],
							 | 
						||
| 
								 | 
							
								      realBase = _ref[0],
							 | 
						||
| 
								 | 
							
								      unit = _ref[1];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var realRatio = typeof ratio === 'string' ? getRatio(ratio) : ratio;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (typeof realBase === 'string') {
							 | 
						||
| 
								 | 
							
								    throw new PolishedError(44, base);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return "" + realBase * Math.pow(realRatio, steps) + (unit || '');
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Convert pixel value to rems. The default base value is 16px, but can be changed by passing a
							 | 
						||
| 
								 | 
							
								 * second argument to the function.
							 | 
						||
| 
								 | 
							
								 * @function
							 | 
						||
| 
								 | 
							
								 * @param {string|number} pxval
							 | 
						||
| 
								 | 
							
								 * @param {string|number} [base='16px']
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   'height': rem('16px')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   height: ${rem('16px')}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   'height': '1rem'
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var rem = /*#__PURE__*/pxtoFactory('rem');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Returns a CSS calc formula for linear interpolation of a property between two values. Accepts optional minScreen (defaults to '320px') and maxScreen (defaults to '1200px').
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   fontSize: between('20px', '100px', '400px', '1000px'),
							 | 
						||
| 
								 | 
							
								 *   fontSize: between('20px', '100px')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   fontSize: ${between('20px', '100px', '400px', '1000px')};
							 | 
						||
| 
								 | 
							
								 *   fontSize: ${between('20px', '100px')}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * h1: {
							 | 
						||
| 
								 | 
							
								 *   'fontSize': 'calc(-33.33333333333334px + 13.333333333333334vw)',
							 | 
						||
| 
								 | 
							
								 *   'fontSize': 'calc(-9.090909090909093px + 9.090909090909092vw)'
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function between(fromSize, toSize, minScreen, maxScreen) {
							 | 
						||
| 
								 | 
							
								  if (minScreen === void 0) {
							 | 
						||
| 
								 | 
							
								    minScreen = '320px';
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (maxScreen === void 0) {
							 | 
						||
| 
								 | 
							
								    maxScreen = '1200px';
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var _getValueAndUnit = getValueAndUnit(fromSize),
							 | 
						||
| 
								 | 
							
								      unitlessFromSize = _getValueAndUnit[0],
							 | 
						||
| 
								 | 
							
								      fromSizeUnit = _getValueAndUnit[1];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var _getValueAndUnit2 = getValueAndUnit(toSize),
							 | 
						||
| 
								 | 
							
								      unitlessToSize = _getValueAndUnit2[0],
							 | 
						||
| 
								 | 
							
								      toSizeUnit = _getValueAndUnit2[1];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var _getValueAndUnit3 = getValueAndUnit(minScreen),
							 | 
						||
| 
								 | 
							
								      unitlessMinScreen = _getValueAndUnit3[0],
							 | 
						||
| 
								 | 
							
								      minScreenUnit = _getValueAndUnit3[1];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var _getValueAndUnit4 = getValueAndUnit(maxScreen),
							 | 
						||
| 
								 | 
							
								      unitlessMaxScreen = _getValueAndUnit4[0],
							 | 
						||
| 
								 | 
							
								      maxScreenUnit = _getValueAndUnit4[1];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (typeof unitlessMinScreen !== 'number' || typeof unitlessMaxScreen !== 'number' || !minScreenUnit || !maxScreenUnit || minScreenUnit !== maxScreenUnit) {
							 | 
						||
| 
								 | 
							
								    throw new PolishedError(47);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (typeof unitlessFromSize !== 'number' || typeof unitlessToSize !== 'number' || fromSizeUnit !== toSizeUnit) {
							 | 
						||
| 
								 | 
							
								    throw new PolishedError(48);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (fromSizeUnit !== minScreenUnit || toSizeUnit !== maxScreenUnit) {
							 | 
						||
| 
								 | 
							
								    throw new PolishedError(75);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var slope = (unitlessFromSize - unitlessToSize) / (unitlessMinScreen - unitlessMaxScreen);
							 | 
						||
| 
								 | 
							
								  var base = unitlessToSize - slope * unitlessMaxScreen;
							 | 
						||
| 
								 | 
							
								  return "calc(" + base.toFixed(2) + (fromSizeUnit || '') + " + " + (100 * slope).toFixed(2) + "vw)";
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * CSS to contain a float (credit to CSSMojo).
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *    ...clearFix(),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${clearFix()}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * '&::after': {
							 | 
						||
| 
								 | 
							
								 *   'clear': 'both',
							 | 
						||
| 
								 | 
							
								 *   'content': '""',
							 | 
						||
| 
								 | 
							
								 *   'display': 'table'
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function clearFix(parent) {
							 | 
						||
| 
								 | 
							
								  var _ref;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (parent === void 0) {
							 | 
						||
| 
								 | 
							
								    parent = '&';
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var pseudoSelector = parent + "::after";
							 | 
						||
| 
								 | 
							
								  return _ref = {}, _ref[pseudoSelector] = {
							 | 
						||
| 
								 | 
							
								    clear: 'both',
							 | 
						||
| 
								 | 
							
								    content: '""',
							 | 
						||
| 
								 | 
							
								    display: 'table'
							 | 
						||
| 
								 | 
							
								  }, _ref;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * CSS to fully cover an area. Can optionally be passed an offset to act as a "padding".
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...cover()
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${cover()}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div: {
							 | 
						||
| 
								 | 
							
								 *   'position': 'absolute',
							 | 
						||
| 
								 | 
							
								 *   'top': '0',
							 | 
						||
| 
								 | 
							
								 *   'right: '0',
							 | 
						||
| 
								 | 
							
								 *   'bottom': '0',
							 | 
						||
| 
								 | 
							
								 *   'left: '0'
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function cover(offset) {
							 | 
						||
| 
								 | 
							
								  if (offset === void 0) {
							 | 
						||
| 
								 | 
							
								    offset = 0;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								    position: 'absolute',
							 | 
						||
| 
								 | 
							
								    top: offset,
							 | 
						||
| 
								 | 
							
								    right: offset,
							 | 
						||
| 
								 | 
							
								    bottom: offset,
							 | 
						||
| 
								 | 
							
								    left: offset
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * CSS to represent truncated text with an ellipsis.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...ellipsis('250px')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${ellipsis('250px')}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div: {
							 | 
						||
| 
								 | 
							
								 *   'display': 'inline-block',
							 | 
						||
| 
								 | 
							
								 *   'maxWidth': '250px',
							 | 
						||
| 
								 | 
							
								 *   'overflow': 'hidden',
							 | 
						||
| 
								 | 
							
								 *   'textOverflow': 'ellipsis',
							 | 
						||
| 
								 | 
							
								 *   'whiteSpace': 'nowrap',
							 | 
						||
| 
								 | 
							
								 *   'wordWrap': 'normal'
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function ellipsis(width) {
							 | 
						||
| 
								 | 
							
								  if (width === void 0) {
							 | 
						||
| 
								 | 
							
								    width = '100%';
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								    display: 'inline-block',
							 | 
						||
| 
								 | 
							
								    maxWidth: width,
							 | 
						||
| 
								 | 
							
								    overflow: 'hidden',
							 | 
						||
| 
								 | 
							
								    textOverflow: 'ellipsis',
							 | 
						||
| 
								 | 
							
								    whiteSpace: 'nowrap',
							 | 
						||
| 
								 | 
							
								    wordWrap: 'normal'
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Returns a set of media queries that resizes a property (or set of properties) between a provided fromSize and toSize. Accepts optional minScreen (defaults to '320px') and maxScreen (defaults to '1200px') to constrain the interpolation.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...fluidRange(
							 | 
						||
| 
								 | 
							
								 *    {
							 | 
						||
| 
								 | 
							
								 *        prop: 'padding',
							 | 
						||
| 
								 | 
							
								 *        fromSize: '20px',
							 | 
						||
| 
								 | 
							
								 *        toSize: '100px',
							 | 
						||
| 
								 | 
							
								 *      },
							 | 
						||
| 
								 | 
							
								 *      '400px',
							 | 
						||
| 
								 | 
							
								 *      '1000px',
							 | 
						||
| 
								 | 
							
								 *    )
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${fluidRange(
							 | 
						||
| 
								 | 
							
								 *      {
							 | 
						||
| 
								 | 
							
								 *        prop: 'padding',
							 | 
						||
| 
								 | 
							
								 *        fromSize: '20px',
							 | 
						||
| 
								 | 
							
								 *        toSize: '100px',
							 | 
						||
| 
								 | 
							
								 *      },
							 | 
						||
| 
								 | 
							
								 *      '400px',
							 | 
						||
| 
								 | 
							
								 *      '1000px',
							 | 
						||
| 
								 | 
							
								 *    )}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div: {
							 | 
						||
| 
								 | 
							
								 *   "@media (min-width: 1000px)": Object {
							 | 
						||
| 
								 | 
							
								 *     "padding": "100px",
							 | 
						||
| 
								 | 
							
								 *   },
							 | 
						||
| 
								 | 
							
								 *   "@media (min-width: 400px)": Object {
							 | 
						||
| 
								 | 
							
								 *     "padding": "calc(-33.33333333333334px + 13.333333333333334vw)",
							 | 
						||
| 
								 | 
							
								 *   },
							 | 
						||
| 
								 | 
							
								 *   "padding": "20px",
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function fluidRange(cssProp, minScreen, maxScreen) {
							 | 
						||
| 
								 | 
							
								  if (minScreen === void 0) {
							 | 
						||
| 
								 | 
							
								    minScreen = '320px';
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (maxScreen === void 0) {
							 | 
						||
| 
								 | 
							
								    maxScreen = '1200px';
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (!Array.isArray(cssProp) && typeof cssProp !== 'object' || cssProp === null) {
							 | 
						||
| 
								 | 
							
								    throw new PolishedError(49);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (Array.isArray(cssProp)) {
							 | 
						||
| 
								 | 
							
								    var mediaQueries = {};
							 | 
						||
| 
								 | 
							
								    var fallbacks = {};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    for (var _iterator = _createForOfIteratorHelperLoose(cssProp), _step; !(_step = _iterator()).done;) {
							 | 
						||
| 
								 | 
							
								      var _extends2, _extends3;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      var obj = _step.value;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      if (!obj.prop || !obj.fromSize || !obj.toSize) {
							 | 
						||
| 
								 | 
							
								        throw new PolishedError(50);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      fallbacks[obj.prop] = obj.fromSize;
							 | 
						||
| 
								 | 
							
								      mediaQueries["@media (min-width: " + minScreen + ")"] = _extends__default['default']({}, mediaQueries["@media (min-width: " + minScreen + ")"], (_extends2 = {}, _extends2[obj.prop] = between(obj.fromSize, obj.toSize, minScreen, maxScreen), _extends2));
							 | 
						||
| 
								 | 
							
								      mediaQueries["@media (min-width: " + maxScreen + ")"] = _extends__default['default']({}, mediaQueries["@media (min-width: " + maxScreen + ")"], (_extends3 = {}, _extends3[obj.prop] = obj.toSize, _extends3));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return _extends__default['default']({}, fallbacks, mediaQueries);
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    var _ref, _ref2, _ref3;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (!cssProp.prop || !cssProp.fromSize || !cssProp.toSize) {
							 | 
						||
| 
								 | 
							
								      throw new PolishedError(51);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return _ref3 = {}, _ref3[cssProp.prop] = cssProp.fromSize, _ref3["@media (min-width: " + minScreen + ")"] = (_ref = {}, _ref[cssProp.prop] = between(cssProp.fromSize, cssProp.toSize, minScreen, maxScreen), _ref), _ref3["@media (min-width: " + maxScreen + ")"] = (_ref2 = {}, _ref2[cssProp.prop] = cssProp.toSize, _ref2), _ref3;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var dataURIRegex = /^\s*data:([a-z]+\/[a-z-]+(;[a-z-]+=[a-z-]+)?)?(;charset=[a-z0-9-]+)?(;base64)?,[a-z0-9!$&',()*+,;=\-._~:@/?%\s]*\s*$/i;
							 | 
						||
| 
								 | 
							
								var formatHintMap = {
							 | 
						||
| 
								 | 
							
								  woff: 'woff',
							 | 
						||
| 
								 | 
							
								  woff2: 'woff2',
							 | 
						||
| 
								 | 
							
								  ttf: 'truetype',
							 | 
						||
| 
								 | 
							
								  otf: 'opentype',
							 | 
						||
| 
								 | 
							
								  eot: 'embedded-opentype',
							 | 
						||
| 
								 | 
							
								  svg: 'svg',
							 | 
						||
| 
								 | 
							
								  svgz: 'svg'
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function generateFormatHint(format, formatHint) {
							 | 
						||
| 
								 | 
							
								  if (!formatHint) return '';
							 | 
						||
| 
								 | 
							
								  return " format(\"" + formatHintMap[format] + "\")";
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function isDataURI(fontFilePath) {
							 | 
						||
| 
								 | 
							
								  return !!fontFilePath.replace(/\s+/g, ' ').match(dataURIRegex);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function generateFileReferences(fontFilePath, fileFormats, formatHint) {
							 | 
						||
| 
								 | 
							
								  if (isDataURI(fontFilePath)) {
							 | 
						||
| 
								 | 
							
								    return "url(\"" + fontFilePath + "\")" + generateFormatHint(fileFormats[0], formatHint);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var fileFontReferences = fileFormats.map(function (format) {
							 | 
						||
| 
								 | 
							
								    return "url(\"" + fontFilePath + "." + format + "\")" + generateFormatHint(format, formatHint);
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								  return fileFontReferences.join(', ');
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function generateLocalReferences(localFonts) {
							 | 
						||
| 
								 | 
							
								  var localFontReferences = localFonts.map(function (font) {
							 | 
						||
| 
								 | 
							
								    return "local(\"" + font + "\")";
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								  return localFontReferences.join(', ');
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function generateSources(fontFilePath, localFonts, fileFormats, formatHint) {
							 | 
						||
| 
								 | 
							
								  var fontReferences = [];
							 | 
						||
| 
								 | 
							
								  if (localFonts) fontReferences.push(generateLocalReferences(localFonts));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (fontFilePath) {
							 | 
						||
| 
								 | 
							
								    fontReferences.push(generateFileReferences(fontFilePath, fileFormats, formatHint));
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return fontReferences.join(', ');
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * CSS for a @font-face declaration.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object basic usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *    ...fontFace({
							 | 
						||
| 
								 | 
							
								 *      'fontFamily': 'Sans-Pro',
							 | 
						||
| 
								 | 
							
								 *      'fontFilePath': 'path/to/file'
							 | 
						||
| 
								 | 
							
								 *    })
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components basic usage
							 | 
						||
| 
								 | 
							
								 * const GlobalStyle = createGlobalStyle`${
							 | 
						||
| 
								 | 
							
								 *   fontFace({
							 | 
						||
| 
								 | 
							
								 *     'fontFamily': 'Sans-Pro',
							 | 
						||
| 
								 | 
							
								 *     'fontFilePath': 'path/to/file'
							 | 
						||
| 
								 | 
							
								 *   }
							 | 
						||
| 
								 | 
							
								 * )}`
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * '@font-face': {
							 | 
						||
| 
								 | 
							
								 *   'fontFamily': 'Sans-Pro',
							 | 
						||
| 
								 | 
							
								 *   'src': 'url("path/to/file.eot"), url("path/to/file.woff2"), url("path/to/file.woff"), url("path/to/file.ttf"), url("path/to/file.svg")',
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function fontFace(_ref) {
							 | 
						||
| 
								 | 
							
								  var fontFamily = _ref.fontFamily,
							 | 
						||
| 
								 | 
							
								      fontFilePath = _ref.fontFilePath,
							 | 
						||
| 
								 | 
							
								      fontStretch = _ref.fontStretch,
							 | 
						||
| 
								 | 
							
								      fontStyle = _ref.fontStyle,
							 | 
						||
| 
								 | 
							
								      fontVariant = _ref.fontVariant,
							 | 
						||
| 
								 | 
							
								      fontWeight = _ref.fontWeight,
							 | 
						||
| 
								 | 
							
								      _ref$fileFormats = _ref.fileFormats,
							 | 
						||
| 
								 | 
							
								      fileFormats = _ref$fileFormats === void 0 ? ['eot', 'woff2', 'woff', 'ttf', 'svg'] : _ref$fileFormats,
							 | 
						||
| 
								 | 
							
								      _ref$formatHint = _ref.formatHint,
							 | 
						||
| 
								 | 
							
								      formatHint = _ref$formatHint === void 0 ? false : _ref$formatHint,
							 | 
						||
| 
								 | 
							
								      localFonts = _ref.localFonts,
							 | 
						||
| 
								 | 
							
								      unicodeRange = _ref.unicodeRange,
							 | 
						||
| 
								 | 
							
								      fontDisplay = _ref.fontDisplay,
							 | 
						||
| 
								 | 
							
								      fontVariationSettings = _ref.fontVariationSettings,
							 | 
						||
| 
								 | 
							
								      fontFeatureSettings = _ref.fontFeatureSettings;
							 | 
						||
| 
								 | 
							
								  // Error Handling
							 | 
						||
| 
								 | 
							
								  if (!fontFamily) throw new PolishedError(55);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (!fontFilePath && !localFonts) {
							 | 
						||
| 
								 | 
							
								    throw new PolishedError(52);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (localFonts && !Array.isArray(localFonts)) {
							 | 
						||
| 
								 | 
							
								    throw new PolishedError(53);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (!Array.isArray(fileFormats)) {
							 | 
						||
| 
								 | 
							
								    throw new PolishedError(54);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var fontFaceDeclaration = {
							 | 
						||
| 
								 | 
							
								    '@font-face': {
							 | 
						||
| 
								 | 
							
								      fontFamily: fontFamily,
							 | 
						||
| 
								 | 
							
								      src: generateSources(fontFilePath, localFonts, fileFormats, formatHint),
							 | 
						||
| 
								 | 
							
								      unicodeRange: unicodeRange,
							 | 
						||
| 
								 | 
							
								      fontStretch: fontStretch,
							 | 
						||
| 
								 | 
							
								      fontStyle: fontStyle,
							 | 
						||
| 
								 | 
							
								      fontVariant: fontVariant,
							 | 
						||
| 
								 | 
							
								      fontWeight: fontWeight,
							 | 
						||
| 
								 | 
							
								      fontDisplay: fontDisplay,
							 | 
						||
| 
								 | 
							
								      fontVariationSettings: fontVariationSettings,
							 | 
						||
| 
								 | 
							
								      fontFeatureSettings: fontFeatureSettings
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }; // Removes undefined fields for cleaner css object.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return JSON.parse(JSON.stringify(fontFaceDeclaration));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * CSS to hide text to show a background image in a SEO-friendly way.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   'backgroundImage': 'url(logo.png)',
							 | 
						||
| 
								 | 
							
								 *   ...hideText(),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   backgroundImage: url(logo.png);
							 | 
						||
| 
								 | 
							
								 *   ${hideText()};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * 'div': {
							 | 
						||
| 
								 | 
							
								 *   'backgroundImage': 'url(logo.png)',
							 | 
						||
| 
								 | 
							
								 *   'textIndent': '101%',
							 | 
						||
| 
								 | 
							
								 *   'overflow': 'hidden',
							 | 
						||
| 
								 | 
							
								 *   'whiteSpace': 'nowrap',
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function hideText() {
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								    textIndent: '101%',
							 | 
						||
| 
								 | 
							
								    overflow: 'hidden',
							 | 
						||
| 
								 | 
							
								    whiteSpace: 'nowrap'
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * CSS to hide content visually but remain accessible to screen readers.
							 | 
						||
| 
								 | 
							
								 * from [HTML5 Boilerplate](https://github.com/h5bp/html5-boilerplate/blob/9a176f57af1cfe8ec70300da4621fb9b07e5fa31/src/css/main.css#L121)
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...hideVisually(),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${hideVisually()};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * 'div': {
							 | 
						||
| 
								 | 
							
								 *   'border': '0',
							 | 
						||
| 
								 | 
							
								 *   'clip': 'rect(0 0 0 0)',
							 | 
						||
| 
								 | 
							
								 *   'height': '1px',
							 | 
						||
| 
								 | 
							
								 *   'margin': '-1px',
							 | 
						||
| 
								 | 
							
								 *   'overflow': 'hidden',
							 | 
						||
| 
								 | 
							
								 *   'padding': '0',
							 | 
						||
| 
								 | 
							
								 *   'position': 'absolute',
							 | 
						||
| 
								 | 
							
								 *   'whiteSpace': 'nowrap',
							 | 
						||
| 
								 | 
							
								 *   'width': '1px',
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function hideVisually() {
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								    border: '0',
							 | 
						||
| 
								 | 
							
								    clip: 'rect(0 0 0 0)',
							 | 
						||
| 
								 | 
							
								    height: '1px',
							 | 
						||
| 
								 | 
							
								    margin: '-1px',
							 | 
						||
| 
								 | 
							
								    overflow: 'hidden',
							 | 
						||
| 
								 | 
							
								    padding: '0',
							 | 
						||
| 
								 | 
							
								    position: 'absolute',
							 | 
						||
| 
								 | 
							
								    whiteSpace: 'nowrap',
							 | 
						||
| 
								 | 
							
								    width: '1px'
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Generates a media query to target HiDPI devices.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *  [hiDPI(1.5)]: {
							 | 
						||
| 
								 | 
							
								 *    width: 200px;
							 | 
						||
| 
								 | 
							
								 *  }
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${hiDPI(1.5)} {
							 | 
						||
| 
								 | 
							
								 *     width: 200px;
							 | 
						||
| 
								 | 
							
								 *   }
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * '@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
							 | 
						||
| 
								 | 
							
								 *  only screen and (min--moz-device-pixel-ratio: 1.5),
							 | 
						||
| 
								 | 
							
								 *  only screen and (-o-min-device-pixel-ratio: 1.5/1),
							 | 
						||
| 
								 | 
							
								 *  only screen and (min-resolution: 144dpi),
							 | 
						||
| 
								 | 
							
								 *  only screen and (min-resolution: 1.5dppx)': {
							 | 
						||
| 
								 | 
							
								 *   'width': '200px',
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function hiDPI(ratio) {
							 | 
						||
| 
								 | 
							
								  if (ratio === void 0) {
							 | 
						||
| 
								 | 
							
								    ratio = 1.3;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return "\n    @media only screen and (-webkit-min-device-pixel-ratio: " + ratio + "),\n    only screen and (min--moz-device-pixel-ratio: " + ratio + "),\n    only screen and (-o-min-device-pixel-ratio: " + ratio + "/1),\n    only screen and (min-resolution: " + Math.round(ratio * 96) + "dpi),\n    only screen and (min-resolution: " + ratio + "dppx)\n  ";
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function constructGradientValue(literals) {
							 | 
						||
| 
								 | 
							
								  var template = '';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  for (var _len = arguments.length, substitutions = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
							 | 
						||
| 
								 | 
							
								    substitutions[_key - 1] = arguments[_key];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  for (var i = 0; i < literals.length; i += 1) {
							 | 
						||
| 
								 | 
							
								    template += literals[i];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (i === substitutions.length - 1 && substitutions[i]) {
							 | 
						||
| 
								 | 
							
								      var definedValues = substitutions.filter(function (substitute) {
							 | 
						||
| 
								 | 
							
								        return !!substitute;
							 | 
						||
| 
								 | 
							
								      }); // Adds leading coma if properties preceed color-stops
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      if (definedValues.length > 1) {
							 | 
						||
| 
								 | 
							
								        template = template.slice(0, -1);
							 | 
						||
| 
								 | 
							
								        template += ", " + substitutions[i]; // No trailing space if color-stops is the only param provided
							 | 
						||
| 
								 | 
							
								      } else if (definedValues.length === 1) {
							 | 
						||
| 
								 | 
							
								        template += "" + substitutions[i];
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    } else if (substitutions[i]) {
							 | 
						||
| 
								 | 
							
								      template += substitutions[i] + " ";
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return template.trim();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _templateObject;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * CSS for declaring a linear gradient, including a fallback background-color. The fallback is either the first color-stop or an explicitly passed fallback color.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...linearGradient({
							 | 
						||
| 
								 | 
							
								        colorStops: ['#00FFFF 0%', 'rgba(0, 0, 255, 0) 50%', '#0000FF 95%'],
							 | 
						||
| 
								 | 
							
								        toDirection: 'to top right',
							 | 
						||
| 
								 | 
							
								        fallback: '#FFF',
							 | 
						||
| 
								 | 
							
								      })
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${linearGradient({
							 | 
						||
| 
								 | 
							
								        colorStops: ['#00FFFF 0%', 'rgba(0, 0, 255, 0) 50%', '#0000FF 95%'],
							 | 
						||
| 
								 | 
							
								        toDirection: 'to top right',
							 | 
						||
| 
								 | 
							
								        fallback: '#FFF',
							 | 
						||
| 
								 | 
							
								      })}
							 | 
						||
| 
								 | 
							
								 *`
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div: {
							 | 
						||
| 
								 | 
							
								 *   'backgroundColor': '#FFF',
							 | 
						||
| 
								 | 
							
								 *   'backgroundImage': 'linear-gradient(to top right, #00FFFF 0%, rgba(0, 0, 255, 0) 50%, #0000FF 95%)',
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function linearGradient(_ref) {
							 | 
						||
| 
								 | 
							
								  var colorStops = _ref.colorStops,
							 | 
						||
| 
								 | 
							
								      fallback = _ref.fallback,
							 | 
						||
| 
								 | 
							
								      _ref$toDirection = _ref.toDirection,
							 | 
						||
| 
								 | 
							
								      toDirection = _ref$toDirection === void 0 ? '' : _ref$toDirection;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (!colorStops || colorStops.length < 2) {
							 | 
						||
| 
								 | 
							
								    throw new PolishedError(56);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								    backgroundColor: fallback || colorStops[0].replace(/,\s+/g, ',').split(' ')[0].replace(/,(?=\S)/g, ', '),
							 | 
						||
| 
								 | 
							
								    backgroundImage: constructGradientValue(_templateObject || (_templateObject = _taggedTemplateLiteralLoose__default['default'](["linear-gradient(", "", ")"])), toDirection, colorStops.join(', ').replace(/,(?=\S)/g, ', '))
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * CSS to normalize abnormalities across browsers (normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css)
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *    ...normalize(),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const GlobalStyle = createGlobalStyle`${normalize()}`
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * html {
							 | 
						||
| 
								 | 
							
								 *   lineHeight: 1.15,
							 | 
						||
| 
								 | 
							
								 *   textSizeAdjust: 100%,
							 | 
						||
| 
								 | 
							
								 * } ...
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function normalize() {
							 | 
						||
| 
								 | 
							
								  var _ref;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return [(_ref = {
							 | 
						||
| 
								 | 
							
								    html: {
							 | 
						||
| 
								 | 
							
								      lineHeight: '1.15',
							 | 
						||
| 
								 | 
							
								      textSizeAdjust: '100%'
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    body: {
							 | 
						||
| 
								 | 
							
								      margin: '0'
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    main: {
							 | 
						||
| 
								 | 
							
								      display: 'block'
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    h1: {
							 | 
						||
| 
								 | 
							
								      fontSize: '2em',
							 | 
						||
| 
								 | 
							
								      margin: '0.67em 0'
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    hr: {
							 | 
						||
| 
								 | 
							
								      boxSizing: 'content-box',
							 | 
						||
| 
								 | 
							
								      height: '0',
							 | 
						||
| 
								 | 
							
								      overflow: 'visible'
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    pre: {
							 | 
						||
| 
								 | 
							
								      fontFamily: 'monospace, monospace',
							 | 
						||
| 
								 | 
							
								      fontSize: '1em'
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    a: {
							 | 
						||
| 
								 | 
							
								      backgroundColor: 'transparent'
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    'abbr[title]': {
							 | 
						||
| 
								 | 
							
								      borderBottom: 'none',
							 | 
						||
| 
								 | 
							
								      textDecoration: 'underline'
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, _ref["b,\n    strong"] = {
							 | 
						||
| 
								 | 
							
								    fontWeight: 'bolder'
							 | 
						||
| 
								 | 
							
								  }, _ref["code,\n    kbd,\n    samp"] = {
							 | 
						||
| 
								 | 
							
								    fontFamily: 'monospace, monospace',
							 | 
						||
| 
								 | 
							
								    fontSize: '1em'
							 | 
						||
| 
								 | 
							
								  }, _ref.small = {
							 | 
						||
| 
								 | 
							
								    fontSize: '80%'
							 | 
						||
| 
								 | 
							
								  }, _ref["sub,\n    sup"] = {
							 | 
						||
| 
								 | 
							
								    fontSize: '75%',
							 | 
						||
| 
								 | 
							
								    lineHeight: '0',
							 | 
						||
| 
								 | 
							
								    position: 'relative',
							 | 
						||
| 
								 | 
							
								    verticalAlign: 'baseline'
							 | 
						||
| 
								 | 
							
								  }, _ref.sub = {
							 | 
						||
| 
								 | 
							
								    bottom: '-0.25em'
							 | 
						||
| 
								 | 
							
								  }, _ref.sup = {
							 | 
						||
| 
								 | 
							
								    top: '-0.5em'
							 | 
						||
| 
								 | 
							
								  }, _ref.img = {
							 | 
						||
| 
								 | 
							
								    borderStyle: 'none'
							 | 
						||
| 
								 | 
							
								  }, _ref["button,\n    input,\n    optgroup,\n    select,\n    textarea"] = {
							 | 
						||
| 
								 | 
							
								    fontFamily: 'inherit',
							 | 
						||
| 
								 | 
							
								    fontSize: '100%',
							 | 
						||
| 
								 | 
							
								    lineHeight: '1.15',
							 | 
						||
| 
								 | 
							
								    margin: '0'
							 | 
						||
| 
								 | 
							
								  }, _ref["button,\n    input"] = {
							 | 
						||
| 
								 | 
							
								    overflow: 'visible'
							 | 
						||
| 
								 | 
							
								  }, _ref["button,\n    select"] = {
							 | 
						||
| 
								 | 
							
								    textTransform: 'none'
							 | 
						||
| 
								 | 
							
								  }, _ref["button,\n    html [type=\"button\"],\n    [type=\"reset\"],\n    [type=\"submit\"]"] = {
							 | 
						||
| 
								 | 
							
								    WebkitAppearance: 'button'
							 | 
						||
| 
								 | 
							
								  }, _ref["button::-moz-focus-inner,\n    [type=\"button\"]::-moz-focus-inner,\n    [type=\"reset\"]::-moz-focus-inner,\n    [type=\"submit\"]::-moz-focus-inner"] = {
							 | 
						||
| 
								 | 
							
								    borderStyle: 'none',
							 | 
						||
| 
								 | 
							
								    padding: '0'
							 | 
						||
| 
								 | 
							
								  }, _ref["button:-moz-focusring,\n    [type=\"button\"]:-moz-focusring,\n    [type=\"reset\"]:-moz-focusring,\n    [type=\"submit\"]:-moz-focusring"] = {
							 | 
						||
| 
								 | 
							
								    outline: '1px dotted ButtonText'
							 | 
						||
| 
								 | 
							
								  }, _ref.fieldset = {
							 | 
						||
| 
								 | 
							
								    padding: '0.35em 0.625em 0.75em'
							 | 
						||
| 
								 | 
							
								  }, _ref.legend = {
							 | 
						||
| 
								 | 
							
								    boxSizing: 'border-box',
							 | 
						||
| 
								 | 
							
								    color: 'inherit',
							 | 
						||
| 
								 | 
							
								    display: 'table',
							 | 
						||
| 
								 | 
							
								    maxWidth: '100%',
							 | 
						||
| 
								 | 
							
								    padding: '0',
							 | 
						||
| 
								 | 
							
								    whiteSpace: 'normal'
							 | 
						||
| 
								 | 
							
								  }, _ref.progress = {
							 | 
						||
| 
								 | 
							
								    verticalAlign: 'baseline'
							 | 
						||
| 
								 | 
							
								  }, _ref.textarea = {
							 | 
						||
| 
								 | 
							
								    overflow: 'auto'
							 | 
						||
| 
								 | 
							
								  }, _ref["[type=\"checkbox\"],\n    [type=\"radio\"]"] = {
							 | 
						||
| 
								 | 
							
								    boxSizing: 'border-box',
							 | 
						||
| 
								 | 
							
								    padding: '0'
							 | 
						||
| 
								 | 
							
								  }, _ref["[type=\"number\"]::-webkit-inner-spin-button,\n    [type=\"number\"]::-webkit-outer-spin-button"] = {
							 | 
						||
| 
								 | 
							
								    height: 'auto'
							 | 
						||
| 
								 | 
							
								  }, _ref['[type="search"]'] = {
							 | 
						||
| 
								 | 
							
								    WebkitAppearance: 'textfield',
							 | 
						||
| 
								 | 
							
								    outlineOffset: '-2px'
							 | 
						||
| 
								 | 
							
								  }, _ref['[type="search"]::-webkit-search-decoration'] = {
							 | 
						||
| 
								 | 
							
								    WebkitAppearance: 'none'
							 | 
						||
| 
								 | 
							
								  }, _ref['::-webkit-file-upload-button'] = {
							 | 
						||
| 
								 | 
							
								    WebkitAppearance: 'button',
							 | 
						||
| 
								 | 
							
								    font: 'inherit'
							 | 
						||
| 
								 | 
							
								  }, _ref.details = {
							 | 
						||
| 
								 | 
							
								    display: 'block'
							 | 
						||
| 
								 | 
							
								  }, _ref.summary = {
							 | 
						||
| 
								 | 
							
								    display: 'list-item'
							 | 
						||
| 
								 | 
							
								  }, _ref.template = {
							 | 
						||
| 
								 | 
							
								    display: 'none'
							 | 
						||
| 
								 | 
							
								  }, _ref['[hidden]'] = {
							 | 
						||
| 
								 | 
							
								    display: 'none'
							 | 
						||
| 
								 | 
							
								  }, _ref), {
							 | 
						||
| 
								 | 
							
								    'abbr[title]': {
							 | 
						||
| 
								 | 
							
								      textDecoration: 'underline dotted'
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _templateObject$1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * CSS for declaring a radial gradient, including a fallback background-color. The fallback is either the first color-stop or an explicitly passed fallback color.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...radialGradient({
							 | 
						||
| 
								 | 
							
								 *     colorStops: ['#00FFFF 0%', 'rgba(0, 0, 255, 0) 50%', '#0000FF 95%'],
							 | 
						||
| 
								 | 
							
								 *     extent: 'farthest-corner at 45px 45px',
							 | 
						||
| 
								 | 
							
								 *     position: 'center',
							 | 
						||
| 
								 | 
							
								 *     shape: 'ellipse',
							 | 
						||
| 
								 | 
							
								 *   })
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${radialGradient({
							 | 
						||
| 
								 | 
							
								 *     colorStops: ['#00FFFF 0%', 'rgba(0, 0, 255, 0) 50%', '#0000FF 95%'],
							 | 
						||
| 
								 | 
							
								 *     extent: 'farthest-corner at 45px 45px',
							 | 
						||
| 
								 | 
							
								 *     position: 'center',
							 | 
						||
| 
								 | 
							
								 *     shape: 'ellipse',
							 | 
						||
| 
								 | 
							
								 *   })}
							 | 
						||
| 
								 | 
							
								 *`
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div: {
							 | 
						||
| 
								 | 
							
								 *   'backgroundColor': '#00FFFF',
							 | 
						||
| 
								 | 
							
								 *   'backgroundImage': 'radial-gradient(center ellipse farthest-corner at 45px 45px, #00FFFF 0%, rgba(0, 0, 255, 0) 50%, #0000FF 95%)',
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function radialGradient(_ref) {
							 | 
						||
| 
								 | 
							
								  var colorStops = _ref.colorStops,
							 | 
						||
| 
								 | 
							
								      _ref$extent = _ref.extent,
							 | 
						||
| 
								 | 
							
								      extent = _ref$extent === void 0 ? '' : _ref$extent,
							 | 
						||
| 
								 | 
							
								      fallback = _ref.fallback,
							 | 
						||
| 
								 | 
							
								      _ref$position = _ref.position,
							 | 
						||
| 
								 | 
							
								      position = _ref$position === void 0 ? '' : _ref$position,
							 | 
						||
| 
								 | 
							
								      _ref$shape = _ref.shape,
							 | 
						||
| 
								 | 
							
								      shape = _ref$shape === void 0 ? '' : _ref$shape;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (!colorStops || colorStops.length < 2) {
							 | 
						||
| 
								 | 
							
								    throw new PolishedError(57);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								    backgroundColor: fallback || colorStops[0].split(' ')[0],
							 | 
						||
| 
								 | 
							
								    backgroundImage: constructGradientValue(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteralLoose__default['default'](["radial-gradient(", "", "", "", ")"])), position, shape, extent, colorStops.join(', '))
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * A helper to generate a retina background image and non-retina
							 | 
						||
| 
								 | 
							
								 * background image. The retina background image will output to a HiDPI media query. The mixin uses
							 | 
						||
| 
								 | 
							
								 * a _2x.png filename suffix by default.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *  ...retinaImage('my-img')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${retinaImage('my-img')}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 * div {
							 | 
						||
| 
								 | 
							
								 *   backgroundImage: 'url(my-img.png)',
							 | 
						||
| 
								 | 
							
								 *   '@media only screen and (-webkit-min-device-pixel-ratio: 1.3),
							 | 
						||
| 
								 | 
							
								 *    only screen and (min--moz-device-pixel-ratio: 1.3),
							 | 
						||
| 
								 | 
							
								 *    only screen and (-o-min-device-pixel-ratio: 1.3/1),
							 | 
						||
| 
								 | 
							
								 *    only screen and (min-resolution: 144dpi),
							 | 
						||
| 
								 | 
							
								 *    only screen and (min-resolution: 1.5dppx)': {
							 | 
						||
| 
								 | 
							
								 *     backgroundImage: 'url(my-img_2x.png)',
							 | 
						||
| 
								 | 
							
								 *   }
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function retinaImage(filename, backgroundSize, extension, retinaFilename, retinaSuffix) {
							 | 
						||
| 
								 | 
							
								  var _ref;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (extension === void 0) {
							 | 
						||
| 
								 | 
							
								    extension = 'png';
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (retinaSuffix === void 0) {
							 | 
						||
| 
								 | 
							
								    retinaSuffix = '_2x';
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (!filename) {
							 | 
						||
| 
								 | 
							
								    throw new PolishedError(58);
							 | 
						||
| 
								 | 
							
								  } // Replace the dot at the beginning of the passed extension if one exists
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var ext = extension.replace(/^\./, '');
							 | 
						||
| 
								 | 
							
								  var rFilename = retinaFilename ? retinaFilename + "." + ext : "" + filename + retinaSuffix + "." + ext;
							 | 
						||
| 
								 | 
							
								  return _ref = {
							 | 
						||
| 
								 | 
							
								    backgroundImage: "url(" + filename + "." + ext + ")"
							 | 
						||
| 
								 | 
							
								  }, _ref[hiDPI()] = _extends__default['default']({
							 | 
						||
| 
								 | 
							
								    backgroundImage: "url(" + rFilename + ")"
							 | 
						||
| 
								 | 
							
								  }, backgroundSize ? {
							 | 
						||
| 
								 | 
							
								    backgroundSize: backgroundSize
							 | 
						||
| 
								 | 
							
								  } : {}), _ref;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* eslint-disable key-spacing */
							 | 
						||
| 
								 | 
							
								var functionsMap = {
							 | 
						||
| 
								 | 
							
								  easeInBack: 'cubic-bezier(0.600, -0.280, 0.735, 0.045)',
							 | 
						||
| 
								 | 
							
								  easeInCirc: 'cubic-bezier(0.600,  0.040, 0.980, 0.335)',
							 | 
						||
| 
								 | 
							
								  easeInCubic: 'cubic-bezier(0.550,  0.055, 0.675, 0.190)',
							 | 
						||
| 
								 | 
							
								  easeInExpo: 'cubic-bezier(0.950,  0.050, 0.795, 0.035)',
							 | 
						||
| 
								 | 
							
								  easeInQuad: 'cubic-bezier(0.550,  0.085, 0.680, 0.530)',
							 | 
						||
| 
								 | 
							
								  easeInQuart: 'cubic-bezier(0.895,  0.030, 0.685, 0.220)',
							 | 
						||
| 
								 | 
							
								  easeInQuint: 'cubic-bezier(0.755,  0.050, 0.855, 0.060)',
							 | 
						||
| 
								 | 
							
								  easeInSine: 'cubic-bezier(0.470,  0.000, 0.745, 0.715)',
							 | 
						||
| 
								 | 
							
								  easeOutBack: 'cubic-bezier(0.175,  0.885, 0.320, 1.275)',
							 | 
						||
| 
								 | 
							
								  easeOutCubic: 'cubic-bezier(0.215,  0.610, 0.355, 1.000)',
							 | 
						||
| 
								 | 
							
								  easeOutCirc: 'cubic-bezier(0.075,  0.820, 0.165, 1.000)',
							 | 
						||
| 
								 | 
							
								  easeOutExpo: 'cubic-bezier(0.190,  1.000, 0.220, 1.000)',
							 | 
						||
| 
								 | 
							
								  easeOutQuad: 'cubic-bezier(0.250,  0.460, 0.450, 0.940)',
							 | 
						||
| 
								 | 
							
								  easeOutQuart: 'cubic-bezier(0.165,  0.840, 0.440, 1.000)',
							 | 
						||
| 
								 | 
							
								  easeOutQuint: 'cubic-bezier(0.230,  1.000, 0.320, 1.000)',
							 | 
						||
| 
								 | 
							
								  easeOutSine: 'cubic-bezier(0.390,  0.575, 0.565, 1.000)',
							 | 
						||
| 
								 | 
							
								  easeInOutBack: 'cubic-bezier(0.680, -0.550, 0.265, 1.550)',
							 | 
						||
| 
								 | 
							
								  easeInOutCirc: 'cubic-bezier(0.785,  0.135, 0.150, 0.860)',
							 | 
						||
| 
								 | 
							
								  easeInOutCubic: 'cubic-bezier(0.645,  0.045, 0.355, 1.000)',
							 | 
						||
| 
								 | 
							
								  easeInOutExpo: 'cubic-bezier(1.000,  0.000, 0.000, 1.000)',
							 | 
						||
| 
								 | 
							
								  easeInOutQuad: 'cubic-bezier(0.455,  0.030, 0.515, 0.955)',
							 | 
						||
| 
								 | 
							
								  easeInOutQuart: 'cubic-bezier(0.770,  0.000, 0.175, 1.000)',
							 | 
						||
| 
								 | 
							
								  easeInOutQuint: 'cubic-bezier(0.860,  0.000, 0.070, 1.000)',
							 | 
						||
| 
								 | 
							
								  easeInOutSine: 'cubic-bezier(0.445,  0.050, 0.550, 0.950)'
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								/* eslint-enable key-spacing */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function getTimingFunction(functionName) {
							 | 
						||
| 
								 | 
							
								  return functionsMap[functionName];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * String to represent common easing functions as demonstrated here: (github.com/jaukia/easie).
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   'transitionTimingFunction': timingFunctions('easeInQuad')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 *  const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   transitionTimingFunction: ${timingFunctions('easeInQuad')};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * 'div': {
							 | 
						||
| 
								 | 
							
								 *   'transitionTimingFunction': 'cubic-bezier(0.550,  0.085, 0.680, 0.530)',
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function timingFunctions(timingFunction) {
							 | 
						||
| 
								 | 
							
								  return getTimingFunction(timingFunction);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var getBorderWidth = function getBorderWidth(pointingDirection, height, width) {
							 | 
						||
| 
								 | 
							
								  var fullWidth = "" + width[0] + (width[1] || '');
							 | 
						||
| 
								 | 
							
								  var halfWidth = "" + width[0] / 2 + (width[1] || '');
							 | 
						||
| 
								 | 
							
								  var fullHeight = "" + height[0] + (height[1] || '');
							 | 
						||
| 
								 | 
							
								  var halfHeight = "" + height[0] / 2 + (height[1] || '');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  switch (pointingDirection) {
							 | 
						||
| 
								 | 
							
								    case 'top':
							 | 
						||
| 
								 | 
							
								      return "0 " + halfWidth + " " + fullHeight + " " + halfWidth;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    case 'topLeft':
							 | 
						||
| 
								 | 
							
								      return fullWidth + " " + fullHeight + " 0 0";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    case 'left':
							 | 
						||
| 
								 | 
							
								      return halfHeight + " " + fullWidth + " " + halfHeight + " 0";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    case 'bottomLeft':
							 | 
						||
| 
								 | 
							
								      return fullWidth + " 0 0 " + fullHeight;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    case 'bottom':
							 | 
						||
| 
								 | 
							
								      return fullHeight + " " + halfWidth + " 0 " + halfWidth;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    case 'bottomRight':
							 | 
						||
| 
								 | 
							
								      return "0 0 " + fullWidth + " " + fullHeight;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    case 'right':
							 | 
						||
| 
								 | 
							
								      return halfHeight + " 0 " + halfHeight + " " + fullWidth;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    case 'topRight':
							 | 
						||
| 
								 | 
							
								    default:
							 | 
						||
| 
								 | 
							
								      return "0 " + fullWidth + " " + fullHeight + " 0";
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var getBorderColor = function getBorderColor(pointingDirection, foregroundColor) {
							 | 
						||
| 
								 | 
							
								  switch (pointingDirection) {
							 | 
						||
| 
								 | 
							
								    case 'top':
							 | 
						||
| 
								 | 
							
								    case 'bottomRight':
							 | 
						||
| 
								 | 
							
								      return {
							 | 
						||
| 
								 | 
							
								        borderBottomColor: foregroundColor
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    case 'right':
							 | 
						||
| 
								 | 
							
								    case 'bottomLeft':
							 | 
						||
| 
								 | 
							
								      return {
							 | 
						||
| 
								 | 
							
								        borderLeftColor: foregroundColor
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    case 'bottom':
							 | 
						||
| 
								 | 
							
								    case 'topLeft':
							 | 
						||
| 
								 | 
							
								      return {
							 | 
						||
| 
								 | 
							
								        borderTopColor: foregroundColor
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    case 'left':
							 | 
						||
| 
								 | 
							
								    case 'topRight':
							 | 
						||
| 
								 | 
							
								      return {
							 | 
						||
| 
								 | 
							
								        borderRightColor: foregroundColor
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    default:
							 | 
						||
| 
								 | 
							
								      throw new PolishedError(59);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * CSS to represent triangle with any pointing direction with an optional background color.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...triangle({ pointingDirection: 'right', width: '100px', height: '100px', foregroundColor: 'red' })
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${triangle({ pointingDirection: 'right', width: '100px', height: '100px', foregroundColor: 'red' })}
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div: {
							 | 
						||
| 
								 | 
							
								 *  'borderColor': 'transparent transparent transparent red',
							 | 
						||
| 
								 | 
							
								 *  'borderStyle': 'solid',
							 | 
						||
| 
								 | 
							
								 *  'borderWidth': '50px 0 50px 100px',
							 | 
						||
| 
								 | 
							
								 *  'height': '0',
							 | 
						||
| 
								 | 
							
								 *  'width': '0',
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function triangle(_ref) {
							 | 
						||
| 
								 | 
							
								  var pointingDirection = _ref.pointingDirection,
							 | 
						||
| 
								 | 
							
								      height = _ref.height,
							 | 
						||
| 
								 | 
							
								      width = _ref.width,
							 | 
						||
| 
								 | 
							
								      foregroundColor = _ref.foregroundColor,
							 | 
						||
| 
								 | 
							
								      _ref$backgroundColor = _ref.backgroundColor,
							 | 
						||
| 
								 | 
							
								      backgroundColor = _ref$backgroundColor === void 0 ? 'transparent' : _ref$backgroundColor;
							 | 
						||
| 
								 | 
							
								  var widthAndUnit = getValueAndUnit(width);
							 | 
						||
| 
								 | 
							
								  var heightAndUnit = getValueAndUnit(height);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (isNaN(heightAndUnit[0]) || isNaN(widthAndUnit[0])) {
							 | 
						||
| 
								 | 
							
								    throw new PolishedError(60);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return _extends__default['default']({
							 | 
						||
| 
								 | 
							
								    width: '0',
							 | 
						||
| 
								 | 
							
								    height: '0',
							 | 
						||
| 
								 | 
							
								    borderColor: backgroundColor
							 | 
						||
| 
								 | 
							
								  }, getBorderColor(pointingDirection, foregroundColor), {
							 | 
						||
| 
								 | 
							
								    borderStyle: 'solid',
							 | 
						||
| 
								 | 
							
								    borderWidth: getBorderWidth(pointingDirection, heightAndUnit, widthAndUnit)
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Provides an easy way to change the `wordWrap` property.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...wordWrap('break-word')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${wordWrap('break-word')}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   overflowWrap: 'break-word',
							 | 
						||
| 
								 | 
							
								 *   wordWrap: 'break-word',
							 | 
						||
| 
								 | 
							
								 *   wordBreak: 'break-all',
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function wordWrap(wrap) {
							 | 
						||
| 
								 | 
							
								  if (wrap === void 0) {
							 | 
						||
| 
								 | 
							
								    wrap = 'break-word';
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var wordBreak = wrap === 'break-word' ? 'break-all' : wrap;
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								    overflowWrap: wrap,
							 | 
						||
| 
								 | 
							
								    wordWrap: wrap,
							 | 
						||
| 
								 | 
							
								    wordBreak: wordBreak
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function colorToInt(color) {
							 | 
						||
| 
								 | 
							
								  return Math.round(color * 255);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function convertToInt(red, green, blue) {
							 | 
						||
| 
								 | 
							
								  return colorToInt(red) + "," + colorToInt(green) + "," + colorToInt(blue);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function hslToRgb(hue, saturation, lightness, convert) {
							 | 
						||
| 
								 | 
							
								  if (convert === void 0) {
							 | 
						||
| 
								 | 
							
								    convert = convertToInt;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (saturation === 0) {
							 | 
						||
| 
								 | 
							
								    // achromatic
							 | 
						||
| 
								 | 
							
								    return convert(lightness, lightness, lightness);
							 | 
						||
| 
								 | 
							
								  } // formulae from https://en.wikipedia.org/wiki/HSL_and_HSV
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var huePrime = (hue % 360 + 360) % 360 / 60;
							 | 
						||
| 
								 | 
							
								  var chroma = (1 - Math.abs(2 * lightness - 1)) * saturation;
							 | 
						||
| 
								 | 
							
								  var secondComponent = chroma * (1 - Math.abs(huePrime % 2 - 1));
							 | 
						||
| 
								 | 
							
								  var red = 0;
							 | 
						||
| 
								 | 
							
								  var green = 0;
							 | 
						||
| 
								 | 
							
								  var blue = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (huePrime >= 0 && huePrime < 1) {
							 | 
						||
| 
								 | 
							
								    red = chroma;
							 | 
						||
| 
								 | 
							
								    green = secondComponent;
							 | 
						||
| 
								 | 
							
								  } else if (huePrime >= 1 && huePrime < 2) {
							 | 
						||
| 
								 | 
							
								    red = secondComponent;
							 | 
						||
| 
								 | 
							
								    green = chroma;
							 | 
						||
| 
								 | 
							
								  } else if (huePrime >= 2 && huePrime < 3) {
							 | 
						||
| 
								 | 
							
								    green = chroma;
							 | 
						||
| 
								 | 
							
								    blue = secondComponent;
							 | 
						||
| 
								 | 
							
								  } else if (huePrime >= 3 && huePrime < 4) {
							 | 
						||
| 
								 | 
							
								    green = secondComponent;
							 | 
						||
| 
								 | 
							
								    blue = chroma;
							 | 
						||
| 
								 | 
							
								  } else if (huePrime >= 4 && huePrime < 5) {
							 | 
						||
| 
								 | 
							
								    red = secondComponent;
							 | 
						||
| 
								 | 
							
								    blue = chroma;
							 | 
						||
| 
								 | 
							
								  } else if (huePrime >= 5 && huePrime < 6) {
							 | 
						||
| 
								 | 
							
								    red = chroma;
							 | 
						||
| 
								 | 
							
								    blue = secondComponent;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var lightnessModification = lightness - chroma / 2;
							 | 
						||
| 
								 | 
							
								  var finalRed = red + lightnessModification;
							 | 
						||
| 
								 | 
							
								  var finalGreen = green + lightnessModification;
							 | 
						||
| 
								 | 
							
								  var finalBlue = blue + lightnessModification;
							 | 
						||
| 
								 | 
							
								  return convert(finalRed, finalGreen, finalBlue);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var namedColorMap = {
							 | 
						||
| 
								 | 
							
								  aliceblue: 'f0f8ff',
							 | 
						||
| 
								 | 
							
								  antiquewhite: 'faebd7',
							 | 
						||
| 
								 | 
							
								  aqua: '00ffff',
							 | 
						||
| 
								 | 
							
								  aquamarine: '7fffd4',
							 | 
						||
| 
								 | 
							
								  azure: 'f0ffff',
							 | 
						||
| 
								 | 
							
								  beige: 'f5f5dc',
							 | 
						||
| 
								 | 
							
								  bisque: 'ffe4c4',
							 | 
						||
| 
								 | 
							
								  black: '000',
							 | 
						||
| 
								 | 
							
								  blanchedalmond: 'ffebcd',
							 | 
						||
| 
								 | 
							
								  blue: '0000ff',
							 | 
						||
| 
								 | 
							
								  blueviolet: '8a2be2',
							 | 
						||
| 
								 | 
							
								  brown: 'a52a2a',
							 | 
						||
| 
								 | 
							
								  burlywood: 'deb887',
							 | 
						||
| 
								 | 
							
								  cadetblue: '5f9ea0',
							 | 
						||
| 
								 | 
							
								  chartreuse: '7fff00',
							 | 
						||
| 
								 | 
							
								  chocolate: 'd2691e',
							 | 
						||
| 
								 | 
							
								  coral: 'ff7f50',
							 | 
						||
| 
								 | 
							
								  cornflowerblue: '6495ed',
							 | 
						||
| 
								 | 
							
								  cornsilk: 'fff8dc',
							 | 
						||
| 
								 | 
							
								  crimson: 'dc143c',
							 | 
						||
| 
								 | 
							
								  cyan: '00ffff',
							 | 
						||
| 
								 | 
							
								  darkblue: '00008b',
							 | 
						||
| 
								 | 
							
								  darkcyan: '008b8b',
							 | 
						||
| 
								 | 
							
								  darkgoldenrod: 'b8860b',
							 | 
						||
| 
								 | 
							
								  darkgray: 'a9a9a9',
							 | 
						||
| 
								 | 
							
								  darkgreen: '006400',
							 | 
						||
| 
								 | 
							
								  darkgrey: 'a9a9a9',
							 | 
						||
| 
								 | 
							
								  darkkhaki: 'bdb76b',
							 | 
						||
| 
								 | 
							
								  darkmagenta: '8b008b',
							 | 
						||
| 
								 | 
							
								  darkolivegreen: '556b2f',
							 | 
						||
| 
								 | 
							
								  darkorange: 'ff8c00',
							 | 
						||
| 
								 | 
							
								  darkorchid: '9932cc',
							 | 
						||
| 
								 | 
							
								  darkred: '8b0000',
							 | 
						||
| 
								 | 
							
								  darksalmon: 'e9967a',
							 | 
						||
| 
								 | 
							
								  darkseagreen: '8fbc8f',
							 | 
						||
| 
								 | 
							
								  darkslateblue: '483d8b',
							 | 
						||
| 
								 | 
							
								  darkslategray: '2f4f4f',
							 | 
						||
| 
								 | 
							
								  darkslategrey: '2f4f4f',
							 | 
						||
| 
								 | 
							
								  darkturquoise: '00ced1',
							 | 
						||
| 
								 | 
							
								  darkviolet: '9400d3',
							 | 
						||
| 
								 | 
							
								  deeppink: 'ff1493',
							 | 
						||
| 
								 | 
							
								  deepskyblue: '00bfff',
							 | 
						||
| 
								 | 
							
								  dimgray: '696969',
							 | 
						||
| 
								 | 
							
								  dimgrey: '696969',
							 | 
						||
| 
								 | 
							
								  dodgerblue: '1e90ff',
							 | 
						||
| 
								 | 
							
								  firebrick: 'b22222',
							 | 
						||
| 
								 | 
							
								  floralwhite: 'fffaf0',
							 | 
						||
| 
								 | 
							
								  forestgreen: '228b22',
							 | 
						||
| 
								 | 
							
								  fuchsia: 'ff00ff',
							 | 
						||
| 
								 | 
							
								  gainsboro: 'dcdcdc',
							 | 
						||
| 
								 | 
							
								  ghostwhite: 'f8f8ff',
							 | 
						||
| 
								 | 
							
								  gold: 'ffd700',
							 | 
						||
| 
								 | 
							
								  goldenrod: 'daa520',
							 | 
						||
| 
								 | 
							
								  gray: '808080',
							 | 
						||
| 
								 | 
							
								  green: '008000',
							 | 
						||
| 
								 | 
							
								  greenyellow: 'adff2f',
							 | 
						||
| 
								 | 
							
								  grey: '808080',
							 | 
						||
| 
								 | 
							
								  honeydew: 'f0fff0',
							 | 
						||
| 
								 | 
							
								  hotpink: 'ff69b4',
							 | 
						||
| 
								 | 
							
								  indianred: 'cd5c5c',
							 | 
						||
| 
								 | 
							
								  indigo: '4b0082',
							 | 
						||
| 
								 | 
							
								  ivory: 'fffff0',
							 | 
						||
| 
								 | 
							
								  khaki: 'f0e68c',
							 | 
						||
| 
								 | 
							
								  lavender: 'e6e6fa',
							 | 
						||
| 
								 | 
							
								  lavenderblush: 'fff0f5',
							 | 
						||
| 
								 | 
							
								  lawngreen: '7cfc00',
							 | 
						||
| 
								 | 
							
								  lemonchiffon: 'fffacd',
							 | 
						||
| 
								 | 
							
								  lightblue: 'add8e6',
							 | 
						||
| 
								 | 
							
								  lightcoral: 'f08080',
							 | 
						||
| 
								 | 
							
								  lightcyan: 'e0ffff',
							 | 
						||
| 
								 | 
							
								  lightgoldenrodyellow: 'fafad2',
							 | 
						||
| 
								 | 
							
								  lightgray: 'd3d3d3',
							 | 
						||
| 
								 | 
							
								  lightgreen: '90ee90',
							 | 
						||
| 
								 | 
							
								  lightgrey: 'd3d3d3',
							 | 
						||
| 
								 | 
							
								  lightpink: 'ffb6c1',
							 | 
						||
| 
								 | 
							
								  lightsalmon: 'ffa07a',
							 | 
						||
| 
								 | 
							
								  lightseagreen: '20b2aa',
							 | 
						||
| 
								 | 
							
								  lightskyblue: '87cefa',
							 | 
						||
| 
								 | 
							
								  lightslategray: '789',
							 | 
						||
| 
								 | 
							
								  lightslategrey: '789',
							 | 
						||
| 
								 | 
							
								  lightsteelblue: 'b0c4de',
							 | 
						||
| 
								 | 
							
								  lightyellow: 'ffffe0',
							 | 
						||
| 
								 | 
							
								  lime: '0f0',
							 | 
						||
| 
								 | 
							
								  limegreen: '32cd32',
							 | 
						||
| 
								 | 
							
								  linen: 'faf0e6',
							 | 
						||
| 
								 | 
							
								  magenta: 'f0f',
							 | 
						||
| 
								 | 
							
								  maroon: '800000',
							 | 
						||
| 
								 | 
							
								  mediumaquamarine: '66cdaa',
							 | 
						||
| 
								 | 
							
								  mediumblue: '0000cd',
							 | 
						||
| 
								 | 
							
								  mediumorchid: 'ba55d3',
							 | 
						||
| 
								 | 
							
								  mediumpurple: '9370db',
							 | 
						||
| 
								 | 
							
								  mediumseagreen: '3cb371',
							 | 
						||
| 
								 | 
							
								  mediumslateblue: '7b68ee',
							 | 
						||
| 
								 | 
							
								  mediumspringgreen: '00fa9a',
							 | 
						||
| 
								 | 
							
								  mediumturquoise: '48d1cc',
							 | 
						||
| 
								 | 
							
								  mediumvioletred: 'c71585',
							 | 
						||
| 
								 | 
							
								  midnightblue: '191970',
							 | 
						||
| 
								 | 
							
								  mintcream: 'f5fffa',
							 | 
						||
| 
								 | 
							
								  mistyrose: 'ffe4e1',
							 | 
						||
| 
								 | 
							
								  moccasin: 'ffe4b5',
							 | 
						||
| 
								 | 
							
								  navajowhite: 'ffdead',
							 | 
						||
| 
								 | 
							
								  navy: '000080',
							 | 
						||
| 
								 | 
							
								  oldlace: 'fdf5e6',
							 | 
						||
| 
								 | 
							
								  olive: '808000',
							 | 
						||
| 
								 | 
							
								  olivedrab: '6b8e23',
							 | 
						||
| 
								 | 
							
								  orange: 'ffa500',
							 | 
						||
| 
								 | 
							
								  orangered: 'ff4500',
							 | 
						||
| 
								 | 
							
								  orchid: 'da70d6',
							 | 
						||
| 
								 | 
							
								  palegoldenrod: 'eee8aa',
							 | 
						||
| 
								 | 
							
								  palegreen: '98fb98',
							 | 
						||
| 
								 | 
							
								  paleturquoise: 'afeeee',
							 | 
						||
| 
								 | 
							
								  palevioletred: 'db7093',
							 | 
						||
| 
								 | 
							
								  papayawhip: 'ffefd5',
							 | 
						||
| 
								 | 
							
								  peachpuff: 'ffdab9',
							 | 
						||
| 
								 | 
							
								  peru: 'cd853f',
							 | 
						||
| 
								 | 
							
								  pink: 'ffc0cb',
							 | 
						||
| 
								 | 
							
								  plum: 'dda0dd',
							 | 
						||
| 
								 | 
							
								  powderblue: 'b0e0e6',
							 | 
						||
| 
								 | 
							
								  purple: '800080',
							 | 
						||
| 
								 | 
							
								  rebeccapurple: '639',
							 | 
						||
| 
								 | 
							
								  red: 'f00',
							 | 
						||
| 
								 | 
							
								  rosybrown: 'bc8f8f',
							 | 
						||
| 
								 | 
							
								  royalblue: '4169e1',
							 | 
						||
| 
								 | 
							
								  saddlebrown: '8b4513',
							 | 
						||
| 
								 | 
							
								  salmon: 'fa8072',
							 | 
						||
| 
								 | 
							
								  sandybrown: 'f4a460',
							 | 
						||
| 
								 | 
							
								  seagreen: '2e8b57',
							 | 
						||
| 
								 | 
							
								  seashell: 'fff5ee',
							 | 
						||
| 
								 | 
							
								  sienna: 'a0522d',
							 | 
						||
| 
								 | 
							
								  silver: 'c0c0c0',
							 | 
						||
| 
								 | 
							
								  skyblue: '87ceeb',
							 | 
						||
| 
								 | 
							
								  slateblue: '6a5acd',
							 | 
						||
| 
								 | 
							
								  slategray: '708090',
							 | 
						||
| 
								 | 
							
								  slategrey: '708090',
							 | 
						||
| 
								 | 
							
								  snow: 'fffafa',
							 | 
						||
| 
								 | 
							
								  springgreen: '00ff7f',
							 | 
						||
| 
								 | 
							
								  steelblue: '4682b4',
							 | 
						||
| 
								 | 
							
								  tan: 'd2b48c',
							 | 
						||
| 
								 | 
							
								  teal: '008080',
							 | 
						||
| 
								 | 
							
								  thistle: 'd8bfd8',
							 | 
						||
| 
								 | 
							
								  tomato: 'ff6347',
							 | 
						||
| 
								 | 
							
								  turquoise: '40e0d0',
							 | 
						||
| 
								 | 
							
								  violet: 'ee82ee',
							 | 
						||
| 
								 | 
							
								  wheat: 'f5deb3',
							 | 
						||
| 
								 | 
							
								  white: 'fff',
							 | 
						||
| 
								 | 
							
								  whitesmoke: 'f5f5f5',
							 | 
						||
| 
								 | 
							
								  yellow: 'ff0',
							 | 
						||
| 
								 | 
							
								  yellowgreen: '9acd32'
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Checks if a string is a CSS named color and returns its equivalent hex value, otherwise returns the original color.
							 | 
						||
| 
								 | 
							
								 * @private
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function nameToHex(color) {
							 | 
						||
| 
								 | 
							
								  if (typeof color !== 'string') return color;
							 | 
						||
| 
								 | 
							
								  var normalizedColorName = color.toLowerCase();
							 | 
						||
| 
								 | 
							
								  return namedColorMap[normalizedColorName] ? "#" + namedColorMap[normalizedColorName] : color;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var hexRegex = /^#[a-fA-F0-9]{6}$/;
							 | 
						||
| 
								 | 
							
								var hexRgbaRegex = /^#[a-fA-F0-9]{8}$/;
							 | 
						||
| 
								 | 
							
								var reducedHexRegex = /^#[a-fA-F0-9]{3}$/;
							 | 
						||
| 
								 | 
							
								var reducedRgbaHexRegex = /^#[a-fA-F0-9]{4}$/;
							 | 
						||
| 
								 | 
							
								var rgbRegex = /^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/i;
							 | 
						||
| 
								 | 
							
								var rgbaRegex = /^rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*([-+]?[0-9]*[.]?[0-9]+)\s*\)$/i;
							 | 
						||
| 
								 | 
							
								var hslRegex = /^hsl\(\s*(\d{0,3}[.]?[0-9]+)\s*,\s*(\d{1,3}[.]?[0-9]?)%\s*,\s*(\d{1,3}[.]?[0-9]?)%\s*\)$/i;
							 | 
						||
| 
								 | 
							
								var hslaRegex = /^hsla\(\s*(\d{0,3}[.]?[0-9]+)\s*,\s*(\d{1,3}[.]?[0-9]?)%\s*,\s*(\d{1,3}[.]?[0-9]?)%\s*,\s*([-+]?[0-9]*[.]?[0-9]+)\s*\)$/i;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Returns an RgbColor or RgbaColor object. This utility function is only useful
							 | 
						||
| 
								 | 
							
								 * if want to extract a color component. With the color util `toColorString` you
							 | 
						||
| 
								 | 
							
								 * can convert a RgbColor or RgbaColor object back to a string.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Assigns `{ red: 255, green: 0, blue: 0 }` to color1
							 | 
						||
| 
								 | 
							
								 * const color1 = parseToRgb('rgb(255, 0, 0)');
							 | 
						||
| 
								 | 
							
								 * // Assigns `{ red: 92, green: 102, blue: 112, alpha: 0.75 }` to color2
							 | 
						||
| 
								 | 
							
								 * const color2 = parseToRgb('hsla(210, 10%, 40%, 0.75)');
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function parseToRgb(color) {
							 | 
						||
| 
								 | 
							
								  if (typeof color !== 'string') {
							 | 
						||
| 
								 | 
							
								    throw new PolishedError(3);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var normalizedColor = nameToHex(color);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (normalizedColor.match(hexRegex)) {
							 | 
						||
| 
								 | 
							
								    return {
							 | 
						||
| 
								 | 
							
								      red: parseInt("" + normalizedColor[1] + normalizedColor[2], 16),
							 | 
						||
| 
								 | 
							
								      green: parseInt("" + normalizedColor[3] + normalizedColor[4], 16),
							 | 
						||
| 
								 | 
							
								      blue: parseInt("" + normalizedColor[5] + normalizedColor[6], 16)
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (normalizedColor.match(hexRgbaRegex)) {
							 | 
						||
| 
								 | 
							
								    var alpha = parseFloat((parseInt("" + normalizedColor[7] + normalizedColor[8], 16) / 255).toFixed(2));
							 | 
						||
| 
								 | 
							
								    return {
							 | 
						||
| 
								 | 
							
								      red: parseInt("" + normalizedColor[1] + normalizedColor[2], 16),
							 | 
						||
| 
								 | 
							
								      green: parseInt("" + normalizedColor[3] + normalizedColor[4], 16),
							 | 
						||
| 
								 | 
							
								      blue: parseInt("" + normalizedColor[5] + normalizedColor[6], 16),
							 | 
						||
| 
								 | 
							
								      alpha: alpha
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (normalizedColor.match(reducedHexRegex)) {
							 | 
						||
| 
								 | 
							
								    return {
							 | 
						||
| 
								 | 
							
								      red: parseInt("" + normalizedColor[1] + normalizedColor[1], 16),
							 | 
						||
| 
								 | 
							
								      green: parseInt("" + normalizedColor[2] + normalizedColor[2], 16),
							 | 
						||
| 
								 | 
							
								      blue: parseInt("" + normalizedColor[3] + normalizedColor[3], 16)
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (normalizedColor.match(reducedRgbaHexRegex)) {
							 | 
						||
| 
								 | 
							
								    var _alpha = parseFloat((parseInt("" + normalizedColor[4] + normalizedColor[4], 16) / 255).toFixed(2));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return {
							 | 
						||
| 
								 | 
							
								      red: parseInt("" + normalizedColor[1] + normalizedColor[1], 16),
							 | 
						||
| 
								 | 
							
								      green: parseInt("" + normalizedColor[2] + normalizedColor[2], 16),
							 | 
						||
| 
								 | 
							
								      blue: parseInt("" + normalizedColor[3] + normalizedColor[3], 16),
							 | 
						||
| 
								 | 
							
								      alpha: _alpha
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var rgbMatched = rgbRegex.exec(normalizedColor);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (rgbMatched) {
							 | 
						||
| 
								 | 
							
								    return {
							 | 
						||
| 
								 | 
							
								      red: parseInt("" + rgbMatched[1], 10),
							 | 
						||
| 
								 | 
							
								      green: parseInt("" + rgbMatched[2], 10),
							 | 
						||
| 
								 | 
							
								      blue: parseInt("" + rgbMatched[3], 10)
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var rgbaMatched = rgbaRegex.exec(normalizedColor.substring(0, 50));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (rgbaMatched) {
							 | 
						||
| 
								 | 
							
								    return {
							 | 
						||
| 
								 | 
							
								      red: parseInt("" + rgbaMatched[1], 10),
							 | 
						||
| 
								 | 
							
								      green: parseInt("" + rgbaMatched[2], 10),
							 | 
						||
| 
								 | 
							
								      blue: parseInt("" + rgbaMatched[3], 10),
							 | 
						||
| 
								 | 
							
								      alpha: parseFloat("" + rgbaMatched[4])
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var hslMatched = hslRegex.exec(normalizedColor);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (hslMatched) {
							 | 
						||
| 
								 | 
							
								    var hue = parseInt("" + hslMatched[1], 10);
							 | 
						||
| 
								 | 
							
								    var saturation = parseInt("" + hslMatched[2], 10) / 100;
							 | 
						||
| 
								 | 
							
								    var lightness = parseInt("" + hslMatched[3], 10) / 100;
							 | 
						||
| 
								 | 
							
								    var rgbColorString = "rgb(" + hslToRgb(hue, saturation, lightness) + ")";
							 | 
						||
| 
								 | 
							
								    var hslRgbMatched = rgbRegex.exec(rgbColorString);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (!hslRgbMatched) {
							 | 
						||
| 
								 | 
							
								      throw new PolishedError(4, normalizedColor, rgbColorString);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return {
							 | 
						||
| 
								 | 
							
								      red: parseInt("" + hslRgbMatched[1], 10),
							 | 
						||
| 
								 | 
							
								      green: parseInt("" + hslRgbMatched[2], 10),
							 | 
						||
| 
								 | 
							
								      blue: parseInt("" + hslRgbMatched[3], 10)
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var hslaMatched = hslaRegex.exec(normalizedColor.substring(0, 50));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (hslaMatched) {
							 | 
						||
| 
								 | 
							
								    var _hue = parseInt("" + hslaMatched[1], 10);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    var _saturation = parseInt("" + hslaMatched[2], 10) / 100;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    var _lightness = parseInt("" + hslaMatched[3], 10) / 100;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    var _rgbColorString = "rgb(" + hslToRgb(_hue, _saturation, _lightness) + ")";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    var _hslRgbMatched = rgbRegex.exec(_rgbColorString);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (!_hslRgbMatched) {
							 | 
						||
| 
								 | 
							
								      throw new PolishedError(4, normalizedColor, _rgbColorString);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return {
							 | 
						||
| 
								 | 
							
								      red: parseInt("" + _hslRgbMatched[1], 10),
							 | 
						||
| 
								 | 
							
								      green: parseInt("" + _hslRgbMatched[2], 10),
							 | 
						||
| 
								 | 
							
								      blue: parseInt("" + _hslRgbMatched[3], 10),
							 | 
						||
| 
								 | 
							
								      alpha: parseFloat("" + hslaMatched[4])
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  throw new PolishedError(5);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function rgbToHsl(color) {
							 | 
						||
| 
								 | 
							
								  // make sure rgb are contained in a set of [0, 255]
							 | 
						||
| 
								 | 
							
								  var red = color.red / 255;
							 | 
						||
| 
								 | 
							
								  var green = color.green / 255;
							 | 
						||
| 
								 | 
							
								  var blue = color.blue / 255;
							 | 
						||
| 
								 | 
							
								  var max = Math.max(red, green, blue);
							 | 
						||
| 
								 | 
							
								  var min = Math.min(red, green, blue);
							 | 
						||
| 
								 | 
							
								  var lightness = (max + min) / 2;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (max === min) {
							 | 
						||
| 
								 | 
							
								    // achromatic
							 | 
						||
| 
								 | 
							
								    if (color.alpha !== undefined) {
							 | 
						||
| 
								 | 
							
								      return {
							 | 
						||
| 
								 | 
							
								        hue: 0,
							 | 
						||
| 
								 | 
							
								        saturation: 0,
							 | 
						||
| 
								 | 
							
								        lightness: lightness,
							 | 
						||
| 
								 | 
							
								        alpha: color.alpha
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      return {
							 | 
						||
| 
								 | 
							
								        hue: 0,
							 | 
						||
| 
								 | 
							
								        saturation: 0,
							 | 
						||
| 
								 | 
							
								        lightness: lightness
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var hue;
							 | 
						||
| 
								 | 
							
								  var delta = max - min;
							 | 
						||
| 
								 | 
							
								  var saturation = lightness > 0.5 ? delta / (2 - max - min) : delta / (max + min);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  switch (max) {
							 | 
						||
| 
								 | 
							
								    case red:
							 | 
						||
| 
								 | 
							
								      hue = (green - blue) / delta + (green < blue ? 6 : 0);
							 | 
						||
| 
								 | 
							
								      break;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    case green:
							 | 
						||
| 
								 | 
							
								      hue = (blue - red) / delta + 2;
							 | 
						||
| 
								 | 
							
								      break;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    default:
							 | 
						||
| 
								 | 
							
								      // blue case
							 | 
						||
| 
								 | 
							
								      hue = (red - green) / delta + 4;
							 | 
						||
| 
								 | 
							
								      break;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  hue *= 60;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (color.alpha !== undefined) {
							 | 
						||
| 
								 | 
							
								    return {
							 | 
						||
| 
								 | 
							
								      hue: hue,
							 | 
						||
| 
								 | 
							
								      saturation: saturation,
							 | 
						||
| 
								 | 
							
								      lightness: lightness,
							 | 
						||
| 
								 | 
							
								      alpha: color.alpha
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								    hue: hue,
							 | 
						||
| 
								 | 
							
								    saturation: saturation,
							 | 
						||
| 
								 | 
							
								    lightness: lightness
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Returns an HslColor or HslaColor object. This utility function is only useful
							 | 
						||
| 
								 | 
							
								 * if want to extract a color component. With the color util `toColorString` you
							 | 
						||
| 
								 | 
							
								 * can convert a HslColor or HslaColor object back to a string.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Assigns `{ hue: 0, saturation: 1, lightness: 0.5 }` to color1
							 | 
						||
| 
								 | 
							
								 * const color1 = parseToHsl('rgb(255, 0, 0)');
							 | 
						||
| 
								 | 
							
								 * // Assigns `{ hue: 128, saturation: 1, lightness: 0.5, alpha: 0.75 }` to color2
							 | 
						||
| 
								 | 
							
								 * const color2 = parseToHsl('hsla(128, 100%, 50%, 0.75)');
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function parseToHsl(color) {
							 | 
						||
| 
								 | 
							
								  // Note: At a later stage we can optimize this function as right now a hsl
							 | 
						||
| 
								 | 
							
								  // color would be parsed converted to rgb values and converted back to hsl.
							 | 
						||
| 
								 | 
							
								  return rgbToHsl(parseToRgb(color));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Reduces hex values if possible e.g. #ff8866 to #f86
							 | 
						||
| 
								 | 
							
								 * @private
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								var reduceHexValue = function reduceHexValue(value) {
							 | 
						||
| 
								 | 
							
								  if (value.length === 7 && value[1] === value[2] && value[3] === value[4] && value[5] === value[6]) {
							 | 
						||
| 
								 | 
							
								    return "#" + value[1] + value[3] + value[5];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return value;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function numberToHex(value) {
							 | 
						||
| 
								 | 
							
								  var hex = value.toString(16);
							 | 
						||
| 
								 | 
							
								  return hex.length === 1 ? "0" + hex : hex;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function colorToHex(color) {
							 | 
						||
| 
								 | 
							
								  return numberToHex(Math.round(color * 255));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function convertToHex(red, green, blue) {
							 | 
						||
| 
								 | 
							
								  return reduceHexValue("#" + colorToHex(red) + colorToHex(green) + colorToHex(blue));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function hslToHex(hue, saturation, lightness) {
							 | 
						||
| 
								 | 
							
								  return hslToRgb(hue, saturation, lightness, convertToHex);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Returns a string value for the color. The returned result is the smallest possible hex notation.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: hsl(359, 0.75, 0.4),
							 | 
						||
| 
								 | 
							
								 *   background: hsl({ hue: 360, saturation: 0.75, lightness: 0.4 }),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${hsl(359, 0.75, 0.4)};
							 | 
						||
| 
								 | 
							
								 *   background: ${hsl({ hue: 360, saturation: 0.75, lightness: 0.4 })};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "#b3191c";
							 | 
						||
| 
								 | 
							
								 *   background: "#b3191c";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function hsl(value, saturation, lightness) {
							 | 
						||
| 
								 | 
							
								  if (typeof value === 'number' && typeof saturation === 'number' && typeof lightness === 'number') {
							 | 
						||
| 
								 | 
							
								    return hslToHex(value, saturation, lightness);
							 | 
						||
| 
								 | 
							
								  } else if (typeof value === 'object' && saturation === undefined && lightness === undefined) {
							 | 
						||
| 
								 | 
							
								    return hslToHex(value.hue, value.saturation, value.lightness);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  throw new PolishedError(1);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Returns a string value for the color. The returned result is the smallest possible rgba or hex notation.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: hsla(359, 0.75, 0.4, 0.7),
							 | 
						||
| 
								 | 
							
								 *   background: hsla({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0,7 }),
							 | 
						||
| 
								 | 
							
								 *   background: hsla(359, 0.75, 0.4, 1),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${hsla(359, 0.75, 0.4, 0.7)};
							 | 
						||
| 
								 | 
							
								 *   background: ${hsla({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0,7 })};
							 | 
						||
| 
								 | 
							
								 *   background: ${hsla(359, 0.75, 0.4, 1)};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(179,25,28,0.7)";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(179,25,28,0.7)";
							 | 
						||
| 
								 | 
							
								 *   background: "#b3191c";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function hsla(value, saturation, lightness, alpha) {
							 | 
						||
| 
								 | 
							
								  if (typeof value === 'number' && typeof saturation === 'number' && typeof lightness === 'number' && typeof alpha === 'number') {
							 | 
						||
| 
								 | 
							
								    return alpha >= 1 ? hslToHex(value, saturation, lightness) : "rgba(" + hslToRgb(value, saturation, lightness) + "," + alpha + ")";
							 | 
						||
| 
								 | 
							
								  } else if (typeof value === 'object' && saturation === undefined && lightness === undefined && alpha === undefined) {
							 | 
						||
| 
								 | 
							
								    return value.alpha >= 1 ? hslToHex(value.hue, value.saturation, value.lightness) : "rgba(" + hslToRgb(value.hue, value.saturation, value.lightness) + "," + value.alpha + ")";
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  throw new PolishedError(2);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Returns a string value for the color. The returned result is the smallest possible hex notation.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: rgb(255, 205, 100),
							 | 
						||
| 
								 | 
							
								 *   background: rgb({ red: 255, green: 205, blue: 100 }),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${rgb(255, 205, 100)};
							 | 
						||
| 
								 | 
							
								 *   background: ${rgb({ red: 255, green: 205, blue: 100 })};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "#ffcd64";
							 | 
						||
| 
								 | 
							
								 *   background: "#ffcd64";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function rgb(value, green, blue) {
							 | 
						||
| 
								 | 
							
								  if (typeof value === 'number' && typeof green === 'number' && typeof blue === 'number') {
							 | 
						||
| 
								 | 
							
								    return reduceHexValue("#" + numberToHex(value) + numberToHex(green) + numberToHex(blue));
							 | 
						||
| 
								 | 
							
								  } else if (typeof value === 'object' && green === undefined && blue === undefined) {
							 | 
						||
| 
								 | 
							
								    return reduceHexValue("#" + numberToHex(value.red) + numberToHex(value.green) + numberToHex(value.blue));
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  throw new PolishedError(6);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Returns a string value for the color. The returned result is the smallest possible rgba or hex notation.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Can also be used to fade a color by passing a hex value or named CSS color along with an alpha value.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: rgba(255, 205, 100, 0.7),
							 | 
						||
| 
								 | 
							
								 *   background: rgba({ red: 255, green: 205, blue: 100, alpha: 0.7 }),
							 | 
						||
| 
								 | 
							
								 *   background: rgba(255, 205, 100, 1),
							 | 
						||
| 
								 | 
							
								 *   background: rgba('#ffffff', 0.4),
							 | 
						||
| 
								 | 
							
								 *   background: rgba('black', 0.7),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${rgba(255, 205, 100, 0.7)};
							 | 
						||
| 
								 | 
							
								 *   background: ${rgba({ red: 255, green: 205, blue: 100, alpha: 0.7 })};
							 | 
						||
| 
								 | 
							
								 *   background: ${rgba(255, 205, 100, 1)};
							 | 
						||
| 
								 | 
							
								 *   background: ${rgba('#ffffff', 0.4)};
							 | 
						||
| 
								 | 
							
								 *   background: ${rgba('black', 0.7)};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(255,205,100,0.7)";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(255,205,100,0.7)";
							 | 
						||
| 
								 | 
							
								 *   background: "#ffcd64";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(255,255,255,0.4)";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(0,0,0,0.7)";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function rgba(firstValue, secondValue, thirdValue, fourthValue) {
							 | 
						||
| 
								 | 
							
								  if (typeof firstValue === 'string' && typeof secondValue === 'number') {
							 | 
						||
| 
								 | 
							
								    var rgbValue = parseToRgb(firstValue);
							 | 
						||
| 
								 | 
							
								    return "rgba(" + rgbValue.red + "," + rgbValue.green + "," + rgbValue.blue + "," + secondValue + ")";
							 | 
						||
| 
								 | 
							
								  } else if (typeof firstValue === 'number' && typeof secondValue === 'number' && typeof thirdValue === 'number' && typeof fourthValue === 'number') {
							 | 
						||
| 
								 | 
							
								    return fourthValue >= 1 ? rgb(firstValue, secondValue, thirdValue) : "rgba(" + firstValue + "," + secondValue + "," + thirdValue + "," + fourthValue + ")";
							 | 
						||
| 
								 | 
							
								  } else if (typeof firstValue === 'object' && secondValue === undefined && thirdValue === undefined && fourthValue === undefined) {
							 | 
						||
| 
								 | 
							
								    return firstValue.alpha >= 1 ? rgb(firstValue.red, firstValue.green, firstValue.blue) : "rgba(" + firstValue.red + "," + firstValue.green + "," + firstValue.blue + "," + firstValue.alpha + ")";
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  throw new PolishedError(7);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var isRgb = function isRgb(color) {
							 | 
						||
| 
								 | 
							
								  return typeof color.red === 'number' && typeof color.green === 'number' && typeof color.blue === 'number' && (typeof color.alpha !== 'number' || typeof color.alpha === 'undefined');
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var isRgba = function isRgba(color) {
							 | 
						||
| 
								 | 
							
								  return typeof color.red === 'number' && typeof color.green === 'number' && typeof color.blue === 'number' && typeof color.alpha === 'number';
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var isHsl = function isHsl(color) {
							 | 
						||
| 
								 | 
							
								  return typeof color.hue === 'number' && typeof color.saturation === 'number' && typeof color.lightness === 'number' && (typeof color.alpha !== 'number' || typeof color.alpha === 'undefined');
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var isHsla = function isHsla(color) {
							 | 
						||
| 
								 | 
							
								  return typeof color.hue === 'number' && typeof color.saturation === 'number' && typeof color.lightness === 'number' && typeof color.alpha === 'number';
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Converts a RgbColor, RgbaColor, HslColor or HslaColor object to a color string.
							 | 
						||
| 
								 | 
							
								 * This util is useful in case you only know on runtime which color object is
							 | 
						||
| 
								 | 
							
								 * used. Otherwise we recommend to rely on `rgb`, `rgba`, `hsl` or `hsla`.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: toColorString({ red: 255, green: 205, blue: 100 }),
							 | 
						||
| 
								 | 
							
								 *   background: toColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 }),
							 | 
						||
| 
								 | 
							
								 *   background: toColorString({ hue: 240, saturation: 1, lightness: 0.5 }),
							 | 
						||
| 
								 | 
							
								 *   background: toColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 }),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${toColorString({ red: 255, green: 205, blue: 100 })};
							 | 
						||
| 
								 | 
							
								 *   background: ${toColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 })};
							 | 
						||
| 
								 | 
							
								 *   background: ${toColorString({ hue: 240, saturation: 1, lightness: 0.5 })};
							 | 
						||
| 
								 | 
							
								 *   background: ${toColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 })};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "#ffcd64";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(255,205,100,0.72)";
							 | 
						||
| 
								 | 
							
								 *   background: "#00f";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(179,25,25,0.72)";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function toColorString(color) {
							 | 
						||
| 
								 | 
							
								  if (typeof color !== 'object') throw new PolishedError(8);
							 | 
						||
| 
								 | 
							
								  if (isRgba(color)) return rgba(color);
							 | 
						||
| 
								 | 
							
								  if (isRgb(color)) return rgb(color);
							 | 
						||
| 
								 | 
							
								  if (isHsla(color)) return hsla(color);
							 | 
						||
| 
								 | 
							
								  if (isHsl(color)) return hsl(color);
							 | 
						||
| 
								 | 
							
								  throw new PolishedError(8);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Type definitions taken from https://github.com/gcanti/flow-static-land/blob/master/src/Fun.js
							 | 
						||
| 
								 | 
							
								// eslint-disable-next-line no-unused-vars
							 | 
						||
| 
								 | 
							
								// eslint-disable-next-line no-unused-vars
							 | 
						||
| 
								 | 
							
								// eslint-disable-next-line no-redeclare
							 | 
						||
| 
								 | 
							
								function curried(f, length, acc) {
							 | 
						||
| 
								 | 
							
								  return function fn() {
							 | 
						||
| 
								 | 
							
								    // eslint-disable-next-line prefer-rest-params
							 | 
						||
| 
								 | 
							
								    var combined = acc.concat(Array.prototype.slice.call(arguments));
							 | 
						||
| 
								 | 
							
								    return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								} // eslint-disable-next-line no-redeclare
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function curry(f) {
							 | 
						||
| 
								 | 
							
								  // eslint-disable-line no-redeclare
							 | 
						||
| 
								 | 
							
								  return curried(f, f.length, []);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Changes the hue of the color. Hue is a number between 0 to 360. The first
							 | 
						||
| 
								 | 
							
								 * argument for adjustHue is the amount of degrees the color is rotated around
							 | 
						||
| 
								 | 
							
								 * the color wheel, always producing a positive hue value.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: adjustHue(180, '#448'),
							 | 
						||
| 
								 | 
							
								 *   background: adjustHue('180', 'rgba(101,100,205,0.7)'),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${adjustHue(180, '#448')};
							 | 
						||
| 
								 | 
							
								 *   background: ${adjustHue('180', 'rgba(101,100,205,0.7)')};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "#888844";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(136,136,68,0.7)";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function adjustHue(degree, color) {
							 | 
						||
| 
								 | 
							
								  if (color === 'transparent') return color;
							 | 
						||
| 
								 | 
							
								  var hslColor = parseToHsl(color);
							 | 
						||
| 
								 | 
							
								  return toColorString(_extends__default['default']({}, hslColor, {
							 | 
						||
| 
								 | 
							
								    hue: hslColor.hue + parseFloat(degree)
							 | 
						||
| 
								 | 
							
								  }));
							 | 
						||
| 
								 | 
							
								} // prettier-ignore
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var curriedAdjustHue = /*#__PURE__*/curry
							 | 
						||
| 
								 | 
							
								/* ::<number | string, string, string> */
							 | 
						||
| 
								 | 
							
								(adjustHue);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Returns the complement of the provided color. This is identical to adjustHue(180, <color>).
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: complement('#448'),
							 | 
						||
| 
								 | 
							
								 *   background: complement('rgba(204,205,100,0.7)'),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${complement('#448')};
							 | 
						||
| 
								 | 
							
								 *   background: ${complement('rgba(204,205,100,0.7)')};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "#884";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(153,153,153,0.7)";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function complement(color) {
							 | 
						||
| 
								 | 
							
								  if (color === 'transparent') return color;
							 | 
						||
| 
								 | 
							
								  var hslColor = parseToHsl(color);
							 | 
						||
| 
								 | 
							
								  return toColorString(_extends__default['default']({}, hslColor, {
							 | 
						||
| 
								 | 
							
								    hue: (hslColor.hue + 180) % 360
							 | 
						||
| 
								 | 
							
								  }));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function guard(lowerBoundary, upperBoundary, value) {
							 | 
						||
| 
								 | 
							
								  return Math.max(lowerBoundary, Math.min(upperBoundary, value));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Returns a string value for the darkened color.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: darken(0.2, '#FFCD64'),
							 | 
						||
| 
								 | 
							
								 *   background: darken('0.2', 'rgba(255,205,100,0.7)'),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${darken(0.2, '#FFCD64')};
							 | 
						||
| 
								 | 
							
								 *   background: ${darken('0.2', 'rgba(255,205,100,0.7)')};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "#ffbd31";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(255,189,49,0.7)";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function darken(amount, color) {
							 | 
						||
| 
								 | 
							
								  if (color === 'transparent') return color;
							 | 
						||
| 
								 | 
							
								  var hslColor = parseToHsl(color);
							 | 
						||
| 
								 | 
							
								  return toColorString(_extends__default['default']({}, hslColor, {
							 | 
						||
| 
								 | 
							
								    lightness: guard(0, 1, hslColor.lightness - parseFloat(amount))
							 | 
						||
| 
								 | 
							
								  }));
							 | 
						||
| 
								 | 
							
								} // prettier-ignore
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var curriedDarken = /*#__PURE__*/curry
							 | 
						||
| 
								 | 
							
								/* ::<number | string, string, string> */
							 | 
						||
| 
								 | 
							
								(darken);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Decreases the intensity of a color. Its range is between 0 to 1. The first
							 | 
						||
| 
								 | 
							
								 * argument of the desaturate function is the amount by how much the color
							 | 
						||
| 
								 | 
							
								 * intensity should be decreased.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: desaturate(0.2, '#CCCD64'),
							 | 
						||
| 
								 | 
							
								 *   background: desaturate('0.2', 'rgba(204,205,100,0.7)'),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${desaturate(0.2, '#CCCD64')};
							 | 
						||
| 
								 | 
							
								 *   background: ${desaturate('0.2', 'rgba(204,205,100,0.7)')};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "#b8b979";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(184,185,121,0.7)";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function desaturate(amount, color) {
							 | 
						||
| 
								 | 
							
								  if (color === 'transparent') return color;
							 | 
						||
| 
								 | 
							
								  var hslColor = parseToHsl(color);
							 | 
						||
| 
								 | 
							
								  return toColorString(_extends__default['default']({}, hslColor, {
							 | 
						||
| 
								 | 
							
								    saturation: guard(0, 1, hslColor.saturation - parseFloat(amount))
							 | 
						||
| 
								 | 
							
								  }));
							 | 
						||
| 
								 | 
							
								} // prettier-ignore
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var curriedDesaturate = /*#__PURE__*/curry
							 | 
						||
| 
								 | 
							
								/* ::<number | string, string, string> */
							 | 
						||
| 
								 | 
							
								(desaturate);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Returns a number (float) representing the luminance of a color.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: getLuminance('#CCCD64') >= getLuminance('#0000ff') ? '#CCCD64' : '#0000ff',
							 | 
						||
| 
								 | 
							
								 *   background: getLuminance('rgba(58, 133, 255, 1)') >= getLuminance('rgba(255, 57, 149, 1)') ?
							 | 
						||
| 
								 | 
							
								 *                             'rgba(58, 133, 255, 1)' :
							 | 
						||
| 
								 | 
							
								 *                             'rgba(255, 57, 149, 1)',
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${getLuminance('#CCCD64') >= getLuminance('#0000ff') ? '#CCCD64' : '#0000ff'};
							 | 
						||
| 
								 | 
							
								 *   background: ${getLuminance('rgba(58, 133, 255, 1)') >= getLuminance('rgba(255, 57, 149, 1)') ?
							 | 
						||
| 
								 | 
							
								 *                             'rgba(58, 133, 255, 1)' :
							 | 
						||
| 
								 | 
							
								 *                             'rgba(255, 57, 149, 1)'};
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div {
							 | 
						||
| 
								 | 
							
								 *   background: "#CCCD64";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(58, 133, 255, 1)";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function getLuminance(color) {
							 | 
						||
| 
								 | 
							
								  if (color === 'transparent') return 0;
							 | 
						||
| 
								 | 
							
								  var rgbColor = parseToRgb(color);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var _Object$keys$map = Object.keys(rgbColor).map(function (key) {
							 | 
						||
| 
								 | 
							
								    var channel = rgbColor[key] / 255;
							 | 
						||
| 
								 | 
							
								    return channel <= 0.03928 ? channel / 12.92 : Math.pow((channel + 0.055) / 1.055, 2.4);
							 | 
						||
| 
								 | 
							
								  }),
							 | 
						||
| 
								 | 
							
								      r = _Object$keys$map[0],
							 | 
						||
| 
								 | 
							
								      g = _Object$keys$map[1],
							 | 
						||
| 
								 | 
							
								      b = _Object$keys$map[2];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return parseFloat((0.2126 * r + 0.7152 * g + 0.0722 * b).toFixed(3));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Returns the contrast ratio between two colors based on
							 | 
						||
| 
								 | 
							
								 * [W3's recommended equation for calculating contrast](http://www.w3.org/TR/WCAG20/#contrast-ratiodef).
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * const contrastRatio = getContrast('#444', '#fff');
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function getContrast(color1, color2) {
							 | 
						||
| 
								 | 
							
								  var luminance1 = getLuminance(color1);
							 | 
						||
| 
								 | 
							
								  var luminance2 = getLuminance(color2);
							 | 
						||
| 
								 | 
							
								  return parseFloat((luminance1 > luminance2 ? (luminance1 + 0.05) / (luminance2 + 0.05) : (luminance2 + 0.05) / (luminance1 + 0.05)).toFixed(2));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Converts the color to a grayscale, by reducing its saturation to 0.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: grayscale('#CCCD64'),
							 | 
						||
| 
								 | 
							
								 *   background: grayscale('rgba(204,205,100,0.7)'),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${grayscale('#CCCD64')};
							 | 
						||
| 
								 | 
							
								 *   background: ${grayscale('rgba(204,205,100,0.7)')};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "#999";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(153,153,153,0.7)";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function grayscale(color) {
							 | 
						||
| 
								 | 
							
								  if (color === 'transparent') return color;
							 | 
						||
| 
								 | 
							
								  return toColorString(_extends__default['default']({}, parseToHsl(color), {
							 | 
						||
| 
								 | 
							
								    saturation: 0
							 | 
						||
| 
								 | 
							
								  }));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Converts a HslColor or HslaColor object to a color string.
							 | 
						||
| 
								 | 
							
								 * This util is useful in case you only know on runtime which color object is
							 | 
						||
| 
								 | 
							
								 * used. Otherwise we recommend to rely on `hsl` or `hsla`.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: hslToColorString({ hue: 240, saturation: 1, lightness: 0.5 }),
							 | 
						||
| 
								 | 
							
								 *   background: hslToColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 }),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${hslToColorString({ hue: 240, saturation: 1, lightness: 0.5 })};
							 | 
						||
| 
								 | 
							
								 *   background: ${hslToColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 })};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "#00f";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(179,25,25,0.72)";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function hslToColorString(color) {
							 | 
						||
| 
								 | 
							
								  if (typeof color === 'object' && typeof color.hue === 'number' && typeof color.saturation === 'number' && typeof color.lightness === 'number') {
							 | 
						||
| 
								 | 
							
								    if (color.alpha && typeof color.alpha === 'number') {
							 | 
						||
| 
								 | 
							
								      return hsla({
							 | 
						||
| 
								 | 
							
								        hue: color.hue,
							 | 
						||
| 
								 | 
							
								        saturation: color.saturation,
							 | 
						||
| 
								 | 
							
								        lightness: color.lightness,
							 | 
						||
| 
								 | 
							
								        alpha: color.alpha
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return hsl({
							 | 
						||
| 
								 | 
							
								      hue: color.hue,
							 | 
						||
| 
								 | 
							
								      saturation: color.saturation,
							 | 
						||
| 
								 | 
							
								      lightness: color.lightness
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  throw new PolishedError(45);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Inverts the red, green and blue values of a color.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: invert('#CCCD64'),
							 | 
						||
| 
								 | 
							
								 *   background: invert('rgba(101,100,205,0.7)'),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${invert('#CCCD64')};
							 | 
						||
| 
								 | 
							
								 *   background: ${invert('rgba(101,100,205,0.7)')};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "#33329b";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(154,155,50,0.7)";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function invert(color) {
							 | 
						||
| 
								 | 
							
								  if (color === 'transparent') return color; // parse color string to rgb
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var value = parseToRgb(color);
							 | 
						||
| 
								 | 
							
								  return toColorString(_extends__default['default']({}, value, {
							 | 
						||
| 
								 | 
							
								    red: 255 - value.red,
							 | 
						||
| 
								 | 
							
								    green: 255 - value.green,
							 | 
						||
| 
								 | 
							
								    blue: 255 - value.blue
							 | 
						||
| 
								 | 
							
								  }));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Returns a string value for the lightened color.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: lighten(0.2, '#CCCD64'),
							 | 
						||
| 
								 | 
							
								 *   background: lighten('0.2', 'rgba(204,205,100,0.7)'),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${lighten(0.2, '#FFCD64')};
							 | 
						||
| 
								 | 
							
								 *   background: ${lighten('0.2', 'rgba(204,205,100,0.7)')};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "#e5e6b1";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(229,230,177,0.7)";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function lighten(amount, color) {
							 | 
						||
| 
								 | 
							
								  if (color === 'transparent') return color;
							 | 
						||
| 
								 | 
							
								  var hslColor = parseToHsl(color);
							 | 
						||
| 
								 | 
							
								  return toColorString(_extends__default['default']({}, hslColor, {
							 | 
						||
| 
								 | 
							
								    lightness: guard(0, 1, hslColor.lightness + parseFloat(amount))
							 | 
						||
| 
								 | 
							
								  }));
							 | 
						||
| 
								 | 
							
								} // prettier-ignore
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var curriedLighten = /*#__PURE__*/curry
							 | 
						||
| 
								 | 
							
								/* ::<number | string, string, string> */
							 | 
						||
| 
								 | 
							
								(lighten);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Determines which contrast guidelines have been met for two colors.
							 | 
						||
| 
								 | 
							
								 * Based on the [contrast calculations recommended by W3](https://www.w3.org/WAI/WCAG21/Understanding/contrast-enhanced.html).
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * const scores = meetsContrastGuidelines('#444', '#fff');
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function meetsContrastGuidelines(color1, color2) {
							 | 
						||
| 
								 | 
							
								  var contrastRatio = getContrast(color1, color2);
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								    AA: contrastRatio >= 4.5,
							 | 
						||
| 
								 | 
							
								    AALarge: contrastRatio >= 3,
							 | 
						||
| 
								 | 
							
								    AAA: contrastRatio >= 7,
							 | 
						||
| 
								 | 
							
								    AAALarge: contrastRatio >= 4.5
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Mixes the two provided colors together by calculating the average of each of the RGB components weighted to the first color by the provided weight.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: mix(0.5, '#f00', '#00f')
							 | 
						||
| 
								 | 
							
								 *   background: mix(0.25, '#f00', '#00f')
							 | 
						||
| 
								 | 
							
								 *   background: mix('0.5', 'rgba(255, 0, 0, 0.5)', '#00f')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${mix(0.5, '#f00', '#00f')};
							 | 
						||
| 
								 | 
							
								 *   background: ${mix(0.25, '#f00', '#00f')};
							 | 
						||
| 
								 | 
							
								 *   background: ${mix('0.5', 'rgba(255, 0, 0, 0.5)', '#00f')};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "#7f007f";
							 | 
						||
| 
								 | 
							
								 *   background: "#3f00bf";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(63, 0, 191, 0.75)";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function mix(weight, color, otherColor) {
							 | 
						||
| 
								 | 
							
								  if (color === 'transparent') return otherColor;
							 | 
						||
| 
								 | 
							
								  if (otherColor === 'transparent') return color;
							 | 
						||
| 
								 | 
							
								  if (weight === 0) return otherColor;
							 | 
						||
| 
								 | 
							
								  var parsedColor1 = parseToRgb(color);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var color1 = _extends__default['default']({}, parsedColor1, {
							 | 
						||
| 
								 | 
							
								    alpha: typeof parsedColor1.alpha === 'number' ? parsedColor1.alpha : 1
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var parsedColor2 = parseToRgb(otherColor);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var color2 = _extends__default['default']({}, parsedColor2, {
							 | 
						||
| 
								 | 
							
								    alpha: typeof parsedColor2.alpha === 'number' ? parsedColor2.alpha : 1
							 | 
						||
| 
								 | 
							
								  }); // The formula is copied from the original Sass implementation:
							 | 
						||
| 
								 | 
							
								  // http://sass-lang.com/documentation/Sass/Script/Functions.html#mix-instance_method
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var alphaDelta = color1.alpha - color2.alpha;
							 | 
						||
| 
								 | 
							
								  var x = parseFloat(weight) * 2 - 1;
							 | 
						||
| 
								 | 
							
								  var y = x * alphaDelta === -1 ? x : x + alphaDelta;
							 | 
						||
| 
								 | 
							
								  var z = 1 + x * alphaDelta;
							 | 
						||
| 
								 | 
							
								  var weight1 = (y / z + 1) / 2.0;
							 | 
						||
| 
								 | 
							
								  var weight2 = 1 - weight1;
							 | 
						||
| 
								 | 
							
								  var mixedColor = {
							 | 
						||
| 
								 | 
							
								    red: Math.floor(color1.red * weight1 + color2.red * weight2),
							 | 
						||
| 
								 | 
							
								    green: Math.floor(color1.green * weight1 + color2.green * weight2),
							 | 
						||
| 
								 | 
							
								    blue: Math.floor(color1.blue * weight1 + color2.blue * weight2),
							 | 
						||
| 
								 | 
							
								    alpha: color1.alpha * (parseFloat(weight) / 1.0) + color2.alpha * (1 - parseFloat(weight) / 1.0)
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								  return rgba(mixedColor);
							 | 
						||
| 
								 | 
							
								} // prettier-ignore
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var curriedMix = /*#__PURE__*/curry
							 | 
						||
| 
								 | 
							
								/* ::<number | string, string, string, string> */
							 | 
						||
| 
								 | 
							
								(mix);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Increases the opacity of a color. Its range for the amount is between 0 to 1.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: opacify(0.1, 'rgba(255, 255, 255, 0.9)');
							 | 
						||
| 
								 | 
							
								 *   background: opacify(0.2, 'hsla(0, 0%, 100%, 0.5)'),
							 | 
						||
| 
								 | 
							
								 *   background: opacify('0.5', 'rgba(255, 0, 0, 0.2)'),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${opacify(0.1, 'rgba(255, 255, 255, 0.9)')};
							 | 
						||
| 
								 | 
							
								 *   background: ${opacify(0.2, 'hsla(0, 0%, 100%, 0.5)')},
							 | 
						||
| 
								 | 
							
								 *   background: ${opacify('0.5', 'rgba(255, 0, 0, 0.2)')},
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "#fff";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(255,255,255,0.7)";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(255,0,0,0.7)";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function opacify(amount, color) {
							 | 
						||
| 
								 | 
							
								  if (color === 'transparent') return color;
							 | 
						||
| 
								 | 
							
								  var parsedColor = parseToRgb(color);
							 | 
						||
| 
								 | 
							
								  var alpha = typeof parsedColor.alpha === 'number' ? parsedColor.alpha : 1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var colorWithAlpha = _extends__default['default']({}, parsedColor, {
							 | 
						||
| 
								 | 
							
								    alpha: guard(0, 1, (alpha * 100 + parseFloat(amount) * 100) / 100)
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return rgba(colorWithAlpha);
							 | 
						||
| 
								 | 
							
								} // prettier-ignore
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var curriedOpacify = /*#__PURE__*/curry
							 | 
						||
| 
								 | 
							
								/* ::<number | string, string, string> */
							 | 
						||
| 
								 | 
							
								(opacify);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var defaultReturnIfLightColor = '#000';
							 | 
						||
| 
								 | 
							
								var defaultReturnIfDarkColor = '#fff';
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Returns black or white (or optional passed colors) for best
							 | 
						||
| 
								 | 
							
								 * contrast depending on the luminosity of the given color.
							 | 
						||
| 
								 | 
							
								 * When passing custom return colors, strict mode ensures that the
							 | 
						||
| 
								 | 
							
								 * return color always meets or exceeds WCAG level AA or greater. If this test
							 | 
						||
| 
								 | 
							
								 * fails, the default return color (black or white) is returned in place of the
							 | 
						||
| 
								 | 
							
								 * custom return color. You can optionally turn off strict mode.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Follows [W3C specs for readability](https://www.w3.org/TR/WCAG20-TECHS/G18.html).
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   color: readableColor('#000'),
							 | 
						||
| 
								 | 
							
								 *   color: readableColor('black', '#001', '#ff8'),
							 | 
						||
| 
								 | 
							
								 *   color: readableColor('white', '#001', '#ff8'),
							 | 
						||
| 
								 | 
							
								 *   color: readableColor('red', '#333', '#ddd', true)
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   color: ${readableColor('#000')};
							 | 
						||
| 
								 | 
							
								 *   color: ${readableColor('black', '#001', '#ff8')};
							 | 
						||
| 
								 | 
							
								 *   color: ${readableColor('white', '#001', '#ff8')};
							 | 
						||
| 
								 | 
							
								 *   color: ${readableColor('red', '#333', '#ddd', true)};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   color: "#fff";
							 | 
						||
| 
								 | 
							
								 *   color: "#ff8";
							 | 
						||
| 
								 | 
							
								 *   color: "#001";
							 | 
						||
| 
								 | 
							
								 *   color: "#000";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function readableColor(color, returnIfLightColor, returnIfDarkColor, strict) {
							 | 
						||
| 
								 | 
							
								  if (returnIfLightColor === void 0) {
							 | 
						||
| 
								 | 
							
								    returnIfLightColor = defaultReturnIfLightColor;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (returnIfDarkColor === void 0) {
							 | 
						||
| 
								 | 
							
								    returnIfDarkColor = defaultReturnIfDarkColor;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (strict === void 0) {
							 | 
						||
| 
								 | 
							
								    strict = true;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var isColorLight = getLuminance(color) > 0.179;
							 | 
						||
| 
								 | 
							
								  var preferredReturnColor = isColorLight ? returnIfLightColor : returnIfDarkColor;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (!strict || getContrast(color, preferredReturnColor) >= 4.5) {
							 | 
						||
| 
								 | 
							
								    return preferredReturnColor;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return isColorLight ? defaultReturnIfLightColor : defaultReturnIfDarkColor;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Converts a RgbColor or RgbaColor object to a color string.
							 | 
						||
| 
								 | 
							
								 * This util is useful in case you only know on runtime which color object is
							 | 
						||
| 
								 | 
							
								 * used. Otherwise we recommend to rely on `rgb` or `rgba`.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: rgbToColorString({ red: 255, green: 205, blue: 100 }),
							 | 
						||
| 
								 | 
							
								 *   background: rgbToColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 }),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${rgbToColorString({ red: 255, green: 205, blue: 100 })};
							 | 
						||
| 
								 | 
							
								 *   background: ${rgbToColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 })};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "#ffcd64";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(255,205,100,0.72)";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function rgbToColorString(color) {
							 | 
						||
| 
								 | 
							
								  if (typeof color === 'object' && typeof color.red === 'number' && typeof color.green === 'number' && typeof color.blue === 'number') {
							 | 
						||
| 
								 | 
							
								    if (typeof color.alpha === 'number') {
							 | 
						||
| 
								 | 
							
								      return rgba({
							 | 
						||
| 
								 | 
							
								        red: color.red,
							 | 
						||
| 
								 | 
							
								        green: color.green,
							 | 
						||
| 
								 | 
							
								        blue: color.blue,
							 | 
						||
| 
								 | 
							
								        alpha: color.alpha
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return rgb({
							 | 
						||
| 
								 | 
							
								      red: color.red,
							 | 
						||
| 
								 | 
							
								      green: color.green,
							 | 
						||
| 
								 | 
							
								      blue: color.blue
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  throw new PolishedError(46);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Increases the intensity of a color. Its range is between 0 to 1. The first
							 | 
						||
| 
								 | 
							
								 * argument of the saturate function is the amount by how much the color
							 | 
						||
| 
								 | 
							
								 * intensity should be increased.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: saturate(0.2, '#CCCD64'),
							 | 
						||
| 
								 | 
							
								 *   background: saturate('0.2', 'rgba(204,205,100,0.7)'),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${saturate(0.2, '#FFCD64')};
							 | 
						||
| 
								 | 
							
								 *   background: ${saturate('0.2', 'rgba(204,205,100,0.7)')};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "#e0e250";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(224,226,80,0.7)";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function saturate(amount, color) {
							 | 
						||
| 
								 | 
							
								  if (color === 'transparent') return color;
							 | 
						||
| 
								 | 
							
								  var hslColor = parseToHsl(color);
							 | 
						||
| 
								 | 
							
								  return toColorString(_extends__default['default']({}, hslColor, {
							 | 
						||
| 
								 | 
							
								    saturation: guard(0, 1, hslColor.saturation + parseFloat(amount))
							 | 
						||
| 
								 | 
							
								  }));
							 | 
						||
| 
								 | 
							
								} // prettier-ignore
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var curriedSaturate = /*#__PURE__*/curry
							 | 
						||
| 
								 | 
							
								/* ::<number | string, string, string> */
							 | 
						||
| 
								 | 
							
								(saturate);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Sets the hue of a color to the provided value. The hue range can be
							 | 
						||
| 
								 | 
							
								 * from 0 and 359.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: setHue(42, '#CCCD64'),
							 | 
						||
| 
								 | 
							
								 *   background: setHue('244', 'rgba(204,205,100,0.7)'),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${setHue(42, '#CCCD64')};
							 | 
						||
| 
								 | 
							
								 *   background: ${setHue('244', 'rgba(204,205,100,0.7)')};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "#cdae64";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(107,100,205,0.7)";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function setHue(hue, color) {
							 | 
						||
| 
								 | 
							
								  if (color === 'transparent') return color;
							 | 
						||
| 
								 | 
							
								  return toColorString(_extends__default['default']({}, parseToHsl(color), {
							 | 
						||
| 
								 | 
							
								    hue: parseFloat(hue)
							 | 
						||
| 
								 | 
							
								  }));
							 | 
						||
| 
								 | 
							
								} // prettier-ignore
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var curriedSetHue = /*#__PURE__*/curry
							 | 
						||
| 
								 | 
							
								/* ::<number | string, string, string> */
							 | 
						||
| 
								 | 
							
								(setHue);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Sets the lightness of a color to the provided value. The lightness range can be
							 | 
						||
| 
								 | 
							
								 * from 0 and 1.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: setLightness(0.2, '#CCCD64'),
							 | 
						||
| 
								 | 
							
								 *   background: setLightness('0.75', 'rgba(204,205,100,0.7)'),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${setLightness(0.2, '#CCCD64')};
							 | 
						||
| 
								 | 
							
								 *   background: ${setLightness('0.75', 'rgba(204,205,100,0.7)')};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "#4d4d19";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(223,224,159,0.7)";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function setLightness(lightness, color) {
							 | 
						||
| 
								 | 
							
								  if (color === 'transparent') return color;
							 | 
						||
| 
								 | 
							
								  return toColorString(_extends__default['default']({}, parseToHsl(color), {
							 | 
						||
| 
								 | 
							
								    lightness: parseFloat(lightness)
							 | 
						||
| 
								 | 
							
								  }));
							 | 
						||
| 
								 | 
							
								} // prettier-ignore
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var curriedSetLightness = /*#__PURE__*/curry
							 | 
						||
| 
								 | 
							
								/* ::<number | string, string, string> */
							 | 
						||
| 
								 | 
							
								(setLightness);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Sets the saturation of a color to the provided value. The saturation range can be
							 | 
						||
| 
								 | 
							
								 * from 0 and 1.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: setSaturation(0.2, '#CCCD64'),
							 | 
						||
| 
								 | 
							
								 *   background: setSaturation('0.75', 'rgba(204,205,100,0.7)'),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${setSaturation(0.2, '#CCCD64')};
							 | 
						||
| 
								 | 
							
								 *   background: ${setSaturation('0.75', 'rgba(204,205,100,0.7)')};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "#adad84";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(228,229,76,0.7)";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function setSaturation(saturation, color) {
							 | 
						||
| 
								 | 
							
								  if (color === 'transparent') return color;
							 | 
						||
| 
								 | 
							
								  return toColorString(_extends__default['default']({}, parseToHsl(color), {
							 | 
						||
| 
								 | 
							
								    saturation: parseFloat(saturation)
							 | 
						||
| 
								 | 
							
								  }));
							 | 
						||
| 
								 | 
							
								} // prettier-ignore
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var curriedSetSaturation = /*#__PURE__*/curry
							 | 
						||
| 
								 | 
							
								/* ::<number | string, string, string> */
							 | 
						||
| 
								 | 
							
								(setSaturation);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Shades a color by mixing it with black. `shade` can produce
							 | 
						||
| 
								 | 
							
								 * hue shifts, where as `darken` manipulates the luminance channel and therefore
							 | 
						||
| 
								 | 
							
								 * doesn't produce hue shifts.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: shade(0.25, '#00f')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${shade(0.25, '#00f')};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "#00003f";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function shade(percentage, color) {
							 | 
						||
| 
								 | 
							
								  if (color === 'transparent') return color;
							 | 
						||
| 
								 | 
							
								  return curriedMix(parseFloat(percentage), 'rgb(0, 0, 0)', color);
							 | 
						||
| 
								 | 
							
								} // prettier-ignore
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var curriedShade = /*#__PURE__*/curry
							 | 
						||
| 
								 | 
							
								/* ::<number | string, string, string> */
							 | 
						||
| 
								 | 
							
								(shade);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Tints a color by mixing it with white. `tint` can produce
							 | 
						||
| 
								 | 
							
								 * hue shifts, where as `lighten` manipulates the luminance channel and therefore
							 | 
						||
| 
								 | 
							
								 * doesn't produce hue shifts.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: tint(0.25, '#00f')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${tint(0.25, '#00f')};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "#bfbfff";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function tint(percentage, color) {
							 | 
						||
| 
								 | 
							
								  if (color === 'transparent') return color;
							 | 
						||
| 
								 | 
							
								  return curriedMix(parseFloat(percentage), 'rgb(255, 255, 255)', color);
							 | 
						||
| 
								 | 
							
								} // prettier-ignore
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var curriedTint = /*#__PURE__*/curry
							 | 
						||
| 
								 | 
							
								/* ::<number | string, string, string> */
							 | 
						||
| 
								 | 
							
								(tint);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Decreases the opacity of a color. Its range for the amount is between 0 to 1.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   background: transparentize(0.1, '#fff');
							 | 
						||
| 
								 | 
							
								 *   background: transparentize(0.2, 'hsl(0, 0%, 100%)'),
							 | 
						||
| 
								 | 
							
								 *   background: transparentize('0.5', 'rgba(255, 0, 0, 0.8)'),
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   background: ${transparentize(0.1, '#fff')};
							 | 
						||
| 
								 | 
							
								 *   background: ${transparentize(0.2, 'hsl(0, 0%, 100%)')},
							 | 
						||
| 
								 | 
							
								 *   background: ${transparentize('0.5', 'rgba(255, 0, 0, 0.8)')},
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * element {
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(255,255,255,0.9)";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(255,255,255,0.8)";
							 | 
						||
| 
								 | 
							
								 *   background: "rgba(255,0,0,0.3)";
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function transparentize(amount, color) {
							 | 
						||
| 
								 | 
							
								  if (color === 'transparent') return color;
							 | 
						||
| 
								 | 
							
								  var parsedColor = parseToRgb(color);
							 | 
						||
| 
								 | 
							
								  var alpha = typeof parsedColor.alpha === 'number' ? parsedColor.alpha : 1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var colorWithAlpha = _extends__default['default']({}, parsedColor, {
							 | 
						||
| 
								 | 
							
								    alpha: guard(0, 1, +(alpha * 100 - parseFloat(amount) * 100).toFixed(2) / 100)
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return rgba(colorWithAlpha);
							 | 
						||
| 
								 | 
							
								} // prettier-ignore
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var curriedTransparentize = /*#__PURE__*/curry
							 | 
						||
| 
								 | 
							
								/* ::<number | string, string, string> */
							 | 
						||
| 
								 | 
							
								(transparentize);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Shorthand for easily setting the animation property. Allows either multiple arrays with animations
							 | 
						||
| 
								 | 
							
								 * or a single animation spread over the arguments.
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...animation(['rotate', '1s', 'ease-in-out'], ['colorchange', '2s'])
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${animation(['rotate', '1s', 'ease-in-out'], ['colorchange', '2s'])}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div {
							 | 
						||
| 
								 | 
							
								 *   'animation': 'rotate 1s ease-in-out, colorchange 2s'
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...animation('rotate', '1s', 'ease-in-out')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${animation('rotate', '1s', 'ease-in-out')}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div {
							 | 
						||
| 
								 | 
							
								 *   'animation': 'rotate 1s ease-in-out'
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function animation() {
							 | 
						||
| 
								 | 
							
								  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
							 | 
						||
| 
								 | 
							
								    args[_key] = arguments[_key];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // Allow single or multiple animations passed
							 | 
						||
| 
								 | 
							
								  var multiMode = Array.isArray(args[0]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (!multiMode && args.length > 8) {
							 | 
						||
| 
								 | 
							
								    throw new PolishedError(64);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var code = args.map(function (arg) {
							 | 
						||
| 
								 | 
							
								    if (multiMode && !Array.isArray(arg) || !multiMode && Array.isArray(arg)) {
							 | 
						||
| 
								 | 
							
								      throw new PolishedError(65);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (Array.isArray(arg) && arg.length > 8) {
							 | 
						||
| 
								 | 
							
								      throw new PolishedError(66);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return Array.isArray(arg) ? arg.join(' ') : arg;
							 | 
						||
| 
								 | 
							
								  }).join(', ');
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								    animation: code
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Shorthand that accepts any number of backgroundImage values as parameters for creating a single background statement.
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...backgroundImages('url("/image/background.jpg")', 'linear-gradient(red, green)')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${backgroundImages('url("/image/background.jpg")', 'linear-gradient(red, green)')}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div {
							 | 
						||
| 
								 | 
							
								 *   'backgroundImage': 'url("/image/background.jpg"), linear-gradient(red, green)'
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function backgroundImages() {
							 | 
						||
| 
								 | 
							
								  for (var _len = arguments.length, properties = new Array(_len), _key = 0; _key < _len; _key++) {
							 | 
						||
| 
								 | 
							
								    properties[_key] = arguments[_key];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								    backgroundImage: properties.join(', ')
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Shorthand that accepts any number of background values as parameters for creating a single background statement.
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...backgrounds('url("/image/background.jpg")', 'linear-gradient(red, green)', 'center no-repeat')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${backgrounds('url("/image/background.jpg")', 'linear-gradient(red, green)', 'center no-repeat')}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div {
							 | 
						||
| 
								 | 
							
								 *   'background': 'url("/image/background.jpg"), linear-gradient(red, green), center no-repeat'
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function backgrounds() {
							 | 
						||
| 
								 | 
							
								  for (var _len = arguments.length, properties = new Array(_len), _key = 0; _key < _len; _key++) {
							 | 
						||
| 
								 | 
							
								    properties[_key] = arguments[_key];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								    background: properties.join(', ')
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var sideMap = ['top', 'right', 'bottom', 'left'];
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Shorthand for the border property that splits out individual properties for use with tools like Fela and Styletron. A side keyword can optionally be passed to target only one side's border properties.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...border('1px', 'solid', 'red')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${border('1px', 'solid', 'red')}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div {
							 | 
						||
| 
								 | 
							
								 *   'borderColor': 'red',
							 | 
						||
| 
								 | 
							
								 *   'borderStyle': 'solid',
							 | 
						||
| 
								 | 
							
								 *   'borderWidth': `1px`,
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...border('top', '1px', 'solid', 'red')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${border('top', '1px', 'solid', 'red')}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div {
							 | 
						||
| 
								 | 
							
								 *   'borderTopColor': 'red',
							 | 
						||
| 
								 | 
							
								 *   'borderTopStyle': 'solid',
							 | 
						||
| 
								 | 
							
								 *   'borderTopWidth': `1px`,
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function border(sideKeyword) {
							 | 
						||
| 
								 | 
							
								  for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
							 | 
						||
| 
								 | 
							
								    values[_key - 1] = arguments[_key];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (typeof sideKeyword === 'string' && sideMap.indexOf(sideKeyword) >= 0) {
							 | 
						||
| 
								 | 
							
								    var _ref;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return _ref = {}, _ref["border" + capitalizeString(sideKeyword) + "Width"] = values[0], _ref["border" + capitalizeString(sideKeyword) + "Style"] = values[1], _ref["border" + capitalizeString(sideKeyword) + "Color"] = values[2], _ref;
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    values.unshift(sideKeyword);
							 | 
						||
| 
								 | 
							
								    return {
							 | 
						||
| 
								 | 
							
								      borderWidth: values[0],
							 | 
						||
| 
								 | 
							
								      borderStyle: values[1],
							 | 
						||
| 
								 | 
							
								      borderColor: values[2]
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...borderColor('red', 'green', 'blue', 'yellow')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${borderColor('red', 'green', 'blue', 'yellow')}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div {
							 | 
						||
| 
								 | 
							
								 *   'borderTopColor': 'red',
							 | 
						||
| 
								 | 
							
								 *   'borderRightColor': 'green',
							 | 
						||
| 
								 | 
							
								 *   'borderBottomColor': 'blue',
							 | 
						||
| 
								 | 
							
								 *   'borderLeftColor': 'yellow'
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function borderColor() {
							 | 
						||
| 
								 | 
							
								  for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {
							 | 
						||
| 
								 | 
							
								    values[_key] = arguments[_key];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return directionalProperty.apply(void 0, ['borderColor'].concat(values));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Shorthand that accepts a value for side and a value for radius and applies the radius value to both corners of the side.
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...borderRadius('top', '5px')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${borderRadius('top', '5px')}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div {
							 | 
						||
| 
								 | 
							
								 *   'borderTopRightRadius': '5px',
							 | 
						||
| 
								 | 
							
								 *   'borderTopLeftRadius': '5px',
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function borderRadius(side, radius) {
							 | 
						||
| 
								 | 
							
								  var uppercaseSide = capitalizeString(side);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (!radius && radius !== 0) {
							 | 
						||
| 
								 | 
							
								    throw new PolishedError(62);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (uppercaseSide === 'Top' || uppercaseSide === 'Bottom') {
							 | 
						||
| 
								 | 
							
								    var _ref;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return _ref = {}, _ref["border" + uppercaseSide + "RightRadius"] = radius, _ref["border" + uppercaseSide + "LeftRadius"] = radius, _ref;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (uppercaseSide === 'Left' || uppercaseSide === 'Right') {
							 | 
						||
| 
								 | 
							
								    var _ref2;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return _ref2 = {}, _ref2["borderTop" + uppercaseSide + "Radius"] = radius, _ref2["borderBottom" + uppercaseSide + "Radius"] = radius, _ref2;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  throw new PolishedError(63);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...borderStyle('solid', 'dashed', 'dotted', 'double')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${borderStyle('solid', 'dashed', 'dotted', 'double')}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div {
							 | 
						||
| 
								 | 
							
								 *   'borderTopStyle': 'solid',
							 | 
						||
| 
								 | 
							
								 *   'borderRightStyle': 'dashed',
							 | 
						||
| 
								 | 
							
								 *   'borderBottomStyle': 'dotted',
							 | 
						||
| 
								 | 
							
								 *   'borderLeftStyle': 'double'
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function borderStyle() {
							 | 
						||
| 
								 | 
							
								  for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {
							 | 
						||
| 
								 | 
							
								    values[_key] = arguments[_key];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return directionalProperty.apply(void 0, ['borderStyle'].concat(values));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...borderWidth('12px', '24px', '36px', '48px')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${borderWidth('12px', '24px', '36px', '48px')}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div {
							 | 
						||
| 
								 | 
							
								 *   'borderTopWidth': '12px',
							 | 
						||
| 
								 | 
							
								 *   'borderRightWidth': '24px',
							 | 
						||
| 
								 | 
							
								 *   'borderBottomWidth': '36px',
							 | 
						||
| 
								 | 
							
								 *   'borderLeftWidth': '48px'
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function borderWidth() {
							 | 
						||
| 
								 | 
							
								  for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {
							 | 
						||
| 
								 | 
							
								    values[_key] = arguments[_key];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return directionalProperty.apply(void 0, ['borderWidth'].concat(values));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function generateSelectors(template, state) {
							 | 
						||
| 
								 | 
							
								  var stateSuffix = state ? ":" + state : '';
							 | 
						||
| 
								 | 
							
								  return template(stateSuffix);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Function helper that adds an array of states to a template of selectors. Used in textInputs and buttons.
							 | 
						||
| 
								 | 
							
								 * @private
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function statefulSelectors(states, template, stateMap) {
							 | 
						||
| 
								 | 
							
								  if (!template) throw new PolishedError(67);
							 | 
						||
| 
								 | 
							
								  if (states.length === 0) return generateSelectors(template, null);
							 | 
						||
| 
								 | 
							
								  var selectors = [];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  for (var i = 0; i < states.length; i += 1) {
							 | 
						||
| 
								 | 
							
								    if (stateMap && stateMap.indexOf(states[i]) < 0) {
							 | 
						||
| 
								 | 
							
								      throw new PolishedError(68);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    selectors.push(generateSelectors(template, states[i]));
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  selectors = selectors.join(',');
							 | 
						||
| 
								 | 
							
								  return selectors;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var stateMap = [undefined, null, 'active', 'focus', 'hover'];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function template(state) {
							 | 
						||
| 
								 | 
							
								  return "button" + state + ",\n  input[type=\"button\"]" + state + ",\n  input[type=\"reset\"]" + state + ",\n  input[type=\"submit\"]" + state;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Populates selectors that target all buttons. You can pass optional states to append to the selectors.
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   [buttons('active')]: {
							 | 
						||
| 
								 | 
							
								 *     'border': 'none'
							 | 
						||
| 
								 | 
							
								 *   }
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   > ${buttons('active')} {
							 | 
						||
| 
								 | 
							
								 *     border: none;
							 | 
						||
| 
								 | 
							
								 *   }
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *  'button:active,
							 | 
						||
| 
								 | 
							
								 *  'input[type="button"]:active,
							 | 
						||
| 
								 | 
							
								 *  'input[type=\"reset\"]:active,
							 | 
						||
| 
								 | 
							
								 *  'input[type=\"submit\"]:active: {
							 | 
						||
| 
								 | 
							
								 *   'border': 'none'
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function buttons() {
							 | 
						||
| 
								 | 
							
								  for (var _len = arguments.length, states = new Array(_len), _key = 0; _key < _len; _key++) {
							 | 
						||
| 
								 | 
							
								    states[_key] = arguments[_key];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return statefulSelectors(states, template, stateMap);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...margin('12px', '24px', '36px', '48px')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${margin('12px', '24px', '36px', '48px')}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div {
							 | 
						||
| 
								 | 
							
								 *   'marginTop': '12px',
							 | 
						||
| 
								 | 
							
								 *   'marginRight': '24px',
							 | 
						||
| 
								 | 
							
								 *   'marginBottom': '36px',
							 | 
						||
| 
								 | 
							
								 *   'marginLeft': '48px'
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function margin() {
							 | 
						||
| 
								 | 
							
								  for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {
							 | 
						||
| 
								 | 
							
								    values[_key] = arguments[_key];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return directionalProperty.apply(void 0, ['margin'].concat(values));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...padding('12px', '24px', '36px', '48px')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${padding('12px', '24px', '36px', '48px')}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div {
							 | 
						||
| 
								 | 
							
								 *   'paddingTop': '12px',
							 | 
						||
| 
								 | 
							
								 *   'paddingRight': '24px',
							 | 
						||
| 
								 | 
							
								 *   'paddingBottom': '36px',
							 | 
						||
| 
								 | 
							
								 *   'paddingLeft': '48px'
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function padding() {
							 | 
						||
| 
								 | 
							
								  for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {
							 | 
						||
| 
								 | 
							
								    values[_key] = arguments[_key];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return directionalProperty.apply(void 0, ['padding'].concat(values));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var positionMap$1 = ['absolute', 'fixed', 'relative', 'static', 'sticky'];
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Shorthand accepts up to five values, including null to skip a value, and maps them to their respective directions. The first value can optionally be a position keyword.
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...position('12px', '24px', '36px', '48px')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${position('12px', '24px', '36px', '48px')}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div {
							 | 
						||
| 
								 | 
							
								 *   'top': '12px',
							 | 
						||
| 
								 | 
							
								 *   'right': '24px',
							 | 
						||
| 
								 | 
							
								 *   'bottom': '36px',
							 | 
						||
| 
								 | 
							
								 *   'left': '48px'
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...position('absolute', '12px', '24px', '36px', '48px')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${position('absolute', '12px', '24px', '36px', '48px')}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div {
							 | 
						||
| 
								 | 
							
								 *   'position': 'absolute',
							 | 
						||
| 
								 | 
							
								 *   'top': '12px',
							 | 
						||
| 
								 | 
							
								 *   'right': '24px',
							 | 
						||
| 
								 | 
							
								 *   'bottom': '36px',
							 | 
						||
| 
								 | 
							
								 *   'left': '48px'
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function position(firstValue) {
							 | 
						||
| 
								 | 
							
								  for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
							 | 
						||
| 
								 | 
							
								    values[_key - 1] = arguments[_key];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (positionMap$1.indexOf(firstValue) >= 0 && firstValue) {
							 | 
						||
| 
								 | 
							
								    return _extends__default['default']({}, directionalProperty.apply(void 0, [''].concat(values)), {
							 | 
						||
| 
								 | 
							
								      position: firstValue
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    return directionalProperty.apply(void 0, ['', firstValue].concat(values));
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Shorthand to set the height and width properties in a single statement.
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...size('300px', '250px')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${size('300px', '250px')}
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div {
							 | 
						||
| 
								 | 
							
								 *   'height': '300px',
							 | 
						||
| 
								 | 
							
								 *   'width': '250px',
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function size(height, width) {
							 | 
						||
| 
								 | 
							
								  if (width === void 0) {
							 | 
						||
| 
								 | 
							
								    width = height;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								    height: height,
							 | 
						||
| 
								 | 
							
								    width: width
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var stateMap$1 = [undefined, null, 'active', 'focus', 'hover'];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function template$1(state) {
							 | 
						||
| 
								 | 
							
								  return "input[type=\"color\"]" + state + ",\n    input[type=\"date\"]" + state + ",\n    input[type=\"datetime\"]" + state + ",\n    input[type=\"datetime-local\"]" + state + ",\n    input[type=\"email\"]" + state + ",\n    input[type=\"month\"]" + state + ",\n    input[type=\"number\"]" + state + ",\n    input[type=\"password\"]" + state + ",\n    input[type=\"search\"]" + state + ",\n    input[type=\"tel\"]" + state + ",\n    input[type=\"text\"]" + state + ",\n    input[type=\"time\"]" + state + ",\n    input[type=\"url\"]" + state + ",\n    input[type=\"week\"]" + state + ",\n    input:not([type])" + state + ",\n    textarea" + state;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Populates selectors that target all text inputs. You can pass optional states to append to the selectors.
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   [textInputs('active')]: {
							 | 
						||
| 
								 | 
							
								 *     'border': 'none'
							 | 
						||
| 
								 | 
							
								 *   }
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   > ${textInputs('active')} {
							 | 
						||
| 
								 | 
							
								 *     border: none;
							 | 
						||
| 
								 | 
							
								 *   }
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS in JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *  'input[type="color"]:active,
							 | 
						||
| 
								 | 
							
								 *  input[type="date"]:active,
							 | 
						||
| 
								 | 
							
								 *  input[type="datetime"]:active,
							 | 
						||
| 
								 | 
							
								 *  input[type="datetime-local"]:active,
							 | 
						||
| 
								 | 
							
								 *  input[type="email"]:active,
							 | 
						||
| 
								 | 
							
								 *  input[type="month"]:active,
							 | 
						||
| 
								 | 
							
								 *  input[type="number"]:active,
							 | 
						||
| 
								 | 
							
								 *  input[type="password"]:active,
							 | 
						||
| 
								 | 
							
								 *  input[type="search"]:active,
							 | 
						||
| 
								 | 
							
								 *  input[type="tel"]:active,
							 | 
						||
| 
								 | 
							
								 *  input[type="text"]:active,
							 | 
						||
| 
								 | 
							
								 *  input[type="time"]:active,
							 | 
						||
| 
								 | 
							
								 *  input[type="url"]:active,
							 | 
						||
| 
								 | 
							
								 *  input[type="week"]:active,
							 | 
						||
| 
								 | 
							
								 *  input:not([type]):active,
							 | 
						||
| 
								 | 
							
								 *  textarea:active': {
							 | 
						||
| 
								 | 
							
								 *   'border': 'none'
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function textInputs() {
							 | 
						||
| 
								 | 
							
								  for (var _len = arguments.length, states = new Array(_len), _key = 0; _key < _len; _key++) {
							 | 
						||
| 
								 | 
							
								    states[_key] = arguments[_key];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return statefulSelectors(states, template$1, stateMap$1);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Accepts any number of transition values as parameters for creating a single transition statement. You may also pass an array of properties as the first parameter that you would like to apply the same transition values to (second parameter).
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   ...transitions('opacity 1.0s ease-in 0s', 'width 2.0s ease-in 2s'),
							 | 
						||
| 
								 | 
							
								 *   ...transitions(['color', 'background-color'], '2.0s ease-in 2s')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 * const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   ${transitions('opacity 1.0s ease-in 0s', 'width 2.0s ease-in 2s')};
							 | 
						||
| 
								 | 
							
								 *   ${transitions(['color', 'background-color'], '2.0s ease-in 2s'),};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * div {
							 | 
						||
| 
								 | 
							
								 *   'transition': 'opacity 1.0s ease-in 0s, width 2.0s ease-in 2s'
							 | 
						||
| 
								 | 
							
								 *   'transition': 'color 2.0s ease-in 2s, background-color 2.0s ease-in 2s',
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function transitions() {
							 | 
						||
| 
								 | 
							
								  for (var _len = arguments.length, properties = new Array(_len), _key = 0; _key < _len; _key++) {
							 | 
						||
| 
								 | 
							
								    properties[_key] = arguments[_key];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (Array.isArray(properties[0]) && properties.length === 2) {
							 | 
						||
| 
								 | 
							
								    var value = properties[1];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (typeof value !== 'string') {
							 | 
						||
| 
								 | 
							
								      throw new PolishedError(61);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    var transitionsString = properties[0].map(function (property) {
							 | 
						||
| 
								 | 
							
								      return property + " " + value;
							 | 
						||
| 
								 | 
							
								    }).join(', ');
							 | 
						||
| 
								 | 
							
								    return {
							 | 
						||
| 
								 | 
							
								      transition: transitionsString
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    return {
							 | 
						||
| 
								 | 
							
								      transition: properties.join(', ')
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								exports.adjustHue = curriedAdjustHue;
							 | 
						||
| 
								 | 
							
								exports.animation = animation;
							 | 
						||
| 
								 | 
							
								exports.backgroundImages = backgroundImages;
							 | 
						||
| 
								 | 
							
								exports.backgrounds = backgrounds;
							 | 
						||
| 
								 | 
							
								exports.between = between;
							 | 
						||
| 
								 | 
							
								exports.border = border;
							 | 
						||
| 
								 | 
							
								exports.borderColor = borderColor;
							 | 
						||
| 
								 | 
							
								exports.borderRadius = borderRadius;
							 | 
						||
| 
								 | 
							
								exports.borderStyle = borderStyle;
							 | 
						||
| 
								 | 
							
								exports.borderWidth = borderWidth;
							 | 
						||
| 
								 | 
							
								exports.buttons = buttons;
							 | 
						||
| 
								 | 
							
								exports.clearFix = clearFix;
							 | 
						||
| 
								 | 
							
								exports.complement = complement;
							 | 
						||
| 
								 | 
							
								exports.cover = cover;
							 | 
						||
| 
								 | 
							
								exports.cssVar = cssVar;
							 | 
						||
| 
								 | 
							
								exports.darken = curriedDarken;
							 | 
						||
| 
								 | 
							
								exports.desaturate = curriedDesaturate;
							 | 
						||
| 
								 | 
							
								exports.directionalProperty = directionalProperty;
							 | 
						||
| 
								 | 
							
								exports.ellipsis = ellipsis;
							 | 
						||
| 
								 | 
							
								exports.em = em;
							 | 
						||
| 
								 | 
							
								exports.fluidRange = fluidRange;
							 | 
						||
| 
								 | 
							
								exports.fontFace = fontFace;
							 | 
						||
| 
								 | 
							
								exports.getContrast = getContrast;
							 | 
						||
| 
								 | 
							
								exports.getLuminance = getLuminance;
							 | 
						||
| 
								 | 
							
								exports.getValueAndUnit = getValueAndUnit;
							 | 
						||
| 
								 | 
							
								exports.grayscale = grayscale;
							 | 
						||
| 
								 | 
							
								exports.hiDPI = hiDPI;
							 | 
						||
| 
								 | 
							
								exports.hideText = hideText;
							 | 
						||
| 
								 | 
							
								exports.hideVisually = hideVisually;
							 | 
						||
| 
								 | 
							
								exports.hsl = hsl;
							 | 
						||
| 
								 | 
							
								exports.hslToColorString = hslToColorString;
							 | 
						||
| 
								 | 
							
								exports.hsla = hsla;
							 | 
						||
| 
								 | 
							
								exports.invert = invert;
							 | 
						||
| 
								 | 
							
								exports.lighten = curriedLighten;
							 | 
						||
| 
								 | 
							
								exports.linearGradient = linearGradient;
							 | 
						||
| 
								 | 
							
								exports.margin = margin;
							 | 
						||
| 
								 | 
							
								exports.math = math;
							 | 
						||
| 
								 | 
							
								exports.meetsContrastGuidelines = meetsContrastGuidelines;
							 | 
						||
| 
								 | 
							
								exports.mix = curriedMix;
							 | 
						||
| 
								 | 
							
								exports.modularScale = modularScale;
							 | 
						||
| 
								 | 
							
								exports.normalize = normalize;
							 | 
						||
| 
								 | 
							
								exports.opacify = curriedOpacify;
							 | 
						||
| 
								 | 
							
								exports.padding = padding;
							 | 
						||
| 
								 | 
							
								exports.parseToHsl = parseToHsl;
							 | 
						||
| 
								 | 
							
								exports.parseToRgb = parseToRgb;
							 | 
						||
| 
								 | 
							
								exports.position = position;
							 | 
						||
| 
								 | 
							
								exports.radialGradient = radialGradient;
							 | 
						||
| 
								 | 
							
								exports.readableColor = readableColor;
							 | 
						||
| 
								 | 
							
								exports.rem = rem;
							 | 
						||
| 
								 | 
							
								exports.retinaImage = retinaImage;
							 | 
						||
| 
								 | 
							
								exports.rgb = rgb;
							 | 
						||
| 
								 | 
							
								exports.rgbToColorString = rgbToColorString;
							 | 
						||
| 
								 | 
							
								exports.rgba = rgba;
							 | 
						||
| 
								 | 
							
								exports.saturate = curriedSaturate;
							 | 
						||
| 
								 | 
							
								exports.setHue = curriedSetHue;
							 | 
						||
| 
								 | 
							
								exports.setLightness = curriedSetLightness;
							 | 
						||
| 
								 | 
							
								exports.setSaturation = curriedSetSaturation;
							 | 
						||
| 
								 | 
							
								exports.shade = curriedShade;
							 | 
						||
| 
								 | 
							
								exports.size = size;
							 | 
						||
| 
								 | 
							
								exports.stripUnit = stripUnit;
							 | 
						||
| 
								 | 
							
								exports.textInputs = textInputs;
							 | 
						||
| 
								 | 
							
								exports.timingFunctions = timingFunctions;
							 | 
						||
| 
								 | 
							
								exports.tint = curriedTint;
							 | 
						||
| 
								 | 
							
								exports.toColorString = toColorString;
							 | 
						||
| 
								 | 
							
								exports.transitions = transitions;
							 | 
						||
| 
								 | 
							
								exports.transparentize = curriedTransparentize;
							 | 
						||
| 
								 | 
							
								exports.triangle = triangle;
							 | 
						||
| 
								 | 
							
								exports.wordWrap = wordWrap;
							 |