diff --git a/_server/blockly/MotaAction.g4 b/_server/blockly/MotaAction.g4 index 09610c7d..94075d7b 100644 --- a/_server/blockly/MotaAction.g4 +++ b/_server/blockly/MotaAction.g4 @@ -1118,26 +1118,19 @@ return code; */; setFg_0_s - : '更改画面色调' Number ',' Number ',' Number ',' Number '动画时间' Int? '不等待执行完毕' Bool Newline + : '更改画面色调' EvalString '动画时间' Int? '不等待执行完毕' Bool Newline /* setFg_0_s tooltip : setFg: 更改画面色调,动画时间可不填 helpUrl : https://h5mota.com/games/template/docs/#/event?id=setfg%EF%BC%9A%E6%9B%B4%E6%94%B9%E7%94%BB%E9%9D%A2%E8%89%B2%E8%B0%83 -default : [255,255,255,1,500,false] +default : ["255,255,255,1",500,false] colour : this.soundColor -var limit = function(v,min,max) { - if(v>max) return max; - if(vmax) return max; - if(ve?b-d:-d);return c}function g(a,b,c){var d=r;return(d.max(a.r-b.r,b.r-a.r)+d.max(a.g-b.g,b.g-a.g)+d.max(a.b-b.b,b.b-a.b))*(c?255:1)/765}function h(a,b){for(var c=b?1:255,d=[a.r/c,a.g/c,a.b/c],e=m.options.luminance,f=d.length;f--;)d[f]=d[f]<=.03928?d[f]/12.92:r.pow((d[f]+.055)/1.055,2.4);return e.r*d[0]+e.g*d[1]+e.b*d[2]}function i(a,c,d,e){var f={},g=d!==b?d:1,h=e!==b?e:1,i=g+h*(1-g);for(var j in a)f[j]=(a[j]*g+c[j]*h*(1-g))/i;return f.a=i,f}function j(a,b){var c=1;return c=a>=b?(a+.05)/(b+.05):(b+.05)/(a+.05),r.round(100*c)/100}function k(a,b,c){return a>c?c:b>a?b:a}var l={rgb:{r:[0,255],g:[0,255],b:[0,255]},hsv:{h:[0,360],s:[0,100],v:[0,100]},hsl:{h:[0,360],s:[0,100],l:[0,100]},cmy:{c:[0,100],m:[0,100],y:[0,100]},cmyk:{c:[0,100],m:[0,100],y:[0,100],k:[0,100]},Lab:{L:[0,100],a:[-128,127],b:[-128,127]},XYZ:{X:[0,100],Y:[0,100],Z:[0,100]},alpha:{alpha:[0,1]},HEX:{HEX:[0,16777215]}},m={},n={},o={X:[.4124564,.3575761,.1804375],Y:[.2126729,.7151522,.072175],Z:[.0193339,.119192,.9503041],R:[3.2404542,-1.5371385,-.4985314],G:[-.969266,1.8760108,.041556],B:[.0556434,-.2040259,1.0572252]},p={r:.298954,g:.586434,b:.114612},q={r:.2126,g:.7152,b:.0722},r=a.Math,s=(a.parseInt,a.Colors=function(a){this.colors={RND:{}},this.options={color:"rgba(204, 82, 37, 0.8)",XYZMatrix:o,grey:p,luminance:q,valueRanges:l},t(this,a||{})}),t=function(a,d){var e,f,g=a.options;u(a);for(var h in d)d[h]!==b&&(g[h]=d[h]);e=g.XYZMatrix,d.XYZReference||(g.XYZReference={X:e.X[0]+e.X[1]+e.X[2],Y:e.Y[0]+e.Y[1]+e.Y[2],Z:e.Z[0]+e.Z[1]+e.Z[2]}),f=g.customBG,g.customBG="string"==typeof f?v.txt2color(f).rgb:f,n=c(a.colors,g.color,b,!0)},u=function(a){m!==a&&(m=a,n=a.colors)};s.prototype.setColor=function(a,d,f){return u(this),a?c(this.colors,a,d,b,f):(f!==b&&(this.colors.alpha=k(f,0,1)),e(d))},s.prototype.getColor=function(a){var c=this.colors,d=0;if(a){for(a=a.split(".");c[a[d]];)c=c[a[d++]];a.length!==d&&(c=b)}return c},s.prototype.setCustomBackground=function(a){return u(this),this.options.customBG="string"==typeof a?v.txt2color(a).rgb:a,c(this.colors,b,"rgb")},s.prototype.saveAsBackground=function(){return u(this),c(this.colors,b,"rgb",!0)},s.prototype.convertColor=function(a,b){var c=v,d=l,e=b.split("2"),f=e[0],g=e[1],h=/(?:RG|HS|CM|LA)/,i=h.test(f),j=h.test(g),k={LAB:"Lab"},m=function(a,b,c){var e={},f="Lab"===b?1:0;for(var g in a)e[g]=c?r.round(a[g]*(f||d[b][g][1])):a[g]/(f||d[b][g][1]);return e};return f=d[f]?f:k[f]||f.toLowerCase(),g=d[g]?g:k[g]||g.toLowerCase(),i&&"RGB2HEX"!==b&&(a=m(a,f)),a=f===g?a:c[f+"2"+g]?c[f+"2"+g](a,!0):"HEX"===g?c.RGB2HEX("RGB2HEX"===b?a:m("rgb"===f?a:c[f+"2rgb"](a,!0),"rgb",!0)):c["rgb2"+g](c[f+"2rgb"](a,!0),!0),j&&(a=m(a,g,!0)),a},s.prototype.toString=function(a,b){return v.color2text((a||"rgb").toLowerCase(),this.colors,b)};var v={txt2color:function(a){var b={},c=a.replace(/(?:#|\)|%)/g,"").split("("),d=(c[1]||"").split(/,\s*/),e=c[1]?c[0].substr(0,3):"rgb",f="";if(b.type=e,b[e]={},c[1])for(var g=3;g--;)f=e[g]||e.charAt(g),b[e][f]=+d[g]/l[e][f][1];else b.rgb=v.HEX2rgb(c[0]);return b.alpha=d[3]?+d[3]:1,b},color2text:function(a,b,c){var d=c!==!1&&r.round(100*b.alpha)/100,e="number"==typeof d&&c!==!1&&(c||1!==d),f=b.RND.rgb,g=b.RND.hsl,h="hex"===a&&e,i="hex"===a&&!h,j="rgb"===a||h,k=j?f.r+", "+f.g+", "+f.b:i?"#"+b.HEX:g.h+", "+g.s+"%, "+g.l+"%";return i?k:(h?"rgb":a)+(e?"a":"")+"("+k+(e?", "+d:"")+")"},RGB2HEX:function(a){return((a.r<16?"0":"")+a.r.toString(16)+(a.g<16?"0":"")+a.g.toString(16)+(a.b<16?"0":"")+a.b.toString(16)).toUpperCase()},HEX2rgb:function(a){return a=a.split(""),{r:+("0x"+a[0]+a[a[3]?1:0])/255,g:+("0x"+a[a[3]?2:1]+(a[3]||a[1]))/255,b:+("0x"+(a[4]||a[2])+(a[5]||a[2]))/255}},hue2RGB:function(a){var b=r,c=6*a,d=~~c%6,e=6===c?0:c-d;return{r:b.round(255*[1,1-e,0,0,e,1][d]),g:b.round(255*[e,1,1,1-e,0,0][d]),b:b.round(255*[0,0,e,1,1,1-e][d])}},rgb2hsv:function(a){var b,c,d,e=r,f=a.r,g=a.g,h=a.b,i=0;return h>g&&(g=h+(h=g,0),i=-1),c=h,g>f&&(f=g+(g=f,0),i=-2/6-i,c=e.min(g,h)),b=f-c,d=f?b/f:0,{h:1e-15>d?n&&n.hsl&&n.hsl.h||0:b?e.abs(i+(g-h)/(6*b)):0,s:f?b/f:n&&n.hsv&&n.hsv.s||0,v:f}},hsv2rgb:function(a){var b=6*a.h,c=a.s,d=a.v,e=~~b,f=b-e,g=d*(1-c),h=d*(1-f*c),i=d*(1-(1-f)*c),j=e%6;return{r:[d,h,g,g,i,d][j],g:[i,d,d,h,g,g][j],b:[g,g,i,d,d,h][j]}},hsv2hsl:function(a){var b=(2-a.s)*a.v,c=a.s*a.v;return c=a.s?1>b?b?c/b:0:c/(2-b):0,{h:a.h,s:a.v||c?c:n&&n.hsl&&n.hsl.s||0,l:b/2}},rgb2hsl:function(a,b){var c=v.rgb2hsv(a);return v.hsv2hsl(b?c:n.hsv=c)},hsl2rgb:function(a){var b=6*a.h,c=a.s,d=a.l,e=.5>d?d*(1+c):d+c-c*d,f=d+d-e,g=e?(e-f)/e:0,h=~~b,i=b-h,j=e*g*i,k=f+j,l=e-j,m=h%6;return{r:[e,l,f,f,k,e][m],g:[k,e,e,l,f,f][m],b:[f,f,k,e,e,l][m]}},rgb2cmy:function(a){return{c:1-a.r,m:1-a.g,y:1-a.b}},cmy2cmyk:function(a){var b=r,c=b.min(b.min(a.c,a.m),a.y),d=1-c||1e-20;return{c:(a.c-c)/d,m:(a.m-c)/d,y:(a.y-c)/d,k:c}},cmyk2cmy:function(a){var b=a.k;return{c:a.c*(1-b)+b,m:a.m*(1-b)+b,y:a.y*(1-b)+b}},cmy2rgb:function(a){return{r:1-a.c,g:1-a.m,b:1-a.y}},rgb2cmyk:function(a,b){var c=v.rgb2cmy(a);return v.cmy2cmyk(b?c:n.cmy=c)},cmyk2rgb:function(a,b){var c=v.cmyk2cmy(a);return v.cmy2rgb(b?c:n.cmy=c)},XYZ2rgb:function(a,b){var c=r,d=m.options.XYZMatrix,e=a.X,f=a.Y,g=a.Z,h=e*d.R[0]+f*d.R[1]+g*d.R[2],i=e*d.G[0]+f*d.G[1]+g*d.G[2],j=e*d.B[0]+f*d.B[1]+g*d.B[2],l=1/2.4;return d=.0031308,h=h>d?1.055*c.pow(h,l)-.055:12.92*h,i=i>d?1.055*c.pow(i,l)-.055:12.92*i,j=j>d?1.055*c.pow(j,l)-.055:12.92*j,b||(n._rgb={r:h,g:i,b:j}),{r:k(h,0,1),g:k(i,0,1),b:k(j,0,1)}},rgb2XYZ:function(a){var b=r,c=m.options.XYZMatrix,d=a.r,e=a.g,f=a.b,g=.04045;return d=d>g?b.pow((d+.055)/1.055,2.4):d/12.92,e=e>g?b.pow((e+.055)/1.055,2.4):e/12.92,f=f>g?b.pow((f+.055)/1.055,2.4):f/12.92,{X:d*c.X[0]+e*c.X[1]+f*c.X[2],Y:d*c.Y[0]+e*c.Y[1]+f*c.Y[2],Z:d*c.Z[0]+e*c.Z[1]+f*c.Z[2]}},XYZ2Lab:function(a){var b=r,c=m.options.XYZReference,d=a.X/c.X,e=a.Y/c.Y,f=a.Z/c.Z,g=16/116,h=1/3,i=.008856,j=7.787037;return d=d>i?b.pow(d,h):j*d+g,e=e>i?b.pow(e,h):j*e+g,f=f>i?b.pow(f,h):j*f+g,{L:116*e-16,a:500*(d-e),b:200*(e-f)}},Lab2XYZ:function(a){var b=r,c=m.options.XYZReference,d=(a.L+16)/116,e=a.a/500+d,f=d-a.b/200,g=b.pow(e,3),h=b.pow(d,3),i=b.pow(f,3),j=16/116,k=.008856,l=7.787037;return{X:(g>k?g:(e-j)/l)*c.X,Y:(h>k?h:(d-j)/l)*c.Y,Z:(i>k?i:(f-j)/l)*c.Z}},rgb2Lab:function(a,b){var c=v.rgb2XYZ(a);return v.XYZ2Lab(b?c:n.XYZ=c)},Lab2rgb:function(a,b){var c=v.Lab2XYZ(a);return v.XYZ2rgb(b?c:n.XYZ=c,b)}}}(window),function(a){"use strict";var b='^§app alpha-bg-w">^§slds">^§sldl-1">$^§sldl-2">$^§sldl-3">$^§curm">$^§sldr-1">$^§sldr-2">$^§sldr-4">$^§curl">$^§curr">$$^§opacity">|^§opacity-slider">$$$^§memo">^§raster">$^§raster-bg">$|$|$|$|$|$|$|$|$^§memo-store">$^§memo-cursor">$$^§panel">^§hsv">^hsl-mode §ß">$^hsv-h-ß §ß">H$^hsv-h-~ §~">-^§nsarrow">$$^hsl-h-@ §@">H$^hsv-s-ß §ß">S$^hsv-s-~ §~">-$^hsl-s-@ §@">S$^hsv-v-ß §ß">B$^hsv-v-~ §~">-$^hsl-l-@ §@">L$$^§hsl §hide">^hsv-mode §ß">$^hsl-h-ß §ß">H$^hsl-h-~ §~">-$^hsv-h-@ §@">H$^hsl-s-ß §ß">S$^hsl-s-~ §~">-$^hsv-s-@ §@">S$^hsl-l-ß §ß">L$^hsl-l-~ §~">-$^hsv-v-@ §@">B$$^§rgb">^rgb-r-ß §ß">R$^rgb-r-~ §~">-$^rgb-r-@ §ß"> $^rgb-g-ß §ß">G$^rgb-g-~ §~">-$^rgb-g-@ §ß"> $^rgb-b-ß §ß">B$^rgb-b-~ §~">-$^rgb-b-@ §ß"> $$^§cmyk">^Lab-mode §ß">$^cmyk-c-ß §@">C$^cmyk-c-~ §~">-$^Lab-L-@ §@">L$^cmyk-m-ß §@">M$^cmyk-m-~ §~">-$^Lab-a-@ §@">a$^cmyk-y-ß §@">Y$^cmyk-y-~ §~">-$^Lab-b-@ §@">b$^cmyk-k-ß §@">K$^cmyk-k-~ §~">-$^Lab-x-@ §ß"> $$^§Lab §hide">^cmyk-mode §ß">$^Lab-L-ß §@">L$^Lab-L-~ §~">-$^cmyk-c-@ §@">C$^Lab-a-ß §@">a$^Lab-a-~ §~">-$^cmyk-m-@ §@">M$^Lab-b-ß §@">b$^Lab-b-~ §~">-$^cmyk-y-@ §@">Y$^Lab-x-ß §@"> $^Lab-x-~ §~">-$^cmyk-k-@ §@">K$$^§alpha">^alpha-ß §ß">A$^alpha-~ §~">-$^alpha-@ §ß">W$$^§HEX">^HEX-ß §ß">#$^HEX-~ §~">-$^HEX-@ §ß">M$$^§ctrl">^§raster">$^§cont">$^§cold">$^§col1">| $$^§col2">| $$^§bres">RESET$^§bsav">SAVE$$$^§exit">$^§resize">$^§resizer">|$$$'.replace(/\^/g,'
").replace(/~/g,"disp").replace(/ß/g,"butt").replace(/@/g,"labl").replace(/\|/g,"
"),c="är^1,äg^1,äb^1,öh^1,öh?1,öh?2,ös?1,öv?1,üh^1,üh?1,üh?2,üs?1,ül?1,.no-rgb-r är?2,.no-rgb-r är?3,.no-rgb-r är?4,.no-rgb-g äg?2,.no-rgb-g äg?3,.no-rgb-g äg?4,.no-rgb-b äb?2,.no-rgb-b äb?3,.no-rgb-b äb?4{visibility:hidden}är^2,är^3,äg^2,äg^3,äb^2,äb^3{@-image:url(_patches.png)}.§slds div{@-image:url(_vertical.png)}öh^2,ös^1,öv^1,üh^2,üs^1,ül^1{@-image:url(_horizontal.png)}ös?4,öv^3,üs?4,ül^3{@:#000}üs?3,ül^4{@:#fff}är?1{@-color:#f00}äg?1{@-color:#0f0}äb?1{@-color:#00f}är^2{@|-1664px 0}är^3{@|-896px 0}är?1,äg?1,äb?1,öh^3,ös^2,öv?2Ü-2432Öär?2Ü-2944Öär?3Ü-4480Öär?4Ü-3202Öäg^2Äöh^2{@|-640px 0}äg^3{@|-384px 0}äg?2Ü-4736Öäg?3Ü-3968Öäg?4Ü-3712Öäb^2{@|-1152px 0}äb^3{@|-1408px 0}äb?2Ü-3456Öäb?3Ü-4224Öäb?4Ü-2688Ööh^2Äär^3Ääb?4Ü0}öh?4,üh?4Ü-1664Öös^1,öv^1,üs^1,ül^1Ääg^3{@|-256px 0}ös^3,öv?4,üs^3,ül?4Ü-2176Öös?2,öv^2Ü-1920Öüh^2{@|-768px 0}üh^3,üs^2,ül?2Ü-5184Öüs?2,ül^2Ü-5824Ö.S är^2{@|-128px -128Ö.S är?1Ääg?1Ääb?1Äöh^3Äös^2Äöv?2Ü-1408Ö.S är?2Ääb^3Ü-128Ö.S är?3Ü-896Ö.S är?4Ü-256Ö.S äg^2{@|-256px -128Ö.S äg?2Ü-1024Ö.S äg?3Ü-640Ö.S äg?4Ü-512Ö.S äb^2{@|-128px 0}.S äb?2Ü-384Ö.S äb?3Ü-768Ö.S öh?4Äüh?4Ü-1536Ö.S ös^1Äöv^1Äüs^1Äül^1{@|-512px 0}.S ös^3Äöv?4Äüs^3Äül?4Ü-1280Ö.S ös?2Äöv^2Ü-1152Ö.S üh^2{@|-1024px 0}.S üh^3Äüs^2Äül?2Ü-5440Ö.S üs?2Äül^2Ü-5696Ö.XXS ös^2,.XXS öv?2Ü-5120Ö.XXS ös^3,.XXS öv?4,.XXS üs^3,.XXS ül^3,.XXS ül?4Ü-5056Ö.XXS ös?2,.XXS öv^2Ü-4992Ö.XXS üs^2,.XXS ül?2Ü-5568Ö.XXS üs?2,.XXS ül^2Ü-5632Ö".replace(/Ü/g,"{@|0 ").replace(/Ö/g,"px}").replace(/Ä/g,",.S ").replace(/\|/g,"-position:").replace(/@/g,"background").replace(/ü/g,".hsl-").replace(/ö/g,".hsv-").replace(/ä/g,".rgb-").replace(/~/g," .no-rgb-}").replace(/\?/g," .§sldr-").replace(/\^/g," .§sldl-"),d='∑{@#bbb;font-family:monospace, "Courier New", Courier, mono;font-size:12¥line-ä15¥font-weight:bold;cursor:default;~412¥ä323¥?top-left-radius:7¥?top-Ü-radius:7¥?bottom-Ü-radius:7¥?bottom-left-radius:7¥ö@#444}.S{~266¥ä177px}.XS{~158¥ä173px}.XXS{ä105¥~154px}.no-alpha{ä308px}.no-alpha .§opacity,.no-alpha .§alpha{display:none}.S.no-alpha{ä162px}.XS.no-alpha{ä158px}.XXS.no-alpha{ä90px}∑,∑ div{border:none;padding:0¥float:none;margin:0¥outline:none;box-sizing:content-box}∑ div{|absolute}^s .§curm,«§disp,«§nsarrow,∑ .§exit,∑ ø-cursor,∑ .§resize{öimage:url(_icons.png)}∑ .do-drag div{cursor:none}∑ .§opacity,ø .§raster-bg,∑ .§raster{öimage:url(_bgs.png)}∑ ^s{~287¥ä256¥top:10¥left:10¥overflow:hidden;cursor:crosshair}.S ^s{~143¥ä128¥left:9¥top:9px}.XS ^s{left:7¥top:7px}.XXS ^s{left:5¥top:5px}^s div{~256¥ä256¥left:0px}.S ^l-1,.S ^l-2,.S ^l-3,.S ^l-4{~128¥ä128px}.XXS ^s,.XXS ^s ^l-1,.XXS ^s ^l-2,.XXS ^s ^l-3,.XXS ^s ^l-4{ä64px}^s ^r-1,^s ^r-2,^s ^r-3,^s ^r-4{~31¥left:256¥cursor:default}.S ^r-1,.S ^r-2,.S ^r-3,.S ^r-4{~15¥ä128¥left:128px}^s .§curm{margin:-5¥~11¥ä11¥ö|-36px -30px}.light .§curm{ö|-7px -30px}^s .§curl,^s .§curr{~0¥ä0¥margin:-3px -4¥border:4px solid;cursor:default;left:auto;öimage:none}^s .§curl,∑ ^s .§curl-dark,.hue-dark div.§curl{Ü:27¥?@† † † #fff}.light .§curl,∑ ^s .§curl-light,.hue-light .§curl{?@† † † #000}.S ^s .§curl,.S ^s .§curr{?~3px}.S ^s .§curl-light,.S ^s .§curl{Ü:13px}^s .§curr,∑ ^s .§curr-dark{Ü:4¥?@† #fff † †}.light .§curr,∑ ^s .§curr-light{?@† #000 † †}∑ .§opacity{bottom:44¥left:10¥ä10¥~287¥ö|0 -87px}.S .§opacity{bottom:27¥left:9¥~143¥ö|0 -100px}.XS .§opacity{left:7¥bottom:25px}.XXS .§opacity{left:5¥bottom:23px}.§opacity div{~100%;ä16¥margin-top:-3¥overflow:hidden}.§opacity .§opacity-slider{margin:0 -4¥~0¥ä8¥?~4¥?style:solid;?@#eee †}∑ ø{bottom:10¥left:10¥~288¥ä31¥ö@#fff}.S ø{ä15¥~144¥left:9¥bottom:9px}.XS ø{left:7¥bottom:7px}.XXS ø{left:5¥bottom:5px}ø div{|relative;float:left;~31¥ä31¥margin-Ü:1px}.S ø div{~15¥ä15px}∑ .§raster,ø .§raster-bg,.S ø .§raster,.S ø .§raster-bg{|absolute;top:0¥Ü:0¥bottom:0¥left:0¥~100%}.S ø .§raster-bg{ö|0 -31px}∑ .§raster{opacity:0.2;ö|0 -49px}.alpha-bg-b ø{ö@#333}.alpha-bg-b .§raster{opacity:1}ø ø-cursor{|absolute;Ü:0¥ö|-26px -87px}∑ .light ø-cursor{ö|3px -87px}.S ø-cursor{ö|-34px -95px}.S .light ø-cursor{ö|-5px -95px}∑ .§panel{|absolute;top:10¥Ü:10¥bottom:10¥~94¥?~1¥?style:solid;?@#222 #555 #555 #222;overflow:hidden;ö@#333}.S .§panel{top:9¥Ü:9¥bottom:9px}.XS .§panel{display:none}.§panel div{|relative}«§hsv,«§hsl,«§rgb,«§cmyk,«§Lab,«§alpha,.no-alpha «§HEX,«§HEX{~86¥margin:-1px 0px 1px 4¥padding:1px 0px 3¥?top-~1¥?top-style:solid;?top-@#444;?bottom-~1¥?bottom-style:solid;?bottom-@#222;float:Ö«§hsv,«§hsl{padding-top:2px}.S .§hsv,.S .§hsl{padding-top:1px}«§HEX{?bottom-style:none;?top-~0¥margin-top:-4¥padding-top:0px}.no-alpha «§HEX{?bottom-style:none}«§alpha{?bottom-style:none}.S .rgb-r .§hsv,.S .rgb-g .§hsv,.S .rgb-b .§hsv,.S .rgb-r .§hsl,.S .rgb-g .§hsl,.S .rgb-b .§hsl,.S .hsv-h .§rgb,.S .hsv-s .§rgb,.S .hsv-v .§rgb,.S .hsl-h .§rgb,.S .hsl-s .§rgb,.S .hsl-l .§rgb,.S .§cmyk,.S .§Lab{display:none}«§butt,«§labl{float:left;~14¥ä14¥margin-top:2¥text-align:center;border:1px solid}«§butt{?@#555 #222 #222 #555}«§butt:active{ö@#444}«§labl{?@†}«Lab-mode,«cmyk-mode,«hsv-mode,«hsl-mode{|absolute;Ü:0¥top:1¥ä50px}«hsv-mode,«hsl-mode{top:2px}«cmyk-mode{ä68px}.hsl-h .hsl-h-labl,.hsl-s .hsl-s-labl,.hsl-l .hsl-l-labl,.hsv-h .hsv-h-labl,.hsv-s .hsv-s-labl,.hsv-v .hsv-v-labl{@#f90}«cmyk-mode,«hsv-mode,.rgb-r .rgb-r-butt,.rgb-g .rgb-g-butt,.rgb-b .rgb-b-butt,.hsv-h .hsv-h-butt,.hsv-s .hsv-s-butt,.hsv-v .hsv-v-butt,.hsl-h .hsl-h-butt,.hsl-s .hsl-s-butt,.hsl-l .hsl-l-butt,«rgb-r-labl,«rgb-g-labl,«rgb-b-labl,«alpha-butt,«HEX-butt,«Lab-x-labl{?@#222 #555 #555 #222;ö@#444}.no-rgb-r .rgb-r-labl,.no-rgb-g .rgb-g-labl,.no-rgb-b .rgb-b-labl,.mute-alpha .alpha-butt,.no-HEX .HEX-butt,.cmy-only .Lab-x-labl{?@#555 #222 #222 #555;ö@#333}.Lab-x-disp,.cmy-only .cmyk-k-disp,.cmy-only .cmyk-k-butt{visibility:hidden}«HEX-disp{öimage:none}«§disp{float:left;~48¥ä14¥margin:2px 2px 0¥cursor:text;text-align:left;text-indent:3¥?~1¥?style:solid;?@#222 #555 #555 #222}∑ .§nsarrow{|absolute;top:0¥left:-13¥~8¥ä16¥display:none;ö|-87px -23px}∑ .start-change .§nsarrow{display:block}∑ .do-change .§nsarrow{display:block;ö|-87px -36px}.do-change .§disp{cursor:default}«§hide{display:none}«§cont,«§cold{|absolute;top:-5¥left:0¥ä3¥border:1px solid #333}«§cold{z-index:1;ö@#c00}«§cont{margin-Ü:-1¥z-index:2}«contrast .§cont{z-index:1;ö@#ccc}«orange .§cold{ö@#f90}«green .§cold{ö@#4d0}«§ctrl{|absolute;bottom:0¥left:0¥~100%;ö@#fff}.alpha-bg-b .§ctrl,«§bres,«§bsav{ö@#333}«§col1,«§col2,«§bres,«§bsav{?~1¥?style:solid;?@#555 #222 #222 #555;float:left;~45¥line-ä28¥text-align:center;top:0px}.§panel div div{ä100%}.S .§ctrl div{line-ä25px}.S «§bres,.S «§bsav{line-ä26px}∑ .§exit,∑ .§resize{Ü:3¥top:3¥~15¥ä15¥ö|0 -52px}∑ .§resize{top:auto;bottom:3¥cursor:nwse-resize;ö|-15px -52px}.S .§exit{ö|1px -52px}.XS .§resize,.XS .§exit{~10¥ä10¥Ü:0¥öimage:none}.XS .§exit{top:0px}.XS .§resize{bottom:0px}∑ .§resizer,∑ .§resizer div{|absolute;border:1px solid #888;top:-1¥Ü:-1¥bottom:-1¥left:-1¥z-index:2;display:none;cursor:nwse-resize}∑ .§resizer div{border:1px dashed #333;opacity:0.3;display:block;ö@#bbb}'.replace(/Ü/g,"right").replace(/Ö/g,"left}").replace(/∑/g,".§app").replace(/«/g,".§panel .").replace(/¥/g,"px;").replace(/\|/g,"position:").replace(/@/g,"color:").replace(/ö/g,"background-").replace(/ä/g,"height:").replace(/ø/g,".§memo").replace(/†/g,"transparent").replace(/\~/g,"width:").replace(/\?/g,"border-").replace(/\^/g,".§sld"),e="iVBORw0KGgoAAAANSUhEUgAABIAAAAABCAYAAACmC9U0AAABT0lEQVR4Xu2S3Y6CMBCFhyqIsjGBO1/B9/F5DC/pK3DHhVkUgc7Zqus2DVlGU/cnQZKTjznttNPJBABA149HyRf1iN//4mIBCg0jV4In+j9xJiuihly1V/Z9X88v//kNeDXVvyO/lK+IPR76B019+1Riab3H1zkmeqerKnL+Bzwxx6PAgZxaSQU8vB62T28pxcQeRQ2sHw6GxCOWHvP78zwHAARBABOfdYtd30rwxXOEPDF+dj2+91r6vV/id3k+/brrXmaGUkqKhX3i+ffSt16HQ/dorTGZTHrs7ev7Tl7XdZhOpzc651nfsm1bRFF0YRiGaJoGs9nsQuN/xafTCXEco65rzOdzHI9HJEmCqqqwXC6x3++RZRnKssRqtUJRFFiv19jtdthutyAi5Hl+Jo9VZg7+7f3yXuvZf5c3KaXYzByb+WIzO5ymKW82G/0BNcFhO/tOuuMAAAAASUVORK5CYII=",f="iVBORw0KGgoAAAANSUhEUgAAAAEAABfACAYAAABn2KvYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABHtJREFUeNrtnN9SqzAQxpOF1to6zuiVvoI+j6/gva/lA/kKeqUzjtX+QTi7SzSYBg49xdIzfL34+e1usoQQklCnmLwoCjImNwDQA2xRGMqNAYB+gPEH9IdCgIUA6Aem0P1fLoMQAPYNHYDoCKAv8OMHFgKgX2AjDPQDXn4t1l+gt/1fId//yWgE/hUJ+mAn8EyY5wCwXxhrbaHzn8E9iPlv79DdHxXTqciZ4KROnXRVZMF/6U2OPhcEavtAbZH1SM7wRDD7VoHZItCiyEQf4t6+MW9UOxaZybmdCGKqNrB9Eb5SfMg3wTyiagMtigTmWofiSDCOYNTSNz6sLDIoaCU9GWDd0tdhoMMsRm+r8U/EfB0GfjmLXiqzimDd0tdhoLMsI7la45+I+ToM/HIW0kfGVQTrlr7tA91kaUr//fxrKo8jUFB7VAn6AKpHJf+EKwAAAIYD/f7F7/8MVgMo7P+gBqDKr57Lf72V8x8AAMDgYIuvH4EAAAAMDQX6AACAQcI9GGMjDADA4MA/P2KlP8IEAAAYFCz6AACAgaLA8y8AAIN+CMYXoQAADA7u/UPYCAMAMDjI7z9S+SdwDFQX2C9Gh9GMEOWriz8/Pw1lWQZsi/L3R4czzP678Ve+P8f9nCv/C7hwLq99ah8NfKrU15zPB5pVcwtiJt9qGy0IfEE+jQa+Fn0VtI/fkxUPqBlEfRENeF+tqUpbGpi1iu8epwJzvV5XA4GpWC6XGz7F+/u766EgwJ+ckiTJKU3TnI6OjnI6OzvLZf6zMggt3dzckPhIoiTlSGpQ+eEsVegdz0fbCCi4fRs+Po+4yWdeDXiT+6pBSTeHple1pkz3FZ+avpyavoiPxgLN0B7yprY08PlyQTTm0+PWmkH7ynedNKraar4F/lRj1WpTtYh+ozL/cY2sAvZl0gcbZm0gSLBLvkxGoaogiy/HDXemQk2t5pUm8OAhH8/HH6e0mkJ9q9XKKQXfb07xfZnJbZrRxcVFVt6/t7e3Kc1ms5RGo1Eq5VIZuyl9fHw4k/M5xYeoKj64A7eqCt1ZeqWFVSl8NV9OTV3fmvP5qE9VmzSoEcsXpArK1UHen/hZbgL53BZSdyEXalGau/hU8TEW0u3VcoFPy3EDFrTgT+njydeZ0+l0UV7fu7u7iVzziQQmUm4iqRw4n/NxMxw4s/Mp1NSALxf4NEtQ10cjMDwSl+b+/j6hp6enVGb+jUvrn05iKobm6PboOt8vPISY5Pr6OqGXlxe3fOokoGtAbMUJZmqvYmaLQDP+sdrecOjtO/SXeH69P8Imutm5urqy9PDwYOny8tLS4+OjpfPzc0vPz8+WTk9PLb2+vlpZbCzN53NLx8fHVtYZS5PJxMoEZWWqsjKULY3HYytTi1Pex5OMldXKRVXxuLcy/20onmms3BBOxcr5qCrZtsrd45SPel8sGlOxGoGy0neynQ6VL9fsa1YtWlCrtj9G83G7PjdVush5n5q1iJWLZW6u21a1bUvbVnVzlru0pe3RdmlV1/23fZtbZv4Dx+7FBypx77kAAAAASUVORK5CYII=",g="iVBORw0KGgo^NSUhEUgAAB4^EACAI#DdoPxz#L0UlEQVR4Xu3cQWrDQBREwR7FF8/BPR3wXktnQL+KvxfypuEhvLJXcp06d/bXd71OPt+trIw95zr33Z1bk1/fudEv79wa++7OfayZ59wrO2PBzklcGQmAZggAAOBYgAYBmpWRAGg^BGgRofAENgAAN#I0CBA6w8AG^ECABgEa/QH§AI0CNDoDwAY^QIAGAVp/AM§AjQI0OgPAAY^QoEGARn8Aw§CNAjQ+gMABg#BCgQYCmGQmABgAAEKBBgEZ/AM§AjQI0PoDAAY^QoEGARn8AM^IAADQI0+gMABg#BCgQYDWHwAw^gAANAjT6A4AB^BGgQoNEfAD^C#0CtP4AgAE^EaBCgaUYCoAE#RoEKDRHwAw^gAANArT+AIAB^BGgQoNEfAAw^gQIMAjf4AgAE^EaBCg9QcAD^CBAgwCN/gBg§EaBGj0BwAM^IECDAK0/AG§ARoEaJqRAGg^BGgRo9AcAD^CBAgwCtPwBg§EaBGj0BwAD^CNAgQKM/AG§ARoEaP0BAAM^I0CBAoz8AG^ECABgEa/QEAAw^jQIEDrDwAY^QIAGAZpmJACaBw^RoEKD1BwAM^IECDAK0/AG§ARoEaPQHAAw^gQIMArT8AY§BGgRo/QEAAw^jQIECjPwBg§EaBGj9AQAD^CNAgQOsPABg#BAgAYBGv0BAANwCwAAGB6gYeckmpEAa^AEaBGj0BwAM^IECDAK0/AG§ARoEaPQHAAM^I0CBAoz8AY§BGgRo/QEAAw^jQIECjPwAY^QIAGARr9AQAD^CNAgQOsPABg#BAgAYBmmYkABoAAECABgEa/QEAAw^jQIEDrDwAY^QIAGARr9Ac§AjQI0OgPABg#BAgAYBWn8Aw§CNAjQ6A8ABg#BCgQYBGfwD§AI0CND6AwAG^EKBBgKYZCYAG#QoEGARn8Aw§CNAjQ+gMABg#BCgQYBGfwAw^gAANAjT6AwAG^EKBBgNYfAD^C#0CNPoDgAE^EaBCg0R8AM^IAADQK0/gCAAQ^RoEKBpRgKgAQAABGgQoNEfAD^C#0CtP4AgAE^EaBCg0R8AD^CBAgwCN/gCAAQ^RoEKD1BwAM^IECDAI3+AG§ARoEaPQHAAw^gQIMArT8AY§BGgRomsMAM^IAADQK0/gCAAQ^RoEKDRHwAw^gAANO7fQHwAw^gAANArT+AIAB^BGgQoNEfAGg^BGgRo9AcAD^CBAgwCtPwBg§EaBGj0BwAD^RIB+Ntg5iea5AD^DAIwI0CND6AwAG^EKBBgEZ/AKAB#EaBCg0R8AM^IAADQK0/gCAAQ^RoEKDRHwAM^IECDAI3+AIAB^BGgQoPUHAAw^gQIMAjf4AY§BGgRo9AcAD^CBAgwCtPwBg§EaBGiakQBo^ARoEaPQHAAw^gQIMArT8AY§BGgRo9AcAAw^jQIECjPwBg§EaBGj9AQAD^CNAgQKM/ABg#BAgAYBGv0BAAM^I0CBA6w8AG^ECABgGaZiQAGgAAQIAGARr9AQAD^CNAgQOsPABg#BAgAYBGv0Bw§CNAjQ6A8AG^ECABgFafwD§AI0CNDoDwAG^EKBBgEZ/AM§AjQI0PoDAAY^QoEGApjkMAAM^I0CBA6w8AG^ECABgEa/QEAAw^jQsIP+AIAB^BGgQoPUHAAw^gQIMAjf4AgAE#Bea/fK+3P5/3PJOvh8t1cO4nflmQAQoAEAAF9Aw/7JHfQHAAw^gQIMArT8AY§BGvwHNPoDAA0AACBAgwCN/gCAAQ^RoEKD1BwAM^IECDAI3+AG§ARoEaPQHAAw^gQIMArT8AY§BGgRo9AcAAw^jQIECjPwBg§EaBGj9AQAD^CNAgQNOMBEAD#I0CBAoz8AY§BGgRo/QEAAw^jQIECjPwAY^QIAGARr9AQAD^CNAgQOsPABg#BAgAYBGv0Bw§CNAjQ6A8AG^ECABgFafwD§AI0CNA0IwHQ^AjQI0OgPABg#BAgAYBWn8Aw§CNAjQ6A8ABg#BCgQYBGfwD§AI0CND6AwAG^EKBBgEZ/AD^C#0CNPoDAAY^QoEGA1h8AM^IAADQI0DQAG^EKBBgEZ/AM§AjQI0PoDAAY^QoEGA1h8AM^IAADQI0+gMABg#BCgQYDWHwAw^gAANArT+AIAB^BGgQoNEfAD^C#0CtP4AgAE^EaBCg9QcAD^CBAgwCN/gCAAQ^RoEKD1BwAM^IECDAK0/AG§ARoEaPQHAAw^gQIMArT8AY§BGgRo/QEAAw^jQIECjPwBgACDhFgC#07t9AfAD^C#0CtP4AgAE^EaBCg0R8Aa^AEaBGj0BwAM^IECDAK0/AG§ARoEaPQHAAM^I0CBAoz8AY§BGgRo/QEAAw^jQIECjPwAY^QIAGARr9AQAD^CNAgQOsPABg#BAgAYBmmYkABoAAECABgEa/QEAAw^jQIEDrDwAY^QIAGARr9Ac§AjQI0OgPABg#BAgAYBWn8Aw§CNAjQ6A8ABg#BCgQYBGfwD§AI0CND6AwAG^EKBBgKYZCYAG#QoEGARn8Aw§CNAjQ+gMABg#BCgQYBGfwAw^gAANAjT6AwAG^EKBBgNYfAD^C#0CNPoDgAE^EaBCg0R8AM^IAADQK0/gCAAQ^RoEKBpRgKgAQAABGgQoNEfAD^C#0CtP4AgAE^EaBCg0R8AD^CBAgwCN/gCAAQ^RoEKD1BwAM^IECDAI3+AG§ARoEaPQHAAw^gQIMArT8AY§BGgRommEAM^CBAgwCN/gCAAQ^RoEKD1BwAM^IECDAI3+AIAB^ARoEaPQHAAw^gQIMArT8AY§BGgRo9AcAGgAAQICGCNBfRfNcABg#BgeICGnVvoDwAY^QIAGAVp/AM§AjQI0OgPADQAAIAADQI0+gMABg#BCgQYDWHwAw^gAANAjT6A4AB^BGgQoNEfAD^C#0CtP4AgAE^EaBCg0R8AD^CBAgwCN/gCAAQ^RoEKD1BwAM^IECDAE0zEgAN#gQIMAjf4AgAE^EaBCg9QcAD^CBAgwCN/gBg§EaBGj0BwAM^IECDAK0/AG§ARoEaPQHAAM^I0CBAoz8AY§BGgRo/QEAAw^jQIEDTjARAAwAACNAgQKM/AG§ARoEaP0BAAM^I0CBAoz8AG^ECABgEa/QEAAw^jQIEDrDwAY^QIAGARr9Ac§AjQI0OgPABg#BAgAYBWn8Aw§CNAjQNIcBY§BGgRo/QEAAw^jQIECjPwBg§EadtAfAD^C#0CtP4AgAE^EaBCgAQABGgAA+AO2TAbHupOgH^ABJRU5ErkJggg==".replace(/§/g,"AAAAAA").replace(/\^/g,"AAAA").replace(/#/g,"AAA"),h="iVBORw0KGgoAAAANSUhEUgAAAGEAAABDCAMAAAC7vJusAAAAkFBMVEUAAAAvLy9ERERubm7///8AAAD///9EREREREREREREREQAAAD///8AAAD///8AAAD///8AAAD///8AAAD///8AAAD///8AAAD///8AAAD///8AAAD///8cHBwkJCQnJycoKCgpKSkqKiouLi4vLy8/Pz9AQEBCQkJDQ0NdXV1ubm58fHykpKRERERVVVUzMzPx7Ab+AAAAHXRSTlMAAAAAAAQEBQ4QGR4eIyMtLUVFVVVqapKSnJy7u9JKTggAAAFUSURBVHja7dXbUoMwEAbgSICqLYeW88F6KIogqe//dpoYZ0W4AXbv8g9TwkxmvtndZMrEwlw/F8YIRjCCEYxgBCOsFmzqGMEI28J5zzmt0Pc9rdDL0NYgMxIYC5KiKpKAzZphWtZlGm4SjlnkOV6UHeeEUx77rh/npw1dCrI9k9lnwUwF+UG9D3m4ftJJxH4SJdPtaawXcbr+tBaeFrxiur309cIv19+4ytGCU0031a5euPVigLYGqjlAqM4ShOQ+QAYQUO80AMMAAkUGGfMfR9Ul+kmvPq2QGxXKOQBAKdjUgk0t2NiCGEVP+rHT3/iCUMBT90YrPMsKsIWP3x/VolaonJEETchHCS8AYAmaUICQQwaAQnjoXgHAES7jLkEFaHO4bdq/k25HAIpgWY34FwAE5xjCffM+D2DV8B0gRsAZT7hr5gE8wdrJcU+CJqhcqQD7Cx5L7Ph4WnrKAAAAAElFTkSuQmCC",i="iVBORw0KGgoAAAANSUhEUgAAASAAAABvCAYAAABM+h2NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABORJREFUeNrs3VtTW1UYBuCEcxAI4YydWqTWdqr1V7T/2QsvvPDCCy9qjxZbamsrhZIQUHsCEtfafpmJe8qFjpUxfZ4Zuvt2feydJvAOARZUut1u5bRerl692nV913f99/f6QxWAU6KAAAUEKCAABQQoIAAFBCggAAUEKCAABQQoIAAFBCggAAUEKCAABQQoIEABASggQAEBKCBAAQEoIEABASggQAEBKCBAAQEoIGBQC+jatWvd07zxrv9+Xx8fAQEoIEABASggQAEBKCBAAQEoIEABAQoIQAEBCghAAQEKCEABAQOk2u36kS6AAgLetwJKL29toFRM1be+QrVq3rx58//KvM8BAadGAQEKCFBAAAoIGHwnfhneZ+/Nmzf/LufzrI+AAE/BAAUEoIAABQTwztgLZt68eXvBAE/BABQQoIAAFBAweOwFM2/evL1ggKdgAAoIUEAACggYPPaCmTdv3l4wwFMwAAUEKCAABQQMHnvBzJs3by8Y4CkYgAICFBCAAgIGz4lfBQNQQMDgFlCtVisaaHV1tThubW1VInciD0U+ysdnz54N5+PKysphOnRTHsvHlN9EHo/1l5FrkV9Enoz8W87b29tTOS8vLx9EnoncjlyPvBe5EbkZeT4fU96NvBDr2znv7Ows57y0tLQVeSXy08gf5mNfPhPrjyOfrVarlcXFxZ9yfv78+bl8TPlh5LU8n/KDyOuxfj/y+VjfyHl3d/dCKv28fi/yp/m4sLDwQ+SLke9GvhT5Tinfjnw5f4/F/Pz8rZybzeZn+ZjyzVK+EfnzUr4S+Xopf9/L+fxzc3M5d1qt1hf531Mu5k/IxzGf85VYL+fefHH+RqNRrO/t7RW3L+UbkS9Hvhk5/386Kd/qW8/5duRLMV/OdyJfzNebnZ0t7t92u53v/07K9yJfiLwROT9+ef7HyOux/iDyWuSHkT+K+eLtZX9//2xer9frjyOfyY9/Wn8S86v59qT1p7Ge315zLt4RU16K19+O9YXIu5HnYn435hux3opcj9yOPB3z+5E/iPXf43y1yMX778HBQS3f3pTz+28l5bHIr2N+LN3+zszMzGHkoh/S+mHMF98XlNaP8zHd/0W/pMe943NAwKlSQIACAhQQgAICFBCAAgIUEIACAhQQgAIC/n9GqtXqYbfbHa38+RtSu32llPdqdNL6aOSj+LfxyMVekLTem39Ryr/mPDQ0NBznzXtROikPRW6W8k7k3m9rzXthOsPDw73bUuylGRkZ6cR63nvTSfko8oPIr+Pnz96P/DLW816ezujoaN6DdtyX9+P8eS9QZ2xs7Hxf7qa8Xlr/JO6Ljcjrcf6cj1P+OO+N6V1/fHz8XLz+/Tjfubh+sZcorZ+N9Ycxfybyo8ircf6fc56YmFiJ1/8l8mLk7cjzkfP92U15Ns63G+u9nPcKdWq12lQ8Xu3Ixd6f9Pd8P3UmJycnUszzL2N9LM7/anNzs9V7Q2q32395w/q7ubdH6L/KrVbrpPxlKX9Vyl+X8jel/G0pf5f/aDabvXy9tH6ztH63lDdKebOUH5Xyk1LeKuWd/ry2tlap9P125Onp6Zf9eWpq6lW3b8f6zMzM6/71er3+ppSP+u/XNN/pz41Go+sjIMBTMEABASggQAEBKCBAAQEoIEABASggQAEB/CN/CDAAw78uW9AVDw4AAAAASUVORK5CYII=";a.ColorPicker={_html:b,_cssFunc:c,_cssMain:d,_horizontalPng:e,_verticalPng:f,_patchesPng:g,_iconsPng:h,_bgsPng:i}}(window),function(a,b){"use strict";function c(c,e){var j,k="",l="";for(var m in e)c.options[m]=e[m];Q=document.createStyleSheet!==b&&document.getElementById||!!a.MSInputMethodContext,R="undefined"!=typeof document.body.style.opacity,_=new Colors(c.options),delete c.options,bb=_.options,bb.scale=1,l=bb.CSSPrefix,c.color=_,S=bb.valueRanges,c.nodes=cb=g(f(c),c),q(bb.mode),d(c),u(),k=" "+bb.mode.type+"-"+bb.mode.z,cb.slds.className+=k,cb.panel.className+=k,bb.noHexButton&&C(cb.HEX_butt,l+"butt",l+"labl"),bb.size!==b&&p(b,bb.size),j={alphaBG:cb.alpha_labl,cmyOnly:cb.HEX_labl};for(var n in j)bb[n]!==b&&o({target:j[n],data:bb[n]});bb.noAlpha&&(cb.colorPicker.className+=" no-alpha"),c.renderMemory(bb.memoryColors),h(c),I=!0,i(b,"init"),N&&(d(N),w())}function d(a){Y=!0,M!==a&&(M=a,ab=a.color.colors,bb=a.color.options,cb=a.nodes,_=a.color,$={},v(ab))}function e(){var a=["L","S","XS","XXS"];bb.sizes={},cb.testNode.style.cssText="position:absolute;left:-1000px;top:-1000px;",document.body.appendChild(cb.testNode);for(var b=a.length;b--;)cb.testNode.className=bb.CSSPrefix+"app "+a[b],bb.sizes[a[b]]=[cb.testNode.offsetWidth,cb.testNode.offsetHeight];cb.testNode.removeNode?cb.testNode.removeNode(!0):document.body.removeChild(cb.testNode)}function f(a){var b=document.createElement("div"),c=bb.CSSPrefix,d="data:image/png;base64,",e=function(a,b){var c=document.createElement("style");c.setAttribute("type","text/css"),b&&c.setAttribute("id",b),c.styleSheet||c.appendChild(document.createTextNode(a)),document.getElementsByTagName("head")[0].appendChild(c),c.styleSheet&&(document.styleSheets[document.styleSheets.length-1].cssText=a)},f=function(a){O._cssFunc=O._cssFunc.replace(/§/g,c).replace("_patches.png",a?d+O._patchesPng:bb.imagePath+"_patches.png").replace("_vertical.png",a?d+O._verticalPng:bb.imagePath+"_vertical.png").replace("_horizontal.png",a?d+O._horizontalPng:bb.imagePath+"_horizontal.png"),e(O._cssFunc,"colorPickerCSS"),bb.customCSS||(O._cssMain=O._cssMain.replace(/§/g,c).replace("_bgs.png",a?d+O._bgsPng:bb.imagePath+"_bgs.png").replace("_icons.png",a?d+O._iconsPng:bb.imagePath+"_icons.png").replace(/opacity:(\d*\.*(\d+))/g,function(a,b){return R?"-moz-opacity: "+b+"; -khtml-opacity: "+b+"; opacity: "+b:'-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity='+db.round(100*+b)+')";filter: alpha(opacity='+db.round(100*+b)+")"}),e(O._cssMain))},g=document.createElement("img");return P?a.color.options.devPicker:(document.getElementById("colorPickerCSS")?a.cssIsReady=!0:(g.onload=g.onerror=function(){O._cssFunc&&f(1===this.width&&1===this.height),a.cssIsReady=!0},g.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="),(N=M)&&r(),b.insertAdjacentHTML("afterbegin",M?M.nodes.colorPicker.outerHTML||(new XMLSerializer).serializeToString(M.nodes.colorPicker):O._html.replace(/§/g,c)),b=b.children[0],b.style.cssText=bb.initStyle||"",(bb.appendTo||document.body).appendChild(b))}function g(a){var b,c,d=a.getElementsByTagName("*"),e={colorPicker:a},f=new RegExp(bb.CSSPrefix);e.styles={},e.textNodes={},e.memos=[],e.testNode=document.createElement("div");for(var g=0,h=d.length;h>g;g++)b=d[g],(c=b.className)&&f.test(c)?(c=c.split(" ")[0].replace(bb.CSSPrefix,"").replace(/-/g,"_"),/_disp/.test(c)?(c=c.replace("_disp",""),e.styles[c]=b.style,e.textNodes[c]=b.firstChild,b.contentEditable=!0):(/(?:hs|cmyk|Lab).*?(?:butt|labl)/.test(c)||(e[c]=b),/(?:cur|sld[^s]|opacity|cont|col)/.test(c)&&(e.styles[c]=/(?:col\d)/.test(c)?b.children[0].style:b.style))):/memo/.test(b.parentNode.className)&&e.memos.push(b);return e.panelCover=e.panel.appendChild(document.createElement("div")),e}function h(c,f){var g=f?G:F;g(cb.colorPicker,"mousedown",function(f){var g=f||a.event,h=E(g),n=(g.button||g.which)<2?g.target||g.srcElement:{},o=n.className;return d(c),J=n,i(b,"resetEventListener"),U="",n===cb.sldl_3||n===cb.curm?(J=cb.sldl_3,I=j,U="changeXYValue",C(cb.slds,"do-drag")):/sldr/.test(o)||n===cb.curl||n===cb.curr?(J=cb.sldr_4,I=k,U="changeZValue"):n===cb.opacity.children[0]||n===cb.opacity_slider?(J=cb.opacity,I=l,U="changeOpacityValue"):/-disp/.test(o)&&!/HEX-/.test(o)?(I=m,U="changeInputValue",(3===n.nextSibling.nodeType?n.nextSibling.nextSibling:n.nextSibling).appendChild(cb.nsarrow),K=o.split("-disp")[0].split("-"),K={type:K[0],z:K[1]||""},C(cb.panel,"start-change"),V=0):n!==cb.resize||bb.noResize?I=b:(bb.sizes||e(),J=cb.resizer,I=p,U="resizeApp"),I&&(W={pageX:h.X,pageY:h.Y},J.style.display="block",X=D(J),X.width=cb.opacity.offsetWidth,X.childWidth=cb.opacity_slider.offsetWidth,J.style.display="",I(g),F(Q?document.body:a,"mousemove",I),L=a[fb](w)),/-disp/.test(o)?void 0:B(g)}),g(cb.colorPicker,"click",function(a){d(c),o(a)}),g(cb.colorPicker,"dblclick",o),g(cb.colorPicker,"keydown",function(a){d(c),n(a)}),g(cb.colorPicker,"keypress",n),g(cb.colorPicker,"paste",function(a){return a.target.firstChild.data=a.clipboardData.getData("Text"),B(a)})}function i(c,d){var e=I;I&&(a[gb](L),G(Q?document.body:a,"mousemove",I),V&&(K={type:"alpha"},w()),("function"==typeof I||"number"==typeof I)&&delete bb.webUnsave,V=1,I=b,C(cb.slds,"do-drag",""),C(cb.panel,"(?:start-change|do-change)",""),cb.resizer.style.cssText="",cb.panelCover.style.cssText="",cb.memo_store.style.cssText="background-color: "+y(ab.RND.rgb)+"; "+A(ab.alpha),cb.memo.className=cb.memo.className.replace(/\s+(?:dark|light)/,"")+(ab["rgbaMix"+T[bb.alphaBG]].luminance<.22?" dark":" light"),K=b,s(),bb.actionCallback&&bb.actionCallback(c,U||e.name||d||"external"))}function j(b){var c=b||a.event,d=bb.scale,e=E(c),f=(e.X-X.left)*(4===d?2:d),g=(e.Y-X.top)*d,h=bb.mode;return ab[h.type][h.x]=z(f/255,0,1),ab[h.type][h.y]=1-z(g/255,0,1),t(),B(c)}function k(b){var c=b||a.event,d=E(c),e=(d.Y-X.top)*bb.scale,f=bb.mode;return ab[f.type][f.z]=1-z(e/255,0,1),t(),B(c)}function l(b){var c=b||a.event,d=E(c);return Y=!0,ab.alpha=z(db.round((d.X-X.left)/X.width*100),0,100)/100,t("alpha"),B(c)}function m(b){var c,d=b||a.event,e=E(d),f=W.pageY-e.Y,g=bb.delayOffset,h=K.type,i="alpha"===h;return V||db.abs(f)>=g?(V||(V=(f>0?-g:g)+ +J.firstChild.data*(i?100:1),W.pageY+=V,f+=V,V=1,C(cb.panel,"start-change","do-change"),cb.panelCover.style.cssText="position:absolute;left:0;top:0;right:0;bottom:0",document.activeElement.blur(),L=a[fb](w)),"cmyk"===h&&bb.cmyOnly&&(h="cmy"),i?(Y=!0,ab.alpha=z(f/100,0,1)):(c=S[h][K.z],ab[h][K.z]="Lab"===h?z(f,c[0],c[1]):z(f/c[1],0,1)),t(i?"alpha":h),B(d)):void 0 +}function n(c){var d,e=c||a.event,f=e.which||e.keyCode,g=String.fromCharCode(f),h=document.activeElement,j=h.className.replace(bb.CSSPrefix,"").split("-"),k=j[0],l=j[1],m="alpha"===k,n="HEX"===k,o={k40:-1,k38:1,k34:-10,k33:10}["k"+f]/(m?100:1),p={HEX:/[0-9a-fA-F]/,Lab:/[\-0-9]/,alpha:/[\.0-9]/}[k]||/[0-9]/,q=S[k][k]||S[k][l],r=h.firstChild,s=H(h),u=r.data,w="0"!==u||n?u.split(""):[];return/^(?:27|13)$/.test(f)?(B(e),h.blur()):"keydown"===e.type?(o?d=z(db.round(1e6*(+u+o))/1e6,q[0],q[1]):/^(?:8|46)$/.test(f)&&(s.range||(s.range++,s.start-=8===f?1:0),w.splice(s.start,s.range),d=w.join("")||"0"),d!==b&&B(e,!0)):"keypress"===e.type&&(/^(?:37|39|8|46|9)$/.test(f)||B(e,!0),p.test(g)&&(w.splice(s.start,s.range,g),d=w.join("")),s.start++),13===f&&n?r.data.length%3===0||"0"===r.data?M.setColor("0"===r.data?"000":r.data,"rgb",ab.alpha,!0):(B(e,!0),h.focus()):(n&&d!==b&&(d=/^0+/.test(d)?d:parseInt(""+d,16)||0),void(d!==b&&""!==d&&+d>=q[0]&&+d<=q[1]&&(n&&(d=d.toString(16).toUpperCase()||"0"),m?ab[k]=+d:n||(ab[k][l]=+d/("Lab"===k?1:q[1])),t(m?"alpha":k),v(ab),I=!0,i(c,e.type),r.data=d,H(h,db.min(h.firstChild.data.length,s.start<0?0:s.start)))))}function o(c){var d,e,f=c||a.event,g=f.target||f.srcElement,h=g.className,j=g.parentNode,k=bb,l=ab.RND.rgb,m=bb.mode,n="",o=k.CSSPrefix,p=/(?:hs|rgb)/.test(j.className)&&/^[HSBLRG]$/.test(g.firstChild?g.firstChild.data:""),q=/dblc/.test(f.type),r="";if(!q||p){if(-1!==h.indexOf("-labl "+o+"labl"))C(cb[h.split("-")[0]],o+"hide",""),C(cb[j.className.split("-")[1]],o+"hide");else if(-1!==h.indexOf(o+"butt"))if(p)q&&2===bb.scale&&(n=/hs/.test(m.type)?"rgb":/hide/.test(cb.hsl.className)?"hsv":"hsl",n=n+"-"+n[m.type.indexOf(m.z)]),M.setMode(n?n:h.replace("-butt","").split(" ")[0]),r="modeChange";else if(/^[rgb]/.test(h))n=h.split("-")[1],C(cb.colorPicker,"no-rgb-"+n,(k["noRGB"+n]=!k["noRGB"+n])?b:""),r="noRGB"+n;else if(g===cb.alpha_labl)d=k.customBG,e=k.alphaBG,C(cb.colorPicker,"alpha-bg-"+e,"alpha-bg-"+(e=k.alphaBG=c.data||("w"===e?d?"c":"b":"c"===e?"b":"w"))),g.firstChild.data=e.toUpperCase(),cb.ctrl.style.backgroundColor=cb.memo.style.backgroundColor="c"!==e?"":"rgb("+db.round(255*d.r)+", "+db.round(255*d.g)+", "+db.round(255*d.b)+")",cb.raster.style.cssText=cb.raster_bg.previousSibling.style.cssText="c"!==e?"":A(d.luminance<.22?.5:.4),r="alphaBackground";else if(g===cb.alpha_butt)C(cb.colorPicker,"mute-alpha",(k.muteAlpha=!k.muteAlpha)?b:""),r="alphaState";else if(g===cb.HEX_butt)C(cb.colorPicker,"no-HEX",(k.HEXState=!k.HEXState)?b:""),r="HEXState";else if(g===cb.HEX_labl){var s="web save"===ab.saveColor;"web smart"===ab.saveColor||s?s?M.setColor(k.webUnsave,"rgb"):(k.webUnsave||(k.webUnsave=x(l)),M.setColor(ab.webSave,"rgb")):(k.webUnsave=x(l),M.setColor(ab.webSmart,"rgb")),r="webColorState"}else/Lab-x-labl/.test(h)&&(C(cb.colorPicker,"cmy-only",(k.cmyOnly=!k.cmyOnly)?b:""),r="cmykState");else if(g===cb.bsav)u(),r="saveAsBackground";else if(g===cb.bres){var w=x(l),y=ab.alpha;M.setColor(k.color),u(),M.setColor(w,"rgb",y),r="resetColor"}else if(j===cb.col1)ab.hsv.h-=ab.hsv.h>.5?.5:-.5,t("hsv"),r="shiftColor";else if(j===cb.col2)M.setColor(g.style.backgroundColor,"rgb",ab.background.alpha),r="setSavedColor";else if(j===cb.memo){var z=function(){cb.memos.blinker&&(cb.memos.blinker.style.cssText=cb.memos.cssText)},B=function(b){cb.memos.blinker=b,b.style.cssText="background-color:"+(ab.RGBLuminance>.22?"#333":"#DDD"),a.setTimeout(z,200)};if(g===cb.memo_cursor){z(),cb.memos.blinker=b,cb.testNode.style.cssText=cb.memo_store.style.cssText,cb.memos.cssText=cb.testNode.style.cssText;for(var D=cb.memos.length-1;D--;)if(cb.memos.cssText===cb.memos[D].style.cssText){B(cb.memos[D]);break}if(!cb.memos.blinker){for(var D=cb.memos.length-1;D--;)cb.memos[D+1].style.cssText=cb.memos[D].style.cssText;cb.memos[0].style.cssText=cb.memo_store.style.cssText}r="toMemory"}else z(),M.setColor(g.style.backgroundColor,"rgb",g.style.opacity||1),cb.memos.cssText=g.style.cssText,B(g),I=1,r="fromMemory"}r&&(v(ab),I=I||!0,i(c,r))}}function p(c,d){var e,f=c||a.event,g=f?E(f):{},h=d!==b,i=h?d:g.X-X.left+8,j=h?d:g.Y-X.top+8,k=[" S XS XXS"," S XS"," S",""],l=bb.sizes,m=h?d:j10?i:10)+"px;height: "+(j>10?j:10)+"px;"}function q(a){var b={rgb_r:{x:"b",y:"g"},rgb_g:{x:"b",y:"r"},rgb_b:{x:"r",y:"g"},hsv_h:{x:"s",y:"v"},hsv_s:{x:"h",y:"v"},hsv_v:{x:"h",y:"s"},hsl_h:{x:"s",y:"l"},hsl_s:{x:"h",y:"l"},hsl_l:{x:"h",y:"s"}},c=a.replace("-","_"),d="\\b(?:rg|hs)\\w\\-\\w\\b";return C(cb.panel,d,a),C(cb.slds,d,a),a=a.split("-"),bb.mode={type:a[0],x:b[c].x,y:b[c].y,z:a[1]}}function r(){var a=/\s+(?:hue-)*(?:dark|light)/g,b="className";cb.curl[b]=cb.curl[b].replace(a,""),cb.curr[b]=cb.curr[b].replace(a,""),cb.slds[b]=cb.slds[b].replace(a,""),cb.sldr_2[b]=bb.CSSPrefix+"sldr-2",cb.sldr_4[b]=bb.CSSPrefix+"sldr-4",cb.sldl_3[b]=bb.CSSPrefix+"sldl-3";for(var c in cb.styles)c.indexOf("sld")||(cb.styles[c].cssText="");$={}}function s(){cb.styles.curr.cssText=cb.styles.curl.cssText,cb.curl.className=bb.CSSPrefix+"curl"+(Z.noRGBZ?" "+bb.CSSPrefix+"curl-"+Z.noRGBZ:""),cb.curr.className=bb.CSSPrefix+"curr "+bb.CSSPrefix+"curr-"+("h"===bb.mode.z?Z.HUEContrast:Z.noRGBZ?Z.noRGBZ:Z.RGBLuminance)}function t(a){v(_.setColor(b,a||bb.mode.type)),Y=!0}function u(a){return _.saveAsBackground(),cb.styles.col2.cssText="background-color: "+y(ab.background.RGB)+";"+A(ab.background.alpha),a&&v(ab),ab}function v(a){var c=db,d=Z,e=T[bb.alphaBG];d.hueDelta=c.round(100*a["rgbaMixBGMix"+e].hueDelta),d.luminanceDelta=c.round(100*a["rgbaMixBGMix"+e].luminanceDelta),d.RGBLuminance=a.RGBLuminance>.22?"light":"dark",d.HUEContrast=a.HUELuminance>.22?"light":"dark",d.contrast=d.luminanceDelta>d.hueDelta?"contrast":"",d.readabiltiy=a["rgbaMixBGMix"+e].WCAG2Ratio>=7?"green":a["rgbaMixBGMix"+e].WCAG2Ratio>=4.5?"orange":"",d.noRGBZ=bb["no"+bb.mode.type.toUpperCase()+bb.mode.z]?"g"===bb.mode.z&&a.rgb.g<.59||"b"===bb.mode.z||"r"===bb.mode.z?"dark":"light":b}function w(){if(I){if(!Y)return L=a[fb](w);Y=!1}var c,d,e,f,g=bb,h=g.mode,i=g.scale,l=g.CSSPrefix,m=ab,n=cb,o=n.styles,p=n.textNodes,q=S,r=K,s=Z,t=$,u=db,v=A,x=y,z=0,B=0,C=m[h.type][h.x],D=u.round(255*C/(4===i?2:i)),E=m[h.type][h.y],F=1-E,G=u.round(255*F/i),H=1-m[h.type][h.z],M=u.round(255*H/i),N=[C,E],O="rgb"===h.type,P="h"===h.z,Q="hsl"===h.type,R=Q&&"s"===h.z,T=I===j,U=I===k;O&&(N[0]>=N[1]?B=1:z=1,t.sliderSwap!==z&&(n.sldr_2.className=g.CSSPrefix+"sldr-"+(3-z),t.sliderSwap=z)),(O&&!U||P&&!T||!P&&!U)&&(o[P?"sldl_2":"sldr_2"][O?"cssText":"backgroundColor"]=O?v((N[z]-N[B])/(1-N[B]||0)):x(m.hueRGB)),P||(U||(o.sldr_4.cssText=v(O?N[B]:R?u.abs(1-2*F):F)),T||(o.sldl_3.cssText=v(Q&&"l"===h.z?u.abs(1-2*H):H)),Q&&(f=R?"sldr_4":"sldl_3",d=R?"r-":"l-",e=R?F>.5?4:3:H>.5?3:4,t[f]!==e&&(n[f].className=g.CSSPrefix+"sld"+d+e,t[f]=e))),U||(o.curm.cssText="left: "+D+"px; top: "+G+"px;"),T||(o.curl.top=M+"px"),r&&(o.curr.top=M+"px"),(r&&"alpha"===r.type||J===n.opacity)&&(o.opacity_slider.left=g.opacityPositionRelative?m.alpha*((X.width||n.opacity.offsetWidth)-(X.childWidth||n.opacity_slider.offsetWidth))+"px":100*m.alpha+"%"),o.col1.cssText="background-color: "+x(m.RND.rgb)+"; "+(g.muteAlpha?"":v(m.alpha)),o.opacity.backgroundColor=x(m.RND.rgb),o.cold.width=s.hueDelta+"%",o.cont.width=s.luminanceDelta+"%";for(c in p)d=c.split("_"),g.cmyOnly&&(d[0]=d[0].replace("k","")),e=d[1]?m.RND[d[0]][d[1]]:m.RND[d[0]]||m[d[0]],t[c]!==e&&(t[c]=e,p[c].data=e>359.5&&"HEX"!==c?0:e,"HEX"===c||g.noRangeBackground||(e=m[d[0]][d[1]]!==b?m[d[0]][d[1]]:m[d[0]],"Lab"===d[0]&&(e=(e-q[d[0]][d[1]][0])/(q[d[0]][d[1]][1]-q[d[0]][d[1]][0])),o[c].backgroundPosition=u.round(100*(1-e))+"% 0%"));d=m._rgb?[m._rgb.r!==m.rgb.r,m._rgb.g!==m.rgb.g,m._rgb.b!==m.rgb.b]:[],d.join("")!==t.outOfGammut&&(n.rgb_r_labl.firstChild.data=d[0]?"!":" ",n.rgb_g_labl.firstChild.data=d[1]?"!":" ",n.rgb_b_labl.firstChild.data=d[2]?"!":" ",t.outOfGammut=d.join("")),s.noRGBZ&&t.noRGBZ!==s.noRGBZ&&(n.curl.className=l+"curl "+l+"curl-"+s.noRGBZ,U||(n.curr.className=l+"curr "+l+"curr-"+s.noRGBZ),t.noRGBZ=s.noRGBZ),t.HUEContrast!==s.HUEContrast&&"h"===h.z?(n.slds.className=n.slds.className.replace(/\s+hue-(?:dark|light)/,"")+" hue-"+s.HUEContrast,U||(n.curr.className=l+"curr "+l+"curr-"+s.HUEContrast),t.HUEContrast=s.HUEContrast):t.RGBLuminance!==s.RGBLuminance&&(n.colorPicker.className=n.colorPicker.className.replace(/\s+(?:dark|light)/,"")+" "+s.RGBLuminance,U||"h"===h.z||s.noRGBZ||(n.curr.className=l+"curr "+l+"curr-"+s.RGBLuminance),t.RGBLuminance=s.RGBLuminance),(t.contrast!==s.contrast||t.readabiltiy!==s.readabiltiy)&&(n.ctrl.className=n.ctrl.className.replace(" contrast","").replace(/\s*(?:orange|green)/,"")+(s.contrast?" "+s.contrast:"")+(s.readabiltiy?" "+s.readabiltiy:""),t.contrast=s.contrast,t.readabiltiy=s.readabiltiy),t.saveColor!==m.saveColor&&(n.HEX_labl.firstChild.data=m.saveColor?"web save"===m.saveColor?"W":"M":"!",t.saveColor=m.saveColor),g.renderCallback&&g.renderCallback(m,h),I&&(L=a[fb](w))}function x(a){var b={};for(var c in a)b[c]=a[c];return b}function y(a,b){for(var c="",d=(b||"rgb").split(""),e=d.length;e--;)c=", "+a[d[e]]+c;return(b||"rgb")+"("+c.substr(2)+")"}function z(a,b,c){return a>c?c:b>a?b:a}function A(a){return a===b&&(a=1),R?"opacity: "+db.round(1e10*a)/1e10+";":"filter: alpha(opacity="+db.round(100*a)+");"}function B(b,c){return b.preventDefault?b.preventDefault():b.returnValue=!1,c||(a.getSelection?a.getSelection().removeAllRanges():document.selection.empty()),!1}function C(a,c,d){return a?a.className=d!==b?a.className.replace(new RegExp("\\s+?"+c,"g"),d?" "+d:""):a.className+" "+c:!1}function D(b){var c=b.getBoundingClientRect?b.getBoundingClientRect():{top:0,left:0},d=b&&b.ownerDocument,e=d.body,f=d.defaultView||d.parentWindow||a,g=d.documentElement||e.parentNode,h=g.clientTop||e.clientTop||0,i=g.clientLeft||e.clientLeft||0;return{left:c.left+(f.pageXOffset||g.scrollLeft)-i,top:c.top+(f.pageYOffset||g.scrollTop)-h}}function E(b){var c=a.document;return{X:b.pageX||b.clientX+c.body.scrollLeft+c.documentElement.scrollLeft,Y:b.pageY||b.clientY+c.body.scrollTop+c.documentElement.scrollTop}}function F(a,b,c){F.cache=F.cache||{_get:function(a,b,c,d){for(var e=F.cache[b]||[],f=e.length;f--;)if(a===e[f].obj&&""+c==""+e[f].func)return c=e[f].func,d||(e[f]=e[f].obj=e[f].func=null,e.splice(f,1)),c},_set:function(a,b,c){var d=F.cache[b]=F.cache[b]||[];return F.cache._get(a,b,c,!0)?!0:void d.push({func:c,obj:a})}},!c.name&&F.cache._set(a,b,c)||"function"!=typeof c||(a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent("on"+b,c))}function G(a,b,c){"function"==typeof c&&(c.name||(c=F.cache._get(a,b,c)||c),a.removeEventListener?a.removeEventListener(b,c,!1):a.detachEvent("on"+b,c))}function H(c,d){var e={};if(d===b){if(a.getSelection){c.focus();var f=a.getSelection().getRangeAt(0),g=f.cloneRange();g.selectNodeContents(c),g.setEnd(f.endContainer,f.endOffset),e={end:g.toString().length,range:f.toString().length}}else{c.focus();var f=document.selection.createRange(),g=document.body.createTextRange();g.moveToElementText(c),g.setEndPoint("EndToEnd",f),e={end:g.text.length,range:f.text.length}}return e.start=e.end-e.range,e}if(-1==d&&(d=c.text().length),a.getSelection)c.focus(),a.getSelection().collapse(c.firstChild,d);else{var h=document.body.createTextRange();h.moveToElementText(c),h.moveStart("character",d),h.collapse(!0),h.select()}return d}var I,J,K,L,M,N,O=a.ColorPicker,P=!O,Q=!1,R=!1,S={},T={w:"White",b:"Black",c:"Custom"},U="",V=1,W={},X={},Y=!0,Z={},$={},_={},ab={},bb={},cb={},db=Math,eb="AnimationFrame",fb="request"+eb,gb="cancel"+eb,hb=["ms","moz","webkit","o"],ib=function(a){this.options={color:"rgba(204, 82, 37, 0.8)",mode:"rgb-b",fps:60,delayOffset:8,CSSPrefix:"cp-",allMixDetails:!0,alphaBG:"w",imagePath:""},c(this,a||{})};a.ColorPicker=ib,ib.addEvent=F,ib.removeEvent=G,ib.getOrigin=D,ib.limitValue=z,ib.changeClass=C,ib.prototype.setColor=function(a,b,c,e){d(this),K=!0,v(_.setColor.apply(_,arguments)),e&&this.startRender(!0)},ib.prototype.saveAsBackground=function(){return d(this),u(!0)},ib.prototype.setCustomBackground=function(a){return d(this),_.setCustomBackground(a)},ib.prototype.startRender=function(b){d(this),b?(I=!1,w(),this.stopRender()):(I=1,L=a[fb](w))},ib.prototype.stopRender=function(){d(this),a[gb](L),K&&(I=1,i(b,"external"))},ib.prototype.setMode=function(a){d(this),q(a),r(),w()},ib.prototype.destroyAll=function(){var a=this.nodes.colorPicker,b=function(a){for(var c in a)(a[c]&&"[object Object]"===a[c].toString()||a[c]instanceof Array)&&b(a[c]),a[c]=null,delete a[c]};this.stopRender(),h(this,!0),b(this),a.parentNode.removeChild(a),a=null},ib.prototype.renderMemory=function(a){var c=this.nodes.memos,d=[];"string"==typeof a&&(a=a.replace(/^'|'$/g,"").replace(/\s*/,"").split("','"));for(var e=c.length;e--;)a&&"string"==typeof a[e]&&(d=a[e].replace("rgba(","").replace(")","").split(","),a[e]={r:d[0],g:d[1],b:d[2],a:d[3]}),c[e].style.cssText="background-color: "+(a&&a[e]!==b?y(a[e])+";"+A(a[e].a||1):"rgb(0,0,0);")},F(Q?document.body:a,"mouseup",i);for(var jb=hb.length;jb--&&!a[fb];)a[fb]=a[hb[jb]+"Request"+eb],a[gb]=a[hb[jb]+"Cancel"+eb]||a[hb[jb]+"CancelRequest"+eb];a[fb]=a[fb]||function(b){return a.setTimeout(b,1e3/bb.fps)},a[gb]=a[gb]||function(b){return a.clearTimeout(b),L=null}}(window); +//# sourceMappingURL=colorPicker.js.map \ No newline at end of file diff --git a/_server/colorPicker/colorPicker.data.js b/_server/colorPicker/colorPicker.data.js deleted file mode 100644 index e4169baf..00000000 --- a/_server/colorPicker/colorPicker.data.js +++ /dev/null @@ -1,28 +0,0 @@ -;(function(window, undefined){ - "use strict" - - // see colorPicker.html for the following encrypted variables... will only be used in buildView() - var _html = ('^§app alpha-bg-w">^§slds">^§sldl-1">$^§sldl-2">$^§sldl-3">$^§curm">$^§sldr-1">$^§sldr-2">$^§sldr-4">$^§curl">$^§curr">$$^§opacity">|^§opacity-slider">$$$^§memo">^§raster">$^§raster-bg">$|$|$|$|$|$|$|$|$^§memo-store">$^§memo-cursor">$$^§panel">^§hsv">^hsl-mode §ß">$^hsv-h-ß §ß">H$^hsv-h-~ §~">-^§nsarrow">$$^hsl-h-@ §@">H$^hsv-s-ß §ß">S$^hsv-s-~ §~">-$^hsl-s-@ §@">S$^hsv-v-ß §ß">B$^hsv-v-~ §~">-$^hsl-l-@ §@">L$$^§hsl §hide">^hsv-mode §ß">$^hsl-h-ß §ß">H$^hsl-h-~ §~">-$^hsv-h-@ §@">H$^hsl-s-ß §ß">S$^hsl-s-~ §~">-$^hsv-s-@ §@">S$^hsl-l-ß §ß">L$^hsl-l-~ §~">-$^hsv-v-@ §@">B$$^§rgb">^rgb-r-ß §ß">R$^rgb-r-~ §~">-$^rgb-r-@ §ß"> $^rgb-g-ß §ß">G$^rgb-g-~ §~">-$^rgb-g-@ §ß"> $^rgb-b-ß §ß">B$^rgb-b-~ §~">-$^rgb-b-@ §ß"> $$^§cmyk">^Lab-mode §ß">$^cmyk-c-ß §@">C$^cmyk-c-~ §~">-$^Lab-L-@ §@">L$^cmyk-m-ß §@">M$^cmyk-m-~ §~">-$^Lab-a-@ §@">a$^cmyk-y-ß §@">Y$^cmyk-y-~ §~">-$^Lab-b-@ §@">b$^cmyk-k-ß §@">K$^cmyk-k-~ §~">-$^Lab-x-@ §ß"> $$^§Lab §hide">^cmyk-mode §ß">$^Lab-L-ß §@">L$^Lab-L-~ §~">-$^cmyk-c-@ §@">C$^Lab-a-ß §@">a$^Lab-a-~ §~">-$^cmyk-m-@ §@">M$^Lab-b-ß §@">b$^Lab-b-~ §~">-$^cmyk-y-@ §@">Y$^Lab-x-ß §@"> $^Lab-x-~ §~">-$^cmyk-k-@ §@">K$$^§alpha">^alpha-ß §ß">A$^alpha-~ §~">-$^alpha-@ §ß">W$$^§HEX">^HEX-ß §ß">#$^HEX-~ §~">-$^HEX-@ §ß">M$$^§ctrl">^§raster">$^§cont">$^§cold">$^§col1">| $$^§col2">| $$^§bres">RESET$^§bsav">SAVE$$$^§exit">$^§resize">$^§resizer">|$$$'). - replace(/\^/g, '
prevent showing the accelerator menu - // document.selection.empty(); - // } - window[cancelAnimationFrame](_renderTimer); - removeEvent(_isIE ? document.body : window, 'mousemove', _mouseMoveAction); - if (_delayState) { // hapens on inputs - _valueType = {type: 'alpha'}; - renderAll(); - } - // this is dirty... has to do with M|W|! button - if (typeof _mouseMoveAction === 'function' || typeof _mouseMoveAction === 'number') { - delete _options.webUnsave; - } - - _delayState = 1; - _mouseMoveAction = undefined; - - changeClass(_nodes.slds, 'do-drag', ''); - changeClass(_nodes.panel, '(?:start-change|do-change)', ''); - - _nodes.resizer.style.cssText = ''; - _nodes.panelCover.style.cssText = ''; - - _nodes.memo_store.style.cssText = 'background-color: ' + - color2string(_colors.RND.rgb) + '; ' + getOpacityCSS(_colors.alpha); - _nodes.memo.className = _nodes.memo.className.replace(/\s+(?:dark|light)/, '') + - // (/dark/.test(_nodes.colorPicker.className) ? ' dark' : ' light'); - (_colors['rgbaMix' + _bgTypes[_options.alphaBG]].luminance < 0.22 ? ' dark' : ' light'); - // (_colors.rgbaMixCustom.luminance < 0.22 ? ' dark' : ' light') - - _valueType = undefined; - - resetCursors(); - - if (_options.actionCallback) { - _options.actionCallback(e, _action || mouseMoveAction.name || action || 'external'); - } - } - } - - function changeXYValue(e) { - var event = e || window.event, - scale = _options.scale, - page = getPageXY(event), - x = (page.X - _targetOrigin.left) * (scale === 4 ? 2 : scale), - y = (page.Y - _targetOrigin.top) * scale, - mode = _options.mode; - - _colors[mode.type][mode.x] = limitValue(x / 255, 0, 1); - _colors[mode.type][mode.y] = 1 - limitValue(y / 255, 0, 1); - convertColors(); - return preventDefault(event); - } - - function changeZValue(e) { // make this part of changeXYValue - var event = e || window.event, - page = getPageXY(event), - z = (page.Y - _targetOrigin.top) * _options.scale, - mode = _options.mode; - - _colors[mode.type][mode.z] = 1 - limitValue(z / 255, 0, 1); - convertColors(); - return preventDefault(event); - } - - function changeOpacityValue(e) { - var event = e || window.event, - page = getPageXY(event); - - _newData = true; - _colors.alpha = limitValue(_math.round( - (page.X - _targetOrigin.left) / _targetOrigin.width * 100), 0, 100 - ) / 100; - convertColors('alpha'); - return preventDefault(event); - } - - function changeInputValue(e) { - var event = e || window.event, - page = getPageXY(event), - delta = _startCoords.pageY - page.Y, - delayOffset = _options.delayOffset, - type = _valueType.type, - isAlpha = type === 'alpha', - ranges; - - if (_delayState || _math.abs(delta) >= delayOffset) { - if (!_delayState) { - _delayState = (delta > 0 ? -delayOffset : delayOffset) + - (+_mainTarget.firstChild.data) * (isAlpha ? 100 : 1); - _startCoords.pageY += _delayState; - delta += _delayState; - _delayState = 1; - changeClass(_nodes.panel, 'start-change', 'do-change'); - _nodes.panelCover.style.cssText = 'position:absolute;left:0;top:0;right:0;bottom:0'; - // window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty(); - document.activeElement.blur(); - _renderTimer = window[requestAnimationFrame](renderAll); - } - - if (type === 'cmyk' && _options.cmyOnly) { - type = 'cmy'; - } - - if (isAlpha) { - _newData = true; - _colors.alpha = limitValue(delta / 100, 0, 1); - } else { - ranges = _valueRanges[type][_valueType.z]; - _colors[type][_valueType.z] = type === 'Lab' ? limitValue(delta, ranges[0], ranges[1]) : - limitValue(delta / ranges[1], 0, 1); - } - convertColors(isAlpha ? 'alpha' : type); - // event.returnValue is deprecated. Please use the standard event.preventDefault() instead. - // event.returnValue = false; // see: pauseEvent(event); - return preventDefault(event); - } - } - - function keyControl(e) { // this is quite big for what it does... - var event = e || window.event, - keyCode = event.which || event.keyCode, - key = String.fromCharCode(keyCode), - elm = document.activeElement, - - cln = elm.className.replace(_options.CSSPrefix, '').split('-'), - type = cln[0], - mode = cln[1], - - isAlpha = type === 'alpha', - isHex = type === 'HEX', - arrowKey = {k40: -1, k38: 1, k34: -10, k33: 10}['k' + keyCode] / (isAlpha ? 100 : 1), - validKeys = {'HEX': /[0-9a-fA-F]/, 'Lab': /[\-0-9]/, 'alpha': /[\.0-9]/}[type] || /[0-9]/, - valueRange = _valueRanges[type][type] || _valueRanges[type][mode], // let op! - - textNode = elm.firstChild, // chnge on TAB key - rangeData = caret(elm), - origValue = textNode.data, // do not change - value, - val = origValue === '0' && !isHex ? [] : origValue.split(''); // gefixt - - if (/^(?:27|13)$/.test(keyCode)) { // ENTER || ESC - preventDefault(event); - elm.blur(); - } else if (event.type === 'keydown') { // functional keys - if (arrowKey) { // arrow/page keys - value = limitValue(_math.round((+origValue + arrowKey) * 1e+6) / 1e+6, valueRange[0], valueRange[1]); - } else if (/^(?:8|46)$/.test(keyCode)) { // DELETE / BACKSPACE - if (!rangeData.range) { - rangeData.range++; - rangeData.start -= keyCode === 8 ? 1 : 0; - } - val.splice(rangeData.start, rangeData.range); - value = val.join('') || '0'; // never loose elm.firstChild - } - - if (value !== undefined) { // prevent keypress - preventDefault(event, true); - } - } else if (event.type === 'keypress') { - if (!/^(?:37|39|8|46|9)$/.test(keyCode)) { // left, right,DEL, BACK, TAB for FF - preventDefault(event, true); - } - if (validKeys.test(key)) { // regular input - val.splice(rangeData.start, rangeData.range, key); - value = val.join(''); - } - rangeData.start++; - } - - if (keyCode === 13 && isHex) { - if (textNode.data.length % 3 === 0 || textNode.data === '0') { // textNode.data.length && - return _colorPicker.setColor(textNode.data === '0' ? '000' : textNode.data, 'rgb', _colors.alpha, true); - } else { - preventDefault(event, true); - return elm.focus(); - } - } - - if (isHex && value !== undefined) { - value = /^0+/.test(value) ? value : parseInt(''+value, 16) || 0; - } - - if (value !== undefined && value !== '' && +value >= valueRange[0] && +value <= valueRange[1]) { - if (isHex) { - value = value.toString(16).toUpperCase() || '0'; - } - if (isAlpha) { - _colors[type] = +value; - } else if (!isHex) { - _colors[type][mode] = +value / (type === 'Lab' ? 1 : valueRange[1]); - } - convertColors(isAlpha ? 'alpha' : type); - - preRenderAll(_colors); - _mouseMoveAction = true; - stopChange(e, event.type); - - textNode.data = value; // if - caret(elm, _math.min(elm.firstChild.data.length, rangeData.start < 0 ? 0 : rangeData.start)); - } - } - - function buttonActions(e) { - var event = e || window.event, - target = event.target || event.srcElement, - targetClass = target.className, - parent = target.parentNode, - options = _options, - RGB = _colors.RND.rgb, - customBG, alphaBG, - mode = _options.mode, - newMode = '', - prefix = options.CSSPrefix, - isModeButton = /(?:hs|rgb)/.test(parent.className) && /^[HSBLRG]$/.test( - target.firstChild ? target.firstChild.data : '' - ), - isDblClick = /dblc/.test(event.type), - buttonAction = ''; // think this over again.... - - if (isDblClick && !isModeButton) { - return; - } else if (targetClass.indexOf('-labl ' + prefix + 'labl') !== -1) { // HSB -> HSL; CMYK -> Lab buttons - changeClass(_nodes[targetClass.split('-')[0]], prefix + 'hide', ''); - changeClass(_nodes[parent.className.split('-')[1]], prefix + 'hide'); - } else if (targetClass.indexOf(prefix + 'butt') !== -1) { // BUTTONS - if (isModeButton) { // set render modes - if (isDblClick && _options.scale === 2) { - newMode = /hs/.test(mode.type) ? 'rgb' : /hide/.test(_nodes.hsl.className) ? 'hsv' : 'hsl'; - newMode = newMode + '-' + newMode[mode.type.indexOf(mode.z)]; - } - _colorPicker.setMode(newMode ? newMode : targetClass.replace('-butt', '').split(' ')[0]); - buttonAction = 'modeChange'; - } else if (/^[rgb]/.test(targetClass)) { // no vertical slider rendering in RGB mode - newMode = targetClass.split('-')[1]; - changeClass(_nodes.colorPicker, 'no-rgb-' + newMode, - (options['noRGB' + newMode] = !options['noRGB' + newMode]) ? undefined : ''); - buttonAction = 'noRGB' + newMode; - // preRenderAll(); - } else if (target === _nodes.alpha_labl) { // alpha button right (background of raster) - customBG = options.customBG; - alphaBG = options.alphaBG; - changeClass(_nodes.colorPicker, 'alpha-bg-' + alphaBG, 'alpha-bg-' + - (alphaBG = options.alphaBG = e.data || (alphaBG === 'w' ? (customBG ? 'c' : 'b') : - alphaBG === 'c' ? 'b' : 'w'))); - target.firstChild.data = alphaBG.toUpperCase(); - _nodes.ctrl.style.backgroundColor = _nodes.memo.style.backgroundColor = - alphaBG !== 'c' ? '' : 'rgb(' + _math.round(customBG.r * 255) + ', ' + - _math.round(customBG.g * 255) + ', ' + - _math.round(customBG.b * 255) + ')'; - _nodes.raster.style.cssText = _nodes.raster_bg.previousSibling.style.cssText = - alphaBG !== 'c' ? '' : getOpacityCSS(customBG.luminance < 0.22 ? 0.5 : 0.4); - buttonAction = 'alphaBackground'; - } else if (target === _nodes.alpha_butt) { // alpha button left (disable alpha rendering) - changeClass(_nodes.colorPicker, 'mute-alpha', (options.muteAlpha = !options.muteAlpha) ? undefined : ''); - buttonAction = 'alphaState'; - } else if (target === _nodes.HEX_butt) { // make it on/off - changeClass(_nodes.colorPicker, 'no-HEX', (options.HEXState = !options.HEXState) ? undefined : ''); - buttonAction = 'HEXState'; - } else if (target === _nodes.HEX_labl) { // web save state change - var isWebSave = _colors.saveColor === 'web save'; - - if (_colors.saveColor !== 'web smart' && !isWebSave) { - options.webUnsave = copyColor(RGB); - _colorPicker.setColor(_colors.webSmart, 'rgb'); - } else if (!isWebSave) { - if (!options.webUnsave) { - options.webUnsave = copyColor(RGB); - } - _colorPicker.setColor(_colors.webSave, 'rgb'); - } else { - _colorPicker.setColor(options.webUnsave, 'rgb'); - } - buttonAction = 'webColorState'; - } else if (/Lab-x-labl/.test(targetClass)) { //target === _nodes.cmyk_type) { - // switch between CMYK and CMY - changeClass(_nodes.colorPicker, 'cmy-only', (options.cmyOnly = !options.cmyOnly) ? undefined : ''); - buttonAction = 'cmykState'; - } - } else if (target === _nodes.bsav) { // SAVE - saveAsBackground(); - buttonAction = 'saveAsBackground'; - } else if (target === _nodes.bres) { // RESET - var tmpColor = copyColor(RGB), - tmpAlpha = _colors.alpha; - - // a bit heavy but... doesn't matter here - // newCol, type, alpha, forceRender - _colorPicker.setColor(options.color); - saveAsBackground(); - _colorPicker.setColor(tmpColor, 'rgb', tmpAlpha); - buttonAction = 'resetColor'; - } else if (parent === _nodes.col1) { // COLOR left - // _colors.hsv.h = (_colors.hsv.h + 0.5) % 1; // not acurate - _colors.hsv.h -= (_colors.hsv.h > 0.5 ? 0.5 : -0.5); - convertColors('hsv'); - buttonAction = 'shiftColor'; - - } else if (parent === _nodes.col2) { // COLOR right - _colorPicker.setColor(target.style.backgroundColor, 'rgb', _colors.background.alpha); - buttonAction = 'setSavedColor'; - } else if (parent === _nodes.memo) { // MEMORIES // revisit... - var resetBlink = function() { - if (_nodes.memos.blinker) _nodes.memos.blinker.style.cssText = _nodes.memos.cssText; - }, - doBlink = function(elm) { - _nodes.memos.blinker = elm; - elm.style.cssText = 'background-color:' + (_colors.RGBLuminance > 0.22 ? '#333' : '#DDD'); - window.setTimeout(resetBlink, 200); - }; - - if (target === _nodes.memo_cursor) { // save color in memo - resetBlink(); - _nodes.memos.blinker = undefined; - _nodes.testNode.style.cssText = _nodes.memo_store.style.cssText; - _nodes.memos.cssText = _nodes.testNode.style.cssText; // ...how browser sees css - for (var n = _nodes.memos.length - 1; n--; ) { // check if color already exists - if (_nodes.memos.cssText === _nodes.memos[n].style.cssText) { - doBlink(_nodes.memos[n]); // sets _nodes.memos.blinker - break; - } - } - if (!_nodes.memos.blinker) { // right shift colors - for (var n = _nodes.memos.length - 1; n--; ) { - _nodes.memos[n + 1].style.cssText = _nodes.memos[n].style.cssText; - } - _nodes.memos[0].style.cssText = _nodes.memo_store.style.cssText; - } - buttonAction = 'toMemory'; - } else { // reset color from memo - resetBlink(); - _colorPicker.setColor(target.style.backgroundColor, 'rgb', target.style.opacity || 1); - _nodes.memos.cssText = target.style.cssText; - doBlink(target); - // this is dirty... has to do with M|W|! button - _mouseMoveAction = 1; - buttonAction = 'fromMemory'; - } - - } - // think this over again, does this need to be like this?? - if (buttonAction) { - preRenderAll(_colors); - _mouseMoveAction = _mouseMoveAction || true; // !!!! search for: // this is dirty... - stopChange(e, buttonAction); - } - } - - function resizeApp(e, size) { - var event = e || window.event, - page = event ? getPageXY(event) : {}, - isSize = size !== undefined, - x = isSize ? size : page.X - _targetOrigin.left + 8, - y = isSize ? size : page.Y - _targetOrigin.top + 8, - values = [' S XS XXS', ' S XS', ' S', ''], - sizes = _options.sizes, // from getUISizes(); - currentSize = isSize ? size : - y < sizes.XXS[1] + 25 ? 0 : - x < sizes.XS[0] + 25 ? 1 : - x < sizes.S[0] + 25 || y < sizes.S[1] + 25 ? 2 : 3, - value = values[currentSize], - isXXS = false, - mode, - tmp = ''; - - if (_cashedVars.resizer !== value) { - isXXS = /XX/.test(value); - mode = _options.mode; - - if (isXXS && (!/hs/.test(mode.type) || mode.z === 'h')) { - tmp = mode.type + '-' + mode.z; - _colorPicker.setMode(/hs/.test(mode.type) ? mode.type + '-s': 'hsv-s'); - _options.mode.original = tmp; - } else if (mode.original) { - // setMode(mode) creates a new object so mode.original gets deleted automatically - _colorPicker.setMode(mode.original); - } - - _nodes.colorPicker.className = _nodes.colorPicker.className.replace(/\s+(?:S|XS|XXS)/g, '') + value; - _options.scale = isXXS ? 4 : /S/.test(value) ? 2 : 1; - _options.currentSize = currentSize; - - _cashedVars.resizer = value; - - // fix this... from this point on inside if() ... convertColors(); - _newData = true; - renderAll(); - resetCursors(); - } - - _nodes.resizer.style.cssText = 'display: block;' + - 'width: ' + (x > 10 ? x : 10) + 'px;' + - 'height: ' + (y > 10 ? y : 10) + 'px;'; - } - - // ------------------------------------------------------ // - // --- Colors calculation and rendering related stuff --- // - // -------------------------------------------------------// - - function setMode(mode) { - var ModeMatrix = { - rgb_r : {x: 'b', y: 'g'}, - rgb_g : {x: 'b', y: 'r'}, - rgb_b : {x: 'r', y: 'g'}, - - hsv_h : {x: 's', y: 'v'}, - hsv_s : {x: 'h', y: 'v'}, - hsv_v : {x: 'h', y: 's'}, - - hsl_h : {x: 's', y: 'l'}, - hsl_s : {x: 'h', y: 'l'}, - hsl_l : {x: 'h', y: 's'} - }, - key = mode.replace('-', '_'), - regex = '\\b(?:rg|hs)\\w\\-\\w\\b'; // \\b\\w{3}\\-\\w\\b'; - - // changeClass(_nodes.colorPicker, '(?:.*?)$', mode); - // changeClass(_nodes.colorPicker, '\\b\\w{3}\\-\\w\\b', mode); - // changeClass(_nodes.slds, '\\b\\w{3}\\-\\w\\b', mode); - changeClass(_nodes.panel, regex, mode); - changeClass(_nodes.slds, regex, mode); - - mode = mode.split('-'); - return _options.mode = { - type: mode[0], - x: ModeMatrix[key].x, - y: ModeMatrix[key].y, - z: mode[1] - }; - } - - function initSliders() { // function name... - var regex = /\s+(?:hue-)*(?:dark|light)/g, - className = 'className'; // minification - - _nodes.curl[className] = _nodes.curl[className].replace(regex, ''); // ..... - _nodes.curr[className] = _nodes.curr[className].replace(regex, ''); // ..... - _nodes.slds[className] = _nodes.slds[className].replace(regex, ''); - // var sldrs = ['sldr_2', 'sldr_4', 'sldl_3']; - // for (var n = sldrs.length; n--; ) { - // _nodes[sldrs[n]][className] = _options.CSSPrefix + sldrs[n].replace('_', '-'); - // } - _nodes.sldr_2[className] = _options.CSSPrefix + 'sldr-2'; - _nodes.sldr_4[className] = _options.CSSPrefix + 'sldr-4'; - _nodes.sldl_3[className] = _options.CSSPrefix + 'sldl-3'; - - for (var style in _nodes.styles) { - if (!style.indexOf('sld')) _nodes.styles[style].cssText = ''; - } - _cashedVars = {}; - } - - function resetCursors() { - // _renderVars.isNoRGB = undefined; - _nodes.styles.curr.cssText = _nodes.styles.curl.cssText; // only coordinates - _nodes.curl.className = _options.CSSPrefix + 'curl' + ( - _renderVars.noRGBZ ? ' ' + _options.CSSPrefix + 'curl-' +_renderVars.noRGBZ: ''); - _nodes.curr.className = _options.CSSPrefix + 'curr ' + _options.CSSPrefix + 'curr-' + - (_options.mode.z === 'h' ? _renderVars.HUEContrast : _renderVars.noRGBZ ? - _renderVars.noRGBZ : _renderVars.RGBLuminance); - } - - function convertColors(type) { - preRenderAll(_colorInstance.setColor(undefined, type || _options.mode.type)); - _newData = true; - } - - function saveAsBackground(refresh) { - _colorInstance.saveAsBackground(); - _nodes.styles.col2.cssText = 'background-color: ' + color2string(_colors.background.RGB) + ';' + - getOpacityCSS(_colors.background.alpha); - - if (refresh) { - preRenderAll(_colors); - // renderAll(); - } - return (_colors); - } - - function preRenderAll(colors) { - var _Math = _math, - renderVars = _renderVars, - bgType = _bgTypes[_options.alphaBG]; - - renderVars.hueDelta = _Math.round(colors['rgbaMixBGMix' + bgType].hueDelta * 100); - // renderVars.RGBLuminanceDelta = _Math.round(colors.RGBLuminanceDelta * 100); - renderVars.luminanceDelta = _Math.round(colors['rgbaMixBGMix' + bgType].luminanceDelta * 100); - renderVars.RGBLuminance = colors.RGBLuminance > 0.22 ? 'light' : 'dark'; - renderVars.HUEContrast = colors.HUELuminance > 0.22 ? 'light' : 'dark'; - // renderVars.contrast = renderVars.RGBLuminanceDelta > renderVars.hueDelta ? 'contrast' : ''; - renderVars.contrast = renderVars.luminanceDelta > renderVars.hueDelta ? 'contrast' : ''; - renderVars.readabiltiy = - colors['rgbaMixBGMix' + bgType].WCAG2Ratio >= 7 ? 'green' : - colors['rgbaMixBGMix' + bgType].WCAG2Ratio >= 4.5 ? 'orange': ''; - renderVars.noRGBZ = _options['no' + _options.mode.type.toUpperCase() + _options.mode.z] ? - (_options.mode.z === 'g' && colors.rgb.g < 0.59 || _options.mode.z === 'b' || _options.mode.z === 'r' ? - 'dark' : 'light') : undefined; - } - - function renderAll() { // maybe render alpha seperately... - if (_mouseMoveAction) { - // _renderTimer = window[requestAnimationFrame](renderAll); - if (!_newData) return (_renderTimer = window[requestAnimationFrame](renderAll)); - _newData = false; - } - // console.time('renderAll'); - var options = _options, - mode = options.mode, - scale = options.scale, - prefix = options.CSSPrefix, - colors = _colors, - nodes = _nodes, - CSS = nodes.styles, - textNodes = nodes.textNodes, - valueRanges = _valueRanges, - valueType = _valueType, - renderVars = _renderVars, - cashedVars = _cashedVars, - - _Math = _math, - _getOpacityCSS = getOpacityCSS, - _color2string = color2string, - - a = 0, - b = 0, - x = colors[mode.type][mode.x], - X = _Math.round(x * 255 / (scale === 4 ? 2 : scale)), - y_ = colors[mode.type][mode.y], - y = 1 - y_, - Y = _Math.round(y * 255 / scale), - z = 1 - colors[mode.type][mode.z], - Z = _Math.round(z * 255 / scale), - coords = (1 === 1) ? [x, y_] : [0, 0], // (1 === 2) button label up - - isRGB = mode.type === 'rgb', - isHue = mode.z === 'h', - isHSL = mode.type === 'hsl', - isHSL_S = isHSL && mode.z === 's', - moveXY = _mouseMoveAction === changeXYValue, - moveZ = _mouseMoveAction === changeZValue, - display, tmp, value, slider; - - if (isRGB) { - if (coords[0] >= coords[1]) b = 1; else a = 1; - if (cashedVars.sliderSwap !== a) { - nodes.sldr_2.className = options.CSSPrefix + 'sldr-' + (3 - a); - cashedVars.sliderSwap = a; - } - } - if ((isRGB && !moveZ) || (isHue && !moveXY) || (!isHue && !moveZ)) { - CSS[isHue ? 'sldl_2' : 'sldr_2'][isRGB ? 'cssText' : 'backgroundColor'] = - isRGB ? _getOpacityCSS((coords[a] - coords[b]) / (1 - (coords[b]) || 0)) : _color2string(colors.hueRGB); - } - if (!isHue) { - if (!moveZ) CSS.sldr_4.cssText = _getOpacityCSS(isRGB ? coords[b] : isHSL_S ? _Math.abs(1 - y * 2) : y); - if (!moveXY) CSS.sldl_3.cssText = _getOpacityCSS(isHSL && mode.z === 'l' ? _Math.abs(1 - z * 2) : z); - if (isHSL) { // switch slider class name for black/white color half way through in HSL(S|L) mode(s) - slider = isHSL_S ? 'sldr_4' : 'sldl_3'; - tmp = isHSL_S ? 'r-' : 'l-'; - value = isHSL_S ? (y > 0.5 ? 4 : 3) : (z > 0.5 ? 3 : 4); - - if (cashedVars[slider] !== value) { - nodes[slider].className = options.CSSPrefix + 'sld' + tmp + value; - cashedVars[slider] = value; - } - } - } - - if (!moveZ) CSS.curm.cssText = 'left: ' + X + 'px; top: ' + Y + 'px;'; - if (!moveXY) CSS.curl.top = Z + 'px'; - if (valueType) CSS.curr.top = Z + 'px'; // && valueType.type !== mode.type - if ((valueType && valueType.type === 'alpha') || _mainTarget === nodes.opacity) { - CSS.opacity_slider.left = options.opacityPositionRelative ? (colors.alpha * ( - (_targetOrigin.width || nodes.opacity.offsetWidth) - - (_targetOrigin.childWidth || nodes.opacity_slider.offsetWidth))) + 'px' : - (colors.alpha * 100) + '%'; - } - - CSS.col1.cssText = 'background-color: ' + _color2string(colors.RND.rgb) + '; ' + - (options.muteAlpha ? '' : _getOpacityCSS(colors.alpha)); - CSS.opacity.backgroundColor = _color2string(colors.RND.rgb); - CSS.cold.width = renderVars.hueDelta + '%'; - CSS.cont.width = renderVars.luminanceDelta + '%'; - - for (display in textNodes) { - tmp = display.split('_'); - if (options.cmyOnly) { - tmp[0] = tmp[0].replace('k', ''); - } - value = tmp[1] ? colors.RND[tmp[0]][tmp[1]] : colors.RND[tmp[0]] || colors[tmp[0]]; - if (cashedVars[display] !== value) { - cashedVars[display] = value; - textNodes[display].data = value > 359.5 && display !== 'HEX' ? 0 : value; - - if (display !== 'HEX' && !options.noRangeBackground) { - value = colors[tmp[0]][tmp[1]] !== undefined ? colors[tmp[0]][tmp[1]] : colors[tmp[0]]; - if (tmp[0] === 'Lab') { - value = (value - valueRanges[tmp[0]][tmp[1]][0]) / - (valueRanges[tmp[0]][tmp[1]][1] - valueRanges[tmp[0]][tmp[1]][0]); - } - CSS[display].backgroundPosition = _Math.round((1 - value) * 100) + '% 0%'; - } - } - } - // Lab out of gammut - tmp = colors._rgb ? [ - colors._rgb.r !== colors.rgb.r, - colors._rgb.g !== colors.rgb.g, - colors._rgb.b !== colors.rgb.b - ] : []; - if (tmp.join('') !== cashedVars.outOfGammut) { - nodes.rgb_r_labl.firstChild.data = tmp[0] ? '!' : ' '; - nodes.rgb_g_labl.firstChild.data = tmp[1] ? '!' : ' '; - nodes.rgb_b_labl.firstChild.data = tmp[2] ? '!' : ' '; - cashedVars.outOfGammut = tmp.join(''); - } - if (renderVars.noRGBZ) { - if (cashedVars.noRGBZ !== renderVars.noRGBZ) { - nodes.curl.className = prefix + 'curl ' + prefix + 'curl-' + renderVars.noRGBZ; - - if (!moveZ) { - nodes.curr.className = prefix + 'curr ' + prefix + 'curr-' + renderVars.noRGBZ; - } - cashedVars.noRGBZ = renderVars.noRGBZ; - } - } - if (cashedVars.HUEContrast !== renderVars.HUEContrast && mode.z === 'h') { - nodes.slds.className = nodes.slds.className.replace(/\s+hue-(?:dark|light)/, '') + - ' hue-' + renderVars.HUEContrast; - if (!moveZ) { - nodes.curr.className = prefix + 'curr ' + prefix + 'curr-' + renderVars.HUEContrast; - } - cashedVars.HUEContrast = renderVars.HUEContrast; - } else if (cashedVars.RGBLuminance !== renderVars.RGBLuminance) { // test for no else - nodes.colorPicker.className = nodes.colorPicker.className.replace(/\s+(?:dark|light)/, '') + - ' ' + renderVars.RGBLuminance; - if (!moveZ && mode.z !== 'h' && !renderVars.noRGBZ) { - nodes.curr.className = prefix + 'curr ' + prefix + 'curr-' + renderVars.RGBLuminance; - } - cashedVars.RGBLuminance = renderVars.RGBLuminance; - } - - if (cashedVars.contrast !== renderVars.contrast || cashedVars.readabiltiy !== renderVars.readabiltiy) { - nodes.ctrl.className = nodes.ctrl.className.replace(' contrast', '').replace(/\s*(?:orange|green)/, '') + - (renderVars.contrast ? ' ' + renderVars.contrast : '') + - (renderVars.readabiltiy ? ' ' + renderVars.readabiltiy : ''); - cashedVars.contrast = renderVars.contrast; - cashedVars.readabiltiy = renderVars.readabiltiy; - } - - if (cashedVars.saveColor !== colors.saveColor) { - nodes.HEX_labl.firstChild.data = !colors.saveColor ? '!' : colors.saveColor === 'web save' ? 'W' : 'M'; - cashedVars.saveColor = colors.saveColor; - } - - if (options.renderCallback) { - options.renderCallback(colors, mode); // maybe more parameters - } - - if (_mouseMoveAction) { - _renderTimer = window[requestAnimationFrame](renderAll); - } - - // console.timeEnd('renderAll') - } - - - // ------------------------------------------------------ // - // ------------------ helper functions ------------------ // - // -------------------------------------------------------// - - function copyColor(color) { - var newColor = {}; - - for (var n in color) { - newColor[n] = color[n]; - } - return newColor; - } - - // function color2string(color, type) { - // var out = [], - // n = 0; - - // type = type || 'rgb'; - // while (type.charAt(n)) { // IE7 // V8 type[n] || - // out.push(color[type.charAt(n)]); - // n++; - // } - // return type + '(' + out.join(', ') + ')'; - // } - - function color2string(color, type) { // ~2 x faster on V8 - var out = '', - t = (type || 'rgb').split(''), - n = t.length; - - for ( ; n--; ) { - out = ', ' + color[t[n]] + out; - } - return (type || 'rgb') + '(' + out.substr(2) + ')'; - } - - - function limitValue(value, min, max) { - // return Math.max(min, Math.min(max, value)); // faster?? - return (value > max ? max : value < min ? min : value); - } - - function getOpacityCSS(value) { - if (value === undefined) value = 1; - - if (_doesOpacity) { - return 'opacity: ' + (_math.round(value * 10000000000) / 10000000000) + ';'; // value.toFixed(16) = 99% slower - // some speed test: - // return ['opacity: ', (Math.round(value * 1e+10) / 1e+10), ';'].join(''); - } else { - return 'filter: alpha(opacity=' + _math.round(value * 100) + ');'; - } - } - - function preventDefault(e, skip) { - e.preventDefault ? e.preventDefault() : e.returnValue = false; - if (!skip) window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty(); - return false; - } - - function changeClass(elm, cln, newCln) { - return !elm ? false : elm.className = (newCln !== undefined ? - elm.className.replace(new RegExp('\\s+?' + cln, 'g'), newCln ? ' ' + newCln : '') : - elm.className + ' ' + cln); - } - - function getOrigin(elm) { - var box = (elm.getBoundingClientRect) ? elm.getBoundingClientRect() : {top: 0, left: 0}, - doc = elm && elm.ownerDocument, - body = doc.body, - win = doc.defaultView || doc.parentWindow || window, - docElem = doc.documentElement || body.parentNode, - clientTop = docElem.clientTop || body.clientTop || 0, // border on html or body or both - clientLeft = docElem.clientLeft || body.clientLeft || 0; - - return { - left: box.left + (win.pageXOffset || docElem.scrollLeft) - clientLeft, - top: box.top + (win.pageYOffset || docElem.scrollTop) - clientTop - }; - } - - function getPageXY(e) { - var doc = window.document; - - return { - X: e.pageX || e.clientX + doc.body.scrollLeft + doc.documentElement.scrollLeft, - Y: e.pageY || e.clientY + doc.body.scrollTop + doc.documentElement.scrollTop - }; - } - - function addEvent(obj, type, func) { - addEvent.cache = addEvent.cache || { - _get: function(obj, type, func, checkOnly) { - var cache = addEvent.cache[type] || []; - - for (var n = cache.length; n--; ) { - if (obj === cache[n].obj && '' + func === '' + cache[n].func) { - func = cache[n].func; - if (!checkOnly) { - cache[n] = cache[n].obj = cache[n].func = null; - cache.splice(n, 1); - } - return func; - } - } - }, - _set: function(obj, type, func) { - var cache = addEvent.cache[type] = addEvent.cache[type] || []; - - if (addEvent.cache._get(obj, type, func, true)) { - return true; - } else { - cache.push({ - func: func, - obj: obj - }); - } - } - }; - - if (!func.name && addEvent.cache._set(obj, type, func) || typeof func !== 'function') { - return; - } - - if (obj.addEventListener) obj.addEventListener(type, func, false); - else obj.attachEvent('on' + type, func); - } - - function removeEvent(obj, type, func) { - if (typeof func !== 'function') return; - if (!func.name) { - func = addEvent.cache._get(obj, type, func) || func; - } - - if (obj.removeEventListener) obj.removeEventListener(type, func, false); - else obj.detachEvent('on' + type, func); - } - - function caret(target, pos) { // only for contenteditable - var out = {}; - - if (pos === undefined) { // get - if (window.getSelection) { // HTML5 - target.focus(); - var range1 = window.getSelection().getRangeAt(0), - range2 = range1.cloneRange(); - range2.selectNodeContents(target); - range2.setEnd(range1.endContainer, range1.endOffset); - out = { - end: range2.toString().length, - range: range1.toString().length - }; - } else { // IE < 9 - target.focus(); - var range1 = document.selection.createRange(), - range2 = document.body.createTextRange(); - range2.moveToElementText(target); - range2.setEndPoint('EndToEnd', range1); - out = { - end: range2.text.length, - range: range1.text.length - }; - } - out.start = out.end - out.range; - return out; - } - // set - if (pos == -1) pos = target['text']().length; - - if (window.getSelection) { // HTML5 - target.focus(); - window.getSelection().collapse(target.firstChild, pos); - } else { // IE < 9 - var range = document.body.createTextRange(); - range.moveToElementText(target); - range.moveStart('character', pos); - range.collapse(true); - range.select(); - } - return pos; - } - - // ------------- requestAnimationFrame shim ------------- // - // ---------- quite optimized for minification ---------- // - - for(var n = vendors.length; n-- && !window[requestAnimationFrame]; ) { - window[requestAnimationFrame] = window[vendors[n] + 'Request' + animationFrame]; - window[cancelAnimationFrame] = window[vendors[n] + 'Cancel' + animationFrame] || - window[vendors[n] + 'CancelRequest' + animationFrame]; - } - - window[requestAnimationFrame] = window[requestAnimationFrame] || function(callback) { - // this is good enough... and better than setTimeout - return window.setTimeout(callback, 1000 / _options.fps); - // return _renderTimer ? _renderTimer : window.setInterval(callback, 1000 / _options.fps); - }; - - window[cancelAnimationFrame] = window[cancelAnimationFrame] || function(id) { - // console.log('OFF-', id + '-' + _renderTimer) - window.clearTimeout(id); - return _renderTimer = null; - }; - -})(window); \ No newline at end of file diff --git a/_server/colorPicker/colors.js b/_server/colorPicker/colors.js deleted file mode 100644 index e3d52f46..00000000 --- a/_server/colorPicker/colors.js +++ /dev/null @@ -1,732 +0,0 @@ -;(function(window, undefined){ - "use strict" - - var _valueRanges = { - rgb: {r: [0, 255], g: [0, 255], b: [0, 255]}, - hsv: {h: [0, 360], s: [0, 100], v: [0, 100]}, - hsl: {h: [0, 360], s: [0, 100], l: [0, 100]}, - cmy: {c: [0, 100], m: [0, 100], y: [0, 100]}, - cmyk: {c: [0, 100], m: [0, 100], y: [0, 100], k: [0, 100]}, - Lab: {L: [0, 100], a: [-128, 127], b: [-128, 127]}, - XYZ: {X: [0, 100], Y: [0, 100], Z: [0, 100]}, - alpha: {alpha: [0, 1]}, - HEX: {HEX: [0, 16777215]} // maybe we don't need this - }, - - _instance = {}, - _colors = {}, - - // http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html for more - XYZMatrix = { // Observer = 2° (CIE 1931), Illuminant = D65 - X: [ 0.4124564, 0.3575761, 0.1804375], - Y: [ 0.2126729, 0.7151522, 0.0721750], - Z: [ 0.0193339, 0.1191920, 0.9503041], - R: [ 3.2404542, -1.5371385, -0.4985314], - G: [-0.9692660, 1.8760108, 0.0415560], - B: [ 0.0556434, -0.2040259, 1.0572252] - }, - grey = {r: 0.298954, g: 0.586434, b: 0.114612}, // CIE-XYZ 1931 - luminance = {r: 0.2126, g: 0.7152, b: 0.0722}, // W3C 2.0 - - _math = window.Math, - _parseint = window.parseInt, - - Colors = window.Colors = function(options) { - this.colors = {RND: {}}; - this.options = { - color: 'rgba(204, 82, 37, 0.8)', // init value(s)... - XYZMatrix: XYZMatrix, - // XYZReference: {}, - grey: grey, - luminance: luminance, - valueRanges: _valueRanges - // customBG: '#808080' - // convertCallback: undefined, - // allMixDetails: false - }; - initInstance(this, options || {}); - }, - initInstance = function(THIS, options) { - var matrix, - importColor, - _options = THIS.options, - customBG; - - focusInstance(THIS); - for (var option in options) { - if (options[option] !== undefined) _options[option] = options[option]; - } - matrix = _options.XYZMatrix; - if (!options.XYZReference) _options.XYZReference = { - X: matrix.X[0] + matrix.X[1] + matrix.X[2], - Y: matrix.Y[0] + matrix.Y[1] + matrix.Y[2], - Z: matrix.Z[0] + matrix.Z[1] + matrix.Z[2] - }; - customBG = _options.customBG; - _options.customBG = (typeof customBG === 'string') ? ColorConverter.txt2color(customBG).rgb : customBG; - _colors = setColor(THIS.colors, _options.color, undefined, true); // THIS.colors = _colors = - }, - focusInstance = function(THIS) { - if (_instance !== THIS) { - _instance = THIS; - _colors = THIS.colors; - } - }; - - Colors.prototype.setColor = function(newCol, type, alpha) { - focusInstance(this); - if (newCol) { - return setColor(this.colors, newCol, type, undefined, alpha); - } else { - if (alpha !== undefined) { - this.colors.alpha = limitValue(alpha, 0, 1); - } - return convertColors(type); - } - }; - - Colors.prototype.getColor = function(type) { - var result = this.colors, n = 0; - - if (type) { - type = type.split('.'); - while (result[type[n]]) { - result = result[type[n++]]; - } - if (type.length !== n) { - result = undefined; - } - } - return result; - }; - - Colors.prototype.setCustomBackground = function(col) { // wild gues,... check again... - focusInstance(this); // needed??? - this.options.customBG = (typeof col === 'string') ? ColorConverter.txt2color(col).rgb : col; - // return setColor(this.colors, this.options.customBG, 'rgb', true); // !!!!RGB - return setColor(this.colors, undefined, 'rgb'); // just recalculate existing - }; - - Colors.prototype.saveAsBackground = function() { // alpha - focusInstance(this); // needed??? - // return setColor(this.colors, this.colors.RND.rgb, 'rgb', true); - return setColor(this.colors, undefined, 'rgb', true); - }; - - Colors.prototype.convertColor = function(color, type) { - var convert = ColorConverter, - ranges = _valueRanges, - types = type.split('2'), - fromType = types[0], - toType = types[1], - test = /(?:RG|HS|CM|LA)/, - normalizeFrom = test.test(fromType), - normalizeTo = test.test(toType), - exceptions = {LAB: 'Lab'}, - normalize = function(color, type, reverse) { - var result = {}, - Lab = type === 'Lab' ? 1 : 0; - - for (var n in color) { // faster (but bigger) way: if/else outside 2 for loops - result[n] = reverse ? - _math.round(color[n] * (Lab || ranges[type][n][1])) : - color[n] / (Lab || ranges[type][n][1]); - } - - return result; - }; - - fromType = ranges[fromType] ? fromType : exceptions[fromType] || fromType.toLowerCase(); - toType = ranges[toType] ? toType : exceptions[toType] || toType.toLowerCase(); - - if (normalizeFrom && type !== 'RGB2HEX') { // from ABC to abc - color = normalize(color, fromType); - } - color = fromType === toType ? color : ( // same type; returns same/normalized version - convert[fromType + '2' + toType] ? convert[fromType + '2' + toType](color, true) : // existing converter - toType === 'HEX' ? convert.RGB2HEX(type === 'RGB2HEX' ? color : normalize(fromType === 'rgb' ? color : - convert[fromType + '2rgb'](color, true), 'rgb', true)) : - convert['rgb2' + toType](convert[fromType + '2rgb'](color, true), true) // not in ColorConverter - ); - if (normalizeTo) { // from abc to ABC - color = normalize(color, toType, true); - } - - return color; - }; - - Colors.prototype.toString = function(colorMode, forceAlpha) { - return ColorConverter.color2text((colorMode || 'rgb').toLowerCase(), this.colors, forceAlpha); - }; - - - // ------------------------------------------------------ // - // ---------- Color calculation related stuff ---------- // - // -------------------------------------------------------// - - function setColor(colors, color, type, save, alpha) { // color only full range - if (typeof color === 'string') { - var color = ColorConverter.txt2color(color); // new object - type = color.type; - _colors[type] = color[type]; - alpha = alpha !== undefined ? alpha : color.alpha; - } else if (color) { - for (var n in color) { - colors[type][n] = type === 'Lab' ? - limitValue(color[n], _valueRanges[type][n][0], _valueRanges[type][n][1]) : - limitValue(color[n] / _valueRanges[type][n][1], 0 , 1); - } - } - if (alpha !== undefined) { - colors.alpha = limitValue(+alpha, 0, 1); - } - return convertColors(type, save ? colors : undefined); - } - - function saveAsBackground(RGB, rgb, alpha) { - var grey = _instance.options.grey, - color = {}; - - color.RGB = {r: RGB.r, g: RGB.g, b: RGB.b}; - color.rgb = {r: rgb.r, g: rgb.g, b: rgb.b}; - color.alpha = alpha; - // color.RGBLuminance = getLuminance(RGB); - color.equivalentGrey = _math.round(grey.r * RGB.r + grey.g * RGB.g + grey.b * RGB.b); - - color.rgbaMixBlack = mixColors(rgb, {r: 0, g: 0, b: 0}, alpha, 1); - color.rgbaMixWhite = mixColors(rgb, {r: 1, g: 1, b: 1}, alpha, 1); - color.rgbaMixBlack.luminance = getLuminance(color.rgbaMixBlack, true); - color.rgbaMixWhite.luminance = getLuminance(color.rgbaMixWhite, true); - - if (_instance.options.customBG) { - color.rgbaMixCustom = mixColors(rgb, _instance.options.customBG, alpha, 1); - color.rgbaMixCustom.luminance = getLuminance(color.rgbaMixCustom, true); - _instance.options.customBG.luminance = getLuminance(_instance.options.customBG, true); - } - - return color; - } - - function convertColors(type, colorObj) { - // console.time('convertColors'); - var _Math = _math, - colors = colorObj || _colors, - convert = ColorConverter, - options = _instance.options, - ranges = _valueRanges, - RND = colors.RND, - // type = colorType, // || _mode.type, - modes, mode = '', from = '', // value = '', - exceptions = {hsl: 'hsv', cmyk: 'cmy', rgb: type}, - RGB = RND.rgb, SAVE, SMART; - - if (type !== 'alpha') { - for (var typ in ranges) { - if (!ranges[typ][typ]) { // no alpha|HEX - if (type !== typ && typ !== 'XYZ') { - from = exceptions[typ] || 'rgb'; - colors[typ] = convert[from + '2' + typ](colors[from]); - } - - if (!RND[typ]) RND[typ] = {}; - modes = colors[typ]; - for(mode in modes) { - RND[typ][mode] = _Math.round(modes[mode] * (typ === 'Lab' ? 1 : ranges[typ][mode][1])); - } - } - } - if (type !== 'Lab') { - delete colors._rgb; - } - - RGB = RND.rgb; - colors.HEX = convert.RGB2HEX(RGB); - colors.equivalentGrey = - options.grey.r * colors.rgb.r + - options.grey.g * colors.rgb.g + - options.grey.b * colors.rgb.b; - colors.webSave = SAVE = getClosestWebColor(RGB, 51); - // colors.webSave.HEX = convert.RGB2HEX(colors.webSave); - colors.webSmart = SMART = getClosestWebColor(RGB, 17); - // colors.webSmart.HEX = convert.RGB2HEX(colors.webSmart); - colors.saveColor = - RGB.r === SAVE.r && RGB.g === SAVE.g && RGB.b === SAVE.b ? 'web save' : - RGB.r === SMART.r && RGB.g === SMART.g && RGB.b === SMART.b ? 'web smart' : ''; - colors.hueRGB = convert.hue2RGB(colors.hsv.h); - - if (colorObj) { - colors.background = saveAsBackground(RGB, colors.rgb, colors.alpha); - } - } // else RGB = RND.rgb; - - var rgb = colors.rgb, // for better minification... - alpha = colors.alpha, - luminance = 'luminance', - background = colors.background, - rgbaMixBlack, rgbaMixWhite, rgbaMixCustom, - rgbaMixBG, rgbaMixBGMixBlack, rgbaMixBGMixWhite, rgbaMixBGMixCustom, - _mixColors = mixColors, - _getLuminance = getLuminance, - _getWCAG2Ratio = getWCAG2Ratio, - _getHueDelta = getHueDelta; - - rgbaMixBlack = _mixColors(rgb, {r: 0, g: 0, b: 0}, alpha, 1); - rgbaMixBlack[luminance] = _getLuminance(rgbaMixBlack, true); - colors.rgbaMixBlack = rgbaMixBlack; - - rgbaMixWhite = _mixColors(rgb, {r: 1, g: 1, b: 1}, alpha, 1); - rgbaMixWhite[luminance] = _getLuminance(rgbaMixWhite, true); - colors.rgbaMixWhite = rgbaMixWhite; - - if (options.allMixDetails) { - rgbaMixBlack.WCAG2Ratio = _getWCAG2Ratio(rgbaMixBlack[luminance], 0); - rgbaMixWhite.WCAG2Ratio = _getWCAG2Ratio(rgbaMixWhite[luminance], 1); - - if (options.customBG) { - rgbaMixCustom = _mixColors(rgb, options.customBG, alpha, 1); - rgbaMixCustom[luminance] = _getLuminance(rgbaMixCustom, true); - rgbaMixCustom.WCAG2Ratio = _getWCAG2Ratio(rgbaMixCustom[luminance], options.customBG[luminance]); - colors.rgbaMixCustom = rgbaMixCustom; - } - - rgbaMixBG = _mixColors(rgb, background.rgb, alpha, background.alpha); - rgbaMixBG[luminance] = _getLuminance(rgbaMixBG, true); // ?? do we need this? - colors.rgbaMixBG = rgbaMixBG; - - rgbaMixBGMixBlack = _mixColors(rgb, background.rgbaMixBlack, alpha, 1); - rgbaMixBGMixBlack[luminance] = _getLuminance(rgbaMixBGMixBlack, true); - rgbaMixBGMixBlack.WCAG2Ratio = _getWCAG2Ratio(rgbaMixBGMixBlack[luminance], - background.rgbaMixBlack[luminance]); - /* ------ */ - rgbaMixBGMixBlack.luminanceDelta = _Math.abs( - rgbaMixBGMixBlack[luminance] - background.rgbaMixBlack[luminance]); - rgbaMixBGMixBlack.hueDelta = _getHueDelta(background.rgbaMixBlack, rgbaMixBGMixBlack, true); - /* ------ */ - colors.rgbaMixBGMixBlack = rgbaMixBGMixBlack; - - rgbaMixBGMixWhite = _mixColors(rgb, background.rgbaMixWhite, alpha, 1); - rgbaMixBGMixWhite[luminance] = _getLuminance(rgbaMixBGMixWhite, true); - rgbaMixBGMixWhite.WCAG2Ratio = _getWCAG2Ratio(rgbaMixBGMixWhite[luminance], - background.rgbaMixWhite[luminance]); - /* ------ */ - rgbaMixBGMixWhite.luminanceDelta = _Math.abs( - rgbaMixBGMixWhite[luminance] - background.rgbaMixWhite[luminance]); - rgbaMixBGMixWhite.hueDelta = _getHueDelta(background.rgbaMixWhite, rgbaMixBGMixWhite, true); - /* ------ */ - colors.rgbaMixBGMixWhite = rgbaMixBGMixWhite; - } - - if (options.customBG) { - rgbaMixBGMixCustom = _mixColors(rgb, background.rgbaMixCustom, alpha, 1); - rgbaMixBGMixCustom[luminance] = _getLuminance(rgbaMixBGMixCustom, true); - rgbaMixBGMixCustom.WCAG2Ratio = _getWCAG2Ratio(rgbaMixBGMixCustom[luminance], - background.rgbaMixCustom[luminance]); - colors.rgbaMixBGMixCustom = rgbaMixBGMixCustom; - /* ------ */ - rgbaMixBGMixCustom.luminanceDelta = _Math.abs( - rgbaMixBGMixCustom[luminance] - background.rgbaMixCustom[luminance]); - rgbaMixBGMixCustom.hueDelta = _getHueDelta(background.rgbaMixCustom, rgbaMixBGMixCustom, true); - /* ------ */ - } - - colors.RGBLuminance = _getLuminance(RGB); - colors.HUELuminance = _getLuminance(colors.hueRGB); - - // renderVars.readyToRender = true; - if (options.convertCallback) { - options.convertCallback(colors, type); //, convert); //, _mode); - } - - // console.timeEnd('convertColors') - // if (colorObj) - return colors; - } - - - // ------------------------------------------------------ // - // ------------------ color conversion ------------------ // - // -------------------------------------------------------// - - var ColorConverter = { - txt2color: function(txt) { - var color = {}, - parts = txt.replace(/(?:#|\)|%)/g, '').split('('), - values = (parts[1] || '').split(/,\s*/), - type = parts[1] ? parts[0].substr(0, 3) : 'rgb', - m = ''; - - color.type = type; - color[type] = {}; - if (parts[1]) { - for (var n = 3; n--; ) { - m = type[n] || type.charAt(n); // IE7 - color[type][m] = +values[n] / _valueRanges[type][m][1]; - } - } else { - color.rgb = ColorConverter.HEX2rgb(parts[0]); - } - // color.color = color[type]; - color.alpha = values[3] ? +values[3] : 1; - - return color; - }, - - color2text: function(colorMode, colors, forceAlpha) { - var alpha = forceAlpha !== false && _math.round(colors.alpha * 100) / 100, - hasAlpha = typeof alpha === 'number' && - forceAlpha !== false && (forceAlpha || alpha !== 1), - RGB = colors.RND.rgb, - HSL = colors.RND.hsl, - shouldBeHex = colorMode === 'hex' && hasAlpha, - isHex = colorMode === 'hex' && !shouldBeHex, - isRgb = colorMode === 'rgb' || shouldBeHex, - innerText = isRgb ? RGB.r + ', ' + RGB.g + ', ' + RGB.b : - !isHex ? HSL.h + ', ' + HSL.s + '%, ' + HSL.l + '%' : - '#' + colors.HEX; - - return isHex ? innerText : (shouldBeHex ? 'rgb' : colorMode) + - (hasAlpha ? 'a' : '') + '(' + innerText + (hasAlpha ? ', ' + alpha : '') + ')'; - }, - - RGB2HEX: function(RGB) { - return ( - (RGB.r < 16 ? '0' : '') + RGB.r.toString(16) + - (RGB.g < 16 ? '0' : '') + RGB.g.toString(16) + - (RGB.b < 16 ? '0' : '') + RGB.b.toString(16) - ).toUpperCase(); - }, - - HEX2rgb: function(HEX) { - HEX = HEX.split(''); // IE7 - return { - r: +('0x' + HEX[0] + HEX[HEX[3] ? 1 : 0]) / 255, - g: +('0x' + HEX[HEX[3] ? 2 : 1] + (HEX[3] || HEX[1])) / 255, - b: +('0x' + (HEX[4] || HEX[2]) + (HEX[5] || HEX[2])) / 255 - }; - }, - - hue2RGB: function(hue) { - var _Math = _math, - h = hue * 6, - mod = ~~h % 6, // Math.floor(h) -> faster in most browsers - i = h === 6 ? 0 : (h - mod); - - return { - r: _Math.round([1, 1 - i, 0, 0, i, 1][mod] * 255), - g: _Math.round([i, 1, 1, 1 - i, 0, 0][mod] * 255), - b: _Math.round([0, 0, i, 1, 1, 1 - i][mod] * 255) - }; - }, - - // ------------------------ HSV ------------------------ // - - rgb2hsv: function(rgb) { // faster - var _Math = _math, - r = rgb.r, - g = rgb.g, - b = rgb.b, - k = 0, chroma, min, s; - - if (g < b) { - g = b + (b = g, 0); - k = -1; - } - min = b; - if (r < g) { - r = g + (g = r, 0); - k = -2 / 6 - k; - min = _Math.min(g, b); // g < b ? g : b; ??? - } - chroma = r - min; - s = r ? (chroma / r) : 0; - return { - h: s < 1e-15 ? ((_colors && _colors.hsl && _colors.hsl.h) || 0) : - chroma ? _Math.abs(k + (g - b) / (6 * chroma)) : 0, - s: r ? (chroma / r) : ((_colors && _colors.hsv && _colors.hsv.s) || 0), // ??_colors.hsv.s || 0 - v: r - }; - }, - - hsv2rgb: function(hsv) { - var h = hsv.h * 6, - s = hsv.s, - v = hsv.v, - i = ~~h, // Math.floor(h) -> faster in most browsers - f = h - i, - p = v * (1 - s), - q = v * (1 - f * s), - t = v * (1 - (1 - f) * s), - mod = i % 6; - - return { - r: [v, q, p, p, t, v][mod], - g: [t, v, v, q, p, p][mod], - b: [p, p, t, v, v, q][mod] - }; - }, - - // ------------------------ HSL ------------------------ // - - hsv2hsl: function(hsv) { - var l = (2 - hsv.s) * hsv.v, - s = hsv.s * hsv.v; - - s = !hsv.s ? 0 : l < 1 ? (l ? s / l : 0) : s / (2 - l); - - return { - h: hsv.h, - s: !hsv.v && !s ? ((_colors && _colors.hsl && _colors.hsl.s) || 0) : s, // ??? - l: l / 2 - }; - }, - - rgb2hsl: function(rgb, dependent) { // not used in Color - var hsv = ColorConverter.rgb2hsv(rgb); - - return ColorConverter.hsv2hsl(dependent ? hsv : (_colors.hsv = hsv)); - }, - - hsl2rgb: function(hsl) { - var h = hsl.h * 6, - s = hsl.s, - l = hsl.l, - v = l < 0.5 ? l * (1 + s) : (l + s) - (s * l), - m = l + l - v, - sv = v ? ((v - m) / v) : 0, - sextant = ~~h, // Math.floor(h) -> faster in most browsers - fract = h - sextant, - vsf = v * sv * fract, - t = m + vsf, - q = v - vsf, - mod = sextant % 6; - - return { - r: [v, q, m, m, t, v][mod], - g: [t, v, v, q, m, m][mod], - b: [m, m, t, v, v, q][mod] - }; - }, - - // ------------------------ CMYK ------------------------ // - // Quote from Wikipedia: - // "Since RGB and CMYK spaces are both device-dependent spaces, there is no - // simple or general conversion formula that converts between them. - // Conversions are generally done through color management systems, using - // color profiles that describe the spaces being converted. Nevertheless, the - // conversions cannot be exact, since these spaces have very different gamuts." - // Translation: the following are just simple RGB to CMY(K) and visa versa conversion functions. - - rgb2cmy: function(rgb) { - return { - c: 1 - rgb.r, - m: 1 - rgb.g, - y: 1 - rgb.b - }; - }, - - cmy2cmyk: function(cmy) { - var _Math = _math, - k = _Math.min(_Math.min(cmy.c, cmy.m), cmy.y), - t = 1 - k || 1e-20; - - return { // regular - c: (cmy.c - k) / t, - m: (cmy.m - k) / t, - y: (cmy.y - k) / t, - k: k - }; - }, - - cmyk2cmy: function(cmyk) { - var k = cmyk.k; - - return { // regular - c: cmyk.c * (1 - k) + k, - m: cmyk.m * (1 - k) + k, - y: cmyk.y * (1 - k) + k - }; - }, - - cmy2rgb: function(cmy) { - return { - r: 1 - cmy.c, - g: 1 - cmy.m, - b: 1 - cmy.y - }; - }, - - rgb2cmyk: function(rgb, dependent) { - var cmy = ColorConverter.rgb2cmy(rgb); // doppelt?? - - return ColorConverter.cmy2cmyk(dependent ? cmy : (_colors.cmy = cmy)); - }, - - cmyk2rgb: function(cmyk, dependent) { - var cmy = ColorConverter.cmyk2cmy(cmyk); // doppelt?? - - return ColorConverter.cmy2rgb(dependent ? cmy : (_colors.cmy = cmy)); - }, - - // ------------------------ LAB ------------------------ // - - XYZ2rgb: function(XYZ, skip) { - var _Math = _math, - M = _instance.options.XYZMatrix, - X = XYZ.X, - Y = XYZ.Y, - Z = XYZ.Z, - r = X * M.R[0] + Y * M.R[1] + Z * M.R[2], - g = X * M.G[0] + Y * M.G[1] + Z * M.G[2], - b = X * M.B[0] + Y * M.B[1] + Z * M.B[2], - N = 1 / 2.4; - - M = 0.0031308; - - r = (r > M ? 1.055 * _Math.pow(r, N) - 0.055 : 12.92 * r); - g = (g > M ? 1.055 * _Math.pow(g, N) - 0.055 : 12.92 * g); - b = (b > M ? 1.055 * _Math.pow(b, N) - 0.055 : 12.92 * b); - - if (!skip) { // out of gammut - _colors._rgb = {r: r, g: g, b: b}; - } - - return { - r: limitValue(r, 0, 1), - g: limitValue(g, 0, 1), - b: limitValue(b, 0, 1) - }; - }, - - rgb2XYZ: function(rgb) { - var _Math = _math, - M = _instance.options.XYZMatrix, - r = rgb.r, - g = rgb.g, - b = rgb.b, - N = 0.04045; - - r = (r > N ? _Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92); - g = (g > N ? _Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92); - b = (b > N ? _Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92); - - return { - X: r * M.X[0] + g * M.X[1] + b * M.X[2], - Y: r * M.Y[0] + g * M.Y[1] + b * M.Y[2], - Z: r * M.Z[0] + g * M.Z[1] + b * M.Z[2] - }; - }, - - XYZ2Lab: function(XYZ) { - var _Math = _math, - R = _instance.options.XYZReference, - X = XYZ.X / R.X, - Y = XYZ.Y / R.Y, - Z = XYZ.Z / R.Z, - N = 16 / 116, M = 1 / 3, K = 0.008856, L = 7.787037; - - X = X > K ? _Math.pow(X, M) : (L * X) + N; - Y = Y > K ? _Math.pow(Y, M) : (L * Y) + N; - Z = Z > K ? _Math.pow(Z, M) : (L * Z) + N; - - return { - L: (116 * Y) - 16, - a: 500 * (X - Y), - b: 200 * (Y - Z) - }; - }, - - Lab2XYZ: function(Lab) { - var _Math = _math, - R = _instance.options.XYZReference, - Y = (Lab.L + 16) / 116, - X = Lab.a / 500 + Y, - Z = Y - Lab.b / 200, - X3 = _Math.pow(X, 3), - Y3 = _Math.pow(Y, 3), - Z3 = _Math.pow(Z, 3), - N = 16 / 116, K = 0.008856, L = 7.787037; - - return { - X: (X3 > K ? X3 : (X - N) / L) * R.X, - Y: (Y3 > K ? Y3 : (Y - N) / L) * R.Y, - Z: (Z3 > K ? Z3 : (Z - N) / L) * R.Z - }; - }, - - rgb2Lab: function(rgb, dependent) { - var XYZ = ColorConverter.rgb2XYZ(rgb); - - return ColorConverter.XYZ2Lab(dependent ? XYZ : (_colors.XYZ = XYZ)); - }, - - Lab2rgb: function(Lab, dependent) { - var XYZ = ColorConverter.Lab2XYZ(Lab); - - return ColorConverter.XYZ2rgb(dependent ? XYZ : (_colors.XYZ = XYZ), dependent); - } - }; - - // ------------------------------------------------------ // - // ------------------ helper functions ------------------ // - // -------------------------------------------------------// - - function getClosestWebColor(RGB, val) { - var out = {}, - tmp = 0, - half = val / 2; - - for (var n in RGB) { - tmp = RGB[n] % val; // 51 = 'web save', 17 = 'web smart' - out[n] = RGB[n] + (tmp > half ? val - tmp : -tmp); - } - return out; - } - - function getHueDelta(rgb1, rgb2, nominal) { - var _Math = _math; - - return (_Math.max(rgb1.r - rgb2.r, rgb2.r - rgb1.r) + - _Math.max(rgb1.g - rgb2.g, rgb2.g - rgb1.g) + - _Math.max(rgb1.b - rgb2.b, rgb2.b - rgb1.b)) * (nominal ? 255 : 1) / 765; - } - - function getLuminance(rgb, normalized) { - var div = normalized ? 1 : 255, - RGB = [rgb.r / div, rgb.g / div, rgb.b / div], - luminance = _instance.options.luminance; - - for (var i = RGB.length; i--; ) { - RGB[i] = RGB[i] <= 0.03928 ? RGB[i] / 12.92 : _math.pow(((RGB[i] + 0.055) / 1.055), 2.4); - } - return ((luminance.r * RGB[0]) + (luminance.g * RGB[1]) + (luminance.b * RGB[2])); - } - - function mixColors(topColor, bottomColor, topAlpha, bottomAlpha) { - var newColor = {}, - alphaTop = (topAlpha !== undefined ? topAlpha : 1), - alphaBottom = (bottomAlpha !== undefined ? bottomAlpha : 1), - alpha = alphaTop + alphaBottom * (1 - alphaTop); // 1 - (1 - alphaTop) * (1 - alphaBottom); - - for(var n in topColor) { - newColor[n] = (topColor[n] * alphaTop + bottomColor[n] * alphaBottom * (1 - alphaTop)) / alpha; - } - newColor.a = alpha; - return newColor; - } - - function getWCAG2Ratio(lum1, lum2) { - var ratio = 1; - - if (lum1 >= lum2) { - ratio = (lum1 + 0.05) / (lum2 + 0.05); - } else { - ratio = (lum2 + 0.05) / (lum1 + 0.05); - } - return _math.round(ratio * 100) / 100; - } - - function limitValue(value, min, max) { - // return Math.max(min, Math.min(max, value)); // faster?? - return (value > max ? max : value < min ? min : value); - } -})(window); diff --git a/_server/colorPicker/jsColor.js b/_server/colorPicker/jsColor.js index a5eaa50b..a69d9522 100644 --- a/_server/colorPicker/jsColor.js +++ b/_server/colorPicker/jsColor.js @@ -8,8 +8,8 @@ HSL = colors.RND.hsl, AHEX = options.isIE8 ? (colors.alpha < 0.16 ? '0' : '') + (Math.round(colors.alpha * 100)).toString(16).toUpperCase() + colors.HEX : '', - RGBInnerText = RGB.r + ', ' + RGB.g + ', ' + RGB.b, - RGBAText = RGBInnerText + ', ' + colors.alpha, + RGBInnerText = RGB.r + ',' + RGB.g + ',' + RGB.b, + RGBAText = RGBInnerText + ',' + colors.alpha, isAlpha = colors.alpha !== 1 && !options.isIE8, colorMode = input.getAttribute('data-colorMode'); @@ -26,7 +26,10 @@ } }, extractValue = function(elm) { - return "rgba("+elm.value+")" || "rgba("+elm.getAttribute('value')+")" || elm.style.backgroundColor || 'rgba(0, 0, 0, 1)'; + var val = elm.value || elm.getAttribute('value') || elm.style.backgroundColor || "0,0,0,1"; + if (/^[0-9 ]+,[0-9 ]+,[0-9 ]+,[0-9. ]+$/.test(val)) return "rgba("+val+")"; + if (/^[0-9 ]+,[0-9 ]+,[0-9 ]+$/.test(val)) return "rgba("+val+",1)"; + return null; }, actionCallback = function(event, action) { var options = this, @@ -99,7 +102,7 @@ options.color = extractValue(elm); // brings color to default on reset //检查颜色合法性 - if (options.color == options.color.match(/rgba\([0-9 ]+,[0-9 ]+,[0-9 ]+,[0-9. ]+\)/)[0]) { + if (options.color != null && options.color == options.color.match(/rgba\([0-9 ]+,[0-9 ]+,[0-9 ]+,[0-9. ]+\)/)[0]) { var chec = options.color.match(/[0-9.]+/g); if (chec.length != 4) return; @@ -255,4 +258,31 @@ (options.secure ? '; secure' : ''); } }; -})(this); \ No newline at end of file +})(this); + +// Added +var colors = jsColorPicker('input.color', { + customBG: '#222', + readOnly: false, + // patch: false, + init: function(elm, colors) { // colors is a different instance (not connected to colorPicker) + elm.style.backgroundColor = elm.value; + elm.style.color = colors.rgbaMixCustom.luminance > 0.22 ? '#222' : '#ddd'; + }, + appendTo: document.getElementById("colorPanel"), + size: 1, +}); +function doHide() { + var oDiv = document.getElementById("colorPanel"); + if (oDiv.style.display == "none"){ + oDiv.style.display = "inline-block"; + } else { + oDiv.style.display = "none"; + } +} +function copyColor() { + var colorPicker = document.getElementById("colorPicker"); + colorPicker.select(); + document.execCommand("Copy"); + doHide(); +} \ No newline at end of file diff --git a/_server/css/editor.css b/_server/css/editor.css index 17649905..f64b6b69 100644 --- a/_server/css/editor.css +++ b/_server/css/editor.css @@ -24,8 +24,8 @@ body { #colorPanel { position: absolute; - left: 110px; - top: 36px; + left: 130px; + top: 30px; width: 168px; height: 205px; z-index: 240; diff --git a/editor.html b/editor.html index b82418e1..0393e226 100644 --- a/editor.html +++ b/editor.html @@ -181,9 +181,9 @@
- +
@@ -500,37 +500,8 @@ if (location.protocol.indexOf("http")!=0) { - - - + -