diff --git a/rhsl.min.js b/rhsl.min.js new file mode 100644 index 0000000..67421ec --- /dev/null +++ b/rhsl.min.js @@ -0,0 +1 @@ +"use strict";var rhslCurrentElement=function(){var e=!1;return function(t){if(!t&&!1!==t)return e;t||(t=!1),e=t}}();function rhslFirstFunction(e){var t=document.querySelectorAll("[rhslcolor]");if(e)for(var r=0;r or .";if("INPUT"===e.tagName&&e.type&&"text"!==e.type)throw"Input type must be empty or text."}catch(e){return void console.error("RHSL: Error while trying to add/remove an EventListener: "+e)}r?(e.removeEventListener("click",rhslToggle,!1),e.removeEventListener("input",rhslOnInput,!1)):(t||(console.warn("RHSL: Color not provided. Using #FFFFFF."),t="#FFFFFF"),e.addEventListener("click",rhslToggle,!1),e.addEventListener("input",rhslOnInput,!1),rhslFineChange(e,rhslColorConverter(t,!0)));"refresh"===r&&rhslAddRemove(e,t)}function rhslOnInput(e){rhslToggle(e,!1,!0);var t=rhslColorConverter(e.target.value,!0,!0);t[0]=Math.round(t[0]),t[1]=Math.round(t[1]),t[2]=Math.round(t[2]),rhslFineChange(e.target,t,!1,!0)}function rhslToggle(e,t,r){if(document.getElementById("rhslcolorpickercontainer"))document.body.removeChild(document.getElementById("rhslcolorpickercontainer")),document.body.removeEventListener("mousedown",rhslHideColorPicker,!0),rhslCurrentElement(!1);else{t||(t=e.target);var l,o,n,s,i,h=t.getAttribute("rhslcolor");if(h){h=rhslProperties(h);for(var a=0;a=140)var A=" justify-content: center;";else A="";i="
'}else i="";var y=document.createElement("div");y.id="rhslcolorpickercontainer",y.setAttribute("style",u[0]),y.innerHTML='
'+i,document.body.appendChild(y),document.body.addEventListener("mousedown",rhslHideColorPicker,!0),rhslCurrentElement(t),rhslAlignElement(y,t,o)}r&&rhslToggle(e,t)}function rhslProperties(e,t){(e=e.split(";")).pop();for(var r=0;rdocument.body.offsetWidth?rhslAlignElement(e,t,"right",++l):e.style.left=n+"px";else if("right"===r&&l<4){(n=o[0]+t.offsetWidth-e.offsetWidth+5)<0?rhslAlignElement(e,t,"left",++l):e.style.left=n+"px"}else if("center"===r||l>=4){var n;((n=o[0]-(e.offsetWidth-t.offsetWidth)/2)<0||n+e.offsetWidth/2>document.body.offsetWidth)&&l<4?rhslAlignElement(e,t,"left",++l):e.style.left=n+"px"}}function rhslHideColorPicker(e){var t=e.target||e.srcElement,r=document.getElementById("rhslcolorpickercontainer");t===r||isChildOf(t,r)||rhslToggle()}function isChildOf(e,t){return e.parentNode===t||null!==e.parentNode&&isChildOf(e.parentNode,t)}function rhslColorPicker(e,t,r,l,o){if(t.which&&t.buttons||r){var n=e.children[0],s=e.children[1],i=rhslGetPosition(n);if(l)var h=Math.round(l[0]/360*n.clientWidth),a=Math.round((100-l[1])/100*n.clientHeight),u=Math.round((100-l[2])/100*s.clientHeight);else{h=t.clientX,a=t.clientY;if(h>=rhslGetPosition(s)[0]){u=a-i[1];h=!1,a=!1}else{u=!1;h-=i[0],a-=i[1]}if(window.getSelection)var c=window.getSelection();else if(document.selection)c=document.selection.createRange();c&&c.rangeCount&&c.removeAllRanges(),c&&c.text>""&&document.selection.empty()}var d=rhslCurrentElement();if(d.getAttribute("rhslcolor").match(/hsltype: ?luv;/)&&window.hsluv)var g=!0;else g=!1;if(h||0===h){h<0&&(h=0),h>n.clientWidth&&(h=n.clientWidth),n.children[0].firstElementChild.style.left=h-10+"px";var m=Math.round(h/n.clientWidth*360)}else m=Math.round((Number(n.children[0].firstElementChild.style.left.match(/-?\d+/))+10)/n.clientWidth*360);if(a||0===a){a<0&&(a=0),a>n.clientHeight&&(a=n.clientHeight),n.children[0].firstElementChild.style.top=a-10+"px";var v=Math.round((n.clientHeight-a)/n.clientHeight*100)}else v=Math.round(Math.abs(Number(n.children[0].firstElementChild.style.top.match(/-?\d+/))+10-n.clientHeight)/n.clientHeight*100);if(u||0===u){u<0&&(u=0),u>s.clientHeight&&(u=s.clientHeight),s.firstElementChild.style.top=u-10+"px";var f=Math.round((n.clientHeight-u)/n.clientHeight*100)}else f=Math.round(Math.abs(Number(s.firstElementChild.style.top.match(/-?\d+/))+10-n.clientHeight)/n.clientHeight*100);if(s.style.background=g?"linear-gradient(#FFFFFF, "+window.hsluv.hsluvToHex([m,v,90])+", "+window.hsluv.hsluvToHex([m,v,80])+", "+window.hsluv.hsluvToHex([m,v,70])+", "+window.hsluv.hsluvToHex([m,v,60])+", "+window.hsluv.hsluvToHex([m,v,50])+", "+window.hsluv.hsluvToHex([m,v,40])+", "+window.hsluv.hsluvToHex([m,v,30])+", "+window.hsluv.hsluvToHex([m,v,20])+", "+window.hsluv.hsluvToHex([m,v,10])+", #000000)":"linear-gradient(hsl("+m+", "+v+"%, 100%), hsl("+m+", "+v+"%, 50%), hsl("+m+", "+v+"%, 0%))",d.getAttribute("rhslcolor").match(/inputs: ?true;/)&&!o){l=[m,v,f];for(var p=document.getElementsByClassName("rhslcolorinput"),b=0;b4)&&(l=!0);for(var o=0;o<3;o++)(e[o]<0||e[o]>255||isNaN(e[o]))&&(l=!0);if(!l)return t?((e=rgbToHsl(e[0],e[1],e[2]))[0]*=360,e[1]*=100,e[2]*=100):(e[0]=Number(e[0]),e[1]=Number(e[1]),e[2]=Number(e[2])),e}else if(e.match(/^hsl/)){if(e=(e=e.replace(/[hsla%()]/g,"")).split(","),(!Array.isArray(e)||e.length>4)&&(l=!0),(e[0]<0||e[0]>360||isNaN(e[0]))&&(l=!0),(e[1]<0||e[1]>100||isNaN(e[1]))&&(l=!0),(e[2]<0||e[2]>100||isNaN(e[2]))&&(l=!0),!l)return t?(e[0]=Number(e[0]),e[1]=Number(e[1]),e[2]=Number(e[2])):(e[0]/=360,e[1]/=100,e[2]/=100,e=hslToRgb(e[0],e[1],e[2])),e}else l=!0;if(l)return r||console.warn("RHSL: The color must be in either of these formats: #0F0, #00FF00, rgb(0, 255, 0) or hsl(120, 100%, 50%). Their alpha counterparts are supported, but the color picker will discard the alpha value provided. If using HSL values, the hue must not be over 360. Using #000000."),[0,0,0]}function rhslColorParser(e,t,r,l){return t.match(/^rgb$/)?(r?((e=window.hsluv.hsluvToRgb(e))[0]*=255,e[1]*=255,e[2]*=255):e=rhslColorConverter("hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)"),e[0]=Math.round(e[0]),e[1]=Math.round(e[1]),e[2]=Math.round(e[2]),l||(e="rgb("+e[0]+", "+e[1]+", "+e[2]+")")):t.match(/^hsl$/)?(r&&((e=window.hsluv.hsluvToRgb(e))[0]=Math.round(255*e[0]),e[1]=Math.round(255*e[1]),e[2]=Math.round(255*e[2]),e=rhslColorConverter("rgb("+e[0]+", "+e[1]+", "+e[2]+")",!0)),e[0]=Math.round(e[0]),e[1]=Math.round(e[1]),e[2]=Math.round(e[2]),l||(e="hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)")):r?e=window.hsluv.hsluvToHex(e).toUpperCase():((e=[(e=rhslColorConverter("hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)"))[0].toString(16),e[1].toString(16),e[2].toString(16)])[0].length<2&&(e[0]="0"+e[0]),e[1].length<2&&(e[1]="0"+e[1]),e[2].length<2&&(e[2]="0"+e[2]),e="#"+e.join("").toUpperCase()),e}function rhslContrast(e,t){e.forEach(rhslSrgbMadness);var r=.2126*e[0]+.7152*e[1]+.0722*e[2],l=Math.round(1.05/(r+.05)*10)/10;return Math.round((r+.05)/.05*10)/10>l?"#000000":"#FFFFFF"}function rhslSrgbMadness(e,t,r){(e/=255)<=.03928?e/=12.92:e=Math.pow((e+.055)/1.055,2.4),r[t]=e}function rgbToHsl(e,t,r){e/=255,t/=255,r/=255;var l,o,n=Math.max(e,t,r),s=Math.min(e,t,r),i=(n+s)/2;if(n==s)l=o=0;else{var h=n-s;switch(o=i>.5?h/(2-n-s):h/(n+s),n){case e:l=(t-r)/h+(t1&&(r-=1),r<1/6?e+6*(t-e)*r:r<.5?t:r<2/3?e+(t-e)*(2/3-r)*6:e},i=r<.5?r*(1+t):r+t-r*t,h=2*r-i;l=s(h,i,e+1/3),o=s(h,i,e),n=s(h,i,e-1/3)}return[Math.round(255*l),Math.round(255*o),Math.round(255*n)]}window.onload=function(){rhslFirstFunction()}; \ No newline at end of file