MOON
Server: Apache
System: Linux server1.studioinfinity.com.br 2.6.32-954.3.5.lve1.4.90.el6.x86_64 #1 SMP Tue Feb 21 12:26:30 UTC 2023 x86_64
User: artinside (517)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/artinside/www/lhh/admin-assets/assets/colorpicker/js/bootstrap-colorpicker.min.js.map
/*!
 * Bootstrap Colorpicker - Simple and customizable colorpicker component for Twitter Bootstrap.
 * @package bootstrap-colorpicker
 * @version v3.0.0-wip
 * @license MIT
 * @link https://farbelous.github.io/bootstrap-colorpicker/
 * @link https://github.com/farbelous/bootstrap-colorpicker.git
 */
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///bootstrap-colorpicker.min.js","webpack:///webpack/bootstrap 32081b809d19519bb29c","webpack:///external \"jQuery\"","webpack:///./src/js/Extension.js","webpack:///./src/js/extensions/Palette.js","webpack:///./src/js/jquery-plugin.js","webpack:///./src/js/Colorpicker.js","webpack:///./src/js/Color.js","webpack:///./node_modules/tinycolor2/tinycolor.js","webpack:///./src/js/options.js","webpack:///./src/js/extensions/index.js","webpack:///./src/js/extensions/Debugger.js","webpack:///./src/js/extensions/Preview.js","webpack:///./src/js/extensions/Swatches.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_0__","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","_classCallCheck","instance","Constructor","TypeError","value","_createClass","defineProperties","target","props","length","descriptor","writable","key","protoProps","staticProps","_jquery","_jquery2","obj","default","Extension","colorpicker","options","arguments","undefined","element","Error","on","proxy","onCreate","onDestroy","onUpdate","onChange","onInvalid","onShow","onHide","onEnable","onDisable","color","event","off","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","create","constructor","setPrototypeOf","__proto__","_typeof","Symbol","iterator","_Extension2","_Extension3","defaults","colors","namesAsValues","Palette","_Extension","_this","getPrototypeOf","assign","Array","isArray","keys","getLength","indexOf","toUpperCase","toLowerCase","getName","getValue","defaultValue","_interopRequireDefault","_Colorpicker","_Colorpicker2","plugin","fn","option","apiArgs","slice","isSingleElement","returnValue","$jq","each","$this","inst","data","isFunction","apply","_Color","_Color2","_options","_options2","_extensions","_extensions2","colorPickerIdCounter","Colorpicker","id","addClass","attr","extensions","component","find","container","currentSlider","mousePointer","left","top","lastEvent","e","input","is","debug","push","forEach","ext","addExtension","colorValue","createColor","format","disabled","$picker","picker","template","customClass","inline","horizontal","useAlpha","hasColor","hasTransparency","align","currentTarget","preventDefault","_mousedown","appendTo","hasInput","keyup.colorpicker","_keyup","change.colorpicker","_change","focus.colorpicker","show","focusout.colorpicker","hide","click.colorpicker","has","update","trigger","type","set","extensionName","ExtensionClass","config","remove","removeData","removeClass","str","toCssColorString","useHashPrefix","replace","_resolveColor","toString","window","document","body","offset","outerWidth","css","outerHeight","isVisible","isDisabled","_reposition","stopPropagation","mousedown.colorpicker","isHidden","parents","hasClass","val","toInputColorString","prop","vertical","sl","sliders","slidersHorz","saturationGuide","hueGuide","alphaGuide","hsva","hsvaRatio","hue","maxTop","maxLeft","h","alpha","a","saturation","v","getHueOnlyCopy","toHexString","icn","eq","backgroundColor","force","_shouldUpdate","_updateComponent","autoInputFallback","_updateInput","_updatePicker","fallbackColor","candidates","map","item","equals","shouldForceUpdate","useFallback","isValid","invalidColor","fallback","previous","isAlphaEnabled","setAlpha","prevHsva","setHueRatio","extResolvedColor","resolveColor","pageX","pageY","originalEvent","touches","zone","closest","extend","guide","style","mousemove.colorpicker","_mousemove","touchmove.colorpicker","mouseup.colorpicker","_mouseup","touchend.colorpicker","getCopy","Math","max","min","callLeft","callTop","setValue","match","enableHex8","unwrapColor","r","_r","g","_g","b","_b","_a","getCompatibleFormat","String","_get","receiver","Function","desc","getOwnPropertyDescriptor","parent","_tinycolor2","_tinycolor3","Color","_tinycolor","_originalInput","_hbak","_tc_id","_format","gradientType","_gradientType","toHsv","hsv","_roundA","_ok","importRgb","importHsv","setHue","setSaturation","setBrightness","colorStr","isTransparent","__WEBPACK_AMD_DEFINE_RESULT__","tinycolor","opts","rgb","inputToRGB","mathRound","ok","tinyCounter","stringInputToObject","isValidCSSUnit","rgbToRgb","substr","convertToPercentage","hsvToRgb","hslToRgb","boundAlpha","mathMin","mathMax","bound01","rgbToHsl","hue2rgb","q","t","rgbToHsv","floor","f","mod","rgbToHex","allow3Char","hex","pad2","charAt","join","rgbaToHex","allow4Char","convertDecimalToHex","rgbaToArgbHex","desaturate","amount","hsl","toHsl","clamp01","saturate","greyscale","lighten","brighten","toRgb","darken","spin","complement","triad","tetrad","splitcomplement","analogous","results","slices","part","ret","monochromatic","modification","parseFloat","isNaN","isOnePointZero","processPercent","isPercentage","parseInt","abs","parseIntFromHex","round","convertHexToDecimal","matchers","CSS_UNIT","exec","trimLeft","trimRight","named","names","rgba","hsla","hex8","hex6","hex4","hex3","validateWCAG2Parms","parms","level","size","mathRandom","random","isDark","getBrightness","isLight","getOriginalInput","getFormat","getAlpha","getLuminance","RsRGB","GsRGB","BsRGB","R","G","B","pow","toHsvString","toHslString","toHex","toHex8","toHex8String","toRgbString","toPercentageRgb","toPercentageRgbString","toName","hexNames","toFilter","secondColor","hex8String","secondHex8String","formatSet","formattedString","hasAlpha","clone","_applyModification","args","concat","_applyCombination","fromRatio","newColor","color1","color2","mix","rgb1","rgb2","readability","c1","c2","isReadable","wcag2","wcag2Parms","out","mostReadable","baseColor","colorList","includeFallbackColors","bestColor","bestScore","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","flipped","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","RegExp","showText","Swatches","Preview","Debugger","_Debugger","_Debugger2","_Preview","_Preview2","_Swatches","_Swatches2","_Palette","_Palette2","debugger","preview","swatches","palette","eventCounter","onChangeInput","eventName","_console","_len","_key","logMessage","console","logArgs","log","elementInner","append","html","_Palette3","barTemplate","swatchTemplate","_this2","isEnabled","swatchContainer","isAliased","$swatch"],"mappings":"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","file":"bootstrap-colorpicker.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jQuery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"bootstrap-colorpicker\", [\"jQuery\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"bootstrap-colorpicker\"] = factory(require(\"jQuery\"));\n\telse\n\t\troot[\"bootstrap-colorpicker\"] = factory(root[\"jQuery\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_0__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jQuery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"bootstrap-colorpicker\", [\"jQuery\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"bootstrap-colorpicker\"] = factory(require(\"jQuery\"));\n\telse\n\t\troot[\"bootstrap-colorpicker\"] = factory(root[\"jQuery\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_0__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 3);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Colorpicker extension class.\n */\nvar Extension = function () {\n  /**\n   * @param {Colorpicker} colorpicker\n   * @param {Object} options\n   */\n  function Extension(colorpicker) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Extension);\n\n    /**\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n    /**\n     * @type {Object}\n     */\n    this.options = options;\n\n    if (!(this.colorpicker.element && this.colorpicker.element.length)) {\n      throw new Error('Extension: this.colorpicker.element is not valid');\n    }\n\n    this.colorpicker.element.on('colorpickerCreate.colorpicker-ext', _jquery2.default.proxy(this.onCreate, this));\n    this.colorpicker.element.on('colorpickerDestroy.colorpicker-ext', _jquery2.default.proxy(this.onDestroy, this));\n    this.colorpicker.element.on('colorpickerUpdate.colorpicker-ext', _jquery2.default.proxy(this.onUpdate, this));\n    this.colorpicker.element.on('colorpickerChange.colorpicker-ext', _jquery2.default.proxy(this.onChange, this));\n    this.colorpicker.element.on('colorpickerInvalid.colorpicker-ext', _jquery2.default.proxy(this.onInvalid, this));\n    this.colorpicker.element.on('colorpickerShow.colorpicker-ext', _jquery2.default.proxy(this.onShow, this));\n    this.colorpicker.element.on('colorpickerHide.colorpicker-ext', _jquery2.default.proxy(this.onHide, this));\n    this.colorpicker.element.on('colorpickerEnable.colorpicker-ext', _jquery2.default.proxy(this.onEnable, this));\n    this.colorpicker.element.on('colorpickerDisable.colorpicker-ext', _jquery2.default.proxy(this.onDisable, this));\n  }\n\n  /**\n   * Function called every time a new color needs to be created.\n   * Return false to skip this resolver and continue with other extensions' ones\n   * or return anything else to consider the color resolved.\n   *\n   * @param {Color|String|*} color\n   * @return {Color|String|*}\n   */\n\n\n  _createClass(Extension, [{\n    key: 'resolveColor',\n    value: function resolveColor(color) {\n      return false;\n    }\n\n    /**\n     * @listens colorpickerCreate\n     * @param {Event} event\n     */\n\n  }, {\n    key: 'onCreate',\n    value: function onCreate(event) {}\n    // to be extended\n\n\n    /**\n     * @listens colorpickerDestroy\n     * @param {Event} event\n     */\n\n  }, {\n    key: 'onDestroy',\n    value: function onDestroy(event) {\n      this.colorpicker.element.off('.colorpicker-ext');\n    }\n\n    /**\n     * @listens colorpickerUpdate\n     * @param {Event} event\n     */\n\n  }, {\n    key: 'onUpdate',\n    value: function onUpdate(event) {}\n    // to be extended\n\n\n    /**\n     * @listens colorpickerChange\n     * @param {Event} event\n     */\n\n  }, {\n    key: 'onChange',\n    value: function onChange(event) {}\n    // to be extended\n\n\n    /**\n     * @listens colorpickerInvalid\n     * @param {Event} event\n     */\n\n  }, {\n    key: 'onInvalid',\n    value: function onInvalid(event) {}\n    // to be extended\n\n\n    /**\n     * @listens colorpickerHide\n     * @param {Event} event\n     */\n\n  }, {\n    key: 'onHide',\n    value: function onHide(event) {}\n    // to be extended\n\n\n    /**\n     * @listens colorpickerShow\n     * @param {Event} event\n     */\n\n  }, {\n    key: 'onShow',\n    value: function onShow(event) {}\n    // to be extended\n\n\n    /**\n     * @listens colorpickerDisable\n     * @param {Event} event\n     */\n\n  }, {\n    key: 'onDisable',\n    value: function onDisable(event) {}\n    // to be extended\n\n\n    /**\n     * @listens colorpickerEnable\n     * @param {Event} event\n     */\n\n  }, {\n    key: 'onEnable',\n    value: function onEnable(event) {\n      // to be extended\n    }\n  }]);\n\n  return Extension;\n}();\n\nexports.default = Extension;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Extension2 = __webpack_require__(1);\n\nvar _Extension3 = _interopRequireDefault(_Extension2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar defaults = {\n  /**\n   * Key-value pairs defining a color alias and its CSS color representation.\n   *\n   * They can also be just an array of values. In that case, no special names are used, only the real colors.\n   *\n   * @type {Object|Array}\n   * @default null\n   * @example\n   *  {\n   *   'black': '#000000',\n   *   'white': '#ffffff',\n   *   'red': '#FF0000',\n   *   'default': '#777777',\n   *   'primary': '#337ab7',\n   *   'success': '#5cb85c',\n   *   'info': '#5bc0de',\n   *   'warning': '#f0ad4e',\n   *   'danger': '#d9534f'\n   *  }\n   *\n   * @example ['#f0ad4e', '#337ab7', '#5cb85c']\n   */\n  colors: null,\n  /**\n   * If true, the when a color swatch is selected the name (alias) will be used as input value,\n   * otherwise the swatch real color value will be used.\n   *\n   * @type {boolean}\n   * @default true\n   */\n  namesAsValues: true\n};\n\nvar Palette = function (_Extension) {\n  _inherits(Palette, _Extension);\n\n  _createClass(Palette, [{\n    key: 'colors',\n\n\n    /**\n     * @returns {Object|Array}\n     */\n    get: function get() {\n      return this.options.colors;\n    }\n  }]);\n\n  function Palette(colorpicker) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Palette);\n\n    var _this = _possibleConstructorReturn(this, (Palette.__proto__ || Object.getPrototypeOf(Palette)).call(this, colorpicker, Object.assign({}, defaults, options)));\n\n    if (!Array.isArray(_this.options.colors) && _typeof(_this.options.colors) !== 'object') {\n      _this.options.colors = null;\n    }\n    return _this;\n  }\n\n  /**\n   * @returns {int}\n   */\n\n\n  _createClass(Palette, [{\n    key: 'getLength',\n    value: function getLength() {\n      if (!this.options.colors) {\n        return 0;\n      }\n\n      if (Array.isArray(this.options.colors)) {\n        return this.options.colors.length;\n      }\n\n      if (_typeof(this.options.colors) === 'object') {\n        return Object.keys(this.options.colors).length;\n      }\n\n      return 0;\n    }\n  }, {\n    key: 'resolveColor',\n    value: function resolveColor(color) {\n      if (this.getLength() <= 0) {\n        return false;\n      }\n\n      if (Array.isArray(this.options.colors)) {\n        if (this.options.colors.indexOf(color) >= 0) {\n          return color;\n        }\n        if (this.options.colors.indexOf(color.toUpperCase()) >= 0) {\n          return color.toUpperCase();\n        }\n        if (this.options.colors.indexOf(color.toLowerCase()) >= 0) {\n          return color.toLowerCase();\n        }\n        return false;\n      }\n\n      if (_typeof(this.options.colors) !== 'object') {\n        return false;\n      }\n\n      if (!this.options.namesAsValues) {\n        return this.getValue(color, false);\n      }\n      return this.getName(color, this.getName('#' + color, this.getValue(color, false)));\n    }\n\n    /**\n     * Given a color value, returns the corresponding color name or defaultValue.\n     *\n     * @param {String} value\n     * @param {*} defaultValue\n     * @returns {*}\n     */\n\n  }, {\n    key: 'getName',\n    value: function getName(value) {\n      var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (!(typeof value === 'string') || !this.options.colors) {\n        return defaultValue;\n      }\n      for (var name in this.options.colors) {\n        if (!this.options.colors.hasOwnProperty(name)) {\n          continue;\n        }\n        if (this.options.colors[name].toLowerCase() === value.toLowerCase()) {\n          return name;\n        }\n      }\n      return defaultValue;\n    }\n\n    /**\n     * Given a color name, returns the corresponding color value or defaultValue.\n     *\n     * @param {String} name\n     * @param {*} defaultValue\n     * @returns {*}\n     */\n\n  }, {\n    key: 'getValue',\n    value: function getValue(name) {\n      var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (!(typeof name === 'string') || !this.options.colors) {\n        return defaultValue;\n      }\n      if (this.options.colors.hasOwnProperty(name)) {\n        return this.options.colors[name];\n      }\n      return defaultValue;\n    }\n  }]);\n\n  return Palette;\n}(_Extension3.default);\n\nexports.default = Palette;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _Colorpicker = __webpack_require__(4);\n\nvar _Colorpicker2 = _interopRequireDefault(_Colorpicker);\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar plugin = 'colorpicker';\n\n_jquery2.default[plugin] = _Colorpicker2.default;\n\n_jquery2.default.fn[plugin] = function (option) {\n  var apiArgs = Array.prototype.slice.call(arguments, 1),\n      isSingleElement = this.length === 1,\n      returnValue = null;\n\n  var $jq = this.each(function () {\n    var $this = (0, _jquery2.default)(this),\n        inst = $this.data(plugin),\n        options = (typeof option === 'undefined' ? 'undefined' : _typeof(option)) === 'object' ? option : {};\n\n    if (!inst) {\n      inst = new _Colorpicker2.default(this, options);\n      $this.data(plugin, inst);\n    }\n\n    if (typeof option === 'string') {\n      if (option === 'colorpicker') {\n        returnValue = inst;\n      } else if (_jquery2.default.isFunction(inst[option])) {\n        returnValue = inst[option].apply(inst, apiArgs);\n      } else {\n        // its a property ?\n        if (apiArgs.length) {\n          // set property\n          inst[option] = apiArgs[0];\n        }\n        returnValue = inst[option];\n      }\n    } else {\n      returnValue = $this;\n    }\n  });\n\n  return isSingleElement ? returnValue : $jq;\n};\n\n_jquery2.default.fn[plugin].constructor = _Colorpicker2.default;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Color = __webpack_require__(5);\n\nvar _Color2 = _interopRequireDefault(_Color);\n\nvar _Extension = __webpack_require__(1);\n\nvar _Extension2 = _interopRequireDefault(_Extension);\n\nvar _options = __webpack_require__(7);\n\nvar _options2 = _interopRequireDefault(_options);\n\nvar _extensions = __webpack_require__(8);\n\nvar _extensions2 = _interopRequireDefault(_extensions);\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar colorPickerIdCounter = 0;\n\n/**\n * Colorpicker widget class\n */\n\nvar Colorpicker = function () {\n  _createClass(Colorpicker, [{\n    key: 'color',\n\n\n    /**\n     * color getter\n     *\n     * @type {Color|null}\n     */\n    get: function get() {\n      return this.element.data('color');\n    }\n\n    /**\n     * color setter\n     *\n     * @ignore\n     * @param {Color|null} value\n     */\n    ,\n    set: function set(value) {\n      this.element.data('color', value);\n    }\n\n    /**\n     * @fires colorpickerCreate\n     * @param {Object|String} element\n     * @param {Object} options\n     * @constructor\n     */\n\n  }], [{\n    key: 'Color',\n\n    /**\n     * Color class\n     *\n     * @static\n     * @type {Color}\n     */\n    get: function get() {\n      return _Color2.default;\n    }\n\n    /**\n     * Extension class\n     *\n     * @static\n     * @type {Extension}\n     */\n\n  }, {\n    key: 'Extension',\n    get: function get() {\n      return _Extension2.default;\n    }\n\n    /**\n     * Colorpicker bundled extension classes\n     *\n     * @static\n     * @type {{Extension}}\n     */\n\n  }, {\n    key: 'Extensions',\n    get: function get() {\n      return _extensions2.default;\n    }\n  }]);\n\n  function Colorpicker(element, options) {\n    var _this = this;\n\n    _classCallCheck(this, Colorpicker);\n\n    colorPickerIdCounter += 1;\n    /**\n     * The colorpicker instance number\n     * @type {number}\n     */\n    this.id = colorPickerIdCounter;\n\n    /**\n     * @type {*|jQuery}\n     */\n    this.element = (0, _jquery2.default)(element).addClass('colorpicker-element');\n    this.element.attr('data-colorpicker-id', this.id);\n\n    /**\n     * @type {defaults}\n     */\n    this.options = Object.assign({}, _options2.default, options, this.element.data());\n\n    /**\n     * @type {Extension[]}\n     */\n    this.extensions = [];\n\n    if (!Array.isArray(this.options.extensions)) {\n      this.options.extensions = [];\n    }\n\n    /**\n     * @type {*|jQuery}\n     */\n    this.component = this.options.component;\n    this.component = this.component !== false ? this.element.find(this.component) : false;\n    if (this.component && this.component.length === 0) {\n      this.component = false;\n    }\n\n    /**\n     * @type {*|jQuery}\n     */\n    this.container = this.options.container === true ? this.element : this.options.container;\n    this.container = this.container !== false ? (0, _jquery2.default)(this.container) : false;\n\n    /**\n     * @type {*|String}\n     * @private\n     */\n    this.currentSlider = null;\n\n    /**\n     * @type {{left: number, top: number}}\n     * @private\n     */\n    this.mousePointer = {\n      left: 0,\n      top: 0\n    };\n\n    /**\n     * Latest external event\n     *\n     * @type {{name: String, e: *}}\n     * @private\n     */\n    this.lastEvent = {\n      name: null,\n      e: null\n    };\n\n    // Is the element an input? Should we search inside for any input?\n    /**\n     * @type {*|jQuery}\n     */\n    this.input = this.element.is('input') ? this.element : this.options.input ? this.element.find(this.options.input) : false;\n\n    if (this.input && this.input.length === 0) {\n      this.input = false;\n    }\n\n    if (this.options.debug) {\n      this.options.extensions.push({ name: 'Debugger' });\n    }\n\n    // Register extensions\n    this.options.extensions.forEach(function (ext) {\n      _this.addExtension(ext.name, _extensions2.default[ext.name.toLowerCase()], ext);\n    });\n\n    var colorValue = this.options.color !== false ? this.options.color : this.getValue();\n\n    this.color = colorValue ? this.createColor(colorValue) : false;\n\n    if (this.options.format === false) {\n      // If format is false, use the first parsed one from now on\n      this.options.format = this.color.format;\n    }\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.disabled = false;\n\n    // Setup picker\n    var $picker = this.picker = (0, _jquery2.default)(this.options.template);\n\n    if (this.options.customClass) {\n      $picker.addClass(this.options.customClass);\n    }\n    if (this.options.inline) {\n      $picker.addClass('colorpicker-inline colorpicker-visible');\n    } else {\n      $picker.addClass('colorpicker-hidden');\n    }\n    if (this.options.horizontal) {\n      $picker.addClass('colorpicker-horizontal');\n    }\n\n    if ((this.options.useAlpha || this.hasColor() && this.color.hasTransparency()) && this.options.useAlpha !== false) {\n      this.options.useAlpha = true;\n      $picker.addClass('colorpicker-with-alpha');\n    }\n\n    if (this.options.align === 'right') {\n      $picker.addClass('colorpicker-right');\n    }\n    if (this.options.inline === true) {\n      $picker.addClass('colorpicker-no-arrow');\n    }\n\n    // Prevent closing the colorpicker when clicking on itself\n    $picker.on('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(function (e) {\n      if (e.target === e.currentTarget) {\n        e.preventDefault();\n      }\n    }, this));\n\n    // Bind click/tap events on the sliders\n    $picker.find('.colorpicker-saturation, .colorpicker-hue, .colorpicker-alpha').on('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(this._mousedown, this));\n\n    $picker.appendTo(this.container ? this.container : (0, _jquery2.default)('body'));\n\n    // Bind other events\n    if (this.hasInput()) {\n      this.input.on({\n        'keyup.colorpicker': _jquery2.default.proxy(this._keyup, this)\n      });\n      this.input.on({\n        'change.colorpicker': _jquery2.default.proxy(this._change, this)\n      });\n      if (this.component === false) {\n        this.element.on({\n          'focus.colorpicker': _jquery2.default.proxy(this.show, this)\n        });\n      }\n      if (this.options.inline === false) {\n        this.element.on({\n          'focusout.colorpicker': _jquery2.default.proxy(this.hide, this)\n        });\n      }\n    }\n\n    if (this.component !== false) {\n      this.component.on({\n        'click.colorpicker': _jquery2.default.proxy(this.show, this)\n      });\n    }\n\n    if (this.hasInput() === false && this.component === false && !this.element.has('.colorpicker')) {\n      this.element.on({\n        'click.colorpicker': _jquery2.default.proxy(this.show, this)\n      });\n    }\n\n    // for HTML5 input[type='color']\n    if (this.hasInput() && this.component !== false && this.input.attr('type') === 'color') {\n      this.input.on({\n        'click.colorpicker': _jquery2.default.proxy(this.show, this),\n        'focus.colorpicker': _jquery2.default.proxy(this.show, this)\n      });\n    }\n\n    // Update if there is a color option\n    this.update(this.options.color !== false);\n\n    (0, _jquery2.default)(_jquery2.default.proxy(function () {\n      /**\n       * (Colorpicker) When the Colorpicker instance has been created and the DOM is ready.\n       *\n       * @event colorpickerCreate\n       */\n      this.element.trigger({\n        type: 'colorpickerCreate',\n        colorpicker: this,\n        color: this.color\n      });\n    }, this));\n  }\n\n  /**\n   * Creates and registers the given extension\n   *\n   * @param {String|Extension} extensionName\n   * @param {Extension} ExtensionClass\n   * @param {Object} [config]\n   * @returns {Extension}\n   */\n\n\n  _createClass(Colorpicker, [{\n    key: 'addExtension',\n    value: function addExtension(extensionName, ExtensionClass) {\n      var config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      var ext = extensionName instanceof _Extension2.default ? extensionName : new ExtensionClass(this, config);\n\n      this.extensions.push(ext);\n      return ext;\n    }\n\n    /**\n     * Destroys the current instance\n     *\n     * @fires colorpickerDestroy\n     */\n\n  }, {\n    key: 'destroy',\n    value: function destroy() {\n      this.picker.remove();\n      this.element.removeData('colorpicker', 'color').off('.colorpicker');\n      if (this.hasInput()) {\n        this.input.off('.colorpicker');\n      }\n      if (this.component !== false) {\n        this.component.off('.colorpicker');\n      }\n      this.element.removeClass('colorpicker-element');\n\n      /**\n       * (Colorpicker) When the instance is destroyed with all events unbound.\n       *\n       * @event colorpickerDestroy\n       */\n      this.element.trigger({\n        type: 'colorpickerDestroy',\n        colorpicker: this,\n        color: this.color\n      });\n    }\n\n    /**\n     * Returns true if the current color object is an instance of Color, false otherwise.\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'hasColor',\n    value: function hasColor() {\n      return this.color instanceof _Color2.default;\n    }\n\n    /**\n     * @returns {*|String|Color}\n     */\n\n  }, {\n    key: 'toInputColorString',\n\n\n    /**\n     * Formatted color string, with the formatting options applied\n     * (e.g. useHashPrefix)\n     * @returns {String}\n     */\n    value: function toInputColorString() {\n      var str = this.toCssColorString();\n\n      if (!str) {\n        return str;\n      }\n\n      if (this.options.useHashPrefix === false) {\n        str = str.replace(/^#/g, '');\n      }\n\n      return this._resolveColor(str);\n    }\n\n    /**\n     * Formatted color string, suitable for CSS\n     * @returns {String}\n     */\n\n  }, {\n    key: 'toCssColorString',\n    value: function toCssColorString() {\n      if (!this.hasColor()) {\n        return '';\n      }\n      return this.color.toString(this.format);\n    }\n\n    /**\n     * If the widget is not inside a container or inline, rearranges its position relative to its element offset.\n     *\n     * @param {Event} [e]\n     * @private\n     * @returns {boolean} Returns false if the widget is inside a container or inline, true otherwise\n     */\n\n  }, {\n    key: '_reposition',\n    value: function _reposition(e) {\n      this.lastEvent.name = 'reposition';\n      this.lastEvent.e = e;\n\n      if (this.options.inline !== false || this.options.container) {\n        return false;\n      }\n      var type = this.container && this.container[0] !== window.document.body ? 'position' : 'offset';\n      var element = this.component || this.element;\n      var offset = element[type]();\n\n      if (this.options.align === 'right') {\n        offset.left -= this.picker.outerWidth() - element.outerWidth();\n      }\n      this.picker.css({\n        top: offset.top + element.outerHeight(),\n        left: offset.left\n      });\n      return true;\n    }\n\n    /**\n     * Shows the colorpicker widget if hidden.\n     * If the input is disabled this call will be ignored.\n     *\n     * @fires colorpickerShow\n     * @param {Event} [e]\n     * @returns {boolean} True if was hidden and afterwards visible, false if nothing happened.\n     */\n\n  }, {\n    key: 'show',\n    value: function show(e) {\n      this.lastEvent.name = 'show';\n      this.lastEvent.e = e;\n\n      if (this.isVisible() || this.isDisabled()) {\n        // Don't show the widget if it's already visible or it is disabled\n        return false;\n      }\n      this.picker.addClass('colorpicker-visible').removeClass('colorpicker-hidden');\n\n      this._reposition(e);\n      (0, _jquery2.default)(window).on('resize.colorpicker', _jquery2.default.proxy(this._reposition, this));\n\n      if (e && (!this.hasInput() || this.input.attr('type') === 'color')) {\n        if (e.stopPropagation && e.preventDefault) {\n          e.stopPropagation();\n          e.preventDefault();\n        }\n      }\n      if ((this.component || !this.input) && this.options.inline === false) {\n        (0, _jquery2.default)(window.document).on({\n          'mousedown.colorpicker': _jquery2.default.proxy(this.hide, this)\n        });\n      }\n\n      /**\n       * (Colorpicker) When show() is called and the widget can be shown.\n       *\n       * @event colorpickerShow\n       */\n      this.element.trigger({\n        type: 'colorpickerShow',\n        colorpicker: this,\n        color: this.color\n      });\n\n      return true;\n    }\n\n    /**\n     * Hides the colorpicker widget.\n     * Hide is prevented when it is triggered by an event whose target element has been clicked/touched.\n     *\n     * @fires colorpickerHide\n     * @param {Event} [e]\n     * @returns {boolean} True if was visible and afterwards hidden, false if nothing happened.\n     */\n\n  }, {\n    key: 'hide',\n    value: function hide(e) {\n      this.lastEvent.name = 'hide';\n      this.lastEvent.e = e;\n\n      if (this.isHidden()) {\n        // Do not trigger if already hidden\n        return false;\n      }\n      if (typeof e !== 'undefined' && e.target) {\n        // Prevent hide if triggered by an event and an element inside the colorpicker has been clicked/touched\n        if ((0, _jquery2.default)(e.currentTarget).parents('.colorpicker').length > 0 || (0, _jquery2.default)(e.target).parents('.colorpicker').length > 0) {\n          return false;\n        }\n      }\n      this.picker.addClass('colorpicker-hidden').removeClass('colorpicker-visible');\n      (0, _jquery2.default)(window).off('resize.colorpicker', this._reposition);\n      (0, _jquery2.default)(window.document).off({\n        'mousedown.colorpicker': this.hide\n      });\n\n      /**\n       * (Colorpicker) When hide() is called and the widget can be hidden.\n       *\n       * @event colorpickerHide\n       */\n      this.element.trigger({\n        type: 'colorpickerHide',\n        colorpicker: this,\n        color: this.color\n      });\n      return true;\n    }\n\n    /**\n     * Returns true if the colorpicker element has the colorpicker-visible class and not the colorpicker-hidden one.\n     * False otherwise.\n     *\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'isVisible',\n    value: function isVisible() {\n      return this.picker.hasClass('colorpicker-visible') && !this.picker.hasClass('colorpicker-hidden');\n    }\n\n    /**\n     * Returns true if the colorpicker element has the colorpicker-hidden class and not the colorpicker-visible one.\n     * False otherwise.\n     *\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'isHidden',\n    value: function isHidden() {\n      return this.picker.hasClass('colorpicker-hidden') && !this.picker.hasClass('colorpicker-visible');\n    }\n\n    /**\n     * If the input element is present, it updates the value with the current color object color string.\n     * If value is set, this method fires a \"change\" event on the input element.\n     *\n     * @fires change\n     * @private\n     */\n\n  }, {\n    key: '_updateInput',\n    value: function _updateInput() {\n      if (this.hasInput()) {\n        var val = this.toInputColorString();\n\n        if (val === this.input.prop('value')) {\n          // No need to set value or trigger any event if nothing changed\n          return;\n        }\n\n        this.input.prop('value', val ? val : '');\n\n        /**\n         * (Input) Triggered on the input element when a new color is selected.\n         *\n         * @event change\n         */\n        this.input.trigger({\n          type: 'change',\n          colorpicker: this,\n          color: this.color,\n          value: val\n        });\n      }\n    }\n\n    /**\n     * Changes the color adjustment bars using the current color object information.\n     * @private\n     */\n\n  }, {\n    key: '_updatePicker',\n    value: function _updatePicker() {\n      if (!this.hasColor()) {\n        return;\n      }\n\n      var vertical = this.options.horizontal === false,\n          sl = vertical ? this.options.sliders : this.options.slidersHorz;\n\n      var saturationGuide = this.picker.find('.colorpicker-saturation .colorpicker-guide'),\n          hueGuide = this.picker.find('.colorpicker-hue .colorpicker-guide'),\n          alphaGuide = this.picker.find('.colorpicker-alpha .colorpicker-guide');\n\n      var hsva = this.color.hsvaRatio;\n\n      if (hueGuide.length) {\n        hueGuide.css(vertical ? 'top' : 'left', (vertical ? sl.hue.maxTop : sl.hue.maxLeft) * (1 - hsva.h));\n      }\n\n      if (alphaGuide.length) {\n        alphaGuide.css(vertical ? 'top' : 'left', (vertical ? sl.alpha.maxTop : sl.alpha.maxLeft) * (1 - hsva.a));\n      }\n\n      if (saturationGuide.length) {\n        saturationGuide.css({\n          'top': sl.saturation.maxTop - hsva.v * sl.saturation.maxTop,\n          'left': hsva.s * sl.saturation.maxLeft\n        });\n      }\n\n      this.picker.find('.colorpicker-saturation').css('backgroundColor', this.color.getHueOnlyCopy().toHexString()); // we only need hue\n\n      this.picker.find('.colorpicker-alpha').css('backgroundColor', this.color.toString('hex6')); // we don't need alpha\n    }\n\n    /**\n     * If the component element is present, its background color is updated\n     * @private\n     */\n\n  }, {\n    key: '_updateComponent',\n    value: function _updateComponent() {\n      if (!this.hasColor()) {\n        return;\n      }\n\n      if (this.component !== false) {\n        var icn = this.component.find('i').eq(0);\n\n        if (icn.length > 0) {\n          icn.css({\n            'backgroundColor': this.toCssColorString()\n          });\n        } else {\n          this.component.css({\n            'backgroundColor': this.toCssColorString()\n          });\n        }\n      }\n    }\n\n    /**\n     * @private\n     * @returns {boolean}\n     */\n\n  }, {\n    key: '_shouldUpdate',\n    value: function _shouldUpdate() {\n      return this.hasColor() && this.getValue(false) !== false;\n    }\n\n    /**\n     * Updated the component color, the input value and the widget if a color is present.\n     *\n     * If force is true, it is updated anyway.\n     *\n     * @fires colorpickerUpdate\n     * @param {boolean} [force]\n     */\n\n  }, {\n    key: 'update',\n    value: function update() {\n      var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      if (this._shouldUpdate() || force === true) {\n        // Update only if the current value (from input or data) is not empty\n        this._updateComponent();\n\n        // Do not update input when autoInputFallback is disabled and last event is keyup.\n        var preventInputUpdate = this.options.autoInputFallback !== true &&\n        // this.isInvalidColor() ||  // prevent also on invalid color (on create, leaves invalid colors)\n        this.lastEvent.name === 'keyup';\n\n        if (!preventInputUpdate) {\n          this._updateInput();\n        }\n\n        this._updatePicker();\n\n        /**\n         * (Colorpicker) Fired when the widget is updated.\n         *\n         * @event colorpickerUpdate\n         */\n        this.element.trigger({\n          type: 'colorpickerUpdate',\n          colorpicker: this,\n          color: this.color\n        });\n      }\n    }\n\n    /**\n     * Returns the color string from the input value or the 'data-color' attribute of the input or element.\n     * If empty, it returns the defaultValue parameter.\n     *\n     * @param {String|*} [defaultValue]\n     * @returns {String|*}\n     */\n\n  }, {\n    key: 'getValue',\n    value: function getValue() {\n      var defaultValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n      defaultValue = typeof defaultValue === 'undefined' ? this.fallbackColor : defaultValue;\n      var candidates = [],\n          val = false;\n\n      if (this.hasInput()) {\n        candidates.push(this.input.val());\n        candidates.push(this.input.data('color'));\n      }\n      candidates.push(this.element.data('color'));\n\n      candidates.map(function (item) {\n        if (item && val === false) {\n          val = item;\n        }\n      });\n\n      val = val === false ? defaultValue : val;\n\n      if (val instanceof _Color2.default) {\n        return val.toString(this.format);\n      }\n\n      return val;\n    }\n\n    /**\n     * Sets the color manually\n     *\n     * @fires colorpickerChange\n     * @param {String|Color} val\n     */\n\n  }, {\n    key: 'setValue',\n    value: function setValue(val) {\n      if (this.hasColor() && this.color.equals(val)) {\n        // equal color object\n        return;\n      }\n\n      var color = val ? this.createColor(val) : false;\n\n      if (!this.hasColor() && !color) {\n        // color was empty and the new one too\n        return;\n      }\n\n      // force update if color is changed to empty\n      var shouldForceUpdate = this.hasColor() && !color;\n\n      this.color = color;\n\n      /**\n       * (Colorpicker) When the color is set programmatically with setValue().\n       *\n       * @event colorpickerChange\n       */\n      this.element.trigger({\n        type: 'colorpickerChange',\n        colorpicker: this,\n        color: this.color,\n        value: val\n      });\n\n      // force update if color has changed to empty\n      this.update(shouldForceUpdate);\n    }\n\n    /**\n     * Creates a new color using the widget instance options (fallbackColor, format).\n     *\n     * @fires colorpickerInvalid\n     * @param {*} val\n     * @param {boolean} useFallback\n     * @returns {Color}\n     */\n\n  }, {\n    key: 'createColor',\n    value: function createColor(val) {\n      var useFallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n      var color = new _Color2.default(this._resolveColor(val), { format: this.format });\n\n      if (!color.isValid()) {\n        var invalidColor = color,\n            fallback = void 0;\n\n        if (useFallback) {\n          fallback = this.fallbackColor instanceof _Color2.default && this.fallbackColor.isValid() ? this.fallbackColor : this._resolveColor(this.fallbackColor);\n\n          color = new _Color2.default(fallback, { format: this.format });\n\n          if (!color.isValid() && useFallback) {\n            throw new Error('The fallback color is invalid.');\n          }\n        }\n\n        color.previous = invalidColor;\n\n        /**\n         * (Colorpicker) Fired when the color is invalid and the fallback color is going to be used.\n         *\n         * @event colorpickerInvalid\n         */\n        this.element.trigger({\n          type: 'colorpickerInvalid',\n          colorpicker: this,\n          color: color,\n          value: val\n        });\n      }\n\n      if (!this.isAlphaEnabled() && color.hasTransparency()) {\n        // Alpha is disabled\n        color.setAlpha(1);\n      }\n\n      if (!this.hasColor()) {\n        // No previous color, so no need to compare\n        return color;\n      }\n\n      var hsva = color.hsvaRatio;\n      var prevHsva = this.color.hsvaRatio;\n\n      if (hsva.s === 0 && hsva.h === 0 && prevHsva.h !== 0) {\n        // Hue was set to 0 because saturation was 0, use previous hue, since it was not meant to change...\n        color.setHueRatio(prevHsva.h);\n      }\n\n      if (!this.isAlphaEnabled() && color.hasTransparency()) {\n        // Alpha is disabled\n        color.setAlpha(1);\n      }\n\n      return color;\n    }\n\n    /**\n     * Checks if there is a color object, that it is valid and it is not a fallback\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'isInvalidColor',\n    value: function isInvalidColor() {\n      return !this.hasColor() || !this.color.isValid() || !!this.color.previous;\n    }\n\n    /**\n     * Returns true if the useAlpha option is exactly true, false otherwise\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'isAlphaEnabled',\n    value: function isAlphaEnabled() {\n      return this.options.useAlpha === true;\n    }\n\n    /**\n     * Resolves a color, in case is not in a standard format (e.g. a custom color alias)\n     *\n     * @private\n     * @param {String|*} color\n     * @returns {String|*|null}\n     */\n\n  }, {\n    key: '_resolveColor',\n    value: function _resolveColor(color) {\n      var extResolvedColor = false;\n\n      _jquery2.default.each(this.extensions, function (name, ext) {\n        if (extResolvedColor !== false) {\n          // skip if resolved\n          return;\n        }\n        extResolvedColor = ext.resolveColor(color);\n      });\n\n      if (extResolvedColor !== false) {\n        color = extResolvedColor;\n      }\n\n      return color;\n    }\n\n    /**\n     * Returns true if the widget has an associated input element, false otherwise\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'hasInput',\n    value: function hasInput() {\n      return this.input !== false;\n    }\n\n    /**\n     * Returns true if this instance is disabled\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'isDisabled',\n    value: function isDisabled() {\n      return this.disabled === true;\n    }\n\n    /**\n     * Disables the widget and the input if any\n     *\n     * @fires colorpickerDisable\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'disable',\n    value: function disable() {\n      if (this.hasInput()) {\n        this.input.prop('disabled', true);\n      }\n      this.disabled = true;\n\n      /**\n       * (Colorpicker) When the widget has been disabled.\n       *\n       * @event colorpickerDisable\n       */\n      this.element.trigger({\n        type: 'colorpickerDisable',\n        colorpicker: this,\n        color: this.color\n      });\n      return true;\n    }\n\n    /**\n     * Enables the widget and the input if any\n     *\n     * @fires colorpickerEnable\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'enable',\n    value: function enable() {\n      if (this.hasInput()) {\n        this.input.prop('disabled', false);\n      }\n      this.disabled = false;\n\n      /**\n       * (Colorpicker) When the widget has been enabled.\n       *\n       * @event colorpickerEnable\n       */\n      this.element.trigger({\n        type: 'colorpickerEnable',\n        colorpicker: this,\n        color: this.color\n      });\n      return true;\n    }\n\n    /**\n     * Function triggered when clicking in one of the color adjustment bars\n     *\n     * @private\n     * @fires mousemove\n     * @param {Event} e\n     * @returns {boolean}\n     */\n\n  }, {\n    key: '_mousedown',\n    value: function _mousedown(e) {\n      this.lastEvent.name = 'mousedown';\n      this.lastEvent.e = e;\n\n      if (!e.pageX && !e.pageY && e.originalEvent && e.originalEvent.touches) {\n        e.pageX = e.originalEvent.touches[0].pageX;\n        e.pageY = e.originalEvent.touches[0].pageY;\n      }\n      e.stopPropagation();\n      e.preventDefault();\n\n      var target = (0, _jquery2.default)(e.target);\n\n      // detect the slider and set the limits and callbacks\n      var zone = target.closest('div');\n      var sl = this.options.horizontal ? this.options.slidersHorz : this.options.sliders;\n\n      if (!zone.is('.colorpicker')) {\n        if (zone.is('.colorpicker-saturation')) {\n          this.currentSlider = _jquery2.default.extend({}, sl.saturation);\n        } else if (zone.is('.colorpicker-hue')) {\n          this.currentSlider = _jquery2.default.extend({}, sl.hue);\n        } else if (zone.is('.colorpicker-alpha')) {\n          this.currentSlider = _jquery2.default.extend({}, sl.alpha);\n        } else {\n          return false;\n        }\n        var offset = zone.offset();\n        // reference to guide's style\n\n        this.currentSlider.guide = zone.find('.colorpicker-guide')[0].style;\n        this.currentSlider.left = e.pageX - offset.left;\n        this.currentSlider.top = e.pageY - offset.top;\n        this.mousePointer = {\n          left: e.pageX,\n          top: e.pageY\n        };\n\n        /**\n         * (window.document) Triggered on mousedown for the document object,\n         * so the color adjustment guide is moved to the clicked position.\n         *\n         * @event mousemove\n         */\n        (0, _jquery2.default)(window.document).on({\n          'mousemove.colorpicker': _jquery2.default.proxy(this._mousemove, this),\n          'touchmove.colorpicker': _jquery2.default.proxy(this._mousemove, this),\n          'mouseup.colorpicker': _jquery2.default.proxy(this._mouseup, this),\n          'touchend.colorpicker': _jquery2.default.proxy(this._mouseup, this)\n        }).trigger('mousemove');\n      }\n      return false;\n    }\n\n    /**\n     * Function triggered when dragging a guide inside one of the color adjustment bars.\n     *\n     * @private\n     * @param {Event} e\n     * @returns {boolean}\n     */\n\n  }, {\n    key: '_mousemove',\n    value: function _mousemove(e) {\n      this.lastEvent.name = 'mousemove';\n      this.lastEvent.e = e;\n\n      var color = !this.hasColor() ? this.createColor(this.fallbackColor) : this.color.getCopy();\n\n      if (!e.pageX && !e.pageY && e.originalEvent && e.originalEvent.touches) {\n        e.pageX = e.originalEvent.touches[0].pageX;\n        e.pageY = e.originalEvent.touches[0].pageY;\n      }\n      e.stopPropagation();\n      e.preventDefault();\n      var left = Math.max(0, Math.min(this.currentSlider.maxLeft, this.currentSlider.left + ((e.pageX || this.mousePointer.left) - this.mousePointer.left)));\n      var top = Math.max(0, Math.min(this.currentSlider.maxTop, this.currentSlider.top + ((e.pageY || this.mousePointer.top) - this.mousePointer.top)));\n\n      this.currentSlider.guide.left = left + 'px';\n      this.currentSlider.guide.top = top + 'px';\n      if (this.currentSlider.callLeft) {\n        color[this.currentSlider.callLeft].call(color, left / this.currentSlider.maxLeft);\n      }\n      if (this.currentSlider.callTop) {\n        color[this.currentSlider.callTop].call(color, top / this.currentSlider.maxTop);\n      }\n\n      this.setValue(color);\n      return false;\n    }\n\n    /**\n     * Function triggered when releasing the click in one of the color adjustment bars.\n     *\n     * @private\n     * @param {Event} e\n     * @returns {boolean}\n     */\n\n  }, {\n    key: '_mouseup',\n    value: function _mouseup(e) {\n      this.lastEvent.name = 'mouseup';\n      this.lastEvent.e = e;\n\n      e.stopPropagation();\n      e.preventDefault();\n      (0, _jquery2.default)(window.document).off({\n        'mousemove.colorpicker': this._mousemove,\n        'touchmove.colorpicker': this._mousemove,\n        'mouseup.colorpicker': this._mouseup,\n        'touchend.colorpicker': this._mouseup\n      });\n      return false;\n    }\n\n    /**\n     * Function triggered when the input has changed, so the colorpicker gets updated.\n     *\n     * @private\n     * @param {Event} e\n     * @returns {boolean}\n     */\n\n  }, {\n    key: '_change',\n    value: function _change(e) {\n      this.lastEvent.name = 'change';\n      this.lastEvent.e = e;\n\n      var val = this.input.val();\n\n      if (val !== this.toInputColorString()) {\n        this.setValue(val);\n      }\n    }\n\n    /**\n     * Function triggered after a keyboard key has been released.\n     *\n     * @private\n     * @param {Event} e\n     * @returns {boolean}\n     */\n\n  }, {\n    key: '_keyup',\n    value: function _keyup(e) {\n      this.lastEvent.name = 'keyup';\n      this.lastEvent.e = e;\n\n      var val = this.input.val();\n\n      if (val !== this.toInputColorString()) {\n        this.setValue(val);\n      }\n    }\n  }, {\n    key: 'fallbackColor',\n    get: function get() {\n      return this.options.fallbackColor ? this.options.fallbackColor : this.hasColor() ? this.color : '#000';\n    }\n  }, {\n    key: 'format',\n    get: function get() {\n      if (this.options.format) {\n        return this.options.format;\n      }\n\n      if (this.hasColor() && this.color.hasTransparency() && this.color.format.match(/^hex/)) {\n        return this.options.enableHex8 ? 'hex8' : this.isAlphaEnabled() ? 'rgba' : 'hex';\n      }\n\n      if (this.hasColor()) {\n        return this.color.format;\n      }\n\n      return null;\n    }\n  }]);\n\n  return Colorpicker;\n}();\n\nexports.default = Colorpicker;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _tinycolor2 = __webpack_require__(6);\n\nvar _tinycolor3 = _interopRequireDefault(_tinycolor2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction unwrapColor(color) {\n  if (color instanceof _tinycolor3.default) {\n    return {\n      r: color._r,\n      g: color._g,\n      b: color._b,\n      a: color._a\n    };\n  }\n  return color;\n}\n\n/**\n * Sanitizes a format string, so it is compatible with tinycolor,\n * or returns the same value if it is not a string.\n *\n * @param {String} format\n * @returns {String|*}\n * @private\n */\nfunction getCompatibleFormat(format) {\n  if (format instanceof String || typeof format === 'string') {\n    return format.replace(/a$/gi, '');\n  }\n\n  return format;\n}\n\n/**\n * Color manipulation class that extends the tinycolor library class.\n */\n\nvar Color = function (_tinycolor) {\n  _inherits(Color, _tinycolor);\n\n  _createClass(Color, [{\n    key: 'id',\n\n    /**\n     * Identifier of the color instance.\n     *\n     * @type {int}\n     * @readonly\n     */\n    get: function get() {\n      return this._tc_id;\n    }\n\n    /**\n     * Format of the parsed color.\n     *\n     * @type {String}\n     * @readonly\n     */\n\n  }, {\n    key: 'format',\n    get: function get() {\n      return this._format;\n    }\n\n    /**\n     * All options of the current instance.\n     *\n     * @type {{format: String, gradientType: String}}\n     * @readonly\n     */\n\n  }, {\n    key: 'options',\n    get: function get() {\n      return {\n        format: this._format,\n        gradientType: this._gradientType\n      };\n    }\n\n    /**\n     * @returns {{h, s, v, a}}\n     */\n\n  }, {\n    key: 'hsva',\n    get: function get() {\n      return this.toHsv();\n    }\n\n    /**\n     * @returns {{h, s, v, a}}\n     */\n\n  }, {\n    key: 'hsvaRatio',\n    get: function get() {\n      var hsv = this.hsva;\n\n      return {\n        h: hsv.h / 360,\n        s: hsv.s,\n        v: hsv.v,\n        a: hsv.a\n      };\n    }\n\n    /**\n     * foo bar\n     * @param {Color|*} color\n     * @param {{format}} [options]\n     * @constructor\n     */\n\n  }]);\n\n  function Color(color) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { format: null };\n\n    _classCallCheck(this, Color);\n\n    if (options.format) {\n      options.format = getCompatibleFormat(options.format);\n    }\n\n    /**\n     * @type {Color|*}\n     */\n    var _this = _possibleConstructorReturn(this, (Color.__proto__ || Object.getPrototypeOf(Color)).call(this, unwrapColor(color), options));\n\n    _this._originalInput = color; // keep real original color\n    /**\n     * Hue backup to not lose the information when saturation is 0.\n     * @type {number}\n     */\n    _this._hbak = _this.hsva.h;\n    /**\n     * If set, it contains a reference to a previous color that caused the creation of this one.\n     * @type {Color}\n     */\n    _this.previous = null;\n    return _this;\n  }\n\n  /**\n   * Compares a color object with this one and returns true if it is equal or false if not.\n   *\n   * @param {Color} color\n   * @returns {boolean}\n   */\n\n\n  _createClass(Color, [{\n    key: 'equals',\n    value: function equals(color) {\n      if (!(color instanceof _tinycolor3.default)) {\n        return false;\n      }\n      return this._r === color._r && this._g === color._g && this._b === color._b && this._a === color._a && this._roundA === color._roundA && this._format === color._format && this._gradientType === color._gradientType && this._ok === color._ok;\n    }\n\n    /**\n     * Imports all variables of the given color to this instance, excepting `_tc_id`.\n     * @param {Color} color\n     */\n\n  }, {\n    key: 'importColor',\n    value: function importColor(color) {\n      if (!(color instanceof _tinycolor3.default)) {\n        throw new Error('Color.importColor: The color argument is not an instance of tinycolor.');\n      }\n      this._originalInput = color._originalInput;\n      this._r = color._r;\n      this._g = color._g;\n      this._b = color._b;\n      this._a = color._a;\n      this._roundA = color._roundA;\n      this._format = getCompatibleFormat(color._format);\n      this._gradientType = color._gradientType;\n      this._ok = color._ok;\n      // omit .previous and ._tc_id import\n    }\n\n    /**\n     * Imports the _r, _g, _b, _a, _hbak and _ok variables of the given color to this instance.\n     * @param {Color} color\n     */\n\n  }, {\n    key: 'importRgb',\n    value: function importRgb(color) {\n      if (!color instanceof Color) {\n        throw new Error('Color.importColor: The color argument is not an instance of tinycolor.');\n      }\n      this._r = color._r;\n      this._g = color._g;\n      this._b = color._b;\n      this._a = color._a;\n      this._ok = color._ok;\n      this._hbak = color._hbak;\n    }\n\n    /**\n     * @param {{h,s,v,a}} hsv\n     */\n\n  }, {\n    key: 'importHsv',\n    value: function importHsv(hsv) {\n      this._hbak = hsv.h;\n      this.importRgb(new Color(hsv, this.options));\n    }\n\n    /**\n     * @returns {Color}\n     */\n\n  }, {\n    key: 'getCopy',\n    value: function getCopy() {\n      return new Color(this.hsva, this.options);\n    }\n\n    /**\n     * @returns {Color}\n     */\n\n  }, {\n    key: 'getHueOnlyCopy',\n    value: function getHueOnlyCopy() {\n      return new Color({ h: this._hbak ? this._hbak : this.hsva.h, s: 100, v: 100 }, this.options);\n    }\n\n    /**\n     * @returns {Color}\n     */\n\n  }, {\n    key: 'getOpaqueCopy',\n    value: function getOpaqueCopy() {\n      return new Color(Object.assign({}, this.hsva, { a: 1 }), this.options);\n    }\n\n    /**\n     * @param {number} h Degrees from 0 to 360\n     */\n\n  }, {\n    key: 'setHue',\n    value: function setHue(h) {\n      this.importHsv(Object.assign({}, this.hsva, { h: h }));\n    }\n\n    /**\n     * @param {number} s Percent from 0 o 100\n     */\n\n  }, {\n    key: 'setSaturation',\n    value: function setSaturation(s) {\n      this.importHsv(Object.assign({}, this.hsva, { s: s }));\n    }\n\n    /**\n     * @param {number} v Percent from 0 o 100\n     */\n\n  }, {\n    key: 'setBrightness',\n    value: function setBrightness(v) {\n      this.importHsv(Object.assign({}, this.hsva, { v: v }));\n    }\n\n    /**\n     * @param {number} h Ratio from 0.0 to 1.0\n     */\n\n  }, {\n    key: 'setHueRatio',\n    value: function setHueRatio(h) {\n      if (h === 0) {\n        return;\n      }\n      this.setHue((1 - h) * 360);\n    }\n\n    /**\n     * @param {number} s Ratio from 0.0 to 1.0\n     */\n\n  }, {\n    key: 'setSaturationRatio',\n    value: function setSaturationRatio(s) {\n      this.setSaturation(s);\n    }\n\n    /**\n     * @param {number} v Ratio from 0.0 to 1.0\n     */\n\n  }, {\n    key: 'setBrightnessRatio',\n    value: function setBrightnessRatio(v) {\n      this.setBrightness(1 - v);\n    }\n\n    /**\n     * @param {number} a Ratio from 0.0 to 1.0\n     */\n\n  }, {\n    key: 'setAlphaRatio',\n    value: function setAlphaRatio(a) {\n      this.setAlpha(1 - a);\n    }\n\n    /**\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'isTransparent',\n    value: function isTransparent() {\n      return this._a === 0;\n    }\n\n    /**\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'hasTransparency',\n    value: function hasTransparency() {\n      return this._a !== 1;\n    }\n\n    /**\n     * @param {string|null} [format] One of \"rgb\", \"prgb\", \"hex\"/\"hex6\", \"hex3\", \"hex8\", \"hsl\", \"hsv\"/\"hsb\", \"name\"\n     * @returns {String}\n     */\n\n  }, {\n    key: 'toString',\n    value: function toString() {\n      var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n      format = format ? getCompatibleFormat(format) : this.format;\n\n      var colorStr = _get(Color.prototype.__proto__ || Object.getPrototypeOf(Color.prototype), 'toString', this).call(this, format);\n\n      if (colorStr && colorStr.match(/^#[0-9a-f]{3,8}$/i)) {\n        // Support transparent for hex formats\n        if (this.isTransparent() && this._r === 0 && this._g === 0 && this._b === 0) {\n          return 'transparent';\n        }\n      }\n\n      return colorStr;\n    }\n  }]);\n\n  return Color;\n}(_tinycolor3.default);\n\nexports.default = Color;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_RESULT__;// TinyColor v1.4.1\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\n(function(Math) {\n\nvar trimLeft = /^\\s+/,\n    trimRight = /\\s+$/,\n    tinyCounter = 0,\n    mathRound = Math.round,\n    mathMin = Math.min,\n    mathMax = Math.max,\n    mathRandom = Math.random;\n\nfunction tinycolor (color, opts) {\n\n    color = (color) ? color : '';\n    opts = opts || { };\n\n    // If input is already a tinycolor, return itself\n    if (color instanceof tinycolor) {\n       return color;\n    }\n    // If we are called as a function, call using new instead\n    if (!(this instanceof tinycolor)) {\n        return new tinycolor(color, opts);\n    }\n\n    var rgb = inputToRGB(color);\n    this._originalInput = color,\n    this._r = rgb.r,\n    this._g = rgb.g,\n    this._b = rgb.b,\n    this._a = rgb.a,\n    this._roundA = mathRound(100*this._a) / 100,\n    this._format = opts.format || rgb.format;\n    this._gradientType = opts.gradientType;\n\n    // Don't let the range of [0,255] come back in [0,1].\n    // Potentially lose a little bit of precision here, but will fix issues where\n    // .5 gets interpreted as half of the total, instead of half of 1\n    // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n    if (this._r < 1) { this._r = mathRound(this._r); }\n    if (this._g < 1) { this._g = mathRound(this._g); }\n    if (this._b < 1) { this._b = mathRound(this._b); }\n\n    this._ok = rgb.ok;\n    this._tc_id = tinyCounter++;\n}\n\ntinycolor.prototype = {\n    isDark: function() {\n        return this.getBrightness() < 128;\n    },\n    isLight: function() {\n        return !this.isDark();\n    },\n    isValid: function() {\n        return this._ok;\n    },\n    getOriginalInput: function() {\n      return this._originalInput;\n    },\n    getFormat: function() {\n        return this._format;\n    },\n    getAlpha: function() {\n        return this._a;\n    },\n    getBrightness: function() {\n        //http://www.w3.org/TR/AERT#color-contrast\n        var rgb = this.toRgb();\n        return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n    },\n    getLuminance: function() {\n        //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n        var rgb = this.toRgb();\n        var RsRGB, GsRGB, BsRGB, R, G, B;\n        RsRGB = rgb.r/255;\n        GsRGB = rgb.g/255;\n        BsRGB = rgb.b/255;\n\n        if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);}\n        if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);}\n        if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);}\n        return (0.2126 * R) + (0.7152 * G) + (0.0722 * B);\n    },\n    setAlpha: function(value) {\n        this._a = boundAlpha(value);\n        this._roundA = mathRound(100*this._a) / 100;\n        return this;\n    },\n    toHsv: function() {\n        var hsv = rgbToHsv(this._r, this._g, this._b);\n        return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n    },\n    toHsvString: function() {\n        var hsv = rgbToHsv(this._r, this._g, this._b);\n        var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\n        return (this._a == 1) ?\n          \"hsv(\"  + h + \", \" + s + \"%, \" + v + \"%)\" :\n          \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \"+ this._roundA + \")\";\n    },\n    toHsl: function() {\n        var hsl = rgbToHsl(this._r, this._g, this._b);\n        return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n    },\n    toHslString: function() {\n        var hsl = rgbToHsl(this._r, this._g, this._b);\n        var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\n        return (this._a == 1) ?\n          \"hsl(\"  + h + \", \" + s + \"%, \" + l + \"%)\" :\n          \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \"+ this._roundA + \")\";\n    },\n    toHex: function(allow3Char) {\n        return rgbToHex(this._r, this._g, this._b, allow3Char);\n    },\n    toHexString: function(allow3Char) {\n        return '#' + this.toHex(allow3Char);\n    },\n    toHex8: function(allow4Char) {\n        return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n    },\n    toHex8String: function(allow4Char) {\n        return '#' + this.toHex8(allow4Char);\n    },\n    toRgb: function() {\n        return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };\n    },\n    toRgbString: function() {\n        return (this._a == 1) ?\n          \"rgb(\"  + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" :\n          \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n    },\n    toPercentageRgb: function() {\n        return { r: mathRound(bound01(this._r, 255) * 100) + \"%\", g: mathRound(bound01(this._g, 255) * 100) + \"%\", b: mathRound(bound01(this._b, 255) * 100) + \"%\", a: this._a };\n    },\n    toPercentageRgbString: function() {\n        return (this._a == 1) ?\n          \"rgb(\"  + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" :\n          \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n    },\n    toName: function() {\n        if (this._a === 0) {\n            return \"transparent\";\n        }\n\n        if (this._a < 1) {\n            return false;\n        }\n\n        return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n    },\n    toFilter: function(secondColor) {\n        var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n        var secondHex8String = hex8String;\n        var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n\n        if (secondColor) {\n            var s = tinycolor(secondColor);\n            secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n        }\n\n        return \"progid:DXImageTransform.Microsoft.gradient(\"+gradientType+\"startColorstr=\"+hex8String+\",endColorstr=\"+secondHex8String+\")\";\n    },\n    toString: function(format) {\n        var formatSet = !!format;\n        format = format || this._format;\n\n        var formattedString = false;\n        var hasAlpha = this._a < 1 && this._a >= 0;\n        var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n\n        if (needsAlphaFormat) {\n            // Special case for \"transparent\", all other non-alpha formats\n            // will return rgba when there is transparency.\n            if (format === \"name\" && this._a === 0) {\n                return this.toName();\n            }\n            return this.toRgbString();\n        }\n        if (format === \"rgb\") {\n            formattedString = this.toRgbString();\n        }\n        if (format === \"prgb\") {\n            formattedString = this.toPercentageRgbString();\n        }\n        if (format === \"hex\" || format === \"hex6\") {\n            formattedString = this.toHexString();\n        }\n        if (format === \"hex3\") {\n            formattedString = this.toHexString(true);\n        }\n        if (format === \"hex4\") {\n            formattedString = this.toHex8String(true);\n        }\n        if (format === \"hex8\") {\n            formattedString = this.toHex8String();\n        }\n        if (format === \"name\") {\n            formattedString = this.toName();\n        }\n        if (format === \"hsl\") {\n            formattedString = this.toHslString();\n        }\n        if (format === \"hsv\") {\n            formattedString = this.toHsvString();\n        }\n\n        return formattedString || this.toHexString();\n    },\n    clone: function() {\n        return tinycolor(this.toString());\n    },\n\n    _applyModification: function(fn, args) {\n        var color = fn.apply(null, [this].concat([].slice.call(args)));\n        this._r = color._r;\n        this._g = color._g;\n        this._b = color._b;\n        this.setAlpha(color._a);\n        return this;\n    },\n    lighten: function() {\n        return this._applyModification(lighten, arguments);\n    },\n    brighten: function() {\n        return this._applyModification(brighten, arguments);\n    },\n    darken: function() {\n        return this._applyModification(darken, arguments);\n    },\n    desaturate: function() {\n        return this._applyModification(desaturate, arguments);\n    },\n    saturate: function() {\n        return this._applyModification(saturate, arguments);\n    },\n    greyscale: function() {\n        return this._applyModification(greyscale, arguments);\n    },\n    spin: function() {\n        return this._applyModification(spin, arguments);\n    },\n\n    _applyCombination: function(fn, args) {\n        return fn.apply(null, [this].concat([].slice.call(args)));\n    },\n    analogous: function() {\n        return this._applyCombination(analogous, arguments);\n    },\n    complement: function() {\n        return this._applyCombination(complement, arguments);\n    },\n    monochromatic: function() {\n        return this._applyCombination(monochromatic, arguments);\n    },\n    splitcomplement: function() {\n        return this._applyCombination(splitcomplement, arguments);\n    },\n    triad: function() {\n        return this._applyCombination(triad, arguments);\n    },\n    tetrad: function() {\n        return this._applyCombination(tetrad, arguments);\n    }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function(color, opts) {\n    if (typeof color == \"object\") {\n        var newColor = {};\n        for (var i in color) {\n            if (color.hasOwnProperty(i)) {\n                if (i === \"a\") {\n                    newColor[i] = color[i];\n                }\n                else {\n                    newColor[i] = convertToPercentage(color[i]);\n                }\n            }\n        }\n        color = newColor;\n    }\n\n    return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n//     \"red\"\n//     \"#f00\" or \"f00\"\n//     \"#ff0000\" or \"ff0000\"\n//     \"#ff000000\" or \"ff000000\"\n//     \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n//     \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n//     \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n//     \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n//     \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n//     \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n//     \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n\n    var rgb = { r: 0, g: 0, b: 0 };\n    var a = 1;\n    var s = null;\n    var v = null;\n    var l = null;\n    var ok = false;\n    var format = false;\n\n    if (typeof color == \"string\") {\n        color = stringInputToObject(color);\n    }\n\n    if (typeof color == \"object\") {\n        if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n            rgb = rgbToRgb(color.r, color.g, color.b);\n            ok = true;\n            format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n            s = convertToPercentage(color.s);\n            v = convertToPercentage(color.v);\n            rgb = hsvToRgb(color.h, s, v);\n            ok = true;\n            format = \"hsv\";\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n            s = convertToPercentage(color.s);\n            l = convertToPercentage(color.l);\n            rgb = hslToRgb(color.h, s, l);\n            ok = true;\n            format = \"hsl\";\n        }\n\n        if (color.hasOwnProperty(\"a\")) {\n            a = color.a;\n        }\n    }\n\n    a = boundAlpha(a);\n\n    return {\n        ok: ok,\n        format: color.format || format,\n        r: mathMin(255, mathMax(rgb.r, 0)),\n        g: mathMin(255, mathMax(rgb.g, 0)),\n        b: mathMin(255, mathMax(rgb.b, 0)),\n        a: a\n    };\n}\n\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// <http://www.w3.org/TR/css3-color/>\n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b){\n    return {\n        r: bound01(r, 255) * 255,\n        g: bound01(g, 255) * 255,\n        b: bound01(b, 255) * 255\n    };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n\n    var max = mathMax(r, g, b), min = mathMin(r, g, b);\n    var h, s, l = (max + min) / 2;\n\n    if(max == min) {\n        h = s = 0; // achromatic\n    }\n    else {\n        var d = max - min;\n        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n        switch(max) {\n            case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n            case g: h = (b - r) / d + 2; break;\n            case b: h = (r - g) / d + 4; break;\n        }\n\n        h /= 6;\n    }\n\n    return { h: h, s: s, l: l };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n    var r, g, b;\n\n    h = bound01(h, 360);\n    s = bound01(s, 100);\n    l = bound01(l, 100);\n\n    function hue2rgb(p, q, t) {\n        if(t < 0) t += 1;\n        if(t > 1) t -= 1;\n        if(t < 1/6) return p + (q - p) * 6 * t;\n        if(t < 1/2) return q;\n        if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n        return p;\n    }\n\n    if(s === 0) {\n        r = g = b = l; // achromatic\n    }\n    else {\n        var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n        var p = 2 * l - q;\n        r = hue2rgb(p, q, h + 1/3);\n        g = hue2rgb(p, q, h);\n        b = hue2rgb(p, q, h - 1/3);\n    }\n\n    return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n\n    var max = mathMax(r, g, b), min = mathMin(r, g, b);\n    var h, s, v = max;\n\n    var d = max - min;\n    s = max === 0 ? 0 : d / max;\n\n    if(max == min) {\n        h = 0; // achromatic\n    }\n    else {\n        switch(max) {\n            case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n            case g: h = (b - r) / d + 2; break;\n            case b: h = (r - g) / d + 4; break;\n        }\n        h /= 6;\n    }\n    return { h: h, s: s, v: v };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n\n    h = bound01(h, 360) * 6;\n    s = bound01(s, 100);\n    v = bound01(v, 100);\n\n    var i = Math.floor(h),\n        f = h - i,\n        p = v * (1 - s),\n        q = v * (1 - f * s),\n        t = v * (1 - (1 - f) * s),\n        mod = i % 6,\n        r = [v, q, p, p, t, v][mod],\n        g = [t, v, v, q, p, p][mod],\n        b = [p, p, t, v, v, q][mod];\n\n    return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n\n    var hex = [\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16))\n    ];\n\n    // Return a 3 character hex if possible\n    if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n    }\n\n    return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n\n    var hex = [\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16)),\n        pad2(convertDecimalToHex(a))\n    ];\n\n    // Return a 4 character hex if possible\n    if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n    }\n\n    return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n\n    var hex = [\n        pad2(convertDecimalToHex(a)),\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16))\n    ];\n\n    return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n    if (!color1 || !color2) { return false; }\n    return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\n\ntinycolor.random = function() {\n    return tinycolor.fromRatio({\n        r: mathRandom(),\n        g: mathRandom(),\n        b: mathRandom()\n    });\n};\n\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\nfunction desaturate(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.s -= amount / 100;\n    hsl.s = clamp01(hsl.s);\n    return tinycolor(hsl);\n}\n\nfunction saturate(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.s += amount / 100;\n    hsl.s = clamp01(hsl.s);\n    return tinycolor(hsl);\n}\n\nfunction greyscale(color) {\n    return tinycolor(color).desaturate(100);\n}\n\nfunction lighten (color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.l += amount / 100;\n    hsl.l = clamp01(hsl.l);\n    return tinycolor(hsl);\n}\n\nfunction brighten(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var rgb = tinycolor(color).toRgb();\n    rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));\n    rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));\n    rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));\n    return tinycolor(rgb);\n}\n\nfunction darken (color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.l -= amount / 100;\n    hsl.l = clamp01(hsl.l);\n    return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction spin(color, amount) {\n    var hsl = tinycolor(color).toHsl();\n    var hue = (hsl.h + amount) % 360;\n    hsl.h = hue < 0 ? 360 + hue : hue;\n    return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\nfunction complement(color) {\n    var hsl = tinycolor(color).toHsl();\n    hsl.h = (hsl.h + 180) % 360;\n    return tinycolor(hsl);\n}\n\nfunction triad(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\n    ];\n}\n\nfunction tetrad(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\n    ];\n}\n\nfunction splitcomplement(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),\n        tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})\n    ];\n}\n\nfunction analogous(color, results, slices) {\n    results = results || 6;\n    slices = slices || 30;\n\n    var hsl = tinycolor(color).toHsl();\n    var part = 360 / slices;\n    var ret = [tinycolor(color)];\n\n    for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {\n        hsl.h = (hsl.h + part) % 360;\n        ret.push(tinycolor(hsl));\n    }\n    return ret;\n}\n\nfunction monochromatic(color, results) {\n    results = results || 6;\n    var hsv = tinycolor(color).toHsv();\n    var h = hsv.h, s = hsv.s, v = hsv.v;\n    var ret = [];\n    var modification = 1 / results;\n\n    while (results--) {\n        ret.push(tinycolor({ h: h, s: s, v: v}));\n        v = (v + modification) % 1;\n    }\n\n    return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function(color1, color2, amount) {\n    amount = (amount === 0) ? 0 : (amount || 50);\n\n    var rgb1 = tinycolor(color1).toRgb();\n    var rgb2 = tinycolor(color2).toRgb();\n\n    var p = amount / 100;\n\n    var rgba = {\n        r: ((rgb2.r - rgb1.r) * p) + rgb1.r,\n        g: ((rgb2.g - rgb1.g) * p) + rgb1.g,\n        b: ((rgb2.b - rgb1.b) * p) + rgb1.b,\n        a: ((rgb2.a - rgb1.a) * p) + rgb1.a\n    };\n\n    return tinycolor(rgba);\n};\n\n\n// Readability Functions\n// ---------------------\n// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n// `contrast`\n// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\ntinycolor.readability = function(color1, color2) {\n    var c1 = tinycolor(color1);\n    var c2 = tinycolor(color2);\n    return (Math.max(c1.getLuminance(),c2.getLuminance())+0.05) / (Math.min(c1.getLuminance(),c2.getLuminance())+0.05);\n};\n\n// `isReadable`\n// Ensure that foreground and background color combinations meet WCAG2 guidelines.\n// The third argument is an optional Object.\n//      the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n//      the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n// If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n// *Example*\n//    tinycolor.isReadable(\"#000\", \"#111\") => false\n//    tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function(color1, color2, wcag2) {\n    var readability = tinycolor.readability(color1, color2);\n    var wcag2Parms, out;\n\n    out = false;\n\n    wcag2Parms = validateWCAG2Parms(wcag2);\n    switch (wcag2Parms.level + wcag2Parms.size) {\n        case \"AAsmall\":\n        case \"AAAlarge\":\n            out = readability >= 4.5;\n            break;\n        case \"AAlarge\":\n            out = readability >= 3;\n            break;\n        case \"AAAsmall\":\n            out = readability >= 7;\n            break;\n    }\n    return out;\n\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n//    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n//    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString();  // \"#ffffff\"\n//    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n//    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function(baseColor, colorList, args) {\n    var bestColor = null;\n    var bestScore = 0;\n    var readability;\n    var includeFallbackColors, level, size ;\n    args = args || {};\n    includeFallbackColors = args.includeFallbackColors ;\n    level = args.level;\n    size = args.size;\n\n    for (var i= 0; i < colorList.length ; i++) {\n        readability = tinycolor.readability(baseColor, colorList[i]);\n        if (readability > bestScore) {\n            bestScore = readability;\n            bestColor = tinycolor(colorList[i]);\n        }\n    }\n\n    if (tinycolor.isReadable(baseColor, bestColor, {\"level\":level,\"size\":size}) || !includeFallbackColors) {\n        return bestColor;\n    }\n    else {\n        args.includeFallbackColors=false;\n        return tinycolor.mostReadable(baseColor,[\"#fff\", \"#000\"],args);\n    }\n};\n\n\n// Big List of Colors\n// ------------------\n// <http://www.w3.org/TR/css3-color/#svg-color>\nvar names = tinycolor.names = {\n    aliceblue: \"f0f8ff\",\n    antiquewhite: \"faebd7\",\n    aqua: \"0ff\",\n    aquamarine: \"7fffd4\",\n    azure: \"f0ffff\",\n    beige: \"f5f5dc\",\n    bisque: \"ffe4c4\",\n    black: \"000\",\n    blanchedalmond: \"ffebcd\",\n    blue: \"00f\",\n    blueviolet: \"8a2be2\",\n    brown: \"a52a2a\",\n    burlywood: \"deb887\",\n    burntsienna: \"ea7e5d\",\n    cadetblue: \"5f9ea0\",\n    chartreuse: \"7fff00\",\n    chocolate: \"d2691e\",\n    coral: \"ff7f50\",\n    cornflowerblue: \"6495ed\",\n    cornsilk: \"fff8dc\",\n    crimson: \"dc143c\",\n    cyan: \"0ff\",\n    darkblue: \"00008b\",\n    darkcyan: \"008b8b\",\n    darkgoldenrod: \"b8860b\",\n    darkgray: \"a9a9a9\",\n    darkgreen: \"006400\",\n    darkgrey: \"a9a9a9\",\n    darkkhaki: \"bdb76b\",\n    darkmagenta: \"8b008b\",\n    darkolivegreen: \"556b2f\",\n    darkorange: \"ff8c00\",\n    darkorchid: \"9932cc\",\n    darkred: \"8b0000\",\n    darksalmon: \"e9967a\",\n    darkseagreen: \"8fbc8f\",\n    darkslateblue: \"483d8b\",\n    darkslategray: \"2f4f4f\",\n    darkslategrey: \"2f4f4f\",\n    darkturquoise: \"00ced1\",\n    darkviolet: \"9400d3\",\n    deeppink: \"ff1493\",\n    deepskyblue: \"00bfff\",\n    dimgray: \"696969\",\n    dimgrey: \"696969\",\n    dodgerblue: \"1e90ff\",\n    firebrick: \"b22222\",\n    floralwhite: \"fffaf0\",\n    forestgreen: \"228b22\",\n    fuchsia: \"f0f\",\n    gainsboro: \"dcdcdc\",\n    ghostwhite: \"f8f8ff\",\n    gold: \"ffd700\",\n    goldenrod: \"daa520\",\n    gray: \"808080\",\n    green: \"008000\",\n    greenyellow: \"adff2f\",\n    grey: \"808080\",\n    honeydew: \"f0fff0\",\n    hotpink: \"ff69b4\",\n    indianred: \"cd5c5c\",\n    indigo: \"4b0082\",\n    ivory: \"fffff0\",\n    khaki: \"f0e68c\",\n    lavender: \"e6e6fa\",\n    lavenderblush: \"fff0f5\",\n    lawngreen: \"7cfc00\",\n    lemonchiffon: \"fffacd\",\n    lightblue: \"add8e6\",\n    lightcoral: \"f08080\",\n    lightcyan: \"e0ffff\",\n    lightgoldenrodyellow: \"fafad2\",\n    lightgray: \"d3d3d3\",\n    lightgreen: \"90ee90\",\n    lightgrey: \"d3d3d3\",\n    lightpink: \"ffb6c1\",\n    lightsalmon: \"ffa07a\",\n    lightseagreen: \"20b2aa\",\n    lightskyblue: \"87cefa\",\n    lightslategray: \"789\",\n    lightslategrey: \"789\",\n    lightsteelblue: \"b0c4de\",\n    lightyellow: \"ffffe0\",\n    lime: \"0f0\",\n    limegreen: \"32cd32\",\n    linen: \"faf0e6\",\n    magenta: \"f0f\",\n    maroon: \"800000\",\n    mediumaquamarine: \"66cdaa\",\n    mediumblue: \"0000cd\",\n    mediumorchid: \"ba55d3\",\n    mediumpurple: \"9370db\",\n    mediumseagreen: \"3cb371\",\n    mediumslateblue: \"7b68ee\",\n    mediumspringgreen: \"00fa9a\",\n    mediumturquoise: \"48d1cc\",\n    mediumvioletred: \"c71585\",\n    midnightblue: \"191970\",\n    mintcream: \"f5fffa\",\n    mistyrose: \"ffe4e1\",\n    moccasin: \"ffe4b5\",\n    navajowhite: \"ffdead\",\n    navy: \"000080\",\n    oldlace: \"fdf5e6\",\n    olive: \"808000\",\n    olivedrab: \"6b8e23\",\n    orange: \"ffa500\",\n    orangered: \"ff4500\",\n    orchid: \"da70d6\",\n    palegoldenrod: \"eee8aa\",\n    palegreen: \"98fb98\",\n    paleturquoise: \"afeeee\",\n    palevioletred: \"db7093\",\n    papayawhip: \"ffefd5\",\n    peachpuff: \"ffdab9\",\n    peru: \"cd853f\",\n    pink: \"ffc0cb\",\n    plum: \"dda0dd\",\n    powderblue: \"b0e0e6\",\n    purple: \"800080\",\n    rebeccapurple: \"663399\",\n    red: \"f00\",\n    rosybrown: \"bc8f8f\",\n    royalblue: \"4169e1\",\n    saddlebrown: \"8b4513\",\n    salmon: \"fa8072\",\n    sandybrown: \"f4a460\",\n    seagreen: \"2e8b57\",\n    seashell: \"fff5ee\",\n    sienna: \"a0522d\",\n    silver: \"c0c0c0\",\n    skyblue: \"87ceeb\",\n    slateblue: \"6a5acd\",\n    slategray: \"708090\",\n    slategrey: \"708090\",\n    snow: \"fffafa\",\n    springgreen: \"00ff7f\",\n    steelblue: \"4682b4\",\n    tan: \"d2b48c\",\n    teal: \"008080\",\n    thistle: \"d8bfd8\",\n    tomato: \"ff6347\",\n    turquoise: \"40e0d0\",\n    violet: \"ee82ee\",\n    wheat: \"f5deb3\",\n    white: \"fff\",\n    whitesmoke: \"f5f5f5\",\n    yellow: \"ff0\",\n    yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n    var flipped = { };\n    for (var i in o) {\n        if (o.hasOwnProperty(i)) {\n            flipped[o[i]] = i;\n        }\n    }\n    return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n    a = parseFloat(a);\n\n    if (isNaN(a) || a < 0 || a > 1) {\n        a = 1;\n    }\n\n    return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n    if (isOnePointZero(n)) { n = \"100%\"; }\n\n    var processPercent = isPercentage(n);\n    n = mathMin(max, mathMax(0, parseFloat(n)));\n\n    // Automatically convert percentage into number\n    if (processPercent) {\n        n = parseInt(n * max, 10) / 100;\n    }\n\n    // Handle floating point rounding errors\n    if ((Math.abs(n - max) < 0.000001)) {\n        return 1;\n    }\n\n    // Convert into [0, 1] range if it isn't already\n    return (n % max) / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n    return mathMin(1, mathMax(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n    return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nfunction isOnePointZero(n) {\n    return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n    return typeof n === \"string\" && n.indexOf('%') != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n    return c.length == 1 ? '0' + c : '' + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n    if (n <= 1) {\n        n = (n * 100) + \"%\";\n    }\n\n    return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n    return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n    return (parseIntFromHex(h) / 255);\n}\n\nvar matchers = (function() {\n\n    // <http://www.w3.org/TR/css3-values/#integers>\n    var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n    // <http://www.w3.org/TR/css3-values/#number-value>\n    var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n    // Allow positive/negative integer/number.  Don't capture the either/or, just the entire outcome.\n    var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n    // Actual matching.\n    // Parentheses and commas are optional, but not required.\n    // Whitespace can take the place of commas or opening paren\n    var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n    var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\n    return {\n        CSS_UNIT: new RegExp(CSS_UNIT),\n        rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n        rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n        hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n        hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n        hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n        hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n        hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n        hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n        hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n        hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n    };\n})();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n    return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing.  Take in a number of formats, and output an object\n// based on detected format.  Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n\n    color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();\n    var named = false;\n    if (names[color]) {\n        color = names[color];\n        named = true;\n    }\n    else if (color == 'transparent') {\n        return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n    }\n\n    // Try to match string input using regular expressions.\n    // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n    // Just return an object and let the conversion functions handle that.\n    // This way the result will be the same whether the tinycolor is initialized with string or object.\n    var match;\n    if ((match = matchers.rgb.exec(color))) {\n        return { r: match[1], g: match[2], b: match[3] };\n    }\n    if ((match = matchers.rgba.exec(color))) {\n        return { r: match[1], g: match[2], b: match[3], a: match[4] };\n    }\n    if ((match = matchers.hsl.exec(color))) {\n        return { h: match[1], s: match[2], l: match[3] };\n    }\n    if ((match = matchers.hsla.exec(color))) {\n        return { h: match[1], s: match[2], l: match[3], a: match[4] };\n    }\n    if ((match = matchers.hsv.exec(color))) {\n        return { h: match[1], s: match[2], v: match[3] };\n    }\n    if ((match = matchers.hsva.exec(color))) {\n        return { h: match[1], s: match[2], v: match[3], a: match[4] };\n    }\n    if ((match = matchers.hex8.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1]),\n            g: parseIntFromHex(match[2]),\n            b: parseIntFromHex(match[3]),\n            a: convertHexToDecimal(match[4]),\n            format: named ? \"name\" : \"hex8\"\n        };\n    }\n    if ((match = matchers.hex6.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1]),\n            g: parseIntFromHex(match[2]),\n            b: parseIntFromHex(match[3]),\n            format: named ? \"name\" : \"hex\"\n        };\n    }\n    if ((match = matchers.hex4.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1] + '' + match[1]),\n            g: parseIntFromHex(match[2] + '' + match[2]),\n            b: parseIntFromHex(match[3] + '' + match[3]),\n            a: convertHexToDecimal(match[4] + '' + match[4]),\n            format: named ? \"name\" : \"hex8\"\n        };\n    }\n    if ((match = matchers.hex3.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1] + '' + match[1]),\n            g: parseIntFromHex(match[2] + '' + match[2]),\n            b: parseIntFromHex(match[3] + '' + match[3]),\n            format: named ? \"name\" : \"hex\"\n        };\n    }\n\n    return false;\n}\n\nfunction validateWCAG2Parms(parms) {\n    // return valid WCAG2 parms for isReadable.\n    // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n    var level, size;\n    parms = parms || {\"level\":\"AA\", \"size\":\"small\"};\n    level = (parms.level || \"AA\").toUpperCase();\n    size = (parms.size || \"small\").toLowerCase();\n    if (level !== \"AA\" && level !== \"AAA\") {\n        level = \"AA\";\n    }\n    if (size !== \"small\" && size !== \"large\") {\n        size = \"small\";\n    }\n    return {\"level\":level, \"size\":size};\n}\n\n// Node: Export function\nif (typeof module !== \"undefined\" && module.exports) {\n    module.exports = tinycolor;\n}\n// AMD/requirejs: Define the module\nelse if (true) {\n    !(__WEBPACK_AMD_DEFINE_RESULT__ = function () {return tinycolor;}.call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}\n// Browser: Expose to window\nelse {\n    window.tinycolor = tinycolor;\n}\n\n})(Math);\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @module\n */\n\n/**\n * Colorpicker default options\n */\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = {\n  /**\n   * If true, loads the Debugger extension automatically into the current instance\n   * @type {boolean}\n   * @default false\n   */\n  debug: false,\n  /**\n   * Forces a color, ignoring the one from the elements value or data-color attribute.\n   *\n   * @type {(String|Color|boolean)}\n   * @default false\n   */\n  color: false,\n  /**\n   * Forces an specific color format. If false, it will be automatically detected the first time,\n   * but if null it will be always recalculated.\n   *\n   * Note that the ending 'a' of the format meaning \"alpha\" has currently no effect, meaning that rgb is the same as\n   * rgba excepting if the alpha channel is disabled (see useAlpha).\n   *\n   * @type {('rgb'|'rgba'|'prgb'|'prgba'|'hex'|'hex3'|'hex6'|'hex8'|'hsl'|'hsla'|'hsv'|'hsva'|'name'|boolean)}\n   * @default false\n   */\n  format: false,\n  /**\n   * Horizontal mode layout.\n   *\n   * If true, the hue and alpha channel bars will be rendered horizontally, above the saturation selector.\n   *\n   * @type {boolean}\n   * @default false\n   */\n  horizontal: false,\n  /**\n   * Forces to show the colorpicker as an inline element\n   *\n   * @type {boolean}\n   * @default false\n   */\n  inline: false,\n  /**\n   * Children input CSS selector\n   *\n   * @type {String}\n   * @default 'input'\n   */\n  input: 'input',\n  /**\n   * Colorpicker container CSS selector. If given, the colorpicker will be placed inside this container.\n   * If true, the colorpicker element itself will be used as the container.\n   *\n   * @type {String|boolean}\n   * @default false\n   */\n  container: false, // container selector\n  /**\n   * Children color component CSS selector.\n   * If it exists, the child <i> element background will be changed on color change.\n   *\n   * @type {String|boolean}\n   * @default '.add-on, .input-group-addon'\n   */\n  component: '.add-on, .input-group-addon',\n  /**\n   * Fallback color to use when the given color is invalid.\n   * If false, the latest valid color will be used as a fallback.\n   *\n   * @type {String|Color|boolean}\n   * @default false\n   */\n  fallbackColor: false,\n  /**\n   * If enabled, the input content will be replaced always with a valid color,\n   * if not enabled the invalid color will be left in the input, but valid in the internal color object.\n   *\n   * @type {boolean}\n   * @default false\n   */\n  autoInputFallback: false,\n  /**\n   * If true a hash will be prepended to hexadecimal colors.\n   * If false, the hash will be removed.\n   * This only affects the input values.\n   *\n   * @type {boolean}\n   * @default false\n   */\n  useHashPrefix: true,\n  /**\n   * If true or false the alpha adjustment bar will be displayed no matter what.\n   * If false it will be always hidden and alpha channel won't be allowed programmatically for this instance,\n   * so the selected or typed color will be always opaque.\n   *\n   * @type {boolean}\n   * @default true\n   */\n  useAlpha: true,\n  /**\n   * This only applies when the color format is hexadecimal.\n   * If true, the alpha channel will be allowed for hexadecimal formatted colors, making them having 4 or 8 chars\n   * (RGBA or RRGGBBAA). This format is not yet supported in all modern browsers, so it is disabled by default.\n   * If false, rgba will be used whenever there is an alpha change different than 1 and the color format is\n   * automatic.\n   *\n   * @type {boolean}\n   * @default true\n   */\n  enableHex8: false,\n  /**\n   * Vertical sliders configuration\n   * @type {Object}\n   */\n  sliders: {\n    saturation: {\n      maxLeft: 100,\n      maxTop: 100,\n      callLeft: 'setSaturationRatio',\n      callTop: 'setBrightnessRatio'\n    },\n    hue: {\n      maxLeft: 0,\n      maxTop: 100,\n      callLeft: false,\n      callTop: 'setHueRatio'\n    },\n    alpha: {\n      maxLeft: 0,\n      maxTop: 100,\n      callLeft: false,\n      callTop: 'setAlphaRatio'\n    }\n  },\n  /**\n   * Horizontal sliders configuration\n   * @type {Object}\n   */\n  slidersHorz: {\n    saturation: {\n      maxLeft: 100,\n      maxTop: 100,\n      callLeft: 'setSaturationRatio',\n      callTop: 'setBrightnessRatio'\n    },\n    hue: {\n      maxLeft: 100,\n      maxTop: 0,\n      callLeft: 'setHueRatio',\n      callTop: false\n    },\n    alpha: {\n      maxLeft: 100,\n      maxTop: 0,\n      callLeft: 'setAlphaRatio',\n      callTop: false\n    }\n  },\n  /**\n   * Colorpicker popup alignment.\n   * For now only right is supported.\n   *\n   * @type {('right')}\n   * @default 'right'\n   */ // TODO: add 'left' and 'auto' support.\n  align: 'right',\n  /**\n   * Custom class to be added to the colorpicker element\n   *\n   * @type {String}\n   */\n  customClass: null,\n  /**\n   * Colorpicker widget template\n   * @type {String}\n   * @example\n   * <!-- This is the default template: -->\n   * <div class=\"colorpicker\">\n   *   <div class=\"colorpicker-saturation\"><i class=\"colorpicker-guide\"><i></i></i></div>\n   *   <div class=\"colorpicker-hue\"><i class=\"colorpicker-guide\"></i></div>\n   *   <div class=\"colorpicker-alpha\"><i class=\"colorpicker-guide\"></i></div>\n   *   <div class=\"colorpicker-color\"><div /></div>\n   * </div>\n   */\n  template: '<div class=\"colorpicker\">\\n    <div class=\"colorpicker-saturation\"><i class=\"colorpicker-guide\"><i /></div>\\n    <div class=\"colorpicker-hue\"><i class=\"colorpicker-guide\"></i></div>\\n    <div class=\"colorpicker-alpha\"><i class=\"colorpicker-guide\"></i></div></div>',\n  /**\n   *\n   * Associative object with the extension class name and its config.\n   * Colorpicker comes with many bundled extensions: debugger, palette, preview and swatches (a superset of Palette).\n   *\n   * @type {Object}\n   * @example\n   *   extensions: [\n   *     {\n   *       name: 'swatches'\n   *       colors: {\n   *         'primary': '#337ab7',\n   *         'success': '#5cb85c',\n   *         'info': '#5bc0de',\n   *         'warning': '#f0ad4e',\n   *         'danger': '#d9534f'\n   *       },\n   *       namesAsValues: true\n   *     }\n   *   ]\n   */\n  extensions: [{\n    name: 'preview',\n    showText: false\n  }]\n};\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Palette = exports.Swatches = exports.Preview = exports.Debugger = undefined;\n\nvar _Debugger = __webpack_require__(9);\n\nvar _Debugger2 = _interopRequireDefault(_Debugger);\n\nvar _Preview = __webpack_require__(10);\n\nvar _Preview2 = _interopRequireDefault(_Preview);\n\nvar _Swatches = __webpack_require__(11);\n\nvar _Swatches2 = _interopRequireDefault(_Swatches);\n\nvar _Palette = __webpack_require__(2);\n\nvar _Palette2 = _interopRequireDefault(_Palette);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Debugger = _Debugger2.default;\nexports.Preview = _Preview2.default;\nexports.Swatches = _Swatches2.default;\nexports.Palette = _Palette2.default;\nexports.default = {\n  'debugger': _Debugger2.default,\n  'preview': _Preview2.default,\n  'swatches': _Swatches2.default,\n  'palette': _Palette2.default\n};\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _Extension2 = __webpack_require__(1);\n\nvar _Extension3 = _interopRequireDefault(_Extension2);\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Debugger = function (_Extension) {\n  _inherits(Debugger, _Extension);\n\n  function Debugger(colorpicker) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Debugger);\n\n    /**\n     * @type {number}\n     */\n    var _this = _possibleConstructorReturn(this, (Debugger.__proto__ || Object.getPrototypeOf(Debugger)).call(this, colorpicker, options));\n\n    _this.eventCounter = 0;\n    if (_this.colorpicker.hasInput()) {\n      _this.colorpicker.input.on('change.colorpicker-ext', _jquery2.default.proxy(_this.onChangeInput, _this));\n    }\n    return _this;\n  }\n\n  /**\n   * @fires colorpickerDebug\n   * @param {string} eventName\n   * @param {*} args\n   */\n\n\n  _createClass(Debugger, [{\n    key: 'log',\n    value: function log(eventName) {\n      var _console;\n\n      for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      this.eventCounter += 1;\n\n      var logMessage = '#' + this.eventCounter + ': Colorpicker#' + this.colorpicker.id + ' [' + eventName + ']';\n\n      (_console = console).debug.apply(_console, [logMessage].concat(args));\n\n      /**\n       * (Colorpicker) Fired by the ConsoleDebug extension whenever it logs something\n       *\n       * @event colorpickerDebug\n       */\n      this.colorpicker.element.trigger({\n        type: 'colorpickerDebug',\n        colorpicker: this.colorpicker,\n        color: this.color,\n        debug: {\n          debugger: this,\n          eventName: eventName,\n          logArgs: args,\n          logMessage: logMessage\n        }\n      });\n    }\n  }, {\n    key: 'resolveColor',\n    value: function resolveColor(color) {\n      this.log('resolveColor()', color);\n      return false;\n    }\n  }, {\n    key: 'onCreate',\n    value: function onCreate(event) {\n      this.log('colorpickerCreate');\n      return _get(Debugger.prototype.__proto__ || Object.getPrototypeOf(Debugger.prototype), 'onCreate', this).call(this, event);\n    }\n  }, {\n    key: 'onDestroy',\n    value: function onDestroy(event) {\n      this.log('colorpickerDestroy');\n      this.eventCounter = 0;\n\n      if (this.colorpicker.hasInput()) {\n        this.colorpicker.input.off('.colorpicker-ext');\n      }\n\n      return _get(Debugger.prototype.__proto__ || Object.getPrototypeOf(Debugger.prototype), 'onDestroy', this).call(this, event);\n    }\n  }, {\n    key: 'onUpdate',\n    value: function onUpdate(event) {\n      this.log('colorpickerUpdate');\n    }\n\n    /**\n     * @listens _change\n     * @param {Event} event\n     */\n\n  }, {\n    key: 'onChangeInput',\n    value: function onChangeInput(event) {\n      this.log('input:change.colorpicker', event.value, event.color);\n    }\n  }, {\n    key: 'onChange',\n    value: function onChange(event) {\n      this.log('colorpickerChange', event.value, event.color);\n    }\n  }, {\n    key: 'onInvalid',\n    value: function onInvalid(event) {\n      this.log('colorpickerInvalid', event.value, event.color);\n    }\n  }, {\n    key: 'onHide',\n    value: function onHide(event) {\n      this.log('colorpickerHide');\n      this.eventCounter = 0;\n    }\n  }, {\n    key: 'onShow',\n    value: function onShow(event) {\n      this.log('colorpickerShow');\n    }\n  }, {\n    key: 'onDisable',\n    value: function onDisable(event) {\n      this.log('colorpickerDisable');\n    }\n  }, {\n    key: 'onEnable',\n    value: function onEnable(event) {\n      this.log('colorpickerEnable');\n    }\n  }]);\n\n  return Debugger;\n}(_Extension3.default);\n\nexports.default = Debugger;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _Extension2 = __webpack_require__(1);\n\nvar _Extension3 = _interopRequireDefault(_Extension2);\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Preview = function (_Extension) {\n  _inherits(Preview, _Extension);\n\n  function Preview(colorpicker) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Preview);\n\n    var _this = _possibleConstructorReturn(this, (Preview.__proto__ || Object.getPrototypeOf(Preview)).call(this, colorpicker, Object.assign({}, {\n      template: '<div class=\"colorpicker-bar colorpicker-preview\"><div /></div>',\n      showText: true,\n      format: colorpicker.format\n    }, options)));\n\n    _this.element = (0, _jquery2.default)(_this.options.template);\n    _this.elementInner = _this.element.find('div');\n    return _this;\n  }\n\n  _createClass(Preview, [{\n    key: 'onCreate',\n    value: function onCreate(event) {\n      _get(Preview.prototype.__proto__ || Object.getPrototypeOf(Preview.prototype), 'onCreate', this).call(this, event);\n      this.colorpicker.picker.append(this.element);\n    }\n  }, {\n    key: 'onUpdate',\n    value: function onUpdate(event) {\n      _get(Preview.prototype.__proto__ || Object.getPrototypeOf(Preview.prototype), 'onUpdate', this).call(this, event);\n\n      this.elementInner.css('backgroundColor', event.color.toRgbString());\n\n      if (this.options.showText) {\n        this.elementInner.html(event.color.toString(this.options.format || this.colorpicker.format));\n\n        if (event.color.isDark()) {\n          this.elementInner.css('color', 'white');\n        } else {\n          this.elementInner.css('color', 'black');\n        }\n      }\n    }\n  }]);\n\n  return Preview;\n}(_Extension3.default);\n\nexports.default = Preview;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _Palette2 = __webpack_require__(2);\n\nvar _Palette3 = _interopRequireDefault(_Palette2);\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar defaults = {\n  barTemplate: '<div class=\"colorpicker-bar colorpicker-swatches\"></div>',\n  swatchTemplate: '<i class=\"colorpicker-swatch\"></i>'\n};\n\nvar Swatches = function (_Palette) {\n  _inherits(Swatches, _Palette);\n\n  function Swatches(colorpicker) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Swatches);\n\n    return _possibleConstructorReturn(this, (Swatches.__proto__ || Object.getPrototypeOf(Swatches)).call(this, colorpicker, Object.assign({}, defaults, options)));\n  }\n\n  _createClass(Swatches, [{\n    key: 'isEnabled',\n    value: function isEnabled() {\n      return this.getLength() > 0;\n    }\n  }, {\n    key: 'onCreate',\n    value: function onCreate(event) {\n      var _this2 = this;\n\n      _get(Swatches.prototype.__proto__ || Object.getPrototypeOf(Swatches.prototype), 'onCreate', this).call(this, event);\n\n      if (!this.isEnabled()) {\n        return;\n      }\n\n      var colorpicker = this.colorpicker,\n          swatchContainer = (0, _jquery2.default)(this.options.barTemplate),\n          isAliased = this.options.namesAsValues === true && !Array.isArray(this.colors);\n\n      _jquery2.default.each(this.colors, function (name, value) {\n        var $swatch = (0, _jquery2.default)(_this2.options.swatchTemplate).css('background-color', value).attr('data-name', name).attr('data-value', value).attr('title', name + ': ' + value);\n\n        $swatch.on('mousedown.colorpicker touchstart.colorpicker', function (e) {\n          e.preventDefault();\n          colorpicker.setValue(isAliased ? (0, _jquery2.default)(this).data('name') : (0, _jquery2.default)(this).data('value'));\n        });\n        swatchContainer.append($swatch);\n      });\n\n      colorpicker.picker.append(swatchContainer);\n    }\n  }]);\n\n  return Swatches;\n}(_Palette3.default);\n\nexports.default = Swatches;\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// bootstrap-colorpicker.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 32081b809d19519bb29c","module.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"jQuery\"\n// module id = 0\n// module chunks = 0 1","'use strict';\n\nimport $ from 'jquery';\n\n/**\n * Colorpicker extension class.\n */\nclass Extension {\n  /**\n   * @param {Colorpicker} colorpicker\n   * @param {Object} options\n   */\n  constructor(colorpicker, options = {}) {\n    /**\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n    /**\n     * @type {Object}\n     */\n    this.options = options;\n\n    if (!(this.colorpicker.element && this.colorpicker.element.length)) {\n      throw new Error('Extension: this.colorpicker.element is not valid');\n    }\n\n    this.colorpicker.element.on('colorpickerCreate.colorpicker-ext', $.proxy(this.onCreate, this));\n    this.colorpicker.element.on('colorpickerDestroy.colorpicker-ext', $.proxy(this.onDestroy, this));\n    this.colorpicker.element.on('colorpickerUpdate.colorpicker-ext', $.proxy(this.onUpdate, this));\n    this.colorpicker.element.on('colorpickerChange.colorpicker-ext', $.proxy(this.onChange, this));\n    this.colorpicker.element.on('colorpickerInvalid.colorpicker-ext', $.proxy(this.onInvalid, this));\n    this.colorpicker.element.on('colorpickerShow.colorpicker-ext', $.proxy(this.onShow, this));\n    this.colorpicker.element.on('colorpickerHide.colorpicker-ext', $.proxy(this.onHide, this));\n    this.colorpicker.element.on('colorpickerEnable.colorpicker-ext', $.proxy(this.onEnable, this));\n    this.colorpicker.element.on('colorpickerDisable.colorpicker-ext', $.proxy(this.onDisable, this));\n  }\n\n  /**\n   * Function called every time a new color needs to be created.\n   * Return false to skip this resolver and continue with other extensions' ones\n   * or return anything else to consider the color resolved.\n   *\n   * @param {Color|String|*} color\n   * @return {Color|String|*}\n   */\n  resolveColor(color) {\n    return false;\n  }\n\n  /**\n   * @listens colorpickerCreate\n   * @param {Event} event\n   */\n  onCreate(event) {\n    // to be extended\n  }\n\n  /**\n   * @listens colorpickerDestroy\n   * @param {Event} event\n   */\n  onDestroy(event) {\n    this.colorpicker.element.off('.colorpicker-ext');\n  }\n\n  /**\n   * @listens colorpickerUpdate\n   * @param {Event} event\n   */\n  onUpdate(event) {\n    // to be extended\n  }\n\n  /**\n   * @listens colorpickerChange\n   * @param {Event} event\n   */\n  onChange(event) {\n    // to be extended\n  }\n\n  /**\n   * @listens colorpickerInvalid\n   * @param {Event} event\n   */\n  onInvalid(event) {\n    // to be extended\n  }\n\n  /**\n   * @listens colorpickerHide\n   * @param {Event} event\n   */\n  onHide(event) {\n    // to be extended\n  }\n\n  /**\n   * @listens colorpickerShow\n   * @param {Event} event\n   */\n  onShow(event) {\n    // to be extended\n  }\n\n  /**\n   * @listens colorpickerDisable\n   * @param {Event} event\n   */\n  onDisable(event) {\n    // to be extended\n  }\n\n  /**\n   * @listens colorpickerEnable\n   * @param {Event} event\n   */\n  onEnable(event) {\n    // to be extended\n  }\n}\n\nexport default Extension;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/Extension.js","'use strict';\n\nimport Extension from 'Extension';\n\nlet defaults = {\n  /**\n   * Key-value pairs defining a color alias and its CSS color representation.\n   *\n   * They can also be just an array of values. In that case, no special names are used, only the real colors.\n   *\n   * @type {Object|Array}\n   * @default null\n   * @example\n   *  {\n   *   'black': '#000000',\n   *   'white': '#ffffff',\n   *   'red': '#FF0000',\n   *   'default': '#777777',\n   *   'primary': '#337ab7',\n   *   'success': '#5cb85c',\n   *   'info': '#5bc0de',\n   *   'warning': '#f0ad4e',\n   *   'danger': '#d9534f'\n   *  }\n   *\n   * @example ['#f0ad4e', '#337ab7', '#5cb85c']\n   */\n  colors: null,\n  /**\n   * If true, the when a color swatch is selected the name (alias) will be used as input value,\n   * otherwise the swatch real color value will be used.\n   *\n   * @type {boolean}\n   * @default true\n   */\n  namesAsValues: true\n};\n\nclass Palette extends Extension {\n\n  /**\n   * @returns {Object|Array}\n   */\n  get colors() {\n    return this.options.colors;\n  }\n\n  constructor(colorpicker, options = {}) {\n    super(colorpicker, Object.assign({}, defaults, options));\n\n    if ((!Array.isArray(this.options.colors)) && (typeof this.options.colors !== 'object')) {\n      this.options.colors = null;\n    }\n  }\n\n  /**\n   * @returns {int}\n   */\n  getLength() {\n    if (!this.options.colors) {\n      return 0;\n    }\n\n    if (Array.isArray(this.options.colors)) {\n      return this.options.colors.length;\n    }\n\n    if (typeof this.options.colors === 'object') {\n      return Object.keys(this.options.colors).length;\n    }\n\n    return 0;\n  }\n\n  resolveColor(color) {\n    if (this.getLength() <= 0) {\n      return false;\n    }\n\n    if (Array.isArray(this.options.colors)) {\n      if (this.options.colors.indexOf(color) >= 0) {\n        return color;\n      }\n      if (this.options.colors.indexOf(color.toUpperCase()) >= 0) {\n        return color.toUpperCase();\n      }\n      if (this.options.colors.indexOf(color.toLowerCase()) >= 0) {\n        return color.toLowerCase();\n      }\n      return false;\n    }\n\n    if (typeof this.options.colors !== 'object') {\n      return false;\n    }\n\n    if (!this.options.namesAsValues) {\n      return this.getValue(color, false);\n    }\n    return this.getName(color, this.getName('#' + color, this.getValue(color, false)));\n  }\n\n  /**\n   * Given a color value, returns the corresponding color name or defaultValue.\n   *\n   * @param {String} value\n   * @param {*} defaultValue\n   * @returns {*}\n   */\n  getName(value, defaultValue = false) {\n    if (!(typeof value === 'string') || !this.options.colors) {\n      return defaultValue;\n    }\n    for (let name in this.options.colors) {\n      if (!this.options.colors.hasOwnProperty(name)) {\n        continue;\n      }\n      if (this.options.colors[name].toLowerCase() === value.toLowerCase()) {\n        return name;\n      }\n    }\n    return defaultValue;\n  }\n\n  /**\n   * Given a color name, returns the corresponding color value or defaultValue.\n   *\n   * @param {String} name\n   * @param {*} defaultValue\n   * @returns {*}\n   */\n  getValue(name, defaultValue = false) {\n    if (!(typeof name === 'string') || !this.options.colors) {\n      return defaultValue;\n    }\n    if (this.options.colors.hasOwnProperty(name)) {\n      return this.options.colors[name];\n    }\n    return defaultValue;\n  }\n}\n\nexport default Palette;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/extensions/Palette.js","'use strict';\n\nimport Colorpicker from './Colorpicker';\nimport $ from 'jquery';\n\nlet plugin = 'colorpicker';\n\n$[plugin] = Colorpicker;\n\n$.fn[plugin] = function (option) {\n  let apiArgs = Array.prototype.slice.call(arguments, 1),\n    isSingleElement = (this.length === 1),\n    returnValue = null;\n\n  let $jq = this.each(function () {\n    let $this = $(this),\n      inst = $this.data(plugin),\n      options = ((typeof option === 'object') ? option : {});\n\n    if (!inst) {\n      inst = new Colorpicker(this, options);\n      $this.data(plugin, inst);\n    }\n\n    if (typeof option === 'string') {\n      if (option === 'colorpicker') {\n        returnValue = inst;\n      } else if ($.isFunction(inst[option])) {\n        returnValue = inst[option].apply(inst, apiArgs);\n      } else { // its a property ?\n        if (apiArgs.length) {\n          // set property\n          inst[option] = apiArgs[0];\n        }\n        returnValue = inst[option];\n      }\n    } else {\n      returnValue = $this;\n    }\n  });\n\n  return isSingleElement ? returnValue : $jq;\n};\n\n$.fn[plugin].constructor = Colorpicker;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/jquery-plugin.js","'use strict';\n\nimport Color from './Color';\nimport Extension from './Extension';\nimport defaults from './options';\nimport bundledExtensions from 'extensions';\nimport $ from 'jquery';\n\nlet colorPickerIdCounter = 0;\n\n/**\n * Colorpicker widget class\n */\nclass Colorpicker {\n  /**\n   * Color class\n   *\n   * @static\n   * @type {Color}\n   */\n  static get Color() {\n    return Color;\n  }\n\n  /**\n   * Extension class\n   *\n   * @static\n   * @type {Extension}\n   */\n  static get Extension() {\n    return Extension;\n  }\n\n  /**\n   * Colorpicker bundled extension classes\n   *\n   * @static\n   * @type {{Extension}}\n   */\n  static get Extensions() {\n    return bundledExtensions;\n  }\n\n  /**\n   * color getter\n   *\n   * @type {Color|null}\n   */\n  get color() {\n    return this.element.data('color');\n  }\n\n  /**\n   * color setter\n   *\n   * @ignore\n   * @param {Color|null} value\n   */\n  set color(value) {\n    this.element.data('color', value);\n  }\n\n  /**\n   * @fires colorpickerCreate\n   * @param {Object|String} element\n   * @param {Object} options\n   * @constructor\n   */\n  constructor(element, options) {\n    colorPickerIdCounter += 1;\n    /**\n     * The colorpicker instance number\n     * @type {number}\n     */\n    this.id = colorPickerIdCounter;\n\n    /**\n     * @type {*|jQuery}\n     */\n    this.element = $(element).addClass('colorpicker-element');\n    this.element.attr('data-colorpicker-id', this.id);\n\n    /**\n     * @type {defaults}\n     */\n    this.options = Object.assign({}, defaults, options, this.element.data());\n\n    /**\n     * @type {Extension[]}\n     */\n    this.extensions = [];\n\n    if (!Array.isArray(this.options.extensions)) {\n      this.options.extensions = [];\n    }\n\n    /**\n     * @type {*|jQuery}\n     */\n    this.component = this.options.component;\n    this.component = (this.component !== false) ? this.element.find(this.component) : false;\n    if (this.component && (this.component.length === 0)) {\n      this.component = false;\n    }\n\n    /**\n     * @type {*|jQuery}\n     */\n    this.container = (this.options.container === true) ? this.element : this.options.container;\n    this.container = (this.container !== false) ? $(this.container) : false;\n\n    /**\n     * @type {*|String}\n     * @private\n     */\n    this.currentSlider = null;\n\n    /**\n     * @type {{left: number, top: number}}\n     * @private\n     */\n    this.mousePointer = {\n      left: 0,\n      top: 0\n    };\n\n    /**\n     * Latest external event\n     *\n     * @type {{name: String, e: *}}\n     * @private\n     */\n    this.lastEvent = {\n      name: null,\n      e: null\n    };\n\n    // Is the element an input? Should we search inside for any input?\n    /**\n     * @type {*|jQuery}\n     */\n    this.input = this.element.is('input') ? this.element : (this.options.input ?\n      this.element.find(this.options.input) : false);\n\n    if (this.input && (this.input.length === 0)) {\n      this.input = false;\n    }\n\n    if (this.options.debug) {\n      this.options.extensions.push({name: 'Debugger'});\n    }\n\n    // Register extensions\n    this.options.extensions.forEach((ext) => {\n      this.addExtension(ext.name, bundledExtensions[ext.name.toLowerCase()], ext);\n    });\n\n    let colorValue = this.options.color !== false ? this.options.color : this.getValue();\n\n    this.color = colorValue ? this.createColor(colorValue) : false;\n\n    if (this.options.format === false) {\n      // If format is false, use the first parsed one from now on\n      this.options.format = this.color.format;\n    }\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.disabled = false;\n\n    // Setup picker\n    let $picker = this.picker = $(this.options.template);\n\n    if (this.options.customClass) {\n      $picker.addClass(this.options.customClass);\n    }\n    if (this.options.inline) {\n      $picker.addClass('colorpicker-inline colorpicker-visible');\n    } else {\n      $picker.addClass('colorpicker-hidden');\n    }\n    if (this.options.horizontal) {\n      $picker.addClass('colorpicker-horizontal');\n    }\n\n    if (\n      (this.options.useAlpha || (this.hasColor() && this.color.hasTransparency())) &&\n      (this.options.useAlpha !== false)\n    ) {\n      this.options.useAlpha = true;\n      $picker.addClass('colorpicker-with-alpha');\n    }\n\n    if (this.options.align === 'right') {\n      $picker.addClass('colorpicker-right');\n    }\n    if (this.options.inline === true) {\n      $picker.addClass('colorpicker-no-arrow');\n    }\n\n    // Prevent closing the colorpicker when clicking on itself\n    $picker.on('mousedown.colorpicker touchstart.colorpicker', $.proxy(function (e) {\n      if (e.target === e.currentTarget) {\n        e.preventDefault();\n      }\n    }, this));\n\n    // Bind click/tap events on the sliders\n    $picker.find('.colorpicker-saturation, .colorpicker-hue, .colorpicker-alpha')\n      .on('mousedown.colorpicker touchstart.colorpicker', $.proxy(this._mousedown, this));\n\n    $picker.appendTo(this.container ? this.container : $('body'));\n\n    // Bind other events\n    if (this.hasInput()) {\n      this.input.on({\n        'keyup.colorpicker': $.proxy(this._keyup, this)\n      });\n      this.input.on({\n        'change.colorpicker': $.proxy(this._change, this)\n      });\n      if (this.component === false) {\n        this.element.on({\n          'focus.colorpicker': $.proxy(this.show, this)\n        });\n      }\n      if (this.options.inline === false) {\n        this.element.on({\n          'focusout.colorpicker': $.proxy(this.hide, this)\n        });\n      }\n    }\n\n    if (this.component !== false) {\n      this.component.on({\n        'click.colorpicker': $.proxy(this.show, this)\n      });\n    }\n\n    if ((this.hasInput() === false) && (this.component === false) && !this.element.has('.colorpicker')) {\n      this.element.on({\n        'click.colorpicker': $.proxy(this.show, this)\n      });\n    }\n\n    // for HTML5 input[type='color']\n    if (this.hasInput() && (this.component !== false) && (this.input.attr('type') === 'color')) {\n      this.input.on({\n        'click.colorpicker': $.proxy(this.show, this),\n        'focus.colorpicker': $.proxy(this.show, this)\n      });\n    }\n\n    // Update if there is a color option\n    this.update(this.options.color !== false);\n\n    $($.proxy(function () {\n      /**\n       * (Colorpicker) When the Colorpicker instance has been created and the DOM is ready.\n       *\n       * @event colorpickerCreate\n       */\n      this.element.trigger({\n        type: 'colorpickerCreate',\n        colorpicker: this,\n        color: this.color\n      });\n    }, this));\n  }\n\n  /**\n   * Creates and registers the given extension\n   *\n   * @param {String|Extension} extensionName\n   * @param {Extension} ExtensionClass\n   * @param {Object} [config]\n   * @returns {Extension}\n   */\n  addExtension(extensionName, ExtensionClass, config = {}) {\n    let ext = (extensionName instanceof Extension) ? extensionName : new ExtensionClass(this, config);\n\n    this.extensions.push(ext);\n    return ext;\n  }\n\n  /**\n   * Destroys the current instance\n   *\n   * @fires colorpickerDestroy\n   */\n  destroy() {\n    this.picker.remove();\n    this.element.removeData('colorpicker', 'color').off('.colorpicker');\n    if (this.hasInput()) {\n      this.input.off('.colorpicker');\n    }\n    if (this.component !== false) {\n      this.component.off('.colorpicker');\n    }\n    this.element.removeClass('colorpicker-element');\n\n    /**\n     * (Colorpicker) When the instance is destroyed with all events unbound.\n     *\n     * @event colorpickerDestroy\n     */\n    this.element.trigger({\n      type: 'colorpickerDestroy',\n      colorpicker: this,\n      color: this.color\n    });\n  }\n\n  /**\n   * Returns true if the current color object is an instance of Color, false otherwise.\n   * @returns {boolean}\n   */\n  hasColor() {\n    return this.color instanceof Color;\n  }\n\n  /**\n   * @returns {*|String|Color}\n   */\n  get fallbackColor() {\n    return this.options.fallbackColor ? this.options.fallbackColor : (this.hasColor() ? this.color : '#000');\n  }\n\n  get format() {\n    if (this.options.format) {\n      return this.options.format;\n    }\n\n    if (this.hasColor() && this.color.hasTransparency() && this.color.format.match(/^hex/)) {\n      return this.options.enableHex8 ? 'hex8' : (this.isAlphaEnabled() ? 'rgba' : 'hex');\n    }\n\n    if (this.hasColor()) {\n      return this.color.format;\n    }\n\n    return null;\n  }\n\n  /**\n   * Formatted color string, with the formatting options applied\n   * (e.g. useHashPrefix)\n   * @returns {String}\n   */\n  toInputColorString() {\n    let str = this.toCssColorString();\n\n    if (!str) {\n      return str;\n    }\n\n    if (this.options.useHashPrefix === false) {\n      str = str.replace(/^#/g, '');\n    }\n\n    return this._resolveColor(str);\n  }\n\n  /**\n   * Formatted color string, suitable for CSS\n   * @returns {String}\n   */\n  toCssColorString() {\n    if (!this.hasColor()) {\n      return '';\n    }\n    return this.color.toString(this.format);\n  }\n\n  /**\n   * If the widget is not inside a container or inline, rearranges its position relative to its element offset.\n   *\n   * @param {Event} [e]\n   * @private\n   * @returns {boolean} Returns false if the widget is inside a container or inline, true otherwise\n   */\n  _reposition(e) {\n    this.lastEvent.name = 'reposition';\n    this.lastEvent.e = e;\n\n    if (this.options.inline !== false || this.options.container) {\n      return false;\n    }\n    let type = this.container && this.container[0] !== window.document.body ? 'position' : 'offset';\n    let element = this.component || this.element;\n    let offset = element[type]();\n\n    if (this.options.align === 'right') {\n      offset.left -= this.picker.outerWidth() - element.outerWidth();\n    }\n    this.picker.css({\n      top: offset.top + element.outerHeight(),\n      left: offset.left\n    });\n    return true;\n  }\n\n  /**\n   * Shows the colorpicker widget if hidden.\n   * If the input is disabled this call will be ignored.\n   *\n   * @fires colorpickerShow\n   * @param {Event} [e]\n   * @returns {boolean} True if was hidden and afterwards visible, false if nothing happened.\n   */\n  show(e) {\n    this.lastEvent.name = 'show';\n    this.lastEvent.e = e;\n\n    if (this.isVisible() || this.isDisabled()) {\n      // Don't show the widget if it's already visible or it is disabled\n      return false;\n    }\n    this.picker.addClass('colorpicker-visible').removeClass('colorpicker-hidden');\n\n    this._reposition(e);\n    $(window).on('resize.colorpicker', $.proxy(this._reposition, this));\n\n    if (e && (!this.hasInput() || this.input.attr('type') === 'color')) {\n      if (e.stopPropagation && e.preventDefault) {\n        e.stopPropagation();\n        e.preventDefault();\n      }\n    }\n    if ((this.component || !this.input) && (this.options.inline === false)) {\n      $(window.document).on({\n        'mousedown.colorpicker': $.proxy(this.hide, this)\n      });\n    }\n\n    /**\n     * (Colorpicker) When show() is called and the widget can be shown.\n     *\n     * @event colorpickerShow\n     */\n    this.element.trigger({\n      type: 'colorpickerShow',\n      colorpicker: this,\n      color: this.color\n    });\n\n    return true;\n  }\n\n  /**\n   * Hides the colorpicker widget.\n   * Hide is prevented when it is triggered by an event whose target element has been clicked/touched.\n   *\n   * @fires colorpickerHide\n   * @param {Event} [e]\n   * @returns {boolean} True if was visible and afterwards hidden, false if nothing happened.\n   */\n  hide(e) {\n    this.lastEvent.name = 'hide';\n    this.lastEvent.e = e;\n\n    if (this.isHidden()) {\n      // Do not trigger if already hidden\n      return false;\n    }\n    if ((typeof e !== 'undefined') && e.target) {\n      // Prevent hide if triggered by an event and an element inside the colorpicker has been clicked/touched\n      if (\n        $(e.currentTarget).parents('.colorpicker').length > 0 ||\n        $(e.target).parents('.colorpicker').length > 0\n      ) {\n        return false;\n      }\n    }\n    this.picker.addClass('colorpicker-hidden').removeClass('colorpicker-visible');\n    $(window).off('resize.colorpicker', this._reposition);\n    $(window.document).off({\n      'mousedown.colorpicker': this.hide\n    });\n\n    /**\n     * (Colorpicker) When hide() is called and the widget can be hidden.\n     *\n     * @event colorpickerHide\n     */\n    this.element.trigger({\n      type: 'colorpickerHide',\n      colorpicker: this,\n      color: this.color\n    });\n    return true;\n  }\n\n  /**\n   * Returns true if the colorpicker element has the colorpicker-visible class and not the colorpicker-hidden one.\n   * False otherwise.\n   *\n   * @returns {boolean}\n   */\n  isVisible() {\n    return this.picker.hasClass('colorpicker-visible') && !this.picker.hasClass('colorpicker-hidden');\n  }\n\n  /**\n   * Returns true if the colorpicker element has the colorpicker-hidden class and not the colorpicker-visible one.\n   * False otherwise.\n   *\n   * @returns {boolean}\n   */\n  isHidden() {\n    return this.picker.hasClass('colorpicker-hidden') && !this.picker.hasClass('colorpicker-visible');\n  }\n\n  /**\n   * If the input element is present, it updates the value with the current color object color string.\n   * If value is set, this method fires a \"change\" event on the input element.\n   *\n   * @fires change\n   * @private\n   */\n  _updateInput() {\n    if (this.hasInput()) {\n      let val = this.toInputColorString();\n\n      if (val === this.input.prop('value')) {\n        // No need to set value or trigger any event if nothing changed\n        return;\n      }\n\n      this.input.prop('value', val ? val : '');\n\n      /**\n       * (Input) Triggered on the input element when a new color is selected.\n       *\n       * @event change\n       */\n      this.input.trigger({\n        type: 'change',\n        colorpicker: this,\n        color: this.color,\n        value: val\n      });\n    }\n  }\n\n  /**\n   * Changes the color adjustment bars using the current color object information.\n   * @private\n   */\n  _updatePicker() {\n    if (!this.hasColor()) {\n      return;\n    }\n\n    let vertical = (this.options.horizontal === false),\n      sl = vertical ? this.options.sliders : this.options.slidersHorz;\n\n    let saturationGuide = this.picker.find('.colorpicker-saturation .colorpicker-guide'),\n      hueGuide = this.picker.find('.colorpicker-hue .colorpicker-guide'),\n      alphaGuide = this.picker.find('.colorpicker-alpha .colorpicker-guide');\n\n    let hsva = this.color.hsvaRatio;\n\n    if (hueGuide.length) {\n      hueGuide.css(vertical ? 'top' : 'left', (vertical ? sl.hue.maxTop : sl.hue.maxLeft) * (1 - hsva.h));\n    }\n\n    if (alphaGuide.length) {\n      alphaGuide.css(vertical ? 'top' : 'left', (vertical ? sl.alpha.maxTop : sl.alpha.maxLeft) * (1 - hsva.a));\n    }\n\n    if (saturationGuide.length) {\n      saturationGuide.css({\n        'top': sl.saturation.maxTop - hsva.v * sl.saturation.maxTop,\n        'left': hsva.s * sl.saturation.maxLeft\n      });\n    }\n\n    this.picker.find('.colorpicker-saturation')\n      .css('backgroundColor', this.color.getHueOnlyCopy().toHexString()); // we only need hue\n\n    this.picker.find('.colorpicker-alpha')\n      .css('backgroundColor', this.color.toString('hex6')); // we don't need alpha\n  }\n\n  /**\n   * If the component element is present, its background color is updated\n   * @private\n   */\n  _updateComponent() {\n    if (!this.hasColor()) {\n      return;\n    }\n\n    if (this.component !== false) {\n      let icn = this.component.find('i').eq(0);\n\n      if (icn.length > 0) {\n        icn.css({\n          'backgroundColor': this.toCssColorString()\n        });\n      } else {\n        this.component.css({\n          'backgroundColor': this.toCssColorString()\n        });\n      }\n    }\n  }\n\n  /**\n   * @private\n   * @returns {boolean}\n   */\n  _shouldUpdate() {\n    return (this.hasColor() && ((this.getValue(false) !== false)));\n  }\n\n  /**\n   * Updated the component color, the input value and the widget if a color is present.\n   *\n   * If force is true, it is updated anyway.\n   *\n   * @fires colorpickerUpdate\n   * @param {boolean} [force]\n   */\n  update(force = false) {\n    if (this._shouldUpdate() || (force === true)) {\n      // Update only if the current value (from input or data) is not empty\n      this._updateComponent();\n\n      // Do not update input when autoInputFallback is disabled and last event is keyup.\n      let preventInputUpdate = (\n        (this.options.autoInputFallback !== true) &&\n        (\n          // this.isInvalidColor() ||  // prevent also on invalid color (on create, leaves invalid colors)\n          (this.lastEvent.name === 'keyup')\n        )\n      );\n\n      if (!preventInputUpdate) {\n        this._updateInput();\n      }\n\n      this._updatePicker();\n\n      /**\n       * (Colorpicker) Fired when the widget is updated.\n       *\n       * @event colorpickerUpdate\n       */\n      this.element.trigger({\n        type: 'colorpickerUpdate',\n        colorpicker: this,\n        color: this.color\n      });\n    }\n  }\n\n  /**\n   * Returns the color string from the input value or the 'data-color' attribute of the input or element.\n   * If empty, it returns the defaultValue parameter.\n   *\n   * @param {String|*} [defaultValue]\n   * @returns {String|*}\n   */\n  getValue(defaultValue = null) {\n    defaultValue = (typeof defaultValue === 'undefined') ? this.fallbackColor : defaultValue;\n    let candidates = [], val = false;\n\n    if (this.hasInput()) {\n      candidates.push(this.input.val());\n      candidates.push(this.input.data('color'));\n    }\n    candidates.push(this.element.data('color'));\n\n    candidates.map((item) => {\n      if (item && (val === false)) {\n        val = item;\n      }\n    });\n\n    val = ((val === false) ? defaultValue : val);\n\n    if (val instanceof Color) {\n      return val.toString(this.format);\n    }\n\n    return val;\n  }\n\n  /**\n   * Sets the color manually\n   *\n   * @fires colorpickerChange\n   * @param {String|Color} val\n   */\n  setValue(val) {\n    if (this.hasColor() && this.color.equals(val)) {\n      // equal color object\n      return;\n    }\n\n    let color = val ? this.createColor(val) : false;\n\n    if (!this.hasColor() && !color) {\n      // color was empty and the new one too\n      return;\n    }\n\n    // force update if color is changed to empty\n    let shouldForceUpdate = this.hasColor() && !color;\n\n    this.color = color;\n\n    /**\n     * (Colorpicker) When the color is set programmatically with setValue().\n     *\n     * @event colorpickerChange\n     */\n    this.element.trigger({\n      type: 'colorpickerChange',\n      colorpicker: this,\n      color: this.color,\n      value: val\n    });\n\n    // force update if color has changed to empty\n    this.update(shouldForceUpdate);\n  }\n\n  /**\n   * Creates a new color using the widget instance options (fallbackColor, format).\n   *\n   * @fires colorpickerInvalid\n   * @param {*} val\n   * @param {boolean} useFallback\n   * @returns {Color}\n   */\n  createColor(val, useFallback = true) {\n    let color = new Color(this._resolveColor(val), {format: this.format});\n\n    if (!color.isValid()) {\n      let invalidColor = color, fallback;\n\n      if (useFallback) {\n        fallback = ((this.fallbackColor instanceof Color) && this.fallbackColor.isValid()) ?\n          this.fallbackColor : this._resolveColor(this.fallbackColor);\n\n        color = new Color(fallback, {format: this.format});\n\n        if (!color.isValid() && useFallback) {\n          throw new Error('The fallback color is invalid.');\n        }\n      }\n\n      color.previous = invalidColor;\n\n      /**\n       * (Colorpicker) Fired when the color is invalid and the fallback color is going to be used.\n       *\n       * @event colorpickerInvalid\n       */\n      this.element.trigger({\n        type: 'colorpickerInvalid',\n        colorpicker: this,\n        color: color,\n        value: val\n      });\n    }\n\n    if (!this.isAlphaEnabled() && color.hasTransparency()) {\n      // Alpha is disabled\n      color.setAlpha(1);\n    }\n\n    if (!this.hasColor()) {\n      // No previous color, so no need to compare\n      return color;\n    }\n\n    let hsva = color.hsvaRatio;\n    let prevHsva = this.color.hsvaRatio;\n\n    if (\n      hsva.s === 0 &&\n      hsva.h === 0 &&\n      prevHsva.h !== 0\n    ) {\n      // Hue was set to 0 because saturation was 0, use previous hue, since it was not meant to change...\n      color.setHueRatio(prevHsva.h);\n    }\n\n    if (!this.isAlphaEnabled() && color.hasTransparency()) {\n      // Alpha is disabled\n      color.setAlpha(1);\n    }\n\n    return color;\n  }\n\n  /**\n   * Checks if there is a color object, that it is valid and it is not a fallback\n   * @returns {boolean}\n   */\n  isInvalidColor() {\n    return !this.hasColor() || !this.color.isValid() || !!this.color.previous;\n  }\n\n  /**\n   * Returns true if the useAlpha option is exactly true, false otherwise\n   * @returns {boolean}\n   */\n  isAlphaEnabled() {\n    return this.options.useAlpha === true;\n  }\n\n  /**\n   * Resolves a color, in case is not in a standard format (e.g. a custom color alias)\n   *\n   * @private\n   * @param {String|*} color\n   * @returns {String|*|null}\n   */\n  _resolveColor(color) {\n    let extResolvedColor = false;\n\n    $.each(this.extensions, function (name, ext) {\n      if (extResolvedColor !== false) {\n        // skip if resolved\n        return;\n      }\n      extResolvedColor = ext.resolveColor(color);\n    });\n\n    if (extResolvedColor !== false) {\n      color = extResolvedColor;\n    }\n\n    return color;\n  }\n\n  /**\n   * Returns true if the widget has an associated input element, false otherwise\n   * @returns {boolean}\n   */\n  hasInput() {\n    return (this.input !== false);\n  }\n\n  /**\n   * Returns true if this instance is disabled\n   * @returns {boolean}\n   */\n  isDisabled() {\n    return this.disabled === true;\n  }\n\n  /**\n   * Disables the widget and the input if any\n   *\n   * @fires colorpickerDisable\n   * @returns {boolean}\n   */\n  disable() {\n    if (this.hasInput()) {\n      this.input.prop('disabled', true);\n    }\n    this.disabled = true;\n\n    /**\n     * (Colorpicker) When the widget has been disabled.\n     *\n     * @event colorpickerDisable\n     */\n    this.element.trigger({\n      type: 'colorpickerDisable',\n      colorpicker: this,\n      color: this.color\n    });\n    return true;\n  }\n\n  /**\n   * Enables the widget and the input if any\n   *\n   * @fires colorpickerEnable\n   * @returns {boolean}\n   */\n  enable() {\n    if (this.hasInput()) {\n      this.input.prop('disabled', false);\n    }\n    this.disabled = false;\n\n    /**\n     * (Colorpicker) When the widget has been enabled.\n     *\n     * @event colorpickerEnable\n     */\n    this.element.trigger({\n      type: 'colorpickerEnable',\n      colorpicker: this,\n      color: this.color\n    });\n    return true;\n  }\n\n  /**\n   * Function triggered when clicking in one of the color adjustment bars\n   *\n   * @private\n   * @fires mousemove\n   * @param {Event} e\n   * @returns {boolean}\n   */\n  _mousedown(e) {\n    this.lastEvent.name = 'mousedown';\n    this.lastEvent.e = e;\n\n    if (!e.pageX && !e.pageY && e.originalEvent && e.originalEvent.touches) {\n      e.pageX = e.originalEvent.touches[0].pageX;\n      e.pageY = e.originalEvent.touches[0].pageY;\n    }\n    e.stopPropagation();\n    e.preventDefault();\n\n    let target = $(e.target);\n\n    // detect the slider and set the limits and callbacks\n    let zone = target.closest('div');\n    let sl = this.options.horizontal ? this.options.slidersHorz : this.options.sliders;\n\n    if (!zone.is('.colorpicker')) {\n      if (zone.is('.colorpicker-saturation')) {\n        this.currentSlider = $.extend({}, sl.saturation);\n      } else if (zone.is('.colorpicker-hue')) {\n        this.currentSlider = $.extend({}, sl.hue);\n      } else if (zone.is('.colorpicker-alpha')) {\n        this.currentSlider = $.extend({}, sl.alpha);\n      } else {\n        return false;\n      }\n      let offset = zone.offset();\n      // reference to guide's style\n\n      this.currentSlider.guide = zone.find('.colorpicker-guide')[0].style;\n      this.currentSlider.left = e.pageX - offset.left;\n      this.currentSlider.top = e.pageY - offset.top;\n      this.mousePointer = {\n        left: e.pageX,\n        top: e.pageY\n      };\n\n      /**\n       * (window.document) Triggered on mousedown for the document object,\n       * so the color adjustment guide is moved to the clicked position.\n       *\n       * @event mousemove\n       */\n      $(window.document).on({\n        'mousemove.colorpicker': $.proxy(this._mousemove, this),\n        'touchmove.colorpicker': $.proxy(this._mousemove, this),\n        'mouseup.colorpicker': $.proxy(this._mouseup, this),\n        'touchend.colorpicker': $.proxy(this._mouseup, this)\n      }).trigger('mousemove');\n    }\n    return false;\n  }\n\n  /**\n   * Function triggered when dragging a guide inside one of the color adjustment bars.\n   *\n   * @private\n   * @param {Event} e\n   * @returns {boolean}\n   */\n  _mousemove(e) {\n    this.lastEvent.name = 'mousemove';\n    this.lastEvent.e = e;\n\n    let color = !this.hasColor() ? this.createColor(this.fallbackColor) : this.color.getCopy();\n\n    if (!e.pageX && !e.pageY && e.originalEvent && e.originalEvent.touches) {\n      e.pageX = e.originalEvent.touches[0].pageX;\n      e.pageY = e.originalEvent.touches[0].pageY;\n    }\n    e.stopPropagation();\n    e.preventDefault();\n    let left = Math.max(\n      0,\n      Math.min(\n        this.currentSlider.maxLeft,\n        this.currentSlider.left + ((e.pageX || this.mousePointer.left) - this.mousePointer.left)\n      )\n    );\n    let top = Math.max(\n      0,\n      Math.min(\n        this.currentSlider.maxTop,\n        this.currentSlider.top + ((e.pageY || this.mousePointer.top) - this.mousePointer.top)\n      )\n    );\n\n    this.currentSlider.guide.left = left + 'px';\n    this.currentSlider.guide.top = top + 'px';\n    if (this.currentSlider.callLeft) {\n      color[this.currentSlider.callLeft].call(color, left / this.currentSlider.maxLeft);\n    }\n    if (this.currentSlider.callTop) {\n      color[this.currentSlider.callTop].call(color, top / this.currentSlider.maxTop);\n    }\n\n    this.setValue(color);\n    return false;\n  }\n\n  /**\n   * Function triggered when releasing the click in one of the color adjustment bars.\n   *\n   * @private\n   * @param {Event} e\n   * @returns {boolean}\n   */\n  _mouseup(e) {\n    this.lastEvent.name = 'mouseup';\n    this.lastEvent.e = e;\n\n    e.stopPropagation();\n    e.preventDefault();\n    $(window.document).off({\n      'mousemove.colorpicker': this._mousemove,\n      'touchmove.colorpicker': this._mousemove,\n      'mouseup.colorpicker': this._mouseup,\n      'touchend.colorpicker': this._mouseup\n    });\n    return false;\n  }\n\n  /**\n   * Function triggered when the input has changed, so the colorpicker gets updated.\n   *\n   * @private\n   * @param {Event} e\n   * @returns {boolean}\n   */\n  _change(e) {\n    this.lastEvent.name = 'change';\n    this.lastEvent.e = e;\n\n    let val = this.input.val();\n\n    if (val !== this.toInputColorString()) {\n      this.setValue(val);\n    }\n  }\n\n  /**\n   * Function triggered after a keyboard key has been released.\n   *\n   * @private\n   * @param {Event} e\n   * @returns {boolean}\n   */\n  _keyup(e) {\n    this.lastEvent.name = 'keyup';\n    this.lastEvent.e = e;\n\n    let val = this.input.val();\n\n    if (val !== this.toInputColorString()) {\n      this.setValue(val);\n    }\n  }\n}\n\nexport default Colorpicker;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/Colorpicker.js","'use strict';\n\nimport tinycolor from 'tinycolor2';\n\nfunction unwrapColor(color) {\n  if (color instanceof tinycolor) {\n    return {\n      r: color._r,\n      g: color._g,\n      b: color._b,\n      a: color._a\n    };\n  }\n  return color;\n}\n\n/**\n * Sanitizes a format string, so it is compatible with tinycolor,\n * or returns the same value if it is not a string.\n *\n * @param {String} format\n * @returns {String|*}\n * @private\n */\nfunction getCompatibleFormat(format) {\n  if (format instanceof String || typeof format === 'string') {\n    return format.replace(/a$/gi, '');\n  }\n\n  return format;\n}\n\n/**\n * Color manipulation class that extends the tinycolor library class.\n */\nclass Color extends tinycolor {\n  /**\n   * Identifier of the color instance.\n   *\n   * @type {int}\n   * @readonly\n   */\n  get id() {\n    return this._tc_id;\n  }\n\n  /**\n   * Format of the parsed color.\n   *\n   * @type {String}\n   * @readonly\n   */\n  get format() {\n    return this._format;\n  }\n\n  /**\n   * All options of the current instance.\n   *\n   * @type {{format: String, gradientType: String}}\n   * @readonly\n   */\n  get options() {\n    return {\n      format: this._format,\n      gradientType: this._gradientType\n    };\n  }\n\n  /**\n   * @returns {{h, s, v, a}}\n   */\n  get hsva() {\n    return this.toHsv();\n  }\n\n  /**\n   * @returns {{h, s, v, a}}\n   */\n  get hsvaRatio() {\n    let hsv = this.hsva;\n\n    return {\n      h: hsv.h / 360,\n      s: hsv.s,\n      v: hsv.v,\n      a: hsv.a\n    };\n  }\n\n  /**\n   * foo bar\n   * @param {Color|*} color\n   * @param {{format}} [options]\n   * @constructor\n   */\n  constructor(color, options = {format: null}) {\n    if (options.format) {\n      options.format = getCompatibleFormat(options.format);\n    }\n    super(unwrapColor(color), options);\n\n    /**\n     * @type {Color|*}\n     */\n    this._originalInput = color; // keep real original color\n    /**\n     * Hue backup to not lose the information when saturation is 0.\n     * @type {number}\n     */\n    this._hbak = this.hsva.h;\n    /**\n     * If set, it contains a reference to a previous color that caused the creation of this one.\n     * @type {Color}\n     */\n    this.previous = null;\n  }\n\n  /**\n   * Compares a color object with this one and returns true if it is equal or false if not.\n   *\n   * @param {Color} color\n   * @returns {boolean}\n   */\n  equals(color) {\n    if (!(color instanceof tinycolor)) {\n      return false;\n    }\n    return this._r === color._r &&\n      this._g === color._g &&\n      this._b === color._b &&\n      this._a === color._a &&\n      this._roundA === color._roundA &&\n      this._format === color._format &&\n      this._gradientType === color._gradientType &&\n      this._ok === color._ok;\n  }\n\n  /**\n   * Imports all variables of the given color to this instance, excepting `_tc_id`.\n   * @param {Color} color\n   */\n  importColor(color) {\n    if (!(color instanceof tinycolor)) {\n      throw new Error('Color.importColor: The color argument is not an instance of tinycolor.');\n    }\n    this._originalInput = color._originalInput;\n    this._r = color._r;\n    this._g = color._g;\n    this._b = color._b;\n    this._a = color._a;\n    this._roundA = color._roundA;\n    this._format = getCompatibleFormat(color._format);\n    this._gradientType = color._gradientType;\n    this._ok = color._ok;\n    // omit .previous and ._tc_id import\n  }\n\n  /**\n   * Imports the _r, _g, _b, _a, _hbak and _ok variables of the given color to this instance.\n   * @param {Color} color\n   */\n  importRgb(color) {\n    if (!color instanceof Color) {\n      throw new Error('Color.importColor: The color argument is not an instance of tinycolor.');\n    }\n    this._r = color._r;\n    this._g = color._g;\n    this._b = color._b;\n    this._a = color._a;\n    this._ok = color._ok;\n    this._hbak = color._hbak;\n  }\n\n  /**\n   * @param {{h,s,v,a}} hsv\n   */\n  importHsv(hsv) {\n    this._hbak = hsv.h;\n    this.importRgb(new Color(hsv, this.options));\n  }\n\n  /**\n   * @returns {Color}\n   */\n  getCopy() {\n    return new Color(this.hsva, this.options);\n  }\n\n  /**\n   * @returns {Color}\n   */\n  getHueOnlyCopy() {\n    return new Color({h: this._hbak ? this._hbak : this.hsva.h, s: 100, v: 100}, this.options);\n  }\n\n  /**\n   * @returns {Color}\n   */\n  getOpaqueCopy() {\n    return new Color(Object.assign({}, this.hsva, {a: 1}), this.options);\n  }\n\n  /**\n   * @param {number} h Degrees from 0 to 360\n   */\n  setHue(h) {\n    this.importHsv(Object.assign({}, this.hsva, {h: h}));\n  }\n\n  /**\n   * @param {number} s Percent from 0 o 100\n   */\n  setSaturation(s) {\n    this.importHsv(Object.assign({}, this.hsva, {s: s}));\n  }\n\n  /**\n   * @param {number} v Percent from 0 o 100\n   */\n  setBrightness(v) {\n    this.importHsv(Object.assign({}, this.hsva, {v: v}));\n  }\n\n  /**\n   * @param {number} h Ratio from 0.0 to 1.0\n   */\n  setHueRatio(h) {\n    if (h === 0) {\n      return;\n    }\n    this.setHue((1 - h) * 360);\n  }\n\n  /**\n   * @param {number} s Ratio from 0.0 to 1.0\n   */\n  setSaturationRatio(s) {\n    this.setSaturation(s);\n  }\n\n  /**\n   * @param {number} v Ratio from 0.0 to 1.0\n   */\n  setBrightnessRatio(v) {\n    this.setBrightness(1 - v);\n  }\n\n  /**\n   * @param {number} a Ratio from 0.0 to 1.0\n   */\n  setAlphaRatio(a) {\n    this.setAlpha(1 - a);\n  }\n\n  /**\n   * @returns {boolean}\n   */\n  isTransparent() {\n    return this._a === 0;\n  }\n\n  /**\n   * @returns {boolean}\n   */\n  hasTransparency() {\n    return this._a !== 1;\n  }\n\n  /**\n   * @param {string|null} [format] One of \"rgb\", \"prgb\", \"hex\"/\"hex6\", \"hex3\", \"hex8\", \"hsl\", \"hsv\"/\"hsb\", \"name\"\n   * @returns {String}\n   */\n  toString(format = null) {\n    format = format ? getCompatibleFormat(format) : this.format;\n\n    let colorStr = super.toString(format);\n\n    if (colorStr && colorStr.match(/^#[0-9a-f]{3,8}$/i)) {\n      // Support transparent for hex formats\n      if (this.isTransparent() && (this._r === 0) && (this._g === 0) && (this._b === 0)) {\n        return 'transparent';\n      }\n    }\n\n    return colorStr;\n  }\n}\n\nexport default Color;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/Color.js","// TinyColor v1.4.1\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\n(function(Math) {\n\nvar trimLeft = /^\\s+/,\n    trimRight = /\\s+$/,\n    tinyCounter = 0,\n    mathRound = Math.round,\n    mathMin = Math.min,\n    mathMax = Math.max,\n    mathRandom = Math.random;\n\nfunction tinycolor (color, opts) {\n\n    color = (color) ? color : '';\n    opts = opts || { };\n\n    // If input is already a tinycolor, return itself\n    if (color instanceof tinycolor) {\n       return color;\n    }\n    // If we are called as a function, call using new instead\n    if (!(this instanceof tinycolor)) {\n        return new tinycolor(color, opts);\n    }\n\n    var rgb = inputToRGB(color);\n    this._originalInput = color,\n    this._r = rgb.r,\n    this._g = rgb.g,\n    this._b = rgb.b,\n    this._a = rgb.a,\n    this._roundA = mathRound(100*this._a) / 100,\n    this._format = opts.format || rgb.format;\n    this._gradientType = opts.gradientType;\n\n    // Don't let the range of [0,255] come back in [0,1].\n    // Potentially lose a little bit of precision here, but will fix issues where\n    // .5 gets interpreted as half of the total, instead of half of 1\n    // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n    if (this._r < 1) { this._r = mathRound(this._r); }\n    if (this._g < 1) { this._g = mathRound(this._g); }\n    if (this._b < 1) { this._b = mathRound(this._b); }\n\n    this._ok = rgb.ok;\n    this._tc_id = tinyCounter++;\n}\n\ntinycolor.prototype = {\n    isDark: function() {\n        return this.getBrightness() < 128;\n    },\n    isLight: function() {\n        return !this.isDark();\n    },\n    isValid: function() {\n        return this._ok;\n    },\n    getOriginalInput: function() {\n      return this._originalInput;\n    },\n    getFormat: function() {\n        return this._format;\n    },\n    getAlpha: function() {\n        return this._a;\n    },\n    getBrightness: function() {\n        //http://www.w3.org/TR/AERT#color-contrast\n        var rgb = this.toRgb();\n        return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n    },\n    getLuminance: function() {\n        //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n        var rgb = this.toRgb();\n        var RsRGB, GsRGB, BsRGB, R, G, B;\n        RsRGB = rgb.r/255;\n        GsRGB = rgb.g/255;\n        BsRGB = rgb.b/255;\n\n        if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);}\n        if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);}\n        if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);}\n        return (0.2126 * R) + (0.7152 * G) + (0.0722 * B);\n    },\n    setAlpha: function(value) {\n        this._a = boundAlpha(value);\n        this._roundA = mathRound(100*this._a) / 100;\n        return this;\n    },\n    toHsv: function() {\n        var hsv = rgbToHsv(this._r, this._g, this._b);\n        return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n    },\n    toHsvString: function() {\n        var hsv = rgbToHsv(this._r, this._g, this._b);\n        var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\n        return (this._a == 1) ?\n          \"hsv(\"  + h + \", \" + s + \"%, \" + v + \"%)\" :\n          \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \"+ this._roundA + \")\";\n    },\n    toHsl: function() {\n        var hsl = rgbToHsl(this._r, this._g, this._b);\n        return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n    },\n    toHslString: function() {\n        var hsl = rgbToHsl(this._r, this._g, this._b);\n        var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\n        return (this._a == 1) ?\n          \"hsl(\"  + h + \", \" + s + \"%, \" + l + \"%)\" :\n          \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \"+ this._roundA + \")\";\n    },\n    toHex: function(allow3Char) {\n        return rgbToHex(this._r, this._g, this._b, allow3Char);\n    },\n    toHexString: function(allow3Char) {\n        return '#' + this.toHex(allow3Char);\n    },\n    toHex8: function(allow4Char) {\n        return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n    },\n    toHex8String: function(allow4Char) {\n        return '#' + this.toHex8(allow4Char);\n    },\n    toRgb: function() {\n        return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };\n    },\n    toRgbString: function() {\n        return (this._a == 1) ?\n          \"rgb(\"  + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" :\n          \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n    },\n    toPercentageRgb: function() {\n        return { r: mathRound(bound01(this._r, 255) * 100) + \"%\", g: mathRound(bound01(this._g, 255) * 100) + \"%\", b: mathRound(bound01(this._b, 255) * 100) + \"%\", a: this._a };\n    },\n    toPercentageRgbString: function() {\n        return (this._a == 1) ?\n          \"rgb(\"  + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" :\n          \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n    },\n    toName: function() {\n        if (this._a === 0) {\n            return \"transparent\";\n        }\n\n        if (this._a < 1) {\n            return false;\n        }\n\n        return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n    },\n    toFilter: function(secondColor) {\n        var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n        var secondHex8String = hex8String;\n        var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n\n        if (secondColor) {\n            var s = tinycolor(secondColor);\n            secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n        }\n\n        return \"progid:DXImageTransform.Microsoft.gradient(\"+gradientType+\"startColorstr=\"+hex8String+\",endColorstr=\"+secondHex8String+\")\";\n    },\n    toString: function(format) {\n        var formatSet = !!format;\n        format = format || this._format;\n\n        var formattedString = false;\n        var hasAlpha = this._a < 1 && this._a >= 0;\n        var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n\n        if (needsAlphaFormat) {\n            // Special case for \"transparent\", all other non-alpha formats\n            // will return rgba when there is transparency.\n            if (format === \"name\" && this._a === 0) {\n                return this.toName();\n            }\n            return this.toRgbString();\n        }\n        if (format === \"rgb\") {\n            formattedString = this.toRgbString();\n        }\n        if (format === \"prgb\") {\n            formattedString = this.toPercentageRgbString();\n        }\n        if (format === \"hex\" || format === \"hex6\") {\n            formattedString = this.toHexString();\n        }\n        if (format === \"hex3\") {\n            formattedString = this.toHexString(true);\n        }\n        if (format === \"hex4\") {\n            formattedString = this.toHex8String(true);\n        }\n        if (format === \"hex8\") {\n            formattedString = this.toHex8String();\n        }\n        if (format === \"name\") {\n            formattedString = this.toName();\n        }\n        if (format === \"hsl\") {\n            formattedString = this.toHslString();\n        }\n        if (format === \"hsv\") {\n            formattedString = this.toHsvString();\n        }\n\n        return formattedString || this.toHexString();\n    },\n    clone: function() {\n        return tinycolor(this.toString());\n    },\n\n    _applyModification: function(fn, args) {\n        var color = fn.apply(null, [this].concat([].slice.call(args)));\n        this._r = color._r;\n        this._g = color._g;\n        this._b = color._b;\n        this.setAlpha(color._a);\n        return this;\n    },\n    lighten: function() {\n        return this._applyModification(lighten, arguments);\n    },\n    brighten: function() {\n        return this._applyModification(brighten, arguments);\n    },\n    darken: function() {\n        return this._applyModification(darken, arguments);\n    },\n    desaturate: function() {\n        return this._applyModification(desaturate, arguments);\n    },\n    saturate: function() {\n        return this._applyModification(saturate, arguments);\n    },\n    greyscale: function() {\n        return this._applyModification(greyscale, arguments);\n    },\n    spin: function() {\n        return this._applyModification(spin, arguments);\n    },\n\n    _applyCombination: function(fn, args) {\n        return fn.apply(null, [this].concat([].slice.call(args)));\n    },\n    analogous: function() {\n        return this._applyCombination(analogous, arguments);\n    },\n    complement: function() {\n        return this._applyCombination(complement, arguments);\n    },\n    monochromatic: function() {\n        return this._applyCombination(monochromatic, arguments);\n    },\n    splitcomplement: function() {\n        return this._applyCombination(splitcomplement, arguments);\n    },\n    triad: function() {\n        return this._applyCombination(triad, arguments);\n    },\n    tetrad: function() {\n        return this._applyCombination(tetrad, arguments);\n    }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function(color, opts) {\n    if (typeof color == \"object\") {\n        var newColor = {};\n        for (var i in color) {\n            if (color.hasOwnProperty(i)) {\n                if (i === \"a\") {\n                    newColor[i] = color[i];\n                }\n                else {\n                    newColor[i] = convertToPercentage(color[i]);\n                }\n            }\n        }\n        color = newColor;\n    }\n\n    return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n//     \"red\"\n//     \"#f00\" or \"f00\"\n//     \"#ff0000\" or \"ff0000\"\n//     \"#ff000000\" or \"ff000000\"\n//     \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n//     \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n//     \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n//     \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n//     \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n//     \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n//     \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n\n    var rgb = { r: 0, g: 0, b: 0 };\n    var a = 1;\n    var s = null;\n    var v = null;\n    var l = null;\n    var ok = false;\n    var format = false;\n\n    if (typeof color == \"string\") {\n        color = stringInputToObject(color);\n    }\n\n    if (typeof color == \"object\") {\n        if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n            rgb = rgbToRgb(color.r, color.g, color.b);\n            ok = true;\n            format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n            s = convertToPercentage(color.s);\n            v = convertToPercentage(color.v);\n            rgb = hsvToRgb(color.h, s, v);\n            ok = true;\n            format = \"hsv\";\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n            s = convertToPercentage(color.s);\n            l = convertToPercentage(color.l);\n            rgb = hslToRgb(color.h, s, l);\n            ok = true;\n            format = \"hsl\";\n        }\n\n        if (color.hasOwnProperty(\"a\")) {\n            a = color.a;\n        }\n    }\n\n    a = boundAlpha(a);\n\n    return {\n        ok: ok,\n        format: color.format || format,\n        r: mathMin(255, mathMax(rgb.r, 0)),\n        g: mathMin(255, mathMax(rgb.g, 0)),\n        b: mathMin(255, mathMax(rgb.b, 0)),\n        a: a\n    };\n}\n\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// <http://www.w3.org/TR/css3-color/>\n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b){\n    return {\n        r: bound01(r, 255) * 255,\n        g: bound01(g, 255) * 255,\n        b: bound01(b, 255) * 255\n    };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n\n    var max = mathMax(r, g, b), min = mathMin(r, g, b);\n    var h, s, l = (max + min) / 2;\n\n    if(max == min) {\n        h = s = 0; // achromatic\n    }\n    else {\n        var d = max - min;\n        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n        switch(max) {\n            case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n            case g: h = (b - r) / d + 2; break;\n            case b: h = (r - g) / d + 4; break;\n        }\n\n        h /= 6;\n    }\n\n    return { h: h, s: s, l: l };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n    var r, g, b;\n\n    h = bound01(h, 360);\n    s = bound01(s, 100);\n    l = bound01(l, 100);\n\n    function hue2rgb(p, q, t) {\n        if(t < 0) t += 1;\n        if(t > 1) t -= 1;\n        if(t < 1/6) return p + (q - p) * 6 * t;\n        if(t < 1/2) return q;\n        if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n        return p;\n    }\n\n    if(s === 0) {\n        r = g = b = l; // achromatic\n    }\n    else {\n        var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n        var p = 2 * l - q;\n        r = hue2rgb(p, q, h + 1/3);\n        g = hue2rgb(p, q, h);\n        b = hue2rgb(p, q, h - 1/3);\n    }\n\n    return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n\n    var max = mathMax(r, g, b), min = mathMin(r, g, b);\n    var h, s, v = max;\n\n    var d = max - min;\n    s = max === 0 ? 0 : d / max;\n\n    if(max == min) {\n        h = 0; // achromatic\n    }\n    else {\n        switch(max) {\n            case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n            case g: h = (b - r) / d + 2; break;\n            case b: h = (r - g) / d + 4; break;\n        }\n        h /= 6;\n    }\n    return { h: h, s: s, v: v };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n\n    h = bound01(h, 360) * 6;\n    s = bound01(s, 100);\n    v = bound01(v, 100);\n\n    var i = Math.floor(h),\n        f = h - i,\n        p = v * (1 - s),\n        q = v * (1 - f * s),\n        t = v * (1 - (1 - f) * s),\n        mod = i % 6,\n        r = [v, q, p, p, t, v][mod],\n        g = [t, v, v, q, p, p][mod],\n        b = [p, p, t, v, v, q][mod];\n\n    return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n\n    var hex = [\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16))\n    ];\n\n    // Return a 3 character hex if possible\n    if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n    }\n\n    return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n\n    var hex = [\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16)),\n        pad2(convertDecimalToHex(a))\n    ];\n\n    // Return a 4 character hex if possible\n    if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n    }\n\n    return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n\n    var hex = [\n        pad2(convertDecimalToHex(a)),\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16))\n    ];\n\n    return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n    if (!color1 || !color2) { return false; }\n    return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\n\ntinycolor.random = function() {\n    return tinycolor.fromRatio({\n        r: mathRandom(),\n        g: mathRandom(),\n        b: mathRandom()\n    });\n};\n\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\nfunction desaturate(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.s -= amount / 100;\n    hsl.s = clamp01(hsl.s);\n    return tinycolor(hsl);\n}\n\nfunction saturate(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.s += amount / 100;\n    hsl.s = clamp01(hsl.s);\n    return tinycolor(hsl);\n}\n\nfunction greyscale(color) {\n    return tinycolor(color).desaturate(100);\n}\n\nfunction lighten (color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.l += amount / 100;\n    hsl.l = clamp01(hsl.l);\n    return tinycolor(hsl);\n}\n\nfunction brighten(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var rgb = tinycolor(color).toRgb();\n    rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));\n    rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));\n    rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));\n    return tinycolor(rgb);\n}\n\nfunction darken (color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.l -= amount / 100;\n    hsl.l = clamp01(hsl.l);\n    return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction spin(color, amount) {\n    var hsl = tinycolor(color).toHsl();\n    var hue = (hsl.h + amount) % 360;\n    hsl.h = hue < 0 ? 360 + hue : hue;\n    return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\nfunction complement(color) {\n    var hsl = tinycolor(color).toHsl();\n    hsl.h = (hsl.h + 180) % 360;\n    return tinycolor(hsl);\n}\n\nfunction triad(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\n    ];\n}\n\nfunction tetrad(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\n    ];\n}\n\nfunction splitcomplement(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),\n        tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})\n    ];\n}\n\nfunction analogous(color, results, slices) {\n    results = results || 6;\n    slices = slices || 30;\n\n    var hsl = tinycolor(color).toHsl();\n    var part = 360 / slices;\n    var ret = [tinycolor(color)];\n\n    for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {\n        hsl.h = (hsl.h + part) % 360;\n        ret.push(tinycolor(hsl));\n    }\n    return ret;\n}\n\nfunction monochromatic(color, results) {\n    results = results || 6;\n    var hsv = tinycolor(color).toHsv();\n    var h = hsv.h, s = hsv.s, v = hsv.v;\n    var ret = [];\n    var modification = 1 / results;\n\n    while (results--) {\n        ret.push(tinycolor({ h: h, s: s, v: v}));\n        v = (v + modification) % 1;\n    }\n\n    return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function(color1, color2, amount) {\n    amount = (amount === 0) ? 0 : (amount || 50);\n\n    var rgb1 = tinycolor(color1).toRgb();\n    var rgb2 = tinycolor(color2).toRgb();\n\n    var p = amount / 100;\n\n    var rgba = {\n        r: ((rgb2.r - rgb1.r) * p) + rgb1.r,\n        g: ((rgb2.g - rgb1.g) * p) + rgb1.g,\n        b: ((rgb2.b - rgb1.b) * p) + rgb1.b,\n        a: ((rgb2.a - rgb1.a) * p) + rgb1.a\n    };\n\n    return tinycolor(rgba);\n};\n\n\n// Readability Functions\n// ---------------------\n// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n// `contrast`\n// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\ntinycolor.readability = function(color1, color2) {\n    var c1 = tinycolor(color1);\n    var c2 = tinycolor(color2);\n    return (Math.max(c1.getLuminance(),c2.getLuminance())+0.05) / (Math.min(c1.getLuminance(),c2.getLuminance())+0.05);\n};\n\n// `isReadable`\n// Ensure that foreground and background color combinations meet WCAG2 guidelines.\n// The third argument is an optional Object.\n//      the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n//      the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n// If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n// *Example*\n//    tinycolor.isReadable(\"#000\", \"#111\") => false\n//    tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function(color1, color2, wcag2) {\n    var readability = tinycolor.readability(color1, color2);\n    var wcag2Parms, out;\n\n    out = false;\n\n    wcag2Parms = validateWCAG2Parms(wcag2);\n    switch (wcag2Parms.level + wcag2Parms.size) {\n        case \"AAsmall\":\n        case \"AAAlarge\":\n            out = readability >= 4.5;\n            break;\n        case \"AAlarge\":\n            out = readability >= 3;\n            break;\n        case \"AAAsmall\":\n            out = readability >= 7;\n            break;\n    }\n    return out;\n\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n//    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n//    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString();  // \"#ffffff\"\n//    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n//    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function(baseColor, colorList, args) {\n    var bestColor = null;\n    var bestScore = 0;\n    var readability;\n    var includeFallbackColors, level, size ;\n    args = args || {};\n    includeFallbackColors = args.includeFallbackColors ;\n    level = args.level;\n    size = args.size;\n\n    for (var i= 0; i < colorList.length ; i++) {\n        readability = tinycolor.readability(baseColor, colorList[i]);\n        if (readability > bestScore) {\n            bestScore = readability;\n            bestColor = tinycolor(colorList[i]);\n        }\n    }\n\n    if (tinycolor.isReadable(baseColor, bestColor, {\"level\":level,\"size\":size}) || !includeFallbackColors) {\n        return bestColor;\n    }\n    else {\n        args.includeFallbackColors=false;\n        return tinycolor.mostReadable(baseColor,[\"#fff\", \"#000\"],args);\n    }\n};\n\n\n// Big List of Colors\n// ------------------\n// <http://www.w3.org/TR/css3-color/#svg-color>\nvar names = tinycolor.names = {\n    aliceblue: \"f0f8ff\",\n    antiquewhite: \"faebd7\",\n    aqua: \"0ff\",\n    aquamarine: \"7fffd4\",\n    azure: \"f0ffff\",\n    beige: \"f5f5dc\",\n    bisque: \"ffe4c4\",\n    black: \"000\",\n    blanchedalmond: \"ffebcd\",\n    blue: \"00f\",\n    blueviolet: \"8a2be2\",\n    brown: \"a52a2a\",\n    burlywood: \"deb887\",\n    burntsienna: \"ea7e5d\",\n    cadetblue: \"5f9ea0\",\n    chartreuse: \"7fff00\",\n    chocolate: \"d2691e\",\n    coral: \"ff7f50\",\n    cornflowerblue: \"6495ed\",\n    cornsilk: \"fff8dc\",\n    crimson: \"dc143c\",\n    cyan: \"0ff\",\n    darkblue: \"00008b\",\n    darkcyan: \"008b8b\",\n    darkgoldenrod: \"b8860b\",\n    darkgray: \"a9a9a9\",\n    darkgreen: \"006400\",\n    darkgrey: \"a9a9a9\",\n    darkkhaki: \"bdb76b\",\n    darkmagenta: \"8b008b\",\n    darkolivegreen: \"556b2f\",\n    darkorange: \"ff8c00\",\n    darkorchid: \"9932cc\",\n    darkred: \"8b0000\",\n    darksalmon: \"e9967a\",\n    darkseagreen: \"8fbc8f\",\n    darkslateblue: \"483d8b\",\n    darkslategray: \"2f4f4f\",\n    darkslategrey: \"2f4f4f\",\n    darkturquoise: \"00ced1\",\n    darkviolet: \"9400d3\",\n    deeppink: \"ff1493\",\n    deepskyblue: \"00bfff\",\n    dimgray: \"696969\",\n    dimgrey: \"696969\",\n    dodgerblue: \"1e90ff\",\n    firebrick: \"b22222\",\n    floralwhite: \"fffaf0\",\n    forestgreen: \"228b22\",\n    fuchsia: \"f0f\",\n    gainsboro: \"dcdcdc\",\n    ghostwhite: \"f8f8ff\",\n    gold: \"ffd700\",\n    goldenrod: \"daa520\",\n    gray: \"808080\",\n    green: \"008000\",\n    greenyellow: \"adff2f\",\n    grey: \"808080\",\n    honeydew: \"f0fff0\",\n    hotpink: \"ff69b4\",\n    indianred: \"cd5c5c\",\n    indigo: \"4b0082\",\n    ivory: \"fffff0\",\n    khaki: \"f0e68c\",\n    lavender: \"e6e6fa\",\n    lavenderblush: \"fff0f5\",\n    lawngreen: \"7cfc00\",\n    lemonchiffon: \"fffacd\",\n    lightblue: \"add8e6\",\n    lightcoral: \"f08080\",\n    lightcyan: \"e0ffff\",\n    lightgoldenrodyellow: \"fafad2\",\n    lightgray: \"d3d3d3\",\n    lightgreen: \"90ee90\",\n    lightgrey: \"d3d3d3\",\n    lightpink: \"ffb6c1\",\n    lightsalmon: \"ffa07a\",\n    lightseagreen: \"20b2aa\",\n    lightskyblue: \"87cefa\",\n    lightslategray: \"789\",\n    lightslategrey: \"789\",\n    lightsteelblue: \"b0c4de\",\n    lightyellow: \"ffffe0\",\n    lime: \"0f0\",\n    limegreen: \"32cd32\",\n    linen: \"faf0e6\",\n    magenta: \"f0f\",\n    maroon: \"800000\",\n    mediumaquamarine: \"66cdaa\",\n    mediumblue: \"0000cd\",\n    mediumorchid: \"ba55d3\",\n    mediumpurple: \"9370db\",\n    mediumseagreen: \"3cb371\",\n    mediumslateblue: \"7b68ee\",\n    mediumspringgreen: \"00fa9a\",\n    mediumturquoise: \"48d1cc\",\n    mediumvioletred: \"c71585\",\n    midnightblue: \"191970\",\n    mintcream: \"f5fffa\",\n    mistyrose: \"ffe4e1\",\n    moccasin: \"ffe4b5\",\n    navajowhite: \"ffdead\",\n    navy: \"000080\",\n    oldlace: \"fdf5e6\",\n    olive: \"808000\",\n    olivedrab: \"6b8e23\",\n    orange: \"ffa500\",\n    orangered: \"ff4500\",\n    orchid: \"da70d6\",\n    palegoldenrod: \"eee8aa\",\n    palegreen: \"98fb98\",\n    paleturquoise: \"afeeee\",\n    palevioletred: \"db7093\",\n    papayawhip: \"ffefd5\",\n    peachpuff: \"ffdab9\",\n    peru: \"cd853f\",\n    pink: \"ffc0cb\",\n    plum: \"dda0dd\",\n    powderblue: \"b0e0e6\",\n    purple: \"800080\",\n    rebeccapurple: \"663399\",\n    red: \"f00\",\n    rosybrown: \"bc8f8f\",\n    royalblue: \"4169e1\",\n    saddlebrown: \"8b4513\",\n    salmon: \"fa8072\",\n    sandybrown: \"f4a460\",\n    seagreen: \"2e8b57\",\n    seashell: \"fff5ee\",\n    sienna: \"a0522d\",\n    silver: \"c0c0c0\",\n    skyblue: \"87ceeb\",\n    slateblue: \"6a5acd\",\n    slategray: \"708090\",\n    slategrey: \"708090\",\n    snow: \"fffafa\",\n    springgreen: \"00ff7f\",\n    steelblue: \"4682b4\",\n    tan: \"d2b48c\",\n    teal: \"008080\",\n    thistle: \"d8bfd8\",\n    tomato: \"ff6347\",\n    turquoise: \"40e0d0\",\n    violet: \"ee82ee\",\n    wheat: \"f5deb3\",\n    white: \"fff\",\n    whitesmoke: \"f5f5f5\",\n    yellow: \"ff0\",\n    yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n    var flipped = { };\n    for (var i in o) {\n        if (o.hasOwnProperty(i)) {\n            flipped[o[i]] = i;\n        }\n    }\n    return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n    a = parseFloat(a);\n\n    if (isNaN(a) || a < 0 || a > 1) {\n        a = 1;\n    }\n\n    return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n    if (isOnePointZero(n)) { n = \"100%\"; }\n\n    var processPercent = isPercentage(n);\n    n = mathMin(max, mathMax(0, parseFloat(n)));\n\n    // Automatically convert percentage into number\n    if (processPercent) {\n        n = parseInt(n * max, 10) / 100;\n    }\n\n    // Handle floating point rounding errors\n    if ((Math.abs(n - max) < 0.000001)) {\n        return 1;\n    }\n\n    // Convert into [0, 1] range if it isn't already\n    return (n % max) / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n    return mathMin(1, mathMax(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n    return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nfunction isOnePointZero(n) {\n    return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n    return typeof n === \"string\" && n.indexOf('%') != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n    return c.length == 1 ? '0' + c : '' + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n    if (n <= 1) {\n        n = (n * 100) + \"%\";\n    }\n\n    return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n    return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n    return (parseIntFromHex(h) / 255);\n}\n\nvar matchers = (function() {\n\n    // <http://www.w3.org/TR/css3-values/#integers>\n    var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n    // <http://www.w3.org/TR/css3-values/#number-value>\n    var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n    // Allow positive/negative integer/number.  Don't capture the either/or, just the entire outcome.\n    var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n    // Actual matching.\n    // Parentheses and commas are optional, but not required.\n    // Whitespace can take the place of commas or opening paren\n    var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n    var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\n    return {\n        CSS_UNIT: new RegExp(CSS_UNIT),\n        rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n        rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n        hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n        hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n        hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n        hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n        hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n        hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n        hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n        hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n    };\n})();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n    return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing.  Take in a number of formats, and output an object\n// based on detected format.  Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n\n    color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();\n    var named = false;\n    if (names[color]) {\n        color = names[color];\n        named = true;\n    }\n    else if (color == 'transparent') {\n        return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n    }\n\n    // Try to match string input using regular expressions.\n    // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n    // Just return an object and let the conversion functions handle that.\n    // This way the result will be the same whether the tinycolor is initialized with string or object.\n    var match;\n    if ((match = matchers.rgb.exec(color))) {\n        return { r: match[1], g: match[2], b: match[3] };\n    }\n    if ((match = matchers.rgba.exec(color))) {\n        return { r: match[1], g: match[2], b: match[3], a: match[4] };\n    }\n    if ((match = matchers.hsl.exec(color))) {\n        return { h: match[1], s: match[2], l: match[3] };\n    }\n    if ((match = matchers.hsla.exec(color))) {\n        return { h: match[1], s: match[2], l: match[3], a: match[4] };\n    }\n    if ((match = matchers.hsv.exec(color))) {\n        return { h: match[1], s: match[2], v: match[3] };\n    }\n    if ((match = matchers.hsva.exec(color))) {\n        return { h: match[1], s: match[2], v: match[3], a: match[4] };\n    }\n    if ((match = matchers.hex8.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1]),\n            g: parseIntFromHex(match[2]),\n            b: parseIntFromHex(match[3]),\n            a: convertHexToDecimal(match[4]),\n            format: named ? \"name\" : \"hex8\"\n        };\n    }\n    if ((match = matchers.hex6.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1]),\n            g: parseIntFromHex(match[2]),\n            b: parseIntFromHex(match[3]),\n            format: named ? \"name\" : \"hex\"\n        };\n    }\n    if ((match = matchers.hex4.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1] + '' + match[1]),\n            g: parseIntFromHex(match[2] + '' + match[2]),\n            b: parseIntFromHex(match[3] + '' + match[3]),\n            a: convertHexToDecimal(match[4] + '' + match[4]),\n            format: named ? \"name\" : \"hex8\"\n        };\n    }\n    if ((match = matchers.hex3.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1] + '' + match[1]),\n            g: parseIntFromHex(match[2] + '' + match[2]),\n            b: parseIntFromHex(match[3] + '' + match[3]),\n            format: named ? \"name\" : \"hex\"\n        };\n    }\n\n    return false;\n}\n\nfunction validateWCAG2Parms(parms) {\n    // return valid WCAG2 parms for isReadable.\n    // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n    var level, size;\n    parms = parms || {\"level\":\"AA\", \"size\":\"small\"};\n    level = (parms.level || \"AA\").toUpperCase();\n    size = (parms.size || \"small\").toLowerCase();\n    if (level !== \"AA\" && level !== \"AAA\") {\n        level = \"AA\";\n    }\n    if (size !== \"small\" && size !== \"large\") {\n        size = \"small\";\n    }\n    return {\"level\":level, \"size\":size};\n}\n\n// Node: Export function\nif (typeof module !== \"undefined\" && module.exports) {\n    module.exports = tinycolor;\n}\n// AMD/requirejs: Define the module\nelse if (typeof define === 'function' && define.amd) {\n    define(function () {return tinycolor;});\n}\n// Browser: Expose to window\nelse {\n    window.tinycolor = tinycolor;\n}\n\n})(Math);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/tinycolor2/tinycolor.js\n// module id = 6\n// module chunks = 0 1","'use strict';\n/**\n * @module\n */\n\n/**\n * Colorpicker default options\n */\nexport default {\n  /**\n   * If true, loads the Debugger extension automatically into the current instance\n   * @type {boolean}\n   * @default false\n   */\n  debug: false,\n  /**\n   * Forces a color, ignoring the one from the elements value or data-color attribute.\n   *\n   * @type {(String|Color|boolean)}\n   * @default false\n   */\n  color: false,\n  /**\n   * Forces an specific color format. If false, it will be automatically detected the first time,\n   * but if null it will be always recalculated.\n   *\n   * Note that the ending 'a' of the format meaning \"alpha\" has currently no effect, meaning that rgb is the same as\n   * rgba excepting if the alpha channel is disabled (see useAlpha).\n   *\n   * @type {('rgb'|'rgba'|'prgb'|'prgba'|'hex'|'hex3'|'hex6'|'hex8'|'hsl'|'hsla'|'hsv'|'hsva'|'name'|boolean)}\n   * @default false\n   */\n  format: false,\n  /**\n   * Horizontal mode layout.\n   *\n   * If true, the hue and alpha channel bars will be rendered horizontally, above the saturation selector.\n   *\n   * @type {boolean}\n   * @default false\n   */\n  horizontal: false,\n  /**\n   * Forces to show the colorpicker as an inline element\n   *\n   * @type {boolean}\n   * @default false\n   */\n  inline: false,\n  /**\n   * Children input CSS selector\n   *\n   * @type {String}\n   * @default 'input'\n   */\n  input: 'input',\n  /**\n   * Colorpicker container CSS selector. If given, the colorpicker will be placed inside this container.\n   * If true, the colorpicker element itself will be used as the container.\n   *\n   * @type {String|boolean}\n   * @default false\n   */\n  container: false, // container selector\n  /**\n   * Children color component CSS selector.\n   * If it exists, the child <i> element background will be changed on color change.\n   *\n   * @type {String|boolean}\n   * @default '.add-on, .input-group-addon'\n   */\n  component: '.add-on, .input-group-addon',\n  /**\n   * Fallback color to use when the given color is invalid.\n   * If false, the latest valid color will be used as a fallback.\n   *\n   * @type {String|Color|boolean}\n   * @default false\n   */\n  fallbackColor: false,\n  /**\n   * If enabled, the input content will be replaced always with a valid color,\n   * if not enabled the invalid color will be left in the input, but valid in the internal color object.\n   *\n   * @type {boolean}\n   * @default false\n   */\n  autoInputFallback: false,\n  /**\n   * If true a hash will be prepended to hexadecimal colors.\n   * If false, the hash will be removed.\n   * This only affects the input values.\n   *\n   * @type {boolean}\n   * @default false\n   */\n  useHashPrefix: true,\n  /**\n   * If true or false the alpha adjustment bar will be displayed no matter what.\n   * If false it will be always hidden and alpha channel won't be allowed programmatically for this instance,\n   * so the selected or typed color will be always opaque.\n   *\n   * @type {boolean}\n   * @default true\n   */\n  useAlpha: true,\n  /**\n   * This only applies when the color format is hexadecimal.\n   * If true, the alpha channel will be allowed for hexadecimal formatted colors, making them having 4 or 8 chars\n   * (RGBA or RRGGBBAA). This format is not yet supported in all modern browsers, so it is disabled by default.\n   * If false, rgba will be used whenever there is an alpha change different than 1 and the color format is\n   * automatic.\n   *\n   * @type {boolean}\n   * @default true\n   */\n  enableHex8: false,\n  /**\n   * Vertical sliders configuration\n   * @type {Object}\n   */\n  sliders: {\n    saturation: {\n      maxLeft: 100,\n      maxTop: 100,\n      callLeft: 'setSaturationRatio',\n      callTop: 'setBrightnessRatio'\n    },\n    hue: {\n      maxLeft: 0,\n      maxTop: 100,\n      callLeft: false,\n      callTop: 'setHueRatio'\n    },\n    alpha: {\n      maxLeft: 0,\n      maxTop: 100,\n      callLeft: false,\n      callTop: 'setAlphaRatio'\n    }\n  },\n  /**\n   * Horizontal sliders configuration\n   * @type {Object}\n   */\n  slidersHorz: {\n    saturation: {\n      maxLeft: 100,\n      maxTop: 100,\n      callLeft: 'setSaturationRatio',\n      callTop: 'setBrightnessRatio'\n    },\n    hue: {\n      maxLeft: 100,\n      maxTop: 0,\n      callLeft: 'setHueRatio',\n      callTop: false\n    },\n    alpha: {\n      maxLeft: 100,\n      maxTop: 0,\n      callLeft: 'setAlphaRatio',\n      callTop: false\n    }\n  },\n  /**\n   * Colorpicker popup alignment.\n   * For now only right is supported.\n   *\n   * @type {('right')}\n   * @default 'right'\n   */ // TODO: add 'left' and 'auto' support.\n  align: 'right',\n  /**\n   * Custom class to be added to the colorpicker element\n   *\n   * @type {String}\n   */\n  customClass: null,\n  /**\n   * Colorpicker widget template\n   * @type {String}\n   * @example\n   * <!-- This is the default template: -->\n   * <div class=\"colorpicker\">\n   *   <div class=\"colorpicker-saturation\"><i class=\"colorpicker-guide\"><i></i></i></div>\n   *   <div class=\"colorpicker-hue\"><i class=\"colorpicker-guide\"></i></div>\n   *   <div class=\"colorpicker-alpha\"><i class=\"colorpicker-guide\"></i></div>\n   *   <div class=\"colorpicker-color\"><div /></div>\n   * </div>\n   */\n  template: `<div class=\"colorpicker\">\n    <div class=\"colorpicker-saturation\"><i class=\"colorpicker-guide\"><i /></div>\n    <div class=\"colorpicker-hue\"><i class=\"colorpicker-guide\"></i></div>\n    <div class=\"colorpicker-alpha\"><i class=\"colorpicker-guide\"></i></div></div>`,\n  /**\n   *\n   * Associative object with the extension class name and its config.\n   * Colorpicker comes with many bundled extensions: debugger, palette, preview and swatches (a superset of Palette).\n   *\n   * @type {Object}\n   * @example\n   *   extensions: [\n   *     {\n   *       name: 'swatches'\n   *       colors: {\n   *         'primary': '#337ab7',\n   *         'success': '#5cb85c',\n   *         'info': '#5bc0de',\n   *         'warning': '#f0ad4e',\n   *         'danger': '#d9534f'\n   *       },\n   *       namesAsValues: true\n   *     }\n   *   ]\n   */\n  extensions: [\n    {\n      name: 'preview',\n      showText: false\n    }\n  ]\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/options.js","import Debugger from './Debugger';\nimport Preview from './Preview';\nimport Swatches from './Swatches';\nimport Palette from './Palette';\n\nexport {\n  Debugger, Preview, Swatches, Palette\n};\n\nexport default {\n  'debugger': Debugger,\n  'preview': Preview,\n  'swatches': Swatches,\n  'palette': Palette\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/extensions/index.js","'use strict';\n\nimport Extension from 'Extension';\nimport $ from 'jquery';\n\nclass Debugger extends Extension {\n  constructor(colorpicker, options = {}) {\n    super(colorpicker, options);\n\n    /**\n     * @type {number}\n     */\n    this.eventCounter = 0;\n    if (this.colorpicker.hasInput()) {\n      this.colorpicker.input.on('change.colorpicker-ext', $.proxy(this.onChangeInput, this));\n    }\n  }\n\n  /**\n   * @fires colorpickerDebug\n   * @param {string} eventName\n   * @param {*} args\n   */\n  log(eventName, ...args) {\n    this.eventCounter += 1;\n\n    let logMessage = `#${this.eventCounter}: Colorpicker#${this.colorpicker.id} [${eventName}]`;\n\n    console.debug(logMessage, ...args);\n\n    /**\n     * (Colorpicker) Fired by the ConsoleDebug extension whenever it logs something\n     *\n     * @event colorpickerDebug\n     */\n    this.colorpicker.element.trigger({\n      type: 'colorpickerDebug',\n      colorpicker: this.colorpicker,\n      color: this.color,\n      debug: {\n        debugger: this,\n        eventName: eventName,\n        logArgs: args,\n        logMessage: logMessage\n      }\n    });\n  }\n\n  resolveColor(color) {\n    this.log('resolveColor()', color);\n    return false;\n  }\n\n  onCreate(event) {\n    this.log('colorpickerCreate');\n    return super.onCreate(event);\n  }\n\n  onDestroy(event) {\n    this.log('colorpickerDestroy');\n    this.eventCounter = 0;\n\n    if (this.colorpicker.hasInput()) {\n      this.colorpicker.input.off('.colorpicker-ext');\n    }\n\n    return super.onDestroy(event);\n  }\n\n  onUpdate(event) {\n    this.log('colorpickerUpdate');\n  }\n\n  /**\n   * @listens _change\n   * @param {Event} event\n   */\n  onChangeInput(event) {\n    this.log('input:change.colorpicker', event.value, event.color);\n  }\n\n  onChange(event) {\n    this.log('colorpickerChange', event.value, event.color);\n  }\n\n  onInvalid(event) {\n    this.log('colorpickerInvalid', event.value, event.color);\n  }\n\n  onHide(event) {\n    this.log('colorpickerHide');\n    this.eventCounter = 0;\n  }\n\n  onShow(event) {\n    this.log('colorpickerShow');\n  }\n\n  onDisable(event) {\n    this.log('colorpickerDisable');\n  }\n\n  onEnable(event) {\n    this.log('colorpickerEnable');\n  }\n}\n\nexport default Debugger;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/extensions/Debugger.js","'use strict';\n\nimport Extension from 'Extension';\nimport $ from 'jquery';\n\nclass Preview extends Extension {\n  constructor(colorpicker, options = {}) {\n    super(colorpicker, Object.assign({},\n      {\n        template: '<div class=\"colorpicker-bar colorpicker-preview\"><div /></div>',\n        showText: true,\n        format: colorpicker.format\n      },\n      options\n    ));\n\n    this.element = $(this.options.template);\n    this.elementInner = this.element.find('div');\n  }\n\n  onCreate(event) {\n    super.onCreate(event);\n    this.colorpicker.picker.append(this.element);\n  }\n\n  onUpdate(event) {\n    super.onUpdate(event);\n\n    this.elementInner\n      .css('backgroundColor', event.color.toRgbString());\n\n    if (this.options.showText) {\n      this.elementInner\n        .html(event.color.toString(this.options.format || this.colorpicker.format));\n\n      if (event.color.isDark()) {\n        this.elementInner.css('color', 'white');\n      } else {\n        this.elementInner.css('color', 'black');\n      }\n    }\n  }\n}\n\nexport default Preview;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/extensions/Preview.js","'use strict';\n\nimport Palette from './Palette';\nimport $ from 'jquery';\n\nlet defaults = {\n  barTemplate: '<div class=\"colorpicker-bar colorpicker-swatches\"></div>',\n  swatchTemplate: '<i class=\"colorpicker-swatch\"></i>'\n};\n\nclass Swatches extends Palette {\n  constructor(colorpicker, options = {}) {\n    super(colorpicker, Object.assign({}, defaults, options));\n  }\n\n  isEnabled() {\n    return this.getLength() > 0;\n  }\n\n  onCreate(event) {\n    super.onCreate(event);\n\n    if (!this.isEnabled()) {\n      return;\n    }\n\n    let colorpicker = this.colorpicker,\n      swatchContainer = $(this.options.barTemplate),\n      isAliased = (this.options.namesAsValues === true) && !Array.isArray(this.colors);\n\n    $.each(this.colors, (name, value) => {\n      let $swatch = $(this.options.swatchTemplate)\n        .css('background-color', value)\n        .attr('data-name', name)\n        .attr('data-value', value)\n        .attr('title', `${name}: ${value}`);\n\n      $swatch.on('mousedown.colorpicker touchstart.colorpicker',\n        function (e) {\n          e.preventDefault();\n          colorpicker.setValue(isAliased ? $(this).data('name') : $(this).data('value'));\n        }\n      );\n      swatchContainer.append($swatch);\n    });\n\n    colorpicker.picker.append(swatchContainer);\n  }\n}\n\nexport default Swatches;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/extensions/Swatches.js"],"sourceRoot":""}