您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
ColorPicker for Font Rendering (Customized)
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/437214/1553313/frColorPicker.js
- // ==UserScript==
- // @name frColorPicker
- // @version 6.7.2
- // @author F9y4ng
- // @license GPL-3.0-only
- // @description ColorPicker for Font Rendering (Customized)
- // ==/UserScript==
- (function (p, B) {
- "object" === typeof module && "object" === typeof module.exports
- ? (module.exports = function (z) {
- if (!z.document) throw Error("No Document!");
- return B(z);
- })
- : B(p);
- })("undefined" !== typeof window ? window : this, function (p) {
- var B = (function () {
- var z = function (b) {
- var d = Math.random().toString(36).slice(2);
- return d.slice(0, b - 4).padEnd(b - 3, Math.random().toString(36).slice(2)) + "." + d.slice(-3);
- },
- G = z(9),
- H = z(8),
- I = z(12),
- J = z(8),
- K = z(7),
- D,
- a = {
- initialized: !1,
- instances: [],
- readyQueue: [],
- register: function () {
- "undefined" !== typeof p &&
- p.document &&
- ("loading" === p.document.readyState
- ? p.document.addEventListener("DOMContentLoaded", a.pub.init, !1)
- : p.document.documentElement
- ? a.pub.init()
- : p.addEventListener("load", a.pub.init, !1));
- },
- getInstances: function () {
- for (var b = [], d = 0; d < a.instances.length; d += 1) a.instances[d] && a.instances[d].targetElement && b.push(a.instances[d]);
- return b;
- },
- createEl: function (b) {
- b = p.document.createElement(b);
- a.setData(b, "gui", !0);
- return b;
- },
- node: function (b) {
- if (!b) return null;
- if ("string" === typeof b) {
- var d = null;
- try {
- d = p.document.querySelector(b) || D.querySelector(b);
- } catch (e) {
- return null;
- }
- d || console.warn("No element matche: %s", b);
- return d;
- }
- return a.isNode(b) ? b : null;
- },
- isNode: function (b) {
- return "object" === typeof Node ? b instanceof Node : b && "object" === typeof b && "number" === typeof b.nodeType && "string" === typeof b.nodeName;
- },
- nodeName: function (b) {
- return b && b.nodeName ? b.nodeName.toLowerCase() : !1;
- },
- removeChildren: function (b) {
- for (; b.firstChild; ) b.removeChild(b.firstChild);
- },
- isTextInput: function (b) {
- return b && "input" === a.nodeName(b) && "text" === b.type.toLowerCase();
- },
- isButton: function (b) {
- if (!b) return !1;
- var d = a.nodeName(b);
- return "button" === d || ("input" === d && -1 < ["button", "submit", "reset"].indexOf(b.type.toLowerCase()));
- },
- isButtonEmpty: function (b) {
- switch (a.nodeName(b)) {
- case "input":
- return !b.value || "" === b.value.trim();
- case "button":
- return "" === b.textContent.trim();
- }
- return null;
- },
- isPassiveEventSupported: (function () {
- var b = !1;
- try {
- var d = Object.defineProperty({}, "passive", {
- get: function () {
- b = !0;
- },
- });
- p.addEventListener("testPassive", null, d);
- p.removeEventListener("testPassive", null, d);
- } catch (e) {
- console.error(e);
- }
- return b;
- })(),
- isColorAttrSupported: (function () {
- var b = p.document.createElement("input");
- return b.setAttribute && (b.setAttribute("type", "color"), b.type && "color" == b.type.toLowerCase()) ? !0 : !1;
- })(),
- dataProp: "_data_frcolorpicker",
- setData: function () {
- var b = arguments[0];
- if (3 === arguments.length) {
- b = b.hasOwnProperty(a.dataProp) ? b[a.dataProp] : (b[a.dataProp] = {});
- var d = arguments[1];
- b[d] = arguments[2];
- return !0;
- }
- if (2 === arguments.length && "object" === typeof arguments[1]) {
- b = b.hasOwnProperty(a.dataProp) ? b[a.dataProp] : (b[a.dataProp] = {});
- var e = arguments[1];
- for (d in e) e.hasOwnProperty(d) && (b[d] = e[d]);
- return !0;
- }
- throw Error("Invalid arguments");
- },
- removeData: function () {
- var b = arguments[0];
- if (!b.hasOwnProperty(a.dataProp)) return !0;
- for (var d = 1; d < arguments.length; d += 1) delete b[a.dataProp][arguments[d]];
- return !0;
- },
- getData: function (b, d, e) {
- if (!b.hasOwnProperty(a.dataProp))
- if (void 0 !== e) b[a.dataProp] = {};
- else return;
- b = b[a.dataProp];
- b.hasOwnProperty(d) || void 0 === e || (b[d] = e);
- return b[d];
- },
- getDataAttr: function (b, d) {
- return b.getAttribute("data-" + d);
- },
- setDataAttr: function (b, d, e) {
- b.setAttribute("data-" + d, e);
- },
- _attachedGroupEvents: {},
- attachGroupEvent: function (b, d, e, g) {
- a._attachedGroupEvents.hasOwnProperty(b) || (a._attachedGroupEvents[b] = []);
- a._attachedGroupEvents[b].push([d, e, g]);
- d.addEventListener(e, g, !1);
- },
- detachGroupEvents: function (b) {
- if (a._attachedGroupEvents.hasOwnProperty(b)) {
- for (var d = 0; d < a._attachedGroupEvents[b].length; d += 1) {
- var e = a._attachedGroupEvents[b][d];
- e[0].removeEventListener(e[1], e[2], !1);
- }
- delete a._attachedGroupEvents[b];
- }
- },
- preventDefault: function (b) {
- b.preventDefault && b.preventDefault();
- b.returnValue = !1;
- },
- triggerEvent: function (b, d, e, g) {
- if (b) {
- if ("function" === typeof Event) var l = new Event(d, { bubbles: e, cancelable: g });
- else (l = p.document.createEvent("Event")), l.initEvent(d, e, g);
- if (!l) return !1;
- a.setData(l, "internal", !0);
- b.dispatchEvent(l);
- return !0;
- }
- },
- triggerInputEvent: function (b, d, e, g) {
- b && a.isTextInput(b) && a.triggerEvent(b, d, e, g);
- },
- eventKey: function (b) {
- var d = { 9: "Tab", 13: "Enter", 27: "Escape" };
- return "string" === typeof b.code ? b.code : void 0 !== b.keyCode && d.hasOwnProperty(b.keyCode) ? d[b.keyCode] : null;
- },
- strList: function (b) {
- return b ? b.replace(/^\s+|\s+$/g, "").split(/\s+/) : [];
- },
- hasClass: function (b, d) {
- return d ? (void 0 !== b.classList ? b.classList.contains(d) : -1 != (" " + b.className.replace(/\s+/g, " ") + " ").indexOf(" " + d + " ")) : !1;
- },
- addClass: function (b, d) {
- d = a.strList(d);
- if (void 0 !== b.classList) for (var e = 0; e < d.length; e += 1) b.classList.add(d[e]);
- else for (e = 0; e < d.length; e += 1) a.hasClass(b, d[e]) || (b.className += (b.className ? " " : "") + d[e]);
- },
- removeClass: function (b, d) {
- d = a.strList(d);
- if (void 0 !== b.classList) for (var e = 0; e < d.length; e += 1) b.classList.remove(d[e]);
- else for (e = 0; e < d.length; e += 1) b.className = b.className.replace(new RegExp("^\\s*" + d[e] + "\\s*|\\s*" + d[e] + "\\s*$|\\s+" + d[e] + "(\\s+)", "g"), "$1");
- },
- getCompStyle: function (b) {
- return b instanceof ShadowRoot ? {} : (b = p.getComputedStyle ? p.getComputedStyle(b) : b.currentStyle) ? b : {};
- },
- setStyle: function (b, d, e, g) {
- e = e ? "important" : "";
- var l = null,
- k;
- for (k in d)
- if (d.hasOwnProperty(k)) {
- var q = null;
- null === d[k]
- ? (l || (l = a.getData(b, "origStyle")), l && l.hasOwnProperty(k) && (q = l[k]))
- : (g && (l || (l = a.getData(b, "origStyle", {})), l.hasOwnProperty(k) || (l[k] = b.style[k])), (q = d[k]));
- null !== q && b.style.setProperty(k, q, e);
- }
- },
- hexColor: function (b, d, e) {
- return "#" + (("0" + Math.round(b).toString(16)).slice(-2) + ("0" + Math.round(d).toString(16)).slice(-2) + ("0" + Math.round(e).toString(16)).slice(-2)).toUpperCase();
- },
- hexaColor: function (b, d, e, g) {
- return (
- "#" +
- (
- ("0" + Math.round(b).toString(16)).slice(-2) +
- ("0" + Math.round(d).toString(16)).slice(-2) +
- ("0" + Math.round(e).toString(16)).slice(-2) +
- ("0" + Math.round(255 * g).toString(16)).slice(-2)
- ).toUpperCase()
- );
- },
- rgbColor: function (b, d, e) {
- return "rgb(" + Math.round(b) + "," + Math.round(d) + "," + Math.round(e) + ")";
- },
- rgbaColor: function (b, d, e, g) {
- return "rgba(" + Math.round(b) + "," + Math.round(d) + "," + Math.round(e) + "," + Math.round(100 * (void 0 === g || null === g ? 1 : g)) / 100 + ")";
- },
- setBorderRadius: function (b, d) {
- a.setStyle(b, { "border-radius": d || "0" });
- },
- getElementPos: function (b, d) {
- var e = p.frDOMRects;
- "undefined" === typeof e && (e = { toggle: !1, cur: 1, prev: 1 });
- e = e.toggle ? e.cur : 1;
- var g = b.getBoundingClientRect();
- b = g.left * e;
- g = g.top * e;
- d || ((d = a.getViewPos()), (b += d[0] * e), (g += d[1] * e));
- return [b, g];
- },
- getElementSize: function (b) {
- return [b.offsetWidth, b.offsetHeight];
- },
- getAbsPointerPos: function (b) {
- var d = p.frDOMRects;
- "undefined" === typeof d && (d = { toggle: !1, cur: 1, prev: 1 });
- var e = 0,
- g = 0;
- "undefined" !== typeof b.changedTouches && b.changedTouches.length
- ? ((e = b.changedTouches[0].x * d.cur), (g = b.changedTouches[0].y * d.cur))
- : "number" === typeof b.x && ((e = b.x * d.cur), (g = b.y * d.cur));
- return { x: e, y: g };
- },
- getRelPointerPos: function (b) {
- var d = p.frDOMRects;
- "undefined" === typeof d && (d = { toggle: !1, cur: 1, prev: 1 });
- var e = (b.target || b.srcElement).getBoundingClientRect(),
- g = d.toggle ? d.cur : 1,
- l = 0,
- k = 0;
- "undefined" !== typeof b.changedTouches && b.changedTouches.length
- ? ((l = b.changedTouches[0].x * d.cur), (k = b.changedTouches[0].y * d.cur))
- : "number" === typeof b.x && ((l = b.x * d.cur), (k = b.y * d.cur));
- return { x: l - e.left * g, y: k - e.top * g };
- },
- getViewPos: function () {
- var b = p.document.documentElement;
- return [(p.pageXOffset || b.scrollLeft) - (b.clientLeft || 0), (p.pageYOffset || b.scrollTop) - (b.clientTop || 0)];
- },
- getViewSize: function () {
- var b = p.document.documentElement;
- return [p.innerWidth || b.clientWidth, p.innerHeight || b.clientHeight];
- },
- RGB_HSV: function (b, d, e) {
- b /= 255;
- d /= 255;
- e /= 255;
- var g = Math.min(Math.min(b, d), e),
- l = Math.max(Math.max(b, d), e),
- k = l - g;
- if (0 === k) return [null, 0, 100 * l];
- b = b === g ? 3 + (e - d) / k : d === g ? 5 + (b - e) / k : 1 + (d - b) / k;
- return [60 * (6 === b ? 0 : b), (k / l) * 100, 100 * l];
- },
- HSV_RGB: function (b, d, e) {
- e = (e / 100) * 255;
- if (null === b) return [e, e, e];
- b /= 60;
- d /= 100;
- var g = Math.floor(b),
- l = e * (1 - d);
- b = e * (1 - d * (g % 2 ? b - g : 1 - (b - g)));
- switch (g) {
- case 6:
- case 0:
- return [e, b, l];
- case 1:
- return [b, e, l];
- case 2:
- return [l, e, b];
- case 3:
- return [l, b, e];
- case 4:
- return [b, l, e];
- case 5:
- return [e, l, b];
- }
- },
- parseColorString: function (b) {
- var d = { rgba: null, format: null },
- e;
- if ((e = b.match(/^\W*([0-9A-F]{3,8})\W*$|^currentcolor$/i))) {
- if ("currentcolor" === e[0].toLowerCase()) return (d.format = "hexa"), (d.rgba = [255, 255, 255, 255]), d;
- if (8 === e[1].length)
- (d.format = "hexa"), (d.rgba = [parseInt(e[1].slice(0, 2), 16), parseInt(e[1].slice(2, 4), 16), parseInt(e[1].slice(4, 6), 16), parseInt(e[1].slice(6, 8), 16) / 255]);
- else if (6 === e[1].length) (d.format = "hex"), (d.rgba = [parseInt(e[1].slice(0, 2), 16), parseInt(e[1].slice(2, 4), 16), parseInt(e[1].slice(4, 6), 16), 1]);
- else if (3 === e[1].length)
- (d.format = "hex"), (d.rgba = [parseInt(e[1].charAt(0) + e[1].charAt(0), 16), parseInt(e[1].charAt(1) + e[1].charAt(1), 16), parseInt(e[1].charAt(2) + e[1].charAt(2), 16), 1]);
- else return !1;
- return d;
- }
- if ((e = b.match(/^\W*rgba?\(([^)]*)\)\W*$/i))) {
- b = e[1].split(",");
- e = /^\s*(\d+|\d*\.\d+|\d+\.\d*)\s*$/;
- var g, l, k, q;
- if (3 <= b.length && (g = b[0].match(e)) && (l = b[1].match(e)) && (k = b[2].match(e)))
- return (
- (d.format = "rgb"),
- (d.rgba = [parseFloat(g[1]) || 0, parseFloat(l[1]) || 0, parseFloat(k[1]) || 0, 1]),
- 4 <= b.length && (q = b[3].match(e)) && ((d.format = "rgba"), (d.rgba[3] = parseFloat(q[1]) || 0)),
- d
- );
- }
- return !1;
- },
- isAlphaFormat: function (b) {
- switch (b.toLowerCase()) {
- case "hexa":
- case "rgba":
- return !0;
- }
- return !1;
- },
- scaleCanvasForHighDPR: function (b) {
- var d = p.devicePixelRatio || 1;
- b.width *= d;
- b.height *= d;
- b.getContext("2d").scale(d, d);
- },
- genColorPreviewCanvas: function (b, d, e, g) {
- var l = Math.round(a.pub.previewSeparator.length),
- k = a.pub.chessboardSize,
- q = a.pub.chessboardColor1,
- r = a.pub.chessboardColor2;
- e = e ? e : 2 * k;
- var t = 2 * k,
- u = a.createEl("canvas"),
- x = u.getContext("2d");
- u.width = e;
- u.height = t;
- g && a.scaleCanvasForHighDPR(u);
- x.fillStyle = q;
- x.fillRect(0, 0, e, t);
- x.fillStyle = r;
- for (g = 0; g < e; g += 2 * k) x.fillRect(g, 0, k, k), x.fillRect(g + k, k, k, k);
- b && ((x.fillStyle = b), x.fillRect(0, 0, e, t));
- b = null;
- switch (d) {
- case "left":
- b = 0;
- x.clearRect(0, 0, l / 2, t);
- break;
- case "right":
- (b = e - l), x.clearRect(e - l / 2, 0, l / 2, t);
- }
- if (null !== b)
- for (x.lineWidth = 1, d = 0; d < a.pub.previewSeparator.length; d += 1)
- x.beginPath(), (x.strokeStyle = a.pub.previewSeparator[d]), x.moveTo(0.5 + b + d, 0), x.lineTo(0.5 + b + d, t), x.stroke();
- return { canvas: u, width: e, height: t };
- },
- redrawPosition: function () {
- if (a.picker && a.picker.owner) {
- var b = a.picker.owner;
- if (b.fixed) {
- var d = a.getElementPos(b.targetElement, !0);
- var e = [0, 0];
- } else (d = a.getElementPos(b.targetElement)), (e = a.getViewPos());
- var g = a.getElementSize(b.targetElement),
- l = a.getViewSize(),
- k = a.getPickerDims(b),
- q = [k.borderW, k.borderH];
- switch (b.position.toLowerCase()) {
- case "left":
- k = 1;
- var r = 0;
- var t = -1;
- break;
- case "right":
- k = 1;
- r = 0;
- t = 1;
- break;
- case "top":
- k = 0;
- r = 1;
- t = -1;
- break;
- default:
- (k = 0), (t = r = 1);
- }
- var u = (g[r] + q[r]) / 2;
- d = b.smartPosition
- ? [
- -e[k] + d[k] + q[k] > l[k] ? (-e[k] + d[k] + g[k] / 2 > l[k] / 2 && 0 <= d[k] + g[k] - q[k] ? d[k] + g[k] - q[k] : d[k]) : d[k],
- -e[r] + d[r] + g[r] + q[r] - u + u * t > l[r]
- ? -e[r] + d[r] + g[r] / 2 > l[r] / 2 && 0 <= d[r] + g[r] - u - u * t
- ? d[r] + g[r] - u - u * t - 4
- : d[r] + g[r] - u + u * t + 4
- : 0 <= d[r] + g[r] - u + u * t
- ? d[r] + g[r] - u + u * t - 4
- : d[r] + g[r] - u - u * t + 4,
- ]
- : [d[k], d[r] + g[r] - u + u * t - 4];
- a._drawPosition(d[k], d[r], b.fixed ? "fixed" : "absolute");
- }
- },
- _drawPosition: function (b, d, e) {
- a.picker.wrap.style.left = b + "px";
- a.picker.wrap.style.top = d + "px";
- a.picker.wrap.style.position = e;
- },
- getPickerDims: function (b) {
- var d = 2 * b.controlBorderWidth + b.width,
- e = 2 * b.controlBorderWidth + b.height,
- g = 2 * b.controlBorderWidth + 2 * a.getControlPadding(b) + b.sliderSize;
- a.getSliderChannel(b) && (d += g);
- b.hasAlphaChannel() && (d += g);
- b.closeButton && (e += 2 * b.controlBorderWidth + b.padding + b.buttonHeight);
- g = d + 2 * b.padding;
- var l = e + 2 * b.padding;
- return {
- contentW: d,
- contentH: e,
- paddedW: g,
- paddedH: l,
- borderW: g + 2 * b.borderWidth,
- borderH: l + 2 * b.borderWidth,
- };
- },
- getControlPadding: function (b) {
- return Math.max(b.padding / 2, 2 * b.pointerBorderWidth + b.pointerThickness - b.controlBorderWidth);
- },
- getPadYChannel: function (b) {
- switch (b.mode.charAt(1).toLowerCase()) {
- case "v":
- return "v";
- }
- return "s";
- },
- getSliderChannel: function (b) {
- if (2 < b.mode.length)
- switch (b.mode.charAt(2).toLowerCase()) {
- case "s":
- return "s";
- case "v":
- return "v";
- }
- return null;
- },
- triggerCallback: function (b, d) {
- if (b[d]) {
- var e = null;
- if ("string" === typeof b[d])
- try {
- e = new Function(b[d]);
- } catch (g) {
- console.error(g);
- }
- else e = b[d];
- e && e.call(b);
- }
- },
- triggerGlobal: function (b) {
- for (var d = a.getInstances(), e = 0; e < d.length; e += 1) d[e].trigger(b);
- },
- _pointerMoveEvent: { mouse: "mousemove", touch: "touchmove" },
- _pointerEndEvent: { mouse: "mouseup", touch: "touchend" },
- _pointerOrigin: null,
- onDocumentKeyUp: function (b) {
- -1 !== ["Tab", "Escape"].indexOf(a.eventKey(b)) && a.picker && a.picker.owner && a.picker.owner.tryHide();
- },
- onWindowResize: function (b) {
- a.redrawPosition();
- },
- onWindowScroll: function (b) {
- a.redrawPosition();
- },
- onParentScroll: function (b) {
- a.picker && a.picker.owner && a.picker.owner.tryHide();
- },
- onConfigIfMouseDown: function (b) {
- b = b.composedPath()[0] || b.target || b.srcElement;
- b.frcp && b.frcp instanceof a.pub
- ? b.frcp.showOnClick && !b.disabled && (a.picker && a.picker.owner ? a.picker.owner.tryHide() : b.frcp.show())
- : a.picker && a.picker.owner && a.picker.owner.tryHide();
- },
- onDocumentMouseDown: function (b) {
- if (!b.target || !b.target.nodeName || "fr-configure" !== b.target.nodeName.toLowerCase()) {
- var d = b.target || b.srcElement;
- if (a.getData(d, "gui")) {
- if (a.getData(d, "control")) a.onControlPointerStart(b, d, a.getData(d, "control"), "mouse");
- } else a.picker && a.picker.owner && a.picker.owner.tryHide();
- }
- },
- onPickerTouchStart: function (b) {
- var d = b.target || b.srcElement;
- if (a.getData(d, "control")) a.onControlPointerStart(b, d, a.getData(d, "control"), "touch");
- },
- onControlPointerStart: function (b, d, e, g) {
- var l = a.getData(d, "instance");
- a.preventDefault(b);
- var k = function (t, u) {
- a.attachGroupEvent("drag", t, a._pointerMoveEvent[g], a.onDocumentPointerMove(b, d, e, g, u));
- a.attachGroupEvent("drag", t, a._pointerEndEvent[g], a.onDocumentPointerEnd(b, d, e, g));
- };
- k(p.document, [0, 0]);
- if (p.parent && p.frameElement) {
- var q = p.frDOMRects;
- "undefined" === typeof q && (q = { toggle: !1, cur: 1, prev: 1 });
- q = q.toggle ? q.cur : 1;
- var r = p.frameElement.getBoundingClientRect();
- k(p.parent.window.document, [-r.left * q, -r.top * q]);
- }
- k = a.getAbsPointerPos(b);
- q = a.getRelPointerPos(b);
- a._pointerOrigin = { x: k.x - q.x, y: k.y - q.y };
- switch (e) {
- case "pad":
- "v" === a.getSliderChannel(l) && 0 === l.channels.v && l.fromHSVA(null, null, 100, null);
- a.setPad(l, b, 0, 0);
- break;
- case "sld":
- a.setSld(l, b, 0);
- break;
- case "asld":
- a.setASld(l, b, 0);
- }
- l.trigger("input");
- },
- onDocumentPointerMove: function (b, d, e, g, l) {
- return function (k) {
- var q = a.getData(d, "instance");
- switch (e) {
- case "pad":
- a.setPad(q, k, l[0], l[1]);
- break;
- case "sld":
- a.setSld(q, k, l[1]);
- break;
- case "asld":
- a.setASld(q, k, l[1]);
- }
- q.trigger("input");
- };
- },
- onDocumentPointerEnd: function (b, d, e, g) {
- return function (l) {
- l = a.getData(d, "instance");
- a.detachGroupEvents("drag");
- l.trigger("input");
- l.trigger("change");
- };
- },
- setPad: function (b, d, e, g) {
- d = a.getAbsPointerPos(d);
- e = (360 / (b.width - 1)) * (e + d.x - a._pointerOrigin.x - b.padding - b.controlBorderWidth);
- g = 100 - (100 / (b.height - 1)) * (g + d.y - a._pointerOrigin.y - b.padding - b.controlBorderWidth);
- switch (a.getPadYChannel(b)) {
- case "s":
- b.fromHSVA(e, g, null, null);
- break;
- case "v":
- b.fromHSVA(e, null, g, null);
- }
- },
- setSld: function (b, d, e) {
- d = a.getAbsPointerPos(d);
- e = 100 - (100 / (b.height - 1)) * (e + d.y - a._pointerOrigin.y - b.padding - b.controlBorderWidth);
- switch (a.getSliderChannel(b)) {
- case "s":
- b.fromHSVA(null, e, null, null);
- break;
- case "v":
- b.fromHSVA(null, null, e, null);
- }
- },
- setASld: function (b, d, e) {
- d = a.getAbsPointerPos(d);
- e = 1 - (1 / (b.height - 1)) * (e + d.y - a._pointerOrigin.y - b.padding - b.controlBorderWidth);
- 1 > e && ((d = b.getFormat()), "any" !== b.format.toLowerCase() || a.isAlphaFormat(d) || b._setFormat("hex" === d ? "hexa" : "rgba"));
- b.fromHSVA(null, null, null, e);
- },
- createPadCanvas: function () {
- var b = { elm: null, draw: null },
- d = a.createEl("canvas"),
- e = d.getContext("2d");
- b.elm = d;
- b.draw = function (g, l, k) {
- d.width = g;
- d.height = l;
- e.clearRect(0, 0, d.width, d.height);
- g = e.createLinearGradient(0, 0, d.width, 0);
- g.addColorStop(0, "#F00");
- g.addColorStop(1 / 6, "#FF0");
- g.addColorStop(2 / 6, "#0F0");
- g.addColorStop(0.5, "#0FF");
- g.addColorStop(4 / 6, "#00F");
- g.addColorStop(5 / 6, "#F0F");
- g.addColorStop(1, "#F00");
- e.fillStyle = g;
- e.fillRect(0, 0, d.width, d.height);
- g = e.createLinearGradient(0, 0, 0, d.height);
- switch (k.toLowerCase()) {
- case "s":
- g.addColorStop(0, "rgba(255,255,255,0)");
- g.addColorStop(1, "rgba(255,255,255,1)");
- break;
- case "v":
- g.addColorStop(0, "rgba(0,0,0,0)"), g.addColorStop(1, "rgba(0,0,0,1)");
- }
- e.fillStyle = g;
- e.fillRect(0, 0, d.width, d.height);
- };
- return b;
- },
- createSliderGradient: function () {
- var b = { elm: null, draw: null },
- d = a.createEl("canvas"),
- e = d.getContext("2d");
- b.elm = d;
- b.draw = function (g, l, k, q) {
- d.width = g;
- d.height = l;
- e.clearRect(0, 0, d.width, d.height);
- g = e.createLinearGradient(0, 0, 0, d.height);
- g.addColorStop(0, k);
- g.addColorStop(1, q);
- e.fillStyle = g;
- e.fillRect(0, 0, d.width, d.height);
- };
- return b;
- },
- createASliderGradient: function () {
- var b = { elm: null, draw: null },
- d = a.createEl("canvas"),
- e = d.getContext("2d");
- b.elm = d;
- b.draw = function (g, l, k) {
- d.width = g;
- d.height = l;
- e.clearRect(0, 0, d.width, d.height);
- g = d.width / 2;
- l = a.pub.chessboardColor2;
- e.fillStyle = a.pub.chessboardColor1;
- e.fillRect(0, 0, d.width, d.height);
- if (0 < g) for (var q = 0; q < d.height; q += 2 * g) (e.fillStyle = l), e.fillRect(0, q, g, g), e.fillRect(g, q + g, g, g);
- g = e.createLinearGradient(0, 0, 0, d.height);
- g.addColorStop(0, k);
- g.addColorStop(1, "rgba(0,0,0,0)");
- e.fillStyle = g;
- e.fillRect(0, 0, d.width, d.height);
- };
- return b;
- },
- flags: { leaveValue: 1, leaveAlpha: 2, leavePreview: 4 },
- enumOpts: {
- format: "auto any hex hexa rgb rgba".split(" "),
- previewPosition: ["left", "right"],
- mode: ["hsv", "hvs", "hs", "hv"],
- position: ["left", "right", "top", "bottom"],
- alphaChannel: ["auto", !0, !1],
- },
- deprecatedOpts: {
- styleElement: "previewElement",
- onFineChange: "onInput",
- overwriteImportant: "forceStyle",
- closable: "closeButton",
- insetWidth: "controlBorderWidth",
- insetColor: "controlBorderColor",
- refine: null,
- },
- pub: function (b, d, e) {
- function g(c, h) {
- if ("string" !== typeof c) throw Error("Invalid value for option name: " + c);
- if (a.enumOpts.hasOwnProperty(c) && ("string" === typeof h && (h = h.toLowerCase()), -1 === a.enumOpts[c].indexOf(h))) throw Error("Option '" + c + "' has invalid value: " + h);
- if (a.deprecatedOpts.hasOwnProperty(c)) {
- var m = a.deprecatedOpts[c];
- if (m) c = m;
- else throw Error("Option '" + c + "' is DEPRECATED");
- }
- m = "set__" + c;
- if ("function" === typeof f[m]) return f[m](h), !0;
- if (c in f) return (f[c] = h), !0;
- throw Error("Unrecognized configuration option: " + c);
- }
- function l() {
- f._processParentElementsInDOM();
- a.picker ||
- ((a.picker = {
- owner: null,
- wrap: a.createEl("fr-colorpicker"),
- box: a.createEl("div"),
- boxB: a.createEl("div"),
- pad: a.createEl("div"),
- padB: a.createEl("div"),
- padM: a.createEl("div"),
- padCanvas: a.createPadCanvas(),
- cross: a.createEl("div"),
- crossBY: a.createEl("div"),
- crossBX: a.createEl("div"),
- crossLY: a.createEl("div"),
- crossLX: a.createEl("div"),
- sld: a.createEl("div"),
- sldB: a.createEl("div"),
- sldM: a.createEl("div"),
- sldGrad: a.createSliderGradient(),
- sldPtrS: a.createEl("div"),
- sldPtrIB: a.createEl("div"),
- sldPtrMB: a.createEl("div"),
- sldPtrOB: a.createEl("div"),
- asld: a.createEl("div"),
- asldB: a.createEl("div"),
- asldM: a.createEl("div"),
- asldGrad: a.createASliderGradient(),
- asldPtrS: a.createEl("div"),
- asldPtrIB: a.createEl("div"),
- asldPtrMB: a.createEl("div"),
- asldPtrOB: a.createEl("div"),
- }),
- a.picker.pad.appendChild(a.picker.padCanvas.elm),
- a.picker.padB.appendChild(a.picker.pad),
- a.picker.cross.appendChild(a.picker.crossBY),
- a.picker.cross.appendChild(a.picker.crossBX),
- a.picker.cross.appendChild(a.picker.crossLY),
- a.picker.cross.appendChild(a.picker.crossLX),
- a.picker.padB.appendChild(a.picker.cross),
- a.picker.box.appendChild(a.picker.padB),
- a.picker.box.appendChild(a.picker.padM),
- a.picker.sld.appendChild(a.picker.sldGrad.elm),
- a.picker.sldB.appendChild(a.picker.sld),
- a.picker.sldB.appendChild(a.picker.sldPtrOB),
- a.picker.sldPtrOB.appendChild(a.picker.sldPtrMB),
- a.picker.sldPtrMB.appendChild(a.picker.sldPtrIB),
- a.picker.sldPtrIB.appendChild(a.picker.sldPtrS),
- a.picker.box.appendChild(a.picker.sldB),
- a.picker.box.appendChild(a.picker.sldM),
- a.picker.asld.appendChild(a.picker.asldGrad.elm),
- a.picker.asldB.appendChild(a.picker.asld),
- a.picker.asldB.appendChild(a.picker.asldPtrOB),
- a.picker.asldPtrOB.appendChild(a.picker.asldPtrMB),
- a.picker.asldPtrMB.appendChild(a.picker.asldPtrIB),
- a.picker.asldPtrIB.appendChild(a.picker.asldPtrS),
- a.picker.box.appendChild(a.picker.asldB),
- a.picker.box.appendChild(a.picker.asldM),
- a.picker.boxB.appendChild(a.picker.box),
- a.picker.wrap.appendChild(a.picker.boxB),
- a.picker.wrap.addEventListener("touchstart", a.onPickerTouchStart, a.isPassiveEventSupported ? { passive: !1 } : !1));
- var c = a.picker,
- h = !!a.getSliderChannel(f),
- m = f.hasAlphaChannel(),
- n = a.getPickerDims(f),
- v = 2 * f.pointerBorderWidth + f.pointerThickness + 2 * f.crossSize,
- w = a.getControlPadding(f),
- A = Math.min(f.borderRadius, Math.round(f.padding * Math.PI));
- c.wrap.className = I;
- c.wrap.style.clear = "both";
- c.wrap.style.display = "block";
- c.wrap.style.visibility = "visible";
- c.wrap.style.opacity = "1";
- c.wrap.style.width = n.borderW + "px";
- c.wrap.style.height = n.borderH + "px";
- c.wrap.style.zIndex = f.zIndex;
- c.box.className = J;
- c.box.style.width = n.paddedW + "px";
- c.box.style.height = n.paddedH + "px";
- c.box.style.position = "relative";
- c.boxB.className = K;
- c.boxB.style.position = "relative";
- c.boxB.style.setProperty("border", f.borderWidth + "px solid " + f.borderColor, "important");
- c.boxB.style.setProperty("background", f.backgroundColor, "important");
- a.setBorderRadius(c.boxB, A + "px");
- c.padM.style.background = "rgba(255,0,0,.2)";
- c.sldM.style.background = "rgba(0,255,0,.2)";
- c.asldM.style.background = "rgba(0,0,255,.2)";
- c.padM.style.opacity = c.sldM.style.opacity = c.asldM.style.opacity = "0";
- c.pad.style.position = "relative";
- c.pad.style.width = f.width + "px";
- c.pad.style.height = f.height + "px";
- c.padCanvas.draw(f.width, f.height, a.getPadYChannel(f));
- c.padB.style.position = "absolute";
- c.padB.style.left = f.padding + "px";
- c.padB.style.top = f.padding + "px";
- c.padB.style.border = f.controlBorderWidth + "px solid";
- c.padB.style.setProperty("border-color", f.controlBorderColor, "important");
- c.padM.style.position = "absolute";
- c.padM.style.left = "0px";
- c.padM.style.top = "0px";
- c.padM.style.width = f.padding + 2 * f.controlBorderWidth + f.width + w + "px";
- c.padM.style.height = 2 * f.controlBorderWidth + 2 * f.padding + f.height + "px";
- c.padM.style.cursor = "crosshair";
- a.setData(c.padM, { instance: f, control: "pad" });
- c.cross.style.position = "absolute";
- c.cross.style.left = c.cross.style.top = "0";
- c.cross.style.width = c.cross.style.height = v + "px";
- c.crossBY.style.position = c.crossBX.style.position = "absolute";
- c.crossBY.style.setProperty("background", f.pointerBorderColor, "important");
- c.crossBX.style.setProperty("background", f.pointerBorderColor, "important");
- c.crossBY.style.width = c.crossBX.style.height = 2 * f.pointerBorderWidth + f.pointerThickness + "px";
- c.crossBY.style.height = c.crossBX.style.width = v + "px";
- c.crossBY.style.left = c.crossBX.style.top = Math.floor(v / 2) - Math.floor(f.pointerThickness / 2) - f.pointerBorderWidth + "px";
- c.crossBY.style.top = c.crossBX.style.left = "0";
- c.crossLY.style.position = c.crossLX.style.position = "absolute";
- c.crossLY.style.setProperty("background", f.pointerColor, "important");
- c.crossLX.style.setProperty("background", f.pointerColor, "important");
- c.crossLY.style.height = c.crossLX.style.width = v - 2 * f.pointerBorderWidth + "px";
- c.crossLY.style.width = c.crossLX.style.height = f.pointerThickness + "px";
- c.crossLY.style.left = c.crossLX.style.top = Math.floor(v / 2) - Math.floor(f.pointerThickness / 2) + "px";
- c.crossLY.style.top = c.crossLX.style.left = f.pointerBorderWidth + "px";
- c.sld.style.overflow = "hidden";
- c.sld.style.width = f.sliderSize + "px";
- c.sld.style.height = f.height + "px";
- c.sldGrad.draw(f.sliderSize, f.height, "#000", "#000");
- c.sldB.style.display = h ? "block" : "none";
- c.sldB.style.position = "absolute";
- c.sldB.style.left = f.padding + f.width + 2 * f.controlBorderWidth + 2 * w + "px";
- c.sldB.style.top = f.padding + "px";
- c.sldB.style.setProperty("border", f.controlBorderWidth + "px solid " + f.controlBorderColor, "important");
- c.sldM.style.display = h ? "block" : "none";
- c.sldM.style.position = "absolute";
- c.sldM.style.left = f.padding + f.width + 2 * f.controlBorderWidth + w + "px";
- c.sldM.style.top = "0px";
- c.sldM.style.width = f.sliderSize + 2 * w + 2 * f.controlBorderWidth + (m ? 0 : Math.max(0, f.padding - w)) + "px";
- c.sldM.style.height = 2 * f.controlBorderWidth + 2 * f.padding + f.height + "px";
- c.sldM.style.cursor = "default";
- a.setData(c.sldM, { instance: f, control: "sld" });
- c.sldPtrIB.style.setProperty("border", f.pointerBorderWidth + "px solid " + f.pointerBorderColor, "important");
- c.sldPtrOB.style.setProperty("border", f.pointerBorderWidth + "px solid " + f.pointerBorderColor, "important");
- c.sldPtrOB.style.position = "absolute";
- c.sldPtrOB.style.left = -(2 * f.pointerBorderWidth + f.pointerThickness) + "px";
- c.sldPtrOB.style.top = "0";
- c.sldPtrMB.style.setProperty("border", f.pointerThickness + "px solid " + f.pointerColor, "important");
- c.sldPtrS.style.width = f.sliderSize + "px";
- c.sldPtrS.style.height = a.pub.sliderInnerSpace + "px";
- c.asld.style.overflow = "hidden";
- c.asld.style.width = f.sliderSize + "px";
- c.asld.style.height = f.height + "px";
- c.asldGrad.draw(f.sliderSize, f.height, "#000");
- c.asldB.style.display = m ? "block" : "none";
- c.asldB.style.position = "absolute";
- c.asldB.style.left = f.padding + f.width + 2 * f.controlBorderWidth + w + (h ? f.sliderSize + 3 * w + 2 * f.controlBorderWidth : 0) + "px";
- c.asldB.style.top = f.padding + "px";
- c.asldB.style.border = f.controlBorderWidth + "px solid";
- c.asldB.style.setProperty("border-color", f.controlBorderColor, "important");
- c.asldM.style.display = m ? "block" : "none";
- c.asldM.style.position = "absolute";
- c.asldM.style.left = f.padding + f.width + 2 * f.controlBorderWidth + w + (h ? f.sliderSize + 2 * w + 2 * f.controlBorderWidth : 0) + "px";
- c.asldM.style.top = "0px";
- c.asldM.style.width = f.sliderSize + 2 * w + 2 * f.controlBorderWidth + Math.max(0, f.padding - w) + "px";
- c.asldM.style.height = 2 * f.controlBorderWidth + 2 * f.padding + f.height + "px";
- c.asldM.style.cursor = "default";
- a.setData(c.asldM, { instance: f, control: "asld" });
- c.asldPtrIB.style.setProperty("border", f.pointerBorderWidth + "px solid " + f.pointerBorderColor, "important");
- c.asldPtrOB.style.setProperty("border", f.pointerBorderWidth + "px solid " + f.pointerBorderColor, "important");
- c.asldPtrOB.style.position = "absolute";
- c.asldPtrOB.style.left = -(2 * f.pointerBorderWidth + f.pointerThickness) + "px";
- c.asldPtrOB.style.top = "0";
- c.asldPtrMB.style.setProperty("border", f.pointerThickness + "px solid " + f.pointerColor, "important");
- c.asldPtrS.style.width = f.sliderSize + "px";
- c.asldPtrS.style.height = a.pub.sliderInnerSpace + "px";
- k();
- q();
- r();
- a.picker.owner && a.picker.owner !== f && a.removeClass(a.picker.owner.targetElement, a.pub.activeClassName);
- a.picker.owner = f;
- f.container === p.document.documentElement ? a.redrawPosition() : a._drawPosition(f, 0, 0, "relative", !1);
- c.wrap.parentNode !== f.container &&
- (h = a.node("dialog[id^='fr-dialog-']")) &&
- (h.appendChild(c.wrap), h.hasAttribute("open") && h.close && h.close(), (h.inert = !0), h.showModal && h.showModal(), h.removeAttribute("inert"), h.focus());
- a.addClass(f.targetElement, a.pub.activeClassName);
- }
- function k() {
- var c = a.getPadYChannel(f);
- c = Math.round((1 - f.channels[c] / 100) * (f.height - 1));
- var h = -Math.floor((2 * f.pointerBorderWidth + f.pointerThickness + 2 * f.crossSize) / 2);
- a.picker.cross.style.left = Math.round((f.channels.h / 360) * (f.width - 1)) + h + "px";
- a.picker.cross.style.top = c + h + "px";
- switch (a.getSliderChannel(f)) {
- case "s":
- h = a.HSV_RGB(f.channels.h, 100, f.channels.v);
- c = a.HSV_RGB(f.channels.h, 0, f.channels.v);
- h = "rgb(" + Math.round(h[0]) + "," + Math.round(h[1]) + "," + Math.round(h[2]) + ")";
- a.picker.sldGrad.draw(f.sliderSize, f.height, h, "rgb(" + Math.round(c[0]) + "," + Math.round(c[1]) + "," + Math.round(c[2]) + ")");
- break;
- case "v":
- (c = a.HSV_RGB(f.channels.h, f.channels.s, 100)),
- (h = "rgb(" + Math.round(c[0]) + "," + Math.round(c[1]) + "," + Math.round(c[2]) + ")"),
- a.picker.sldGrad.draw(f.sliderSize, f.height, h, "#000");
- }
- a.picker.asldGrad.draw(f.sliderSize, f.height, f.toHEXString());
- }
- function q() {
- var c = a.getSliderChannel(f);
- c &&
- (a.picker.sldPtrOB.style.top =
- Math.round((1 - f.channels[c] / 100) * (f.height - 1)) - (2 * f.pointerBorderWidth + f.pointerThickness) - Math.floor(a.pub.sliderInnerSpace / 2) + "px");
- a.picker.asldGrad.draw(f.sliderSize, f.height, f.toHEXString());
- }
- function r() {
- a.picker.asldPtrOB.style.top = Math.round((1 - f.channels.a) * (f.height - 1)) - (2 * f.pointerBorderWidth + f.pointerThickness) - Math.floor(a.pub.sliderInnerSpace / 2) + "px";
- }
- function t() {
- return a.picker && a.picker.owner === f;
- }
- function u(c) {
- "Enter" === a.eventKey(c) && (f.valueElement && f.processValueInput(f.valueElement.value), f.tryHide());
- }
- function x(c) {
- "Enter" === a.eventKey(c) && (f.alphaElement && f.processAlphaInput(f.alphaElement.value), f.tryHide());
- }
- function L(c) {
- a.getData(c, "internal") ||
- ((c = f.valueElement.value),
- f.processValueInput(f.valueElement.value),
- a.triggerCallback(f, "onChange"),
- f.valueElement.value !== c && a.triggerInputEvent(f.valueElement, "change", !0, !0));
- }
- function M(c) {
- a.getData(c, "internal") ||
- ((c = f.alphaElement.value),
- f.processAlphaInput(f.alphaElement.value),
- a.triggerCallback(f, "onChange"),
- a.triggerInputEvent(f.valueElement, "change", !0, !0),
- f.alphaElement.value !== c && a.triggerInputEvent(f.alphaElement, "change", !0, !0));
- }
- function N(c) {
- a.getData(c, "internal") || (f.valueElement && f.fromString(f.valueElement.value, a.flags.leaveValue), a.triggerCallback(f, "onInput"));
- }
- function O(c) {
- a.getData(c, "internal") ||
- (f.alphaElement && f.fromHSVA(null, null, null, parseFloat(f.alphaElement.value), a.flags.leaveAlpha),
- a.triggerCallback(f, "onInput"),
- a.triggerInputEvent(f.valueElement, "input", !0, !0));
- }
- D = d;
- D.addEventListener("click", a.onConfigIfMouseDown, !1);
- var f = this;
- e || (e = {});
- this.channels = { r: 255, g: 255, b: 255, h: 0, s: 0, v: 100, a: 1 };
- this.format = "auto";
- this.alpha = this.value = void 0;
- this.random = !1;
- this.previewElement = this.alphaElement = this.valueElement = this.onInput = this.onChange = void 0;
- this.previewPosition = "left";
- this.previewSize = 35;
- this.previewPadding = 8;
- this.forceStyle = this.uppercase = this.hash = this.required = !0;
- this.width = 186;
- this.height = 210;
- this.mode = "HSV";
- this.alphaChannel = "auto";
- this.position = "top";
- this.hideOnLeave = this.showOnClick = this.smartPosition = !0;
- this.sliderSize = 12;
- this.crossSize = 8;
- this.closeButton = !1;
- this.closeText = "Close";
- this.buttonColor = "rgba(0,0,0,1)";
- this.buttonHeight = 18;
- this.padding = 8;
- this.backgroundColor = "rgba(206,226,237,0.91)";
- this.borderWidth = 1;
- this.borderColor = "rgba(187,187,187,1)";
- this.borderRadius = 4;
- this.controlBorderWidth = 1;
- this.controlBorderColor = "rgba(187,187,187,0.7)";
- this.pointerColor = "rgba(76,76,76,1)";
- this.pointerBorderWidth = 1;
- this.pointerBorderColor = "rgba(255,255,255,0.6)";
- this.pointerThickness = 2;
- this.zIndex = 2147483646;
- this.container = void 0;
- this.minS = 0;
- this.maxS = 100;
- this.minV = 0;
- this.maxV = 100;
- this.minA = 0;
- this.maxA = 1;
- this.option = function () {
- if (!arguments.length) throw Error("No option specified");
- if (1 === arguments.length && "string" === typeof arguments[0]) {
- try {
- var c = arguments[0];
- if ("string" !== typeof c) throw Error("Invalid value for option name: " + c);
- if (a.deprecatedOpts.hasOwnProperty(c)) {
- var h = a.deprecatedOpts[c];
- if (h) c = h;
- else throw Error("Option '" + c + "' is DEPRECATED");
- }
- var m = "get__" + c;
- if ("function" === typeof f[m]) var n = f[m](value);
- else if (c in f) n = f[c];
- else throw Error("Unrecognized configuration option: " + c);
- return n;
- } catch (v) {
- console.error(v);
- }
- return !1;
- }
- if (2 <= arguments.length && "string" === typeof arguments[0]) {
- try {
- if (!g(arguments[0], arguments[1])) return !1;
- } catch (v) {
- return console.error(v), !1;
- }
- this.redraw();
- this.exposeColor();
- return !0;
- }
- if (1 === arguments.length && "object" === typeof arguments[0]) {
- n = arguments[0];
- c = !0;
- for (m in n)
- if (n.hasOwnProperty(m))
- try {
- g(m, n[m]) || (c = !1);
- } catch (v) {
- console.error(v), (c = !1);
- }
- this.redraw();
- this.exposeColor();
- return c;
- }
- throw Error("Invalid arguments");
- };
- this.channel = function (c, h) {
- if ("string" !== typeof c) throw Error("Invalid value for channel name: " + c);
- if (void 0 === h) return this.channels.hasOwnProperty(c.toLowerCase()) ? this.channels[c.toLowerCase()] : !1;
- switch (c.toLowerCase()) {
- case "r":
- c = this.fromRGBA(h, null, null, null);
- break;
- case "g":
- c = this.fromRGBA(null, h, null, null);
- break;
- case "b":
- c = this.fromRGBA(null, null, h, null);
- break;
- case "h":
- c = this.fromHSVA(h, null, null, null);
- break;
- case "s":
- c = this.fromHSVA(null, h, null, null);
- break;
- case "v":
- c = this.fromHSVA(null, null, h, null);
- break;
- case "a":
- c = this.fromHSVA(null, null, null, h);
- break;
- default:
- return !1;
- }
- return c ? (this.redraw(), !0) : !1;
- };
- this.trigger = function (c) {
- c = a.strList(c);
- for (var h = 0; h < c.length; h += 1) {
- var m = c[h].toLowerCase(),
- n = null;
- switch (m) {
- case "input":
- n = "onInput";
- break;
- case "change":
- n = "onChange";
- }
- n && a.triggerCallback(this, n);
- a.triggerInputEvent(this.valueElement, m, !0, !0);
- }
- };
- this.fromHSVA = function (c, h, m, n, v) {
- void 0 === c && (c = null);
- void 0 === h && (h = null);
- void 0 === m && (m = null);
- void 0 === n && (n = null);
- if (null !== c) {
- if (isNaN(c)) return !1;
- this.channels.h = Math.max(0, Math.min(360, c));
- }
- if (null !== h) {
- if (isNaN(h)) return !1;
- this.channels.s = Math.max(0, Math.min(100, this.maxS, h), this.minS);
- }
- if (null !== m) {
- if (isNaN(m)) return !1;
- this.channels.v = Math.max(0, Math.min(100, this.maxV, m), this.minV);
- }
- if (null !== n) {
- if (isNaN(n)) return !1;
- this.channels.a = this.hasAlphaChannel() ? Math.max(0, Math.min(1, this.maxA, n), this.minA) : 1;
- }
- c = a.HSV_RGB(this.channels.h, this.channels.s, this.channels.v);
- this.channels.r = c[0];
- this.channels.g = c[1];
- this.channels.b = c[2];
- this.exposeColor(v);
- return !0;
- };
- this.fromRGBA = function (c, h, m, n, v) {
- void 0 === c && (c = null);
- void 0 === h && (h = null);
- void 0 === m && (m = null);
- void 0 === n && (n = null);
- if (null !== c) {
- if (isNaN(c)) return !1;
- c = Math.max(0, Math.min(255, c));
- }
- if (null !== h) {
- if (isNaN(h)) return !1;
- h = Math.max(0, Math.min(255, h));
- }
- if (null !== m) {
- if (isNaN(m)) return !1;
- m = Math.max(0, Math.min(255, m));
- }
- if (null !== n) {
- if (isNaN(n)) return !1;
- this.channels.a = this.hasAlphaChannel() ? Math.max(0, Math.min(1, this.maxA, n), this.minA) : 1;
- }
- c = a.RGB_HSV(null === c ? this.channels.r : c, null === h ? this.channels.g : h, null === m ? this.channels.b : m);
- null !== c[0] && (this.channels.h = Math.max(0, Math.min(360, c[0])));
- 0 !== c[2] && (this.channels.s = Math.max(0, this.minS, Math.min(100, this.maxS, c[1])));
- this.channels.v = Math.max(0, this.minV, Math.min(100, this.maxV, c[2]));
- c = a.HSV_RGB(this.channels.h, this.channels.s, this.channels.v);
- this.channels.r = c[0];
- this.channels.g = c[1];
- this.channels.b = c[2];
- this.exposeColor(v);
- return !0;
- };
- this.fromHSV = function (c, h, m, n) {
- return this.fromHSVA(c, h, m, null, n);
- };
- this.fromRGB = function (c, h, m, n) {
- return this.fromRGBA(c, h, m, null, n);
- };
- this.fromString = function (c, h) {
- if (!this.required && "" === c.trim()) return this.setPreviewElementBg(null), this.setValueElementValue(""), !0;
- c = a.parseColorString(c);
- if (!c) return !1;
- "any" === this.format.toLowerCase() && (this._setFormat(c.format), a.isAlphaFormat(this.getFormat()) || (c.rgba[3] = 1));
- this.fromRGBA(c.rgba[0], c.rgba[1], c.rgba[2], c.rgba[3], h);
- return !0;
- };
- this.randomize = function (c, h, m, n, v, w, A, E) {
- void 0 === c && (c = 0);
- void 0 === h && (h = 100);
- void 0 === m && (m = 0);
- void 0 === n && (n = 100);
- void 0 === v && (v = 0);
- void 0 === w && (w = 359);
- void 0 === A && (A = 1);
- void 0 === E && (E = 1);
- this.fromHSVA(
- v + Math.floor(Math.random() * (w - v + 1)),
- m + Math.floor(Math.random() * (n - m + 1)),
- c + Math.floor(Math.random() * (h - c + 1)),
- (100 * A + Math.floor(Math.random() * (100 * (E - A) + 1))) / 100
- );
- };
- this.toString = function (c) {
- void 0 === c && (c = this.getFormat());
- switch (c.toLowerCase()) {
- case "hex":
- return this.toHEXString();
- case "hexa":
- return this.toHEXAString();
- case "rgb":
- return this.toRGBString();
- case "rgba":
- return this.toRGBAString();
- }
- return !1;
- };
- this.toHEXString = function () {
- return a.hexColor(this.channels.r, this.channels.g, this.channels.b);
- };
- this.toHEXAString = function () {
- return a.hexaColor(this.channels.r, this.channels.g, this.channels.b, this.channels.a);
- };
- this.toRGBString = function () {
- return a.rgbColor(this.channels.r, this.channels.g, this.channels.b);
- };
- this.toRGBAString = function () {
- return a.rgbaColor(this.channels.r, this.channels.g, this.channels.b, this.channels.a);
- };
- this.toGrayscale = function () {
- return 0.213 * this.channels.r + 0.715 * this.channels.g + 0.072 * this.channels.b;
- };
- this.toCanvas = function () {
- return a.genColorPreviewCanvas(this.toRGBAString()).canvas;
- };
- this.isLight = function () {
- return 127.5 < this.toGrayscale();
- };
- this.hide = function () {
- t() &&
- (a.removeClass(f.targetElement, a.pub.activeClassName),
- a.picker.wrap && a.picker.wrap.parentNode && a.picker.wrap.parentNode.removeChild(a.picker.wrap),
- delete a.picker.owner);
- };
- this.show = function () {
- l();
- };
- this.redraw = function () {
- t() && l();
- };
- this.getFormat = function () {
- return this._currentFormat;
- };
- this._setFormat = function (c) {
- this._currentFormat = c.toLowerCase();
- };
- this.hasAlphaChannel = function () {
- return "auto" === this.alphaChannel
- ? "any" === this.format.toLowerCase() || a.isAlphaFormat(this.getFormat()) || void 0 !== this.alpha || void 0 !== this.alphaElement
- : this.alphaChannel;
- };
- this.processValueInput = function (c) {
- this.fromString(c) || this.exposeColor();
- };
- this.processAlphaInput = function (c) {
- this.fromHSVA(null, null, null, parseFloat(c)) || this.exposeColor();
- };
- this.exposeColor = function (c) {
- var h = this.toString(),
- m = this.getFormat();
- a.setDataAttr(this.targetElement, "current-color", h);
- if (!(c & a.flags.leaveValue) && this.valueElement) {
- if ("hex" === m || "hexa" === m) this.uppercase || (h = h.toLowerCase()), this.hash || (h = h.replace(/^#/, ""));
- this.setValueElementValue(h);
- }
- c & a.flags.leaveAlpha || !this.alphaElement || this.setAlphaElementValue(Math.round(100 * this.channels.a) / 100);
- c & a.flags.leavePreview ||
- !this.previewElement ||
- (a.isTextInput(this.previewElement) || (a.isButton(this.previewElement) && a.isButtonEmpty(this.previewElement)), this.setPreviewElementBg(this.toRGBAString()));
- t() && (k(), q(), r());
- };
- this.setPreviewElementBg = function (c) {
- if (this.previewElement) {
- var h = null,
- m = null;
- if (a.isTextInput(this.previewElement) || (a.isButton(this.previewElement) && !a.isButtonEmpty(this.previewElement))) (h = this.previewPosition), (m = this.previewSize);
- var n = [];
- if (c) {
- n.push({ size: "auto" });
- var v = a.genColorPreviewCanvas("rgba(0,0,0,0)", h ? { left: "right", right: "left" }[h] : null, m, !0);
- n.push({ size: v.width + "px " + v.height + "px" });
- } else n.push({ size: "auto" });
- v = [];
- for (var w = 0; w < n.length; w += 1) v.push(n[w].size);
- c = {
- "--fr-input-color": c,
- "--fr-input-color-edge": m + "px",
- "--fr-input-color-edge2": m + 1 + "px",
- "--fr-input-gb-size": v.join(", "),
- };
- a.setStyle(this.previewElement, c, !this.forceStyle);
- c = { left: null, right: null };
- h && (c[h] = this.previewSize + this.previewPadding + "px");
- c = { "--fr-input-padding-left": c.left };
- a.setStyle(this.previewElement, c, !this.forceStyle, !0);
- }
- };
- this.setValueElementValue = function (c) {
- this.valueElement && ("input" === a.nodeName(this.valueElement) ? (this.valueElement.value = c) : (this.valueElement.textContent = c));
- };
- this.setAlphaElementValue = function (c) {
- this.alphaElement && ("input" === a.nodeName(this.alphaElement) ? (this.alphaElement.value = c) : (this.alphaElement.textContent = c));
- };
- this._processParentElementsInDOM = function () {
- if (!this._parentElementsProcessed) {
- this._parentElementsProcessed = !0;
- var c = this.targetElement;
- do {
- var h = a.getCompStyle(c);
- c instanceof ShadowRoot && (this.fixed = !0);
- h.position && "fixed" === h.position.toLowerCase() && (this.fixed = !0);
- c === this.targetElement || a.getData(c, "hasScrollListener") || (c.addEventListener("scroll", a.onParentScroll, !1), a.setData(c, "hasScrollListener", !0));
- } while ((c = c.parentNode) && "body" !== a.nodeName(c));
- }
- };
- this.tryHide = function () {
- this.hideOnLeave && this.hide();
- };
- if (a.pub.options)
- for (var y in a.pub.options)
- if (a.pub.options.hasOwnProperty(y))
- try {
- g(y, a.pub.options[y]);
- } catch (c) {
- console.error(c);
- }
- d = [];
- e.preset && ("string" === typeof e.preset ? (d = e.preset.split(/\s+/)) : Array.isArray(e.preset) ? (d = e.preset.slice()) : console.warn("Unrecognized value"));
- -1 === d.indexOf("default") && d.push("default");
- for (var F = d.length - 1; 0 <= F; --F) {
- var C = d[F];
- if (C && a.pub.presets.hasOwnProperty(C))
- for (y in a.pub.presets[C])
- if (a.pub.presets[C].hasOwnProperty(y))
- try {
- g(y, a.pub.presets[C][y]);
- } catch (c) {
- console.error(c);
- }
- }
- d = ["preset"];
- for (y in e)
- if (e.hasOwnProperty(y) && -1 === d.indexOf(y))
- try {
- g(y, e[y]);
- } catch (c) {
- console.error(c);
- }
- this.container = void 0 === this.container ? p.document.documentElement : a.node(this.container);
- if (!this.container) throw Error("No container element");
- this.targetElement = a.node(b);
- if (!this.targetElement) {
- if ("string" === typeof b && /^[a-zA-Z][\w:.-]*$/.test(b)) throw Error("Need CSS selector.");
- throw Error("No target element");
- }
- if (this.targetElement.frcp && this.targetElement.frcp instanceof a.pub) throw Error("Redundant Fr-Color-picker");
- this.targetElement.frcp = this;
- a.addClass(this.targetElement, a.pub.className);
- a.instances.push(this);
- a.isButton(this.targetElement) &&
- ("button" !== this.targetElement.type.toLowerCase() && (this.targetElement.type = "button"),
- a.isButtonEmpty(this.targetElement) &&
- (a.removeChildren(this.targetElement),
- this.targetElement.appendChild(p.document.createTextNode("\u00a0")),
- (b = a.getCompStyle(this.targetElement)),
- (parseFloat(b["min-width"]) || 0) < this.previewSize && a.setStyle(this.targetElement, { "min-width": this.previewSize + "px" }, this.forceStyle)));
- void 0 === this.valueElement
- ? a.isTextInput(this.targetElement) && (this.valueElement = this.targetElement)
- : null !== this.valueElement && (this.valueElement = a.node(this.valueElement));
- this.alphaElement && (this.alphaElement = a.node(this.alphaElement));
- void 0 === this.previewElement ? (this.previewElement = this.targetElement) : null !== this.previewElement && (this.previewElement = a.node(this.previewElement));
- this.valueElement &&
- a.isTextInput(this.valueElement) &&
- ((b = this.valueElement.oninput),
- (this.valueElement.oninput = null),
- this.valueElement.addEventListener("keydown", u, !1),
- this.valueElement.addEventListener("change", L, !1),
- this.valueElement.addEventListener("input", N, !1),
- b && this.valueElement.addEventListener("input", b, !1),
- this.valueElement.setAttribute("autocomplete", "off"),
- this.valueElement.setAttribute("autocorrect", "off"),
- this.valueElement.setAttribute("autocapitalize", "off"),
- this.valueElement.setAttribute("spellcheck", !1));
- this.alphaElement &&
- a.isTextInput(this.alphaElement) &&
- (this.alphaElement.addEventListener("keydown", x, !1),
- this.alphaElement.addEventListener("change", M, !1),
- this.alphaElement.addEventListener("input", O, !1),
- this.alphaElement.setAttribute("autocomplete", "off"),
- this.alphaElement.setAttribute("autocorrect", "off"),
- this.alphaElement.setAttribute("autocapitalize", "off"),
- this.alphaElement.setAttribute("spellcheck", !1));
- b = "FFFFFF";
- void 0 !== this.value ? (b = this.value) : this.valueElement && void 0 !== this.valueElement.value && (b = this.valueElement.value);
- e = void 0;
- void 0 !== this.alpha ? (e = "" + this.alpha) : this.alphaElement && void 0 !== this.alphaElement.value && (e = this.alphaElement.value);
- this._currentFormat = null;
- -1 < ["auto", "any"].indexOf(this.format.toLowerCase())
- ? (this._currentFormat = (y = a.parseColorString(b)) ? y.format : "hex")
- : (this._currentFormat = this.format.toLowerCase());
- this.processValueInput(b);
- void 0 !== e && this.processAlphaInput(e);
- this.random && this.randomize.apply(this, Array.isArray(this.random) ? this.random : []);
- },
- };
- a.pub.className = G;
- a.pub.activeClassName = H;
- a.pub.looseJSON = !0;
- a.pub.presets = {};
- a.pub.presets["default"] = {};
- a.pub.sliderInnerSpace = 3;
- a.pub.chessboardSize = 8;
- a.pub.chessboardColor1 = "#666666";
- a.pub.chessboardColor2 = "#999999";
- a.pub.previewSeparator = [];
- a.pub.init = function () {
- if (!a.initialized)
- for (
- p.document.addEventListener("mousedown", a.onDocumentMouseDown, !1),
- p.document.addEventListener("keyup", a.onDocumentKeyUp, !1),
- p.addEventListener("resize", a.onWindowResize, !1),
- p.addEventListener("scroll", a.onWindowScroll, !1),
- a.initialized = !0;
- a.readyQueue.length;
- )
- a.readyQueue.shift()();
- };
- a.pub.ready = function (b) {
- if ("function" !== typeof b) return !1;
- a.initialized ? b() : a.readyQueue.push(b);
- return !0;
- };
- a.pub.trigger = function (b) {
- var d = function () {
- a.triggerGlobal(b);
- };
- a.initialized ? d() : a.pub.ready(d);
- };
- a.pub.hide = function () {
- a.picker && a.picker.owner && a.picker.owner.hide();
- };
- a.pub.options = {};
- a.pub.lookupClass = G;
- a.pub.installByClassName = function () {
- return !1;
- };
- a.register();
- return a.pub;
- })();
- "undefined" === typeof p.FRColorPicker && (p.FRColorPicker = B);
- return B;
- });