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.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:///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":["Extension","colorpicker","options","element","length","Error","on","proxy","onCreate","onDestroy","onUpdate","onChange","onInvalid","onShow","onHide","onEnable","onDisable","color","event","off","defaults","colors","namesAsValues","Palette","Object","assign","Array","isArray","keys","getLength","indexOf","toUpperCase","toLowerCase","getValue","getName","value","defaultValue","name","hasOwnProperty","plugin","fn","option","apiArgs","prototype","slice","call","arguments","isSingleElement","returnValue","$jq","each","$this","inst","data","isFunction","apply","constructor","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","target","currentTarget","preventDefault","_mousedown","appendTo","hasInput","_keyup","_change","show","hide","has","update","trigger","type","extensionName","ExtensionClass","config","remove","removeData","removeClass","str","toCssColorString","useHashPrefix","replace","_resolveColor","toString","window","document","body","offset","outerWidth","css","outerHeight","isVisible","isDisabled","_reposition","stopPropagation","isHidden","parents","hasClass","val","toInputColorString","prop","vertical","sl","sliders","slidersHorz","saturationGuide","hueGuide","alphaGuide","hsva","hsvaRatio","hue","maxTop","maxLeft","h","alpha","a","saturation","v","s","getHueOnlyCopy","toHexString","icn","eq","force","_shouldUpdate","_updateComponent","preventInputUpdate","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","_mouseup","getCopy","Math","max","min","callLeft","callTop","setValue","match","enableHex8","unwrapColor","r","_r","g","_g","b","_b","_a","getCompatibleFormat","String","Color","_tc_id","_format","gradientType","_gradientType","toHsv","hsv","_originalInput","_hbak","_roundA","_ok","importRgb","importHsv","setHue","setSaturation","setBrightness","colorStr","isTransparent","showText","Debugger","Preview","Swatches","eventCounter","onChangeInput","eventName","args","logMessage","debugger","logArgs","log","elementInner","append","toRgbString","html","isDark","barTemplate","swatchTemplate","isEnabled","swatchContainer","isAliased","$swatch"],"mappings":"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ACA;AACA,KAAK;AACL;AACA;AACA,gBAAgB;AAChB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,gBAAgB;AAChB,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gBAAgB;AAChB,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,wCAAwC;AACxC,wCAAwC;AACxC;;AAEA;AACA;;AAEA,YAAY;AACZ;;AAEA;AACA;AACA;AACA,eAAe,UAAU;AACzB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY;AACZ;;AAEA;AACA;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA,sDAAsD;AACtD,wCAAwC;AACxC,wCAAwC;AACxC;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,cAAc;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yCAAyC;AAC5D,mBAAmB,yCAAyC;AAC5D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,wCAAwC;AAC3D,mBAAmB,yCAAyC;AAC5D,mBAAmB,yCAAyC;AAC5D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uCAAuC;AAC1D,mBAAmB,wCAAwC;AAC3D;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,+DAA+D,WAAW;AAC1E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2DAA2D,wBAAwB;;AAEnF;AACA;AACA,2CAA2C,wBAAwB;AACnE;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,8EAA8E,4BAA4B,gBAAgB;AAC1H,8EAA8E,2BAA2B,gBAAgB;AACzH,qDAAqD,oDAAoD,gBAAgB;AACzH,qDAAqD,oDAAoD,gBAAgB;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,uBAAuB;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA,oDAAoD,0BAA0B;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA,KAAK,kBAAkB,YAAY,kBAAkB;AACrD;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,4BAA4B,YAAY;;AAExC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,EAAE,cAAc,EAAE,cAAc,EAAE;AACjE,+BAA+B,EAAE,cAAc,EAAE,cAAc,EAAE;AACjE,+BAA+B,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE;AACjF,+BAA+B,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE;AACjF;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,UAAU,OAAO,UAAU,OAAO,SAAS;AACnF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2CAA2C;AAC3C;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAwB,kBAAkB;AAAA;AAC1C;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;AC1qCD;AACA;;;;AAIA;;;;;;;kBAGe;AACb;;;;;AAKA1I,SAAO,KANM;AAOb;;;;;;AAMAzD,SAAO,K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","file":"bootstrap-colorpicker.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"," \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":""}