{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./src/js/utils/utils.js","webpack:///./src/js/utils/color.js","webpack:///./src/js/utils/hsvacolor.js","webpack:///./src/js/libs/moveable.js","webpack:///./src/js/libs/selectable.js","webpack:///./src/js/libs/nanopop.js","webpack:///./src/js/pickr.js","webpack:///./src/js/template.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","eventListener","method","elements","events","fn","options","HTMLCollection","NodeList","Array","from","isArray","el","ev","capture","slice","arguments","on","off","createElementFromString","html","div","document","createElement","innerHTML","trim","firstElementChild","removeAttribute","getAttribute","createFromTemplate","str","resolve","element","base","con","subtree","child","children","arr","sub","push","keys","length","eventPath","evt","path","composedPath","target","parentElement","resolveElement","val","Element","split","reduce","pv","cv","ci","a","querySelector","shadowRoot","adjustableInputNumbers","mapper","v","handleScroll","e","inc","Number","shiftKey","ctrlKey","deltaY","index","selectionStart","replace","focus","setSelectionRange","preventDefault","dispatchEvent","Event","passive","min","max","floor","round","Math","hsvToRgb","h","f","q","mod","hsvToHsl","rgbToHsv","g","b","minVal","maxVal","delta","dr","dg","db","cmykToHsv","y","k","hslToHsv","hexToHsv","hex","match","map","parseInt","parseToHSVA","toLowerCase","ctx","getContext","fillStyle","standardizeColor","regex","cmyk","rgba","hsla","hsva","hexa","numarize","array","test","undefined","invalid","type","exec","alphaValid","values","join","raw","substring","HSVaColor","original","next","precision","toFixed","that","toHSVA","toString","toHSLA","toRGBA","toCMYK","rgb","hsvToCmyk","toHEXA","padStart","hsvToHex","alpha","toUpperCase","clone","clamp","Moveable","opt","assign","lock","onchange","onstop","_keyboard","activeElement","wrapper","up","right","down","left","xm","ym","update","cache","x","startsWith","_tapstart","_","_tapstop","_tapmove","getBoundingClientRect","touch","touches","clientX","clientY","width","top","height","style","offsetWidth","offsetHeight","cx","cy","trigger","destroy","Selectable","className","onTap","forEach","classList","Nanopop","reference","padding","vBehaviour","start","middle","end","hBehaviour","bottom","getInfo","pos","cached","position","variant","isVertical","useFallback","rb","eb","positions","vertical","variants","leastApplied","findFittingValue","positionVariants","targetProperty","elSize","winSize","posChar","wantedValue","wantedValueAsString","vaType","vbType","vaValue","vbValue","innerHeight","innerWidth","Pickr","constructor","init","save","hide","show","clear","change","changestop","cancel","swatchselect","this","appClass","theme","useAsButton","disabled","comparison","closeOnScroll","outputPrecision","lockOpacity","autoReposition","container","components","interaction","strings","swatches","inline","sliders","default","defaultRepresentation","adjustableNumbers","showAlways","closeWithKey","includes","preview","opacity","hue","palette","_preBuild","_buildComponents","_bindEvents","_finalBuild","color","addSwatch","button","app","_root","_nanopop","setAttribute","requestAnimationFrame","cb","setColor","_rePositioningPicker","_representation","setColorRepresentation","_initializingActive","_emit","lo","hidden","input","int","find","add","contains","buildPickr","appendChild","removeChild","parent","nextSibling","insertBefore","remove","parentNode","replaceChild","disable","transition","lastColor","inst","cs","repeat","so","sh","getColor","_color","_lastColor","picker","currentColor","_recalc","_updateOutput","cssRGBaString","background","_swatchColors","slider","backgroundColor","selectable","_components","eventBindings","_clearColor","setHSVA","applyColor","result","stopImmediatePropagation","ck","isOpen","code","some","ranges","step","range","getColorRepresentation","nv","toPrecision","timeout","setTimeout","rs","clearTimeout","_eventBindings","silent","_parseLocalColor","alphaMakesAChange","event","args","_eventListener","callBacks","indexOf","splice","removeSwatch","swatchColor","destroyAndRemove","recalc","string","utype","click","getSelectedColor","getRoot","enable","utils","libs","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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","/* eslint-disable prefer-rest-params */\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 for (const el of elements) {\n for (const ev of events) {\n el[method](ev, fn, {capture: false, ...options});\n }\n }\n\n return Array.prototype.slice.call(arguments, 1);\n}\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\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 ':ref' attribute will be saved in a object (which will be returned)\n * where the value of ':ref' is the object-key and the value the HTMLElement.\n *\n * It's possible to create a hierarchy if you add a ':obj' 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 ':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, ':obj');\n const key = removeAttribute(element, ':ref');\n const subtree = con ? (base[con] = {}) : base;\n\n // Check and save element\n key && (base[key] = element);\n for (const child of Array.from(element.children)) {\n const arr = removeAttribute(child, ':arr');\n const sub = resolve(child, arr ? {} : subtree);\n\n if (arr) {\n\n // Check if there is already an array and add element\n (subtree[arr] || (subtree[arr] = []))\n .push(Object.keys(sub).length ? sub : child);\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) {\n return path;\n }\n\n let el = evt.target.parentElement;\n path = [evt.target, el];\n while (el = el.parentElement) {\n path.push(el);\n }\n\n path.push(document, window);\n return path;\n}\n\n/**\n * Resolves a HTMLElement by query.\n * @param val\n * @returns {null|Document|Element}\n */\nexport function resolveElement(val) {\n if (val instanceof Element) {\n return val;\n } else if (typeof val === 'string') {\n return val.split(/>>/g).reduce((pv, cv, ci, a) => {\n pv = pv.querySelector(cv);\n return ci < a.length - 1 ? pv.shadowRoot : pv;\n }, document);\n }\n\n return null;\n}\n\n/**\n * Creates the ability to change numbers in an input field with the scroll-wheel.\n * @param el\n * @param mapper\n */\nexport function adjustableInputNumbers(el, mapper = v => v) {\n\n function handleScroll(e) {\n const inc = ([0.001, 0.01, 0.1])[Number(e.shiftKey || e.ctrlKey * 2)] * (e.deltaY < 0 ? 1 : -1);\n\n let index = 0;\n let off = el.selectionStart;\n el.value = el.value.replace(/[\\d.]+/g, (v, i) => {\n\n // Check if number is in cursor range and increase it\n if (i <= off && i + v.length >= off) {\n off = i;\n return mapper(Number(v), inc, index);\n }\n\n index++;\n return v;\n });\n\n el.focus();\n el.setSelectionRange(off, off);\n\n // Prevent default and trigger input event\n e.preventDefault();\n el.dispatchEvent(new Event('input'));\n }\n\n // Bind events\n on(el, 'focus', () => on(window, 'wheel', handleScroll, {passive: false}));\n on(el, 'blur', () => off(window, 'wheel', handleScroll));\n}\n","// Shorthands\nconst {min, max, floor, round} = Math;\n\n/**\n * Tries to convert a color name to rgb/a hex representation\n * @param name\n * @returns {string | CanvasGradient | CanvasPattern}\n */\nfunction standardizeColor(name) {\n\n // Since invalid color's will be parsed as black, filter them out\n if (name.toLowerCase() === 'black') {\n return '#000';\n }\n\n const ctx = document.createElement('canvas').getContext('2d');\n ctx.fillStyle = name;\n return ctx.fillStyle === '#000' ? null : ctx.fillStyle;\n}\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 const i = floor(h);\n\n const f = h - i;\n const p = v * (1 - s);\n const q = v * (1 - f * s);\n const t = v * (1 - (1 - f) * s);\n\n const mod = i % 6;\n const r = [v, q, p, p, t, v][mod];\n const g = [t, v, v, q, p, p][mod];\n const 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 =>\n round(v).toString(16).padStart(2, '0')\n );\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 const k = min(1 - r, 1 - g, 1 - b);\n const c = k === 1 ? 0 : (1 - r - k) / (1 - k);\n const m = k === 1 ? 0 : (1 - g - k) / (1 - k);\n const 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;\n v /= 100;\n\n const 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;\n g /= 255;\n b /= 255;\n\n const minVal = min(r, g, b);\n const maxVal = max(r, g, b);\n const delta = maxVal - minVal;\n\n let h, s;\n const v = maxVal;\n if (delta === 0) {\n h = s = 0;\n } else {\n s = delta / maxVal;\n const dr = (((maxVal - r) / 6) + (delta / 2)) / delta;\n const dg = (((maxVal - g) / 6) + (delta / 2)) / delta;\n const 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;\n m /= 100;\n y /= 100;\n 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;\n l /= 100;\n s *= l < 0.5 ? l : 1 - l;\n\n const ns = (2 * s / (l + s)) * 100;\n const 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 parseToHSVA(str) {\n\n // Check if string is a color-name\n str = str.match(/^[a-zA-Z]+$/) ? standardizeColor(str) : 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: /^((rgba)|rgb)[\\D]+([\\d.]+)[\\D]+([\\d.]+)[\\D]+([\\d.]+)[\\D]*?([\\d.]+|$)/i,\n hsla: /^((hsla)|hsl)[\\D]+([\\d.]+)[\\D]+([\\d.]+)[\\D]+([\\d.]+)[\\D]*?([\\d.]+|$)/i,\n hsva: /^((hsva)|hsv)[\\D]+([\\d.]+)[\\D]+([\\d.]+)[\\D]+([\\d.]+)[\\D]*?([\\d.]+|$)/i,\n hexa: /^#?(([\\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 invalid: for (const type in regex) {\n\n // Check if current scheme passed\n if (!(match = regex[type].exec(str))) {\n continue;\n }\n\n // Match[2] does only contain a truly value if rgba, hsla, or hsla got matched\n const alphaValid = a => (!!match[2] === (typeof a === 'number'));\n\n // Try to convert\n switch (type) {\n case 'cmyk': {\n const [, c, m, y, k] = numarize(match);\n\n if (c > 100 || m > 100 || y > 100 || k > 100) {\n break invalid;\n }\n\n return {values: cmykToHsv(c, m, y, k), type};\n }\n case 'rgba': {\n const [, , , r, g, b, a] = numarize(match);\n\n if (r > 255 || g > 255 || b > 255 || a < 0 || a > 1 || !alphaValid(a)) {\n break invalid;\n }\n\n return {values: [...rgbToHsv(r, g, b), a], a, type};\n }\n case 'hexa': {\n let [, hex] = match;\n\n if (hex.length === 4 || hex.length === 3) {\n hex = hex.split('').map(v => v + v).join('');\n }\n\n const raw = hex.substring(0, 6);\n let a = hex.substring(6);\n\n // Convert 0 - 255 to 0 - 1 for opacity\n a = a ? (parseInt(a, 16) / 255) : undefined;\n\n return {values: [...hexToHsv(raw), a], a, type};\n }\n case 'hsla': {\n const [, , , h, s, l, a] = numarize(match);\n\n if (h > 360 || s > 100 || l > 100 || a < 0 || a > 1 || !alphaValid(a)) {\n break invalid;\n }\n\n return {values: [...hslToHsv(h, s, l), a], a, type};\n }\n case 'hsva': {\n const [, , , h, s, v, a] = numarize(match);\n\n if (h > 360 || s > 100 || v > 100 || a < 0 || a > 1 || !alphaValid(a)) {\n break invalid;\n }\n\n return {values: [h, s, v, a], a, type};\n }\n }\n }\n\n return {values: null, type: null};\n}\n","import {hsvToCmyk, hsvToHex, hsvToHsl, hsvToRgb} from './color';\r\n\r\n/**\r\n * Simple class which holds the properties\r\n * of the color represention model hsla (hue saturation lightness alpha)\r\n */\r\nexport function HSVaColor(h = 0, s = 0, v = 0, a = 1) {\r\n const mapper = (original, next) => (precision = -1) => {\r\n return next(~precision ? original.map(v => Number(v.toFixed(precision))) : original);\r\n };\r\n\r\n const that = {\r\n h, s, v, a,\r\n\r\n toHSVA() {\r\n const hsva = [that.h, that.s, that.v, that.a];\r\n hsva.toString = mapper(hsva, arr => `hsva(${arr[0]}, ${arr[1]}%, ${arr[2]}%, ${that.a})`);\r\n return hsva;\r\n },\r\n\r\n toHSLA() {\r\n const hsla = [...hsvToHsl(that.h, that.s, that.v), that.a];\r\n hsla.toString = mapper(hsla, arr => `hsla(${arr[0]}, ${arr[1]}%, ${arr[2]}%, ${that.a})`);\r\n return hsla;\r\n },\r\n\r\n toRGBA() {\r\n const rgba = [...hsvToRgb(that.h, that.s, that.v), that.a];\r\n rgba.toString = mapper(rgba, arr => `rgba(${arr[0]}, ${arr[1]}, ${arr[2]}, ${that.a})`);\r\n return rgba;\r\n },\r\n\r\n toCMYK() {\r\n const cmyk = hsvToCmyk(that.h, that.s, that.v);\r\n cmyk.toString = mapper(cmyk, arr => `cmyk(${arr[0]}%, ${arr[1]}%, ${arr[2]}%, ${arr[3]}%)`);\r\n return cmyk;\r\n },\r\n\r\n toHEXA() {\r\n const hex = hsvToHex(that.h, that.s, that.v);\r\n\r\n // Check if alpha channel make sense, convert it to 255 number space, convert\r\n // To hex and pad it with zeros if needet.\r\n const alpha = that.a >= 1 ? '' : Number((that.a * 255).toFixed(0))\r\n .toString(16)\r\n .toUpperCase().padStart(2, '0');\r\n\r\n alpha && hex.push(alpha);\r\n hex.toString = () => `#${hex.join('').toUpperCase()}`;\r\n return hex;\r\n },\r\n\r\n clone: () => HSVaColor(that.h, that.s, that.v, that.a)\r\n };\r\n\r\n return that;\r\n}\r\n","import * as _ from '../utils/utils';\n\nconst clamp = v => Math.max(Math.min(v, 1), 0);\nexport default function Moveable(opt) {\n\n const that = {\n\n // Assign default values\n options: Object.assign({\n lock: null,\n onchange: () => 0,\n onstop: () => 0\n }, opt),\n\n _keyboard(e) {\n const {options} = that;\n const {type, key} = e;\n\n // Check to see if the Movable is focused and then move it based on arrow key inputs\n // For improved accessibility\n if (document.activeElement === options.wrapper) {\n const {lock} = that.options;\n const up = key === 'ArrowUp';\n const right = key === 'ArrowRight';\n const down = key === 'ArrowDown';\n const left = key === 'ArrowLeft';\n\n if (type === 'keydown' && (up || right || down || left)) {\n let xm = 0;\n let ym = 0;\n\n if (lock === 'v') {\n xm = (up || right) ? 1 : -1;\n } else if (lock === 'h') {\n xm = (up || right) ? -1 : 1;\n } else {\n ym = up ? -1 : (down ? 1 : 0);\n xm = left ? -1 : (right ? 1 : 0);\n }\n\n that.update(\n clamp(that.cache.x + (0.01 * xm)),\n clamp(that.cache.y + (0.01 * ym))\n );\n e.preventDefault();\n } else if (key.startsWith('Arrow')) {\n that.options.onstop();\n e.preventDefault();\n }\n }\n },\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\n // Trigger\n that._tapmove(evt);\n },\n\n _tapmove(evt) {\n const {options, cache} = that;\n const {lock, element, wrapper} = options;\n const b = wrapper.getBoundingClientRect();\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) {\n x = b.left;\n } else if (x > b.left + b.width) {\n x = b.left + b.width;\n }\n if (y < b.top) {\n y = b.top;\n } else if (y > b.top + b.height) {\n y = b.top + b.height;\n }\n\n // Normalize\n x -= b.left;\n y -= b.top;\n } else if (cache) {\n x = cache.x * b.width;\n y = cache.y * b.height;\n }\n\n if (lock !== 'h') {\n element.style.left = `calc(${x / b.width * 100}% - ${element.offsetWidth / 2}px)`;\n }\n\n if (lock !== 'v') {\n element.style.top = `calc(${y / b.height * 100}% - ${element.offsetHeight / 2}px)`;\n }\n\n that.cache = {x: x / b.width, y: y / b.height};\n const cx = clamp(x / b.width);\n const cy = clamp(y / b.height);\n\n switch (lock) {\n case 'v':\n return options.onchange(cx);\n case 'h':\n return options.onchange(cy);\n default:\n return options.onchange(cx, cy);\n }\n },\n\n _tapstop() {\n that.options.onstop();\n _.off(document, ['mouseup', 'touchend', 'touchcancel'], that._tapstop);\n _.off(document, ['mousemove', 'touchmove'], that._tapmove);\n },\n\n trigger() {\n that._tapmove();\n },\n\n update(x = 0, y = 0) {\n const {left, top, width, height} = that.options.wrapper.getBoundingClientRect();\n\n if (that.options.lock === 'h') {\n y = x;\n }\n\n that._tapmove({\n clientX: left + width * x,\n clientY: top + height * y\n });\n },\n\n destroy() {\n const {options, _tapstart, _keyboard} = that;\n _.off(document, ['keydown', 'keyup'], _keyboard);\n _.off([options.wrapper, options.element], 'mousedown', _tapstart);\n _.off([options.wrapper, options.element], 'touchstart', _tapstart, {\n passive: false\n });\n }\n };\n\n // Initilize\n const {options, _tapstart, _keyboard} = that;\n _.on([options.wrapper, options.element], 'mousedown', _tapstart);\n _.on([options.wrapper, options.element], 'touchstart', _tapstart, {\n passive: false\n });\n\n _.on(document, ['keydown', 'keyup'], _keyboard);\n\n return that;\n}\n","import * as _ from '../utils/utils';\r\n\r\nexport default function Selectable(opt = {}) {\r\n opt = Object.assign({\r\n onchange: () => 0,\r\n className: '',\r\n elements: []\r\n }, opt);\r\n\r\n const onTap = _.on(opt.elements, 'click', evt => {\r\n opt.elements.forEach(e =>\r\n e.classList[evt.target === e ? 'add' : 'remove'](opt.className)\r\n );\r\n\r\n opt.onchange(evt);\r\n });\r\n\r\n return {\r\n destroy: () => _.off(...onTap)\r\n };\r\n}\r\n","/**\n * Micro positioning-engine\n * @param el\n * @param reference\n * @param pos\n * @param padding\n * @returns {{update(): void}}\n * @constructor\n */\nexport default function Nanopop({el, reference, padding = 8}) {\n\n // Positioning priorities for variants\n const vBehaviour = {\n start: 'sme',\n middle: 'mse',\n end: 'ems'\n };\n\n // Positioning priorities for general alignment\n const hBehaviour = {\n top: 'tbrl',\n right: 'rltb',\n bottom: 'btrl',\n left: 'lrbt'\n };\n\n const getInfo = ((cache = {}) => (pos, cached = cache[pos]) => {\n\n // Return cached value if possible\n if (cached) {\n return cached;\n }\n\n // Extract position and variant\n // Top-start -> top is \"position\" and \"start\" is the variant\n const [position, variant = 'middle'] = pos.split('-');\n\n // It's vertical if top or bottom is used as position\n const isVertical = (position === 'top' || position === 'bottom');\n\n // Cache value and return\n return cache[pos] = {\n position,\n variant,\n isVertical\n };\n })();\n\n return {\n\n /**\n * Re-aligns the element\n * @param pos Position string\n * @param useFallback If everything fails the element may be centered on the the entire screen ignoring the reference\n */\n update(pos, useFallback = false) {\n const {position, variant, isVertical} = getInfo(pos);\n const rb = reference.getBoundingClientRect();\n const eb = el.getBoundingClientRect();\n\n /**\n * Holds coordinates of top, left, bottom and right alignment\n */\n const positions = vertical => vertical ? {\n t: rb.top - eb.height - padding,\n b: rb.bottom + padding\n } : {\n r: rb.right + padding,\n l: rb.left - eb.width - padding\n };\n\n /**\n * Holds corresponding variants (start, middle, end)\n */\n const variants = vertical => vertical ? {\n s: rb.left + rb.width - eb.width,\n m: (-eb.width / 2) + (rb.left + rb.width / 2),\n e: rb.left\n } : {\n s: rb.bottom - eb.height,\n m: rb.bottom - rb.height / 2 - eb.height / 2,\n e: rb.bottom - rb.height\n };\n\n // Holds the last working positions\n const leastApplied = {};\n\n /**\n * Applies a position, example precedure with top-start: it'll\n * first try to satify the variant \"start\", if this fails it'll try\n * the remaining variants (in this case \"middle\" and \"end\")\n * @param positions Array of positions in the order they should be applied\n * @param positionVariants Variants, the first should be the one initially wanted\n * @param targetProperty The target property, defines if this is a horizontal or vertical aligment\n * @returns a value for targetProperty or null if none fits\n */\n const findFittingValue = (positions, positionVariants, targetProperty) => {\n const vertical = targetProperty === 'top';\n const elSize = vertical ? eb.height : eb.width;\n const winSize = window[vertical ? 'innerHeight' : 'innerWidth'];\n\n for (const posChar of positions) {\n const wantedValue = positionVariants[posChar];\n const wantedValueAsString = leastApplied[targetProperty] = `${wantedValue}px`;\n\n if (wantedValue > 0 && (wantedValue + elSize) < winSize) {\n return wantedValueAsString;\n }\n }\n\n return null;\n };\n\n\n for (const vertical of [isVertical, !isVertical]) {\n\n /**\n * Va and vb both define where the element is positioned (top, bottom, left, right)\n * and it's corresponding variant (start, middle, end). Since we're \"rotating\" the element\n * to ensure to (hopefully) find at least one fitting position the values need to be\n * defined during runtime.\n */\n const vaType = vertical ? 'top' : 'left';\n const vbType = vertical ? 'left' : 'top';\n\n // Actual values for top and bottom\n const vaValue = findFittingValue(hBehaviour[position], positions(vertical), vaType);\n const vbValue = findFittingValue(vBehaviour[variant], variants(vertical), vbType);\n\n // Both values work, apply them\n if (vaValue && vbValue) {\n el.style[vbType] = vbValue;\n el.style[vaType] = vaValue;\n return;\n }\n }\n\n // It failed to find a non-clipping position, if fallback is enable it'll use it - otherwise the last\n // Calculated values will be used.\n if (useFallback) {\n el.style.top = `${(window.innerHeight - eb.height) / 2}px`;\n el.style.left = `${(window.innerWidth - eb.width) / 2}px`;\n } else {\n el.style.left = leastApplied.left;\n el.style.top = leastApplied.top;\n }\n }\n };\n}\n","import * as _ from './utils/utils';\nimport {version} from '../../package';\nimport {parseToHSVA} from './utils/color';\nimport {HSVaColor} from './utils/hsvacolor';\nimport Moveable from './libs/moveable';\nimport Selectable from './libs/selectable';\nimport Nanopop from './libs/nanopop';\nimport buildPickr from './template';\n\nclass Pickr {\n\n // Will be used to prevent specific actions during initilization\n _initializingActive = true;\n\n // If the current color value should be recalculated\n _recalc = true;\n\n // Positioning engine and DOM-Tree\n _nanopop = null;\n _root = null;\n\n // Current and last color for comparison\n _color = HSVaColor();\n _lastColor = HSVaColor();\n _swatchColors = [];\n\n // Evenlistener name: [callbacks]\n _eventListener = {\n init: [],\n save: [],\n hide: [],\n show: [],\n clear: [],\n change: [],\n changestop: [],\n cancel: [],\n swatchselect: []\n };\n\n constructor(opt) {\n\n // Assign default values\n this.options = opt = Object.assign({\n appClass: null,\n theme: 'classic',\n useAsButton: false,\n padding: 8,\n disabled: false,\n comparison: true,\n closeOnScroll: false,\n outputPrecision: 0,\n lockOpacity: false,\n autoReposition: true,\n container: 'body',\n components: {\n interaction: {}\n },\n\n strings: {},\n swatches: null,\n inline: false,\n sliders: null,\n\n default: '#42445a',\n defaultRepresentation: null,\n position: 'bottom-middle',\n adjustableNumbers: true,\n showAlways: false,\n\n closeWithKey: 'Escape'\n }, opt);\n\n const {swatches, components, theme, sliders, lockOpacity, padding} = opt;\n\n if (['nano', 'monolith'].includes(theme) && !sliders) {\n opt.sliders = 'h';\n }\n\n // Check interaction section\n if (!components.interaction) {\n components.interaction = {};\n }\n\n // Overwrite palette if preview, opacity or hue are true\n const {preview, opacity, hue, palette} = components;\n components.opacity = (!lockOpacity && opacity);\n components.palette = palette || preview || opacity || hue;\n\n // Initialize picker\n this._preBuild();\n this._buildComponents();\n this._bindEvents();\n this._finalBuild();\n\n // Append pre-defined swatch colors\n if (swatches && swatches.length) {\n swatches.forEach(color => this.addSwatch(color));\n }\n\n // Initialize positioning engine\n const {button, app} = this._root;\n this._nanopop = Nanopop({\n reference: button,\n padding,\n el: app\n });\n\n // Initialize accessibility\n button.setAttribute('role', 'button');\n button.setAttribute('aria-label', 'toggle color picker dialog');\n\n // Initilization is finish, pickr is visible and ready for usage\n const that = this;\n requestAnimationFrame((function cb() {\n\n if (!app.offsetWidth && app.parentElement !== opt.container) {\n return requestAnimationFrame(cb);\n }\n\n // Apply default color\n that.setColor(opt.default);\n that._rePositioningPicker();\n\n // Initialize color representation\n if (opt.defaultRepresentation) {\n that._representation = opt.defaultRepresentation;\n that.setColorRepresentation(that._representation);\n }\n\n // Show pickr if locked\n if (opt.showAlways) {\n that.show();\n }\n\n // Initialization is done - pickr is usable, fire init event\n that._initializingActive = false;\n that._emit('init');\n }));\n }\n\n // Does only the absolutly basic thing to initialize the components\n _preBuild() {\n const opt = this.options;\n\n // Resolve elements\n for (const type of ['el', 'container']) {\n opt[type] = _.resolveElement(opt[type]);\n }\n\n // Create element and append it to body to\n // Prevent initialization errors\n this._root = buildPickr(opt);\n\n // Check if a custom button is used\n if (opt.useAsButton) {\n this._root.button = opt.el; // Replace button with customized button\n }\n\n opt.container.appendChild(this._root.root);\n }\n\n _finalBuild() {\n const opt = this.options;\n const root = this._root;\n\n // Remove from body\n opt.container.removeChild(root.root);\n\n if (opt.inline) {\n const parent = opt.el.parentElement;\n\n if (opt.el.nextSibling) {\n parent.insertBefore(root.app, opt.el.nextSibling);\n } else {\n parent.appendChild(root.app);\n }\n } else {\n opt.container.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.parentNode.replaceChild(root.root, opt.el);\n } else if (opt.inline) {\n opt.el.remove();\n }\n\n // Check if it should be immediatly disabled\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\n if (!opt.useAsButton) {\n root.preview.lastColor.style.transition = 'none';\n }\n }\n\n this.hide();\n }\n\n _buildComponents() {\n\n // Instance reference\n const inst = this;\n const cs = this.options.components;\n const sliders = (inst.options.sliders || 'v').repeat(2);\n const [so, sh] = sliders.match(/^[vh]+$/g) ? sliders : [];\n\n // Re-assign if null\n const getColor = () =>\n this._color || (this._color = this._lastColor.clone());\n\n const components = {\n\n palette: Moveable({\n element: inst._root.palette.picker,\n wrapper: inst._root.palette.palette,\n\n onstop: () => inst._emit('changestop', inst),\n onchange(x, y) {\n if (!cs.palette) {\n return;\n }\n\n const color = getColor();\n const {_root, options} = inst;\n const {lastColor, currentColor} = _root.preview;\n\n // Update the input field only if the user is currently not typing\n if (inst._recalc) {\n\n // Calculate saturation based on the position\n color.s = x * 100;\n\n // Calculate the value\n color.v = 100 - y * 100;\n\n // Prevent falling under zero\n color.v < 0 ? color.v = 0 : 0;\n inst._updateOutput();\n }\n\n // Set picker and gradient color\n const cssRGBaString = color.toRGBA().toString(0);\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.color = cssRGBaString;\n\n // If the user changes the color, remove the cleared icon\n _root.button.classList.remove('clear');\n } else if (!options.useAsButton && !inst._lastColor) {\n\n // Apply color to both the last and current color since the current state is cleared\n lastColor.style.color = cssRGBaString;\n }\n\n // Check if there's a swatch which color matches the current one\n const hexa = color.toHEXA().toString();\n for (const {el, color} of inst._swatchColors) {\n el.classList[hexa === color.toHEXA().toString() ? 'add' : 'remove']('pcr-active');\n }\n\n // Change current color\n currentColor.style.color = cssRGBaString;\n }\n }),\n\n hue: Moveable({\n lock: sh === 'v' ? 'h' : 'v',\n element: inst._root.hue.picker,\n wrapper: inst._root.hue.slider,\n\n onstop: () => inst._emit('changestop', inst),\n onchange(v) {\n if (!cs.hue || !cs.palette) {\n return;\n }\n\n const color = getColor();\n\n // Calculate hue\n if (inst._recalc) {\n color.h = v * 360;\n }\n\n // Update color\n this.element.style.backgroundColor = `hsl(${color.h}, 100%, 50%)`;\n components.palette.trigger();\n }\n }),\n\n opacity: Moveable({\n lock: so === 'v' ? 'h' : 'v',\n element: inst._root.opacity.picker,\n wrapper: inst._root.opacity.slider,\n\n onstop: () => inst._emit('changestop', inst),\n onchange(v) {\n if (!cs.opacity || !cs.palette) {\n return;\n }\n\n const color = getColor();\n\n // Calculate opacity\n if (inst._recalc) {\n color.a = Math.round(v * 1e2) / 100;\n }\n\n // Update color\n this.element.style.background = `rgba(0, 0, 0, ${color.a})`;\n components.palette.trigger();\n }\n }),\n\n selectable: Selectable({\n elements: inst._root.interaction.options,\n className: 'active',\n\n onchange(e) {\n inst._representation = e.target.getAttribute('data-type').toUpperCase();\n inst._recalc && 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([\n _root.interaction.cancel,\n _root.preview.lastColor\n ], 'click', () => {\n this._emit('cancel', this);\n this.setHSVA(...(this._lastColor || this._color).toHSVA(), true);\n }),\n\n // Save color\n _.on(_root.interaction.save, 'click', () => {\n !this.applyColor() && !options.showAlways && this.hide();\n }),\n\n // User input\n _.on(_root.interaction.result, ['keyup', 'input'], e => {\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._emit('change', this._color);\n }\n\n e.stopImmediatePropagation();\n }),\n\n // Detect user input and disable auto-recalculation\n _.on(_root.interaction.result, ['focus', 'blur'], e => {\n this._recalc = e.type === 'blur';\n this._recalc && this._updateOutput();\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\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 const ranges = {\n rgba: [255, 255, 255, 1],\n hsva: [360, 100, 100, 1],\n hsla: [360, 100, 100, 1],\n cmyk: [100, 100, 100, 100]\n };\n\n _.adjustableInputNumbers(_root.interaction.result, (o, step, index) => {\n const range = ranges[this.getColorRepresentation().toLowerCase()];\n\n if (range) {\n const max = range[index];\n\n // Calculate next reasonable number\n const nv = o + (max >= 100 ? step * 1000 : step);\n\n // Apply range of zero up to max, fix floating-point issues\n return nv <= 0 ? 0 : Number((nv < max ? nv : max).toPrecision(3));\n }\n\n return o;\n });\n }\n\n if (options.autoReposition && !options.inline) {\n let timeout = null;\n const that = this;\n\n // Re-calc position on window resize, scroll and wheel\n eventBindings.push(\n _.on(window, ['scroll', 'resize'], () => {\n if (that.isOpen()) {\n\n if (options.closeOnScroll) {\n that.hide();\n }\n\n if (timeout === null) {\n timeout = setTimeout(() => timeout = null, 100);\n\n // Update position on every frame\n requestAnimationFrame(function rs() {\n that._rePositioningPicker();\n (timeout !== null) && requestAnimationFrame(rs);\n });\n } else {\n clearTimeout(timeout);\n timeout = setTimeout(() => timeout = null, 100);\n }\n }\n }, {capture: true})\n );\n }\n\n // Save bindings\n this._eventBindings = eventBindings;\n }\n\n _rePositioningPicker() {\n const {options} = this;\n\n // No repositioning needed if inline\n if (!options.inline) {\n this._nanopop.update(options.position, !this._recalc);\n }\n }\n\n _updateOutput() {\n const {_root, _color, options} = this;\n\n // Check if component is present\n if (_root.interaction.type()) {\n\n // Construct function name and call if present\n const method = `to${_root.interaction.type().getAttribute('data-type')}`;\n _root.interaction.result.value = typeof _color[method] === 'function' ?\n _color[method]().toString(options.outputPrecision) : '';\n }\n\n // Fire listener if initialization is finish\n if (!this._initializingActive && this._recalc) {\n this._emit('change', _color);\n }\n }\n\n _clearColor(silent = false) {\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.color = 'rgba(0, 0, 0, 0.15)';\n }\n\n _root.button.classList.add('clear');\n\n if (!options.showAlways) {\n this.hide();\n }\n\n this._lastColor = null;\n if (!this._initializingActive && !silent) {\n\n // Fire listener\n this._emit('save', null);\n this._emit('clear', this);\n }\n }\n\n _parseLocalColor(str) {\n const {values, type, a} = parseToHSVA(str);\n const {lockOpacity} = this.options;\n const alphaMakesAChange = a !== undefined && a !== 1;\n\n // If no opacity is applied, add undefined at the very end which gets\n // Set to 1 in setHSVA\n if (values && values.length === 3) {\n values[3] = undefined;\n }\n\n return {\n values: (!values || (lockOpacity && alphaMakesAChange)) ? null : values,\n type\n };\n }\n\n _emit(event, ...args) {\n this._eventListener[event].forEach(cb => cb(...args, this));\n }\n\n on(event, cb) {\n\n // Validate\n if (typeof cb === 'function' && typeof event === 'string' && event in this._eventListener) {\n this._eventListener[event].push(cb);\n }\n\n return this;\n }\n\n off(event, cb) {\n const callBacks = this._eventListener[event];\n\n if (callBacks) {\n const index = callBacks.indexOf(cb);\n\n if (~index) {\n callBacks.splice(index, 1);\n }\n }\n\n return this;\n }\n\n /**\n * Appends a color to the swatch palette\n * @param color\n * @returns {boolean}\n */\n addSwatch(color) {\n const {values} = this._parseLocalColor(color);\n\n if (values) {\n const {_swatchColors, _root} = this;\n const color = HSVaColor(...values);\n\n // Create new swatch HTMLElement\n const el = _.createElementFromString(\n ``\n );\n\n // Append element and save swatch data\n _root.swatches.appendChild(el);\n _swatchColors.push({el, color});\n\n // Bind event\n this._eventBindings.push(\n _.on(el, 'click', () => {\n this.setHSVA(...color.toHSVA(), true);\n this._emit('swatchselect', color);\n this._emit('change', color);\n })\n );\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Removes a swatch color by it's index\n * @param index\n * @returns {boolean}\n */\n removeSwatch(index) {\n const swatchColor = this._swatchColors[index];\n\n // Check swatch data\n if (swatchColor) {\n const {el} = swatchColor;\n\n // Remove HTML child and swatch data\n this._root.swatches.removeChild(el);\n this._swatchColors.splice(index, 1);\n return true;\n }\n\n return false;\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(0);\n preview.lastColor.style.color = cssRGBaString;\n\n // Change only the button color if it isn't customized\n if (!this.options.useAsButton) {\n button.style.color = 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._emit('save', this._color);\n }\n\n return this;\n }\n\n /**\n * Destroy's all functionalitys\n */\n destroy() {\n this._eventBindings.forEach(args => _.off(...args));\n\n Object.keys(this._components)\n .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 const {root, app} = this._root;\n\n // Remove element\n if (root.parentElement) {\n root.parentElement.removeChild(root);\n }\n\n // Remove .pcr-app\n app.parentElement.removeChild(app);\n\n // There are references to various DOM elements stored in the pickr instance\n // This cleans all of them to avoid detached DOMs\n Object.keys(this)\n .forEach(key => this[key] = null);\n }\n\n /**\n * Hides the color-picker ui.\n */\n hide() {\n this._root.app.classList.remove('visible');\n this._emit('hide', this);\n return this;\n }\n\n /**\n * Shows the color-picker ui.\n */\n show() {\n\n if (!this.options.disabled) {\n this._root.app.classList.add('visible');\n this._rePositioningPicker();\n this._emit('show', this);\n }\n\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 boolean 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 // Override current color and re-active color calculation\n this._color = HSVaColor(h, s, v, a);\n\n // Update slider and palette\n const {hue, opacity, palette} = this._components;\n hue.update((h / 360));\n opacity.update(a);\n palette.update(s / 100, 1 - (v / 100));\n\n // Check if call is silent\n if (!silent) {\n this.applyColor();\n }\n\n // Update output if recalculation is enabled\n if (recalc) {\n this._updateOutput();\n }\n\n // Restore old state\n this._recalc = recalc;\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(silent);\n return true;\n }\n\n const {values, type} = this._parseLocalColor(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 && !target.hidden) {\n for (const el of options) {\n el.classList[el === target ? 'add' : 'remove']('active');\n }\n }\n\n // Update color (fires 'save' event if silent is 'false')\n if (!this.setHSVA(...values, silent)) {\n return false;\n }\n\n // Update representation (fires 'change' event)\n return this.setColorRepresentation(utype);\n }\n\n return false;\n }\n\n /**\n * Changes the color _representation.\n * Allowed values are HEX, RGB, HSV, HSL 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\n .find(v => v.getAttribute('data-type').startsWith(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 currently selected color.\n * @returns {{a, toHSVA, toHEXA, s, v, h, clone, toCMYK, toHSLA, toRGBA}}\n */\n getSelectedColor() {\n return this._lastColor;\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\n// Expose pickr utils\nPickr.utils = _;\n\n// Expose libraries for easier integration in things build on top of it\nPickr.libs = {\n HSVaColor,\n Moveable,\n Nanopop,\n Selectable\n};\n\n// Create instance via method\nPickr.create = options => new Pickr(options);\n\n// Assign version and export\nPickr.version = version;\nexport default Pickr;\n","import * as _ from './utils/utils';\r\n\r\nexport default ({components: c, strings: s, useAsButton, inline, appClass, theme, lockOpacity: lo}) => {\r\n const hidden = con => con ? '' : 'style=\"display:none\" hidden';\r\n\r\n const root = _.createFromTemplate(`\r\n