wisemapping-frontend/libraries/bootstrap/js/bootstrap-colorpicker.min.js

104 lines
18 KiB
JavaScript
Raw Normal View History

2021-12-24 18:40:08 +01:00
!(function (a) {
const b = function (a) {
this.value = {
h: 0, s: 0, b: 0, a: 1,
}, this.origFormat = null, a && (void 0 !== a.toLowerCase ? this.setColor(a) : void 0 !== a.h && (this.value = a));
}; b.prototype = {
constructor: b,
_sanitizeNumber(a) { return typeof a === 'number' ? a : isNaN(a) || a === null || a === '' || void 0 === a ? 1 : void 0 !== a.toLowerCase ? parseFloat(a) : 1; },
setColor(a) {
a = a.toLowerCase(), this.value = this.stringToHSB(a) || {
h: 0, s: 0, b: 0, a: 1,
};
},
stringToHSB(b) { b = b.toLowerCase(); const c = this; let d = !1; return a.each(this.stringParsers, (a, e) => { const f = e.re.exec(b); const g = f && e.parse.apply(c, [f]); const h = e.format || 'rgba'; return g ? (d = h.match(/hsla?/) ? c.RGBtoHSB.apply(c, c.HSLtoRGB.apply(c, g)) : c.RGBtoHSB.apply(c, g), c.origFormat = h, !1) : !0; }), d; },
setHue(a) { this.value.h = 1 - a; },
setSaturation(a) { this.value.s = a; },
setBrightness(a) { this.value.b = 1 - a; },
setAlpha(a) { this.value.a = parseInt(100 * (1 - a), 10) / 100; },
toRGB(a, b, c, d) {
a = a || this.value.h, b = b || this.value.s, c = c || this.value.b, d = d || this.value.a; let e; let f; let g; let h; let i; let j; let k; let l; switch (a && void 0 === b && void 0 === c && (b = a.s, c = a.v, a = a.h), h = Math.floor(6 * a), i = 6 * a - h, j = c * (1 - b), k = c * (1 - i * b), l = c * (1 - (1 - i) * b), h % 6) { case 0: e = c, f = l, g = j; break; case 1: e = k, f = c, g = j; break; case 2: e = j, f = c, g = l; break; case 3: e = j, f = k, g = c; break; case 4: e = l, f = j, g = c; break; case 5: e = c, f = j, g = k; } return {
r: Math.floor(255 * e), g: Math.floor(255 * f), b: Math.floor(255 * g), a: d,
};
},
toHex(a, b, c, d) { const e = this.toRGB(a, b, c, d); return `#${(1 << 24 | parseInt(e.r) << 16 | parseInt(e.g) << 8 | parseInt(e.b)).toString(16).substr(1)}`; },
toHSL(a, b, c, d) {
a = a || this.value.h, b = b || this.value.s, c = c || this.value.b, d = d || this.value.a; const e = a; let f = (2 - b) * c; let g = b * c; return g /= f > 0 && f <= 1 ? f : 2 - f, f /= 2, g > 1 && (g = 1), {
h: isNaN(e) ? 0 : e, s: isNaN(g) ? 0 : g, l: isNaN(f) ? 0 : f, a: isNaN(d) ? 0 : d,
};
},
RGBtoHSB(a, b, c, d) {
a /= 255, b /= 255, c /= 255; let e; let f; let g; let h; return g = Math.max(a, b, c), h = g - Math.min(a, b, c), e = h === 0 ? null : g === a ? (b - c) / h : g === b ? (c - a) / h + 2 : (a - b) / h + 4, e = (e + 360) % 6 * 60 / 360, f = h === 0 ? 0 : h / g, {
h: this._sanitizeNumber(e), s: f, b: g, a: this._sanitizeNumber(d),
};
},
HueToRGB(a, b, c) { return c < 0 ? c += 1 : c > 1 && (c -= 1), 6 * c < 1 ? a + (b - a) * c * 6 : 2 * c < 1 ? b : 3 * c < 2 ? a + (b - a) * (2 / 3 - c) * 6 : a; },
HSLtoRGB(a, b, c, d) { b < 0 && (b = 0); let e; e = c <= 0.5 ? c * (1 + b) : c + b - c * b; const f = 2 * c - e; const g = a + 1 / 3; const h = a; const i = a - 1 / 3; const j = Math.round(255 * this.HueToRGB(f, e, g)); const k = Math.round(255 * this.HueToRGB(f, e, h)); const l = Math.round(255 * this.HueToRGB(f, e, i)); return [j, k, l, this._sanitizeNumber(d)]; },
toString(a) { switch (a = a || 'rgba') { case 'rgb': var b = this.toRGB(); return `rgb(${b.r},${b.g},${b.b})`; case 'rgba': var b = this.toRGB(); return `rgba(${b.r},${b.g},${b.b},${b.a})`; case 'hsl': var c = this.toHSL(); return `hsl(${Math.round(360 * c.h)},${Math.round(100 * c.s)}%,${Math.round(100 * c.l)}%)`; case 'hsla': var c = this.toHSL(); return `hsla(${Math.round(360 * c.h)},${Math.round(100 * c.s)}%,${Math.round(100 * c.l)}%,${c.a})`; case 'hex': return this.toHex(); default: return !1; } },
stringParsers: [{ re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/, format: 'hex', parse(a) { return [parseInt(a[1], 16), parseInt(a[2], 16), parseInt(a[3], 16), 1]; } }, { re: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/, format: 'hex', parse(a) { return [parseInt(a[1] + a[1], 16), parseInt(a[2] + a[2], 16), parseInt(a[3] + a[3], 16), 1]; } }, { re: /rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*?\)/, format: 'rgb', parse(a) { return [a[1], a[2], a[3], 1]; } }, { re: /rgb\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*?\)/, format: 'rgb', parse(a) { return [2.55 * a[1], 2.55 * a[2], 2.55 * a[3], 1]; } }, { re: /rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, format: 'rgba', parse(a) { return [a[1], a[2], a[3], a[4]]; } }, { re: /rgba\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, format: 'rgba', parse(a) { return [2.55 * a[1], 2.55 * a[2], 2.55 * a[3], a[4]]; } }, { re: /hsl\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*?\)/, format: 'hsl', parse(a) { return [a[1] / 360, a[2] / 100, a[3] / 100, a[4]]; } }, { re: /hsla\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, format: 'hsla', parse(a) { return [a[1] / 360, a[2] / 100, a[3] / 100, a[4]]; } }, { re: /^([a-z]{3,})$/, format: 'alias', parse(a) { const b = this.colorNameToHex(a[0]) || '#000000'; const c = this.stringParsers[0].re.exec(b); const d = c && this.stringParsers[0].parse.apply(this, [c]); return d; } }],
colorNameToHex(a) {
const b = {
aliceblue: '#f0f8ff', antiquewhite: '#faebd7', aqua: '#00ffff', aquamarine: '#7fffd4', azure: '#f0ffff', beige: '#f5f5dc', bisque: '#ffe4c4', black: '#000000', blanchedalmond: '#ffebcd', blue: '#0000ff', blueviolet: '#8a2be2', brown: '#a52a2a', burlywood: '#deb887', cadetblue: '#5f9ea0', chartreuse: '#7fff00', chocolate: '#d2691e', coral: '#ff7f50', cornflowerblue: '#6495ed', cornsilk: '#fff8dc', crimson: '#dc143c', cyan: '#00ffff', darkblue: '#00008b', darkcyan: '#008b8b', darkgoldenrod: '#b8860b', darkgray: '#a9a9a9', darkgreen: '#006400', darkkhaki: '#bdb76b', darkmagenta: '#8b008b', darkolivegreen: '#556b2f', darkorange: '#ff8c00', darkorchid: '#9932cc', darkred: '#8b0000', darksalmon: '#e9967a', darkseagreen: '#8fbc8f', darkslateblue: '#483d8b', darkslategray: '#2f4f4f', darkturquoise: '#00ced1', darkviolet: '#9400d3', deeppink: '#ff1493', deepskyblue: '#00bfff', dimgray: '#696969', dodgerblue: '#1e90ff', firebrick: '#b22222', floralwhite: '#fffaf0', forestgreen: '#228b22', fuchsia: '#ff00ff', gainsboro: '#dcdcdc', ghostwhite: '#f8f8ff', gold: '#ffd700', goldenrod: '#daa520', gray: '#808080', green: '#008000', greenyellow: '#adff2f', 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', lightgrey: '#d3d3d3', lightgreen: '#90ee90', lightpink: '#ffb6c1', lightsalmon: '#ffa07a', lightseagreen: '#20b2aa', lightskyblue: '#87cefa', lightslategray: '#778899', lightsteelblue: '#b0c4de', lightyellow: '#ffffe0', lime: '#00ff00', limegreen: '#32cd32', linen: '#faf0e6', magenta: '#ff00ff', maroon: '#800000', mediumaquamarine: '#66cdaa', mediumblue: '#0000cd', mediumorchid: '#ba55d3', mediumpurple: '#9370d8', 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: '#d87093', papayawhip: '#ffefd5', peachpuff: '#ffdab9', peru: '#cd853f', pink: '#ffc0cb', plum: '#dda0dd', powderblue: '#b0e0e6', purple: '#800080', red: '#ff0000', rosybrown: '#bc8f8f', royalblue: '#4169e1', saddlebrown: '#8b4513', salmon: '#fa8072', sandybrown: '#f4a460', seagreen: '#2e8b57', seashell: '#fff5ee', sienna: '#a0522d', silver: '#c0c0c0', skyblue: '#87ceeb', slateblue: '#6a5acd', slategray: '#708090', snow: '#fffafa', springgreen: '#00ff7f', steelblue: '#4682b4', tan: '#d2b48c', teal: '#008080', thistle: '#d8bfd8', tomato: '#ff6347', turquoise: '#40e0d0', violet: '#ee82ee', wheat: '#f5deb3', white: '#ffffff', whitesmoke: '#f5f5f5', yellow: '#ffff00', yellowgreen: '#9acd32',
}; return typeof b[a.toLowerCase()] !== 'undefined' ? b[a.toLowerCase()] : !1;
},
}; const c = {
horizontal: !1,
inline: !1,
color: !1,
format: !1,
input: 'input',
container: !1,
component: '.add-on, .input-group-addon',
sliders: {
saturation: {
maxLeft: 100, maxTop: 100, callLeft: 'setSaturation', callTop: 'setBrightness',
},
hue: {
maxLeft: 0, maxTop: 100, callLeft: !1, callTop: 'setHue',
},
alpha: {
maxLeft: 0, maxTop: 100, callLeft: !1, callTop: 'setAlpha',
},
},
slidersHorz: {
saturation: {
maxLeft: 100, maxTop: 100, callLeft: 'setSaturation', callTop: 'setBrightness',
},
hue: {
maxLeft: 100, maxTop: 0, callLeft: 'setHue', callTop: !1,
},
alpha: {
maxLeft: 100, maxTop: 0, callLeft: 'setAlpha', callTop: !1,
},
},
template: '<div class="colorpicker dropdown-menu"><div class="colorpicker-saturation"><i><b></b></i></div><div class="colorpicker-hue"><i></i></div><div class="colorpicker-alpha"><i></i></div><div class="colorpicker-color"><div /></div></div>',
}; const d = function (d, e) { this.element = a(d).addClass('colorpicker-element'), this.options = a.extend({}, c, this.element.data(), e), this.component = this.options.component, this.component = this.component !== !1 ? this.element.find(this.component) : !1, this.component && this.component.length === 0 && (this.component = !1), this.container = this.options.container === !0 ? this.element : this.options.container, this.container = this.container !== !1 ? a(this.container) : !1, this.input = this.element.is('input') ? this.element : this.options.input ? this.element.find(this.options.input) : !1, this.input && this.input.length === 0 && (this.input = !1), this.color = new b(this.options.color !== !1 ? this.options.color : this.getValue()), this.format = this.options.format !== !1 ? this.options.format : this.color.origFormat, this.picker = a(this.options.template), this.options.inline ? this.picker.addClass('colorpicker-inline colorpicker-visible') : this.picker.addClass('colorpicker-hidden'), this.options.horizontal && this.picker.addClass('colorpicker-horizontal'), (this.format === 'rgba' || this.format === 'hsla') && this.picker.addClass('colorpicker-with-alpha'), this.picker.on('mousedown.colorpicker', a.proxy(this.mousedown, this)), this.picker.appendTo(this.container ? this.container : a('body')), this.input !== !1 && (this.input.on({ 'keyup.colorpicker': a.proxy(this.keyup, this) }), this.component === !1 && this.element.on({ 'focus.colorpicker': a.proxy(this.show, this) }), this.options.inline === !1 && this.element.on({ 'focusout.colorpicker': a.proxy(this.hide, this) })), this.component !== !1 && this.component.on({ 'click.colorpicker': a.proxy(this.show, this) }), this.input === !1 && this.component === !1 && this.element.on({ 'click.colorpicker': a.proxy(this.show, this) }), this.update(), a(a.proxy(function () { this.element.trigger('create'); }, this)); }; d.version = '2.0.0-beta', d.Color = b, d.prototype = {
constructor: d,
destroy() { this.picker.remove(), this.element.removeData('colorpicker').off('.colorpicker'), this.input !== !1 && this.input.off('.colorpicker'), this.component !== !1 && this.component.off('.colorpicker'), this.element.removeClass('colorpicker-element'), this.element.trigger({ type: 'destroy' }); },
reposition() { if (this.options.inline !== !1) return !1; const a = this.component ? this.component.offset() : this.element.offset(); this.picker.css({ top: a.top + (this.component ? this.component.outerHeight() : this.element.outerHeight()), left: a.left }); },
show(b) { return this.isDisabled() ? !1 : (this.picker.addClass('colorpicker-visible').removeClass('colorpicker-hidden'), this.reposition(), a(window).on('resize.colorpicker', a.proxy(this.reposition, this)), !this.hasInput() && b && b.stopPropagation && b.preventDefault && (b.stopPropagation(), b.preventDefault()), this.options.inline === !1 && a(window.document).on({ 'mousedown.colorpicker': a.proxy(this.hide, this) }), this.element.trigger({ type: 'showPicker', color: this.color }), void 0); },
hide() { this.picker.addClass('colorpicker-hidden').removeClass('colorpicker-visible'), a(window).off('resize.colorpicker', this.reposition), a(document).off({ 'mousedown.colorpicker': this.hide }), this.update(), this.element.trigger({ type: 'hidePicker', color: this.color }); },
updateData(a) { return a = a || this.color.toString(this.format), this.element.data('color', a), a; },
updateInput(a) { return a = a || this.color.toString(this.format), this.input !== !1 && this.input.prop('value', a), a; },
updatePicker(a) {
void 0 !== a && (this.color = new b(a)); let c = this.options.horizontal === !1 ? this.options.sliders : this.options.slidersHorz; const d = this.picker.find('i'); return d.length !== 0 ? (this.options.horizontal === !1 ? (c = this.options.sliders, d.eq(1).css('top', c.hue.maxTop * (1 - this.color.value.h)).end().eq(2)
.css('top', c.alpha.maxTop * (1 - this.color.value.a))) : (c = this.options.slidersHorz, d.eq(1).css('left', c.hue.maxLeft * (1 - this.color.value.h)).end().eq(2)
.css('left', c.alpha.maxLeft * (1 - this.color.value.a))), d.eq(0).css({ top: c.saturation.maxTop - this.color.value.b * c.saturation.maxTop, left: this.color.value.s * c.saturation.maxLeft }), this.picker.find('.colorpicker-saturation').css('backgroundColor', this.color.toHex(this.color.value.h, 1, 1, 1)), this.picker.find('.colorpicker-alpha').css('backgroundColor', this.color.toHex()), this.picker.find('.colorpicker-color, .colorpicker-color div').css('backgroundColor', this.color.toString(this.format)), a) : void 0;
},
updateComponent(a) { if (a = a || this.color.toString(this.format), this.component !== !1) { const b = this.component.find('i').eq(0); b.length > 0 ? b.css({ backgroundColor: a }) : this.component.css({ backgroundColor: a }); } return a; },
update(a) { const b = this.updateComponent(); return (this.getValue(!1) !== !1 || a === !0) && (this.updateInput(b), this.updateData(b)), this.updatePicker(), b; },
setValue(a) { this.color = new b(a), this.update(), this.element.trigger({ type: 'changeColor', color: this.color, value: a }); },
getValue(a) { a = void 0 === a ? '#000000' : a; let b; return b = this.hasInput() ? this.input.val() : this.element.data('color'), (void 0 === b || b === '' || b === null) && (b = a), b; },
hasInput() { return this.input !== !1; },
isDisabled() { return this.hasInput() ? this.input.prop('disabled') === !0 : !1; },
disable() { return this.hasInput() ? (this.input.prop('disabled', !0), !0) : !1; },
enable() { return this.hasInput() ? (this.input.prop('disabled', !1), !0) : !1; },
currentSlider: null,
mousePointer: { left: 0, top: 0 },
mousedown(b) { b.stopPropagation(), b.preventDefault(); const c = a(b.target); const d = c.closest('div'); const e = this.options.horizontal ? this.options.slidersHorz : this.options.sliders; if (!d.is('.colorpicker')) { if (d.is('.colorpicker-saturation')) this.currentSlider = a.extend({}, e.saturation); else if (d.is('.colorpicker-hue')) this.currentSlider = a.extend({}, e.hue); else { if (!d.is('.colorpicker-alpha')) return !1; this.currentSlider = a.extend({}, e.alpha); } const f = d.offset(); this.currentSlider.guide = d.find('i')[0].style, this.currentSlider.left = b.pageX - f.left, this.currentSlider.top = b.pageY - f.top, this.mousePointer = { left: b.pageX, top: b.pageY }, a(document).on({ 'mousemove.colorpicker': a.proxy(this.mousemove, this), 'mouseup.colorpicker': a.proxy(this.mouseup, this) }).trigger('mousemove'); } return !1; },
mousemove(a) { a.stopPropagation(), a.preventDefault(); const b = Math.max(0, Math.min(this.currentSlider.maxLeft, this.currentSlider.left + ((a.pageX || this.mousePointer.left) - this.mousePointer.left))); const c = Math.max(0, Math.min(this.currentSlider.maxTop, this.currentSlider.top + ((a.pageY || this.mousePointer.top) - this.mousePointer.top))); return this.currentSlider.guide.left = `${b}px`, this.currentSlider.guide.top = `${c}px`, this.currentSlider.callLeft && this.color[this.currentSlider.callLeft].call(this.color, b / 100), this.currentSlider.callTop && this.color[this.currentSlider.callTop].call(this.color, c / 100), this.update(!0), this.element.trigger({ type: 'changeColor', color: this.color }), !1; },
mouseup(b) { return b.stopPropagation(), b.preventDefault(), a(document).off({ 'mousemove.colorpicker': this.mousemove, 'mouseup.colorpicker': this.mouseup }), !1; },
keyup(a) { if (a.keyCode === 38) this.color.value.a < 1 && (this.color.value.a = Math.round(100 * (this.color.value.a + 0.01)) / 100), this.update(!0); else if (a.keyCode === 40) this.color.value.a > 0 && (this.color.value.a = Math.round(100 * (this.color.value.a - 0.01)) / 100), this.update(!0); else { var c = this.input.val(); this.color = new b(c), this.getValue(!1) !== !1 && (this.updateData(), this.updateComponent(), this.updatePicker()); } this.element.trigger({ type: 'changeColor', color: this.color, value: c }); },
}, a.colorpicker = d, a.fn.colorpicker = function (b) { const c = arguments; return this.each(function () { const e = a(this); const f = e.data('colorpicker'); const g = typeof b === 'object' ? b : {}; f || typeof b === 'string' ? typeof b === 'string' && f[b].apply(f, Array.prototype.slice.call(c, 1)) : e.data('colorpicker', new d(this, g)); }); }, a.fn.colorpicker.constructor = d;
}(window.jQuery));