UNPKG

133 kBSource Map (JSON)View Raw
1{"version":3,"file":"aphrodite.umd.js","sources":["../node_modules/string-hash/index.js","../src/util.js","../node_modules/asap/browser-raw.js","../node_modules/asap/browser-asap.js","../src/ordered-elements.js","../node_modules/inline-style-prefixer/lib/utils/capitalizeString.js","../node_modules/inline-style-prefixer/lib/utils/prefixProperty.js","../node_modules/inline-style-prefixer/lib/utils/prefixValue.js","../node_modules/inline-style-prefixer/lib/utils/addNewValuesOnly.js","../node_modules/inline-style-prefixer/lib/utils/isObject.js","../node_modules/inline-style-prefixer/lib/createPrefixer.js","../node_modules/inline-style-prefixer/lib/plugins/backgroundClip.js","../node_modules/css-in-js-utils/lib/isPrefixedValue.js","../node_modules/inline-style-prefixer/lib/plugins/calc.js","../node_modules/inline-style-prefixer/lib/plugins/crossFade.js","../node_modules/inline-style-prefixer/lib/plugins/cursor.js","../node_modules/inline-style-prefixer/lib/plugins/filter.js","../node_modules/inline-style-prefixer/lib/plugins/flex.js","../node_modules/inline-style-prefixer/lib/plugins/flexboxIE.js","../node_modules/inline-style-prefixer/lib/plugins/flexboxOld.js","../node_modules/inline-style-prefixer/lib/plugins/gradient.js","../node_modules/inline-style-prefixer/lib/plugins/grid.js","../node_modules/inline-style-prefixer/lib/plugins/imageSet.js","../node_modules/inline-style-prefixer/lib/plugins/logical.js","../node_modules/inline-style-prefixer/lib/plugins/position.js","../node_modules/inline-style-prefixer/lib/plugins/sizing.js","../node_modules/hyphenate-style-name/index.js","../node_modules/css-in-js-utils/lib/hyphenateProperty.js","../node_modules/inline-style-prefixer/lib/plugins/transition.js","../lib/staticPrefixData.js","../src/generate.js","../src/inject.js","../src/exports.js","../src/index.js"],"sourcesContent":["\"use strict\";\n\nfunction hash(str) {\n var hash = 5381,\n i = str.length;\n\n while(i) {\n hash = (hash * 33) ^ str.charCodeAt(--i);\n }\n\n /* JavaScript does bitwise operations (like XOR, above) on 32-bit signed\n * integers. Since we want the results to be always positive, convert the\n * signed int to an unsigned by doing an unsigned bitshift. */\n return hash >>> 0;\n}\n\nmodule.exports = hash;\n","/* @flow */\nimport stringHash from 'string-hash';\n\n/* ::\ntype ObjectMap = { [id:string]: any };\n*/\n\nconst UPPERCASE_RE = /([A-Z])/g;\nconst UPPERCASE_RE_TO_KEBAB = (match /* : string */) /* : string */ => `-${match.toLowerCase()}`;\n\nexport const kebabifyStyleName = (string /* : string */) /* : string */ => {\n const result = string.replace(UPPERCASE_RE, UPPERCASE_RE_TO_KEBAB);\n if (result[0] === 'm' && result[1] === 's' && result[2] === '-') {\n return `-${result}`;\n }\n return result;\n};\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n * Taken from React's CSSProperty.js\n */\nconst isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridColumn: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true,\n};\n\n/**\n * Taken from React's CSSProperty.js\n *\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n * Taken from React's CSSProperty.js\n */\nconst prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\n// Taken from React's CSSProperty.js\nObject.keys(isUnitlessNumber).forEach(function(prop) {\n prefixes.forEach(function(prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\n\nexport const stringifyValue = (\n key /* : string */,\n prop /* : any */\n) /* : string */ => {\n if (typeof prop === \"number\") {\n if (isUnitlessNumber[key]) {\n return \"\" + prop;\n } else {\n return prop + \"px\";\n }\n } else {\n return '' + prop;\n }\n};\n\nexport const stringifyAndImportantifyValue = (\n key /* : string */,\n prop /* : any */\n) /* : string */ => importantify(stringifyValue(key, prop));\n\n// Turn a string into a hash string of base-36 values (using letters and numbers)\n// eslint-disable-next-line no-unused-vars\nexport const hashString = (string /* : string */, key /* : ?string */) /* string */ => stringHash(string).toString(36);\n\n// Hash a javascript object using JSON.stringify. This is very fast, about 3\n// microseconds on my computer for a sample object:\n// http://jsperf.com/test-hashfnv32a-hash/5\n//\n// Note that this uses JSON.stringify to stringify the objects so in order for\n// this to produce consistent hashes browsers need to have a consistent\n// ordering of objects. Ben Alpert says that Facebook depends on this, so we\n// can probably depend on this too.\nexport const hashObject = (object /* : ObjectMap */) /* : string */ => hashString(JSON.stringify(object));\n\n// Given a single style value string like the \"b\" from \"a: b;\", adds !important\n// to generate \"b !important\".\nconst importantify = (string /* : string */) /* : string */ => (\n // Bracket string character access is very fast, and in the default case we\n // normally don't expect there to be \"!important\" at the end of the string\n // so we can use this simple check to take an optimized path. If there\n // happens to be a \"!\" in this position, we follow up with a more thorough\n // check.\n (string[string.length - 10] === '!' && string.slice(-11) === ' !important')\n ? string\n : `${string} !important`\n);\n","\"use strict\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including IO, animation, reflow, and redraw\n// events in browsers.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nmodule.exports = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Equivalent to push, but avoids a function call.\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// `requestFlush` is an implementation-specific method that attempts to kick\n// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n// the event queue before yielding to the browser's own event loop.\nvar requestFlush;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory exhaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index < queue.length) {\n var currentIndex = index;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index = index + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n queue.length -= index;\n index = 0;\n }\n }\n queue.length = 0;\n index = 0;\n flushing = false;\n}\n\n// `requestFlush` is implemented using a strategy based on data collected from\n// every available SauceLabs Selenium web driver worker at time of writing.\n// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\n// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nvar scope = typeof global !== \"undefined\" ? global : self;\nvar BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver;\n\n// MutationObservers are desirable because they have high priority and work\n// reliably everywhere they are implemented.\n// They are implemented in all modern browsers.\n//\n// - Android 4-4.3\n// - Chrome 26-34\n// - Firefox 14-29\n// - Internet Explorer 11\n// - iPad Safari 6-7.1\n// - iPhone Safari 7-7.1\n// - Safari 6-7\nif (typeof BrowserMutationObserver === \"function\") {\n requestFlush = makeRequestCallFromMutationObserver(flush);\n\n// MessageChannels are desirable because they give direct access to the HTML\n// task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n// 11-12, and in web workers in many engines.\n// Although message channels yield to any queued rendering and IO tasks, they\n// would be better than imposing the 4ms delay of timers.\n// However, they do not work reliably in Internet Explorer or Safari.\n\n// Internet Explorer 10 is the only browser that has setImmediate but does\n// not have MutationObservers.\n// Although setImmediate yields to the browser's renderer, it would be\n// preferrable to falling back to setTimeout since it does not have\n// the minimum 4ms penalty.\n// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n// Desktop to a lesser extent) that renders both setImmediate and\n// MessageChannel useless for the purposes of ASAP.\n// https://github.com/kriskowal/q/issues/396\n\n// Timers are implemented universally.\n// We fall back to timers in workers in most engines, and in foreground\n// contexts in the following browsers.\n// However, note that even this simple case requires nuances to operate in a\n// broad spectrum of browsers.\n//\n// - Firefox 3-13\n// - Internet Explorer 6-9\n// - iPad Safari 4.3\n// - Lynx 2.8.7\n} else {\n requestFlush = makeRequestCallFromTimer(flush);\n}\n\n// `requestFlush` requests that the high priority event queue be flushed as\n// soon as possible.\n// This is useful to prevent an error thrown in a task from stalling the event\n// queue if the exception handled by Node.js’s\n// `process.on(\"uncaughtException\")` or by a domain.\nrawAsap.requestFlush = requestFlush;\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nfunction makeRequestCallFromMutationObserver(callback) {\n var toggle = 1;\n var observer = new BrowserMutationObserver(callback);\n var node = document.createTextNode(\"\");\n observer.observe(node, {characterData: true});\n return function requestCall() {\n toggle = -toggle;\n node.data = toggle;\n };\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\nfunction makeRequestCallFromTimer(callback) {\n return function requestCall() {\n // We dispatch a timeout with a specified delay of 0 for engines that\n // can reliably accommodate that request. This will usually be snapped\n // to a 4 milisecond delay, but once we're flushing, there's no delay\n // between events.\n var timeoutHandle = setTimeout(handleTimer, 0);\n // However, since this timer gets frequently dropped in Firefox\n // workers, we enlist an interval handle that will try to fire\n // an event 20 times per second until it succeeds.\n var intervalHandle = setInterval(handleTimer, 50);\n\n function handleTimer() {\n // Whichever timer succeeds will cancel both timers and\n // execute the callback.\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n callback();\n }\n };\n}\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// its existence.\nrawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer;\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n","\"use strict\";\n\n// rawAsap provides everything we need except exception management.\nvar rawAsap = require(\"./raw\");\n// RawTasks are recycled to reduce GC churn.\nvar freeTasks = [];\n// We queue errors to ensure they are thrown in right order (FIFO).\n// Array-as-queue is good enough here, since we are just dealing with exceptions.\nvar pendingErrors = [];\nvar requestErrorThrow = rawAsap.makeRequestCallFromTimer(throwFirstError);\n\nfunction throwFirstError() {\n if (pendingErrors.length) {\n throw pendingErrors.shift();\n }\n}\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nmodule.exports = asap;\nfunction asap(task) {\n var rawTask;\n if (freeTasks.length) {\n rawTask = freeTasks.pop();\n } else {\n rawTask = new RawTask();\n }\n rawTask.task = task;\n rawAsap(rawTask);\n}\n\n// We wrap tasks with recyclable task objects. A task object implements\n// `call`, just like a function.\nfunction RawTask() {\n this.task = null;\n}\n\n// The sole purpose of wrapping the task is to catch the exception and recycle\n// the task object after its single use.\nRawTask.prototype.call = function () {\n try {\n this.task.call();\n } catch (error) {\n if (asap.onerror) {\n // This hook exists purely for testing purposes.\n // Its name will be periodically randomized to break any code that\n // depends on its existence.\n asap.onerror(error);\n } else {\n // In a web browser, exceptions are not fatal. However, to avoid\n // slowing down the queue of pending tasks, we rethrow the error in a\n // lower priority turn.\n pendingErrors.push(error);\n requestErrorThrow();\n }\n } finally {\n this.task = null;\n freeTasks[freeTasks.length] = this;\n }\n};\n","/* @flow */\nconst MAP_EXISTS = typeof Map !== 'undefined';\n\nexport default class OrderedElements {\n /* ::\n elements: {[string]: any};\n keyOrder: string[];\n */\n\n constructor() {\n this.elements = {};\n this.keyOrder = [];\n }\n\n forEach(callback /* : (string, any) => void */) {\n for (let i = 0; i < this.keyOrder.length; i++) {\n // (value, key) to match Map's API\n callback(this.elements[this.keyOrder[i]], this.keyOrder[i]);\n }\n }\n\n set(key /* : string */, value /* : any */, shouldReorder /* : ?boolean */) {\n if (!this.elements.hasOwnProperty(key)) {\n this.keyOrder.push(key);\n } else if (shouldReorder) {\n const index = this.keyOrder.indexOf(key);\n this.keyOrder.splice(index, 1);\n this.keyOrder.push(key);\n }\n\n if (value == null) {\n this.elements[key] = value;\n return;\n }\n\n if ((MAP_EXISTS && value instanceof Map) || value instanceof OrderedElements) {\n // We have found a nested Map, so we need to recurse so that all\n // of the nested objects and Maps are merged properly.\n const nested = this.elements.hasOwnProperty(key)\n ? this.elements[key]\n : new OrderedElements();\n value.forEach((value, key) => {\n nested.set(key, value, shouldReorder);\n });\n this.elements[key] = nested;\n return;\n }\n\n if (!Array.isArray(value) && typeof value === 'object') {\n // We have found a nested object, so we need to recurse so that all\n // of the nested objects and Maps are merged properly.\n const nested = this.elements.hasOwnProperty(key)\n ? this.elements[key]\n : new OrderedElements();\n const keys = Object.keys(value);\n for (let i = 0; i < keys.length; i += 1) {\n nested.set(keys[i], value[keys[i]], shouldReorder);\n }\n this.elements[key] = nested;\n return;\n }\n\n this.elements[key] = value;\n }\n\n get(key /* : string */) /* : any */ {\n return this.elements[key];\n }\n\n has(key /* : string */) /* : boolean */ {\n return this.elements.hasOwnProperty(key);\n }\n\n addStyleType(styleType /* : any */) /* : void */ {\n if ((MAP_EXISTS && styleType instanceof Map) || styleType instanceof OrderedElements) {\n styleType.forEach((value, key) => {\n this.set(key, value, true);\n });\n } else {\n const keys = Object.keys(styleType);\n for (let i = 0; i < keys.length; i++) {\n this.set(keys[i], styleType[keys[i]], true);\n }\n }\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = capitalizeString;\nfunction capitalizeString(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = prefixProperty;\n\nvar _capitalizeString = require('./capitalizeString');\n\nvar _capitalizeString2 = _interopRequireDefault(_capitalizeString);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction prefixProperty(prefixProperties, property, style) {\n if (prefixProperties.hasOwnProperty(property)) {\n var newStyle = {};\n var requiredPrefixes = prefixProperties[property];\n var capitalizedProperty = (0, _capitalizeString2.default)(property);\n var keys = Object.keys(style);\n for (var i = 0; i < keys.length; i++) {\n var styleProperty = keys[i];\n if (styleProperty === property) {\n for (var j = 0; j < requiredPrefixes.length; j++) {\n newStyle[requiredPrefixes[j] + capitalizedProperty] = style[property];\n }\n }\n newStyle[styleProperty] = style[styleProperty];\n }\n return newStyle;\n }\n return style;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = prefixValue;\nfunction prefixValue(plugins, property, value, style, metaData) {\n for (var i = 0, len = plugins.length; i < len; ++i) {\n var processedValue = plugins[i](property, value, style, metaData);\n\n // we can stop processing if a value is returned\n // as all plugin criteria are unique\n if (processedValue) {\n return processedValue;\n }\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = addNewValuesOnly;\nfunction addIfNew(list, value) {\n if (list.indexOf(value) === -1) {\n list.push(value);\n }\n}\n\nfunction addNewValuesOnly(list, values) {\n if (Array.isArray(values)) {\n for (var i = 0, len = values.length; i < len; ++i) {\n addIfNew(list, values[i]);\n }\n } else {\n addIfNew(list, values);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isObject;\nfunction isObject(value) {\n return value instanceof Object && !Array.isArray(value);\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createPrefixer;\n\nvar _prefixProperty = require('./utils/prefixProperty');\n\nvar _prefixProperty2 = _interopRequireDefault(_prefixProperty);\n\nvar _prefixValue = require('./utils/prefixValue');\n\nvar _prefixValue2 = _interopRequireDefault(_prefixValue);\n\nvar _addNewValuesOnly = require('./utils/addNewValuesOnly');\n\nvar _addNewValuesOnly2 = _interopRequireDefault(_addNewValuesOnly);\n\nvar _isObject = require('./utils/isObject');\n\nvar _isObject2 = _interopRequireDefault(_isObject);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createPrefixer(_ref) {\n var prefixMap = _ref.prefixMap,\n plugins = _ref.plugins;\n\n return function prefix(style) {\n for (var property in style) {\n var value = style[property];\n\n // handle nested objects\n if ((0, _isObject2.default)(value)) {\n style[property] = prefix(value);\n // handle array values\n } else if (Array.isArray(value)) {\n var combinedValue = [];\n\n for (var i = 0, len = value.length; i < len; ++i) {\n var processedValue = (0, _prefixValue2.default)(plugins, property, value[i], style, prefixMap);\n (0, _addNewValuesOnly2.default)(combinedValue, processedValue || value[i]);\n }\n\n // only modify the value if it was touched\n // by any plugin to prevent unnecessary mutations\n if (combinedValue.length > 0) {\n style[property] = combinedValue;\n }\n } else {\n var _processedValue = (0, _prefixValue2.default)(plugins, property, value, style, prefixMap);\n\n // only modify the value if it was touched\n // by any plugin to prevent unnecessary mutations\n if (_processedValue) {\n style[property] = _processedValue;\n }\n\n style = (0, _prefixProperty2.default)(prefixMap, property, style);\n }\n }\n\n return style;\n };\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = backgroundClip;\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip#Browser_compatibility\nfunction backgroundClip(property, value) {\n if (typeof value === 'string' && value === 'text') {\n return ['-webkit-text', 'text'];\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isPrefixedValue;\nvar regex = /-webkit-|-moz-|-ms-/;\n\nfunction isPrefixedValue(value) {\n return typeof value === 'string' && regex.test(value);\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = calc;\n\nvar _isPrefixedValue = require('css-in-js-utils/lib/isPrefixedValue');\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar prefixes = ['-webkit-', '-moz-', ''];\nfunction calc(property, value) {\n if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && value.indexOf('calc(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/calc\\(/g, prefix + 'calc(');\n });\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = crossFade;\n\nvar _isPrefixedValue = require('css-in-js-utils/lib/isPrefixedValue');\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// http://caniuse.com/#search=cross-fade\nvar prefixes = ['-webkit-', ''];\nfunction crossFade(property, value) {\n if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && value.indexOf('cross-fade(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/cross-fade\\(/g, prefix + 'cross-fade(');\n });\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = cursor;\nvar prefixes = ['-webkit-', '-moz-', ''];\n\nvar values = {\n 'zoom-in': true,\n 'zoom-out': true,\n grab: true,\n grabbing: true\n};\n\nfunction cursor(property, value) {\n if (property === 'cursor' && values.hasOwnProperty(value)) {\n return prefixes.map(function (prefix) {\n return prefix + value;\n });\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = filter;\n\nvar _isPrefixedValue = require('css-in-js-utils/lib/isPrefixedValue');\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// http://caniuse.com/#feat=css-filter-function\nvar prefixes = ['-webkit-', ''];\nfunction filter(property, value) {\n if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && value.indexOf('filter(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/filter\\(/g, prefix + 'filter(');\n });\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = flex;\nvar values = {\n flex: ['-webkit-box', '-moz-box', '-ms-flexbox', '-webkit-flex', 'flex'],\n 'inline-flex': ['-webkit-inline-box', '-moz-inline-box', '-ms-inline-flexbox', '-webkit-inline-flex', 'inline-flex']\n};\n\nfunction flex(property, value) {\n if (property === 'display' && values.hasOwnProperty(value)) {\n return values[value];\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = flexboxIE;\nvar alternativeValues = {\n 'space-around': 'distribute',\n 'space-between': 'justify',\n 'flex-start': 'start',\n 'flex-end': 'end'\n};\nvar alternativeProps = {\n alignContent: 'msFlexLinePack',\n alignSelf: 'msFlexItemAlign',\n alignItems: 'msFlexAlign',\n justifyContent: 'msFlexPack',\n order: 'msFlexOrder',\n flexGrow: 'msFlexPositive',\n flexShrink: 'msFlexNegative',\n flexBasis: 'msFlexPreferredSize'\n // Full expanded syntax is flex-grow | flex-shrink | flex-basis.\n};var flexShorthandMappings = {\n auto: '1 1 auto',\n inherit: 'inherit',\n initial: '0 1 auto',\n none: '0 0 auto',\n unset: 'unset'\n};\nvar isUnitlessNumber = /^\\d+(\\.\\d+)?$/;\n\nfunction flexboxIE(property, value, style) {\n if (Object.prototype.hasOwnProperty.call(alternativeProps, property)) {\n style[alternativeProps[property]] = alternativeValues[value] || value;\n }\n if (property === 'flex') {\n // For certain values we can do straight mappings based on the spec\n // for the expansions.\n if (Object.prototype.hasOwnProperty.call(flexShorthandMappings, value)) {\n style.msFlex = flexShorthandMappings[value];\n return;\n }\n // Here we have no direct mapping, so we favor looking for a\n // unitless positive number as that will be the most common use-case.\n if (isUnitlessNumber.test(value)) {\n style.msFlex = value + ' 1 0%';\n return;\n }\n\n // The next thing we can look for is if there are multiple values.\n var flexValues = value.split(/\\s/);\n // If we only have a single value that wasn't a positive unitless\n // or a pre-mapped value, then we can assume it is a unit value.\n switch (flexValues.length) {\n case 1:\n style.msFlex = '1 1 ' + value;\n return;\n case 2:\n // If we have 2 units, then we expect that the first will\n // always be a unitless number and represents flex-grow.\n // The second unit will represent flex-shrink for a unitless\n // value, or flex-basis otherwise.\n if (isUnitlessNumber.test(flexValues[1])) {\n style.msFlex = flexValues[0] + ' ' + flexValues[1] + ' 0%';\n } else {\n style.msFlex = flexValues[0] + ' 1 ' + flexValues[1];\n }\n return;\n default:\n style.msFlex = value;\n }\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = flexboxOld;\nvar alternativeValues = {\n 'space-around': 'justify',\n 'space-between': 'justify',\n 'flex-start': 'start',\n 'flex-end': 'end',\n 'wrap-reverse': 'multiple',\n wrap: 'multiple'\n};\n\nvar alternativeProps = {\n alignItems: 'WebkitBoxAlign',\n justifyContent: 'WebkitBoxPack',\n flexWrap: 'WebkitBoxLines',\n flexGrow: 'WebkitBoxFlex'\n};\n\nfunction flexboxOld(property, value, style) {\n if (property === 'flexDirection' && typeof value === 'string') {\n if (value.indexOf('column') > -1) {\n style.WebkitBoxOrient = 'vertical';\n } else {\n style.WebkitBoxOrient = 'horizontal';\n }\n if (value.indexOf('reverse') > -1) {\n style.WebkitBoxDirection = 'reverse';\n } else {\n style.WebkitBoxDirection = 'normal';\n }\n }\n if (alternativeProps.hasOwnProperty(property)) {\n style[alternativeProps[property]] = alternativeValues[value] || value;\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = gradient;\n\nvar _isPrefixedValue = require('css-in-js-utils/lib/isPrefixedValue');\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar prefixes = ['-webkit-', '-moz-', ''];\n\nvar values = /linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient/gi;\n\nfunction gradient(property, value) {\n if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && values.test(value)) {\n return prefixes.map(function (prefix) {\n return value.replace(values, function (grad) {\n return prefix + grad;\n });\n });\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nexports.default = grid;\nfunction isSimplePositionValue(value) {\n return typeof value === 'number' && !isNaN(value);\n}\n\nvar alignmentValues = ['center', 'end', 'start', 'stretch'];\n\nvar displayValues = {\n 'inline-grid': ['-ms-inline-grid', 'inline-grid'],\n grid: ['-ms-grid', 'grid']\n};\n\nvar propertyConverters = {\n alignSelf: function alignSelf(value, style) {\n if (alignmentValues.indexOf(value) > -1) {\n style.msGridRowAlign = value;\n }\n },\n\n gridColumn: function gridColumn(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridColumn = value;\n } else {\n var _value$split$map = value.split('/').map(function (position) {\n return +position;\n }),\n _value$split$map2 = _slicedToArray(_value$split$map, 2),\n start = _value$split$map2[0],\n end = _value$split$map2[1];\n\n propertyConverters.gridColumnStart(start, style);\n propertyConverters.gridColumnEnd(end, style);\n }\n },\n\n gridColumnEnd: function gridColumnEnd(value, style) {\n var msGridColumn = style.msGridColumn;\n\n if (isSimplePositionValue(value) && isSimplePositionValue(msGridColumn)) {\n style.msGridColumnSpan = value - msGridColumn;\n }\n },\n\n gridColumnStart: function gridColumnStart(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridColumn = value;\n }\n },\n\n gridRow: function gridRow(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridRow = value;\n } else {\n var _value$split$map3 = value.split('/').map(function (position) {\n return +position;\n }),\n _value$split$map4 = _slicedToArray(_value$split$map3, 2),\n start = _value$split$map4[0],\n end = _value$split$map4[1];\n\n propertyConverters.gridRowStart(start, style);\n propertyConverters.gridRowEnd(end, style);\n }\n },\n\n gridRowEnd: function gridRowEnd(value, style) {\n var msGridRow = style.msGridRow;\n\n if (isSimplePositionValue(value) && isSimplePositionValue(msGridRow)) {\n style.msGridRowSpan = value - msGridRow;\n }\n },\n\n gridRowStart: function gridRowStart(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridRow = value;\n }\n },\n\n gridTemplateColumns: function gridTemplateColumns(value, style) {\n style.msGridColumns = value;\n },\n\n gridTemplateRows: function gridTemplateRows(value, style) {\n style.msGridRows = value;\n },\n\n justifySelf: function justifySelf(value, style) {\n if (alignmentValues.indexOf(value) > -1) {\n style.msGridColumnAlign = value;\n }\n }\n};\n\nfunction grid(property, value, style) {\n if (property === 'display' && value in displayValues) {\n return displayValues[value];\n }\n\n if (property in propertyConverters) {\n var propertyConverter = propertyConverters[property];\n propertyConverter(value, style);\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = imageSet;\n\nvar _isPrefixedValue = require('css-in-js-utils/lib/isPrefixedValue');\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// http://caniuse.com/#feat=css-image-set\nvar prefixes = ['-webkit-', ''];\nfunction imageSet(property, value) {\n if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && value.indexOf('image-set(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/image-set\\(/g, prefix + 'image-set(');\n });\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = logical;\nvar alternativeProps = {\n marginBlockStart: ['WebkitMarginBefore'],\n marginBlockEnd: ['WebkitMarginAfter'],\n marginInlineStart: ['WebkitMarginStart', 'MozMarginStart'],\n marginInlineEnd: ['WebkitMarginEnd', 'MozMarginEnd'],\n paddingBlockStart: ['WebkitPaddingBefore'],\n paddingBlockEnd: ['WebkitPaddingAfter'],\n paddingInlineStart: ['WebkitPaddingStart', 'MozPaddingStart'],\n paddingInlineEnd: ['WebkitPaddingEnd', 'MozPaddingEnd'],\n borderBlockStart: ['WebkitBorderBefore'],\n borderBlockStartColor: ['WebkitBorderBeforeColor'],\n borderBlockStartStyle: ['WebkitBorderBeforeStyle'],\n borderBlockStartWidth: ['WebkitBorderBeforeWidth'],\n borderBlockEnd: ['WebkitBorderAfter'],\n borderBlockEndColor: ['WebkitBorderAfterColor'],\n borderBlockEndStyle: ['WebkitBorderAfterStyle'],\n borderBlockEndWidth: ['WebkitBorderAfterWidth'],\n borderInlineStart: ['WebkitBorderStart', 'MozBorderStart'],\n borderInlineStartColor: ['WebkitBorderStartColor', 'MozBorderStartColor'],\n borderInlineStartStyle: ['WebkitBorderStartStyle', 'MozBorderStartStyle'],\n borderInlineStartWidth: ['WebkitBorderStartWidth', 'MozBorderStartWidth'],\n borderInlineEnd: ['WebkitBorderEnd', 'MozBorderEnd'],\n borderInlineEndColor: ['WebkitBorderEndColor', 'MozBorderEndColor'],\n borderInlineEndStyle: ['WebkitBorderEndStyle', 'MozBorderEndStyle'],\n borderInlineEndWidth: ['WebkitBorderEndWidth', 'MozBorderEndWidth']\n};\n\nfunction logical(property, value, style) {\n if (Object.prototype.hasOwnProperty.call(alternativeProps, property)) {\n var alternativePropList = alternativeProps[property];\n for (var i = 0, len = alternativePropList.length; i < len; ++i) {\n style[alternativePropList[i]] = value;\n }\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = position;\nfunction position(property, value) {\n if (property === 'position' && value === 'sticky') {\n return ['-webkit-sticky', 'sticky'];\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = sizing;\nvar prefixes = ['-webkit-', '-moz-', ''];\n\nvar properties = {\n maxHeight: true,\n maxWidth: true,\n width: true,\n height: true,\n columnWidth: true,\n minWidth: true,\n minHeight: true\n};\nvar values = {\n 'min-content': true,\n 'max-content': true,\n 'fill-available': true,\n 'fit-content': true,\n 'contain-floats': true\n};\n\nfunction sizing(property, value) {\n if (properties.hasOwnProperty(property) && values.hasOwnProperty(value)) {\n return prefixes.map(function (prefix) {\n return prefix + value;\n });\n }\n}","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\nexport default hyphenateStyleName\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = hyphenateProperty;\n\nvar _hyphenateStyleName = require('hyphenate-style-name');\n\nvar _hyphenateStyleName2 = _interopRequireDefault(_hyphenateStyleName);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction hyphenateProperty(property) {\n return (0, _hyphenateStyleName2.default)(property);\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = transition;\n\nvar _hyphenateProperty = require('css-in-js-utils/lib/hyphenateProperty');\n\nvar _hyphenateProperty2 = _interopRequireDefault(_hyphenateProperty);\n\nvar _isPrefixedValue = require('css-in-js-utils/lib/isPrefixedValue');\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nvar _capitalizeString = require('../utils/capitalizeString');\n\nvar _capitalizeString2 = _interopRequireDefault(_capitalizeString);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar properties = {\n transition: true,\n transitionProperty: true,\n WebkitTransition: true,\n WebkitTransitionProperty: true,\n MozTransition: true,\n MozTransitionProperty: true\n};\n\n\nvar prefixMapping = {\n Webkit: '-webkit-',\n Moz: '-moz-',\n ms: '-ms-'\n};\n\nfunction prefixValue(value, propertyPrefixMap) {\n if ((0, _isPrefixedValue2.default)(value)) {\n return value;\n }\n\n // only split multi values, not cubic beziers\n var multipleValues = value.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g);\n\n for (var i = 0, len = multipleValues.length; i < len; ++i) {\n var singleValue = multipleValues[i];\n var values = [singleValue];\n for (var property in propertyPrefixMap) {\n var dashCaseProperty = (0, _hyphenateProperty2.default)(property);\n\n if (singleValue.indexOf(dashCaseProperty) > -1 && dashCaseProperty !== 'order') {\n var prefixes = propertyPrefixMap[property];\n for (var j = 0, pLen = prefixes.length; j < pLen; ++j) {\n // join all prefixes and create a new value\n values.unshift(singleValue.replace(dashCaseProperty, prefixMapping[prefixes[j]] + dashCaseProperty));\n }\n }\n }\n\n multipleValues[i] = values.join(',');\n }\n\n return multipleValues.join(',');\n}\n\nfunction transition(property, value, style, propertyPrefixMap) {\n // also check for already prefixed transitions\n if (typeof value === 'string' && properties.hasOwnProperty(property)) {\n var outputValue = prefixValue(value, propertyPrefixMap);\n // if the property is already prefixed\n var webkitOutput = outputValue.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g).filter(function (val) {\n return !/-moz-|-ms-/.test(val);\n }).join(',');\n\n if (property.indexOf('Webkit') > -1) {\n return webkitOutput;\n }\n\n var mozOutput = outputValue.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g).filter(function (val) {\n return !/-webkit-|-ms-/.test(val);\n }).join(',');\n\n if (property.indexOf('Moz') > -1) {\n return mozOutput;\n }\n\n style['Webkit' + (0, _capitalizeString2.default)(property)] = webkitOutput;\n style['Moz' + (0, _capitalizeString2.default)(property)] = mozOutput;\n return outputValue;\n }\n}","import backgroundClip from 'inline-style-prefixer/lib/plugins/backgroundClip'\nimport calc from 'inline-style-prefixer/lib/plugins/calc'\nimport crossFade from 'inline-style-prefixer/lib/plugins/crossFade'\nimport cursor from 'inline-style-prefixer/lib/plugins/cursor'\nimport filter from 'inline-style-prefixer/lib/plugins/filter'\nimport flex from 'inline-style-prefixer/lib/plugins/flex'\nimport flexboxIE from 'inline-style-prefixer/lib/plugins/flexboxIE'\nimport flexboxOld from 'inline-style-prefixer/lib/plugins/flexboxOld'\nimport gradient from 'inline-style-prefixer/lib/plugins/gradient'\nimport grid from 'inline-style-prefixer/lib/plugins/grid'\nimport imageSet from 'inline-style-prefixer/lib/plugins/imageSet'\nimport logical from 'inline-style-prefixer/lib/plugins/logical'\nimport position from 'inline-style-prefixer/lib/plugins/position'\nimport sizing from 'inline-style-prefixer/lib/plugins/sizing'\nimport transition from 'inline-style-prefixer/lib/plugins/transition'\nvar w = [\"Webkit\"];\nvar m = [\"Moz\"];\nvar ms = [\"ms\"];\nvar wm = [\"Webkit\",\"Moz\"];\nvar wms = [\"Webkit\",\"ms\"];\nvar wmms = [\"Webkit\",\"Moz\",\"ms\"];\n\nexport default {\n plugins: [backgroundClip,calc,crossFade,cursor,filter,flex,flexboxIE,flexboxOld,gradient,grid,imageSet,logical,position,sizing,transition],\n prefixMap: {\"transform\":wms,\"transformOrigin\":wms,\"transformOriginX\":wms,\"transformOriginY\":wms,\"backfaceVisibility\":w,\"perspective\":w,\"perspectiveOrigin\":w,\"transformStyle\":w,\"transformOriginZ\":w,\"animation\":w,\"animationDelay\":w,\"animationDirection\":w,\"animationFillMode\":w,\"animationDuration\":w,\"animationIterationCount\":w,\"animationName\":w,\"animationPlayState\":w,\"animationTimingFunction\":w,\"appearance\":wm,\"userSelect\":wmms,\"fontKerning\":w,\"textEmphasisPosition\":w,\"textEmphasis\":w,\"textEmphasisStyle\":w,\"textEmphasisColor\":w,\"boxDecorationBreak\":w,\"clipPath\":w,\"maskImage\":w,\"maskMode\":w,\"maskRepeat\":w,\"maskPosition\":w,\"maskClip\":w,\"maskOrigin\":w,\"maskSize\":w,\"maskComposite\":w,\"mask\":w,\"maskBorderSource\":w,\"maskBorderMode\":w,\"maskBorderSlice\":w,\"maskBorderWidth\":w,\"maskBorderOutset\":w,\"maskBorderRepeat\":w,\"maskBorder\":w,\"maskType\":w,\"textDecorationStyle\":wm,\"textDecorationSkip\":wm,\"textDecorationLine\":wm,\"textDecorationColor\":wm,\"filter\":w,\"fontFeatureSettings\":wm,\"breakAfter\":wmms,\"breakBefore\":wmms,\"breakInside\":wmms,\"columnCount\":wm,\"columnFill\":wm,\"columnGap\":wm,\"columnRule\":wm,\"columnRuleColor\":wm,\"columnRuleStyle\":wm,\"columnRuleWidth\":wm,\"columns\":wm,\"columnSpan\":wm,\"columnWidth\":wm,\"writingMode\":wms,\"flex\":wms,\"flexBasis\":w,\"flexDirection\":wms,\"flexGrow\":w,\"flexFlow\":wms,\"flexShrink\":w,\"flexWrap\":wms,\"alignContent\":w,\"alignItems\":w,\"alignSelf\":w,\"justifyContent\":w,\"order\":w,\"transitionDelay\":w,\"transitionDuration\":w,\"transitionProperty\":w,\"transitionTimingFunction\":w,\"backdropFilter\":w,\"scrollSnapType\":wms,\"scrollSnapPointsX\":wms,\"scrollSnapPointsY\":wms,\"scrollSnapDestination\":wms,\"scrollSnapCoordinate\":wms,\"shapeImageThreshold\":w,\"shapeImageMargin\":w,\"shapeImageOutside\":w,\"hyphens\":wmms,\"flowInto\":wms,\"flowFrom\":wms,\"regionFragment\":wms,\"textOrientation\":w,\"boxSizing\":m,\"textAlignLast\":m,\"tabSize\":m,\"wrapFlow\":ms,\"wrapThrough\":ms,\"wrapMargin\":ms,\"touchAction\":ms,\"textSizeAdjust\":wms,\"borderImage\":w,\"borderImageOutset\":w,\"borderImageRepeat\":w,\"borderImageSlice\":w,\"borderImageSource\":w,\"borderImageWidth\":w}\n}","/* @flow */\nimport createPrefixer from 'inline-style-prefixer/lib/createPrefixer';\nimport staticData from '../lib/staticPrefixData';\n\nimport OrderedElements from './ordered-elements';\nimport {\n kebabifyStyleName,\n stringifyValue,\n stringifyAndImportantifyValue\n} from './util';\n\nconst prefixAll = createPrefixer(staticData);\n\n/* ::\nimport type { SheetDefinition } from './index.js';\ntype StringHandlers = { [id:string]: Function };\ntype SelectorCallback = (selector: string) => string[];\nexport type SelectorHandler = (\n selector: string,\n baseSelector: string,\n callback: SelectorCallback\n) => string[] | string | null;\n*/\n\n/**\n * `selectorHandlers` are functions which handle special selectors which act\n * differently than normal style definitions. These functions look at the\n * current selector and can generate CSS for the styles in their subtree by\n * calling the callback with a new selector.\n *\n * For example, when generating styles with a base selector of '.foo' and the\n * following styles object:\n *\n * {\n * ':nth-child(2n)': {\n * ':hover': {\n * color: 'red'\n * }\n * }\n * }\n *\n * when we reach the ':hover' style, we would call our selector handlers like\n *\n * handler(':hover', '.foo:nth-child(2n)', callback)\n *\n * Since our `pseudoSelectors` handles ':hover' styles, that handler would call\n * the callback like\n *\n * callback('.foo:nth-child(2n):hover')\n *\n * to generate its subtree `{ color: 'red' }` styles with a\n * '.foo:nth-child(2n):hover' selector. The callback would return an array of CSS\n * rules like\n *\n * ['.foo:nth-child(2n):hover{color:red !important;}']\n *\n * and the handler would then return that resulting CSS.\n *\n * `defaultSelectorHandlers` is the list of default handlers used in a call to\n * `generateCSS`.\n *\n * @name SelectorHandler\n * @function\n * @param {string} selector: The currently inspected selector. ':hover' in the\n * example above.\n * @param {string} baseSelector: The selector of the parent styles.\n * '.foo:nth-child(2n)' in the example above.\n * @param {function} generateSubtreeStyles: A function which can be called to\n * generate CSS for the subtree of styles corresponding to the selector.\n * Accepts a new baseSelector to use for generating those styles.\n * @returns {string[] | string | null} The generated CSS for this selector, or\n * null if we don't handle this selector.\n */\nexport const defaultSelectorHandlers /* : SelectorHandler[] */ = [\n // Handle pseudo-selectors, like :hover and :nth-child(3n)\n function pseudoSelectors(selector, baseSelector, generateSubtreeStyles) {\n if (selector[0] !== \":\") {\n return null;\n }\n return generateSubtreeStyles(baseSelector + selector);\n },\n\n // Handle media queries (or font-faces)\n function mediaQueries(selector, baseSelector, generateSubtreeStyles) {\n if (selector[0] !== \"@\") {\n return null;\n }\n // Generate the styles normally, and then wrap them in the media query.\n const generated = generateSubtreeStyles(baseSelector);\n return [`${selector}{${generated.join('')}}`];\n },\n];\n\n/**\n * Generate CSS for a selector and some styles.\n *\n * This function handles the media queries and pseudo selectors that can be used\n * in aphrodite styles.\n *\n * @param {string} selector: A base CSS selector for the styles to be generated\n * with.\n * @param {Object} styleTypes: A list of properties of the return type of\n * StyleSheet.create, e.g. [styles.red, styles.blue].\n * @param {Array.<SelectorHandler>} selectorHandlers: A list of selector\n * handlers to use for handling special selectors. See\n * `defaultSelectorHandlers`.\n * @param stringHandlers: See `generateCSSRuleset`\n * @param useImportant: See `generateCSSRuleset`\n *\n * To actually generate the CSS special-construct-less styles are passed to\n * `generateCSSRuleset`.\n *\n * For instance, a call to\n *\n * generateCSS(\".foo\", [{\n * color: \"red\",\n * \"@media screen\": {\n * height: 20,\n * \":hover\": {\n * backgroundColor: \"black\"\n * }\n * },\n * \":active\": {\n * fontWeight: \"bold\"\n * }\n * }], defaultSelectorHandlers);\n *\n * with the default `selectorHandlers` will make 5 calls to\n * `generateCSSRuleset`:\n *\n * generateCSSRuleset(\".foo\", { color: \"red\" }, ...)\n * generateCSSRuleset(\".foo:active\", { fontWeight: \"bold\" }, ...)\n * // These 2 will be wrapped in @media screen {}\n * generateCSSRuleset(\".foo\", { height: 20 }, ...)\n * generateCSSRuleset(\".foo:hover\", { backgroundColor: \"black\" }, ...)\n */\nexport const generateCSS = (\n selector /* : string */,\n styleTypes /* : SheetDefinition[] */,\n selectorHandlers /* : SelectorHandler[] */,\n stringHandlers /* : StringHandlers */,\n useImportant /* : boolean */\n) /* : string[] */ => {\n const merged = new OrderedElements();\n\n for (let i = 0; i < styleTypes.length; i++) {\n merged.addStyleType(styleTypes[i]);\n }\n\n const plainDeclarations = new OrderedElements();\n const generatedStyles = [];\n\n // TODO(emily): benchmark this to see if a plain for loop would be faster.\n merged.forEach((val, key) => {\n // For each key, see if one of the selector handlers will handle these\n // styles.\n const foundHandler = selectorHandlers.some(handler => {\n const result = handler(key, selector, (newSelector) => {\n return generateCSS(\n newSelector, [val], selectorHandlers,\n stringHandlers, useImportant);\n });\n if (result != null) {\n // If the handler returned something, add it to the generated\n // CSS and stop looking for another handler.\n if (Array.isArray(result)) {\n generatedStyles.push(...result);\n } else {\n // eslint-disable-next-line\n console.warn(\n 'WARNING: Selector handlers should return an array of rules.' +\n 'Returning a string containing multiple rules is deprecated.',\n handler,\n );\n generatedStyles.push(`@media all {${result}}`);\n }\n return true;\n }\n });\n // If none of the handlers handled it, add it to the list of plain\n // style declarations.\n if (!foundHandler) {\n plainDeclarations.set(key, val, true);\n }\n });\n const generatedRuleset = generateCSSRuleset(\n selector,\n plainDeclarations,\n stringHandlers,\n useImportant,\n selectorHandlers,\n );\n\n\n if (generatedRuleset) {\n generatedStyles.unshift(generatedRuleset);\n }\n\n return generatedStyles;\n};\n\n/**\n * Helper method of generateCSSRuleset to facilitate custom handling of certain\n * CSS properties. Used for e.g. font families.\n *\n * See generateCSSRuleset for usage and documentation of paramater types.\n */\nconst runStringHandlers = (\n declarations /* : OrderedElements */,\n stringHandlers /* : StringHandlers */,\n selectorHandlers /* : SelectorHandler[] */\n) /* : void */ => {\n if (!stringHandlers) {\n return;\n }\n\n const stringHandlerKeys = Object.keys(stringHandlers);\n for (let i = 0; i < stringHandlerKeys.length; i++) {\n const key = stringHandlerKeys[i];\n if (declarations.has(key)) {\n // A declaration exists for this particular string handler, so we\n // need to let the string handler interpret the declaration first\n // before proceeding.\n //\n // TODO(emily): Pass in a callback which generates CSS, similar to\n // how our selector handlers work, instead of passing in\n // `selectorHandlers` and have them make calls to `generateCSS`\n // themselves. Right now, this is impractical because our string\n // handlers are very specialized and do complex things.\n declarations.set(\n key,\n stringHandlers[key](declarations.get(key), selectorHandlers),\n\n // Preserve order here, since we are really replacing an\n // unprocessed style with a processed style, not overriding an\n // earlier style\n false\n );\n }\n }\n};\n\n\nconst transformRule = (\n key /* : string */,\n value /* : string */,\n transformValue /* : function */\n) /* : string */ => (\n `${kebabifyStyleName(key)}:${transformValue(key, value)};`\n);\n\n\nconst arrayToObjectKeysReducer = (acc, val) => {\n acc[val] = true;\n return acc;\n};\n\n/**\n * Generate a CSS ruleset with the selector and containing the declarations.\n *\n * This function assumes that the given declarations don't contain any special\n * children (such as media queries, pseudo-selectors, or descendant styles).\n *\n * Note that this method does not deal with nesting used for e.g.\n * psuedo-selectors or media queries. That responsibility is left to the\n * `generateCSS` function.\n *\n * @param {string} selector: the selector associated with the ruleset\n * @param {Object} declarations: a map from camelCased CSS property name to CSS\n * property value.\n * @param {Object.<string, function>} stringHandlers: a map from camelCased CSS\n * property name to a function which will map the given value to the value\n * that is output.\n * @param {bool} useImportant: A boolean saying whether to append \"!important\"\n * to each of the CSS declarations.\n * @returns {string} A string of raw CSS.\n *\n * Examples:\n *\n * generateCSSRuleset(\".blah\", { color: \"red\" })\n * -> \".blah{color: red !important;}\"\n * generateCSSRuleset(\".blah\", { color: \"red\" }, {}, false)\n * -> \".blah{color: red}\"\n * generateCSSRuleset(\".blah\", { color: \"red\" }, {color: c => c.toUpperCase})\n * -> \".blah{color: RED}\"\n * generateCSSRuleset(\".blah:hover\", { color: \"red\" })\n * -> \".blah:hover{color: red}\"\n */\nexport const generateCSSRuleset = (\n selector /* : string */,\n declarations /* : OrderedElements */,\n stringHandlers /* : StringHandlers */,\n useImportant /* : boolean */,\n selectorHandlers /* : SelectorHandler[] */\n) /* : string */ => {\n // Mutates declarations\n runStringHandlers(declarations, stringHandlers, selectorHandlers);\n\n const originalElements = Object.keys(declarations.elements)\n .reduce(arrayToObjectKeysReducer, Object.create(null));\n\n // NOTE(emily): This mutates handledDeclarations.elements.\n const prefixedElements = prefixAll(declarations.elements);\n\n const elementNames = Object.keys(prefixedElements);\n if (elementNames.length !== declarations.keyOrder.length) {\n // There are some prefixed values, so we need to figure out how to sort\n // them.\n //\n // Loop through prefixedElements, looking for anything that is not in\n // sortOrder, which means it was added by prefixAll. This means that we\n // need to figure out where it should appear in the sortOrder.\n for (let i = 0; i < elementNames.length; i++) {\n if (!originalElements[elementNames[i]]) {\n // This element is not in the sortOrder, which means it is a prefixed\n // value that was added by prefixAll. Let's try to figure out where it\n // goes.\n let originalStyle;\n if (elementNames[i][0] === 'W') {\n // This is a Webkit-prefixed style, like \"WebkitTransition\". Let's\n // find its original style's sort order.\n originalStyle = elementNames[i][6].toLowerCase() + elementNames[i].slice(7);\n } else if (elementNames[i][1] === 'o') {\n // This is a Moz-prefixed style, like \"MozTransition\". We check\n // the second character to avoid colliding with Ms-prefixed\n // styles. Let's find its original style's sort order.\n originalStyle = elementNames[i][3].toLowerCase() + elementNames[i].slice(4);\n } else { // if (elementNames[i][1] === 's') {\n // This is a Ms-prefixed style, like \"MsTransition\".\n originalStyle = elementNames[i][2].toLowerCase() + elementNames[i].slice(3);\n }\n\n if (originalStyle && originalElements[originalStyle]) {\n const originalIndex = declarations.keyOrder.indexOf(originalStyle);\n declarations.keyOrder.splice(originalIndex, 0, elementNames[i]);\n } else {\n // We don't know what the original style was, so sort it to\n // top. This can happen for styles that are added that don't\n // have the same base name as the original style.\n declarations.keyOrder.unshift(elementNames[i]);\n }\n }\n }\n }\n\n const transformValue = (useImportant === false)\n ? stringifyValue\n : stringifyAndImportantifyValue;\n\n const rules = [];\n for (let i = 0; i < declarations.keyOrder.length; i ++) {\n const key = declarations.keyOrder[i];\n const value = prefixedElements[key];\n if (Array.isArray(value)) {\n // inline-style-prefixer returns an array when there should be\n // multiple rules for the same key. Here we flatten to multiple\n // pairs with the same key.\n for (let j = 0; j < value.length; j++) {\n rules.push(transformRule(key, value[j], transformValue));\n }\n } else {\n rules.push(transformRule(key, value, transformValue));\n }\n }\n\n if (rules.length) {\n return `${selector}{${rules.join(\"\")}}`;\n } else {\n return \"\";\n }\n};\n","/* @flow */\nimport asap from 'asap';\n\nimport OrderedElements from './ordered-elements';\nimport {generateCSS} from './generate';\nimport {hashObject, hashString} from './util';\n\n/* ::\nimport type { SheetDefinition, SheetDefinitions } from './index.js';\nimport type { MaybeSheetDefinition } from './exports.js';\nimport type { SelectorHandler } from './generate.js';\n*/\n\n// The current <style> tag we are inserting into, or null if we haven't\n// inserted anything yet. We could find this each time using\n// `document.querySelector(\"style[data-aphrodite\"])`, but holding onto it is\n// faster.\nlet styleTag /* : ?HTMLStyleElement */ = null;\n\n// Inject a set of rules into a <style> tag in the head of the document. This\n// will automatically create a style tag and then continue to use it for\n// multiple injections. It will also use a style tag with the `data-aphrodite`\n// tag on it if that exists in the DOM. This could be used for e.g. reusing the\n// same style tag that server-side rendering inserts.\nconst injectStyleTag = (cssRules /* : string[] */) => {\n if (styleTag == null) {\n // Try to find a style tag with the `data-aphrodite` attribute first.\n styleTag = ((document.querySelector(\"style[data-aphrodite]\") /* : any */) /* : ?HTMLStyleElement */);\n\n // If that doesn't work, generate a new style tag.\n if (styleTag == null) {\n // Taken from\n // http://stackoverflow.com/questions/524696/how-to-create-a-style-tag-with-javascript\n const head = document.head || document.getElementsByTagName('head')[0];\n styleTag = document.createElement('style');\n\n styleTag.type = 'text/css';\n styleTag.setAttribute(\"data-aphrodite\", \"\");\n head.appendChild(styleTag);\n }\n }\n\n // $FlowFixMe\n const sheet = ((styleTag.styleSheet || styleTag.sheet /* : any */) /* : CSSStyleSheet */);\n\n if (sheet.insertRule) {\n let numRules = sheet.cssRules.length;\n cssRules.forEach((rule) => {\n try {\n sheet.insertRule(rule, numRules);\n numRules += 1;\n } catch(e) {\n // The selector for this rule wasn't compatible with the browser\n }\n });\n } else {\n styleTag.innerText = (styleTag.innerText || '') + cssRules.join('');\n }\n};\n\n// Custom handlers for stringifying CSS values that have side effects\n// (such as fontFamily, which can cause @font-face rules to be injected)\nconst stringHandlers = {\n // With fontFamily we look for objects that are passed in and interpret\n // them as @font-face rules that we need to inject. The value of fontFamily\n // can either be a string (as normal), an object (a single font face), or\n // an array of objects and strings.\n fontFamily: function fontFamily(val) {\n if (Array.isArray(val)) {\n const nameMap = {};\n\n val.forEach(v => {\n nameMap[fontFamily(v)] = true;\n });\n\n return Object.keys(nameMap).join(\",\");\n } else if (typeof val === \"object\") {\n injectStyleOnce(val.src, \"@font-face\", [val], false);\n return `\"${val.fontFamily}\"`;\n } else {\n return val;\n }\n },\n\n // With animationName we look for an object that contains keyframes and\n // inject them as an `@keyframes` block, returning a uniquely generated\n // name. The keyframes object should look like\n // animationName: {\n // from: {\n // left: 0,\n // top: 0,\n // },\n // '50%': {\n // left: 15,\n // top: 5,\n // },\n // to: {\n // left: 20,\n // top: 20,\n // }\n // }\n // TODO(emily): `stringHandlers` doesn't let us rename the key, so I have\n // to use `animationName` here. Improve that so we can call this\n // `animation` instead of `animationName`.\n animationName: function animationName(val, selectorHandlers) {\n if (Array.isArray(val)) {\n return val.map(v => animationName(v, selectorHandlers)).join(\",\");\n } else if (typeof val === \"object\") {\n // Generate a unique name based on the hash of the object. We can't\n // just use the hash because the name can't start with a number.\n // TODO(emily): this probably makes debugging hard, allow a custom\n // name?\n const name = `keyframe_${hashObject(val)}`;\n\n // Since keyframes need 3 layers of nesting, we use `generateCSS` to\n // build the inner layers and wrap it in `@keyframes` ourselves.\n let finalVal = `@keyframes ${name}{`;\n\n // TODO see if we can find a way where checking for OrderedElements\n // here is not necessary. Alternatively, perhaps we should have a\n // utility method that can iterate over either a plain object, an\n // instance of OrderedElements, or a Map, and then use that here and\n // elsewhere.\n if (val instanceof OrderedElements) {\n val.forEach((valVal, valKey) => {\n finalVal += generateCSS(\n valKey, [valVal], selectorHandlers, stringHandlers, false).join('');\n });\n } else {\n Object.keys(val).forEach(key => {\n finalVal += generateCSS(\n key, [val[key]], selectorHandlers, stringHandlers, false).join('');\n });\n }\n finalVal += '}';\n\n injectGeneratedCSSOnce(name, [finalVal]);\n\n return name;\n } else {\n return val;\n }\n },\n};\n\n// This is a map from Aphrodite's generated class names to `true` (acting as a\n// set of class names)\nlet alreadyInjected = {};\n\n// This is the buffer of styles which have not yet been flushed.\nlet injectionBuffer /* : string[] */ = [];\n\n// A flag to tell if we are already buffering styles. This could happen either\n// because we scheduled a flush call already, so newly added styles will\n// already be flushed, or because we are statically buffering on the server.\nlet isBuffering = false;\n\nconst injectGeneratedCSSOnce = (key, generatedCSS) => {\n if (alreadyInjected[key]) {\n return;\n }\n\n if (!isBuffering) {\n // We should never be automatically buffering on the server (or any\n // place without a document), so guard against that.\n if (typeof document === \"undefined\") {\n throw new Error(\n \"Cannot automatically buffer without a document\");\n }\n\n // If we're not already buffering, schedule a call to flush the\n // current styles.\n isBuffering = true;\n asap(flushToStyleTag);\n }\n\n injectionBuffer.push(...generatedCSS);\n alreadyInjected[key] = true;\n}\n\nexport const injectStyleOnce = (\n key /* : string */,\n selector /* : string */,\n definitions /* : SheetDefinition[] */,\n useImportant /* : boolean */,\n selectorHandlers /* : SelectorHandler[] */ = []\n) => {\n if (alreadyInjected[key]) {\n return;\n }\n\n const generated = generateCSS(\n selector, definitions, selectorHandlers,\n stringHandlers, useImportant);\n\n injectGeneratedCSSOnce(key, generated);\n};\n\nexport const reset = () => {\n injectionBuffer = [];\n alreadyInjected = {};\n isBuffering = false;\n styleTag = null;\n};\n\nexport const resetInjectedStyle = (key /* : string */) => {\n delete alreadyInjected[key];\n};\n\nexport const getBufferedStyles = () => {\n return injectionBuffer;\n};\n\nexport const startBuffering = () => {\n if (isBuffering) {\n throw new Error(\n \"Cannot buffer while already buffering\");\n }\n isBuffering = true;\n};\n\nconst flushToArray = () => {\n isBuffering = false;\n const ret = injectionBuffer;\n injectionBuffer = [];\n return ret;\n};\n\nexport const flushToString = () => {\n return flushToArray().join('');\n};\n\nexport const flushToStyleTag = () => {\n const cssRules = flushToArray();\n if (cssRules.length > 0) {\n injectStyleTag(cssRules);\n }\n};\n\nexport const getRenderedClassNames = () /* : string[] */ => {\n return Object.keys(alreadyInjected);\n};\n\nexport const addRenderedClassNames = (classNames /* : string[] */) => {\n classNames.forEach(className => {\n alreadyInjected[className] = true;\n });\n};\n\nconst isValidStyleDefinition = (def /* : Object */) =>\n \"_definition\" in def && \"_name\" in def && \"_len\" in def;\n\nconst processStyleDefinitions = (\n styleDefinitions /* : any[] */,\n classNameBits /* : string[] */,\n definitionBits /* : Object[] */,\n length /* : number */,\n) /* : number */ => {\n for (let i = 0; i < styleDefinitions.length; i += 1) {\n // Filter out falsy values from the input, to allow for\n // `css(a, test && c)`\n if (styleDefinitions[i]) {\n if (Array.isArray(styleDefinitions[i])) {\n // We've encountered an array, so let's recurse\n length += processStyleDefinitions(\n styleDefinitions[i],\n classNameBits,\n definitionBits,\n length,\n );\n } else if (isValidStyleDefinition(styleDefinitions[i])) {\n classNameBits.push(styleDefinitions[i]._name);\n definitionBits.push(styleDefinitions[i]._definition);\n length += styleDefinitions[i]._len;\n } else {\n throw new Error(\"Invalid Style Definition: Styles should be defined using the StyleSheet.create method.\")\n }\n }\n }\n return length;\n};\n\n/**\n * Inject styles associated with the passed style definition objects, and return\n * an associated CSS class name.\n *\n * @param {boolean} useImportant If true, will append !important to generated\n * CSS output. e.g. {color: red} -> \"color: red !important\".\n * @param {(Object|Object[])[]} styleDefinitions style definition objects, or\n * arbitrarily nested arrays of them, as returned as properties of the\n * return value of StyleSheet.create().\n */\nexport const injectAndGetClassName = (\n useImportant /* : boolean */,\n styleDefinitions /* : MaybeSheetDefinition[] */,\n selectorHandlers /* : SelectorHandler[] */\n) /* : string */ => {\n const classNameBits = [];\n const definitionBits = [];\n\n // Mutates classNameBits and definitionBits and returns a length which we\n // will append to the hash to decrease the chance of hash collisions.\n const length = processStyleDefinitions(\n styleDefinitions,\n classNameBits,\n definitionBits,\n 0,\n );\n\n // Break if there aren't any valid styles.\n if (classNameBits.length === 0) {\n return \"\";\n }\n\n let className;\n if (process.env.NODE_ENV === 'production') {\n className = classNameBits.length === 1 ?\n `_${classNameBits[0]}` :\n `_${hashString(classNameBits.join())}${(length % 36).toString(36)}`;\n } else {\n className = classNameBits.join(\"-o_O-\");\n }\n\n injectStyleOnce(\n className,\n `.${className}`,\n definitionBits,\n useImportant,\n selectorHandlers\n );\n\n return className;\n}\n","/* @flow */\nimport {hashString} from './util';\nimport {\n injectAndGetClassName,\n reset,\n resetInjectedStyle,\n startBuffering,\n flushToString,\n flushToStyleTag,\n addRenderedClassNames,\n getRenderedClassNames,\n getBufferedStyles,\n} from './inject';\nimport {defaultSelectorHandlers} from './generate';\n\n/* ::\nimport type { SelectorHandler } from './generate.js';\nexport type SheetDefinition = { [id:string]: any };\nexport type SheetDefinitions = SheetDefinition | SheetDefinition[];\ntype RenderFunction = () => string;\ntype Extension = {\n selectorHandler: SelectorHandler\n};\nexport type MaybeSheetDefinition = SheetDefinition | false | null | void\n*/\n\nconst unminifiedHashFn = (str/* : string */, key/* : string */) => `${key}_${hashString(str)}`;\n\n// StyleSheet.create is in a hot path so we want to keep as much logic out of it\n// as possible. So, we figure out which hash function to use once, and only\n// switch it out via minify() as necessary.\n//\n// This is in an exported function to make it easier to test.\nexport const initialHashFn = () => process.env.NODE_ENV === 'production'\n ? hashString\n : unminifiedHashFn;\n\nlet hashFn = initialHashFn();\n\nconst StyleSheet = {\n create(sheetDefinition /* : SheetDefinition */) /* : Object */ {\n const mappedSheetDefinition = {};\n const keys = Object.keys(sheetDefinition);\n\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const val = sheetDefinition[key];\n const stringVal = JSON.stringify(val);\n\n mappedSheetDefinition[key] = {\n _len: stringVal.length,\n _name: hashFn(stringVal, key),\n _definition: val,\n };\n }\n\n return mappedSheetDefinition;\n },\n\n rehydrate(renderedClassNames /* : string[] */ =[]) {\n addRenderedClassNames(renderedClassNames);\n },\n};\n\n/**\n * Utilities for using Aphrodite server-side.\n *\n * This can be minified out in client-only bundles by replacing `typeof window`\n * with `\"object\"`, e.g. via Webpack's DefinePlugin:\n *\n * new webpack.DefinePlugin({\n * \"typeof window\": JSON.stringify(\"object\")\n * })\n */\nconst StyleSheetServer = typeof window !== 'undefined'\n ? null\n : {\n renderStatic(renderFunc /* : RenderFunction */) {\n reset();\n startBuffering();\n const html = renderFunc();\n const cssContent = flushToString();\n\n return {\n html: html,\n css: {\n content: cssContent,\n renderedClassNames: getRenderedClassNames(),\n },\n };\n },\n };\n\n/**\n * Utilities for using Aphrodite in tests.\n *\n * Not meant to be used in production.\n */\nconst StyleSheetTestUtils = process.env.NODE_ENV === 'production'\n ? null\n : {\n /**\n * Prevent styles from being injected into the DOM.\n *\n * This is useful in situations where you'd like to test rendering UI\n * components which use Aphrodite without any of the side-effects of\n * Aphrodite happening. Particularly useful for testing the output of\n * components when you have no DOM, e.g. testing in Node without a fake DOM.\n *\n * Should be paired with a subsequent call to\n * clearBufferAndResumeStyleInjection.\n */\n suppressStyleInjection() {\n reset();\n startBuffering();\n },\n\n /**\n * Opposite method of preventStyleInject.\n */\n clearBufferAndResumeStyleInjection() {\n reset();\n },\n\n /**\n * Returns a string of buffered styles which have not been flushed\n *\n * @returns {string} Buffer of styles which have not yet been flushed.\n */\n getBufferedStyles() {\n return getBufferedStyles();\n }\n };\n\n/**\n * Generate the Aphrodite API exports, with given `selectorHandlers` and\n * `useImportant` state.\n */\nexport default function makeExports(\n useImportant /* : boolean */,\n selectorHandlers /* : SelectorHandler[] */ = defaultSelectorHandlers,\n) {\n return {\n StyleSheet: {\n ...StyleSheet,\n\n /**\n * Returns a version of the exports of Aphrodite (i.e. an object\n * with `css` and `StyleSheet` properties) which have some\n * extensions included.\n *\n * @param {Array.<Object>} extensions: An array of extensions to\n * add to this instance of Aphrodite. Each object should have a\n * single property on it, defining which kind of extension to\n * add.\n * @param {SelectorHandler} [extensions[].selectorHandler]: A\n * selector handler extension. See `defaultSelectorHandlers` in\n * generate.js.\n *\n * @returns {Object} An object containing the exports of the new\n * instance of Aphrodite.\n */\n extend(extensions /* : Extension[] */) {\n const extensionSelectorHandlers = extensions\n // Pull out extensions with a selectorHandler property\n .map(extension => extension.selectorHandler)\n // Remove nulls (i.e. extensions without a selectorHandler property).\n .filter(handler => handler);\n\n return makeExports(\n useImportant,\n selectorHandlers.concat(extensionSelectorHandlers)\n );\n },\n },\n\n StyleSheetServer,\n StyleSheetTestUtils,\n\n minify(shouldMinify /* : boolean */) {\n hashFn = shouldMinify ? hashString : unminifiedHashFn;\n },\n\n css(...styleDefinitions /* : MaybeSheetDefinition[] */) {\n return injectAndGetClassName(\n useImportant, styleDefinitions, selectorHandlers);\n },\n\n flushToStyleTag,\n injectAndGetClassName,\n defaultSelectorHandlers,\n reset,\n resetInjectedStyle,\n };\n}\n","import makeExports from './exports';\n\nconst useImportant = true; // Add !important to all style definitions\n\nconst Aphrodite = makeExports(useImportant);\n\nconst {\n StyleSheet,\n StyleSheetServer,\n StyleSheetTestUtils,\n css,\n minify,\n flushToStyleTag,\n injectAndGetClassName,\n defaultSelectorHandlers,\n reset,\n resetInjectedStyle,\n} = Aphrodite;\n\nexport {\n StyleSheet,\n StyleSheetServer,\n StyleSheetTestUtils,\n css,\n minify,\n flushToStyleTag,\n injectAndGetClassName,\n defaultSelectorHandlers,\n reset,\n resetInjectedStyle,\n};\n"],"names":["UPPERCASE_RE","UPPERCASE_RE_TO_KEBAB","match","toLowerCase","kebabifyStyleName","string","result","replace","isUnitlessNumber","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridColumn","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","prefixKey","prefix","key","charAt","toUpperCase","substring","prefixes","Object","keys","forEach","prop","stringifyValue","stringifyAndImportantifyValue","importantify","hashString","stringHash","toString","hashObject","object","JSON","stringify","length","slice","global","rawAsap","MAP_EXISTS","Map","OrderedElements","elements","keyOrder","callback","i","set","value","shouldReorder","hasOwnProperty","push","index","indexOf","splice","nested","Array","isArray","get","has","addStyleType","styleType","_capitalizeString","_prefixProperty","_prefixValue","_addNewValuesOnly","_isObject","_isPrefixedValue","_hyphenateStyleName","_hyphenateProperty","w","m","ms","wm","wms","wmms","plugins","backgroundClip","calc","crossFade","cursor","filter","flexboxIE","flexboxOld","gradient","grid","imageSet","logical","position","sizing","transition","prefixMap","prefixAll","createPrefixer","staticData","defaultSelectorHandlers","pseudoSelectors","selector","baseSelector","generateSubtreeStyles","mediaQueries","generated","join","generateCSS","styleTypes","selectorHandlers","stringHandlers","useImportant","merged","plainDeclarations","generatedStyles","val","foundHandler","some","handler","newSelector","console","warn","generatedRuleset","generateCSSRuleset","unshift","runStringHandlers","declarations","stringHandlerKeys","transformRule","transformValue","arrayToObjectKeysReducer","acc","originalElements","reduce","create","prefixedElements","elementNames","originalStyle","originalIndex","rules","j","styleTag","injectStyleTag","cssRules","document","querySelector","head","getElementsByTagName","createElement","type","setAttribute","appendChild","sheet","styleSheet","insertRule","numRules","rule","e","innerText","fontFamily","nameMap","v","injectStyleOnce","src","animationName","map","name","finalVal","valVal","valKey","injectGeneratedCSSOnce","alreadyInjected","injectionBuffer","isBuffering","generatedCSS","Error","asap","flushToStyleTag","definitions","reset","resetInjectedStyle","startBuffering","flushToArray","ret","flushToString","getRenderedClassNames","addRenderedClassNames","classNames","className","isValidStyleDefinition","def","processStyleDefinitions","styleDefinitions","classNameBits","definitionBits","_name","_definition","_len","injectAndGetClassName","unminifiedHashFn","str","initialHashFn","process","hashFn","StyleSheet","sheetDefinition","mappedSheetDefinition","stringVal","rehydrate","renderedClassNames","StyleSheetServer","window","renderStatic","renderFunc","html","cssContent","css","content","StyleSheetTestUtils","makeExports","extend","extensions","extensionSelectorHandlers","extension","selectorHandler","concat","minify","shouldMinify","Aphrodite"],"mappings":"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"}
\No newline at end of file