(
function
(factory){
if
(typeof define===
"function"
&&define.amd){
define([
"jquery"
],factory)}
else
{
if
(typeof exports==
"object"
&&typeof module==
"object"
)
{module.exports=factory}
else
{factory(jQuery)
}
}
}
)(
function
($,undefined){
var
defaultOpts={
beforeShow:noop,
move:noop,
change:noop,
show:noop,
hide:noop,
color:false,
flat:false,
showInput:false,
allowEmpty:false,
showButtons:true,
clickoutFiresChange:false,
showInitial:false,
showPalette:false,
showPaletteOnly:false,
hideAfterPaletteSelect:false,
togglePaletteOnly:false,
showSelectionPalette:true,
localStorageKey:false,
appendTo:
"body"
,
maxSelectionSize:7,
cancelText:
"cancel"
,
chooseText:
"choose"
,
togglePaletteMoreText:
"more"
,
togglePaletteLessText:
"less"
,
clearText:
"Clear Color Selection"
,noColorSelectedText:
"No Color Selected"
,
preferredFormat:false,className:
""
,
containerClassName:
""
,
replacerClassName:
""
,
showAlpha:false,theme:
"sp-light"
,palette:[[
"#ffffff"
,
"#000000"
,
"#ff0000"
,
"#ff8000"
,
"#ffff00"
,
"#008000"
,
"#0000ff"
,
"#4b0082"
,
"#9400d3"
]],selectionPalette:[],disabled:false,
offset:null},spectrums=[],IE=!!/msie/i.
exec
(window.navigator.userAgent),rgbaSupport=(
function
(){
function
contains(str,
substr
){
return
!!~(
""
+str).indexOf(
substr
)}
var
elem=document.createElement(
"div"
);
var
style=elem.style;style.cssText=
"background-color:rgba(0,0,0,.5)"
;
return
contains(style.backgroundColor,
"rgba"
)||contains(style.backgroundColor,
"hsla"
)})(),
inputTypeColorSupport=(
function
(){
var
colorInput=$(
"<input type='color' value='!' />"
)[0];
return
colorInput.type===
"color"
&&colorInput.value!==
"!"
})(),replaceInput=[
"<div class='sp-replacer'>"
,
"<div class='sp-preview'><div class='sp-preview-inner'></div></div>"
,
"<div class='sp-dd'>▼</div>"
,
"</div>"
].join(
""
),markup=(
function
(){
var
gradientFix=
""
;
if
(IE){
for
(
var
i=1;i<=6;i++){
gradientFix+=
"<div class='sp-"
+i+
"'></div>"
}}
return
[
"<div class='sp-container sp-hidden'>"
,
"<div class='sp-palette-container'>"
,
"<div class='sp-palette sp-thumb sp-cf'></div>"
,
"<div class='sp-palette-button-container sp-cf'>"
,"<button type='button'
class
='sp-palette-toggle'>
</button>
","
</div>
","
</div>
","
<div
class
='sp-picker-container'>
","
<div
class
='sp-top sp-cf'>",
"<div class='sp-fill'></div>"
,
"<div class='sp-top-inner'>"
,
"<div class='sp-color'>"
,
"<div class='sp-sat'>"
,
"<div class='sp-val'>"
,
"<div class='sp-dragger'></div>"
,
"</div>"
,
"</div>"
,
"</div>"
,
"<div class='sp-clear sp-clear-display'>"
,
"</div>"
,
"<div class='sp-hue'>"
,"<div
class
='sp-slider'>
</div>
",gradientFix,"
</div>
","
</div>
","
<div
class
='sp-alpha'><div
class
='sp-alpha-inner'>
<div
class
='sp-alpha-handle'></div></div></div>
","
</div>
","
<div
class
='sp-input-container sp-cf'>",
"<input class='sp-input' type='text' spellcheck='false' />"
,
"</div>"
,
"<div class='sp-initial sp-thumb sp-cf'></div>"
,
"<div class='sp-button-container sp-cf'>"
,
"<a class='sp-cancel' href='#'></a>"
,
"<button type='button' class='sp-choose'></button>"
,
"</div>"
,
"</div>"
,
"</div>"
].join(
""
)})();
function
paletteTemplate(p,color,className,opts){
var
html=[];
for
(
var
i=0;i<p.length;i++){
var
current=p[i];
if
(current){
var
tiny=tinycolor(current);
var
c=tiny.toHsl().l<0.5?
"sp-thumb-el sp-thumb-dark"
:
"sp-thumb-el sp-thumb-light"
;
c+=(tinycolor.equals(color,current))?
" sp-thumb-active"
:
""
;
var
formattedString=tiny.toString(opts.preferredFormat||
"rgb"
);
var
swatchStyle=rgbaSupport?(
"background-color:"
+tiny.toRgbString()):
"filter:"
+tiny.toFilter();
html.push('<span title=
"'+formattedString+'"
data-color=
"'+tiny.toRgbString()+'"
class
=
"'+c+'"
>
<span
class
=
"sp-thumb-inner"
style=
"'+swatchStyle+';"
/></span>')}
else
{
var
cls=
"sp-clear-display"
;html.push($(
"<div />"
).append($('<span data-color=
""
style=
"background-color:transparent;"
class
=
"'+cls+'"
></span>')
.attr(
"title"
,opts.noColorSelectedText)).html())}}
return
"<div class='sp-cf "
+className+
"'>"
+html.join(
""
)+
"</div>"
}
function
hideAll(){
for
(
var
i=0;i<spectrums.length;i++){
if
(spectrums[i]){spectrums[i].hide()}}}
function
instanceOptions(o,callbackContext){
var
opts=$.extend({},defaultOpts,o);
opts.callbacks={
"move"
:bind(opts.move,callbackContext),
"change"
:bind(opts.change,callbackContext),
"show"
:bind(opts.show,callbackContext),
"hide"
:bind(opts.hide,callbackContext),
"beforeShow"
:bind(opts.beforeShow,callbackContext)};
return
opts}
function
spectrum(element,o){
var
opts=instanceOptions(o,element),
flat=opts.flat,
showSelectionPalette=opts.showSelectionPalette,
localStorageKey=opts.localStorageKey,theme=opts.theme,
callbacks=opts.callbacks,resize=throttle(reflow,10),
visible=false,dragWidth=0,dragHeight=0,dragHelperHeight=0,
slideHeight=0,slideWidth=0,alphaWidth=0,alphaSlideHelperWidth=0,
slideHelperHeight=0,currentHue=0,currentSaturation=0,currentValue=0,
currentAlpha=1,palette=[],paletteArray=[],paletteLookup={},
selectionPalette=opts.selectionPalette.slice(0),
maxSelectionSize=opts.maxSelectionSize,draggingClass=
"sp-dragging"
,shiftMovementDirection=null;
var
doc=element.ownerDocument,body=doc.body,
boundElement=$(element),disabled=false,
container=$(markup,doc).addClass(theme),pickerContainer=container.find(
".sp-picker-container"
),
dragger=container.find(
".sp-color"
),dragHelper=container.find(
".sp-dragger"
),
slider=container.find(
".sp-hue"
),slideHelper=container.find(
".sp-slider"
),
alphaSliderInner=container.find(
".sp-alpha-inner"
),alphaSlider=container.find(
".sp-alpha"
),
alphaSlideHelper=container.find(
".sp-alpha-handle"
),textInput=container.find(
".sp-input"
),
paletteContainer=container.find(
".sp-palette"
),initialColorContainer=container.find(
".sp-initial"
),
cancelButton=container.find(
".sp-cancel"
),clearButton=container.find(
".sp-clear"
),
chooseButton=container.find(
".sp-choose"
),toggleButton=container.find(
".sp-palette-toggle"
),
isInput=boundElement.is(
"input"
),isInputTypeColor=isInput&&inputTypeColorSupport&&boundElement.
attr(
"type"
)===
"color"
,shouldReplace=isInput&&!flat,replacer=(shouldReplace)?$(replaceInput)
.addClass(theme).addClass(opts.className).addClass(opts.replacerClassName):$([]),
offsetElement=(shouldReplace)?replacer:boundElement,previewElement=replacer.find(
".sp-preview-inner"
),
initialColor=opts.color||(isInput&&boundElement.val()),colorOnShow=false,preferredFormat=opts.preferredFormat,
currentPreferredFormat=preferredFormat,clickoutFiresChange=!opts.showButtons||opts.clickoutFiresChange,
isEmpty=!initialColor,allowEmpty=opts.allowEmpty&&!isInputTypeColor;
function
applyOptions(){
if
(opts.showPaletteOnly){opts.showPalette=true}toggleButton.text(opts.showPaletteOnly?opts.
togglePaletteMoreText:opts.togglePaletteLessText);
if
(opts.palette){palette=opts.palette.slice(0);
paletteArray=$.isArray(palette[0])?palette:[palette];
paletteLookup={};
for
(
var
i=0;i<paletteArray.length;i++){
for
(
var
j=0;j<paletteArray[i].length;j++){
var
rgb=tinycolor(paletteArray[i][j]).toRgbString();paletteLookup[rgb]=true}}}
container.toggleClass(
"sp-flat"
,flat);
container.toggleClass(
"sp-input-disabled"
,!opts.showInput);
container.toggleClass(
"sp-alpha-enabled"
,opts.showAlpha);
container.toggleClass(
"sp-clear-enabled"
,allowEmpty);
container.toggleClass(
"sp-buttons-disabled"
,!opts.showButtons);
container.toggleClass(
"sp-palette-buttons-disabled"
,!opts.togglePaletteOnly);
container.toggleClass(
"sp-palette-disabled"
,!opts.showPalette);
container.toggleClass(
"sp-palette-only"
,opts.showPaletteOnly);
container.toggleClass(
"sp-initial-disabled"
,!opts.showInitial);
container.addClass(opts.className).addClass(opts.containerClassName);
reflow()}
function
initialize(){
if
(IE){container.find(
"*:not(input)"
).attr(
"unselectable"
,
"on"
)}applyOptions();
if
(shouldReplace){boundElement.after(replacer).hide()}
if
(!allowEmpty){clearButton.hide()}
if
(flat){
boundElement.after(container).hide()}
else
{
var
appendTo=opts.appendTo===
"parent"
?boundElement.parent():
$(opts.appendTo);
if
(appendTo.length!==1){appendTo=$(
"body"
)}appendTo.append(container)}
updateSelectionPaletteFromStorage();offsetElement.bind(
"click.spectrum touchstart.spectrum"
,
function
(e){
if
(!disabled){toggle()}e.stopPropagation();
if
(!$(e.target).is(
"input"
)){e.preventDefault()}});
if
(boundElement.is(
":disabled"
)||(opts.disabled===true)){disable()}container.click(stopPropagation);
textInput.change(setFromTextInput);textInput.bind(
"paste"
,
function
(){setTimeout(setFromTextInput,1)});
textInput.keydown(
function
(e){
if
(e.keyCode==13){setFromTextInput()}});cancelButton.text(opts.cancelText);
cancelButton.bind(
"click.spectrum"
,
function
(e){e.stopPropagation();e.preventDefault();revert();hide()});
clearButton.attr(
"title"
,opts.clearText);clearButton.bind(
"click.spectrum"
,
function
(e){e.stopPropagation();
e.preventDefault();isEmpty=true;move();
if
(flat){updateOriginalInput(true)}});chooseButton.text(opts.chooseText);
chooseButton.bind(
"click.spectrum"
,
function
(e){e.stopPropagation();e.preventDefault();
if
(isValid()){updateOriginalInput(true);hide()}});toggleButton.text(opts.showPaletteOnly?opts.
togglePaletteMoreText:opts.togglePaletteLessText);toggleButton.bind(
"click.spectrum"
,
function
(e){e.
stopPropagation();e.preventDefault();opts.showPaletteOnly=!opts.showPaletteOnly;
if
(!opts.showPaletteOnly&&!flat){container.css(
"left"
,
"-="
+(pickerContainer.outerWidth(true)+5))}
applyOptions()});draggable(alphaSlider,
function
(dragX,dragY,e){currentAlpha=(dragX/alphaWidth);
isEmpty=false;
if
(e.shiftKey){currentAlpha=Math.
round
(currentAlpha*10)/10}move()},dragStart,dragStop);
draggable(slider,
function
(dragX,dragY){currentHue=parseFloat(dragY/slideHeight);
isEmpty=false;
if
(!opts.showAlpha){currentAlpha=1}move()},dragStart,dragStop);
draggable(dragger,
function
(dragX,dragY,e){
if
(!e.shiftKey){shiftMovementDirection=null}
else
{
if
(!shiftMovementDirection){
var
oldDragX=currentSaturation*dragWidth;
var
oldDragY=dragHeight-(currentValue*dragHeight);
var
furtherFromX=Math.
abs
(dragX-oldDragX)>Math.
abs
(dragY-oldDragY);
shiftMovementDirection=furtherFromX?
"x"
:
"y"
}}
var
setSaturation=!shiftMovementDirection||shiftMovementDirection===
"x"
;
var
setValue=!shiftMovementDirection||shiftMovementDirection===
"y"
;
if
(setSaturation){currentSaturation=parseFloat(dragX/dragWidth)}
if
(setValue){currentValue=parseFloat((dragHeight-dragY)/dragHeight)}isEmpty=false;
if
(!opts.showAlpha){currentAlpha=1}move()},dragStart,dragStop);
if
(!!initialColor){set(initialColor);updateUI();
currentPreferredFormat=preferredFormat||tinycolor(initialColor).format;
addColorToSelectionPalette(initialColor)}
else
{updateUI()}
if
(flat){show()}
function
paletteElementClick(e){
if
(e.data&&e.data.ignore){set($(e.target).closest(
".sp-thumb-el"
).data(
"color"
));move()}
else
{set($(e.target).
closest(
".sp-thumb-el"
).data(
"color"
));move();updateOriginalInput(true);
if
(opts.hideAfterPaletteSelect){
hide()}}
return
false}
var
paletteEvent=IE?
"mousedown.spectrum"
:
"click.spectrum touchstart.spectrum"
;
paletteContainer.delegate(
".sp-thumb-el"
,paletteEvent,paletteElementClick);initialColorContainer.delegate(
".sp-thumb-el:nth-child(1)"
,paletteEvent,{ignore:true},paletteElementClick)}
function
updateSelectionPaletteFromStorage(){
if
(localStorageKey&&window.localStorage){
try
{
var
oldPalette=window.localStorage[localStorageKey].split(
",#"
);
if
(oldPalette.length>1){
delete
window.localStorage[localStorageKey];$.each(oldPalette,
function
(i,c){addColorToSelectionPalette(c)})}}
catch
(e){}
try
{selectionPalette=window.localStorage[localStorageKey].split(
";"
)}
catch
(e){}}}
function
addColorToSelectionPalette(color){
if
(showSelectionPalette){
var
rgb=tinycolor(color).toRgbString();
if
(!paletteLookup[rgb]&&$.inArray(rgb,selectionPalette)===-1){selectionPalette.push(rgb);
while
(selectionPalette.length>maxSelectionSize){selectionPalette.shift()}}
if
(localStorageKey&&window.localStorage){
try
{window.localStorage[localStorageKey]=selectionPalette.join(
";"
)}
catch
(e){}}}}
function
getUniqueSelectionPalette(){
var
unique=[];
if
(opts.showPalette){
for
(
var
i=0;i<selectionPalette.length;i++){
var
rgb=tinycolor(selectionPalette[i]).toRgbString();
if
(!paletteLookup[rgb]){unique.push(selectionPalette[i])}}}
return
unique.reverse().slice(0,opts.maxSelectionSize)}
function
drawPalette(){
var
currentColor=get();
var
html=$.map(paletteArray,
function
(palette,i){
return
paletteTemplate(palette,currentColor,
"sp-palette-row sp-palette-row-"
+i,opts)});updateSelectionPaletteFromStorage();
if
(selectionPalette){html.push(paletteTemplate(getUniqueSelectionPalette(),currentColor,
"sp-palette-row sp-palette-row-selection"
,opts))}paletteContainer.html(html.join(
""
))}
function
drawInitial(){
if
(opts.showInitial){
var
initial=colorOnShow;
var
current=get();initialColorContainer.html(paletteTemplate([initial,current],current,
"sp-palette-row-initial"
,opts))}}
function
dragStart(){
if
(dragHeight<=0||dragWidth<=0||slideHeight<=0){reflow()}container.addClass(draggingClass);shiftMovementDirection=null;boundElement.trigger(
"dragstart.spectrum"
,[get()])}
function
dragStop(){container.removeClass(draggingClass);boundElement.trigger(
"dragstop.spectrum"
,[get()])}
function
setFromTextInput(){
var
value=textInput.val();
if
((value===null||value===
""
)&&allowEmpty){set(null);updateOriginalInput(true)}
else
{
var
tiny=tinycolor(value);
if
(tiny.isValid()){set(tiny);updateOriginalInput(true)}
else
{textInput.addClass(
"sp-validation-error"
)}}}
function
toggle(){
if
(visible){hide()}
else
{show()}}
function
show(){
var
event=$.Event(
"beforeShow.spectrum"
);
if
(visible){reflow();
return
}boundElement.trigger(event,[get()]);
if
(callbacks.beforeShow(get())===false||event.isDefaultPrevented()){
return
}hideAll();visible=true;$(doc).bind(
"click.spectrum"
,clickout);$(window).bind(
"resize.spectrum"
,resize);replacer.addClass(
"sp-active"
);container.removeClass(
"sp-hidden"
);reflow();updateUI();colorOnShow=get();drawInitial();callbacks.show(colorOnShow);boundElement.trigger(
"show.spectrum"
,[colorOnShow])}
function
clickout(e){
if
(e.button==2){
return
}
if
(clickoutFiresChange){updateOriginalInput(true)}
else
{revert()}hide()}
function
hide(){
if
(!visible||flat){
return
}visible=false;$(doc).unbind(
"click.spectrum"
,clickout);$(window).unbind(
"resize.spectrum"
,resize);replacer.removeClass(
"sp-active"
);container.addClass(
"sp-hidden"
);callbacks.hide(get());boundElement.trigger(
"hide.spectrum"
,[get()])}
function
revert(){set(colorOnShow,true)}
function
set(color,ignoreFormatChange){
if
(tinycolor.equals(color,get())){updateUI();
return
}
var
newColor,newHsv;
if
(!color&&allowEmpty){isEmpty=true}
else
{isEmpty=false;newColor=tinycolor(color);newHsv=newColor.toHsv();currentHue=(newHsv.h%360)/360;currentSaturation=newHsv.s;currentValue=newHsv.v;currentAlpha=newHsv.a}updateUI();
if
(newColor&&newColor.isValid()&&!ignoreFormatChange){currentPreferredFormat=preferredFormat||newColor.getFormat()}}
function
get(opts){opts=opts||{};
if
(allowEmpty&&isEmpty){
return
null}
return
tinycolor.fromRatio({h:currentHue,s:currentSaturation,v:currentValue,a:Math.
round
(currentAlpha*100)/100},{format:opts.format||currentPreferredFormat})}
function
isValid(){
return
!textInput.hasClass(
"sp-validation-error"
)}
function
move(){updateUI();callbacks.move(get());boundElement.trigger(
"move.spectrum"
,[get()])}
function
updateUI(){textInput.removeClass(
"sp-validation-error"
);updateHelperLocations();
var
flatColor=tinycolor.fromRatio({h:currentHue,s:1,v:1});dragger.css(
"background-color"
,flatColor.toHexString());
var
format=currentPreferredFormat;
if
(currentAlpha<1&&!(currentAlpha===0&&format===
"name"
)){
if
(format===
"hex"
||format===
"hex3"
||format===
"hex6"
||format===
"name"
){format=
"rgb"
}}
var
realColor=get({format:format}),displayColor=
""
;previewElement.removeClass(
"sp-clear-display"
);previewElement.css(
"background-color"
,
"transparent"
);
if
(!realColor&&allowEmpty){previewElement.addClass(
"sp-clear-display"
)}
else
{
var
realHex=realColor.toHexString(),realRgb=realColor.toRgbString();
if
(rgbaSupport||realColor.alpha===1){previewElement.css(
"background-color"
,realRgb)}
else
{previewElement.css(
"background-color"
,
"transparent"
);previewElement.css(
"filter"
,realColor.toFilter())}
if
(opts.showAlpha){
var
rgb=realColor.toRgb();rgb.a=0;
var
realAlpha=tinycolor(rgb).toRgbString();
var
gradient=
"linear-gradient(left, "
+realAlpha+
", "
+realHex+
")"
;
if
(IE){alphaSliderInner.css(
"filter"
,tinycolor(realAlpha).toFilter({gradientType:1},realHex))}
else
{alphaSliderInner.css(
"background"
,
"-webkit-"
+gradient);alphaSliderInner.css(
"background"
,
"-moz-"
+gradient);alphaSliderInner.css(
"background"
,
"-ms-"
+gradient);alphaSliderInner.css(
"background"
,
"linear-gradient(to right, "
+realAlpha+
", "
+realHex+
")"
)}}displayColor=realColor.toString(format)}
if
(opts.showInput){textInput.val(displayColor)}
if
(opts.showPalette){drawPalette()}drawInitial()}
function
updateHelperLocations(){
var
s=currentSaturation;
var
v=currentValue;
if
(allowEmpty&&isEmpty){alphaSlideHelper.hide();slideHelper.hide();dragHelper.hide()}
else
{alphaSlideHelper.show();slideHelper.show();dragHelper.show();
var
dragX=s*dragWidth;
var
dragY=dragHeight-(v*dragHeight);dragX=Math.max(-dragHelperHeight,Math.min(dragWidth-dragHelperHeight,dragX-dragHelperHeight));dragY=Math.max(-dragHelperHeight,Math.min(dragHeight-dragHelperHeight,dragY-dragHelperHeight));dragHelper.css({
"top"
:dragY+
"px"
,
"left"
:dragX+
"px"
});
var
alphaX=currentAlpha*alphaWidth;alphaSlideHelper.css({
"left"
:(alphaX-(alphaSlideHelperWidth/2))+
"px"
});
var
slideY=(currentHue)*slideHeight;slideHelper.css({
"top"
:(slideY-slideHelperHeight)+
"px"
})}}
function
updateOriginalInput(fireCallback){
var
color=get(),displayColor=
""
,hasChanged=!tinycolor.equals(color,colorOnShow);
if
(color){displayColor=color.toString(currentPreferredFormat);addColorToSelectionPalette(color)}
if
(isInput){boundElement.val(displayColor)}
if
(fireCallback&&hasChanged){callbacks.change(color);boundElement.trigger(
"change"
,[color])}}
function
reflow(){dragWidth=dragger.width();dragHeight=dragger.height();dragHelperHeight=dragHelper.height();slideWidth=slider.width();slideHeight=slider.height();slideHelperHeight=slideHelper.height();alphaWidth=alphaSlider.width();alphaSlideHelperWidth=alphaSlideHelper.width();
if
(!flat){container.css(
"position"
,
"absolute"
);
if
(opts.offset){container.offset(opts.offset)}
else
{container.offset(getOffset(container,offsetElement))}}updateHelperLocations();
if
(opts.showPalette){drawPalette()}boundElement.trigger(
"reflow.spectrum"
)}
function
destroy(){boundElement.show();offsetElement.unbind(
"click.spectrum touchstart.spectrum"
);container.remove();replacer.remove();spectrums[spect.id]=null}
function
option(optionName,optionValue){
if
(optionName===undefined){
return
$.extend({},opts)}
if
(optionValue===undefined){
return
opts[optionName]}opts[optionName]=optionValue;applyOptions()}
function
enable(){disabled=false;boundElement.attr(
"disabled"
,false);offsetElement.removeClass(
"sp-disabled"
)}
function
disable(){hide();disabled=true;boundElement.attr(
"disabled"
,true);offsetElement.addClass(
"sp-disabled"
)}
function
setOffset(coord){opts.offset=coord;reflow()}initialize();
var
spect={show:show,hide:hide,toggle:toggle,reflow:reflow,option:option,enable:enable,disable:disable,offset:setOffset,set:
function
(c){set(c);updateOriginalInput()},get:get,destroy:destroy,container:container};spect.id=spectrums.push(spect)-1;
return
spect}
function
getOffset(picker,input){
var
extraY=0;
var
dpWidth=picker.outerWidth();
var
dpHeight=picker.outerHeight();
var
inputHeight=input.outerHeight();
var
doc=picker[0].ownerDocument;
var
docElem=doc.documentElement;
var
viewWidth=docElem.clientWidth+$(doc).scrollLeft();
var
viewHeight=docElem.clientHeight+$(doc).scrollTop();
var
offset=input.offset();offset.top+=inputHeight;offset.left-=Math.min(offset.left,(offset.left+dpWidth>viewWidth&&viewWidth>dpWidth)?Math.
abs
(offset.left+dpWidth-viewWidth):0);offset.top-=Math.min(offset.top,((offset.top+dpHeight>viewHeight&&viewHeight>dpHeight)?Math.
abs
(dpHeight+inputHeight-extraY):extraY));
return
offset}
function
noop(){}
function
stopPropagation(e){e.stopPropagation()}
function
bind(func,obj){
var
slice=Array.prototype.slice;
var
args=slice.call(arguments,2);
return
function
(){
return
func.apply(obj,args.concat(slice.call(arguments)))}}
function
draggable(element,onmove,onstart,onstop){onmove=onmove||
function
(){};onstart=onstart||
function
(){};onstop=onstop||
function
(){};
var
doc=document;
var
dragging=false;
var
offset={};
var
maxHeight=0;
var
maxWidth=0;
var
hasTouch=(
"ontouchstart"
in window);
var
duringDragEvents={};duringDragEvents[
"selectstart"
]=prevent;duringDragEvents[
"dragstart"
]=prevent;duringDragEvents[
"touchmove mousemove"
]=move;duringDragEvents[
"touchend mouseup"
]=stop;
function
prevent(e){
if
(e.stopPropagation){e.stopPropagation()}
if
(e.preventDefault){e.preventDefault()}e.returnValue=false}
function
move(e){
if
(dragging){
if
(IE&&doc.documentMode<9&&!e.button){
return
stop()}
var
touches=e.originalEvent&&e.originalEvent.touches;
var
pageX=touches?touches[0].pageX:e.pageX;
var
pageY=touches?touches[0].pageY:e.pageY;
var
dragX=Math.max(0,Math.min(pageX-offset.left,maxWidth));
var
dragY=Math.max(0,Math.min(pageY-offset.top,maxHeight));
if
(hasTouch){prevent(e)}onmove.apply(element,[dragX,dragY,e])}}
function
start(e){
var
rightclick=(e.which)?(e.which==3):(e.button==2);
if
(!rightclick&&!dragging){
if
(onstart.apply(element,arguments)!==false){dragging=true;maxHeight=$(element).height();maxWidth=$(element).width();offset=$(element).offset();$(doc).bind(duringDragEvents);$(doc.body).addClass(
"sp-dragging"
);
if
(!hasTouch){move(e)}prevent(e)}}}
function
stop(){
if
(dragging){$(doc).unbind(duringDragEvents);$(doc.body).removeClass(
"sp-dragging"
);onstop.apply(element,arguments)}dragging=false}$(element).bind(
"touchstart mousedown"
,start)}
function
throttle(func,wait,debounce){
var
timeout;
return
function
(){
var
context=this,args=arguments;
var
throttler=
function
(){timeout=null;func.apply(context,args)};
if
(debounce){clearTimeout(timeout)}
if
(debounce||!timeout){timeout=setTimeout(throttler,wait)}}}
var
dataID=
"spectrum.id"
;$.fn.spectrum=
function
(opts,extra){
if
(typeof opts==
"string"
){
var
returnValue=this;
var
args=Array.prototype.slice.call(arguments,1);this.each(
function
(){
var
spect=spectrums[$(this).data(dataID)];
if
(spect){
var
method=spect[opts];
if
(!method){
throw
new
Error(
"Spectrum: no such method: '"
+opts+
"'"
)}
if
(opts==
"get"
){returnValue=spect.get()}
else
{
if
(opts==
"container"
){returnValue=spect.container}
else
{
if
(opts==
"option"
){returnValue=spect.option.apply(spect,args)}
else
{
if
(opts==
"destroy"
){spect.destroy();$(this).removeData(dataID)}
else
{method.apply(spect,args)}}}}}});
return
returnValue}
return
this.spectrum(
"destroy"
).each(
function
(){
var
options=$.extend({},opts,$(this).data());
var
spect=spectrum(this,options);$(this).data(dataID,spect.id)})};$.fn.spectrum.load=true;$.fn.spectrum.loadOpts={};$.fn.spectrum.draggable=draggable;$.fn.spectrum.defaults=defaultOpts;$.spectrum={};$.spectrum.localization={};$.spectrum.palettes={};$.fn.spectrum.processNativeColorInputs=
function
(){
if
(!inputTypeColorSupport){$(
"input[type=color]"
).spectrum({preferredFormat:
"hex6"
})}};(
function
(){
var
trimLeft=/^[\s,#]+/,trimRight=/\s+$/,tinyCounter=0,math=Math,mathRound=math.
round
,mathMin=math.min,mathMax=math.max,mathRandom=math.random;
var
tinycolor=
function
tinycolor(color,opts){color=(color)?color:
""
;opts=opts||{};
if
(color
instanceof
tinycolor){
return
color}
if
(!(this
instanceof
tinycolor)){
return
new
tinycolor(color,opts)}
var
rgb=inputToRGB(color);this._originalInput=color,this._r=rgb.r,this._g=rgb.g,this._b=rgb.b,this._a=rgb.a,this._roundA=mathRound(100*this._a)/100,this._format=opts.format||rgb.format;this._gradientType=opts.gradientType;
if
(this._r<1){this._r=mathRound(this._r)}
if
(this._g<1){this._g=mathRound(this._g)}
if
(this._b<1){this._b=mathRound(this._b)}this._ok=rgb.ok;this._tc_id=tinyCounter++};tinycolor.prototype={isDark:
function
(){
return
this.getBrightness()<128},isLight:
function
(){
return
!this.isDark()},isValid:
function
(){
return
this._ok},getOriginalInput:
function
(){
return
this._originalInput},getFormat:
function
(){
return
this._format},getAlpha:
function
(){
return
this._a},getBrightness:
function
(){
var
rgb=this.toRgb();
return
(rgb.r*299+rgb.g*587+rgb.b*114)/1000},setAlpha:
function
(value){this._a=boundAlpha(value);this._roundA=mathRound(100*this._a)/100;
return
this},toHsv:
function
(){
var
hsv=rgbToHsv(this._r,this._g,this._b);
return
{h:hsv.h*360,s:hsv.s,v:hsv.v,a:this._a}},toHsvString:
function
(){
var
hsv=rgbToHsv(this._r,this._g,this._b);
var
h=mathRound(hsv.h*360),s=mathRound(hsv.s*100),v=mathRound(hsv.v*100);
return
(this._a==1)?
"hsv("
+h+
", "
+s+
"%, "
+v+
"%)"
:
"hsva("
+h+
", "
+s+
"%, "
+v+
"%, "
+this._roundA+
")"
},toHsl:
function
(){
var
hsl=rgbToHsl(this._r,this._g,this._b);
return
{h:hsl.h*360,s:hsl.s,l:hsl.l,a:this._a}},toHslString:
function
(){
var
hsl=rgbToHsl(this._r,this._g,this._b);
var
h=mathRound(hsl.h*360),s=mathRound(hsl.s*100),l=mathRound(hsl.l*100);
return
(this._a==1)?
"hsl("
+h+
", "
+s+
"%, "
+l+
"%)"
:
"hsla("
+h+
", "
+s+
"%, "
+l+
"%, "
+this._roundA+
")"
},toHex:
function
(allow3Char){
return
rgbToHex(this._r,this._g,this._b,allow3Char)},toHexString:
function
(allow3Char){
return
"#"
+this.toHex(allow3Char)},toHex8:
function
(){
return
rgbaToHex(this._r,this._g,this._b,this._a)},toHex8String:
function
(){
return
"#"
+this.toHex8()},toRgb:
function
(){
return
{r:mathRound(this._r),g:mathRound(this._g),b:mathRound(this._b),a:this._a}},toRgbString:
function
(){
return
(this._a==1)?
"rgb("
+mathRound(this._r)+
", "
+mathRound(this._g)+
", "
+mathRound(this._b)+
")"
:
"rgba("
+mathRound(this._r)+
", "
+mathRound(this._g)+
", "
+mathRound(this._b)+
", "
+this._roundA+
")"
},toPercentageRgb:
function
(){
return
{r:mathRound(bound01(this._r,255)*100)+
"%"
,g:mathRound(bound01(this._g,255)*100)+
"%"
,b:mathRound(bound01(this._b,255)*100)+
"%"
,a:this._a}},toPercentageRgbString:
function
(){
return
(this._a==1)?
"rgb("
+mathRound(bound01(this._r,255)*100)+
"%, "
+mathRound(bound01(this._g,255)*100)+
"%, "
+mathRound(bound01(this._b,255)*100)+
"%)"
:
"rgba("
+mathRound(bound01(this._r,255)*100)+
"%, "
+mathRound(bound01(this._g,255)*100)+
"%, "
+mathRound(bound01(this._b,255)*100)+
"%, "
+this._roundA+
")"
},toName:
function
(){
if
(this._a===0){
return
"transparent"
}
if
(this._a<1){
return
false}
return
hexNames[rgbToHex(this._r,this._g,this._b,true)]||false},toFilter:
function
(secondColor){
var
hex8String=
"#"
+rgbaToHex(this._r,this._g,this._b,this._a);
var
secondHex8String=hex8String;
var
gradientType=this._gradientType?
"GradientType = 1, "
:
""
;
if
(secondColor){
var
s=tinycolor(secondColor);secondHex8String=s.toHex8String()}
return
"progid:DXImageTransform.Microsoft.gradient("
+gradientType+
"startColorstr="
+hex8String+
",endColorstr="
+secondHex8String+
")"
},toString:
function
(format){
var
formatSet=!!format;format=format||this._format;
var
formattedString=false;
var
hasAlpha=this._a<1&&this._a>=0;
var
needsAlphaFormat=!formatSet&&hasAlpha&&(format===
"hex"
||format===
"hex6"
||format===
"hex3"
||format===
"name"
);
if
(needsAlphaFormat){
if
(format===
"name"
&&this._a===0){
return
this.toName()}
return
this.toRgbString()}
if
(format===
"rgb"
){formattedString=this.toRgbString()}
if
(format===
"prgb"
){formattedString=this.toPercentageRgbString()}
if
(format===
"hex"
||format===
"hex6"
){formattedString=this.toHexString()}
if
(format===
"hex3"
){formattedString=this.toHexString(true)}
if
(format===
"hex8"
){formattedString=this.toHex8String()}
if
(format===
"name"
){formattedString=this.toName()}
if
(format===
"hsl"
){formattedString=this.toHslString()}
if
(format===
"hsv"
){formattedString=this.toHsvString()}
return
formattedString||this.toHexString()},_applyModification:
function
(fn,args){
var
color=fn.apply(null,[this].concat([].slice.call(args)));this._r=color._r;this._g=color._g;this._b=color._b;this.setAlpha(color._a);
return
this},lighten:
function
(){
return
this._applyModification(lighten,arguments)},brighten:
function
(){
return
this._applyModification(brighten,arguments)},darken:
function
(){
return
this._applyModification(darken,arguments)},desaturate:
function
(){
return
this._applyModification(desaturate,arguments)},saturate:
function
(){
return
this._applyModification(saturate,arguments)},greyscale:
function
(){
return
this._applyModification(greyscale,arguments)},spin:
function
(){
return
this._applyModification(spin,arguments)},_applyCombination:
function
(fn,args){
return
fn.apply(null,[this].concat([].slice.call(args)))},analogous:
function
(){
return
this._applyCombination(analogous,arguments)},complement:
function
(){
return
this._applyCombination(complement,arguments)},monochromatic:
function
(){
return
this._applyCombination(monochromatic,arguments)},splitcomplement:
function
(){
return
this._applyCombination(splitcomplement,arguments)},triad:
function
(){
return
this._applyCombination(triad,arguments)},tetrad:
function
(){
return
this._applyCombination(tetrad,arguments)}};tinycolor.fromRatio=
function
(color,opts){
if
(typeof color==
"object"
){
var
newColor={};
for
(
var
i in color){
if
(color.hasOwnProperty(i)){
if
(i===
"a"
){newColor[i]=color[i]}
else
{newColor[i]=convertToPercentage(color[i])}}}color=newColor}
return
tinycolor(color,opts)};
function
inputToRGB(color){
var
rgb={r:0,g:0,b:0};
var
a=1;
var
ok=false;
var
format=false;
if
(typeof color==
"string"
){color=stringInputToObject(color)}
if
(typeof color==
"object"
){
if
(color.hasOwnProperty(
"r"
)&&color.hasOwnProperty(
"g"
)&&color.hasOwnProperty(
"b"
)){rgb=rgbToRgb(color.r,color.g,color.b);ok=true;format=String(color.r).
substr
(-1)===
"%"
?
"prgb"
:
"rgb"
}
else
{
if
(color.hasOwnProperty(
"h"
)&&color.hasOwnProperty(
"s"
)&&color.hasOwnProperty(
"v"
)){color.s=convertToPercentage(color.s);color.v=convertToPercentage(color.v);rgb=hsvToRgb(color.h,color.s,color.v);ok=true;format=
"hsv"
}
else
{
if
(color.hasOwnProperty(
"h"
)&&color.hasOwnProperty(
"s"
)&&color.hasOwnProperty(
"l"
)){color.s=convertToPercentage(color.s);color.l=convertToPercentage(color.l);rgb=hslToRgb(color.h,color.s,color.l);ok=true;format=
"hsl"
}}}
if
(color.hasOwnProperty(
"a"
)){a=color.a}}a=boundAlpha(a);
return
{ok:ok,format:color.format||format,r:mathMin(255,mathMax(rgb.r,0)),g:mathMin(255,mathMax(rgb.g,0)),b:mathMin(255,mathMax(rgb.b,0)),a:a}}
function
rgbToRgb(r,g,b){
return
{r:bound01(r,255)*255,g:bound01(g,255)*255,b:bound01(b,255)*255}}
function
rgbToHsl(r,g,b){r=bound01(r,255);g=bound01(g,255);b=bound01(b,255);
var
max=mathMax(r,g,b),min=mathMin(r,g,b);
var
h,s,l=(max+min)/2;
if
(max==min){h=s=0}
else
{
var
d=max-min;s=l>0.5?d/(2-max-min):d/(max+min);
switch
(max){
case
r:h=(g-b)/d+(g<b?6:0);
break
;
case
g:h=(b-r)/d+2;
break
;
case
b:h=(r-g)/d+4;
break
}h/=6}
return
{h:h,s:s,l:l}}
function
hslToRgb(h,s,l){
var
r,g,b;h=bound01(h,360);s=bound01(s,100);l=bound01(l,100);
function
hue2rgb(p,q,t){
if
(t<0){t+=1}
if
(t>1){t-=1}
if
(t<1/6){
return
p+(q-p)*6*t}
if
(t<1/2){
return
q}
if
(t<2/3){
return
p+(q-p)*(2/3-t)*6}
return
p}
if
(s===0){r=g=b=l}
else
{
var
q=l<0.5?l*(1+s):l+s-l*s;
var
p=2*l-q;r=hue2rgb(p,q,h+1/3);g=hue2rgb(p,q,h);b=hue2rgb(p,q,h-1/3)}
return
{r:r*255,g:g*255,b:b*255}}
function
rgbToHsv(r,g,b){r=bound01(r,255);g=bound01(g,255);b=bound01(b,255);
var
max=mathMax(r,g,b),min=mathMin(r,g,b);
var
h,s,v=max;
var
d=max-min;s=max===0?0:d/max;
if
(max==min){h=0}
else
{
switch
(max){
case
r:h=(g-b)/d+(g<b?6:0);
break
;
case
g:h=(b-r)/d+2;
break
;
case
b:h=(r-g)/d+4;
break
}h/=6}
return
{h:h,s:s,v:v}}
function
hsvToRgb(h,s,v){h=bound01(h,360)*6;s=bound01(s,100);v=bound01(v,100);
var
i=math.
floor
(h),f=h-i,p=v*(1-s),q=v*(1-f*s),t=v*(1-(1-f)*s),mod=i%6,r=[v,q,p,p,t,v][mod],g=[t,v,v,q,p,p][mod],b=[p,p,t,v,v,q][mod];
return
{r:r*255,g:g*255,b:b*255}}
function
rgbToHex(r,g,b,allow3Char){
var
hex=[pad2(mathRound(r).toString(16)),pad2(mathRound(g).toString(16)),pad2(mathRound(b).toString(16))];
if
(allow3Char&&hex[0].charAt(0)==hex[0].charAt(1)&&hex[1].charAt(0)==hex[1].charAt(1)&&hex[2].charAt(0)==hex[2].charAt(1)){
return
hex[0].charAt(0)+hex[1].charAt(0)+hex[2].charAt(0)}
return
hex.join(
""
)}
function
rgbaToHex(r,g,b,a){
var
hex=[pad2(convertDecimalToHex(a)),pad2(mathRound(r).toString(16)),pad2(mathRound(g).toString(16)),pad2(mathRound(b).toString(16))];
return
hex.join(
""
)}tinycolor.equals=
function
(color1,color2){
if
(!color1||!color2){
return
false}
return
tinycolor(color1).toRgbString()==tinycolor(color2).toRgbString()};tinycolor.random=
function
(){
return
tinycolor.fromRatio({r:mathRandom(),g:mathRandom(),b:mathRandom()})};
function
desaturate(color,amount){amount=(amount===0)?0:(amount||10);
var
hsl=tinycolor(color).toHsl();hsl.s-=amount/100;hsl.s=clamp01(hsl.s);
return
tinycolor(hsl)}
function
saturate(color,amount){amount=(amount===0)?0:(amount||10);
var
hsl=tinycolor(color).toHsl();hsl.s+=amount/100;hsl.s=clamp01(hsl.s);
return
tinycolor(hsl)}
function
greyscale(color){
return
tinycolor(color).desaturate(100)}
function
lighten(color,amount){amount=(amount===0)?0:(amount||10);
var
hsl=tinycolor(color).toHsl();hsl.l+=amount/100;hsl.l=clamp01(hsl.l);
return
tinycolor(hsl)}
function
brighten(color,amount){amount=(amount===0)?0:(amount||10);
var
rgb=tinycolor(color).toRgb();rgb.r=mathMax(0,mathMin(255,rgb.r-mathRound(255*-(amount/100))));rgb.g=mathMax(0,mathMin(255,rgb.g-mathRound(255*-(amount/100))));rgb.b=mathMax(0,mathMin(255,rgb.b-mathRound(255*-(amount/100))));
return
tinycolor(rgb)}
function
darken(color,amount){amount=(amount===0)?0:(amount||10);
var
hsl=tinycolor(color).toHsl();hsl.l-=amount/100;hsl.l=clamp01(hsl.l);
return
tinycolor(hsl)}
function
spin(color,amount){
var
hsl=tinycolor(color).toHsl();
var
hue=(mathRound(hsl.h)+amount)%360;hsl.h=hue<0?360+hue:hue;
return
tinycolor(hsl)}
function
complement(color){
var
hsl=tinycolor(color).toHsl();hsl.h=(hsl.h+180)%360;
return
tinycolor(hsl)}
function
triad(color){
var
hsl=tinycolor(color).toHsl();
var
h=hsl.h;
return
[tinycolor(color),tinycolor({h:(h+120)%360,s:hsl.s,l:hsl.l}),tinycolor({h:(h+240)%360,s:hsl.s,l:hsl.l})]}
function
tetrad(color){
var
hsl=tinycolor(color).toHsl();
var
h=hsl.h;
return
[tinycolor(color),tinycolor({h:(h+90)%360,s:hsl.s,l:hsl.l}),tinycolor({h:(h+180)%360,s:hsl.s,l:hsl.l}),tinycolor({h:(h+270)%360,s:hsl.s,l:hsl.l})]}
function
splitcomplement(color){
var
hsl=tinycolor(color).toHsl();
var
h=hsl.h;
return
[tinycolor(color),tinycolor({h:(h+72)%360,s:hsl.s,l:hsl.l}),tinycolor({h:(h+216)%360,s:hsl.s,l:hsl.l})]}
function
analogous(color,results,slices){results=results||6;slices=slices||30;
var
hsl=tinycolor(color).toHsl();
var
part=360/slices;
var
ret=[tinycolor(color)];
for
(hsl.h=((hsl.h-(part*results>>1))+720)%360;--results;){hsl.h=(hsl.h+part)%360;ret.push(tinycolor(hsl))}
return
ret}
function
monochromatic(color,results){results=results||6;
var
hsv=tinycolor(color).toHsv();
var
h=hsv.h,s=hsv.s,v=hsv.v;
var
ret=[];
var
modification=1/results;
while
(results--){ret.push(tinycolor({h:h,s:s,v:v}));v=(v+modification)%1}
return
ret}tinycolor.mix=
function
(color1,color2,amount){amount=(amount===0)?0:(amount||50);
var
rgb1=tinycolor(color1).toRgb();
var
rgb2=tinycolor(color2).toRgb();
var
p=amount/100;
var
w=p*2-1;
var
a=rgb2.a-rgb1.a;
var
w1;
if
(w*a==-1){w1=w}
else
{w1=(w+a)/(1+w*a)}w1=(w1+1)/2;
var
w2=1-w1;
var
rgba={r:rgb2.r*w1+rgb1.r*w2,g:rgb2.g*w1+rgb1.g*w2,b:rgb2.b*w1+rgb1.b*w2,a:rgb2.a*p+rgb1.a*(1-p)};
return
tinycolor(rgba)};tinycolor.readability=
function
(color1,color2){
var
c1=tinycolor(color1);
var
c2=tinycolor(color2);
var
rgb1=c1.toRgb();
var
rgb2=c2.toRgb();
var
brightnessA=c1.getBrightness();
var
brightnessB=c2.getBrightness();
var
colorDiff=(Math.max(rgb1.r,rgb2.r)-Math.min(rgb1.r,rgb2.r)+Math.max(rgb1.g,rgb2.g)-Math.min(rgb1.g,rgb2.g)+Math.max(rgb1.b,rgb2.b)-Math.min(rgb1.b,rgb2.b));
return
{brightness:Math.
abs
(brightnessA-brightnessB),color:colorDiff}};tinycolor.isReadable=
function
(color1,color2){
var
readability=tinycolor.readability(color1,color2);
return
readability.brightness>125&&readability.color>500};tinycolor.mostReadable=
function
(baseColor,colorList){
var
bestColor=null;
var
bestScore=0;
var
bestIsReadable=false;
for
(
var
i=0;i<colorList.length;i++){
var
readability=tinycolor.readability(baseColor,colorList[i]);
var
readable=readability.brightness>125&&readability.color>500;
var
score=3*(readability.brightness/125)+(readability.color/500);
if
((readable&&!bestIsReadable)||(readable&&bestIsReadable&&score>bestScore)||((!readable)&&(!bestIsReadable)&&score>bestScore)){bestIsReadable=readable;bestScore=score;bestColor=tinycolor(colorList[i])}}
return
bestColor};
var
names=tinycolor.names={aliceblue:
"f0f8ff"
,antiquewhite:
"faebd7"
,aqua:
"0ff"
,aquamarine:
"7fffd4"
,azure:
"f0ffff"
,beige:
"f5f5dc"
,bisque:
"ffe4c4"
,black:
"000"
,blanchedalmond:
"ffebcd"
,blue:
"00f"
,blueviolet:
"8a2be2"
,brown:
"a52a2a"
,burlywood:
"deb887"
,burntsienna:
"ea7e5d"
,cadetblue:
"5f9ea0"
,chartreuse:
"7fff00"
,chocolate:
"d2691e"
,coral:
"ff7f50"
,cornflowerblue:
"6495ed"
,cornsilk:
"fff8dc"
,crimson:
"dc143c"
,cyan:
"0ff"
,darkblue:
"00008b"
,darkcyan:
"008b8b"
,darkgoldenrod:
"b8860b"
,darkgray:
"a9a9a9"
,darkgreen:
"006400"
,darkgrey:
"a9a9a9"
,darkkhaki:
"bdb76b"
,darkmagenta:
"8b008b"
,darkolivegreen:
"556b2f"
,darkorange:
"ff8c00"
,darkorchid:
"9932cc"
,darkred:
"8b0000"
,darksalmon:
"e9967a"
,darkseagreen:
"8fbc8f"
,darkslateblue:
"483d8b"
,darkslategray:
"2f4f4f"
,darkslategrey:
"2f4f4f"
,darkturquoise:
"00ced1"
,darkviolet:
"9400d3"
,deeppink:
"ff1493"
,deepskyblue:
"00bfff"
,dimgray:
"696969"
,dimgrey:
"696969"
,dodgerblue:
"1e90ff"
,firebrick:
"b22222"
,floralwhite:
"fffaf0"
,forestgreen:
"228b22"
,fuchsia:
"f0f"
,gainsboro:
"dcdcdc"
,ghostwhite:
"f8f8ff"
,gold:
"ffd700"
,goldenrod:
"daa520"
,gray:
"808080"
,green:
"008000"
,greenyellow:
"adff2f"
,grey:
"808080"
,honeydew:
"f0fff0"
,hotpink:
"ff69b4"
,indianred:
"cd5c5c"
,indigo:
"4b0082"
,ivory:
"fffff0"
,khaki:
"f0e68c"
,lavender:
"e6e6fa"
,lavenderblush:
"fff0f5"
,lawngreen:
"7cfc00"
,lemonchiffon:
"fffacd"
,lightblue:
"add8e6"
,lightcoral:
"f08080"
,lightcyan:
"e0ffff"
,lightgoldenrodyellow:
"fafad2"
,lightgray:
"d3d3d3"
,lightgreen:
"90ee90"
,lightgrey:
"d3d3d3"
,lightpink:
"ffb6c1"
,lightsalmon:
"ffa07a"
,lightseagreen:
"20b2aa"
,lightskyblue:
"87cefa"
,lightslategray:
"789"
,lightslategrey:
"789"
,lightsteelblue:
"b0c4de"
,lightyellow:
"ffffe0"
,lime:
"0f0"
,limegreen:
"32cd32"
,linen:
"faf0e6"
,magenta:
"f0f"
,maroon:
"800000"
,mediumaquamarine:
"66cdaa"
,mediumblue:
"0000cd"
,mediumorchid:
"ba55d3"
,mediumpurple:
"9370db"
,mediumseagreen:
"3cb371"
,mediumslateblue:
"7b68ee"
,mediumspringgreen:
"00fa9a"
,mediumturquoise:
"48d1cc"
,mediumvioletred:
"c71585"
,midnightblue:
"191970"
,mintcream:
"f5fffa"
,mistyrose:
"ffe4e1"
,moccasin:
"ffe4b5"
,navajowhite:
"ffdead"
,navy:
"000080"
,oldlace:
"fdf5e6"
,olive:
"808000"
,olivedrab:
"6b8e23"
,orange:
"ffa500"
,orangered:
"ff4500"
,orchid:
"da70d6"
,palegoldenrod:
"eee8aa"
,palegreen:
"98fb98"
,paleturquoise:
"afeeee"
,palevioletred:
"db7093"
,papayawhip:
"ffefd5"
,peachpuff:
"ffdab9"
,peru:
"cd853f"
,pink:
"ffc0cb"
,plum:
"dda0dd"
,powderblue:
"b0e0e6"
,purple:
"800080"
,rebeccapurple:
"663399"
,red:
"f00"
,rosybrown:
"bc8f8f"
,royalblue:
"4169e1"
,saddlebrown:
"8b4513"
,salmon:
"fa8072"
,sandybrown:
"f4a460"
,seagreen:
"2e8b57"
,seashell:
"fff5ee"
,sienna:
"a0522d"
,silver:
"c0c0c0"
,skyblue:
"87ceeb"
,slateblue:
"6a5acd"
,slategray:
"708090"
,slategrey:
"708090"
,snow:
"fffafa"
,springgreen:
"00ff7f"
,steelblue:
"4682b4"
,tan:
"d2b48c"
,teal:
"008080"
,thistle:
"d8bfd8"
,tomato:
"ff6347"
,turquoise:
"40e0d0"
,violet:
"ee82ee"
,wheat:
"f5deb3"
,white:
"fff"
,whitesmoke:
"f5f5f5"
,yellow:
"ff0"
,yellowgreen:
"9acd32"
};
var
hexNames=tinycolor.hexNames=flip(names);
function
flip(o){
var
flipped={};
for
(
var
i in o){
if
(o.hasOwnProperty(i)){flipped[o[i]]=i}}
return
flipped}
function
boundAlpha(a){a=parseFloat(a);
if
(isNaN(a)||a<0||a>1){a=1}
return
a}
function
bound01(n,max){
if
(isOnePointZero(n)){n=
"100%"
}
var
processPercent=isPercentage(n);n=mathMin(max,mathMax(0,parseFloat(n)));
if
(processPercent){n=parseInt(n*max,10)/100}
if
((math.
abs
(n-max)<0.000001)){
return
1}
return
(n%max)/parseFloat(max)}
function
clamp01(val){
return
mathMin(1,mathMax(0,val))}
function
parseIntFromHex(val){
return
parseInt(val,16)}
function
isOnePointZero(n){
return
typeof n==
"string"
&&n.indexOf(
"."
)!=-1&&parseFloat(n)===1}
function
isPercentage(n){
return
typeof n===
"string"
&&n.indexOf(
"%"
)!=-1}
function
pad2(c){
return
c.length==1?
"0"
+c:
""
+c}
function
convertToPercentage(n){
if
(n<=1){n=(n*100)+
"%"
}
return
n}
function
convertDecimalToHex(d){
return
Math.
round
(parseFloat(d)*255).toString(16)}
function
convertHexToDecimal(h){
return
(parseIntFromHex(h)/255)}
var
matchers=(
function
(){
var
CSS_INTEGER=
"[-\\+]?\\d+%?"
;
var
CSS_NUMBER=
"[-\\+]?\\d*\\.\\d+%?"
;
var
CSS_UNIT=
"(?:"
+CSS_NUMBER+
")|(?:"
+CSS_INTEGER+
")"
;
var
PERMISSIVE_MATCH3=
"[\\s|\\(]+("
+CSS_UNIT+
")[,|\\s]+("
+CSS_UNIT+
")[,|\\s]+("
+CSS_UNIT+
")\\s*\\)?"
;
var
PERMISSIVE_MATCH4=
"[\\s|\\(]+("
+CSS_UNIT+
")[,|\\s]+("
+CSS_UNIT+
")[,|\\s]+("
+CSS_UNIT+
")[,|\\s]+("
+CSS_UNIT+
")\\s*\\)?"
;
return
{rgb:
new
RegExp(
"rgb"
+PERMISSIVE_MATCH3),rgba:
new
RegExp(
"rgba"
+PERMISSIVE_MATCH4),hsl:
new
RegExp(
"hsl"
+PERMISSIVE_MATCH3),hsla:
new
RegExp(
"hsla"
+PERMISSIVE_MATCH4),hsv:
new
RegExp(
"hsv"
+PERMISSIVE_MATCH3),hsva:
new
RegExp(
"hsva"
+PERMISSIVE_MATCH4),hex3:/^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex8:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}})();
function
stringInputToObject(color){color=color.replace(trimLeft,
""
).replace(trimRight,
""
).toLowerCase();
var
named=false;
if
(names[color]){color=names[color];named=true}
else
{
if
(color==
"transparent"
){
return
{r:0,g:0,b:0,a:0,format:
"name"
}}}
var
match;
if
((match=matchers.rgb.
exec
(color))){
return
{r:match[1],g:match[2],b:match[3]}}
if
((match=matchers.rgba.
exec
(color))){
return
{r:match[1],g:match[2],b:match[3],a:match[4]}}
if
((match=matchers.hsl.
exec
(color))){
return
{h:match[1],s:match[2],l:match[3]}}
if
((match=matchers.hsla.
exec
(color))){
return
{h:match[1],s:match[2],l:match[3],a:match[4]}}
if
((match=matchers.hsv.
exec
(color))){
return
{h:match[1],s:match[2],v:match[3]}}
if
((match=matchers.hsva.
exec
(color))){
return
{h:match[1],s:match[2],v:match[3],a:match[4]}}
if
((match=matchers.hex8.
exec
(color))){
return
{a:convertHexToDecimal(match[1]),r:parseIntFromHex(match[2]),g:parseIntFromHex(match[3]),b:parseIntFromHex(match[4]),format:named?
"name"
:
"hex8"
}}
if
((match=matchers.hex6.
exec
(color))){
return
{r:parseIntFromHex(match[1]),g:parseIntFromHex(match[2]),b:parseIntFromHex(match[3]),format:named?
"name"
:
"hex"
}}
if
((match=matchers.hex3.
exec
(color))){
return
{r:parseIntFromHex(match[1]+
""
+match[1]),g:parseIntFromHex(match[2]+
""
+match[2]),b:parseIntFromHex(match[3]+
""
+match[3]),format:named?
"name"
:
"hex"
}}
return
false}window.tinycolor=tinycolor})();$(
function
(){
if
($.fn.spectrum.load){$.fn.spectrum.processNativeColorInputs()}})});