{"ast":null,"code":"import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React, { PureComponent } from 'react';\nimport createIconSet from \"./createIconSet\";\nexport default function createMultiStyleIconSet(styles) {\n  var optionsInput = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var styleNames = Object.keys(styles);\n\n  if (styleNames.length === 0) {\n    throw new Error('You need to add at least one style');\n  }\n\n  var options = _objectSpread({\n    defaultStyle: styleNames[0],\n    fallbackFamily: function fallbackFamily(_unused) {\n      return styleNames[0];\n    },\n    glyphValidator: function glyphValidator(_unused, __unused) {\n      return true;\n    }\n  }, optionsInput);\n\n  var iconSets = styleNames.reduce(function (acc, name) {\n    var style = styles[name];\n    acc[name] = createIconSet(style.glyphMap || {}, style.fontFamily || '', style.fontFile || '', style.fontStyle || {});\n    return acc;\n  }, {});\n\n  function styleFromProps(props) {\n    return Object.keys(props).reduce(function (result, propName) {\n      return styleNames.indexOf(propName) !== -1 && props[propName] === true ? propName : result;\n    }, options.defaultStyle);\n  }\n\n  function getIconSetForProps(props) {\n    var name = props.name;\n    var style = styleFromProps(props);\n    if (options.glyphValidator(name, style)) return iconSets[style];\n    var family = options.fallbackFamily(name);\n\n    if (styleNames.indexOf(family) === -1) {\n      return options.defaultStyle;\n    }\n\n    return iconSets[family];\n  }\n\n  function selectIconClass(iconSet, iconClass) {\n    return iconClass.length > 0 ? iconSet[iconClass] : iconSet;\n  }\n\n  function reduceProps(props) {\n    return Object.keys(props).reduce(function (acc, prop) {\n      if (styleNames.indexOf(prop) === -1) {\n        acc[prop] = props[prop];\n      }\n\n      return acc;\n    }, {});\n  }\n\n  function getStyledIconSet(style) {\n    var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n    if (styleNames.indexOf(style) === -1) {\n      return iconSets[options.defaultStyle];\n    }\n\n    return !name ? iconSets[styleFromProps(_defineProperty({}, style, true))] : getIconSetForProps(_defineProperty({\n      name: name\n    }, style, true));\n  }\n\n  function getFontFamily() {\n    var style = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : options.defaultStyle;\n    return getStyledIconSet(style).getFontFamily();\n  }\n\n  function getRawGlyphMap() {\n    var style = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : options.defaultStyle;\n    return getStyledIconSet(style).getRawGlyphMap();\n  }\n\n  function hasIcon(name) {\n    var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : options.defaultStyle;\n    return options.glyphValidator(name, style);\n  }\n\n  function createStyledIconClass() {\n    var selectClass = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n    var IconClass = function (_PureComponent) {\n      _inherits(IconClass, _PureComponent);\n\n      var _super = _createSuper(IconClass);\n\n      function IconClass() {\n        _classCallCheck(this, IconClass);\n\n        return _super.apply(this, arguments);\n      }\n\n      _createClass(IconClass, [{\n        key: \"render\",\n        value: function render() {\n          var selectedIconSet = getIconSetForProps(this.props);\n          var SelectedIconClass = selectIconClass(selectedIconSet, selectClass);\n          var props = reduceProps(this.props);\n          return React.createElement(SelectedIconClass, props);\n        }\n      }]);\n\n      return IconClass;\n    }(PureComponent);\n\n    IconClass.defaultProps = styleNames.reduce(function (acc, name) {\n      acc[name] = false;\n      return acc;\n    }, {});\n    IconClass.font = Object.values(styles).reduce(function (acc, style) {\n      acc[style.fontFamily] = style.fontFile;\n      return acc;\n    }, {});\n    IconClass.StyledIconSet = getStyledIconSet;\n    IconClass.getFontFamily = getFontFamily;\n    IconClass.getRawGlyphMap = getRawGlyphMap;\n    IconClass.hasIcon = hasIcon;\n    return IconClass;\n  }\n\n  var Icon = createStyledIconClass();\n  Icon.Button = createStyledIconClass('Button');\n  return Icon;\n}","map":{"version":3,"sources":["../src/createMultiStyleIconSet.ts"],"names":[],"mappings":"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","sourcesContent":["import React, { PureComponent } from 'react';\n\nimport createIconSet from './createIconSet';\n\ntype FontStyle = {\n  fontFamily: string;\n  fontFile: any;\n  glyphMap: any;\n  fontStyle: any;\n};\n\ntype FontStyles = {\n  [key: string]: FontStyle;\n};\n\nexport default function createMultiStyleIconSet(\n  styles: FontStyles,\n  optionsInput = {}\n): any {\n  const styleNames = Object.keys(styles);\n\n  if (styleNames.length === 0) {\n    throw new Error('You need to add at least one style');\n  }\n\n  const options = {\n    defaultStyle: styleNames[0],\n    fallbackFamily: (_unused: any) => styleNames[0],\n    glyphValidator: (_unused: any, __unused: any) => true,\n    ...optionsInput,\n  };\n\n  const iconSets = styleNames.reduce((acc, name) => {\n    const style = styles[name];\n\n    acc[name] = createIconSet(\n      style.glyphMap || {},\n      style.fontFamily || '',\n      style.fontFile || '',\n      style.fontStyle || {}\n    );\n\n    return acc;\n  }, {});\n\n  function styleFromProps(props) {\n    return Object.keys(props).reduce(\n      (result, propName) =>\n        styleNames.indexOf(propName) !== -1 && props[propName] === true\n          ? propName\n          : result,\n      options.defaultStyle\n    );\n  }\n\n  function getIconSetForProps(props) {\n    const { name } = props;\n    const style = styleFromProps(props);\n\n    if (options.glyphValidator(name, style)) return iconSets[style];\n\n    const family = options.fallbackFamily(name);\n\n    if (styleNames.indexOf(family) === -1) {\n      return options.defaultStyle;\n    }\n\n    return iconSets[family];\n  }\n\n  function selectIconClass(iconSet, iconClass) {\n    return iconClass.length > 0 ? iconSet[iconClass] : iconSet;\n  }\n\n  function reduceProps(props) {\n    return Object.keys(props).reduce((acc, prop) => {\n      if (styleNames.indexOf(prop) === -1) {\n        acc[prop] = props[prop];\n      }\n\n      return acc;\n    }, {});\n  }\n\n  function getStyledIconSet(style, name = '') {\n    if (styleNames.indexOf(style) === -1) {\n      return iconSets[options.defaultStyle];\n    }\n\n    return !name\n      ? iconSets[styleFromProps({ [style]: true })]\n      : getIconSetForProps({ name, [style]: true });\n  }\n\n  function getFontFamily(style = options.defaultStyle) {\n    return getStyledIconSet(style).getFontFamily();\n  }\n\n  function getRawGlyphMap(style = options.defaultStyle) {\n    return getStyledIconSet(style).getRawGlyphMap();\n  }\n\n  function hasIcon(name, style = options.defaultStyle) {\n    return options.glyphValidator(name, style);\n  }\n\n  function createStyledIconClass(selectClass = '') {\n    class IconClass extends PureComponent {\n      static defaultProps = styleNames.reduce((acc, name) => {\n        acc[name] = false;\n        return acc;\n      }, {});\n\n      static font = Object.values(styles).reduce((acc, style) => {\n        acc[style.fontFamily] = style.fontFile;\n        return acc;\n      }, {});\n\n      static Button: any;\n\n      static StyledIconSet = getStyledIconSet;\n      static getFontFamily = getFontFamily;\n      static getRawGlyphMap = getRawGlyphMap;\n      static hasIcon = hasIcon;\n\n      render() {\n        const selectedIconSet = getIconSetForProps(this.props);\n        const SelectedIconClass = selectIconClass(selectedIconSet, selectClass);\n        const props = reduceProps(this.props);\n\n        return React.createElement(SelectedIconClass, props);\n      }\n    }\n\n    return IconClass;\n  }\n\n  const Icon = createStyledIconClass();\n  Icon.Button = createStyledIconClass('Button');\n  return Icon;\n}\n"],"sourceRoot":""},"metadata":{},"sourceType":"module"}