{"version":3,"file":"glamorous.umd.min.js","sources":["../node_modules/fast-memoize/src/index.js","../node_modules/brcast/dist/brcast.es.js","../src/with-theme.js","../src/index.js","../node_modules/react-html-attributes/dist/index.js","../src/react-props.js","../src/should-forward-property.js","../src/dom-elements.js","../src/react-compat.js","../src/theme-provider.js","../src/umd-entry.js"],"sourcesContent":["//\n// Main\n//\n\nmodule.exports = function memoize (fn, options) {\n var cache = options && options.cache\n ? options.cache\n : cacheDefault\n\n var serializer = options && options.serializer\n ? options.serializer\n : serializerDefault\n\n var strategy = options && options.strategy\n ? options.strategy\n : strategyDefault\n\n return strategy(fn, {\n cache: cache,\n serializer: serializer\n })\n}\n\n//\n// Strategy\n//\n\nfunction isPrimitive (value) {\n return value == null || (typeof value !== 'function' && typeof value !== 'object')\n}\n\nfunction monadic (fn, cache, serializer, arg) {\n var cacheKey = isPrimitive(arg) ? arg : serializer(arg)\n\n if (!cache.has(cacheKey)) {\n var computedValue = fn.call(this, arg)\n cache.set(cacheKey, computedValue)\n return computedValue\n }\n\n return cache.get(cacheKey)\n}\n\nfunction variadic (fn, cache, serializer) {\n var args = Array.prototype.slice.call(arguments, 3)\n var cacheKey = serializer(args)\n\n if (!cache.has(cacheKey)) {\n var computedValue = fn.apply(this, args)\n cache.set(cacheKey, computedValue)\n return computedValue\n }\n\n return cache.get(cacheKey)\n}\n\nfunction strategyDefault (fn, options) {\n var memoized = fn.length === 1 ? monadic : variadic\n\n memoized = memoized.bind(\n this,\n fn,\n options.cache.create(),\n options.serializer\n )\n\n return memoized\n}\n\n//\n// Serializer\n//\n\nfunction serializerDefault () {\n return JSON.stringify(arguments)\n}\n\n//\n// Cache\n//\n\nfunction ObjectWithoutPrototypeCache () {\n this.cache = Object.create(null)\n}\n\nObjectWithoutPrototypeCache.prototype.has = function (key) {\n return (key in this.cache)\n}\n\nObjectWithoutPrototypeCache.prototype.get = function (key) {\n return this.cache[key]\n}\n\nObjectWithoutPrototypeCache.prototype.set = function (key, value) {\n this.cache[key] = value\n}\n\nvar cacheDefault = {\n create: function create () {\n return new ObjectWithoutPrototypeCache()\n }\n}\n","/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nfunction mitt(all) {\n\tall = all || Object.create(null);\n\n\treturn {\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t *\n\t\t * @param {String} type Type of event to listen for, or `\"*\"` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @return {Object} the `mitt` instance for chaining\n\t\t * @memberOf mitt\n\t\t */\n\t\ton: function on(type, handler) {\n\t\t\t(all[type] || (all[type] = [])).push(handler);\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t *\n\t\t * @param {String} type Type of event to unregister `handler` from, or `\"*\"`\n\t\t * @param {Function} handler Handler function to remove\n\t\t * @return {Object} the `mitt` instance for chaining\n\t\t * @memberOf mitt\n\t\t */\n\t\toff: function off(type, handler) {\n\t\t\tvar e = all[type] || (all[type] = []);\n\t\t\te.splice(e.indexOf(handler) >>> 0, 1);\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked prior to type-matched handlers.\n\t\t *\n\t\t * @param {String} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @return {Object} the `mitt` instance for chaining\n\t\t * @memberof mitt\n\t\t */\n\t\temit: function emit(type, evt) {\n\t\t\t(all[type] || []).map(function (handler) { handler(evt); });\n\t\t\t(all['*'] || []).map(function (handler) { handler(type, evt); });\n\t\t}\n\t};\n}\n\nfunction createBroadcast (initialState, channel) {\n if ( channel === void 0 ) channel = '__brcast__';\n\n var emitter = mitt();\n var currentState = initialState;\n\n var getState = function () { return currentState; };\n\n var setState = function (state) {\n currentState = state;\n emitter.emit(channel, currentState);\n };\n\n var subscribe = function (listener) {\n emitter.on(channel, listener);\n\n return function unsubscribe () {\n emitter.off(channel, listener);\n }\n };\n\n return {getState: getState, setState: setState, subscribe: subscribe}\n}\n\nexport default createBroadcast;\n","import React, {Component} from 'react'\n\nimport {CHANNEL} from './theme-provider'\nimport {PropTypes} from './react-compat'\n\nfunction generateWarningMessage(componentName) {\n // eslint-disable-next-line max-len\n return `glamorous warning: Expected component called \"${componentName}\" which uses withTheme to be within a ThemeProvider but none was found.`\n}\n\nexport default function withTheme(ComponentToTheme) {\n class ThemedComponent extends Component {\n state = {theme: {}}\n setTheme = theme => this.setState({theme})\n\n componentWillMount() {\n if (!this.context[CHANNEL]) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\n generateWarningMessage(\n ComponentToTheme.displayName ||\n ComponentToTheme.name ||\n 'Stateless Function',\n ),\n )\n }\n\n return\n }\n\n this.setState({theme: this.context[CHANNEL].getState()})\n }\n\n componentDidMount() {\n if (this.context[CHANNEL]) {\n this.unsubscribe = this.context[CHANNEL].subscribe(this.setTheme)\n }\n }\n\n componentWillUnmount() {\n // cleanup subscription\n this.unsubscribe && this.unsubscribe()\n }\n\n render() {\n return <ComponentToTheme {...this.props} {...this.state} />\n }\n }\n\n ThemedComponent.contextTypes = {\n [CHANNEL]: PropTypes.object,\n }\n\n return ThemedComponent\n}\n","/*\n * This is a relatively small abstraction that's ripe for open sourcing.\n * Documentation is in the README.md\n */\nimport React, {Component} from 'react'\nimport {css, styleSheet} from 'glamor'\nimport shouldForwardProperty from './should-forward-property'\nimport domElements from './dom-elements'\nimport {PropTypes} from './react-compat'\nimport ThemeProvider, {CHANNEL} from './theme-provider'\nimport withTheme from './with-theme'\n\n/**\n * This is the main export and the function that people\n * interact with most directly.\n *\n * It accepts a component which can be a string or a React Component and returns\n * a \"glamorousComponentFactory\"\n * @param {String|ReactComponent} comp the component to render\n * @param {Object} options helpful info for the GlamorousComponents\n * @return {Function} the glamorousComponentFactory\n */\nfunction glamorous(comp, {rootEl, displayName, forwardProps = []} = {}) {\n return glamorousComponentFactory\n\n /**\n * This returns a React Component that renders the comp (closure)\n * with a className based on the given glamor styles object(s)\n * @param {...Object|Function} styles the styles to create with glamor.\n * If any of these are functions, they are invoked with the component\n * props and the return value is used.\n * @return {ReactComponent} the ReactComponent function\n */\n function glamorousComponentFactory(...styles) {\n /**\n * This is a component which will render the comp (closure)\n * with the glamorous styles (closure). Forwards any valid\n * props to the underlying component.\n * @param {Object} theme the theme object\n * @return {ReactElement} React.createElement\n */\n class GlamorousComponent extends Component {\n state = {theme: null}\n setTheme = theme => this.setState({theme})\n\n componentWillMount() {\n const {theme} = this.props\n if (this.context[CHANNEL]) {\n // if a theme is provided via props, it takes precedence over context\n this.setTheme(theme ? theme : this.context[CHANNEL].getState())\n } else {\n this.setTheme(theme || {})\n }\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.theme !== nextProps.theme) {\n this.setTheme(nextProps.theme)\n }\n }\n\n componentDidMount() {\n if (this.context[CHANNEL] && !this.props.theme) {\n // subscribe to future theme changes\n this.unsubscribe = this.context[CHANNEL].subscribe(this.setTheme)\n }\n }\n\n componentWillUnmount() {\n // cleanup subscription\n this.unsubscribe && this.unsubscribe()\n }\n\n render() {\n // in this function, we're willing to sacrafice a little on\n // readability to get better performance because it actually\n // matters.\n const props = this.props\n const {toForward, cssOverrides} = splitProps(props, GlamorousComponent)\n // freeze the theme object in dev mode\n const theme = process.env.NODE_ENV === 'production' ?\n this.state.theme :\n Object.freeze(this.state.theme)\n // create className to apply\n const mappedArgs = GlamorousComponent.styles.slice()\n for (let i = mappedArgs.length; i--;) {\n if (typeof mappedArgs[i] === 'function') {\n mappedArgs[i] = mappedArgs[i](props, theme)\n }\n }\n const {\n glamorStyles: parentGlamorStyles,\n glamorlessClassName,\n } = extractGlamorStyles(props.className)\n const glamorClassName = css(\n ...mappedArgs,\n ...parentGlamorStyles,\n cssOverrides,\n ).toString()\n const fullClassName = `${glamorlessClassName} ${glamorClassName}`.trim()\n\n return React.createElement(GlamorousComponent.comp, {\n ref: props.innerRef,\n ...toForward,\n className: fullClassName,\n })\n }\n }\n\n GlamorousComponent.propTypes = {\n className: PropTypes.string,\n cssOverrides: PropTypes.object,\n theme: PropTypes.object,\n innerRef: PropTypes.func,\n }\n\n GlamorousComponent.contextTypes = {\n [CHANNEL]: PropTypes.object,\n }\n\n Object.assign(\n GlamorousComponent,\n getGlamorousComponentMetadata({\n comp,\n styles,\n rootEl,\n forwardProps,\n displayName,\n }),\n )\n return GlamorousComponent\n }\n}\n\nfunction getGlamorousComponentMetadata({\n comp,\n styles,\n rootEl,\n forwardProps,\n displayName,\n}) {\n const componentsComp = comp.comp ? comp.comp : comp\n return {\n // join styles together (for anyone doing: glamorous(glamorous.a({}), {}))\n styles: comp.styles ? comp.styles.concat(styles) : styles,\n // keep track of the ultimate rootEl to render (we never\n // actually render anything but\n // the base component, even when people wrap a glamorous\n // component in glamorous\n comp: componentsComp,\n rootEl: rootEl || componentsComp,\n forwardProps,\n // set the displayName to something that's slightly more\n // helpful than `GlamorousComponent` :)\n displayName: displayName || `glamorous(${getDisplayName(comp)})`,\n }\n}\n\nfunction getDisplayName(comp) {\n return typeof comp === 'string' ?\n comp :\n comp.displayName || comp.name || 'unknown'\n}\n\n/*\n * This creates a glamorousComponentFactory for every DOM element so you can\n * simply do:\n * const GreenButton = glamorous.button({\n * backgroundColor: 'green',\n * padding: 20,\n * })\n * <GreenButton>Click Me!</GreenButton>\n */\nObject.assign(\n glamorous,\n domElements.reduce((getters, tag) => {\n getters[tag] = glamorous(tag)\n return getters\n }, {}),\n)\n\n/*\n * This creates a glamorous component for each DOM element so you can\n * simply do:\n * <glamorous.Div\n * color=\"green\"\n * marginLeft={20}\n * >\n * I'm green!\n * </glamorous.Div>\n */\nObject.assign(\n glamorous,\n domElements.reduce((comps, tag) => {\n const capitalTag = capitalize(tag)\n comps[capitalTag] = glamorous[tag]()\n comps[capitalTag].displayName = `glamorous.${capitalTag}`\n comps[capitalTag].propsAreCssOverrides = true\n return comps\n }, {}),\n)\n\n/**\n * This function takes a className string and gets all the\n * associated glamor styles. It's used to merge glamor styles\n * from a className to make sure that specificity is not\n * a problem when passing a className to a component.\n * @param {String} [className=''] the className string\n * @return {Object} { glamorStyles, glamorlessClassName }\n * - glamorStyles is an array of all the glamor styles objects\n * - glamorlessClassName is the rest of the className string\n * without the glamor classNames\n */\nfunction extractGlamorStyles(className = '') {\n return className.toString().split(' ').reduce((groups, name) => {\n if (name.indexOf('css-') === 0) {\n const id = name.slice('css-'.length)\n const {style} = styleSheet.registered[id]\n groups.glamorStyles.push(style)\n } else {\n // eslint-disable-next-line max-len\n groups.glamorlessClassName = `${groups.glamorlessClassName} ${name}`.trim()\n }\n return groups\n }, {glamorlessClassName: '', glamorStyles: []})\n}\n\nfunction splitProps(\n {\n css: cssOverrides = {},\n // these are plucked off\n className, // because they\n innerRef, // should never\n // be forwarded\n ...rest\n },\n {propsAreCssOverrides, rootEl, forwardProps},\n) {\n const returnValue = {toForward: {}, cssOverrides: {}}\n if (!propsAreCssOverrides) {\n returnValue.cssOverrides = cssOverrides\n if (typeof rootEl !== 'string') {\n // if it's not a string, then we can forward everything\n // (because it's a component)\n returnValue.toForward = rest\n return returnValue\n }\n }\n return Object.keys(rest).reduce((split, propName) => {\n if (\n forwardProps.indexOf(propName) !== -1 ||\n shouldForwardProperty(rootEl, propName)\n ) {\n split.toForward[propName] = rest[propName]\n } else if (propsAreCssOverrides) {\n split.cssOverrides[propName] = rest[propName]\n }\n return split\n }, returnValue)\n}\n\nfunction capitalize(s) {\n return s.slice(0, 1).toUpperCase() + s.slice(1)\n}\n\nexport default glamorous\nexport {ThemeProvider, withTheme}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar reactHtmlAttributes = require('./react-html-attributes.json');\n\nexports.default = reactHtmlAttributes;\n\nmodule.exports = reactHtmlAttributes; // for CommonJS compatibility","/*\n * This is used to check if a property name is one of the React-specific\n * properties and determine if that property should be forwarded\n * to the React component\n */\n\n/* Logic copied from ReactDOMUnknownPropertyHook */\nexport default [\n 'children',\n 'dangerouslySetInnerHTML',\n 'key',\n 'ref',\n 'autoFocus',\n 'defaultValue',\n 'valueLink',\n 'defaultChecked',\n 'checkedLink',\n 'innerHTML',\n 'suppressContentEditableWarning',\n 'onFocusIn',\n 'onFocusOut',\n 'className',\n\n /* List copied from https://facebook.github.io/react/docs/events.html */\n 'onCopy',\n 'onCut',\n 'onPaste',\n 'onCompositionEnd',\n 'onCompositionStart',\n 'onCompositionUpdate',\n 'onKeyDown',\n 'onKeyPress',\n 'onKeyUp',\n 'onFocus',\n 'onBlur',\n 'onChange',\n 'onInput',\n 'onSubmit',\n 'onClick',\n 'onContextMenu',\n 'onDoubleClick',\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n 'onMouseDown',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOut',\n 'onMouseOver',\n 'onMouseUp',\n 'onSelect',\n 'onTouchCancel',\n 'onTouchEnd',\n 'onTouchMove',\n 'onTouchStart',\n 'onScroll',\n 'onWheel',\n 'onAbort',\n 'onCanPlay',\n 'onCanPlayThrough',\n 'onDurationChange',\n 'onEmptied',\n 'onEncrypted',\n 'onEnded',\n 'onError',\n 'onLoadedData',\n 'onLoadedMetadata',\n 'onLoadStart',\n 'onPause',\n 'onPlay',\n 'onPlaying',\n 'onProgress',\n 'onRateChange',\n 'onSeeked',\n 'onSeeking',\n 'onStalled',\n 'onSuspend',\n 'onTimeUpdate',\n 'onVolumeChange',\n 'onWaiting',\n 'onLoad',\n 'onAnimationStart',\n 'onAnimationEnd',\n 'onAnimationIteration',\n 'onTransitionEnd',\n\n 'onCopyCapture',\n 'onCutCapture',\n 'onPasteCapture',\n 'onCompositionEndCapture',\n 'onCompositionStartCapture',\n 'onCompositionUpdateCapture',\n 'onKeyDownCapture',\n 'onKeyPressCapture',\n 'onKeyUpCapture',\n 'onFocusCapture',\n 'onBlurCapture',\n 'onChangeCapture',\n 'onInputCapture',\n 'onSubmitCapture',\n 'onClickCapture',\n 'onContextMenuCapture',\n 'onDoubleClickCapture',\n 'onDragCapture',\n 'onDragEndCapture',\n 'onDragEnterCapture',\n 'onDragExitCapture',\n 'onDragLeaveCapture',\n 'onDragOverCapture',\n 'onDragStartCapture',\n 'onDropCapture',\n 'onMouseDownCapture',\n 'onMouseEnterCapture',\n 'onMouseLeaveCapture',\n 'onMouseMoveCapture',\n 'onMouseOutCapture',\n 'onMouseOverCapture',\n 'onMouseUpCapture',\n 'onSelectCapture',\n 'onTouchCancelCapture',\n 'onTouchEndCapture',\n 'onTouchMoveCapture',\n 'onTouchStartCapture',\n 'onScrollCapture',\n 'onWheelCapture',\n 'onAbortCapture',\n 'onCanPlayCapture',\n 'onCanPlayThroughCapture',\n 'onDurationChangeCapture',\n 'onEmptiedCapture',\n 'onEncryptedCapture',\n 'onEndedCapture',\n 'onErrorCapture',\n 'onLoadedDataCapture',\n 'onLoadedMetadataCapture',\n 'onLoadStartCapture',\n 'onPauseCapture',\n 'onPlayCapture',\n 'onPlayingCapture',\n 'onProgressCapture',\n 'onRateChangeCapture',\n 'onSeekedCapture',\n 'onSeekingCapture',\n 'onStalledCapture',\n 'onSuspendCapture',\n 'onTimeUpdateCapture',\n 'onVolumeChangeCapture',\n 'onWaitingCapture',\n 'onLoadCapture',\n 'onAnimationStartCapture',\n 'onAnimationEndCapture',\n 'onAnimationIterationCapture',\n 'onTransitionEndCapture',\n]\n","/* eslint max-lines:0, func-style:0 */\n// copied from:\n// https://github.com/styled-components/styled-components/tree/\n// 956e8210b6277860c89404f9cb08735f97eaa7e1/src/utils/validAttr.js\n/* Trying to avoid the unknown-prop errors on glamorous components\n by filtering by React's attribute whitelist.\n */\n\nimport memoize from 'fast-memoize'\nimport reactHTMLAttributes from 'react-html-attributes'\nimport reactProps from './react-props'\n\nconst globalReactHtmlProps = reactHTMLAttributes['*']\n\n// these are valid attributes that have the\n// same name as CSS properties, and is used\n// for css overrides API\nconst cssProps = ['color', 'height', 'width']\n\n/* From DOMProperty */\n// eslint-disable-next-line max-len\nconst ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD'\n// eslint-disable-next-line max-len\nconst ATTRIBUTE_NAME_CHAR = `${ATTRIBUTE_NAME_START_CHAR}\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040`\nconst isCustomAttribute = RegExp.prototype.test.bind(\n new RegExp(`^(data|aria)-[${ATTRIBUTE_NAME_CHAR}]*$`),\n)\n\nconst isHtmlProp = (name, tagName) => {\n const elementAttributes = reactHTMLAttributes[tagName]\n\n return globalReactHtmlProps.indexOf(name) !== -1 ||\n (elementAttributes === undefined ?\n false :\n elementAttributes.indexOf(name) !== -1)\n}\nconst isCssProp = name => cssProps.indexOf(name) !== -1\nconst isReactProp = name => reactProps.indexOf(name) !== -1\n\n// eslint-disable-next-line complexity\nconst shouldForwardProperty = (tagName, name) =>\n typeof tagName !== 'string' ||\n ((isHtmlProp(name, tagName) ||\n isReactProp(name) ||\n isCustomAttribute(name.toLowerCase())) &&\n (tagName === 'svg' || !isCssProp(name)))\n\nexport default memoize(shouldForwardProperty)\n","import htmlTagNames from 'html-tag-names'\nimport svgTagNames from 'svg-tag-names'\n\nconst domElements = htmlTagNames\n .concat(svgTagNames)\n .filter((tag, index, array) => array.indexOf(tag) === index)\n\nexport default domElements\n","/* eslint import/no-mutable-exports:0, import/prefer-default-export:0 */\nimport React from 'react'\n\nlet PropTypes\n\n/* istanbul ignore next */\nif (React.version.slice(0, 4) === '15.5') {\n /* istanbul ignore next */\n try {\n PropTypes = require('prop-types')\n /* istanbul ignore next */\n } catch (error) {\n // ignore\n }\n}\n/* istanbul ignore next */\nPropTypes = PropTypes || React.PropTypes\n\nexport {PropTypes}\n","import React, {Component} from 'react'\nimport brcast from 'brcast'\nimport {PropTypes} from './react-compat'\n\nexport const CHANNEL = '__glamorous__'\n\n/**\n * This is a component which will provide a theme to the entire tree\n * via context and event listener\n * (because pure components block context updates)\n * inspired by the styled-components implementation\n * https://github.com/styled-components/styled-components\n * @param {Object} theme the theme object..\n */\nclass ThemeProvider extends Component {\n broadcast = brcast(this.props.theme)\n\n // create theme, by merging with outer theme, if present\n getTheme(passedTheme) {\n const theme = passedTheme || this.props.theme\n return {...this.outerTheme, ...theme}\n }\n\n getChildContext() {\n return {\n [CHANNEL]: this.broadcast,\n }\n }\n\n setOuterTheme = theme => {\n this.outerTheme = theme\n }\n\n componentDidMount() {\n // create a new subscription for keeping track of outer theme, if present\n if (this.context[CHANNEL]) {\n this.unsubscribe = this.context[CHANNEL].subscribe(this.setOuterTheme)\n }\n }\n\n componentWillMount() {\n // set broadcast state by merging outer theme with own\n if (this.context[CHANNEL]) {\n this.setOuterTheme(this.context[CHANNEL].getState())\n this.broadcast.setState(this.getTheme())\n }\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.theme !== nextProps.theme) {\n this.broadcast.setState(this.getTheme(nextProps.theme))\n }\n }\n\n componentWillUnmount() {\n this.unsubscribe && this.unsubscribe()\n }\n\n render() {\n return this.props.children ?\n React.Children.only(this.props.children) :\n null\n }\n}\n\nThemeProvider.childContextTypes = {\n [CHANNEL]: PropTypes.object.isRequired,\n}\n\nThemeProvider.contextTypes = {\n [CHANNEL]: PropTypes.object,\n}\n\nThemeProvider.propTypes = {\n theme: PropTypes.object.isRequired,\n children: PropTypes.node,\n}\n\nexport default ThemeProvider\n","import * as glamorousStar from './'\n\nconst glamorous = glamorousStar.default\n\nObject.assign(\n glamorous,\n Object.keys(glamorousStar).reduce(\n (e, prop) => {\n if (prop !== 'default') {\n // eslint-disable-next-line import/namespace\n e[prop] = glamorousStar[prop]\n }\n return e\n },\n {},\n ),\n)\n\nexport default glamorous\n"],"names":["isPrimitive","value","monadic","fn","cache","serializer","arg","cacheKey","has","computedValue","call","this","set","get","variadic","args","Array","prototype","slice","arguments","apply","strategyDefault","options","memoized","length","bind","create","serializerDefault","JSON","stringify","ObjectWithoutPrototypeCache","Object","mitt","all","on","type","handler","push","off","e","splice","indexOf","emit","evt","map","createBroadcast","initialState","channel","emitter","currentState","getState","setState","state","subscribe","listener","withTheme","ComponentToTheme","ThemedComponent","theme","setTheme","_this","context","CHANNEL","unsubscribe","React","props","Component","contextTypes","PropTypes","object","glamorous","comp","glamorousComponentFactory","styles","GlamorousComponent","nextProps","splitProps","toForward","cssOverrides","mappedArgs","i","extractGlamorStyles","className","parentGlamorStyles","glamorStyles","glamorlessClassName","glamorClassName","css","toString","fullClassName","trim","createElement","innerRef","propTypes","string","func","assign","getGlamorousComponentMetadata","rootEl","displayName","forwardProps","componentsComp","concat","getDisplayName","name","split","reduce","groups","id","style","styleSheet","registered","propsAreCssOverrides","rest","returnValue","keys","propName","shouldForwardProperty","capitalize","s","toUpperCase","key","cacheDefault","defineProperty","exports","reactHtmlAttributes","module","globalReactHtmlProps","reactHTMLAttributes","cssProps","isCustomAttribute","RegExp","test","isHtmlProp","tagName","elementAttributes","undefined","isCssProp","isReactProp","reactProps","toLowerCase","strategy","domElements","htmlTagNames","svgTagNames","filter","tag","index","array","version","require","error","ThemeProvider","broadcast","brcast","setOuterTheme","outerTheme","passedTheme","getTheme","children","Children","only","childContextTypes","isRequired","node","getters","comps","capitalTag","glamorousStar","prop"],"mappings":"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pB,IAAIyH,IACFhG,OAAQ,WACN,MAAO,IAAII,i5MIjGfC,OAAO4F,eAAeC,EAAS,cAC7B3H,OAAO,IAIT2H,UAAkBC,GAElBC,UAAiBD,gECDf,WACA,0BACA,MACA,MACA,YACA,eACA,YACA,iBACA,cACA,YACA,iCACA,YACA,aACA,YAGA,SACA,QACA,UACA,mBACA,qBACA,sBACA,YACA,aACA,UACA,UACA,SACA,WACA,UACA,WACA,UACA,gBACA,gBACA,SACA,YACA,cACA,aACA,cACA,aACA,cACA,SACA,cACA,eACA,eACA,cACA,aACA,cACA,YACA,WACA,gBACA,aACA,cACA,eACA,WACA,UACA,UACA,YACA,mBACA,mBACA,YACA,cACA,UACA,UACA,eACA,mBACA,cACA,UACA,SACA,YACA,aACA,eACA,WACA,YACA,YACA,YACA,eACA,iBACA,YACA,SACA,mBACA,iBACA,uBACA,kBAEA,gBACA,eACA,iBACA,0BACA,4BACA,6BACA,mBACA,oBACA,iBACA,iBACA,gBACA,kBACA,iBACA,kBACA,iBACA,uBACA,uBACA,gBACA,mBACA,qBACA,oBACA,qBACA,oBACA,qBACA,gBACA,qBACA,sBACA,sBACA,qBACA,oBACA,qBACA,mBACA,kBACA,uBACA,oBACA,qBACA,sBACA,kBACA,iBACA,iBACA,mBACA,0BACA,0BACA,mBACA,qBACA,iBACA,iBACA,sBACA,0BACA,qBACA,iBACA,gBACA,mBACA,oBACA,sBACA,kBACA,mBACA,mBACA,mBACA,sBACA,wBACA,mBACA,gBACA,0BACA,wBACA,8BACA,0BClJIE,GAAuBC,GAAoB,KAK3CC,IAAY,QAAS,SAAU,SAO/BC,GAAoBC,OAAOlH,UAAUmH,KAAK3G,KAC9C,GAAI0G,uPAGAE,GAAa,SAAC7B,EAAM8B,MAClBC,GAAoBP,GAAoBM,UAEC,IAAxCP,GAAqBtF,QAAQ+D,QACXgC,KAAtBD,IAEsC,IAArCA,EAAkB9F,QAAQ+D,IAE1BiC,GAAY,mBAAoC,IAA5BR,GAASxF,QAAQ+D,IACrCkC,GAAc,mBAAsC,IAA9BC,GAAWlG,QAAQ+D,IAGzCa,GAAwB,SAACiB,EAAS9B,SACnB,gBAAZ8B,KACLD,GAAW7B,EAAM8B,IACjBI,GAAYlC,IACZ0B,GAAkB1B,EAAKoC,kBACV,QAAZN,IAAsBG,GAAUjC,QNzCpB,SAAkBrG,EAAImB,GACrC,GAAIlB,GAAQkB,GAAWA,EAAQlB,MAC3BkB,EAAQlB,MACRsH,EAEArH,EAAaiB,GAAWA,EAAQjB,WAChCiB,EAAQjB,WACRsB,CAMJ,QAJeL,GAAWA,EAAQuH,SAC9BvH,EAAQuH,SACRxH,GAEYlB,GACdC,MAAOA,EACPC,WAAYA,KM4BOgH,4uEC5CjByB,GAAcC,GACjBzC,OAAO0C,IACPC,OAAO,SAACC,EAAKC,EAAOC,SAAUA,GAAM3G,QAAQyG,KAASC,ICFpD/E,SAGJ,IAAkC,SAA9BJ,EAAMqF,QAAQnI,MAAM,EAAG,UAGXoI,QAAQ,cAEpB,MAAOC,IAKXnF,GAAYA,IAAaJ,EAAMI,01CCZlBN,GAAU,gBAUjB0F,sNACJC,UAAYC,EAAO9F,EAAKK,MAAMP,SAc9BiG,cAAgB,cACTC,WAAalG,mEAZXmG,MACDnG,GAAQmG,GAAelJ,KAAKsD,MAAMP,mBAC7B/C,KAAKiJ,WAAelG,0DAK5BI,GAAUnD,KAAK8I,uDAUd9I,KAAKkD,QAAQC,WACVC,YAAcpD,KAAKkD,QAAQC,IAAST,UAAU1C,KAAKgJ,6DAMtDhJ,KAAKkD,QAAQC,WACV6F,cAAchJ,KAAKkD,QAAQC,IAASZ,iBACpCuG,UAAUtG,SAASxC,KAAKmJ,+DAIPnF,GACpBhE,KAAKsD,MAAMP,QAAUiB,EAAUjB,YAC5B+F,UAAUtG,SAASxC,KAAKmJ,SAASnF,EAAUjB,4DAK7CK,aAAepD,KAAKoD,qDAIlBpD,MAAKsD,MAAM8F,SAChB/F,EAAMgG,SAASC,KAAKtJ,KAAKsD,MAAM8F,UAC/B,YA/CsB7F,YAmD5BsF,IAAcU,wBACXpG,GAAUM,GAAUC,OAAO8F,YAG9BX,GAAcrF,mBACXL,GAAUM,GAAUC,QAGvBmF,GAAc3D,iBACLzB,GAAUC,OAAO8F,oBACd/F,GAAUgG,MNkGtBrI,OAAOiE,OACL1B,EACAwE,GAAYpC,OAAO,SAAC2D,EAASnB,YACnBA,GAAO5E,EAAU4E,GAClBmB,QAcXtI,OAAOiE,OACL1B,EACAwE,GAAYpC,OAAO,SAAC4D,EAAOpB,MACnBqB,GAAajD,EAAW4B,YACxBqB,GAAcjG,EAAU4E,OACxBqB,GAAYpE,yBAA2BoE,IACvCA,GAAYvD,sBAAuB,EAClCsD,uEOpMLhG,GAAYkG,QAElBzI,QAAOiE,OACL1B,GACAvC,OAAOoF,KAAKqD,IAAe9D,OACzB,SAACnE,EAAGkI,SACW,YAATA,MAEAA,GAAQD,GAAcC,IAEnBlI"}