<%= t("landing.welcome").html_safe %>
-
<%= t("landing.about", href: link_to(t("greenlight"), "https://bigbluebutton.org/2018/07/09/greenlight-2-0/", target: "_blank")).html_safe %>
+
<%= t("landing.about", href: link_to(t("greenlight"), "https://bigbluebutton.org/2018/07/09/greenlight-2-0/", target: "_blank", rel: "noopener")).html_safe %>
<%= link_to "https://youtu.be/Hso8yLzkqj8", target: "_blank" do %>
<%= t("landing.video") %>
<% end %>
diff --git a/app/views/shared/_footer.html.erb b/app/views/shared/_footer.html.erb
index 792bc997..ec17b7a9 100755
--- a/app/views/shared/_footer.html.erb
+++ b/app/views/shared/_footer.html.erb
@@ -14,7 +14,7 @@
%>
<%= render "shared/components/cookie_warning" %>
diff --git a/app/views/shared/_header.html.erb b/app/views/shared/_header.html.erb
index 9595ec0e..c8efbc60 100755
--- a/app/views/shared/_header.html.erb
+++ b/app/views/shared/_header.html.erb
@@ -73,7 +73,7 @@
<% end %>
<% end %>
-
+
<%= t("header.dropdown.help") %>
<%= link_to logout_path, class: "dropdown-item" do %>
diff --git a/config/locales/en.yml b/config/locales/en.yml
index fbf15dce..2881cf6f 100755
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -210,8 +210,7 @@ en:
signout: Sign out
home_room: Home Room
info_update_success: Information successfully updated.
- invalid_user: Login failed due to user not found. Are you sure the email account is correct?
- invalid_credentials: Login failed due to invalid credentials. Are you sure you entered them correctly?
+ invalid_credentials: The email and password you entered did not match our records. Try again or click Forgot Password to reset your password.
invalid_login_method: Login failed due to account mismatch. You need to log in with omniauth.
invite_message: "To invite someone to the meeting, send them this link:"
javascript:
diff --git a/vendor/assets/javascripts/pickr.min.js b/vendor/assets/javascripts/pickr.min.js
new file mode 100644
index 00000000..158b7a3a
--- /dev/null
+++ b/vendor/assets/javascripts/pickr.min.js
@@ -0,0 +1,3 @@
+/*! Pickr 1.3.0 MIT | https://github.com/Simonwep/pickr */
+!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Pickr=e():t.Pickr=e()}(window,function(){return function(t){var e={};function o(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,o),i.l=!0,i.exports}return o.m=t,o.c=e,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)o.d(n,i,function(e){return t[e]}.bind(null,i));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="",o(o.s=0)}([function(t,e,o){"use strict";o.r(e);var n={};function i(t,e){var o=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),o.push.apply(o,n)}return o}function r(t){for(var e=1;e
t)){function o(o){const n=[.001,.01,.1][Number(o.shiftKey||2*o.ctrlKey)]*(o.deltaY<0?1:-1);let i=0,r=t.selectionStart;t.value=t.value.replace(/[\d.]+/g,(t,o)=>o<=r&&o+t.length>=r?(r=o,e(Number(t),n,i)):(i++,t)),t.focus(),t.setSelectionRange(r,r),o.preventDefault(),t.dispatchEvent(new Event("input"))}c(t,"focus",()=>c(window,"wheel",o,{passive:!1})),c(t,"blur",()=>a(window,"wheel",o))}const{min:m,max:v,floor:b,round:y}=Math;function g(t,e,o){e/=100,o/=100;const n=b(t=t/360*6),i=t-n,r=o*(1-e),s=o*(1-i*e),c=o*(1-(1-i)*e),a=n%6;return[255*[o,s,r,r,c,o][a],255*[c,o,o,s,r,r][a],255*[r,r,c,o,o,s][a]]}function _(t,e,o){const n=(2-(e/=100))*(o/=100)/2;return 0!==n&&(e=1===n?0:n<.5?e*o/(2*n):e*o/(2-2*n)),[t,100*e,100*n]}function w(t,e,o){let n,i,r;const s=m(t/=255,e/=255,o/=255),c=v(t,e,o),a=c-s;if(0===a)n=i=0;else{i=a/c;const r=((c-t)/6+a/2)/a,s=((c-e)/6+a/2)/a,l=((c-o)/6+a/2)/a;t===c?n=l-s:e===c?n=1/3+r-l:o===c&&(n=2/3+s-r),n<0?n+=1:n>1&&(n-=1)}return[360*n,100*i,100*(r=c)]}function C(t,e,o,n){return e/=100,o/=100,[...w(255*(1-m(1,(t/=100)*(1-(n/=100))+n)),255*(1-m(1,e*(1-n)+n)),255*(1-m(1,o*(1-n)+n)))]}function A(t,e,o){return e/=100,[t,2*(e*=(o/=100)<.5?o:1-o)/(o+e)*100,100*(o+e)]}function k(t){return w(...t.match(/.{2}/g).map(t=>parseInt(t,16)))}function S(t){t=t.match(/^[a-zA-Z]+$/)?function(t){if("black"===t.toLowerCase())return"#000";const e=document.createElement("canvas").getContext("2d");return e.fillStyle=t,"#000"===e.fillStyle?null:e.fillStyle}(t):t;const e={cmyk:/^cmyk[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)/i,rgba:/^((rgba)|rgb)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,hsla:/^((hsla)|hsl)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,hsva:/^((hsva)|hsv)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,hexa:/^#?(([\dA-Fa-f]{3,4})|([\dA-Fa-f]{6})|([\dA-Fa-f]{8}))$/i},o=t=>t.map(t=>/^(|\d+)\.\d+|\d+$/.test(t)?Number(t):void 0);let n;t:for(const i in e){if(!(n=e[i].exec(t)))continue;const r=!!n[2];switch(i){case"cmyk":{const[,t,e,r,s]=o(n);if(t>100||e>100||r>100||s>100)break t;return{values:C(t,e,r,s),type:i}}case"rgba":{const[,,,t,e,s,c]=o(n);if(t>255||e>255||s>255||c<0||c>1||r===!c)break t;return{values:[...w(t,e,s),c],a:c,type:i}}case"hexa":{let[,t]=n;4!==t.length&&3!==t.length||(t=t.split("").map(t=>t+t).join(""));const e=t.substring(0,6);let o=t.substring(6);return o=o?parseInt(o,16)/255:void 0,{values:[...k(e),o],a:o,type:i}}case"hsla":{const[,,,t,e,s,c]=o(n);if(t>360||e>100||s>100||c<0||c>1||r===!c)break t;return{values:[...A(t,e,s),c],a:c,type:i}}case"hsva":{const[,,,t,e,s,c]=o(n);if(t>360||e>100||s>100||c<0||c>1||r===!c)break t;return{values:[t,e,s,c],a:c,type:i}}}}return{values:null,type:null}}function O(t=0,e=0,o=0,n=1){const i=(t,e)=>(o=-1)=>e(~o?t.map(t=>Number(t.toFixed(o))):t),r={h:t,s:e,v:o,a:n,toHSVA(){const t=[r.h,r.s,r.v,r.a];return t.toString=i(t,t=>"hsva(".concat(t[0],", ").concat(t[1],"%, ").concat(t[2],"%, ").concat(r.a,")")),t},toHSLA(){const t=[..._(r.h,r.s,r.v),r.a];return t.toString=i(t,t=>"hsla(".concat(t[0],", ").concat(t[1],"%, ").concat(t[2],"%, ").concat(r.a,")")),t},toRGBA(){const t=[...g(r.h,r.s,r.v),r.a];return t.toString=i(t,t=>"rgba(".concat(t[0],", ").concat(t[1],", ").concat(t[2],", ").concat(r.a,")")),t},toCMYK(){const t=function(t,e,o){const n=g(t,e,o),i=n[0]/255,r=n[1]/255,s=n[2]/255;let c,a,l,p;return[100*(a=1===(c=m(1-i,1-r,1-s))?0:(1-i-c)/(1-c)),100*(l=1===c?0:(1-r-c)/(1-c)),100*(p=1===c?0:(1-s-c)/(1-c)),100*c]}(r.h,r.s,r.v);return t.toString=i(t,t=>"cmyk(".concat(t[0],"%, ").concat(t[1],"%, ").concat(t[2],"%, ").concat(t[3],"%)")),t},toHEXA(){const t=function(t,e,o){return g(t,e,o).map(t=>y(t).toString(16).padStart(2,"0"))}(r.h,r.s,r.v),e=r.a>=1?"":Number((255*r.a).toFixed(0)).toString(16).toUpperCase().padStart(2,"0");return e&&t.push(e),t.toString=()=>"#".concat(t.join("").toUpperCase()),t},clone:()=>O(r.h,r.s,r.v,r.a)};return r}const j=t=>Math.max(Math.min(t,1),0);function E(t){const e={options:Object.assign({lock:null,onchange:()=>0,onstop:()=>0},t),_tapstart(t){c(document,["mouseup","touchend","touchcancel"],e._tapstop),c(document,["mousemove","touchmove"],e._tapmove),t.preventDefault(),e._tapmove(t)},_tapmove(t){const{options:{lock:n},cache:i}=e,{element:r,wrapper:s}=o,c=s.getBoundingClientRect();let a=0,l=0;if(t){const e=t&&t.touches&&t.touches[0];a=t?(e||t).clientX:0,l=t?(e||t).clientY:0,ac.left+c.width&&(a=c.left+c.width),lc.top+c.height&&(l=c.top+c.height),a-=c.left,l-=c.top}else i&&(a=i.x*c.width,l=i.y*c.height);"h"!==n&&(r.style.left="calc(".concat(a/c.width*100,"% - ").concat(r.offsetWidth/2,"px)")),"v"!==n&&(r.style.top="calc(".concat(l/c.height*100,"% - ").concat(r.offsetHeight/2,"px)")),e.cache={x:a/c.width,y:l/c.height};const p=j(a/s.offsetWidth),u=j(l/s.offsetHeight);switch(n){case"v":return o.onchange(p);case"h":return o.onchange(u);default:return o.onchange(p,u)}},_tapstop(){e.options.onstop(),a(document,["mouseup","touchend","touchcancel"],e._tapstop),a(document,["mousemove","touchmove"],e._tapmove)},trigger(){e._tapmove()},update(t=0,o=0){const{left:n,top:i,width:r,height:s}=e.options.wrapper.getBoundingClientRect();"h"===e.options.lock&&(o=t),e._tapmove({clientX:n+r*t,clientY:i+s*o})},destroy(){const{options:t,_tapstart:o}=e;a([t.wrapper,t.element],"mousedown",o),a([t.wrapper,t.element],"touchstart",o,{passive:!1})}},{options:o,_tapstart:n}=e;return c([o.wrapper,o.element],"mousedown",n),c([o.wrapper,o.element],"touchstart",n,{passive:!1}),e}function L(t={}){t=Object.assign({onchange:()=>0,className:"",elements:[]},t);const e=c(t.elements,"click",e=>{t.elements.forEach(o=>o.classList[e.target===o?"add":"remove"](t.className)),t.onchange(e)});return{destroy:()=>a(...e)}}function P({el:t,reference:e,padding:o=8}){const n={start:"sme",middle:"mse",end:"ems"},i={top:"tbrl",right:"rltb",bottom:"btrl",left:"lrbt"},r=((t={})=>(e,o=t[e])=>{if(o)return o;const[n,i="middle"]=e.split("-"),r="top"===n||"bottom"===n;return t[e]={position:n,variant:i,isVertical:r}})();return{update(s){const{position:c,variant:a,isVertical:l}=r(s),p=e.getBoundingClientRect(),u=t.getBoundingClientRect(),h=t=>t?{t:p.top-u.height-o,b:p.bottom+o}:{r:p.right+o,l:p.left-u.width-o},d=t=>t?{s:p.left+p.width-u.width,m:-u.width/2+(p.left+p.width/2),e:p.left}:{s:p.bottom-u.height,m:p.bottom-p.height/2-u.height/2,e:p.bottom-p.height},f={};function m(e,o,n){const i="top"===n,r=i?u.height:u.width,s=window[i?"innerHeight":"innerWidth"];for(const i of e){const e=o[i],c=f[n]="".concat(e,"px");if(e>0&&e+r{const c=t=>t?"":'style="display:none" hidden',a=h('\n \n\n '.concat(o?"":'
','\n\n
\n
\n ")),l=a.interaction;return l.options.find(t=>!t.hidden&&!t.classList.add("active")),l.type=()=>l.options.find(t=>t.classList.contains("active")),a};function B(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}class H{constructor(t){B(this,"_initializingActive",!0),B(this,"_recalc",!0),B(this,"_color",O()),B(this,"_lastColor",O()),B(this,"_swatchColors",[]),B(this,"_eventListener",{init:[],save:[],hide:[],show:[],clear:[],change:[],changestop:[],cancel:[],swatchselect:[]}),this.options=t=Object.assign({appClass:null,theme:"classic",useAsButton:!1,disabled:!1,comparison:!0,closeOnScroll:!1,outputPrecision:0,lockOpacity:!1,autoReposition:!0,components:{interaction:{}},strings:{},swatches:null,inline:!1,sliders:null,default:"#42445a",defaultRepresentation:null,position:"bottom-middle",adjustableNumbers:!0,showAlways:!1,closeWithKey:"Escape"},t);const{swatches:e,components:o,theme:n,sliders:i,lockOpacity:r}=t;["nano","monolith"].includes(n)&&!i&&(t.sliders="h"),o.interaction||(o.interaction={});const{preview:s,opacity:c,hue:a,palette:l}=o;o.opacity=!r&&c,o.palette=l||s||c||a,this._preBuild(),this._buildComponents(),this._bindEvents(),this._finalBuild(),e&&e.length&&e.forEach(t=>this.addSwatch(t)),this._nanopop=P({reference:this._root.button,el:this._root.app});const{app:p}=this._root,u=this;requestAnimationFrame(function e(){if(!p.offsetWidth&&p.parentElement!==document.body)return requestAnimationFrame(e);u.setColor(t.default),u._rePositioningPicker(),t.defaultRepresentation&&(u._representation=t.defaultRepresentation,u.setColorRepresentation(u._representation)),t.showAlways&&u.show(),u._initializingActive=!1,u._emit("init")})}_preBuild(){const t=this.options;"string"==typeof t.el&&(t.el=t.el.split(/>>/g).reduce((t,e,o,n)=>(t=t.querySelector(e),ot._emit("changestop",t),onchange(o,n){if(!e.palette)return;const{_color:i,_root:r,options:s}=t;t._recalc&&(i.s=100*o,i.v=100-100*n,i.v<0&&(i.v=0),t._updateOutput());const c=i.toRGBA().toString(0);this.element.style.background=c,this.wrapper.style.background="\n linear-gradient(to top, rgba(0, 0, 0, ".concat(i.a,"), transparent),\n linear-gradient(to left, hsla(").concat(i.h,", 100%, 50%, ").concat(i.a,"), rgba(255, 255, 255, ").concat(i.a,"))\n "),s.comparison||(r.button.style.color=c,s.useAsButton||(r.preview.lastColor.style.color=c));const a=i.toHEXA().toString();for(const e of t._swatchColors){const{el:t,color:o}=e;t.classList[a===o.toHEXA().toString()?"add":"remove"]("pcr-active")}r.preview.currentColor.style.color=c,t.options.comparison||r.button.classList.remove("clear")}}),hue:E({lock:"v"===i?"h":"v",element:t._root.hue.picker,wrapper:t._root.hue.slider,onstop:()=>t._emit("changestop",t),onchange(o){e.hue&&e.palette&&(t._recalc&&(t._color.h=360*o),this.element.style.backgroundColor="hsl(".concat(t._color.h,", 100%, 50%)"),r.palette.trigger())}}),opacity:E({lock:"v"===n?"h":"v",element:t._root.opacity.picker,wrapper:t._root.opacity.slider,onstop:()=>t._emit("changestop",t),onchange(o){e.opacity&&e.palette&&(t._recalc&&(t._color.a=Math.round(100*o)/100),this.element.style.background="rgba(0, 0, 0, ".concat(t._color.a,")"),r.palette.trigger())}}),selectable:L({elements:t._root.interaction.options,className:"active",onchange(e){t._representation=e.target.getAttribute("data-type").toUpperCase(),t._recalc&&t._updateOutput()}})};this._components=r}_bindEvents(){const{_root:t,options:e}=this,o=[c(t.interaction.clear,"click",()=>this._clearColor()),c([t.interaction.cancel,t.preview.lastColor],"click",()=>{this._emit("cancel",this),this.setHSVA(...this._lastColor.toHSVA(),!0)}),c(t.interaction.save,"click",()=>{!this.applyColor()&&!e.showAlways&&this.hide()}),c(t.interaction.result,["keyup","input"],t=>{this.setColor(t.target.value,!0)&&!this._initializingActive&&this._emit("change",this._color),t.stopImmediatePropagation()}),c(t.interaction.result,["focus","blur"],t=>{this._recalc="blur"===t.type,this._recalc&&this._updateOutput()}),c([t.palette.palette,t.palette.picker,t.hue.slider,t.hue.picker,t.opacity.slider,t.opacity.picker],["mousedown","touchstart"],()=>this._recalc=!0)];if(!e.showAlways){const n=e.closeWithKey;o.push(c(t.button,"click",()=>this.isOpen()?this.hide():this.show()),c(document,"keyup",t=>this.isOpen()&&(t.key===n||t.code===n)&&this.hide()),c(document,["touchstart","mousedown"],e=>{this.isOpen()&&!d(e).some(e=>e===t.app||e===t.button)&&this.hide()},{capture:!0}))}if(e.adjustableNumbers){const e={rgba:[255,255,255,1],hsva:[360,100,100,1],hsla:[360,100,100,1],cmyk:[100,100,100,100]};f(t.interaction.result,(t,o,n)=>{const i=e[this.getColorRepresentation().toLowerCase()];if(i){const e=i[n],r=t+(e>=100?1e3*o:o);return r<=0?0:Number((r{n.isOpen()&&(e.closeOnScroll&&n.hide(),null===t?(t=setTimeout(()=>t=null,100),requestAnimationFrame(function e(){n._rePositioningPicker(),null!==t&&requestAnimationFrame(e)})):(clearTimeout(t),t=setTimeout(()=>t=null,100)))},{capture:!0}))}this._eventBindings=o}_rePositioningPicker(){const{options:t}=this;if(!t.inline){const{app:e}=this._root;matchMedia("(max-width: 576px)").matches?Object.assign(e.style,{margin:"auto",height:"".concat(e.getBoundingClientRect().height,"px"),top:0,bottom:0,left:0,right:0}):(Object.assign(e.style,{margin:null,right:null,top:null,bottom:null,left:null,height:null}),this._nanopop.update(t.position))}}_updateOutput(){const{_root:t,_color:e,options:o}=this;if(t.interaction.type()){const n="to".concat(t.interaction.type().getAttribute("data-type"));t.interaction.result.value="function"==typeof e[n]?e[n]().toString(o.outputPrecision):""}!this._initializingActive&&this._recalc&&this._emit("change",e)}_clearColor(t=!1){const{_root:e,options:o}=this;o.useAsButton||(e.button.style.color="rgba(0, 0, 0, 0.15)"),e.button.classList.add("clear"),o.showAlways||this.hide(),this._initializingActive||t||(this._emit("save",null),this._emit("clear",this))}_parseLocalColor(t){const{values:e,type:o,a:n}=S(t),{lockOpacity:i}=this.options,r=void 0!==n&&1!==n;return e&&3===e.length&&(e[3]=void 0),{values:!e||i&&r?null:e,type:o}}_emit(t,...e){this._eventListener[t].forEach(t=>t(...e,this))}on(t,e){return"function"==typeof e&&"string"==typeof t&&t in this._eventListener&&this._eventListener[t].push(e),this}off(t,e){const o=this._eventListener[t];if(o){const t=o.indexOf(e);~t&&o.splice(t,1)}return this}addSwatch(t){const{values:e}=this._parseLocalColor(t);if(e){const{_swatchColors:t,_root:o}=this,n=O(...e),i=p(''));return o.swatches.appendChild(i),t.push({el:i,color:n}),this._eventBindings.push(c(i,"click",()=>{this.setHSVA(...n.toHSVA(),!0),this._emit("swatchselect",n),this._emit("change",n)})),!0}return!1}removeSwatch(t){const e=this._swatchColors[t];if(e){const{el:o}=e;return this._root.swatches.removeChild(o),this._swatchColors.splice(t,1),!0}return!1}applyColor(t=!1){const{preview:e,button:o}=this._root,n=this._color.toRGBA().toString();e.lastColor.style.color=n,this.options.useAsButton||(o.style.color=n),o.classList.remove("clear"),this._lastColor=this._color.clone(),this._initializingActive||t||this._emit("save",this._color)}destroy(){this._eventBindings.forEach(t=>a(...t)),Object.keys(this._components).forEach(t=>this._components[t].destroy())}destroyAndRemove(){this.destroy();const{root:t,app:e}=this._root;t.parentElement&&t.parentElement.removeChild(t),e.parentElement.removeChild(e),Object.keys(this).forEach(t=>this[t]=null)}hide(){return this._root.app.classList.remove("visible"),this._emit("hide",this),this}show(){return this.options.disabled||(this._root.app.classList.add("visible"),this._rePositioningPicker(),this._emit("show",this)),this}isOpen(){return this._root.app.classList.contains("visible")}setHSVA(t=360,e=0,o=0,n=1,i=!1){const r=this._recalc;if(this._recalc=!1,t<0||t>360||e<0||e>100||o<0||o>100||n<0||n>1)return!1;this._color=O(t,e,o,n);const{hue:s,opacity:c,palette:a}=this._components;return s.update(t/360),c.update(n),a.update(e/100,1-o/100),i||this.applyColor(),r&&this._updateOutput(),this._recalc=r,!0}setColor(t,e=!1){if(null===t)return this._clearColor(e),!0;const{values:o,type:n}=this._parseLocalColor(t);if(o){const t=n.toUpperCase(),{options:i}=this._root.interaction,r=i.find(e=>e.getAttribute("data-type")===t);if(r&&!r.hidden)for(const t of i)t.classList[t===r?"add":"remove"]("active");return this.setColorRepresentation(t),this.setHSVA(...o,e)}return!1}setColorRepresentation(t){return t=t.toUpperCase(),!!this._root.interaction.options.find(e=>e.getAttribute("data-type").startsWith(t)&&!e.click())}getColorRepresentation(){return this._representation}getColor(){return this._color}getRoot(){return this._root}disable(){return this.hide(),this.options.disabled=!0,this._root.button.classList.add("disabled"),this}enable(){return this.options.disabled=!1,this._root.button.classList.remove("disabled"),this}}H.utils=n,H.libs={HSVaColor:O,Moveable:E,Nanopop:P,Selectable:L},H.create=t=>new H(t),H.version="1.3.0";e.default=H}]).default});
+//# sourceMappingURL=pickr.min.js.map
\ No newline at end of file
diff --git a/vendor/assets/javascripts/pickr.min.js.map b/vendor/assets/javascripts/pickr.min.js.map
new file mode 100644
index 00000000..eed20eca
--- /dev/null
+++ b/vendor/assets/javascripts/pickr.min.js.map
@@ -0,0 +1 @@
+{"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/template.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","HTMLCollection","NodeList","Array","from","isArray","el","ev","capture","slice","arguments","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","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","alpha","values","a","split","join","raw","substring","HSVaColor","original","next","precision","toFixed","that","toHSVA","toString","toHSLA","toRGBA","toCMYK","rgb","hsvToCmyk","toHEXA","padStart","hsvToHex","toUpperCase","clone","clamp","Moveable","opt","assign","lock","onchange","onstop","_tapstart","_","_tapstop","_tapmove","cache","wrapper","getBoundingClientRect","x","touch","touches","clientX","clientY","left","width","top","height","style","offsetWidth","offsetHeight","cx","cy","trigger","update","destroy","Selectable","className","onTap","forEach","classList","Nanopop","reference","padding","vBehaviour","start","middle","end","hBehaviour","right","bottom","getInfo","pos","cached","position","variant","isVertical","rb","eb","positions","vertical","variants","leastApplied","apply","bevs","vars","styleprop","adder","win","ch","sv","rot","v2Ok","v1Ok","components","strings","useAsButton","inline","appClass","theme","lockOpacity","lo","hidden","palette","preview","hue","opacity","interaction","input","save","cancel","clear","int","find","add","contains","Pickr","constructor","init","hide","show","change","changestop","swatchselect","this","disabled","comparison","closeOnScroll","outputPrecision","autoReposition","swatches","sliders","default","defaultRepresentation","adjustableNumbers","showAlways","closeWithKey","includes","_preBuild","_buildComponents","_bindEvents","_finalBuild","color","addSwatch","_nanopop","_root","button","app","requestAnimationFrame","cb","body","setColor","_rePositioningPicker","_representation","setColorRepresentation","_initializingActive","_emit","reduce","pv","cv","ci","querySelector","shadowRoot","buildPickr","appendChild","removeChild","parent","nextSibling","insertBefore","remove","parentNode","replaceChild","disable","transition","lastColor","inst","cs","repeat","so","sh","picker","_color","_recalc","_updateOutput","cssRGBaString","background","_swatchColors","currentColor","slider","backgroundColor","selectable","_components","eventBindings","_clearColor","setHSVA","_lastColor","applyColor","result","stopImmediatePropagation","ck","isOpen","code","some","ranges","step","range","getColorRepresentation","nv","toPrecision","timeout","setTimeout","rs","clearTimeout","_eventBindings","matchMedia","matches","margin","silent","_parseLocalColor","alphaMakesAChange","event","args","_eventListener","callBacks","indexOf","splice","removeSwatch","swatchColor","destroyAndRemove","recalc","string","utype","startsWith","click","getColor","getRoot","enable","utils","libs","version"],"mappings":";CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAe,MAAID,IAEnBD,EAAY,MAAIC,IARlB,CASGK,OAAQ,WACX,O,YCTE,IAAIC,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUP,QAGnC,IAAIC,EAASI,EAAiBE,GAAY,CACzCC,EAAGD,EACHE,GAAG,EACHT,QAAS,IAUV,OANAU,EAAQH,GAAUI,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAASM,GAG/DL,EAAOQ,GAAI,EAGJR,EAAOD,QA0Df,OArDAM,EAAoBM,EAAIF,EAGxBJ,EAAoBO,EAAIR,EAGxBC,EAAoBQ,EAAI,SAASd,EAASe,EAAMC,GAC3CV,EAAoBW,EAAEjB,EAASe,IAClCG,OAAOC,eAAenB,EAASe,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEV,EAAoBgB,EAAI,SAAStB,GACX,oBAAXuB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAenB,EAASuB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAenB,EAAS,aAAc,CAAEyB,OAAO,KAQvDnB,EAAoBoB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQnB,EAAoBmB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFAxB,EAAoBgB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOnB,EAAoBQ,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRvB,EAAoB2B,EAAI,SAAShC,GAChC,IAAIe,EAASf,GAAUA,EAAO2B,WAC7B,WAAwB,OAAO3B,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAK,EAAoBQ,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRV,EAAoBW,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG7B,EAAoBgC,EAAI,GAIjBhC,EAAoBA,EAAoBiC,EAAI,G,4gCC1E9C,MAAMC,EAAKC,EAAcT,KAAK,KAAM,oBAU9BU,EAAMD,EAAcT,KAAK,KAAM,uBAE5C,SAASS,EAAcE,EAAQC,EAAUC,EAAQC,EAAIC,EAAU,IAGvDH,aAAoBI,gBAAkBJ,aAAoBK,SAC1DL,EAAWM,MAAMC,KAAKP,GACdM,MAAME,QAAQR,KACtBA,EAAW,CAACA,IAGXM,MAAME,QAAQP,KACfA,EAAS,CAACA,IAGd,IAAK,MAAMQ,KAAMT,EACb,IAAK,MAAMU,KAAMT,EACbQ,EAAGV,GAAQW,EAAIR,EAAf,GAAoBS,SAAS,GAAUR,IAI/C,OAAOG,MAAMd,UAAUoB,MAAM7C,KAAK8C,UAAW,GAQ1C,SAASC,EAAwBC,GACpC,MAAMC,EAAMC,SAASC,cAAc,OAEnC,OADAF,EAAIG,UAAYJ,EAAKK,OACdJ,EAAIK,kBASR,SAASC,EAAgBb,EAAItC,GAChC,MAAMU,EAAQ4B,EAAGc,aAAapD,GAE9B,OADAsC,EAAGa,gBAAgBnD,GACZU,EAiBJ,SAAS2C,EAAmBC,GA2B/B,OAxBA,SAASC,EAAQC,EAASC,EAAO,IAG7B,MAAMC,EAAMP,EAAgBK,EAAS,QAC/BxC,EAAMmC,EAAgBK,EAAS,QAC/BG,EAAUD,EAAOD,EAAKC,GAAO,GAAMD,EAGzCzC,IAAQyC,EAAKzC,GAAOwC,GACpB,IAAK,MAAMI,KAASzB,MAAMC,KAAKoB,EAAQK,UAAW,CAC9C,MAAMC,EAAMX,EAAgBS,EAAO,QAC7BG,EAAMR,EAAQK,EAAOE,EAAM,GAAKH,GAElCG,IAGCH,EAAQG,KAASH,EAAQG,GAAO,KAC5BE,KAAK7D,OAAO8D,KAAKF,GAAKG,OAASH,EAAMH,GAIlD,OAAOH,EAGJF,CAAQZ,EAAwBW,IAQpC,SAASa,EAAUC,GACtB,IAAIC,EAAOD,EAAIC,MAASD,EAAIE,cAAgBF,EAAIE,eAChD,GAAID,EAAM,OAAOA,EAEjB,IAAI/B,EAAK8B,EAAIG,OAAOC,cAEpB,IADAH,EAAO,CAACD,EAAIG,OAAQjC,GACbA,EAAKA,EAAGkC,eAAeH,EAAKL,KAAK1B,GAGxC,OADA+B,EAAKL,KAAKlB,SAAUzD,QACbgF,EAQJ,SAASI,EAAuBnC,EAAIoC,EAASC,IAAKA,IAErD,SAASC,EAAaC,GAClB,MAAMC,EAAO,CAAC,KAAO,IAAM,IAAMC,OAAOF,EAAEG,UAAwB,EAAZH,EAAEI,WAAiBJ,EAAEK,OAAS,EAAI,GAAK,GAE7F,IAAIC,EAAQ,EACRxD,EAAMW,EAAG8C,eACb9C,EAAG5B,MAAQ4B,EAAG5B,MAAM2E,QAAQ,UAAW,CAACV,EAAGlF,IAGnCA,GAAKkC,GAAOlC,EAAIkF,EAAET,QAAUvC,GAC5BA,EAAMlC,EACCiF,EAAOK,OAAOJ,GAAIG,EAAKK,KAGlCA,IACOR,IAGXrC,EAAGgD,QACHhD,EAAGiD,kBAAkB5D,EAAKA,GAG1BkD,EAAEW,iBACFlD,EAAGmD,cAAc,IAAIC,MAAM,UAI/BjE,EAAGa,EAAI,QAAS,IAAMb,EAAGpC,OAAQ,QAASuF,EAAc,CAACe,SAAS,KAClElE,EAAGa,EAAI,OAAQ,IAAMX,EAAItC,OAAQ,QAASuF,IC/J9C,MAAM,IAACgB,EAAD,IAAMC,EAAN,MAAWC,EAAX,MAAkBC,GAASC,KA0B1B,SAASC,EAASC,EAAG1E,EAAGmD,GAE3BnD,GAAK,IACLmD,GAAK,IAEL,MAAMlF,EAAIqG,EAJVI,EAAKA,EAAI,IAAO,GAMVC,EAAID,EAAIzG,EACR8B,EAAIoD,GAAK,EAAInD,GACb4E,EAAIzB,GAAK,EAAIwB,EAAI3E,GACjBb,EAAIgE,GAAK,GAAK,EAAIwB,GAAK3E,GAEvB6E,EAAM5G,EAAI,EAKhB,MAAO,CACC,IALE,CAACkF,EAAGyB,EAAG7E,EAAGA,EAAGZ,EAAGgE,GAAG0B,GAMrB,IALE,CAAC1F,EAAGgE,EAAGA,EAAGyB,EAAG7E,EAAGA,GAAG8E,GAMrB,IALE,CAAC9E,EAAGA,EAAGZ,EAAGgE,EAAGA,EAAGyB,GAAGC,IA0D1B,SAASC,EAASJ,EAAG1E,EAAGmD,GAG3B,MAAMjF,GAAK,GAFX8B,GAAK,OAAKmD,GAAK,KAES,EAYxB,OAVU,IAANjF,IAEI8B,EADM,IAAN9B,EACI,EACGA,EAAI,GACP8B,EAAImD,GAAS,EAAJjF,GAET8B,EAAImD,GAAK,EAAQ,EAAJjF,IAIlB,CACHwG,EACI,IAAJ1E,EACI,IAAJ9B,GAWR,SAAS6G,EAAShG,EAAGiG,EAAGC,GAGpB,IAAIP,EAAG1E,EAAGmD,EACV,MAAM+B,EAASd,EAHfrF,GAAK,IAAKiG,GAAK,IAAKC,GAAK,KAInBE,EAASd,EAAItF,EAAGiG,EAAGC,GACnBG,EAAQD,EAASD,EAGvB,GAAc,IAAVE,EACAV,EAAI1E,EAAI,MACL,CACHA,EAAIoF,EAAQD,EACZ,MAAME,IAAQF,EAASpG,GAAK,EAAMqG,EAAQ,GAAMA,EAC1CE,IAAQH,EAASH,GAAK,EAAMI,EAAQ,GAAMA,EAC1CG,IAAQJ,EAASF,GAAK,EAAMG,EAAQ,GAAMA,EAE5CrG,IAAMoG,EACNT,EAAIa,EAAKD,EACFN,IAAMG,EACbT,EAAK,EAAI,EAAKW,EAAKE,EACZN,IAAME,IACbT,EAAK,EAAI,EAAKY,EAAKD,GAGnBX,EAAI,EACJA,GAAK,EACEA,EAAI,IACXA,GAAK,GAIb,MAAO,CACC,IAAJA,EACI,IAAJ1E,EACI,KA3BRmD,EAAIgC,IAuCR,SAASK,EAAUlH,EAAGD,EAAGoH,EAAGC,GAUxB,OARArH,GAAK,IACLoH,GAAK,IAOE,IAAIV,EAJ+B,KAA/B,EAAIX,EAAI,GALnB9F,GAAK,MAKsB,GAF3BoH,GAAK,MAE+BA,IACM,KAA/B,EAAItB,EAAI,EAAG/F,GAAK,EAAIqH,GAAKA,IACM,KAA/B,EAAItB,EAAI,EAAGqB,GAAK,EAAIC,GAAKA,MAYxC,SAASC,EAASjB,EAAG1E,EAAG9B,GAOpB,OANA8B,GAAK,IAME,CAAC0E,EAFI,GAFZ1E,IADA9B,GAAK,KACI,GAAMA,EAAI,EAAIA,IAEFA,EAAI8B,GAAM,IACX,KAAT9B,EAAI8B,IASnB,SAAS4F,EAASC,GACd,OAAOd,KAAYc,EAAIC,MAAM,SAASC,IAAI5C,GAAK6C,SAAS7C,EAAG,MASxD,SAAS8C,EAAYnE,GAGxBA,EAAMA,EAAIgE,MAAM,eAxNpB,SAA0BtH,GAGtB,GAA2B,UAAvBA,EAAK0H,cACL,MAAO,OAGX,MAAMC,EAAM7E,SAASC,cAAc,UAAU6E,WAAW,MAExD,OADAD,EAAIE,UAAY7H,EACS,SAAlB2H,EAAIE,UAAuB,KAAOF,EAAIE,UA+MZC,CAAiBxE,GAAOA,EAGzD,MAAMyE,EAAQ,CACVC,KAAM,6DACNC,KAAM,wEACNC,KAAM,wEACNC,KAAM,wEACNC,KAAM,4DASJC,EAAWC,GAASA,EAAMf,IAAI5C,GAAK,oBAAoB4D,KAAK5D,GAAKI,OAAOJ,QAAK6D,GAEnF,IAAIlB,EACJmB,EAAS,IAAK,MAAMC,KAAQX,EAAO,CAG/B,KAAMT,EAAQS,EAAMW,GAAMC,KAAKrF,IAC3B,SAGJ,MAAMsF,IAAUtB,EAAM,GAGtB,OAAQoB,GACJ,IAAK,OAAQ,CACT,MAAO,CAAE5I,EAAGD,EAAGoH,EAAGC,GAAKmB,EAASf,GAEhC,GAAIxH,EAAI,KAAOD,EAAI,KAAOoH,EAAI,KAAOC,EAAI,IACrC,MAAMuB,EAEV,MAAO,CAACI,OAAQ7B,EAAUlH,EAAGD,EAAGoH,EAAGC,GAAIwB,QAE3C,IAAK,OAAQ,CACT,MAAO,CAAC,CAAF,CAAOnI,EAAGiG,EAAGC,EAAGqC,GAAKT,EAASf,GAEpC,GAAI/G,EAAI,KAAOiG,EAAI,KAAOC,EAAI,KAAOqC,EAAI,GAAKA,EAAI,GAAMF,KAAWE,EAC/D,MAAML,EAEV,MAAO,CAACI,OAAQ,IAAItC,EAAShG,EAAGiG,EAAGC,GAAIqC,GAAIA,IAAGJ,QAElD,IAAK,OAAQ,CACT,IAAK,CAAErB,GAAOC,EAEK,IAAfD,EAAInD,QAA+B,IAAfmD,EAAInD,SACxBmD,EAAMA,EAAI0B,MAAM,IAAIxB,IAAI5C,GAAKA,EAAIA,GAAGqE,KAAK,KAG7C,MAAMC,EAAM5B,EAAI6B,UAAU,EAAG,GAC7B,IAAIJ,EAAIzB,EAAI6B,UAAU,GAKtB,OAFAJ,EAAIA,EAAKtB,SAASsB,EAAG,IAAM,SAAON,EAE3B,CAACK,OAAQ,IAAIzB,EAAS6B,GAAMH,GAAIA,IAAGJ,QAE9C,IAAK,OAAQ,CACT,MAAO,CAAC,CAAF,CAAOxC,EAAG1E,EAAG9B,EAAGoJ,GAAKT,EAASf,GAEpC,GAAIpB,EAAI,KAAO1E,EAAI,KAAO9B,EAAI,KAAOoJ,EAAI,GAAKA,EAAI,GAAMF,KAAWE,EAC/D,MAAML,EAEV,MAAO,CAACI,OAAQ,IAAI1B,EAASjB,EAAG1E,EAAG9B,GAAIoJ,GAAIA,IAAGJ,QAElD,IAAK,OAAQ,CACT,MAAO,CAAC,CAAF,CAAOxC,EAAG1E,EAAGmD,EAAGmE,GAAKT,EAASf,GAEpC,GAAIpB,EAAI,KAAO1E,EAAI,KAAOmD,EAAI,KAAOmE,EAAI,GAAKA,EAAI,GAAMF,KAAWE,EAC/D,MAAML,EAEV,MAAO,CAACI,OAAQ,CAAC3C,EAAG1E,EAAGmD,EAAGmE,GAAIA,IAAGJ,UAK7C,MAAO,CAACG,OAAQ,KAAMH,KAAM,MC3SzB,SAASS,EAAUjD,EAAI,EAAG1E,EAAI,EAAGmD,EAAI,EAAGmE,EAAI,GAC/C,MAAMpE,EAAS,CAAC0E,EAAUC,IAAS,CAACC,GAAY,IACrCD,GAAMC,EAAYF,EAAS7B,IAAI5C,GAAKI,OAAOJ,EAAE4E,QAAQD,KAAeF,GAGzEI,EAAO,CACTtD,IAAG1E,IAAGmD,IAAGmE,IAETW,SACI,MAAMtB,EAAO,CAACqB,EAAKtD,EAAGsD,EAAKhI,EAAGgI,EAAK7E,EAAG6E,EAAKV,GAE3C,OADAX,EAAKuB,SAAWhF,EAAOyD,EAAMrE,GAAO,QAAJ,OAAYA,EAAI,GAAhB,aAAuBA,EAAI,GAA3B,cAAmCA,EAAI,GAAvC,cAA+C0F,EAAKV,EAApD,MACzBX,GAGXwB,SACI,MAAMzB,EAAO,IAAI5B,EAASkD,EAAKtD,EAAGsD,EAAKhI,EAAGgI,EAAK7E,GAAI6E,EAAKV,GAExD,OADAZ,EAAKwB,SAAWhF,EAAOwD,EAAMpE,GAAO,QAAJ,OAAYA,EAAI,GAAhB,aAAuBA,EAAI,GAA3B,cAAmCA,EAAI,GAAvC,cAA+C0F,EAAKV,EAApD,MACzBZ,GAGX0B,SACI,MAAM3B,EAAO,IAAIhC,EAASuD,EAAKtD,EAAGsD,EAAKhI,EAAGgI,EAAK7E,GAAI6E,EAAKV,GAExD,OADAb,EAAKyB,SAAWhF,EAAOuD,EAAMnE,GAAO,QAAJ,OAAYA,EAAI,GAAhB,aAAuBA,EAAI,GAA3B,aAAkCA,EAAI,GAAtC,aAA6C0F,EAAKV,EAAlD,MACzBb,GAGX4B,SACI,MAAM7B,EDsCX,SAAmB9B,EAAG1E,EAAGmD,GAC5B,MAAMmF,EAAM7D,EAASC,EAAG1E,EAAGmD,GACrBpE,EAAIuJ,EAAI,GAAK,IACbtD,EAAIsD,EAAI,GAAK,IACbrD,EAAIqD,EAAI,GAAK,IAEnB,IAAI5C,EAAGpH,EAAGD,EAAGoH,EAQb,MAAO,CACC,KALRnH,EAAU,KAFVoH,EAAItB,EAAI,EAAIrF,EAAG,EAAIiG,EAAG,EAAIC,IAEZ,GAAK,EAAIlG,EAAI2G,IAAM,EAAIA,IAM7B,KALRrH,EAAU,IAANqH,EAAU,GAAK,EAAIV,EAAIU,IAAM,EAAIA,IAM7B,KALRD,EAAU,IAANC,EAAU,GAAK,EAAIT,EAAIS,IAAM,EAAIA,IAM7B,IAAJA,GCxDiB6C,CAAUP,EAAKtD,EAAGsD,EAAKhI,EAAGgI,EAAK7E,GAE5C,OADAqD,EAAK0B,SAAWhF,EAAOsD,EAAMlE,GAAO,QAAJ,OAAYA,EAAI,GAAhB,cAAwBA,EAAI,GAA5B,cAAoCA,EAAI,GAAxC,cAAgDA,EAAI,GAApD,OACzBkE,GAGXgC,SACI,MAAM3C,EDmBX,SAAkBnB,EAAG1E,EAAGmD,GAC3B,OAAOsB,EAASC,EAAG1E,EAAGmD,GAAG4C,IAAI5C,GACzBoB,EAAMpB,GAAG+E,SAAS,IAAIO,SAAS,EAAG,MCrBlBC,CAASV,EAAKtD,EAAGsD,EAAKhI,EAAGgI,EAAK7E,GAIpCiE,EAAQY,EAAKV,GAAK,EAAI,GAAK/D,QAAiB,IAATyE,EAAKV,GAASS,QAAQ,IAC1DG,SAAS,IACTS,cAAcF,SAAS,EAAG,KAI/B,OAFArB,GAASvB,EAAIrD,KAAK4E,GAClBvB,EAAIqC,SAAW,IAAM,IAAN,OAAUrC,EAAI2B,KAAK,IAAImB,eAC/B9C,GAGX+C,MAAO,IAAMjB,EAAUK,EAAKtD,EAAGsD,EAAKhI,EAAGgI,EAAK7E,EAAG6E,EAAKV,IAGxD,OAAOU,ECrDX,MAAMa,EAAQ1F,GAAKqB,KAAKH,IAAIG,KAAKJ,IAAIjB,EAAG,GAAI,GAC7B,SAAS2F,EAASC,GAE7B,MAAMf,EAAO,CAGTxH,QAAS7B,OAAOqK,OAAO,CACnBC,KAAM,KACNC,SAAU,IAAM,EAChBC,OAAQ,IAAM,GACfJ,GAEHK,UAAUxG,GACNyG,EAAK/H,SAAU,CAAC,UAAW,WAAY,eAAgB0G,EAAKsB,UAC5DD,EAAK/H,SAAU,CAAC,YAAa,aAAc0G,EAAKuB,UAGhD3G,EAAIoB,iBAGJgE,EAAKuB,SAAS3G,IAGlB2G,SAAS3G,GACL,MAAOpC,SAAS,KAACyI,GAAX,MAAkBO,GAASxB,GAC3B,QAAChG,EAAD,QAAUyH,GAAWjJ,EACrByE,EAAIwE,EAAQC,wBAElB,IAAIC,EAAI,EAAGlE,EAAI,EACf,GAAI7C,EAAK,CACL,MAAMgH,EAAQhH,GAAOA,EAAIiH,SAAWjH,EAAIiH,QAAQ,GAChDF,EAAI/G,GAAOgH,GAAShH,GAAKkH,QAAU,EACnCrE,EAAI7C,GAAOgH,GAAShH,GAAKmH,QAAU,EAG/BJ,EAAI1E,EAAE+E,KAAML,EAAI1E,EAAE+E,KACbL,EAAI1E,EAAE+E,KAAO/E,EAAEgF,QAAON,EAAI1E,EAAE+E,KAAO/E,EAAEgF,OAC1CxE,EAAIR,EAAEiF,IAAKzE,EAAIR,EAAEiF,IACZzE,EAAIR,EAAEiF,IAAMjF,EAAEkF,SAAQ1E,EAAIR,EAAEiF,IAAMjF,EAAEkF,QAG7CR,GAAK1E,EAAE+E,KACPvE,GAAKR,EAAEiF,SACAV,IACPG,EAAIH,EAAMG,EAAI1E,EAAEgF,MAChBxE,EAAI+D,EAAM/D,EAAIR,EAAEkF,QAGP,MAATlB,IACAjH,EAAQoI,MAAMJ,KAAd,eAA6BL,EAAI1E,EAAEgF,MAAQ,IAA3C,eAAqDjI,EAAQqI,YAAc,EAA3E,QAGS,MAATpB,IACAjH,EAAQoI,MAAMF,IAAd,eAA4BzE,EAAIR,EAAEkF,OAAS,IAA3C,eAAqDnI,EAAQsI,aAAe,EAA5E,QAGJtC,EAAKwB,MAAQ,CAACG,EAAGA,EAAI1E,EAAEgF,MAAOxE,EAAGA,EAAIR,EAAEkF,QACvC,MAAMI,EAAK1B,EAAMc,EAAIF,EAAQY,aACvBG,EAAK3B,EAAMpD,EAAIgE,EAAQa,cAE7B,OAAQrB,GACJ,IAAK,IACD,OAAOzI,EAAQ0I,SAASqB,GAC5B,IAAK,IACD,OAAO/J,EAAQ0I,SAASsB,GAC5B,QACI,OAAOhK,EAAQ0I,SAASqB,EAAIC,KAIxClB,WACItB,EAAKxH,QAAQ2I,SACbE,EAAM/H,SAAU,CAAC,UAAW,WAAY,eAAgB0G,EAAKsB,UAC7DD,EAAM/H,SAAU,CAAC,YAAa,aAAc0G,EAAKuB,WAGrDkB,UACIzC,EAAKuB,YAGTmB,OAAOf,EAAI,EAAGlE,EAAI,GACd,MAAM,KAACuE,EAAD,IAAOE,EAAP,MAAYD,EAAZ,OAAmBE,GAAUnC,EAAKxH,QAAQiJ,QAAQC,wBAE9B,MAAtB1B,EAAKxH,QAAQyI,OACbxD,EAAIkE,GAGR3B,EAAKuB,SAAS,CACVO,QAASE,EAAOC,EAAQN,EACxBI,QAASG,EAAMC,EAAS1E,KAIhCkF,UACI,MAAM,QAACnK,EAAD,UAAU4I,GAAapB,EAC7BqB,EAAM,CAAC7I,EAAQiJ,QAASjJ,EAAQwB,SAAU,YAAaoH,GACvDC,EAAM,CAAC7I,EAAQiJ,QAASjJ,EAAQwB,SAAU,aAAcoH,EAAW,CAC/DjF,SAAS,OAMf,QAAC3D,EAAD,UAAU4I,GAAapB,EAM7B,OALAqB,EAAK,CAAC7I,EAAQiJ,QAASjJ,EAAQwB,SAAU,YAAaoH,GACtDC,EAAK,CAAC7I,EAAQiJ,QAASjJ,EAAQwB,SAAU,aAAcoH,EAAW,CAC9DjF,SAAS,IAGN6D,EC7GI,SAAS4C,EAAW7B,EAAM,IACrCA,EAAMpK,OAAOqK,OAAO,CAChBE,SAAU,IAAM,EAChB2B,UAAW,GACXxK,SAAU,IACX0I,GAEH,MAAM+B,EAAQzB,EAAKN,EAAI1I,SAAU,QAASuC,IACtCmG,EAAI1I,SAAS0K,QAAQ1H,GACjBA,EAAE2H,UAAUpI,EAAIG,SAAWM,EAAI,MAAQ,UAAU0F,EAAI8B,YAGzD9B,EAAIG,SAAStG,KAGjB,MAAO,CACH+H,QAAS,IAAMtB,KAASyB,ICTjB,SAASG,GAAQ,GAACnK,EAAD,UAAKoK,EAAL,QAAgBC,EAAU,IACtD,MAAMC,EAAa,CAACC,MAAO,MAAOC,OAAQ,MAAOC,IAAK,OAChDC,EAAa,CAACtB,IAAK,OAAQuB,MAAO,OAAQC,OAAQ,OAAQ1B,KAAM,QAEhE2B,EAAU,EAAEnC,EAAQ,KAAO,CAACoC,EAAKC,EAASrC,EAAMoC,MAClD,GAAIC,EAAQ,OAAOA,EACnB,MAAOC,EAAUC,EAAU,UAAYH,EAAIrE,MAAM,KAC3CyE,EAA2B,QAAbF,GAAmC,WAAbA,EAE1C,OAAOtC,EAAMoC,GAAO,CAChBE,WACAC,UACAC,eARQ,GAYhB,MAAO,CACHtB,OAAOkB,GACH,MAAM,SAACE,EAAD,QAAWC,EAAX,WAAoBC,GAAcL,EAAQC,GAC1CK,EAAKf,EAAUxB,wBACfwC,EAAKpL,EAAG4I,wBAERyC,EAAYC,GAAYA,EAAW,CACrCjN,EAAG8M,EAAG/B,IAAMgC,EAAG/B,OAASgB,EACxBlG,EAAGgH,EAAGP,OAASP,GACf,CACApM,EAAGkN,EAAGR,MAAQN,EACdjN,EAAG+N,EAAGjC,KAAOkC,EAAGjC,MAAQkB,GAGtBkB,EAAWD,GAAYA,EAAW,CACpCpM,EAAGiM,EAAGjC,KAAOiC,EAAGhC,MAAQiC,EAAGjC,MAC3B5L,GAAK6N,EAAGjC,MAAQ,GAAMgC,EAAGjC,KAAOiC,EAAGhC,MAAQ,GAC3C5G,EAAG4I,EAAGjC,MACN,CACAhK,EAAGiM,EAAGP,OAASQ,EAAG/B,OAClB9L,EAAG4N,EAAGP,OAASO,EAAG9B,OAAS,EAAI+B,EAAG/B,OAAS,EAC3C9G,EAAG4I,EAAGP,OAASO,EAAG9B,QAGhBmC,EAAe,GAErB,SAASC,EAAMC,EAAMC,EAAMC,GACvB,MAAMN,EAAyB,QAAdM,EACXC,EAAQP,EAAWF,EAAG/B,OAAS+B,EAAGjC,MAClC2C,EAAM/O,OAAOuO,EAAW,cAAgB,cAE9C,IAAK,MAAMS,KAAML,EAAM,CACnB,MAAMrJ,EAAIsJ,EAAKI,GACTC,EAAKR,EAAaI,GAAb,UAA6BvJ,EAA7B,MAEX,GAAIA,EAAI,GAAMA,EAAIwJ,EAASC,EAEvB,OADA9L,EAAGsJ,MAAMsC,GAAaI,GACf,EAIf,OAAO,EAGX,IAAK,MAAMC,IAAO,CAACf,GAAaA,GAAa,CACzC,MAAMgB,EAAOT,EAAMf,EAAWM,GAAWK,EAAUY,GAAMA,EAAM,MAAQ,QACjEE,EAAOV,EAAMnB,EAAWW,GAAUM,EAASU,GAAMA,EAAM,OAAS,OAEtE,GAAIC,GAAQC,EACR,OAIRnM,EAAGsJ,MAAMJ,KAAOsC,EAAatC,KAC7BlJ,EAAGsJ,MAAMF,IAAMoC,EAAapC,MC7EzB,QAAEgD,WAAY5O,EAAG6O,QAASnN,EAAGoN,cAAaC,SAAQC,WAAUC,QAAOC,YAAaC,MAC3F,MAAMC,EAASxL,GAAOA,EAAM,GAAK,8BAE3B3E,EAAO8L,EAAA,6DAGP+D,EAAc,GAAK,mEAHZ,sDAKwBE,GAAY,GALpC,yBAKuDC,EALvD,aAKiEF,EAAS,0BAA4B,GALtG,mDAMsBK,EAAOpP,EAAEqP,SAN/B,wEAO2CD,EAAOpP,EAAEsP,SAPpD,scAiBuCF,EAAOpP,EAAEuP,KAjBhD,8NAsB2CH,EAAOpP,EAAEwP,SAtBpD,6NA4BoBxP,EAAEqP,QAAU,GAAK,YA5BrC,kGA8B2CD,EAAO/O,OAAO8D,KAAKnE,EAAEyP,aAAarL,QA9B7E,iGA+BoEgL,EAAOpP,EAAEyP,YAAYC,OA/BzF,2FAiC4DP,EAAK,MAAQ,OAjCzE,2BAiCkGC,EAAOpP,EAAEyP,YAAYlI,KAjCvH,yFAkC4D4H,EAAK,MAAQ,OAlCzE,2BAkCkGC,EAAOpP,EAAEyP,YAAYtH,MAlCvH,yFAmC4DgH,EAAK,MAAQ,OAnCzE,2BAmCkGC,EAAOpP,EAAEyP,YAAYrH,MAnCvH,yFAoC4D+G,EAAK,MAAQ,OApCzE,2BAoCkGC,EAAOpP,EAAEyP,YAAYpH,MApCvH,6GAqCgF+G,EAAOpP,EAAEyP,YAAYvH,MArCrG,uEAuCwCxG,EAAEiO,MAAQ,OAvClD,2BAuC2EP,EAAOpP,EAAEyP,YAAYE,MAvChG,yEAwC4CjO,EAAEkO,QAAU,SAxCxD,2BAwCmFR,EAAOpP,EAAEyP,YAAYG,QAxCxG,uEAyC0ClO,EAAEmO,OAAS,QAzCrD,2BAyC+ET,EAAOpP,EAAEyP,YAAYI,OAzCpG,4DA+CPC,EAAM7Q,EAAKwQ,YAOjB,OAJAK,EAAI5N,QAAQ6N,KAAK3P,IAAMA,EAAEgP,SAAWhP,EAAEsM,UAAUsD,IAAI,WAGpDF,EAAIlH,KAAO,IAAMkH,EAAI5N,QAAQ6N,KAAKhL,GAAKA,EAAE2H,UAAUuD,SAAS,WACrDhR,G,wHChDX,MAAMiR,EA0BFC,YAAY1F,GAAK,8BAvBK,GAuBL,kBApBP,GAoBO,gBAjBRpB,KAiBQ,oBAhBJA,KAgBI,uBAfD,IAeC,wBAZA,CACb+G,KAAM,GACNT,KAAM,GACNU,KAAM,GACNC,KAAM,GACNT,MAAO,GACPU,OAAQ,GACRC,WAAY,GACZZ,OAAQ,GACRa,aAAc,KAMdC,KAAKxO,QAAUuI,EAAMpK,OAAOqK,OAAO,CAC/BsE,SAAU,KACVC,MAAO,UACPH,aAAa,EACb6B,UAAU,EACVC,YAAY,EACZC,eAAe,EACfC,gBAAiB,EACjB5B,aAAa,EACb6B,gBAAgB,EAEhBnC,WAAY,CACRa,YAAa,IAGjBZ,QAAS,GACTmC,SAAU,KACVjC,QAAQ,EACRkC,QAAS,KAETC,QAAS,UACTC,sBAAuB,KACvB3D,SAAU,gBACV4D,mBAAmB,EACnBC,YAAY,EAEZC,aAAc,UACf7G,GAEH,MAAM,SAACuG,EAAD,WAAWpC,EAAX,MAAuBK,EAAvB,QAA8BgC,EAA9B,YAAuC/B,GAAezE,EAExD,CAAC,OAAQ,YAAY8G,SAAStC,KAAWgC,IACzCxG,EAAIwG,QAAU,KAIbrC,EAAWa,cACZb,EAAWa,YAAc,IAI7B,MAAM,QAACH,EAAD,QAAUE,EAAV,IAAmBD,EAAnB,QAAwBF,GAAWT,EACzCA,EAAWY,SAAYN,GAAeM,EACtCZ,EAAWS,QAAUA,GAAWC,GAAWE,GAAWD,EAGtDmB,KAAKc,YACLd,KAAKe,mBACLf,KAAKgB,cACLhB,KAAKiB,cAGDX,GAAYA,EAAS5M,QACrB4M,EAASvE,QAAQmF,GAASlB,KAAKmB,UAAUD,IAI7ClB,KAAKoB,SAAWnF,EAAQ,CACpBC,UAAW8D,KAAKqB,MAAMC,OACtBxP,GAAIkO,KAAKqB,MAAME,MAInB,MAAM,IAACA,GAAOvB,KAAKqB,MACbrI,EAAOgH,KACbwB,sBAAuB,SAASC,IAE5B,IAAKF,EAAIlG,aAAekG,EAAIvN,gBAAkB1B,SAASoP,KACnD,OAAOF,sBAAsBC,GAIjCzI,EAAK2I,SAAS5H,EAAIyG,SAClBxH,EAAK4I,uBAGD7H,EAAI0G,wBACJzH,EAAK6I,gBAAkB9H,EAAI0G,sBAC3BzH,EAAK8I,uBAAuB9I,EAAK6I,kBAIjC9H,EAAI4G,YACJ3H,EAAK4G,OAIT5G,EAAK+I,qBAAsB,EAC3B/I,EAAKgJ,MAAM,UAKnBlB,YACI,MAAM/G,EAAMiG,KAAKxO,QAGK,iBAAXuI,EAAIjI,KAGXiI,EAAIjI,GAAKiI,EAAIjI,GAAGyG,MAAM,OAAO0J,OAAO,CAACC,EAAIC,EAAIC,EAAI9J,KAC7C4J,EAAKA,EAAGG,cAAcF,GACfC,EAAK9J,EAAE5E,OAAS,EAAIwO,EAAGI,WAAaJ,GAC5C5P,WAKP0N,KAAKqB,MAAQkB,EAAWxI,GAGpBA,EAAIqE,cACJ4B,KAAKqB,MAAMC,OAASvH,EAAIjI,IAG5BQ,SAASoP,KAAKc,YAAYxC,KAAKqB,MAAM9S,MAGzC0S,cACI,MAAMlH,EAAMiG,KAAKxO,QACXjD,EAAOyR,KAAKqB,MAKlB,GAFA/O,SAASoP,KAAKe,YAAYlU,EAAKA,MAE3BwL,EAAIsE,OAAQ,CACZ,MAAMqE,EAAS3I,EAAIjI,GAAGkC,cAElB+F,EAAIjI,GAAG6Q,YACPD,EAAOE,aAAarU,EAAKgT,IAAKxH,EAAIjI,GAAG6Q,aAErCD,EAAOF,YAAYjU,EAAKgT,UAG5BjP,SAASoP,KAAKc,YAAYjU,EAAKgT,KAI9BxH,EAAIqE,YAIErE,EAAIsE,QACXtE,EAAIjI,GAAG+Q,SAFP9I,EAAIjI,GAAGgR,WAAWC,aAAaxU,EAAKA,KAAMwL,EAAIjI,IAM9CiI,EAAIkG,UACJD,KAAKgD,UAIJjJ,EAAImG,aACL3R,EAAK+S,OAAOlG,MAAM6H,WAAa,OAC1BlJ,EAAIqE,cACL7P,EAAKqQ,QAAQsE,UAAU9H,MAAM6H,WAAa,SAIlDjD,KAAKL,OAGToB,mBAGI,MAAMoC,EAAOnD,KACPoD,EAAKpD,KAAKxO,QAAQ0M,WAClBqC,GAAW4C,EAAK3R,QAAQ+O,SAAW,KAAK8C,OAAO,IAC9CC,EAAIC,GAAMhD,EAAQzJ,MAAM,YAAcyJ,EAAU,GAEjDrC,EAAa,CAEfS,QAAS7E,EAAS,CACd9G,QAASmQ,EAAK9B,MAAM1C,QAAQ6E,OAC5B/I,QAAS0I,EAAK9B,MAAM1C,QAAQA,QAE5BxE,OAAQ,IAAMgJ,EAAKnB,MAAM,aAAcmB,GACvCjJ,SAASS,EAAGlE,GACR,IAAK2M,EAAGzE,QAAS,OACjB,MAAM,OAAC8E,EAAD,MAASpC,EAAT,QAAgB7P,GAAW2R,EAG7BA,EAAKO,UAGLD,EAAOzS,EAAQ,IAAJ2J,EAGX8I,EAAOtP,EAAI,IAAU,IAAJsC,EAGjBgN,EAAOtP,EAAI,IAAIsP,EAAOtP,EAAI,GAC1BgP,EAAKQ,iBAIT,MAAMC,EAAgBH,EAAOrK,SAASF,SAAS,GAC/C8G,KAAKhN,QAAQoI,MAAMyI,WAAaD,EAChC5D,KAAKvF,QAAQW,MAAMyI,WAAnB,0EAC4CJ,EAAOnL,EADnD,mFAEoCmL,EAAO/N,EAF3C,wBAE4D+N,EAAOnL,EAFnE,kCAE8FmL,EAAOnL,EAFrG,4BAMK9G,EAAQ0O,aACTmB,EAAMC,OAAOlG,MAAM8F,MAAQ0C,EAEtBpS,EAAQ4M,cACTiD,EAAMzC,QAAQsE,UAAU9H,MAAM8F,MAAQ0C,IAK9C,MAAMhM,EAAO6L,EAAOjK,SAASN,WAC7B,eAA0BiK,EAAKW,cAAe,OAAnC,GAAChS,EAAD,MAAKoP,GAA8B,EAC1CpP,EAAGkK,UAAUpE,IAASsJ,EAAM1H,SAASN,WAAa,MAAQ,UAAU,cAIxEmI,EAAMzC,QAAQmF,aAAa3I,MAAM8F,MAAQ0C,EAEpCT,EAAK3R,QAAQ0O,YAGdmB,EAAMC,OAAOtF,UAAU6G,OAAO,YAK1ChE,IAAK/E,EAAS,CACVG,KAAa,MAAPsJ,EAAa,IAAM,IACzBvQ,QAASmQ,EAAK9B,MAAMxC,IAAI2E,OACxB/I,QAAS0I,EAAK9B,MAAMxC,IAAImF,OAExB7J,OAAQ,IAAMgJ,EAAKnB,MAAM,aAAcmB,GACvCjJ,SAAS/F,GACAiP,EAAGvE,KAAQuE,EAAGzE,UAGfwE,EAAKO,UACLP,EAAKM,OAAO/N,EAAQ,IAAJvB,GAIpB6L,KAAKhN,QAAQoI,MAAM6I,gBAAnB,cAA4Cd,EAAKM,OAAO/N,EAAxD,gBACAwI,EAAWS,QAAQlD,cAI3BqD,QAAShF,EAAS,CACdG,KAAa,MAAPqJ,EAAa,IAAM,IACzBtQ,QAASmQ,EAAK9B,MAAMvC,QAAQ0E,OAC5B/I,QAAS0I,EAAK9B,MAAMvC,QAAQkF,OAE5B7J,OAAQ,IAAMgJ,EAAKnB,MAAM,aAAcmB,GACvCjJ,SAAS/F,GACAiP,EAAGtE,SAAYsE,EAAGzE,UAGnBwE,EAAKO,UACLP,EAAKM,OAAOnL,EAAI9C,KAAKD,MAAU,IAAJpB,GAAW,KAI1C6L,KAAKhN,QAAQoI,MAAMyI,WAAnB,wBAAiDV,EAAKM,OAAOnL,EAA7D,KACA4F,EAAWS,QAAQlD,cAI3ByI,WAAYtI,EAAW,CACnBvK,SAAU8R,EAAK9B,MAAMtC,YAAYvN,QACjCqK,UAAW,SAEX3B,SAAS7F,GACL8O,EAAKtB,gBAAkBxN,EAAEN,OAAOnB,aAAa,aAAa+G,cAC1DwJ,EAAKO,SAAWP,EAAKQ,oBAKjC3D,KAAKmE,YAAcjG,EAGvB8C,cACI,MAAM,MAACK,EAAD,QAAQ7P,GAAWwO,KAEnBoE,EAAgB,CAGlB/J,EAAKgH,EAAMtC,YAAYI,MAAO,QAAS,IAAMa,KAAKqE,eAGlDhK,EAAK,CACDgH,EAAMtC,YAAYG,OAClBmC,EAAMzC,QAAQsE,WACf,QAAS,KACRlD,KAAKgC,MAAM,SAAUhC,MACrBA,KAAKsE,WAAWtE,KAAKuE,WAAWtL,UAAU,KAI9CoB,EAAKgH,EAAMtC,YAAYE,KAAM,QAAS,MACjCe,KAAKwE,eAAiBhT,EAAQmP,YAAcX,KAAKL,SAGtDtF,EAAKgH,EAAMtC,YAAY0F,OAAQ,CAAC,QAAS,SAAUpQ,IAG3C2L,KAAK2B,SAAStN,EAAEN,OAAO7D,OAAO,KAAU8P,KAAK+B,qBAC7C/B,KAAKgC,MAAM,SAAUhC,KAAKyD,QAG9BpP,EAAEqQ,6BAINrK,EAAKgH,EAAMtC,YAAY0F,OAAQ,CAAC,QAAS,QAASpQ,IAC9C2L,KAAK0D,QAAqB,SAAXrP,EAAE6D,KACjB8H,KAAK0D,SAAW1D,KAAK2D,kBAIzBtJ,EAAK,CACDgH,EAAM1C,QAAQA,QACd0C,EAAM1C,QAAQ6E,OACdnC,EAAMxC,IAAImF,OACV3C,EAAMxC,IAAI2E,OACVnC,EAAMvC,QAAQkF,OACd3C,EAAMvC,QAAQ0E,QACf,CAAC,YAAa,cAAe,IAAMxD,KAAK0D,SAAU,IAIzD,IAAKlS,EAAQmP,WAAY,CACrB,MAAMgE,EAAKnT,EAAQoP,aAEnBwD,EAAc5Q,KAEV6G,EAAKgH,EAAMC,OAAQ,QAAS,IAAMtB,KAAK4E,SAAW5E,KAAKL,OAASK,KAAKJ,QAGrEvF,EAAK/H,SAAU,QAAS+B,GAAK2L,KAAK4E,WAAavQ,EAAE7D,MAAQmU,GAAMtQ,EAAEwQ,OAASF,IAAO3E,KAAKL,QAGtFtF,EAAK/H,SAAU,CAAC,aAAc,aAAc+B,IACpC2L,KAAK4E,WAAavK,EAAYhG,GAAGyQ,KAAKhT,GAAMA,IAAOuP,EAAME,KAAOzP,IAAOuP,EAAMC,SAC7EtB,KAAKL,QAEV,CAAC3N,SAAS,KAKrB,GAAIR,EAAQkP,kBAAmB,CAC3B,MAAMqE,EAAS,CACXtN,KAAM,CAAC,IAAK,IAAK,IAAK,GACtBE,KAAM,CAAC,IAAK,IAAK,IAAK,GACtBD,KAAM,CAAC,IAAK,IAAK,IAAK,GACtBF,KAAM,CAAC,IAAK,IAAK,IAAK,MAG1B6C,EAAyBgH,EAAMtC,YAAY0F,OAAQ,CAAC/U,EAAGsV,EAAMrQ,KACzD,MAAMsQ,EAAQF,EAAO/E,KAAKkF,yBAAyBhO,eAEnD,GAAI+N,EAAO,CACP,MAAM5P,EAAM4P,EAAMtQ,GAGZwQ,EAAKzV,GAAK2F,GAAO,IAAa,IAAP2P,EAAcA,GAG3C,OAAOG,GAAM,EAAI,EAAI5Q,QAAQ4Q,EAAK9P,EAAM8P,EAAK9P,GAAK+P,YAAY,IAElE,OAAO1V,IAKf,GAAI8B,EAAQ6O,iBAAmB7O,EAAQ6M,OAAQ,CAC3C,IAAIgH,EAAU,KACd,MAAMrM,EAAOgH,KAGboE,EAAc5Q,KACV6G,EAAKxL,OAAQ,CAAC,SAAU,UAAW,KAC3BmK,EAAK4L,WAEDpT,EAAQ2O,eACRnH,EAAK2G,OAGO,OAAZ0F,GACAA,EAAUC,WAAW,IAAMD,EAAU,KAAM,KAG3C7D,sBAAsB,SAAS+D,IAC3BvM,EAAK4I,uBACQ,OAAZyD,GAAqB7D,sBAAsB+D,OAGhDC,aAAaH,GACbA,EAAUC,WAAW,IAAMD,EAAU,KAAM,QAGpD,CAACrT,SAAS,KAKrBgO,KAAKyF,eAAiBrB,EAG1BxC,uBACI,MAAM,QAACpQ,GAAWwO,KAGlB,IAAKxO,EAAQ6M,OAAQ,CACjB,MAAM,IAACkD,GAAOvB,KAAKqB,MAEfqE,WAAW,sBAAsBC,QACjChW,OAAOqK,OAAOuH,EAAInG,MAAO,CACrBwK,OAAQ,OACRzK,OAAQ,GAAF,OAAKoG,EAAI7G,wBAAwBS,OAAjC,MACND,IAAK,EACLwB,OAAQ,EACR1B,KAAM,EACNyB,MAAO,KAGX9M,OAAOqK,OAAOuH,EAAInG,MAAO,CACrBwK,OAAQ,KACRnJ,MAAO,KACPvB,IAAK,KACLwB,OAAQ,KACR1B,KAAM,KACNG,OAAQ,OAGZ6E,KAAKoB,SAAS1F,OAAOlK,EAAQsL,YAKzC6G,gBACI,MAAM,MAACtC,EAAD,OAAQoC,EAAR,QAAgBjS,GAAWwO,KAGjC,GAAIqB,EAAMtC,YAAY7G,OAAQ,CAG1B,MAAM9G,EAAS,KAAH,OAAQiQ,EAAMtC,YAAY7G,OAAOtF,aAAa,cAC1DyO,EAAMtC,YAAY0F,OAAOvU,MAAkC,mBAAnBuT,EAAOrS,GAC3CqS,EAAOrS,KAAU8H,SAAS1H,EAAQ4O,iBAAmB,IAIxDJ,KAAK+B,qBAAuB/B,KAAK0D,SAClC1D,KAAKgC,MAAM,SAAUyB,GAI7BY,YAAYwB,GAAS,GACjB,MAAM,MAACxE,EAAD,QAAQ7P,GAAWwO,KAGpBxO,EAAQ4M,cACTiD,EAAMC,OAAOlG,MAAM8F,MAAQ,uBAG/BG,EAAMC,OAAOtF,UAAUsD,IAAI,SAEtB9N,EAAQmP,YACTX,KAAKL,OAGJK,KAAK+B,qBAAwB8D,IAG9B7F,KAAKgC,MAAM,OAAQ,MACnBhC,KAAKgC,MAAM,QAAShC,OAI5B8F,iBAAiBhT,GACb,MAAM,OAACuF,EAAD,KAASH,EAAT,EAAeI,GAAKrB,EAAYnE,IAChC,YAAC0L,GAAewB,KAAKxO,QACrBuU,OAA0B/N,IAANM,GAAyB,IAANA,EAQ7C,OAJID,GAA4B,IAAlBA,EAAO3E,SACjB2E,EAAO,QAAKL,GAGT,CACHK,QAAUA,GAAWmG,GAAeuH,EAAsB,KAAO1N,EACjEH,QAIR8J,MAAMgE,KAAUC,GACZjG,KAAKkG,eAAeF,GAAOjK,QAAQ0F,GAAMA,KAAMwE,EAAMjG,OAGzD/O,GAAG+U,EAAOvE,GAON,MAJkB,mBAAPA,GAAsC,iBAAVuE,GAAsBA,KAAShG,KAAKkG,gBACvElG,KAAKkG,eAAeF,GAAOxS,KAAKiO,GAG7BzB,KAGX7O,IAAI6U,EAAOvE,GACP,MAAM0E,EAAYnG,KAAKkG,eAAeF,GAEtC,GAAIG,EAAW,CACX,MAAMxR,EAAQwR,EAAUC,QAAQ3E,IAE3B9M,GACDwR,EAAUE,OAAO1R,EAAO,GAIhC,OAAOqL,KAQXmB,UAAUD,GACN,MAAM,OAAC7I,GAAU2H,KAAK8F,iBAAiB5E,GAEvC,GAAI7I,EAAQ,CACR,MAAM,cAACyL,EAAD,MAAgBzC,GAASrB,KACzBkB,EAAQvI,KAAaN,GAGrBvG,EAAKuI,EAAA,8CACgC6G,EAAM9H,SAASF,SAAS,GADxD,QAiBX,OAZAmI,EAAMf,SAASkC,YAAY1Q,GAC3BgS,EAActQ,KAAK,CAAC1B,KAAIoP,UAGxBlB,KAAKyF,eAAejS,KAChB6G,EAAKvI,EAAI,QAAS,KACdkO,KAAKsE,WAAWpD,EAAMjI,UAAU,GAChC+G,KAAKgC,MAAM,eAAgBd,GAC3BlB,KAAKgC,MAAM,SAAUd,OAItB,EAGX,OAAO,EAQXoF,aAAa3R,GACT,MAAM4R,EAAcvG,KAAK8D,cAAcnP,GAGvC,GAAI4R,EAAa,CACb,MAAM,GAACzU,GAAMyU,EAKb,OAFAvG,KAAKqB,MAAMf,SAASmC,YAAY3Q,GAChCkO,KAAK8D,cAAcuC,OAAO1R,EAAO,IAC1B,EAGX,OAAO,EAGX6P,WAAWqB,GAAS,GAChB,MAAM,QAACjH,EAAD,OAAU0C,GAAUtB,KAAKqB,MAGzBuC,EAAgB5D,KAAKyD,OAAOrK,SAASF,WAC3C0F,EAAQsE,UAAU9H,MAAM8F,MAAQ0C,EAG3B5D,KAAKxO,QAAQ4M,cACdkD,EAAOlG,MAAM8F,MAAQ0C,GAIzBtC,EAAOtF,UAAU6G,OAAO,SAGxB7C,KAAKuE,WAAavE,KAAKyD,OAAO7J,QAGzBoG,KAAK+B,qBAAwB8D,GAC9B7F,KAAKgC,MAAM,OAAQhC,KAAKyD,QAOhC9H,UACIqE,KAAKyF,eAAe1J,QAAQkK,GAAQ5L,KAAS4L,IAE7CtW,OAAO8D,KAAKuM,KAAKmE,aACZpI,QAAQvL,GAAOwP,KAAKmE,YAAY3T,GAAKmL,WAO9C6K,mBACIxG,KAAKrE,UACL,MAAM,KAACpN,EAAD,IAAOgT,GAAOvB,KAAKqB,MAGrB9S,EAAKyF,eACLzF,EAAKyF,cAAcyO,YAAYlU,GAInCgT,EAAIvN,cAAcyO,YAAYlB,GAI9B5R,OAAO8D,KAAKuM,MACPjE,QAAQvL,GAAOwP,KAAKxP,GAAO,MAMpCmP,OAGI,OAFAK,KAAKqB,MAAME,IAAIvF,UAAU6G,OAAO,WAChC7C,KAAKgC,MAAM,OAAQhC,MACZA,KAMXJ,OAQI,OANKI,KAAKxO,QAAQyO,WACdD,KAAKqB,MAAME,IAAIvF,UAAUsD,IAAI,WAC7BU,KAAK4B,uBACL5B,KAAKgC,MAAM,OAAQhC,OAGhBA,KAMX4E,SACI,OAAO5E,KAAKqB,MAAME,IAAIvF,UAAUuD,SAAS,WAY7C+E,QAAQ5O,EAAI,IAAK1E,EAAI,EAAGmD,EAAI,EAAGmE,EAAI,EAAGuN,GAAS,GAG3C,MAAMY,EAASzG,KAAK0D,QAIpB,GAHA1D,KAAK0D,SAAU,EAGXhO,EAAI,GAAKA,EAAI,KAAO1E,EAAI,GAAKA,EAAI,KAAOmD,EAAI,GAAKA,EAAI,KAAOmE,EAAI,GAAKA,EAAI,EACzE,OAAO,EAIX0H,KAAKyD,OAAS9K,EAAUjD,EAAG1E,EAAGmD,EAAGmE,GAGjC,MAAM,IAACuG,EAAD,QAAMC,EAAN,QAAeH,GAAWqB,KAAKmE,YAiBrC,OAhBAtF,EAAInD,OAAQhG,EAAI,KAChBoJ,EAAQpD,OAAOpD,GACfqG,EAAQjD,OAAO1K,EAAI,IAAK,EAAKmD,EAAI,KAG5B0R,GACD7F,KAAKwE,aAILiC,GACAzG,KAAK2D,gBAIT3D,KAAK0D,QAAU+C,GACR,EAWX9E,SAAS+E,EAAQb,GAAS,GAGtB,GAAe,OAAXa,EAEA,OADA1G,KAAKqE,YAAYwB,IACV,EAGX,MAAM,OAACxN,EAAD,KAASH,GAAQ8H,KAAK8F,iBAAiBY,GAG7C,GAAIrO,EAAQ,CAGR,MAAMsO,EAAQzO,EAAKyB,eACb,QAACnI,GAAWwO,KAAKqB,MAAMtC,YACvBhL,EAASvC,EAAQ6N,KAAKvN,GAAMA,EAAGc,aAAa,eAAiB+T,GAGnE,GAAI5S,IAAWA,EAAO2K,OAClB,IAAK,MAAM5M,KAAMN,EACbM,EAAGkK,UAAUlK,IAAOiC,EAAS,MAAQ,UAAU,UAKvD,OADAiM,KAAK8B,uBAAuB6E,GACrB3G,KAAKsE,WAAWjM,EAAQwN,GAGnC,OAAO,EASX/D,uBAAuB5J,GAMnB,OAHAA,EAAOA,EAAKyB,gBAGHqG,KAAKqB,MAAMtC,YAAYvN,QAC3B6N,KAAKlL,GAAKA,EAAEvB,aAAa,aAAagU,WAAW1O,KAAU/D,EAAE0S,SAOtE3B,yBACI,OAAOlF,KAAK6B,gBAMhBiF,WACI,OAAO9G,KAAKyD,OAMhBsD,UACI,OAAO/G,KAAKqB,MAMhB2B,UAII,OAHAhD,KAAKL,OACLK,KAAKxO,QAAQyO,UAAW,EACxBD,KAAKqB,MAAMC,OAAOtF,UAAUsD,IAAI,YACzBU,KAMXgH,SAGI,OAFAhH,KAAKxO,QAAQyO,UAAW,EACxBD,KAAKqB,MAAMC,OAAOtF,UAAU6G,OAAO,YAC5B7C,MAKfR,EAAMyH,MAAQ5M,EAGdmF,EAAM0H,KAAO,CACTvO,YACAmB,WACAmC,UACAL,cAIJ4D,EAAMjP,OAASiB,GAAW,IAAIgO,EAAMhO,GAGpCgO,EAAM2H,QAAU,QACD3H,e","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 = 0);\n","/**\r\n * Add event(s) to element(s).\r\n * @param elements DOM-Elements\r\n * @param events Event names\r\n * @param fn Callback\r\n * @param options Optional options\r\n * @return Array passed arguments\r\n */\r\nexport const on = eventListener.bind(null, 'addEventListener');\r\n\r\n/**\r\n * Remove event(s) from element(s).\r\n * @param elements DOM-Elements\r\n * @param events Event names\r\n * @param fn Callback\r\n * @param options Optional options\r\n * @return Array passed arguments\r\n */\r\nexport const off = eventListener.bind(null, 'removeEventListener');\r\n\r\nfunction eventListener(method, elements, events, fn, options = {}) {\r\n\r\n // Normalize array\r\n if (elements instanceof HTMLCollection || elements instanceof NodeList) {\r\n elements = Array.from(elements);\r\n } else if (!Array.isArray(elements)) {\r\n elements = [elements];\r\n }\r\n\r\n if (!Array.isArray(events)) {\r\n events = [events];\r\n }\r\n\r\n for (const el of elements) {\r\n for (const ev of events) {\r\n el[method](ev, fn, {capture: false, ...options});\r\n }\r\n }\r\n\r\n return Array.prototype.slice.call(arguments, 1);\r\n}\r\n\r\n/**\r\n * Creates an DOM-Element out of a string (Single element).\r\n * @param html HTML representing a single element\r\n * @returns {Element | null} The element.\r\n */\r\nexport function createElementFromString(html) {\r\n const div = document.createElement('div');\r\n div.innerHTML = html.trim();\r\n return div.firstElementChild;\r\n}\r\n\r\n/**\r\n * Removes an attribute from a HTMLElement and returns the value.\r\n * @param el\r\n * @param name\r\n * @return {string}\r\n */\r\nexport function removeAttribute(el, name) {\r\n const value = el.getAttribute(name);\r\n el.removeAttribute(name);\r\n return value;\r\n}\r\n\r\n/**\r\n * Creates a new html element, every element which has\r\n * a ':ref' attribute will be saved in a object (which will be returned)\r\n * where the value of ':ref' is the object-key and the value the HTMLElement.\r\n *\r\n * It's possible to create a hierarchy if you add a ':obj' attribute. Every\r\n * sibling will be added to the object which will get the name from the 'data-con' attribute.\r\n *\r\n * If you want to create an Array out of multiple elements, you can use the ':arr' attribute,\r\n * the value defines the key and all elements, which has the same parent and the same 'data-arr' attribute,\r\n * would be added to it.\r\n *\r\n * @param str - The HTML String.\r\n */\r\nexport function createFromTemplate(str) {\r\n\r\n // Recursive function to resolve template\r\n function resolve(element, base = {}) {\r\n\r\n // Check key and container attribute\r\n const con = removeAttribute(element, ':obj');\r\n const key = removeAttribute(element, ':ref');\r\n const subtree = con ? (base[con] = {}) : base;\r\n\r\n // Check and save element\r\n key && (base[key] = element);\r\n for (const child of Array.from(element.children)) {\r\n const arr = removeAttribute(child, ':arr');\r\n const sub = resolve(child, arr ? {} : subtree);\r\n\r\n if (arr) {\r\n\r\n // Check if there is already an array and add element\r\n (subtree[arr] || (subtree[arr] = []))\r\n .push(Object.keys(sub).length ? sub : child);\r\n }\r\n }\r\n\r\n return base;\r\n }\r\n\r\n return resolve(createElementFromString(str));\r\n}\r\n\r\n/**\r\n * Polyfill for safari & firefox for the eventPath event property.\r\n * @param evt The event object.\r\n * @return [String] event path.\r\n */\r\nexport function eventPath(evt) {\r\n let path = evt.path || (evt.composedPath && evt.composedPath());\r\n if (path) return path;\r\n\r\n let el = evt.target.parentElement;\r\n path = [evt.target, el];\r\n while (el = el.parentElement) path.push(el);\r\n\r\n path.push(document, window);\r\n return path;\r\n}\r\n\r\n/**\r\n * Creates the ability to change numbers in an input field with the scroll-wheel.\r\n * @param el\r\n * @param mapper\r\n */\r\nexport function adjustableInputNumbers(el, mapper = v => v) {\r\n\r\n function handleScroll(e) {\r\n const inc = ([0.001, 0.01, 0.1])[Number(e.shiftKey || e.ctrlKey * 2)] * (e.deltaY < 0 ? 1 : -1);\r\n\r\n let index = 0;\r\n let off = el.selectionStart;\r\n el.value = el.value.replace(/[\\d.]+/g, (v, i) => {\r\n\r\n // Check if number is in cursor range and increase it\r\n if (i <= off && i + v.length >= off) {\r\n off = i;\r\n return mapper(Number(v), inc, index);\r\n }\r\n\r\n index++;\r\n return v;\r\n });\r\n\r\n el.focus();\r\n el.setSelectionRange(off, off);\r\n\r\n // Prevent default and trigger input event\r\n e.preventDefault();\r\n el.dispatchEvent(new Event('input'));\r\n }\r\n\r\n // Bind events\r\n on(el, 'focus', () => on(window, 'wheel', handleScroll, {passive: false}));\r\n on(el, 'blur', () => off(window, 'wheel', handleScroll));\r\n}\r\n","// Shorthands\r\nconst {min, max, floor, round} = Math;\r\n\r\n/**\r\n * Tries to convert a color name to rgb/a hex representation\r\n * @param name\r\n * @returns {string | CanvasGradient | CanvasPattern}\r\n */\r\nfunction standardizeColor(name) {\r\n\r\n // Since invalid color's will be parsed as black, filter them out\r\n if (name.toLowerCase() === 'black') {\r\n return '#000';\r\n }\r\n\r\n const ctx = document.createElement('canvas').getContext('2d');\r\n ctx.fillStyle = name;\r\n return ctx.fillStyle === '#000' ? null : ctx.fillStyle;\r\n}\r\n\r\n/**\r\n * Convert HSV spectrum to RGB.\r\n * @param h Hue\r\n * @param s Saturation\r\n * @param v Value\r\n * @returns {number[]} Array with rgb values.\r\n */\r\nexport function hsvToRgb(h, s, v) {\r\n h = (h / 360) * 6;\r\n s /= 100;\r\n v /= 100;\r\n\r\n const i = floor(h);\r\n\r\n const f = h - i;\r\n const p = v * (1 - s);\r\n const q = v * (1 - f * s);\r\n const t = v * (1 - (1 - f) * s);\r\n\r\n const mod = i % 6;\r\n const r = [v, q, p, p, t, v][mod];\r\n const g = [t, v, v, q, p, p][mod];\r\n const b = [p, p, t, v, v, q][mod];\r\n\r\n return [\r\n r * 255,\r\n g * 255,\r\n b * 255\r\n ];\r\n}\r\n\r\n/**\r\n * Convert HSV spectrum to Hex.\r\n * @param h Hue\r\n * @param s Saturation\r\n * @param v Value\r\n * @returns {string[]} Hex values\r\n */\r\nexport function hsvToHex(h, s, v) {\r\n return hsvToRgb(h, s, v).map(v =>\r\n round(v).toString(16).padStart(2, '0')\r\n );\r\n}\r\n\r\n/**\r\n * Convert HSV spectrum to CMYK.\r\n * @param h Hue\r\n * @param s Saturation\r\n * @param v Value\r\n * @returns {number[]} CMYK values\r\n */\r\nexport function hsvToCmyk(h, s, v) {\r\n const rgb = hsvToRgb(h, s, v);\r\n const r = rgb[0] / 255;\r\n const g = rgb[1] / 255;\r\n const b = rgb[2] / 255;\r\n\r\n let k, c, m, y;\r\n\r\n k = min(1 - r, 1 - g, 1 - b);\r\n\r\n c = k === 1 ? 0 : (1 - r - k) / (1 - k);\r\n m = k === 1 ? 0 : (1 - g - k) / (1 - k);\r\n y = k === 1 ? 0 : (1 - b - k) / (1 - k);\r\n\r\n return [\r\n c * 100,\r\n m * 100,\r\n y * 100,\r\n k * 100\r\n ];\r\n}\r\n\r\n/**\r\n * Convert HSV spectrum to HSL.\r\n * @param h Hue\r\n * @param s Saturation\r\n * @param v Value\r\n * @returns {number[]} HSL values\r\n */\r\nexport function hsvToHsl(h, s, v) {\r\n s /= 100, v /= 100;\r\n\r\n const l = (2 - s) * v / 2;\r\n\r\n if (l !== 0) {\r\n if (l === 1) {\r\n s = 0;\r\n } else if (l < 0.5) {\r\n s = s * v / (l * 2);\r\n } else {\r\n s = s * v / (2 - l * 2);\r\n }\r\n }\r\n\r\n return [\r\n h,\r\n s * 100,\r\n l * 100\r\n ];\r\n}\r\n\r\n/**\r\n * Convert RGB to HSV.\r\n * @param r Red\r\n * @param g Green\r\n * @param b Blue\r\n * @return {number[]} HSV values.\r\n */\r\nfunction rgbToHsv(r, g, b) {\r\n r /= 255, g /= 255, b /= 255;\r\n\r\n let h, s, v;\r\n const minVal = min(r, g, b);\r\n const maxVal = max(r, g, b);\r\n const delta = maxVal - minVal;\r\n\r\n v = maxVal;\r\n if (delta === 0) {\r\n h = s = 0;\r\n } else {\r\n s = delta / maxVal;\r\n const dr = (((maxVal - r) / 6) + (delta / 2)) / delta;\r\n const dg = (((maxVal - g) / 6) + (delta / 2)) / delta;\r\n const db = (((maxVal - b) / 6) + (delta / 2)) / delta;\r\n\r\n if (r === maxVal) {\r\n h = db - dg;\r\n } else if (g === maxVal) {\r\n h = (1 / 3) + dr - db;\r\n } else if (b === maxVal) {\r\n h = (2 / 3) + dg - dr;\r\n }\r\n\r\n if (h < 0) {\r\n h += 1;\r\n } else if (h > 1) {\r\n h -= 1;\r\n }\r\n }\r\n\r\n return [\r\n h * 360,\r\n s * 100,\r\n v * 100\r\n ];\r\n}\r\n\r\n/**\r\n * Convert CMYK to HSV.\r\n * @param c Cyan\r\n * @param m Magenta\r\n * @param y Yellow\r\n * @param k Key (Black)\r\n * @return {number[]} HSV values.\r\n */\r\nfunction cmykToHsv(c, m, y, k) {\r\n c /= 100;\r\n m /= 100;\r\n y /= 100;\r\n k /= 100;\r\n\r\n const r = (1 - min(1, c * (1 - k) + k)) * 255;\r\n const g = (1 - min(1, m * (1 - k) + k)) * 255;\r\n const b = (1 - min(1, y * (1 - k) + k)) * 255;\r\n\r\n return [...rgbToHsv(r, g, b)];\r\n}\r\n\r\n/**\r\n * Convert HSL to HSV.\r\n * @param h Hue\r\n * @param s Saturation\r\n * @param l Lightness\r\n * @return {number[]} HSV values.\r\n */\r\nfunction hslToHsv(h, s, l) {\r\n s /= 100;\r\n l /= 100;\r\n s *= l < 0.5 ? l : 1 - l;\r\n\r\n const ns = (2 * s / (l + s)) * 100;\r\n const v = (l + s) * 100;\r\n return [h, ns, v];\r\n}\r\n\r\n/**\r\n * Convert HEX to HSV.\r\n * @param hex Hexadecimal string of rgb colors, can have length 3 or 6.\r\n * @return {number[]} HSV values.\r\n */\r\nfunction hexToHsv(hex) {\r\n return rgbToHsv(...hex.match(/.{2}/g).map(v => parseInt(v, 16)));\r\n}\r\n\r\n/**\r\n * Try's to parse a string which represents a color to a HSV array.\r\n * Current supported types are cmyk, rgba, hsla and hexadecimal.\r\n * @param str\r\n * @return {*}\r\n */\r\nexport function parseToHSVA(str) {\r\n\r\n // Check if string is a color-name\r\n str = str.match(/^[a-zA-Z]+$/) ? standardizeColor(str) : str;\r\n\r\n // Regular expressions to match different types of color represention\r\n const regex = {\r\n cmyk: /^cmyk[\\D]+([\\d.]+)[\\D]+([\\d.]+)[\\D]+([\\d.]+)[\\D]+([\\d.]+)/i,\r\n rgba: /^((rgba)|rgb)[\\D]+([\\d.]+)[\\D]+([\\d.]+)[\\D]+([\\d.]+)[\\D]*?([\\d.]+|$)/i,\r\n hsla: /^((hsla)|hsl)[\\D]+([\\d.]+)[\\D]+([\\d.]+)[\\D]+([\\d.]+)[\\D]*?([\\d.]+|$)/i,\r\n hsva: /^((hsva)|hsv)[\\D]+([\\d.]+)[\\D]+([\\d.]+)[\\D]+([\\d.]+)[\\D]*?([\\d.]+|$)/i,\r\n hexa: /^#?(([\\dA-Fa-f]{3,4})|([\\dA-Fa-f]{6})|([\\dA-Fa-f]{8}))$/i\r\n };\r\n\r\n /**\r\n * Takes an Array of any type, convert strings which represents\r\n * a number to a number an anything else to undefined.\r\n * @param array\r\n * @return {*}\r\n */\r\n const numarize = array => array.map(v => /^(|\\d+)\\.\\d+|\\d+$/.test(v) ? Number(v) : undefined);\r\n\r\n let match;\r\n invalid: for (const type in regex) {\r\n\r\n // Check if current scheme passed\r\n if (!(match = regex[type].exec(str)))\r\n continue;\r\n\r\n // match[2] does only contain a truly value if rgba, hsla, or hsla got matched\r\n const alpha = !!match[2];\r\n\r\n // Try to convert\r\n switch (type) {\r\n case 'cmyk': {\r\n const [, c, m, y, k] = numarize(match);\r\n\r\n if (c > 100 || m > 100 || y > 100 || k > 100)\r\n break invalid;\r\n\r\n return {values: cmykToHsv(c, m, y, k), type};\r\n }\r\n case 'rgba': {\r\n const [, , , r, g, b, a] = numarize(match);\r\n\r\n if (r > 255 || g > 255 || b > 255 || a < 0 || a > 1 || (alpha === !a))\r\n break invalid;\r\n\r\n return {values: [...rgbToHsv(r, g, b), a], a, type};\r\n }\r\n case 'hexa': {\r\n let [, hex] = match;\r\n\r\n if (hex.length === 4 || hex.length === 3) {\r\n hex = hex.split('').map(v => v + v).join('');\r\n }\r\n\r\n const raw = hex.substring(0, 6);\r\n let a = hex.substring(6);\r\n\r\n // Convert 0 - 255 to 0 - 1 for opacity\r\n a = a ? (parseInt(a, 16) / 255) : undefined;\r\n\r\n return {values: [...hexToHsv(raw), a], a, type};\r\n }\r\n case 'hsla': {\r\n const [, , , h, s, l, a] = numarize(match);\r\n\r\n if (h > 360 || s > 100 || l > 100 || a < 0 || a > 1 || (alpha === !a))\r\n break invalid;\r\n\r\n return {values: [...hslToHsv(h, s, l), a], a, type};\r\n }\r\n case 'hsva': {\r\n const [, , , h, s, v, a] = numarize(match);\r\n\r\n if (h > 360 || s > 100 || v > 100 || a < 0 || a > 1 || (alpha === !a))\r\n break invalid;\r\n\r\n return {values: [h, s, v, a], a, type};\r\n }\r\n }\r\n }\r\n\r\n return {values: null, type: null};\r\n}\r\n","import {hsvToHsl, hsvToRgb, hsvToCmyk, hsvToHex} 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';\r\n\r\nconst clamp = v => Math.max(Math.min(v, 1), 0);\r\nexport default function Moveable(opt) {\r\n\r\n const that = {\r\n\r\n // Assign default values\r\n options: Object.assign({\r\n lock: null,\r\n onchange: () => 0,\r\n onstop: () => 0\r\n }, opt),\r\n\r\n _tapstart(evt) {\r\n _.on(document, ['mouseup', 'touchend', 'touchcancel'], that._tapstop);\r\n _.on(document, ['mousemove', 'touchmove'], that._tapmove);\r\n\r\n // Prevent default touch event\r\n evt.preventDefault();\r\n\r\n // Trigger\r\n that._tapmove(evt);\r\n },\r\n\r\n _tapmove(evt) {\r\n const {options: {lock}, cache} = that;\r\n const {element, wrapper} = options;\r\n const b = wrapper.getBoundingClientRect();\r\n\r\n let x = 0, y = 0;\r\n if (evt) {\r\n const touch = evt && evt.touches && evt.touches[0];\r\n x = evt ? (touch || evt).clientX : 0;\r\n y = evt ? (touch || evt).clientY : 0;\r\n\r\n // Reset to bounds\r\n if (x < b.left) x = b.left;\r\n else if (x > b.left + b.width) x = b.left + b.width;\r\n if (y < b.top) y = b.top;\r\n else if (y > b.top + b.height) y = b.top + b.height;\r\n\r\n // Normalize\r\n x -= b.left;\r\n y -= b.top;\r\n } else if (cache) {\r\n x = cache.x * b.width;\r\n y = cache.y * b.height;\r\n }\r\n\r\n if (lock !== 'h') {\r\n element.style.left = `calc(${x / b.width * 100}% - ${element.offsetWidth / 2}px)`;\r\n }\r\n\r\n if (lock !== 'v') {\r\n element.style.top = `calc(${y / b.height * 100}% - ${element.offsetHeight / 2}px)`;\r\n }\r\n\r\n that.cache = {x: x / b.width, y: y / b.height};\r\n const cx = clamp(x / wrapper.offsetWidth);\r\n const cy = clamp(y / wrapper.offsetHeight);\r\n\r\n switch (lock) {\r\n case 'v':\r\n return options.onchange(cx);\r\n case 'h':\r\n return options.onchange(cy);\r\n default:\r\n return options.onchange(cx, cy);\r\n }\r\n },\r\n\r\n _tapstop() {\r\n that.options.onstop();\r\n _.off(document, ['mouseup', 'touchend', 'touchcancel'], that._tapstop);\r\n _.off(document, ['mousemove', 'touchmove'], that._tapmove);\r\n },\r\n\r\n trigger() {\r\n that._tapmove();\r\n },\r\n\r\n update(x = 0, y = 0) {\r\n const {left, top, width, height} = that.options.wrapper.getBoundingClientRect();\r\n\r\n if (that.options.lock === 'h') {\r\n y = x;\r\n }\r\n\r\n that._tapmove({\r\n clientX: left + width * x,\r\n clientY: top + height * y\r\n });\r\n },\r\n\r\n destroy() {\r\n const {options, _tapstart} = that;\r\n _.off([options.wrapper, options.element], 'mousedown', _tapstart);\r\n _.off([options.wrapper, options.element], 'touchstart', _tapstart, {\r\n passive: false\r\n });\r\n }\r\n };\r\n\r\n // Initilize\r\n const {options, _tapstart} = that;\r\n _.on([options.wrapper, options.element], 'mousedown', _tapstart);\r\n _.on([options.wrapper, options.element], 'touchstart', _tapstart, {\r\n passive: false\r\n });\r\n\r\n return that;\r\n}\r\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","/**\r\n * Micro positioning-engine\r\n * @param el\r\n * @param reference\r\n * @param pos\r\n * @param padding\r\n * @returns {{update(): void}}\r\n * @constructor\r\n */\r\nexport default function Nanopop({el, reference, padding = 8}) {\r\n const vBehaviour = {start: 'sme', middle: 'mse', end: 'ems'};\r\n const hBehaviour = {top: 'tbrl', right: 'rltb', bottom: 'btrl', left: 'lrbt'};\r\n\r\n const getInfo = ((cache = {}) => (pos, cached = cache[pos]) => {\r\n if (cached) return cached;\r\n const [position, variant = 'middle'] = pos.split('-');\r\n const isVertical = (position === 'top' || position === 'bottom');\r\n\r\n return cache[pos] = {\r\n position,\r\n variant,\r\n isVertical\r\n };\r\n })();\r\n\r\n return {\r\n update(pos) {\r\n const {position, variant, isVertical} = getInfo(pos);\r\n const rb = reference.getBoundingClientRect();\r\n const eb = el.getBoundingClientRect();\r\n\r\n const positions = vertical => vertical ? {\r\n t: rb.top - eb.height - padding,\r\n b: rb.bottom + padding\r\n } : {\r\n r: rb.right + padding,\r\n l: rb.left - eb.width - padding\r\n };\r\n\r\n const variants = vertical => vertical ? {\r\n s: rb.left + rb.width - eb.width,\r\n m: (-eb.width / 2) + (rb.left + rb.width / 2),\r\n e: rb.left\r\n } : {\r\n s: rb.bottom - eb.height,\r\n m: rb.bottom - rb.height / 2 - eb.height / 2,\r\n e: rb.bottom - rb.height\r\n };\r\n\r\n const leastApplied = {};\r\n\r\n function apply(bevs, vars, styleprop) {\r\n const vertical = styleprop === 'top';\r\n const adder = vertical ? eb.height : eb.width;\r\n const win = window[vertical ? 'innerHeight' : 'innerWidth'];\r\n\r\n for (const ch of bevs) {\r\n const v = vars[ch];\r\n const sv = leastApplied[styleprop] = `${v}px`;\r\n\r\n if (v > 0 && (v + adder) < win) {\r\n el.style[styleprop] = sv;\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n for (const rot of [isVertical, !isVertical]) {\r\n const v2Ok = apply(hBehaviour[position], positions(rot), rot ? 'top' : 'left');\r\n const v1Ok = apply(vBehaviour[variant], variants(rot), rot ? 'left' : 'top');\r\n\r\n if (v2Ok && v1Ok) {\r\n return;\r\n }\r\n }\r\n\r\n el.style.left = leastApplied.left;\r\n el.style.top = leastApplied.top;\r\n }\r\n };\r\n}\r\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 \r\n\r\n ${useAsButton ? '' : '
'}\r\n\r\n
\r\n
\r\n `);\r\n\r\n const int = root.interaction;\r\n\r\n // Select option which is not hidden\r\n int.options.find(o => !o.hidden && !o.classList.add('active'));\r\n\r\n // Create method to find currenlty active option\r\n int.type = () => int.options.find(e => e.classList.contains('active'));\r\n return root;\r\n}\r\n","// Import utils\nimport * as _ from './utils/utils';\nimport {parseToHSVA} from './utils/color';\n\n// Import classes\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 // 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 disabled: false,\n comparison: true,\n closeOnScroll: false,\n outputPrecision: 0,\n lockOpacity: false,\n autoReposition: true,\n\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} = 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 this._nanopop = Nanopop({\n reference: this._root.button,\n el: this._root.app\n });\n\n // Initilization is finish, pickr is visible and ready for usage\n const {app} = this._root;\n const that = this;\n requestAnimationFrame((function cb() {\n\n if (!app.offsetWidth && app.parentElement !== document.body) {\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 // Check if element is selector\n if (typeof opt.el === 'string') {\n\n // Resolve possible shadow dom access\n opt.el = opt.el.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 // 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 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 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 document.body.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 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 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) return;\n const {_color, _root, options} = inst;\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 (!options.useAsButton) {\n _root.preview.lastColor.style.color = cssRGBaString;\n }\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 _root.preview.currentColor.style.color = cssRGBaString;\n\n if (!inst.options.comparison) {\n\n // If the user changes the color, remove the cleared icon\n _root.button.classList.remove('clear');\n }\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) return;\n\n // Calculate hue\n if (inst._recalc) {\n inst._color.h = v * 360;\n }\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 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) return;\n\n // Calculate opacity\n if (inst._recalc) {\n inst._color.a = Math.round(v * 1e2) / 100;\n }\n\n // Update color\n this.element.style.background = `rgba(0, 0, 0, ${inst._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.toHSVA(), true);\n }),\n\n // Save color\n _.on(_root.interaction.save, 'click', () => {\n !this.applyColor() && !options.showAlways && this.hide();\n }),\n\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 return o;\n\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 const {app} = this._root;\n\n if (matchMedia('(max-width: 576px)').matches) {\n Object.assign(app.style, {\n margin: 'auto',\n height: `${app.getBoundingClientRect().height}px`,\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n });\n } else {\n Object.assign(app.style, {\n margin: null,\n right: null,\n top: null,\n bottom: null,\n left: null,\n height: null\n });\n\n this._nanopop.update(options.position);\n }\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 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();\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\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 this.setColorRepresentation(utype);\n return this.setHSVA(...values, silent);\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 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 = '1.3.0';\nexport default Pickr;\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/vendor/assets/stylesheets/monolith.min.css b/vendor/assets/stylesheets/monolith.min.css
new file mode 100644
index 00000000..b7bbc0c2
--- /dev/null
+++ b/vendor/assets/stylesheets/monolith.min.css
@@ -0,0 +1 @@
+/*! Pickr 1.3.0 MIT | https://github.com/Simonwep/pickr */.pickr{position:relative;overflow:visible;transform:translateY(0)}.pickr *{box-sizing:border-box}.pickr .pcr-button{position:relative;height:2em;width:2em;padding:.5em;cursor:pointer;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;border-radius:.15em;background:url('data:image/svg+xml;utf8, ') no-repeat 50%;background-size:0;transition:all .3s}.pickr .pcr-button:before{background:url('data:image/svg+xml;utf8, ');background-size:.5em;z-index:-1;z-index:auto}.pickr .pcr-button:after,.pickr .pcr-button:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%;border-radius:.15em}.pickr .pcr-button:after{transition:background .3s;background:currentColor}.pickr .pcr-button.clear{background-size:70%}.pickr .pcr-button.clear:before{opacity:0}.pickr .pcr-button.clear:focus{box-shadow:0 0 0 1px hsla(0,0%,100%,.85),0 0 0 3px currentColor}.pickr .pcr-button.disabled{cursor:not-allowed}.pcr-app button,.pcr-app input,.pickr button,.pickr input{outline:none;border:none;-webkit-appearance:none}.pcr-app button.pcr-active,.pcr-app button:focus,.pcr-app input.pcr-active,.pcr-app input:focus,.pickr button.pcr-active,.pickr button:focus,.pickr input.pcr-active,.pickr input:focus{box-shadow:0 0 0 1px hsla(0,0%,100%,.85),0 0 0 3px currentColor}.pcr-app{position:fixed;display:flex;flex-direction:column;z-index:10000;border-radius:.1em;background:#fff;opacity:0;visibility:hidden;transition:opacity .3s,visibility 0s .3s;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;box-shadow:0 .15em 1.5em 0 rgba(0,0,0,.1),0 0 1em 0 rgba(0,0,0,.03);left:0;top:0}.pcr-app.visible{transition:opacity .3s;visibility:visible;opacity:1}.pcr-app .pcr-swatches{display:flex;flex-wrap:wrap;margin-top:.75em}.pcr-app .pcr-swatches.pcr-last{margin:0}@supports (display:grid){.pcr-app .pcr-swatches{display:grid;align-items:center;grid-template-columns:repeat(auto-fit,1.75em)}}.pcr-app .pcr-swatches>button{font-size:1em;position:relative;width:calc(1.75em - 5px);height:calc(1.75em - 5px);border-radius:.15em;cursor:pointer;margin:2.5px;flex-shrink:0;justify-self:center;transition:all .15s;overflow:hidden;background:transparent;z-index:1}.pcr-app .pcr-swatches>button:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%;background:url('data:image/svg+xml;utf8, ');background-size:6px;border-radius:.15em;z-index:-1}.pcr-app .pcr-swatches>button:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:currentColor;border:1px solid rgba(0,0,0,.05);border-radius:.15em;box-sizing:border-box}.pcr-app .pcr-swatches>button:hover{-webkit-filter:brightness(1.05);filter:brightness(1.05)}.pcr-app .pcr-interaction{display:flex;flex-wrap:wrap;align-items:center;margin:0 -.2em}.pcr-app .pcr-interaction>*{margin:0 .2em}.pcr-app .pcr-interaction input{letter-spacing:.07em;font-size:.75em;text-align:center;cursor:pointer;color:#75797e;background:#f1f3f4;border-radius:.15em;transition:all .15s;padding:.45em .5em;margin-top:.75em}.pcr-app .pcr-interaction input:hover{-webkit-filter:brightness(.975);filter:brightness(.975)}.pcr-app .pcr-interaction input:focus{box-shadow:0 0 0 1px hsla(0,0%,100%,.85),0 0 0 3px rgba(66,133,244,.75)}.pcr-app .pcr-interaction .pcr-result{color:#75797e;text-align:left;flex:1 1 8em;min-width:8em;transition:all .2s;border-radius:.15em;background:#f1f3f4;cursor:text}.pcr-app .pcr-interaction .pcr-result::-moz-selection{background:#4285f4;color:#fff}.pcr-app .pcr-interaction .pcr-result::selection{background:#4285f4;color:#fff}.pcr-app .pcr-interaction .pcr-type.active{color:#fff;background:#4285f4}.pcr-app .pcr-interaction .pcr-cancel,.pcr-app .pcr-interaction .pcr-clear,.pcr-app .pcr-interaction .pcr-save{width:auto;color:#fff}.pcr-app .pcr-interaction .pcr-cancel:hover,.pcr-app .pcr-interaction .pcr-clear:hover,.pcr-app .pcr-interaction .pcr-save:hover{-webkit-filter:brightness(.925);filter:brightness(.925)}.pcr-app .pcr-interaction .pcr-save{background:#4285f4}.pcr-app .pcr-interaction .pcr-cancel,.pcr-app .pcr-interaction .pcr-clear{background:#f44250}.pcr-app .pcr-interaction .pcr-cancel:focus,.pcr-app .pcr-interaction .pcr-clear:focus{box-shadow:0 0 0 1px hsla(0,0%,100%,.85),0 0 0 3px rgba(244,66,80,.75)}.pcr-app .pcr-selection .pcr-picker{position:absolute;height:18px;width:18px;border:2px solid #fff;border-radius:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pcr-app .pcr-selection .pcr-color-chooser,.pcr-app .pcr-selection .pcr-color-opacity,.pcr-app .pcr-selection .pcr-color-palette{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:column;cursor:grab;cursor:-webkit-grab}.pcr-app .pcr-selection .pcr-color-chooser:active,.pcr-app .pcr-selection .pcr-color-opacity:active,.pcr-app .pcr-selection .pcr-color-palette:active{cursor:grabbing;cursor:-webkit-grabbing}.pcr-app[data-theme=monolith]{width:14.25em;max-width:95vw;padding:.8em}.pcr-app[data-theme=monolith] .pcr-selection{display:flex;flex-direction:column;justify-content:space-between;flex-grow:1}.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-preview{position:relative;z-index:1;width:100%;height:1em;display:flex;flex-direction:row;justify-content:space-between;margin-bottom:.5em}.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-preview:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%;background:url('data:image/svg+xml;utf8, ');background-size:.5em;border-radius:.15em;z-index:-1}.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-preview .pcr-last-color{cursor:pointer;transition:background-color .3s,box-shadow .3s;border-radius:.15em 0 0 .15em;z-index:2}.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-preview .pcr-current-color{border-radius:0 .15em .15em 0}.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-preview .pcr-current-color,.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-preview .pcr-last-color{background:currentColor;width:50%;height:100%}.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-palette{width:100%;height:8em;z-index:1}.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-palette .pcr-palette{border-radius:.15em;width:100%;height:100%}.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-palette .pcr-palette:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%;background:url('data:image/svg+xml;utf8, ');background-size:.5em;border-radius:.15em;z-index:-1}.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-chooser,.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-opacity{height:.5em;margin-top:.75em}.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-chooser .pcr-picker,.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-opacity .pcr-picker{top:50%;transform:translateY(-50%)}.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-chooser .pcr-slider,.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-opacity .pcr-slider{flex-grow:1;border-radius:50em}.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-chooser .pcr-slider{background:linear-gradient(90deg,red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.pcr-app[data-theme=monolith] .pcr-selection .pcr-color-opacity .pcr-slider{background:linear-gradient(90deg,transparent,#000),url('data:image/svg+xml;utf8, ');background-size:100%,.25em}
\ No newline at end of file