{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./src/js/lib/utils.js","webpack:///./src/js/lib/color.js","webpack:///./src/js/lib/hsvacolor.js","webpack:///./src/js/helper/moveable.js","webpack:///./src/js/helper/selectable.js","webpack:///./src/js/pickr.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","on","eventListener","off","method","elements","events","fn","options","arguments","length","undefined","HTMLCollection","NodeList","Array","from","isArray","forEach","el","ev","_objectSpread","capture","slice","createElementFromString","html","div","document","createElement","innerHTML","trim","firstElementChild","removeAttribute","getAttribute","createFromTemplate","str","resolve","element","base","con","children","subtree","child","arr","push","eventPath","evt","path","composedPath","target","parentElement","adjustableInputNumbers","negative","isNumChar","handleScroll","e","val","selectionStart","numStart","num","isNaN","isFinite","mul","deltaY","inc","ctrlKey","newNum","Number","newStr","substr","substring","curPos","String","focus","setSelectionRange","preventDefault","dispatchEvent","Event","min","Math","max","hsvToRgb","h","v","floor","f","q","mod","rgbToHsv","g","b","minVal","maxVal","delta","dr","dg","db","cmykToHsv","y","k","hslToHsv","hexToHsv","hex","match","map","parseInt","parseToHSV","regex","cmyk","rgba","hsla","hsva","numarize","array","test","type","exec","_numarize2","_slicedToArray","values","_numarize4","_numarize4$","a","splitAt","alpha","_splitAt$map2","_splitAt2","_numarize6","_numarize6$","_numarize8","_numarize8$","HSVaColor","ceil","that","toHSVA","rhsva","toString","toFixed","toHSLA","Color","rhsla","toRGBA","rrgba","toCMYK","rgb","rcmyk","toHEX","round","padStart","toUpperCase","join","clone","Moveable","opt","assign","lockX","lockY","onchange","_tapstart","_","_tapstop","_tapmove","wrapperRect","wrapper","getBoundingClientRect","cache","x","touch","touches","clientX","clientY","left","width","top","height","style","offsetWidth","offsetHeight","trigger","update","destroy","passive","Selectable","className","_ontap","classList","this","Pickr","constructor","useAsButton","disabled","comparison","components","interaction","strings","swatches","default","defaultRepresentation","position","adjustableNumbers","showAlways","parent","closeWithKey","onChange","onSave","onSwatchSelect","_initializingActive","_recalc","_color","_lastColor","filter","_preBuild","_buildComponents","_bindEvents","_representation","setColorRepresentation","_finalBuild","_rePositioningPicker","requestAnimationFrame","setColor","querySelector","_root","hidden","preview","hue","opacity","keys","input","save","clear","int","find","add","contains","button","body","appendChild","removeChild","app","replaceChild","disable","transition","lastColor","hide","inst","comp","palette","picker","cssRGBaString","background","currentColor","_updateOutput","remove","slider","backgroundColor","selectable","eventBindings","_clearColor","setHSVA","applyColor","result","stopImmediatePropagation","_ref","color","ck","isOpen","show","code","some","_eventBindings","relative","marginLeft","marginTop","bb","ab","as","bottom","innerHeight","pos","middle","right","cl","getComputedStyle","newLeft","leftClip","rightClip","innerWidth","silent","_this$_root","args","destroyAndRemove","recalc","_this$components","hueY","opacityY","pickerWrapper","pickerX","pickerY","string","_Color$parseToHSV2","utype","click","getColorRepresentation","getColor","getRoot","enable","utils","once","event","helper","apply","removeEventListener","version"],"mappings":"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","file":"pickr.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Pickr\"] = factory();\n\telse\n\t\troot[\"Pickr\"] = factory();\n})(window, function() {\nreturn "," \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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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 = \"dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","/**\n * Add an eventlistener which will be fired only once.\n *\n * @param element Target element\n * @param event Event name\n * @param fn Callback\n * @param options Optional options\n * @return Array passed arguments\n */\nexport const once = (element, event, fn, options) => on(element, event, function helper() {\n fn.apply(this, arguments);\n this.removeEventListener(event, helper);\n}, options);\n\n/**\n * Add event(s) to element(s).\n * @param elements DOM-Elements\n * @param events Event names\n * @param fn Callback\n * @param options Optional options\n * @return Array passed arguments\n */\nexport const on = eventListener.bind(null, 'addEventListener');\n\n/**\n * Remove event(s) from element(s).\n * @param elements DOM-Elements\n * @param events Event names\n * @param fn Callback\n * @param options Optional options\n * @return Array passed arguments\n */\nexport const off = eventListener.bind(null, 'removeEventListener');\n\nfunction eventListener(method, elements, events, fn, options = {}) {\n\n // Normalize array\n if (elements instanceof HTMLCollection || elements instanceof NodeList) {\n elements = Array.from(elements);\n } else if (!Array.isArray(elements)) {\n elements = [elements];\n }\n\n if (!Array.isArray(events)) {\n events = [events];\n }\n\n elements.forEach(el =>\n events.forEach(ev =>\n el[method](ev, fn, {capture: false, ...options})\n )\n );\n\n return Array.prototype.slice.call(arguments, 1);\n}\n\n/**\n * Creates an DOM-Element out of a string (Single element).\n * @param html HTML representing a single element\n * @returns {Element | null} The element.\n */\nexport function createElementFromString(html) {\n const div = document.createElement('div');\n div.innerHTML = html.trim();\n return div.firstElementChild;\n}\n\n/**\n * Removes an attribute from a HTMLElement and returns the value.\n * @param el\n * @param name\n * @return {string}\n */\nexport function removeAttribute(el, name) {\n const value = el.getAttribute(name);\n el.removeAttribute(name);\n return value;\n}\n\n/**\n * Creates a new html element, every element which has\n * a 'data-key' attribute will be saved in a object (which will be returned)\n * where the value of 'data-key' ist the object-key and the value the HTMLElement.\n *\n * It's possible to create a hierarchy if you add a 'data-con' attribute. Every\n * sibling will be added to the object which will get the name from the 'data-con' attribute.\n *\n * If you want to create an Array out of multiple elements, you can use the 'data-arr' attribute,\n * the value defines the key and all elements, which has the same parent and the same 'data-arr' attribute,\n * would be added to it.\n *\n * @param str - The HTML String.\n */\nexport function createFromTemplate(str) {\n\n // Recursive function to resolve template\n function resolve(element, base = {}) {\n\n // Check key and container attribute\n const con = removeAttribute(element, 'data-con');\n const key = removeAttribute(element, 'data-key');\n\n // Check and save element\n if (key) {\n base[key] = element;\n }\n\n // Check all children\n const children = Array.from(element.children);\n const subtree = con ? (base[con] = {}) : base;\n for (let child of children) {\n\n // Check if element should be saved as array\n const arr = removeAttribute(child, 'data-arr');\n if (arr) {\n\n // Check if there is already an array and add element\n (subtree[arr] || (subtree[arr] = [])).push(child);\n } else {\n resolve(child, subtree);\n }\n }\n\n return base;\n }\n\n return resolve(createElementFromString(str));\n}\n\n/**\n * Polyfill for safari & firefox for the eventPath event property.\n * @param evt The event object.\n * @return [String] event path.\n */\nexport function eventPath(evt) {\n let path = evt.path || (evt.composedPath && evt.composedPath());\n if (path) return path;\n\n let el = evt.target.parentElement;\n path = [evt.target, el];\n while (el = el.parentElement) path.push(el);\n\n path.push(document, window);\n return path;\n}\n\n/**\n * Creates the ability to change numbers in an input field with the scroll-wheel.\n * @param el\n * @param negative\n */\nexport function adjustableInputNumbers(el, negative = true) {\n\n // Check if a char represents a number\n const isNumChar = c => (c >= '0' && c <= '9') || c === '-' || c === '.';\n\n function handleScroll(e) {\n const val = el.value;\n const off = el.selectionStart;\n let numStart = off;\n let num = ''; // Will be the number as string\n\n // Look back\n for (let i = off - 1; i > 0 && isNumChar(val[i]); i--) {\n num = val[i] + num;\n numStart--; // Find start of number\n }\n\n // Look forward\n for (let i = off, n = val.length; i < n && isNumChar(val[i]); i++) {\n num += val[i];\n }\n\n // Check if number is valid\n if (num.length > 0 && !isNaN(num) && isFinite(num)) {\n\n const mul = e.deltaY < 0 ? 1 : -1;\n const inc = e.ctrlKey ? mul * 5 : mul;\n let newNum = Number(num) + inc;\n\n if (!negative && newNum < 0) {\n newNum = 0;\n }\n\n const newStr = val.substr(0, numStart) + newNum + val.substring(numStart + num.length, val.length);\n const curPos = numStart + String(newNum).length;\n\n // Update value and set cursor\n el.value = newStr;\n el.focus();\n el.setSelectionRange(curPos, curPos);\n }\n\n // Prevent default\n e.preventDefault();\n\n // Trigger input event\n el.dispatchEvent(new Event('input'));\n }\n\n // Bind events\n on(el, 'focus', () => on(window, 'wheel', handleScroll));\n on(el, 'blur', () => off(window, 'wheel', handleScroll));\n}","// Shorthands\nconst min = Math.min,\n max = Math.max;\n\n/**\n * Convert HSV spectrum to RGB.\n * @param h Hue\n * @param s Saturation\n * @param v Value\n * @returns {number[]} Array with rgb values.\n */\nexport function hsvToRgb(h, s, v) {\n h = (h / 360) * 6;\n s /= 100;\n v /= 100;\n\n let i = Math.floor(h);\n\n let f = h - i;\n let p = v * (1 - s);\n let q = v * (1 - f * s);\n let t = v * (1 - (1 - f) * s);\n\n let mod = i % 6;\n let r = [v, q, p, p, t, v][mod];\n let g = [t, v, v, q, p, p][mod];\n let b = [p, p, t, v, v, q][mod];\n\n return [\n r * 255,\n g * 255,\n b * 255\n ];\n}\n\n/**\n * Convert HSV spectrum to Hex.\n * @param h Hue\n * @param s Saturation\n * @param v Value\n * @returns {string[]} Hex values\n */\nexport function hsvToHex(h, s, v) {\n return hsvToRgb(h, s, v).map(v => Math.round(v).toString(16).padStart(2, '0'));\n}\n\n/**\n * Convert HSV spectrum to CMYK.\n * @param h Hue\n * @param s Saturation\n * @param v Value\n * @returns {number[]} CMYK values\n */\nexport function hsvToCmyk(h, s, v) {\n const rgb = hsvToRgb(h, s, v);\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n\n let k, c, m, y;\n\n k = min(1 - r, 1 - g, 1 - b);\n\n c = k === 1 ? 0 : (1 - r - k) / (1 - k);\n m = k === 1 ? 0 : (1 - g - k) / (1 - k);\n y = k === 1 ? 0 : (1 - b - k) / (1 - k);\n\n return [\n c * 100,\n m * 100,\n y * 100,\n k * 100\n ];\n}\n\n/**\n * Convert HSV spectrum to HSL.\n * @param h Hue\n * @param s Saturation\n * @param v Value\n * @returns {number[]} HSL values\n */\nexport function hsvToHsl(h, s, v) {\n s /= 100, v /= 100;\n\n let l = (2 - s) * v / 2;\n\n if (l !== 0) {\n if (l === 1) {\n s = 0;\n } else if (l < 0.5) {\n s = s * v / (l * 2);\n } else {\n s = s * v / (2 - l * 2);\n }\n }\n\n return [\n h,\n s * 100,\n l * 100\n ];\n}\n\n/**\n * Convert RGB to HSV.\n * @param r Red\n * @param g Green\n * @param b Blue\n * @return {number[]} HSV values.\n */\nfunction rgbToHsv(r, g, b) {\n r /= 255, g /= 255, b /= 255;\n\n let h, s, v;\n const minVal = min(r, g, b);\n const maxVal = max(r, g, b);\n const delta = maxVal - minVal;\n\n v = maxVal;\n if (delta === 0) {\n h = s = 0;\n } else {\n s = delta / maxVal;\n let dr = (((maxVal - r) / 6) + (delta / 2)) / delta;\n let dg = (((maxVal - g) / 6) + (delta / 2)) / delta;\n let db = (((maxVal - b) / 6) + (delta / 2)) / delta;\n\n if (r === maxVal) {\n h = db - dg;\n } else if (g === maxVal) {\n h = (1 / 3) + dr - db;\n } else if (b === maxVal) {\n h = (2 / 3) + dg - dr;\n }\n\n if (h < 0) {\n h += 1;\n } else if (h > 1) {\n h -= 1;\n }\n }\n\n return [\n h * 360,\n s * 100,\n v * 100\n ];\n}\n\n/**\n * Convert CMYK to HSV.\n * @param c Cyan\n * @param m Magenta\n * @param y Yellow\n * @param k Key (Black)\n * @return {number[]} HSV values.\n */\nfunction cmykToHsv(c, m, y, k) {\n c /= 100, m /= 100, y /= 100, k /= 100;\n\n const r = (1 - min(1, c * (1 - k) + k)) * 255;\n const g = (1 - min(1, m * (1 - k) + k)) * 255;\n const b = (1 - min(1, y * (1 - k) + k)) * 255;\n\n return [...rgbToHsv(r, g, b)];\n}\n\n/**\n * Convert HSL to HSV.\n * @param h Hue\n * @param s Saturation\n * @param l Lightness\n * @return {number[]} HSV values.\n */\nfunction hslToHsv(h, s, l) {\n s /= 100, l /= 100;\n s *= l < 0.5 ? l : 1 - l;\n\n let ns = (2 * s / (l + s)) * 100;\n let v = (l + s) * 100;\n return [h, ns, v];\n}\n\n/**\n * Convert HEX to HSV.\n * @param hex Hexadecimal string of rgb colors, can have length 3 or 6.\n * @return {number[]} HSV values.\n */\nfunction hexToHsv(hex) {\n return rgbToHsv(...hex.match(/.{2}/g).map(v => parseInt(v, 16)));\n}\n\n/**\n * Try's to parse a string which represents a color to a HSV array.\n * Current supported types are cmyk, rgba, hsla and hexadecimal.\n * @param str\n * @return {*}\n */\nexport function parseToHSV(str) {\n\n // Regular expressions to match different types of color represention\n const regex = {\n cmyk: /^cmyk[\\D]+(\\d+)[\\D]+(\\d+)[\\D]+(\\d+)[\\D]+(\\d+)/i,\n rgba: /^(rgb|rgba)[\\D]+(\\d+)[\\D]+(\\d+)[\\D]+(\\d+)[\\D]*?([\\d.]+|$)/i,\n hsla: /^(hsl|hsla)[\\D]+(\\d+)[\\D]+(\\d+)[\\D]+(\\d+)[\\D]*?([\\d.]+|$)/i,\n hsva: /^(hsv|hsva)[\\D]+(\\d+)[\\D]+(\\d+)[\\D]+(\\d+)[\\D]*?([\\d.]+|$)/i,\n hex: /^#?(([\\dA-Fa-f]{3,4})|([\\dA-Fa-f]{6})|([\\dA-Fa-f]{8}))$/i\n };\n\n /**\n * Takes an Array of any type, convert strings which represents\n * a number to a number an anything else to undefined.\n * @param array\n * @return {*}\n */\n const numarize = array => array.map(v => /^(|\\d+)\\.\\d+|\\d+$/.test(v) ? Number(v) : undefined);\n\n let match;\n for (let type in regex) {\n\n // Check if current scheme passed\n if (!(match = regex[type].exec(str)))\n continue;\n\n // Try to convert\n switch (type) {\n case 'cmyk': {\n let [, c, m, y, k] = numarize(match);\n\n if (c > 100 || m > 100 || y > 100 || k > 100)\n break;\n\n return {values: [...cmykToHsv(c, m, y, k), 1], type};\n }\n case 'rgba': {\n let [, , r, g, b, a = 1] = numarize(match);\n\n if (r > 255 || g > 255 || b > 255 || a < 0 || a > 1)\n break;\n\n return {values: [...rgbToHsv(r, g, b), a], type};\n }\n case 'hex': {\n const splitAt = (s, i) => [s.substring(0, i), s.substring(i, s.length)];\n let [, hex] = match;\n\n // Fill up opacity if not declared\n if (hex.length === 3) {\n hex += 'F';\n } else if (hex.length === 6) {\n hex += 'FF';\n }\n\n let alpha;\n if (hex.length === 4) {\n [hex, alpha] = splitAt(hex, 3).map(v => v + v);\n } else if (hex.length === 8) {\n [hex, alpha] = splitAt(hex, 6);\n }\n\n // Convert 0 - 255 to 0 - 1 for opacity\n alpha = parseInt(alpha, 16) / 255;\n return {values: [...hexToHsv(hex), alpha], type};\n }\n case 'hsla': {\n let [, , h, s, l, a = 1] = numarize(match);\n\n if (h > 360 || s > 100 || l > 100 || a < 0 || a > 1)\n break;\n\n return {values: [...hslToHsv(h, s, l), a], type};\n }\n case 'hsva': {\n let [, , h, s, v, a = 1] = numarize(match);\n\n if (h > 360 || s > 100 || v > 100 || a < 0 || a > 1)\n break;\n\n return {values: [h, s, v, a], type};\n }\n }\n }\n\n return {values: null, type: null};\n}","import * as Color from './color';\n\n/**\n * Simple class which holds the properties\n * of the color represention model hsla (hue saturation lightness alpha)\n */\nexport function HSVaColor(h = 0, s = 0, v = 0, a = 1) {\n\n const ceil = Math.ceil;\n const that = {\n h, s, v, a,\n\n toHSVA() {\n const hsva = [that.h, that.s, that.v];\n const rhsva = hsva.map(ceil);\n\n hsva.push(that.a);\n hsva.toString = () => `hsva(${rhsva[0]}, ${rhsva[1]}%, ${rhsva[2]}%, ${that.a.toFixed(1)})`;\n return hsva;\n },\n\n toHSLA() {\n const hsla = Color.hsvToHsl(that.h, that.s, that.v);\n const rhsla = hsla.map(ceil);\n\n hsla.push(that.a);\n hsla.toString = () => `hsla(${rhsla[0]}, ${rhsla[1]}%, ${rhsla[2]}%, ${that.a.toFixed(1)})`;\n return hsla;\n },\n\n toRGBA() {\n const rgba = Color.hsvToRgb(that.h, that.s, that.v);\n const rrgba = rgba.map(ceil);\n\n rgba.push(that.a);\n rgba.toString = () => `rgba(${rrgba[0]}, ${rrgba[1]}, ${rrgba[2]}, ${that.a.toFixed(1)})`;\n return rgba;\n },\n\n toCMYK() {\n const cmyk = Color.hsvToCmyk(that.h, that.s, that.v);\n const rcmyk = cmyk.map(ceil);\n\n cmyk.toString = () => `cmyk(${rcmyk[0]}%, ${rcmyk[1]}%, ${rcmyk[2]}%, ${rcmyk[3]}%)`;\n return cmyk;\n },\n\n toHEX() {\n const hex = Color.hsvToHex(...[that.h, that.s, that.v]);\n\n hex.toString = () => {\n\n // Check if alpha channel make sense, convert it to 255 number space, convert\n // to hex and pad it with zeros if needet.\n const alpha = that.a >= 1 ? '' : Number((that.a * 255).toFixed(0))\n .toString(16)\n .toUpperCase()\n .padStart(2, '0');\n\n return `#${hex.join('').toUpperCase() + alpha}`;\n };\n\n return hex;\n },\n\n clone() {\n return HSVaColor(that.h, that.s, that.v, that.a);\n }\n };\n\n return that;\n}\n","import * as _ from './../lib/utils';\n\nexport default function Moveable(opt) {\n\n const that = {\n\n // Assign default values\n options: Object.assign({\n lockX: false,\n lockY: false,\n onchange: () => 0\n }, opt),\n\n _tapstart(evt) {\n _.on(document, ['mouseup', 'touchend', 'touchcancel'], that._tapstop);\n _.on(document, ['mousemove', 'touchmove'], that._tapmove);\n\n // Prevent default touch event\n evt.preventDefault();\n that.wrapperRect = that.options.wrapper.getBoundingClientRect();\n\n // Trigger\n that._tapmove(evt);\n },\n\n _tapmove(evt) {\n const {options, cache} = that;\n const {element} = options;\n const b = that.wrapperRect;\n\n let x = 0, y = 0;\n if (evt) {\n const touch = evt && evt.touches && evt.touches[0];\n x = evt ? (touch || evt).clientX : 0;\n y = evt ? (touch || evt).clientY : 0;\n\n // Reset to bounds\n if (x < b.left) x = b.left;\n else if (x > b.left + b.width) x = b.left + b.width;\n if (y < b.top) y = b.top;\n else if (y > b.top + b.height) y = b.top + b.height;\n\n // Normalize\n x -= b.left;\n y -= b.top;\n } else if (cache) {\n x = cache.x;\n y = cache.y;\n }\n\n if (!options.lockX)\n element.style.left = (x - element.offsetWidth / 2) + 'px';\n\n if (!options.lockY)\n element.style.top = (y - element.offsetHeight / 2) + 'px';\n\n that.cache = {x, y};\n options.onchange(x, y);\n },\n\n _tapstop() {\n _.off(document, ['mouseup', 'touchend', 'touchcancel'], that._tapstop);\n _.off(document, ['mousemove', 'touchmove'], that._tapmove);\n },\n\n trigger() {\n that.wrapperRect = that.options.wrapper.getBoundingClientRect();\n that._tapmove();\n },\n\n update(x = 0, y = 0) {\n that.wrapperRect = that.options.wrapper.getBoundingClientRect();\n that._tapmove({\n clientX: that.wrapperRect.left + x,\n clientY: that.wrapperRect.top + y\n });\n },\n\n destroy() {\n const {options, _tapstart} = that;\n _.off([options.wrapper, options.element], 'mousedown', _tapstart);\n _.off([options.wrapper, options.element], 'touchstart', _tapstart, {\n passive: false\n });\n }\n };\n\n // Instance var\n that.wrapperRect = that.options.wrapper.getBoundingClientRect();\n\n // Initilize\n const {options, _tapstart} = that;\n _.on([options.wrapper, options.element], 'mousedown', _tapstart);\n _.on([options.wrapper, options.element], 'touchstart', _tapstart, {\n passive: false\n });\n\n return that;\n}","import * as _ from './../lib/utils';\n\nexport default function Selectable(opt = {}) {\n const that = {\n\n // Assign default values\n options: Object.assign({\n onchange: () => 0,\n className: '',\n elements: []\n }, opt),\n\n _ontap(evt) {\n const opt = that.options;\n opt.elements.forEach(e =>\n e.classList[evt.target === e ? 'add' : 'remove'](opt.className)\n );\n\n opt.onchange(evt);\n },\n\n destroy() {\n _.off(that.options.elements, 'click', this._ontap);\n }\n };\n\n _.on(that.options.elements, 'click', that._ontap);\n return that;\n}","// Import styles\nimport '../scss/pickr.scss';\n\n// Import utils\nimport * as _ from './lib/utils';\nimport * as Color from './lib/color';\n\n// Import classes\nimport {HSVaColor} from './lib/hsvacolor';\nimport Moveable from './helper/moveable';\nimport Selectable from './helper/selectable';\n\nclass Pickr {\n\n constructor(opt) {\n\n // Assign default values\n this.options = Object.assign({\n useAsButton: false,\n disabled: false,\n comparison: true,\n\n components: {interaction: {}},\n strings: {},\n\n swatches: null,\n\n default: 'fff',\n defaultRepresentation: 'HEX',\n position: 'middle',\n adjustableNumbers: true,\n showAlways: false,\n parent: undefined,\n\n closeWithKey: 'Escape',\n onChange: () => 0,\n onSave: () => 0,\n onSwatchSelect: () => 0\n }, opt);\n\n // Check interaction section\n if (!this.options.components.interaction) {\n this.options.components.interaction = {};\n }\n\n // Will be used to prevent specific actions during initilization\n this._initializingActive = true;\n\n // Replace element with color picker\n this._recalc = true;\n\n // Current and last color for comparison\n this._color = new HSVaColor();\n this._lastColor = new HSVaColor();\n\n // Parse swatch colors\n this.options.swatches = this.options.swatches || [];\n if (this.options.swatches) {\n this.options.swatches = this.options.swatches.map(str => {\n const {values} = Color.parseToHSV(str);\n return values && new HSVaColor(...values);\n }).filter(v => v);\n }\n\n // Initialize picker\n this._preBuild();\n this._buildComponents();\n this._bindEvents();\n\n // Initialize color _epresentation\n this._representation = this.options.defaultRepresentation;\n this.setColorRepresentation(this._representation);\n\n // Finalize build\n this._finalBuild();\n this._rePositioningPicker();\n\n // Initialize color after first repaint\n requestAnimationFrame(() => {\n this.setColor(this.options.default);\n\n // Initilization is finish, pickr is visible and ready to use\n this._initializingActive = false;\n });\n }\n\n // Does only the absolutly basic thing to initialize the components\n _preBuild() {\n const opt = this.options;\n\n // Check if element is selector\n if (typeof opt.el === 'string') {\n opt.el = document.querySelector(opt.el);\n }\n\n // Create element and append it to body to\n // prevent initialization errors\n this._root = create(opt);\n\n // Check if a custom button is used\n if (opt.useAsButton) {\n\n // Check if the user has an alternative location defined, used body as fallback\n if (!opt.parent) {\n opt.parent = 'body';\n }\n\n this._root.button = opt.el; // Replace button with customized button\n }\n\n document.body.appendChild(this._root.root);\n }\n\n _finalBuild() {\n const opt = this.options;\n const root = this._root;\n\n // Remove from body\n document.body.removeChild(root.root);\n\n // Check parent option\n if (opt.parent) {\n\n // Check if element is selector\n if (typeof opt.parent === 'string') {\n opt.parent = document.querySelector(opt.parent);\n }\n\n opt.parent.appendChild(root.app);\n }\n\n // Don't replace the the element if a custom button is used\n if (!opt.useAsButton) {\n\n // Replace element with actual color-picker\n opt.el.parentElement.replaceChild(root.root, opt.el);\n }\n\n // Call disable to also add the disabled class\n if (opt.disabled) {\n this.disable();\n }\n\n // Check if color comparison is disabled, if yes - remove transitions so everything keeps smoothly\n if (!opt.comparison) {\n root.button.style.transition = 'none';\n if (!opt.useAsButton) {\n root.preview.lastColor.style.transition = 'none';\n }\n }\n\n // Check showAlways option\n opt.showAlways ? root.app.classList.add('visible') : this.hide();\n }\n\n _buildComponents() {\n\n // Instance reference\n const inst = this;\n const comp = this.options.components;\n\n const components = {\n\n palette: Moveable({\n element: inst._root.palette.picker,\n wrapper: inst._root.palette.palette,\n\n onchange(x, y) {\n const {_color, _root, options} = inst;\n\n // Calculate saturation based on the position\n _color.s = (x / this.wrapper.offsetWidth) * 100;\n\n // Calculate the value\n _color.v = 100 - (y / this.wrapper.offsetHeight) * 100;\n\n // Prevent falling under zero\n _color.v < 0 ? _color.v = 0 : 0;\n\n // Set picker and gradient color\n const cssRGBaString = _color.toRGBA().toString();\n this.element.style.background = cssRGBaString;\n this.wrapper.style.background = `\n linear-gradient(to top, rgba(0, 0, 0, ${_color.a}), transparent), \n linear-gradient(to left, hsla(${_color.h}, 100%, 50%, ${_color.a}), rgba(255, 255, 255, ${_color.a}))\n `;\n\n // Check if color is locked\n if (!options.comparison) {\n _root.button.style.background = cssRGBaString;\n\n if (!options.useAsButton) {\n _root.preview.lastColor.style.background = cssRGBaString;\n }\n }\n\n // Change current color\n _root.preview.currentColor.style.background = cssRGBaString;\n\n // Update the input field only if the user is currently not typing\n if (inst._recalc) {\n inst._updateOutput();\n }\n\n // If the user changes the color, remove the cleared icon\n _root.button.classList.remove('clear');\n }\n }),\n\n hue: Moveable({\n lockX: true,\n element: inst._root.hue.picker,\n wrapper: inst._root.hue.slider,\n\n onchange(x, y) {\n if (!comp.hue) return;\n\n // Calculate hue\n inst._color.h = (y / this.wrapper.offsetHeight) * 360;\n\n // Update color\n this.element.style.backgroundColor = `hsl(${inst._color.h}, 100%, 50%)`;\n components.palette.trigger();\n }\n }),\n\n opacity: Moveable({\n lockX: true,\n element: inst._root.opacity.picker,\n wrapper: inst._root.opacity.slider,\n\n onchange(x, y) {\n if (!comp.opacity) return;\n\n // Calculate opacity\n inst._color.a = Math.round(((y / this.wrapper.offsetHeight)) * 1e2) / 100;\n\n // Update color\n this.element.style.background = `rgba(0, 0, 0, ${inst._color.a})`;\n inst.components.palette.trigger();\n }\n }),\n\n selectable: Selectable({\n elements: inst._root.interaction.options,\n className: 'active',\n onchange(e) {\n inst._representation = e.target.getAttribute('data-type').toUpperCase();\n inst._updateOutput();\n }\n })\n };\n\n this.components = components;\n }\n\n _bindEvents() {\n const {_root, options} = this;\n\n const eventBindings = [\n\n // Clear color\n _.on(_root.interaction.clear, 'click', () => this._clearColor()),\n\n // Select last color on click\n _.on(_root.preview.lastColor, 'click', () => this.setHSVA(...this._lastColor.toHSVA())),\n\n // Save color\n _.on(_root.interaction.save, 'click', () => {\n !this.applyColor() && !options.showAlways && this.hide();\n }),\n\n // Detect user input and disable auto-recalculation\n _.on(_root.interaction.result, ['keyup', 'input'], e => {\n this._recalc = false;\n\n // Fire listener if initialization is finish and changed color was valid\n if (this.setColor(e.target.value, true) && !this._initializingActive) {\n this.options.onChange(this._color, this);\n }\n\n e.stopImmediatePropagation();\n }),\n\n // Cancel input detection on color change\n _.on([\n _root.palette.palette,\n _root.palette.picker,\n _root.hue.slider,\n _root.hue.picker,\n _root.opacity.slider,\n _root.opacity.picker\n ], ['mousedown', 'touchstart'], () => this._recalc = true),\n\n // Repositioning on resize\n _.on(window, 'resize', () => this._rePositioningPicker)\n ];\n\n // Color swatches\n if (_root.swatches) {\n eventBindings.push(\n _.on(_root.swatches, 'click', ({target}) => {\n const color = options.swatches[Number(target.getAttribute('data-color-index'))];\n\n if (color) {\n this.setHSVA(...color.toHSVA(), true);\n\n // Fire event\n options.onSwatchSelect(color, this);\n }\n })\n );\n }\n\n // Provide hiding / showing abilities only if showAlways is false\n if (!options.showAlways) {\n const ck = options.closeWithKey;\n\n eventBindings.push(\n // Save and hide / show picker\n _.on(_root.button, 'click', () => this.isOpen() ? this.hide() : this.show()),\n\n // Close with escape key\n _.on(document, 'keyup', e => this.isOpen() && (e.key === ck || e.code === ck) && this.hide()),\n\n // Cancel selecting if the user taps behind the color picker\n _.on(document, ['touchstart', 'mousedown'], e => {\n if (this.isOpen() && !_.eventPath(e).some(el => el === _root.app || el === _root.button)) {\n this.hide();\n }\n }, {capture: true})\n );\n }\n\n // Make input adjustable if enabled\n if (options.adjustableNumbers) {\n _.adjustableInputNumbers(_root.interaction.result, false);\n }\n\n // Save bindings\n this._eventBindings = eventBindings;\n }\n\n _rePositioningPicker() {\n const root = this._root;\n const app = this._root.app;\n\n // Check if user has defined a parent\n if (this.options.parent) {\n const relative = root.button.getBoundingClientRect();\n app.style.position = 'fixed';\n app.style.marginLeft = `${relative.left}px`;\n app.style.marginTop = `${relative.top}px`;\n }\n\n const bb = root.button.getBoundingClientRect();\n const ab = app.getBoundingClientRect();\n const as = app.style;\n\n // Check if picker is cuttet of from the top & bottom\n if (ab.bottom > window.innerHeight) {\n as.top = `${-(ab.height) - 5}px`;\n } else if (bb.bottom + ab.height < window.innerHeight) {\n as.top = `${bb.height + 5}px`;\n }\n\n // Positioning picker on the x-axis\n const pos = {\n left: -(ab.width) + bb.width,\n middle: -(ab.width / 2) + bb.width / 2,\n right: 0\n };\n\n const cl = parseInt(getComputedStyle(app).left, 10);\n let newLeft = pos[this.options.position];\n const leftClip = (ab.left - cl) + newLeft;\n const rightClip = (ab.left - cl) + newLeft + ab.width;\n\n /**\n * First check if position is left or right but\n * pickr-app cannot set to left AND right because it would\n * be clipped by the browser width. If so, wrap it and position\n * pickr below button via the pos[middle] value.\n * The current selected posiotion should'nt be the middle.di\n */\n if (this.options.position !== 'middle' && (\n (leftClip < 0 && -leftClip < ab.width / 2) ||\n (rightClip > window.innerWidth && rightClip - window.innerWidth < ab.width / 2))) {\n newLeft = pos['middle'];\n\n /**\n * Even if set to middle pickr is getting clipped, so\n * set it to left / right.\n */\n } else if (leftClip < 0) {\n newLeft = pos['right'];\n } else if (rightClip > window.innerWidth) {\n newLeft = pos['left'];\n }\n\n as.left = `${newLeft}px`;\n }\n\n _updateOutput() {\n\n // Check if component is present\n if (this._root.interaction.type()) {\n\n this._root.interaction.result.value = (() => {\n\n // Construct function name and call if present\n const method = 'to' + this._root.interaction.type().getAttribute('data-type');\n return typeof this._color[method] === 'function' ? this._color[method]().toString() : '';\n })();\n }\n\n // Fire listener if initialization is finish\n if (!this._initializingActive) {\n this.options.onChange(this._color, this);\n }\n }\n\n applyColor(silent = false) {\n const {preview, button} = this._root;\n\n // Change preview and current color\n const cssRGBaString = this._color.toRGBA().toString();\n preview.lastColor.style.background = cssRGBaString;\n\n // Change only the button color if it isn't customized\n if (!this.options.useAsButton) {\n button.style.background = cssRGBaString;\n }\n\n // User changed the color so remove the clear clas\n button.classList.remove('clear');\n\n // Save last color\n this._lastColor = this._color.clone();\n\n // Fire listener\n if (!this._initializingActive && !silent) {\n this.options.onSave(this._color, this);\n }\n }\n\n _clearColor() {\n const {_root, options} = this;\n\n // Change only the button color if it isn't customized\n if (!options.useAsButton) {\n _root.button.style.background = 'rgba(255, 255, 255, 0.4)';\n }\n\n _root.button.classList.add('clear');\n\n if (!options.showAlways) {\n this.hide();\n }\n\n // Fire listener\n options.onSave(null, this);\n }\n\n /**\n * Destroy's all functionalitys\n */\n destroy() {\n this._eventBindings.forEach(args => _.off(...args));\n Object.keys(this.components).forEach(key => this.components[key].destroy());\n }\n\n /**\n * Destroy's all functionalitys and removes\n * the pickr element.\n */\n destroyAndRemove() {\n this.destroy();\n\n // Remove element\n const root = this._root.root;\n root.parentElement.removeChild(root);\n }\n\n /**\n * Hides the color-picker ui.\n */\n hide() {\n this._root.app.classList.remove('visible');\n return this;\n }\n\n /**\n * Shows the color-picker ui.\n */\n show() {\n if (this.options.disabled) return;\n this._root.app.classList.add('visible');\n this._rePositioningPicker();\n return this;\n }\n\n /**\n * @return {boolean} If the color picker is currently open\n */\n isOpen() {\n return this._root.app.classList.contains('visible');\n }\n\n /**\n * Set a specific color.\n * @param h Hue\n * @param s Saturation\n * @param v Value\n * @param a Alpha channel (0 - 1)\n * @param silent If the button should not change the color\n * @return true if the color has been accepted\n */\n setHSVA(h = 360, s = 0, v = 0, a = 1, silent = false) {\n\n // Deactivate color calculation\n const recalc = this._recalc; // Save state\n this._recalc = false;\n\n // Validate input\n if (h < 0 || h > 360 || s < 0 || s > 100 || v < 0 || v > 100 || a < 0 || a > 1) {\n return false;\n }\n\n // Short names\n const {hue, opacity, palette} = this.components;\n\n // Calculate y position of hue slider\n const hueWrapper = hue.options.wrapper;\n const hueY = hueWrapper.offsetHeight * (h / 360);\n hue.update(0, hueY);\n\n // Calculate y position of opacity slider\n const opacityWrapper = opacity.options.wrapper;\n const opacityY = opacityWrapper.offsetHeight * a;\n opacity.update(0, opacityY);\n\n // Calculate y and x position of color palette\n const pickerWrapper = palette.options.wrapper;\n const pickerX = pickerWrapper.offsetWidth * (s / 100);\n const pickerY = pickerWrapper.offsetHeight * (1 - (v / 100));\n palette.update(pickerX, pickerY);\n\n // Override current color and re-active color calculation\n this._color = new HSVaColor(h, s, v, a);\n this._recalc = recalc; // Restore old state\n\n // Update output if recalculation is enabled\n if (this._recalc) {\n this._updateOutput();\n }\n\n // Check if call is silent\n if (!silent) {\n this.applyColor();\n }\n\n return true;\n }\n\n /**\n * Tries to parse a string which represents a color.\n * Examples: #fff\n * rgb 10 10 200\n * hsva 10 20 5 0.5\n * @param string\n * @param silent\n */\n setColor(string, silent = false) {\n\n // Check if null\n if (string === null) {\n this._clearColor();\n return true;\n }\n\n const {values, type} = Color.parseToHSV(string);\n\n // Check if color is ok\n if (values) {\n\n // Change selected color format\n const utype = type.toUpperCase();\n const {options} = this._root.interaction;\n const target = options.find(el => el.getAttribute('data-type') === utype);\n\n // Auto select only if not hidden\n if (!target.hidden) {\n for (const el of options) {\n el.classList[el === target ? 'add' : 'remove']('active');\n }\n }\n\n return this.setHSVA(...values, silent);\n }\n }\n\n /**\n * Changes the color _representation.\n * Allowed values are HEX, RGBA, HSVA, HSLA and CMYK\n * @param type\n * @returns {boolean} if the selected type was valid.\n */\n setColorRepresentation(type) {\n\n // Force uppercase to allow a case-sensitiv comparison\n type = type.toUpperCase();\n\n // Find button with given type and trigger click event\n return !!this._root.interaction.options.find(v => v.getAttribute('data-type') === type && !v.click());\n }\n\n /**\n * Returns the current color representaion. See setColorRepresentation\n * @returns {*}\n */\n getColorRepresentation() {\n return this._representation;\n }\n\n /**\n * @returns HSVaColor Current HSVaColor object.\n */\n getColor() {\n return this._color;\n }\n\n /**\n * @returns The root HTMLElement with all his components.\n */\n getRoot() {\n return this._root;\n }\n\n /**\n * Disable pickr\n */\n disable() {\n this.hide();\n this.options.disabled = true;\n this._root.button.classList.add('disabled');\n return this;\n }\n\n /**\n * Enable pickr\n */\n enable() {\n this.options.disabled = false;\n this._root.button.classList.remove('disabled');\n return this;\n }\n}\n\nfunction create(options) {\n const {components, strings, useAsButton, swatches} = options;\n const hidden = con => con ? '' : 'style=\"display:none\" hidden';\n\n const root = _.createFromTemplate(`\n