{"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"}