/**
* [kolor-picker]{@link https://github.com/emn178/kolor-picker}
*
* @version 0.3.0
* @author Yi-Cyuan Chen [emn178@gmail.com]
* @copyright Yi-Cyuan Chen 2015-2021
* @license MIT
*/
(function ($) {
'use strict';
var KEY = 'kolor-picker';
var wrapper;
function Wrapper(element, colorPicker) {
this.element = element;
this.colorPicker = colorPicker;
this.previewElement = $('
');
this.element.append(this.previewElement);
var elements = {
preview: this.previewElement.find('.preview'),
input: this.previewElement.find('input'),
sampler: this.previewElement.find('.sampler'),
alpha: this.element.find('.cp-alpha')
};
this.elements = elements;
elements.sampler.click(this.enableSampler.bind(this));
elements.input.change(this.onInputChange.bind(this));
this.sampling = false;
this.lastToggled = false;
}
Wrapper.prototype.enableSampler = function () {
if (!this.kolorPicker.canvas) {
return;
}
this.kolorPicker.canvas.colorSampler('enable');
this.sampling = true;
this.colorPicker.toggle(false);
};
Wrapper.prototype.onInputChange = function () {
this.kolorPicker.setColor(this.elements.input.val());
};
Wrapper.prototype.setKolorPicker = function (kolorPicker) {
this.kolorPicker = kolorPicker;
this.element.attr('data-theme', kolorPicker.theme);
this.elements.sampler.toggle(!!kolorPicker.canvas);
this.elements.alpha.toggle(kolorPicker.options.opacity !== false);
if (kolorPicker.options.doRender === undefined) {
this.colorPicker.color.options.doRender = true;
} else {
this.colorPicker.color.options.doRender = kolorPicker.options.doRender;
}
};
Wrapper.prototype.getColor = function () {
var rgb = this.colorPicker.color.colors.rgb;
return 'rgba(' + [parseInt(rgb.r * 255), parseInt(rgb.g * 255), parseInt(rgb.b * 255), this.colorPicker.color.colors.alpha.toFixed(2)].join(',') + ')';
};
Wrapper.prototype.updateColor = function () {
var color = this.getColor();
this.elements.preview.css('background-color', color);
this.elements.input.val(color);
this.kolorPicker.changeColor(color);
};
Wrapper.prototype.render = function (toggled) {
if (toggled === undefined) {
this.updateColor();
} else if (this.lastToggled === toggled) {
return;
}
this.lastToggled = toggled;
if (toggled === false) {
if (!this.sampling) {
var color = this.getColor();
this.kolorPicker.selectColor(color);
}
} else {
this.updateColor();
}
};
function KolorPicker(element, options) {
this.element = element;
this.options = options || {};
this.canvas = this.options.canvas;
this.theme = this.options.theme || $.kolorPicker.theme;
this.color = this.element.css('background-color');
if (this.canvas) {
this.canvas = $(this.canvas);
this.canvas.colorSampler().colorSampler('disable')
.bind('sampler:preview', this.onSamplerPreview.bind(this))
.bind('sampler:select', this.onSamplerSelect.bind(this));
}
}
KolorPicker.prototype.onSamplerSelect = function (e, color) {
if (wrapper.kolorPicker != this) {
return;
}
wrapper.sampling = false;
this.canvas.colorSampler('disable');
this.setColor(color);
color = wrapper.getColor();
this.selectColor(color);
};
KolorPicker.prototype.onSamplerPreview = function (e, color) {
if (wrapper.kolorPicker != this) {
return;
}
this.element.css('background-color', color);
color = wrapper.getColor();
this.changeColor(color);
};
KolorPicker.prototype.selectColor = function (color) {
this.color = color;
if ($.isFunction(this.options.onSelect)) {
this.options.onSelect.call(this.element, color);
}
this.element.trigger('kolorPicker:select', color)
};
KolorPicker.prototype.changeColor = function (color) {
if ($.isFunction(this.options.onChange)) {
this.options.onChange.call(this.element, color);
}
this.element.trigger('kolorPicker:change', color)
};
KolorPicker.prototype.setColor = function (color) {
this.color = color;
this.element.css('background-color', color);
if (wrapper) {
wrapper.colorPicker.color.setColor(color);
wrapper.colorPicker.render();
}
};
KolorPicker.prototype.getColor = function () {
return this.color;
};
var KolorPickerOptions = {
buildCallback: function (element) {
wrapper = new Wrapper(element, this);
},
renderCallback: function (element, toggled) {
var kolorPicker = $(element).data(KEY);
if (kolorPicker) {
wrapper.setKolorPicker(kolorPicker);
wrapper.render(toggled);
}
}
};
var PublicMethods = ['setColor', 'getColor'];
$.fn.kolorPicker = function (options) {
if (typeof (options) == 'string') {
if ($.inArray(options, PublicMethods) != -1) {
var args = Array.prototype.splice.call(arguments, 1);
var kolorPicker = $(this).data(KEY);
if (kolorPicker) {
return kolorPicker[options].apply(kolorPicker, args);
}
}
} else {
this.each(function () {
var element = $(this);
if (!element.data(KEY)) {
return element.data(KEY, new KolorPicker(element, options))
.colorPicker($.extend({ cssAddon: $.kolorPicker.css }, options, KolorPickerOptions));
}
});
}
return this;
};
$.kolorPicker = {
theme: ''
};
})(jQuery);
$.kolorPicker.css="[data-theme=light].cp-color-picker{background-color:#fff}[data-theme=light] .kolor-picker .sampler{border-color:#ebebeb;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAAAXNSR0IArs4c6QAAAgNJREFUWAntlztOw0AURWPRQEPFAgxsBIkGUbABdoBYARsIEhUSDQ0dG0A07AAKGjoa5FAg0VIB4neulBdNRmM7CfHYkeZKV/O15/hl/Mbp9ZJSBFIEUgS6HIFV4Pr4Dt/jU7yGO6kcqif86/mFduegc6AK7MNaW5GOrowVlwOr5vQV2OBCpbZHVO2y2iv+wmd4CUs5LnAI0u3Tno6mPVb6xC7AJe1NXHj97hy33mdeFO2wig9rIO+MWb2q1Iuo7BFFA1apgqkbK7g+x1Gkl+wN10GVjRdcm+NK2ctQOWnKwe0p52u6fpktXODoOmfFsiiG+gvm57gVbbCqohUCC/XpRVT2aEWCfcYCU/69HtZDoG6fUl4TW5PblmudIYusYPeHU08oXbiyug6XaCqDNYBJoPWQoWPc7jG3sg7WFqrbHjrGM5vcVDkprLaHIli2HT4Y07dHo5oFdgCRn/IEq2+PRjUrrK6TjrBORD2Avj0a1X9hDS6zSpPlvGCbZBzdO8GOQjHnykJFdoWHf8TKn+5x68dEefZ7OG9AqYdsRcesKtgfbN8GPoh7KLQKK7AHLOALNQLqFKz47O/O4SLAivEWK8I3ajjqXGSN7YCKgA1akdb20J5WX+t7FoYxZbSusEG7pbJHa9lgjNJrCFqR1vbQntaLqOyhlJeUIpAikCLQwQj8Ad75Juue3l4FAAAAAElFTkSuQmCC)}[data-theme=light] .kolor-picker input{border-color:#ebebeb;color:#85888f}[data-theme=light] .kolor-picker .preview{border-color:#ebebeb}.cp-color-picker{background-color:#2f3239;border-radius:3px}.cp-xy-slider{width:240px;height:178px}.cp-xy-cursor{height:15px;width:15px;border:2px solid #fff}.cp-z-slider{height:178px}.cp-z-cursor{border:0;background-color:#fff;height:8px;border-radius:3px}.kolor-picker{clear:both;height:35px;margin:10px 0;padding-top:5px}.kolor-picker .sampler{display:inline-block;width:26px;height:26px;border:2px solid #555b60;border-radius:3px;vertical-align:middle;cursor:pointer;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAAAXNSR0IArs4c6QAAAhZJREFUWAntl7FOwlAUhkEXWZzcBXkZ4sAL8AaGF9AXwMSJxMWFzRcwLmyOOrC4uRh1MLoaBzVq/f6mxzQX2oKWtsZ7kp/b3nt7z9ef01uo1Xx4B7wD3gHvwL91IAiCdTRAF2iChmijkoYA1kTXyI17OqoFDZBgb1zS2PmwcJdJXkdrbmL6smDFPXGvs/MVO8izJeE26z2gZ44P0arWp23SnKFNlBbvaYO5jgHVRW8oHsectFFaGcTnD3KFSlqMjB3kwhrIix1ktHoQ15Ny5NpPotsMmKxhfQPNXKGSFiORHrKnLKKU8eJg7SaA2U0BShsqHjYGfZRGNmOsVNgtgBapYz2IbbvZQlsSC/YOKd7RaXiU/aEtL9ynCwMmYQuZs4LtKTntAZonDkuHNQBo54HWTU69xm2N3FqSzHTWTcC8rPJ4ZE7dvS7X8wVge8yVg0nxyoB+eywvSDCvs3FY1bi75Qm2uzxSVv4FbEtgXL+H9EbUDXQqDWtwgC63XiNnfloGobMGW0iLIx52KU7/NWcbAF8hxffr1nWGMW1dH5pE6MkvvmYFReJ9ERCfKPxtkABrL4XyYCPgyxA3CEYuaDTuvhTKcdbggLW/O33rs1aOo2o4G4M6jxweW5/aSsJGYDsRsJox6qMRUk0ryq3ZuIsRcB2okxBt+kO7R7k16wLHoOW0ykM1rQdRu0dj1nzf5x3wDmQ78AUqu6QCF8YEagAAAABJRU5ErkJggg==);background-size:22px;background-repeat:no-repeat;background-position:center;opacity:.5}.kolor-picker .sampler:hover{opacity:1}.kolor-picker .preview-block{display:inline-block;vertical-align:middle;float:right}.kolor-picker input{height:26px;width:150px;background-color:transparent;padding:0;margin:0 10px 0 0;border:2px solid #555b60;border-radius:3px;text-align:center;color:#fff;vertical-align:middle;font-size:14px;font-family:SourceSansPro-Regular}.kolor-picker .preview-wrapper{display:inline-block;width:31px;height:26px;border:2px solid #555b60;border-radius:3px;vertical-align:middle;background-image:url(data:image/gif;base64,R0lGODlhDAAMAIABAMzMzP///yH5BAEAAAEALAAAAAAMAAwAAAIWhB+ph5ps3IMyQFBvzVRq3zmfGC5QAQA7)}.kolor-picker .preview{height:100%}";