(function(){"use strict";/** * @copyright (C) 2019 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */(function(k){var S=/^#([a-z0-9]{1,2})([a-z0-9]{1,2})([a-z0-9]{1,2})$/i,R=/^rgba?\(([0-9]+)[\D]+([0-9]+)[\D]+([0-9]+)(?:[\D]+([0-9](?:.\d+)?))?\)$/i,V=/^hsla?\(([0-9]+)[\D]+([0-9]+)[\D]+([0-9]+)[\D]+([0-9](?:.\d+)?)?\)$/i,y=/^(([0-1])|(0\\.[0-9]+)|([0-9]{1,2})|(100))$/,H=/^[0-9]{1,3}$/,m=function(){function p(h){var t=this;this.messageSpan=h.querySelector(".form-control-feedback"),this.mainInput=h.querySelector(".color-input"),this.input=h.querySelector("#slider-input"),this.sliders=h.querySelectorAll(".color-slider"),this.hueSlider=h.querySelector("#hue-slider"),this.saturationSlider=h.querySelector("#saturation-slider"),this.lightSlider=h.querySelector("#light-slider"),this.alphaSlider=h.querySelector("#alpha-slider"),this.color=h.dataset.color||"",this.default=h.dataset.default||"",this.format=this.input.dataset.format||"hex",this.saveFormat=this.mainInput.dataset.format||"hex",this.preview=h.dataset.preview==="true",this.setAlpha=this.format==="hsla"||this.format==="rgba",this.hue=360,this.saturation=1,this.light=1,this.alpha=1,this.defaultHsl=[this.hue,this.saturation,this.light,this.alpha],this.setInitValue(),this.setBackground(),this.preview?this.setInputPattern():this.input.classList.add("hidden"),this.mainInput.classList.add("hidden"),Array.prototype.forEach.call(this.sliders,function(a){a.addEventListener("change",function(){return t.updateValue(a)})}),this.input.addEventListener("change",function(){return t.changeInput(t.input)})}var n=p.prototype;return n.updateValue=function(t){this.showError("");var a=this.getSliderValueAsHsl(t.value,t.dataset.type),e=this.hslToRgb(a);this.hue=a[0],this.saturation=a[1],this.light=a[2],this.alpha=a[3],this.input.style.border="2px solid "+this.getRgbString(e),this.setSliderValues(a,t.dataset.type),this.setInputValue(a),this.setBackground(t)},n.changeInput=function(t){var a=[this.hue,this.saturation,this.light,this.alpha];if(!t.value){this.mainInput.value="",this.showError("");return}if(!this.checkValue(t.value))this.showError("JFIELD_COLOR_ERROR_WRONG_FORMAT"),this.setInputValue(this.defaultHsl);else{switch(this.showError(""),this.format){case"hue":a[0]=t.value,this.hue=t.value;break;case"saturation":a[1]=t.value,this.saturation=t.value;break;case"light":a[2]=t.value,this.light=t.value;break;case"alpha":a[3]=t.value,this.alpha=t.value;break;default:a=this.getHsl(t.value)}this.setSliderValues(a),this.setInputValue(a,!0)}},n.checkValue=function(t,a){var e=a||this.format;switch(e){case"hue":return t<=360&&H.test(t);case"saturation":case"light":case"alpha":return y.test(t);case"hsl":case"hsla":return V.test(t);case"hex":return S.test(t);case"rgb":case"rgba":return R.test(t);default:return!1}},n.setInputPattern=function(){var t;switch(this.format){case"hue":t=H.source.slice(1,-1);break;case"saturation":case"light":case"alpha":t=y.source.slice(1,-1);break;case"hsl":case"hsla":t=V.source.slice(1,-1);break;case"rgb":t=R.source.slice(1,-1);break;case"hex":default:t=S.source.slice(1,-1)}this.input.setAttribute("pattern",t)},n.setBackground=function(t){var a=this;Array.prototype.forEach.call(this.sliders,function(e){if(t!==e){var s=[],i=100;if(s.push(a.getSliderValueAsRgb(0,e.dataset.type)),e.dataset.type==="hue"){var r=Math.floor(18);i=360;for(var l=0;l<=360;l+=r)s.push(a.getSliderValueAsRgb(l,e.dataset.type))}else for(var u=0;u<=100;u+=10)s.push(a.getSliderValueAsRgb(u,e.dataset.type));s.push(a.getSliderValueAsRgb(i,e.dataset.type)),s=s.map(function(g){return a.getRgbString(g)}),e.style.background="linear-gradient(90deg, "+s.join(",")+")",e.style.webkitAppearance="none"}})},n.setInitValue=function(){var t=window.getComputedStyle(this.input).getPropertyValue(this.default);if(this.default=t||this.default,this.color===""||typeof this.color>"u"){this.input.value="",this.mainInput.value="";return}var a=this.checkValue(this.color,this.saveFormat)?this.color:this.default;if(!a){this.showError("JFIELD_COLOR_ERROR_NO_COLOUR");return}var e=[];/^[0-9]+$/.test(a)?(e=this.default&&this.getHsl(this.default),this.format==="hue"&&(e[0]=a),this.format==="saturation"&&(e[1]=a>1?a/100:a),this.format==="light"&&(e[2]=a>1?a/100:a),this.format==="alpha"&&(e[3]=a>1?a/100:a)):e=this.getHsl(a);var s=e;this.hue=s[0],this.saturation=s[1],this.light=s[2],this.alpha=e[4]||this.alpha,this.defaultHsl=this.default?this.getHsl(this.default):e,this.setSliderValues(e),this.setInputValue(e),this.input.style.border="2px solid "+this.getRgbString(this.hslToRgb(e))},n.showError=function(t){this.messageSpan.innerText=t?Joomla.Text._(t):""},n.getHsl=function(t){var a=[];if(Array.isArray(t))a=t;else if(S.test(t))a=this.hexToHsl(t);else if(R.test(t))a=this.rgbToHsl(t);else if(V.test(t)){var e=t.match(V);a=[e[1],e[2],e[3],e[4]]}else return this.showError("JFIELD_COLOR_ERROR_CONVERT_HSL"),this.defaultHsl;var s;for(s=1;s<a.length;s+=1)a[s]=a[s]>1?a[s]/100:a[s];return a},n.getSliderValueAsHsl=function(t,a){var e=this.hue,s=this.saturation,i=this.light,r=this.alpha;switch(a){case"alpha":r=t;break;case"saturation":s=t;break;case"light":i=t;break;case"hue":default:e=t}return i>1&&(i/=100),s>1&&(s/=100),r>1&&(r/=100),[e,s,i,r]},n.getSliderValueAsRgb=function(t,a){return this.hslToRgb(this.getSliderValueAsHsl(t,a))},n.setSliderValues=function(t,a){var e=t[0],s=t[1],i=t[2],r=t[3];this.hueSlider&&a!=="hue"&&(this.hueSlider.value=Math.round(e)),this.saturationSlider&&a!=="saturation"&&(this.saturationSlider.value=Math.round(s*100)),this.lightSlider&&a!=="light"&&(this.lightSlider.value=Math.round(i*100)),r&&this.alphaSlider&&a!=="alpha"&&(this.alphaSlider.value=Math.round(r*100))},n.setInputValue=function(t,a){var e=this,s=[this.mainInput];a||s.push(this.input),s.forEach(function(i){var r;switch(i.dataset.format){case"hsl":r=e.getHslString(t);break;case"hsla":r=e.getHslString(t,!0);break;case"rgb":r=e.getRgbString(e.hslToRgb(t));break;case"rgba":r=e.getRgbString(e.hslToRgb(t),!0);break;case"hex":r=e.rgbToHex(e.hslToRgb(t));break;case"alpha":r=Math.round(t[3]*100);break;case"saturation":r=Math.round(t[1]*100);break;case"light":r=Math.round(t[2]*100);break;case"hue":default:r=Math.round(t[0]);break}i.value=r})},n.getRgbString=function(t,a){var e=t[0],s=t[1],i=t[2],r=t[3];if(a||this.setAlpha){var l=typeof r>"u"?this.alpha:r;return"rgba("+e+", "+s+", "+i+", "+l+")"}return"rgb("+e+", "+s+", "+i+")"},n.getHslString=function(t,a){var e=t[0],s=t[1],i=t[2],r=t[3];s*=100,i*=100;var l=[e,s,i].map(function(u){return Math.round(u)});return e=l[0],s=l[1],i=l[2],a||this.setAlpha?(r=r||this.alpha,"hsla("+e+", "+s+"%, "+i+"%, "+r+")"):"hsl("+e+", "+s+"%, "+i+"%)"},n.rgbToHex=function(t){var a=t[0].toString(16).toUpperCase(),e=t[1].toString(16).toUpperCase(),s=t[2].toString(16).toUpperCase();return a=a.length===1?""+a+a:a,e=e.length===1?""+e+e:e,s=s.length===1?""+s+s:s,"#"+a+e+s},n.rgbToHsl=function(t){var a=t;if(typeof t=="string"){var e=t.match(R);a=[e[1],e[2],e[3],e[4]]}var s=a.map(function(v){return v>1?v/255:v}),i=s[0],r=s[1],l=s[2],u=Math.max(i,r,l),g=Math.min(i,r,l),f=(u+g)/2,b=u-g,o=0,d=0,c=a[3]||t[3]||this.alpha;if(u!==g)switch(u===0?d=u:g===1?d=g:d=(u-f)/Math.min(f,1-f),u){case i:o=60*(r-l)/b;break;case r:o=60*(2+(l-i)/b);break;case l:default:o=60*(4+(i-r)/b);break}return o=o<0?o+360:o,c=c>1?c/100:c,[o,d,f,c]},n.hexToHsl=function(t){var a=t.match(S),e=a[1],s=a[2],i=a[3],r=[parseInt(e,16),parseInt(s,16),parseInt(i,16)];return this.rgbToHsl(r)},n.hslToRgb=function(t){var a=t[0],e=t[1],s=t[2],i=t[3],r=1,l=1,u=1,g=e>1?e/100:e,f=s>1?s/100:s,b=i>1?i/100:i;if(a<0||a>360||g<0||g>1||f<0||f>1)return this.showError("JFIELD_COLOR_ERROR_CONVERT_HSL"),this.hslToRgb(this.defaultHsl);var o=(1-Math.abs(2*f-1))*g,d=a/60,c=o*(1-Math.abs(d%2-1)),v=f-o/2;if(a>=0&&a<60)r=o,l=c,u=0;else if(a>=60&&a<120)r=c,l=o,u=0;else if(a>=120&&a<180)r=0,l=o,u=c;else if(a>=180&&a<240)r=0,l=c,u=o;else if(a>=240&&a<300)r=c,l=0,u=o;else if(a>=300&&a<=360)r=o,l=0,u=c;else return this.showError("JFIELD_COLOR_ERROR_CONVERT_HUE"),this.hslToRgb(this.defaultHsl);var E=[r,l,u].map(function(I){return Math.round((I+v)*255)});return E.push(b),E},p}();k.addEventListener("DOMContentLoaded",function(){var p=k.querySelectorAll(".color-slider-wrapper");p&&Array.prototype.forEach.call(p,function(n){new m(n)})})})(document)})();