frColorPicker

ColorPicker for Font Rendering (Customized)

当前为 2022-04-21 提交的版本,查看 最新版本

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/437214/1042523/frColorPicker.js

  1. // ==UserScript==
  2. // @name frColorPicker
  3. // @version 3.0
  4. // @author F9y4ng
  5. // @license GPL-3.0-only
  6. // @description ColorPicker for Font Rendering (Customized)
  7. // ==/UserScript==
  8.  
  9. var $frColorPicker = $frColorPicker || {};
  10. $frColorPicker.scope = {};
  11. $frColorPicker.arrayIteratorImpl = function (q) {
  12. var C = 0;
  13. return function () {
  14. return C < q.length ? { done: !1, value: q[C++] } : { done: !0 };
  15. };
  16. };
  17. $frColorPicker.arrayIterator = function (q) {
  18. return { next: $frColorPicker.arrayIteratorImpl(q) };
  19. };
  20. $frColorPicker.makeIterator = function (q) {
  21. var C = "undefined" != typeof Symbol && Symbol.iterator && q[Symbol.iterator];
  22. return C ? C.call(q) : $frColorPicker.arrayIterator(q);
  23. };
  24. (function (q, C) {
  25. "object" === typeof module && "object" === typeof module.exports
  26. ? (module.exports = q.document
  27. ? C(q)
  28. : function (D) {
  29. if (!D.document) throw Error("No window with document!");
  30. return C(D);
  31. })
  32. : C(q);
  33. })("undefined" !== typeof window ? window : this, function (q, C) {
  34. function D(a) {
  35. var b = "",
  36. d = "abcdefghijklmnopqrstuvwxyz".concat("0123456789", "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
  37. for (a = Number(a - 1) || 8; 0 < a; --a) b += d[Math.floor(Math.random() * d.length)];
  38. return "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[Math.floor(26 * Math.random())].concat(b);
  39. }
  40. var I = D(9),
  41. K = D(8),
  42. L = D(12),
  43. M = D(8),
  44. N = D(7),
  45. O = D(7),
  46. P = D(6),
  47. Q = D(6),
  48. R = D(4);
  49. C =
  50. q.self === q.top && q.trustedTypes && q.trustedTypes.createPolicy
  51. ? q.trustedTypes.createPolicy(
  52. (function (a) {
  53. a = void 0 === a ? "fr#ColorPicker" : a;
  54. var b = new Set([
  55. { host: "teams.live.com", policy: "gapi#gapi" },
  56. { host: "github.dev", policy: "standaloneColorizer" },
  57. ]);
  58. b = $frColorPicker.makeIterator(b.values());
  59. for (var d = b.next(); !d.done; d = b.next())
  60. if (((d = d.value), location.hostname.startsWith(d.host))) {
  61. a = d.policy;
  62. break;
  63. }
  64. return a;
  65. })(),
  66. {
  67. createHTML: function (a) {
  68. return a;
  69. },
  70. }
  71. )
  72. : {
  73. createHTML: function (a) {
  74. return a;
  75. },
  76. };
  77. var J = (function () {
  78. var a = {
  79. initialized: !1,
  80. instances: [],
  81. readyQueue: [],
  82. register: function () {
  83. "undefined" !== typeof q && q.document && q.document.addEventListener("DOMContentLoaded", a.pub.init, !1);
  84. },
  85. installBySelector: function (b, d) {
  86. d = d ? a.node(d) : q.document;
  87. if (!d) throw Error("Missing root node");
  88. b = d.querySelectorAll(b);
  89. d = new RegExp("(^|\\s)(" + a.pub.lookupClass + ")(\\s*(\\{[^}]*\\})|\\s|$)", "i");
  90. for (var e = 0; e < b.length; e += 1)
  91. if (!((b[e].frcolorpicker && b[e].frcolorpicker instanceof a.pub) || (void 0 !== b[e].type && "color" == b[e].type.toLowerCase() && a.isColorAttrSupported))) {
  92. var g, h;
  93. if (null !== (g = a.getDataAttr(b[e], "frcolorpicker")) || (b[e].className && (h = b[e].className.match(d)))) {
  94. var l = b[e],
  95. m = "";
  96. null !== g ? (m = g) : h && h[4] && (m = h[4]);
  97. g = null;
  98. if (m.trim())
  99. try {
  100. g = a.parseOptionsStr(m);
  101. } catch (r) {
  102. console.error(r.name, m);
  103. }
  104. try {
  105. new a.pub(l, g);
  106. } catch (r) {
  107. console.error(r);
  108. }
  109. }
  110. }
  111. },
  112. parseOptionsStr: function (b) {
  113. var d = null;
  114. try {
  115. d = JSON.parse(b);
  116. } catch (e) {
  117. if (a.pub.looseJSON)
  118. try {
  119. d = new Function("var opts = (" + b + '); return typeof opts === "object" ? opts : {};')();
  120. } catch (g) {
  121. throw Error("Could not evaluate frcolorpicker options: " + g);
  122. }
  123. else throw Error("Could not parse frcolorpicker options as JSON: " + e);
  124. }
  125. return d;
  126. },
  127. getInstances: function () {
  128. for (var b = [], d = 0; d < a.instances.length; d += 1) a.instances[d] && a.instances[d].targetElement && b.push(a.instances[d]);
  129. return b;
  130. },
  131. createEl: function (b) {
  132. b = q.document.createElement(b);
  133. a.setData(b, "gui", !0);
  134. return b;
  135. },
  136. node: function (b) {
  137. if (!b) return null;
  138. if ("string" === typeof b) {
  139. var d = null;
  140. try {
  141. d = q.document.querySelector(b);
  142. } catch (e) {
  143. return null;
  144. }
  145. d || console.warn("No element matches the selector: %s", b);
  146. return d;
  147. }
  148. return a.isNode(b) ? b : null;
  149. },
  150. isNode: function (b) {
  151. return "object" === typeof Node ? b instanceof Node : b && "object" === typeof b && "number" === typeof b.nodeType && "string" === typeof b.nodeName;
  152. },
  153. nodeName: function (b) {
  154. return b && b.nodeName ? b.nodeName.toLowerCase() : !1;
  155. },
  156. removeChildren: function (b) {
  157. for (; b.firstChild; ) b.removeChild(b.firstChild);
  158. },
  159. isTextInput: function (b) {
  160. return b && "input" === a.nodeName(b) && "text" === b.type.toLowerCase();
  161. },
  162. isButton: function (b) {
  163. if (!b) return !1;
  164. var d = a.nodeName(b);
  165. return "button" === d || ("input" === d && -1 < ["button", "submit", "reset"].indexOf(b.type.toLowerCase()));
  166. },
  167. isButtonEmpty: function (b) {
  168. switch (a.nodeName(b)) {
  169. case "input":
  170. return !b.value || "" === b.value.trim();
  171. case "button":
  172. return "" === b.textContent.trim();
  173. }
  174. return null;
  175. },
  176. isPassiveEventSupported: (function () {
  177. var b = !1;
  178. try {
  179. var d = Object.defineProperty({}, "passive", {
  180. get: function () {
  181. b = !0;
  182. },
  183. });
  184. q.addEventListener("testPassive", null, d);
  185. q.removeEventListener("testPassive", null, d);
  186. } catch (e) {}
  187. return b;
  188. })(),
  189. isColorAttrSupported: (function () {
  190. var b = q.document.createElement("input");
  191. return b.setAttribute && (b.setAttribute("type", "color"), b.type && "color" == b.type.toLowerCase()) ? !0 : !1;
  192. })(),
  193. dataProp: "_data_frcolorpicker",
  194. setData: function () {
  195. var b = arguments[0];
  196. if (3 === arguments.length) {
  197. b = b.hasOwnProperty(a.dataProp) ? b[a.dataProp] : (b[a.dataProp] = {});
  198. var d = arguments[1];
  199. b[d] = arguments[2];
  200. return !0;
  201. }
  202. if (2 === arguments.length && "object" === typeof arguments[1]) {
  203. b = b.hasOwnProperty(a.dataProp) ? b[a.dataProp] : (b[a.dataProp] = {});
  204. var e = arguments[1];
  205. for (d in e) e.hasOwnProperty(d) && (b[d] = e[d]);
  206. return !0;
  207. }
  208. throw Error("Invalid arguments");
  209. },
  210. removeData: function () {
  211. var b = arguments[0];
  212. if (!b.hasOwnProperty(a.dataProp)) return !0;
  213. for (var d = 1; d < arguments.length; d += 1) delete b[a.dataProp][arguments[d]];
  214. return !0;
  215. },
  216. getData: function (b, d, e) {
  217. if (!b.hasOwnProperty(a.dataProp))
  218. if (void 0 !== e) b[a.dataProp] = {};
  219. else return;
  220. b = b[a.dataProp];
  221. b.hasOwnProperty(d) || void 0 === e || (b[d] = e);
  222. return b[d];
  223. },
  224. getDataAttr: function (b, d) {
  225. return b.getAttribute("data-" + d);
  226. },
  227. setDataAttr: function (b, d, e) {
  228. b.setAttribute("data-" + d, e);
  229. },
  230. _attachedGroupEvents: {},
  231. attachGroupEvent: function (b, d, e, g) {
  232. a._attachedGroupEvents.hasOwnProperty(b) || (a._attachedGroupEvents[b] = []);
  233. a._attachedGroupEvents[b].push([d, e, g]);
  234. d.addEventListener(e, g, !1);
  235. },
  236. detachGroupEvents: function (b) {
  237. if (a._attachedGroupEvents.hasOwnProperty(b)) {
  238. for (var d = 0; d < a._attachedGroupEvents[b].length; d += 1) {
  239. var e = a._attachedGroupEvents[b][d];
  240. e[0].removeEventListener(e[1], e[2], !1);
  241. }
  242. delete a._attachedGroupEvents[b];
  243. }
  244. },
  245. preventDefault: function (b) {
  246. b.preventDefault && b.preventDefault();
  247. b.returnValue = !1;
  248. },
  249. triggerEvent: function (b, d, e, g) {
  250. if (b) {
  251. if ("function" === typeof Event) var h = new Event(d, { bubbles: e, cancelable: g });
  252. else (h = q.document.createEvent("Event")), h.initEvent(d, e, g);
  253. if (!h) return !1;
  254. a.setData(h, "internal", !0);
  255. b.dispatchEvent(h);
  256. return !0;
  257. }
  258. },
  259. triggerInputEvent: function (b, d, e, g) {
  260. b && a.isTextInput(b) && a.triggerEvent(b, d, e, g);
  261. },
  262. eventKey: function (b) {
  263. var d = { 9: "Tab", 13: "Enter", 27: "Escape" };
  264. return "string" === typeof b.code ? b.code : void 0 !== b.keyCode && d.hasOwnProperty(b.keyCode) ? d[b.keyCode] : null;
  265. },
  266. strList: function (b) {
  267. return b ? b.replace(/^\s+|\s+$/g, "").split(/\s+/) : [];
  268. },
  269. hasClass: function (b, d) {
  270. return d ? (void 0 !== b.classList ? b.classList.contains(d) : -1 != (" " + b.className.replace(/\s+/g, " ") + " ").indexOf(" " + d + " ")) : !1;
  271. },
  272. addClass: function (b, d) {
  273. d = a.strList(d);
  274. if (void 0 !== b.classList) for (var e = 0; e < d.length; e += 1) b.classList.add(d[e]);
  275. else for (e = 0; e < d.length; e += 1) a.hasClass(b, d[e]) || (b.className += (b.className ? " " : "") + d[e]);
  276. },
  277. removeClass: function (b, d) {
  278. d = a.strList(d);
  279. if (void 0 !== b.classList) for (var e = 0; e < d.length; e += 1) b.classList.remove(d[e]);
  280. 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");
  281. },
  282. getCompStyle: function (b) {
  283. return (b = q.getComputedStyle ? q.getComputedStyle(b) : b.currentStyle) ? b : {};
  284. },
  285. setStyle: function (b, d, e, g) {
  286. e = e ? "important" : "";
  287. var h = null,
  288. l;
  289. for (l in d)
  290. if (d.hasOwnProperty(l)) {
  291. var m = null;
  292. null === d[l]
  293. ? (h || (h = a.getData(b, "origStyle")), h && h.hasOwnProperty(l) && (m = h[l]))
  294. : (g && (h || (h = a.getData(b, "origStyle", {})), h.hasOwnProperty(l) || (h[l] = b.style[l])), (m = d[l]));
  295. null !== m && b.style.setProperty(l, m, e);
  296. }
  297. },
  298. hexColor: function (b, d, e) {
  299. 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();
  300. },
  301. hexaColor: function (b, d, e, g) {
  302. return (
  303. "#" +
  304. (
  305. ("0" + Math.round(b).toString(16)).slice(-2) +
  306. ("0" + Math.round(d).toString(16)).slice(-2) +
  307. ("0" + Math.round(e).toString(16)).slice(-2) +
  308. ("0" + Math.round(255 * g).toString(16)).slice(-2)
  309. ).toUpperCase()
  310. );
  311. },
  312. rgbColor: function (b, d, e) {
  313. return "rgb(" + Math.round(b) + "," + Math.round(d) + "," + Math.round(e) + ")";
  314. },
  315. rgbaColor: function (b, d, e, g) {
  316. return "rgba(" + Math.round(b) + "," + Math.round(d) + "," + Math.round(e) + "," + Math.round(100 * (void 0 === g || null === g ? 1 : g)) / 100 + ")";
  317. },
  318. linearGradient: (function () {
  319. var b = (function () {
  320. for (var d = ["", "-webkit-", "-moz-", "-o-", "-ms-"], e = q.document.createElement("div"), g = 0; g < d.length; g += 1) {
  321. var h = d[g] + "linear-gradient";
  322. e.style.background = h + "(to right, rgba(0,0,0,0), rgba(0,0,0,0))";
  323. if (e.style.background) return h;
  324. }
  325. return "linear-gradient";
  326. })();
  327. return function () {
  328. return b + "(" + Array.prototype.join.call(arguments, ", ") + ")";
  329. };
  330. })(),
  331. setBorderRadius: function (b, d) {
  332. a.setStyle(b, { "border-radius": d || "0" });
  333. },
  334. setBoxShadow: function (b, d) {
  335. a.setStyle(b, { "box-shadow": d || "none" });
  336. },
  337. getElementPos: function (b, d) {
  338. var e = b.getBoundingClientRect();
  339. b = e.left;
  340. e = e.top;
  341. d || ((d = a.getViewPos()), (b += d[0]), (e += d[1]));
  342. return [b, e];
  343. },
  344. getElementSize: function (b) {
  345. return [b.offsetWidth, b.offsetHeight];
  346. },
  347. getAbsPointerPos: function (b) {
  348. var d = 0,
  349. e = 0;
  350. "undefined" !== typeof b.changedTouches && b.changedTouches.length
  351. ? ((d = b.changedTouches[0].x), (e = b.changedTouches[0].y))
  352. : "number" === typeof b.x && ((d = b.x), (e = b.y));
  353. return { x: d, y: e };
  354. },
  355. getRelPointerPos: function (b) {
  356. var d = (b.target || b.srcElement).getBoundingClientRect(),
  357. e = 0,
  358. g = 0;
  359. "undefined" !== typeof b.changedTouches && b.changedTouches.length
  360. ? ((e = b.changedTouches[0].x), (g = b.changedTouches[0].y))
  361. : "number" === typeof b.x && ((e = b.x), (g = b.y));
  362. return { x: e - d.left, y: g - d.top };
  363. },
  364. getViewPos: function () {
  365. var b = q.document.documentElement;
  366. return [(q.pageXOffset || b.scrollLeft) - (b.clientLeft || 0), (q.pageYOffset || b.scrollTop) - (b.clientTop || 0)];
  367. },
  368. getViewSize: function () {
  369. var b = q.document.documentElement;
  370. return [q.innerWidth || b.clientWidth, q.innerHeight || b.clientHeight];
  371. },
  372. RGB_HSV: function (b, d, e) {
  373. b /= 255;
  374. d /= 255;
  375. e /= 255;
  376. var g = Math.min(Math.min(b, d), e),
  377. h = Math.max(Math.max(b, d), e),
  378. l = h - g;
  379. if (0 === l) return [null, 0, 100 * h];
  380. b = b === g ? 3 + (e - d) / l : d === g ? 5 + (b - e) / l : 1 + (d - b) / l;
  381. return [60 * (6 === b ? 0 : b), (l / h) * 100, 100 * h];
  382. },
  383. HSV_RGB: function (b, d, e) {
  384. e = (e / 100) * 255;
  385. if (null === b) return [e, e, e];
  386. b /= 60;
  387. d /= 100;
  388. var g = Math.floor(b),
  389. h = e * (1 - d);
  390. b = e * (1 - d * (g % 2 ? b - g : 1 - (b - g)));
  391. switch (g) {
  392. case 6:
  393. case 0:
  394. return [e, b, h];
  395. case 1:
  396. return [b, e, h];
  397. case 2:
  398. return [h, e, b];
  399. case 3:
  400. return [h, b, e];
  401. case 4:
  402. return [b, h, e];
  403. case 5:
  404. return [e, h, b];
  405. }
  406. },
  407. parseColorString: function (b) {
  408. var d = { rgba: null, format: null },
  409. e;
  410. if ((e = b.match(/^\W*([0-9A-F]{3,8})\W*$|^currentcolor$/i))) {
  411. if ("currentcolor" === e[0].toLowerCase()) return (d.format = "hexa"), (d.rgba = [255, 255, 255, 255]), d;
  412. if (8 === e[1].length)
  413. (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]);
  414. 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]);
  415. else if (3 === e[1].length)
  416. (d.format = "hex"),
  417. (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]);
  418. else return !1;
  419. return d;
  420. }
  421. if ((e = b.match(/^\W*rgba?\(([^)]*)\)\W*$/i))) {
  422. b = e[1].split(",");
  423. e = /^\s*(\d+|\d*\.\d+|\d+\.\d*)\s*$/;
  424. var g, h, l, m;
  425. if (3 <= b.length && (g = b[0].match(e)) && (h = b[1].match(e)) && (l = b[2].match(e)))
  426. return (
  427. (d.format = "rgb"),
  428. (d.rgba = [parseFloat(g[1]) || 0, parseFloat(h[1]) || 0, parseFloat(l[1]) || 0, 1]),
  429. 4 <= b.length && (m = b[3].match(e)) && ((d.format = "rgba"), (d.rgba[3] = parseFloat(m[1]) || 0)),
  430. d
  431. );
  432. }
  433. return !1;
  434. },
  435. parsePaletteValue: function (b) {
  436. var d = [];
  437. "string" === typeof b
  438. ? b.replace(/#[0-9A-F]{3}([0-9A-F]{3})?|rgba?\(([^)]*)\)/gi, function (h) {
  439. d.push(h);
  440. })
  441. : Array.isArray(b) && (d = b);
  442. b = [];
  443. for (var e = 0; e < d.length; e++) {
  444. var g = a.parseColorString(d[e]);
  445. g && b.push(g);
  446. }
  447. return b;
  448. },
  449. containsTranparentColor: function (b) {
  450. for (var d = 0; d < b.length; d++) {
  451. var e = b[d].rgba[3];
  452. if (null !== e && 1 > e) return !0;
  453. }
  454. return !1;
  455. },
  456. isAlphaFormat: function (b) {
  457. switch (b.toLowerCase()) {
  458. case "hexa":
  459. case "rgba":
  460. return !0;
  461. }
  462. return !1;
  463. },
  464. scaleCanvasForHighDPR: function (b) {
  465. var d = q.devicePixelRatio || 1;
  466. b.width *= d;
  467. b.height *= d;
  468. b.getContext("2d").scale(d, d);
  469. },
  470. genColorPreviewCanvas: function (b, d, e, g) {
  471. var h = Math.round(a.pub.previewSeparator.length),
  472. l = a.pub.chessboardSize,
  473. m = a.pub.chessboardColor1,
  474. r = a.pub.chessboardColor2;
  475. e = e ? e : 2 * l;
  476. var w = 2 * l,
  477. u = a.createEl("canvas"),
  478. z = u.getContext("2d");
  479. u.width = e;
  480. u.height = w;
  481. g && a.scaleCanvasForHighDPR(u);
  482. z.fillStyle = m;
  483. z.fillRect(0, 0, e, w);
  484. z.fillStyle = r;
  485. for (g = 0; g < e; g += 2 * l) z.fillRect(g, 0, l, l), z.fillRect(g + l, l, l, l);
  486. b && ((z.fillStyle = b), z.fillRect(0, 0, e, w));
  487. b = null;
  488. switch (d) {
  489. case "left":
  490. b = 0;
  491. z.clearRect(0, 0, h / 2, w);
  492. break;
  493. case "right":
  494. (b = e - h), z.clearRect(e - h / 2, 0, h / 2, w);
  495. }
  496. if (null !== b)
  497. for (z.lineWidth = 1, d = 0; d < a.pub.previewSeparator.length; d += 1)
  498. z.beginPath(), (z.strokeStyle = a.pub.previewSeparator[d]), z.moveTo(0.5 + b + d, 0), z.lineTo(0.5 + b + d, w), z.stroke();
  499. return { canvas: u, width: e, height: w };
  500. },
  501. genColorPreviewGradient: function (b, d, e) {
  502. return a.linearGradient.apply(
  503. this,
  504. d && e
  505. ? ["to " + { left: "right", right: "left" }[d], b + " 0%", b + " " + e + "px", "rgba(0,0,0,0) " + (e + 1) + "px", "rgba(0,0,0,0) 100%"]
  506. : ["to right", b + " 0%", b + " 100%"]
  507. );
  508. },
  509. redrawPosition: function () {
  510. if (a.picker && a.picker.owner) {
  511. var b = a.picker.owner;
  512. if (b.fixed) {
  513. var d = a.getElementPos(b.targetElement, !0);
  514. var e = [0, 0];
  515. } else (d = a.getElementPos(b.targetElement)), (e = a.getViewPos());
  516. var g = a.getElementSize(b.targetElement),
  517. h = a.getViewSize(),
  518. l = a.getPickerDims(b);
  519. l = [l.borderW, l.borderH];
  520. switch (b.position.toLowerCase()) {
  521. case "left":
  522. var m = 1;
  523. var r = 0;
  524. var w = -1;
  525. break;
  526. case "right":
  527. m = 1;
  528. r = 0;
  529. w = 1;
  530. break;
  531. case "top":
  532. m = 0;
  533. r = 1;
  534. w = -1;
  535. break;
  536. default:
  537. (m = 0), (w = r = 1);
  538. }
  539. var u = (g[r] + l[r]) / 2;
  540. e = b.smartPosition
  541. ? [
  542. -e[m] + d[m] + l[m] > h[m] ? (-e[m] + d[m] + g[m] / 2 > h[m] / 2 && 0 <= d[m] + g[m] - l[m] ? d[m] + g[m] - l[m] : d[m]) : d[m],
  543. -e[r] + d[r] + g[r] + l[r] - u + u * w > h[r]
  544. ? -e[r] + d[r] + g[r] / 2 > h[r] / 2 && 0 <= d[r] + g[r] - u - u * w
  545. ? d[r] + g[r] - u - u * w - 4
  546. : d[r] + g[r] - u + u * w + 4
  547. : 0 <= d[r] + g[r] - u + u * w
  548. ? d[r] + g[r] - u + u * w - 4
  549. : d[r] + g[r] - u - u * w + 4,
  550. ]
  551. : [d[m], d[r] + g[r] - u + u * w];
  552. a._drawPosition(b, e[m], e[r], b.fixed ? "fixed" : "absolute", (e[0] + l[0] > d[0] || e[0] < d[0] + g[0]) && e[1] + l[1] < d[1] + g[1]);
  553. }
  554. },
  555. _drawPosition: function (b, d, e, g, h) {
  556. h = h ? 0 : b.shadowBlur;
  557. var l = "CSS1Compat" === document.compatMode ? document.documentElement : document.body,
  558. m = q.getComputedStyle(document.body, null).getPropertyValue("transform");
  559. ((m = m && "none" !== m ? Number(m.split(",")[3]) || 1 : 1), 1 !== m)
  560. ? ((a.picker.wrap.style.left = (d - l.getBoundingClientRect().left) / m + "px"), (a.picker.wrap.style.top = (e - l.getBoundingClientRect().top) / m + "px"))
  561. : ((a.picker.wrap.style.left = d + "px"), (a.picker.wrap.style.top = e + "px"));
  562. a.picker.wrap.style.position = g;
  563. a.setBoxShadow(a.picker.boxS, b.shadow ? new a.BoxShadow(0, h, b.shadowBlur, 0, b.shadowColor) : null);
  564. },
  565. getPickerDims: function (b) {
  566. var d = 2 * b.controlBorderWidth + b.width,
  567. e = 2 * b.controlBorderWidth + b.height,
  568. g = 2 * b.controlBorderWidth + 2 * a.getControlPadding(b) + b.sliderSize;
  569. a.getSliderChannel(b) && (d += g);
  570. b.hasAlphaChannel() && (d += g);
  571. g = a.getPaletteDims(b, d);
  572. g.height && (e += g.height + b.padding);
  573. b.closeButton && (e += 2 * b.controlBorderWidth + b.padding + b.buttonHeight);
  574. var h = d + 2 * b.padding,
  575. l = e + 2 * b.padding;
  576. return {
  577. contentW: d,
  578. contentH: e,
  579. paddedW: h,
  580. paddedH: l,
  581. borderW: h + 2 * b.borderWidth,
  582. borderH: l + 2 * b.borderWidth,
  583. palette: g,
  584. };
  585. },
  586. getPaletteDims: function (b, d) {
  587. var e = 0,
  588. g = 0,
  589. h = 0,
  590. l = 0,
  591. m = 0,
  592. r = b._palette ? b._palette.length : 0;
  593. r &&
  594. ((e = b.paletteCols),
  595. (g = 0 < e ? Math.ceil(r / e) : 0),
  596. (h = Math.max(1, Math.floor((d - (e - 1) * b.paletteSpacing) / e))),
  597. (l = b.paletteHeight ? Math.min(b.paletteHeight, h) : h));
  598. g && (m = g * l + (g - 1) * b.paletteSpacing);
  599. return { cols: e, rows: g, cellW: h, cellH: l, width: d, height: m };
  600. },
  601. getControlPadding: function (b) {
  602. return Math.max(b.padding / 2, 2 * b.pointerBorderWidth + b.pointerThickness - b.controlBorderWidth);
  603. },
  604. getPadYChannel: function (b) {
  605. switch (b.mode.charAt(1).toLowerCase()) {
  606. case "v":
  607. return "v";
  608. }
  609. return "s";
  610. },
  611. getSliderChannel: function (b) {
  612. if (2 < b.mode.length)
  613. switch (b.mode.charAt(2).toLowerCase()) {
  614. case "s":
  615. return "s";
  616. case "v":
  617. return "v";
  618. }
  619. return null;
  620. },
  621. triggerCallback: function (b, d) {
  622. if (b[d]) {
  623. var e = null;
  624. if ("string" === typeof b[d])
  625. try {
  626. e = new Function(b[d]);
  627. } catch (g) {
  628. console.error(g);
  629. }
  630. else e = b[d];
  631. e && e.call(b);
  632. }
  633. },
  634. triggerGlobal: function (b) {
  635. for (var d = a.getInstances(), e = 0; e < d.length; e += 1) d[e].trigger(b);
  636. },
  637. _pointerMoveEvent: { mouse: "mousemove", touch: "touchmove" },
  638. _pointerEndEvent: { mouse: "mouseup", touch: "touchend" },
  639. _pointerOrigin: null,
  640. onDocumentKeyUp: function (b) {
  641. -1 !== ["Tab", "Escape"].indexOf(a.eventKey(b)) && a.picker && a.picker.owner && a.picker.owner.tryHide();
  642. },
  643. onWindowResize: function (b) {
  644. a.redrawPosition();
  645. },
  646. onWindowScroll: function (b) {
  647. a.redrawPosition();
  648. },
  649. onParentScroll: function (b) {
  650. a.picker && a.picker.owner && a.picker.owner.tryHide();
  651. },
  652. onDocumentMouseDown: function (b) {
  653. var d = b.target || b.srcElement;
  654. if (d.frcolorpicker && d.frcolorpicker instanceof a.pub)
  655. d.frcolorpicker.showOnClick && !d.disabled && (a.picker && a.picker.owner ? a.picker.owner.tryHide() : d.frcolorpicker.show());
  656. else if (a.getData(d, "gui")) {
  657. if (a.getData(d, "control")) a.onControlPointerStart(b, d, a.getData(d, "control"), "mouse");
  658. } else a.picker && a.picker.owner && a.picker.owner.tryHide();
  659. },
  660. onPickerTouchStart: function (b) {
  661. var d = b.target || b.srcElement;
  662. if (a.getData(d, "control")) a.onControlPointerStart(b, d, a.getData(d, "control"), "touch");
  663. },
  664. onControlPointerStart: function (b, d, e, g) {
  665. var h = a.getData(d, "instance");
  666. a.preventDefault(b);
  667. var l = function (r, w) {
  668. a.attachGroupEvent("drag", r, a._pointerMoveEvent[g], a.onDocumentPointerMove(b, d, e, g, w));
  669. a.attachGroupEvent("drag", r, a._pointerEndEvent[g], a.onDocumentPointerEnd(b, d, e, g));
  670. };
  671. l(q.document, [0, 0]);
  672. if (q.parent && q.frameElement) {
  673. var m = q.frameElement.getBoundingClientRect();
  674. l(q.parent.window.document, [-m.left, -m.top]);
  675. }
  676. l = a.getAbsPointerPos(b);
  677. m = a.getRelPointerPos(b);
  678. a._pointerOrigin = { x: l.x - m.x, y: l.y - m.y };
  679. switch (e) {
  680. case "pad":
  681. "v" === a.getSliderChannel(h) && 0 === h.channels.v && h.fromHSVA(null, null, 100, null);
  682. a.setPad(h, b, 0, 0);
  683. break;
  684. case "sld":
  685. a.setSld(h, b, 0);
  686. break;
  687. case "asld":
  688. a.setASld(h, b, 0);
  689. }
  690. h.trigger("input");
  691. },
  692. onDocumentPointerMove: function (b, d, e, g, h) {
  693. return function (l) {
  694. var m = a.getData(d, "instance");
  695. switch (e) {
  696. case "pad":
  697. a.setPad(m, l, h[0], h[1]);
  698. break;
  699. case "sld":
  700. a.setSld(m, l, h[1]);
  701. break;
  702. case "asld":
  703. a.setASld(m, l, h[1]);
  704. }
  705. m.trigger("input");
  706. };
  707. },
  708. onDocumentPointerEnd: function (b, d, e, g) {
  709. return function (h) {
  710. h = a.getData(d, "instance");
  711. a.detachGroupEvents("drag");
  712. h.trigger("input");
  713. h.trigger("change");
  714. };
  715. },
  716. onPaletteSampleClick: function (b) {
  717. var d = b.currentTarget;
  718. b = a.getData(d, "instance");
  719. d = a.getData(d, "color");
  720. "any" === b.format.toLowerCase() && (b._setFormat(d.format), a.isAlphaFormat(b.getFormat()) || (d.rgba[3] = 1));
  721. null === d.rgba[3] && (!0 === b.paletteSetsAlpha || ("auto" === b.paletteSetsAlpha && b._paletteHasTransparency)) && (d.rgba[3] = 1);
  722. b.fromRGBA.apply(b, d.rgba);
  723. b.trigger("input");
  724. b.trigger("change");
  725. b.hideOnPaletteClick && b.hide();
  726. },
  727. setPad: function (b, d, e, g) {
  728. d = a.getAbsPointerPos(d);
  729. e = (360 / (b.width - 1)) * (e + d.x - a._pointerOrigin.x - b.padding - b.controlBorderWidth);
  730. g = 100 - (100 / (b.height - 1)) * (g + d.y - a._pointerOrigin.y - b.padding - b.controlBorderWidth);
  731. switch (a.getPadYChannel(b)) {
  732. case "s":
  733. b.fromHSVA(e, g, null, null);
  734. break;
  735. case "v":
  736. b.fromHSVA(e, null, g, null);
  737. }
  738. },
  739. setSld: function (b, d, e) {
  740. d = a.getAbsPointerPos(d);
  741. e = 100 - (100 / (b.height - 1)) * (e + d.y - a._pointerOrigin.y - b.padding - b.controlBorderWidth);
  742. switch (a.getSliderChannel(b)) {
  743. case "s":
  744. b.fromHSVA(null, e, null, null);
  745. break;
  746. case "v":
  747. b.fromHSVA(null, null, e, null);
  748. }
  749. },
  750. setASld: function (b, d, e) {
  751. d = a.getAbsPointerPos(d);
  752. e = 1 - (1 / (b.height - 1)) * (e + d.y - a._pointerOrigin.y - b.padding - b.controlBorderWidth);
  753. 1 > e && ((d = b.getFormat()), "any" !== b.format.toLowerCase() || a.isAlphaFormat(d) || b._setFormat("hex" === d ? "hexa" : "rgba"));
  754. b.fromHSVA(null, null, null, e);
  755. },
  756. createPadCanvas: function () {
  757. var b = { elm: null, draw: null },
  758. d = a.createEl("canvas"),
  759. e = d.getContext("2d");
  760. b.elm = d;
  761. b.draw = function (g, h, l) {
  762. d.width = g;
  763. d.height = h;
  764. e.clearRect(0, 0, d.width, d.height);
  765. g = e.createLinearGradient(0, 0, d.width, 0);
  766. g.addColorStop(0, "#F00");
  767. g.addColorStop(1 / 6, "#FF0");
  768. g.addColorStop(2 / 6, "#0F0");
  769. g.addColorStop(0.5, "#0FF");
  770. g.addColorStop(4 / 6, "#00F");
  771. g.addColorStop(5 / 6, "#F0F");
  772. g.addColorStop(1, "#F00");
  773. e.fillStyle = g;
  774. e.fillRect(0, 0, d.width, d.height);
  775. g = e.createLinearGradient(0, 0, 0, d.height);
  776. switch (l.toLowerCase()) {
  777. case "s":
  778. g.addColorStop(0, "rgba(255,255,255,0)");
  779. g.addColorStop(1, "rgba(255,255,255,1)");
  780. break;
  781. case "v":
  782. g.addColorStop(0, "rgba(0,0,0,0)"), g.addColorStop(1, "rgba(0,0,0,1)");
  783. }
  784. e.fillStyle = g;
  785. e.fillRect(0, 0, d.width, d.height);
  786. };
  787. return b;
  788. },
  789. createSliderGradient: function () {
  790. var b = { elm: null, draw: null },
  791. d = a.createEl("canvas"),
  792. e = d.getContext("2d");
  793. b.elm = d;
  794. b.draw = function (g, h, l, m) {
  795. d.width = g;
  796. d.height = h;
  797. e.clearRect(0, 0, d.width, d.height);
  798. g = e.createLinearGradient(0, 0, 0, d.height);
  799. g.addColorStop(0, l);
  800. g.addColorStop(1, m);
  801. e.fillStyle = g;
  802. e.fillRect(0, 0, d.width, d.height);
  803. };
  804. return b;
  805. },
  806. createASliderGradient: function () {
  807. var b = { elm: null, draw: null },
  808. d = a.createEl("canvas"),
  809. e = d.getContext("2d");
  810. b.elm = d;
  811. b.draw = function (g, h, l) {
  812. d.width = g;
  813. d.height = h;
  814. e.clearRect(0, 0, d.width, d.height);
  815. g = d.width / 2;
  816. h = a.pub.chessboardColor2;
  817. e.fillStyle = a.pub.chessboardColor1;
  818. e.fillRect(0, 0, d.width, d.height);
  819. if (0 < g) for (var m = 0; m < d.height; m += 2 * g) (e.fillStyle = h), e.fillRect(0, m, g, g), e.fillRect(g, m + g, g, g);
  820. g = e.createLinearGradient(0, 0, 0, d.height);
  821. g.addColorStop(0, l);
  822. g.addColorStop(1, "rgba(0,0,0,0)");
  823. e.fillStyle = g;
  824. e.fillRect(0, 0, d.width, d.height);
  825. };
  826. return b;
  827. },
  828. BoxShadow: (function () {
  829. var b = function (d, e, g, h, l, m) {
  830. this.hShadow = d;
  831. this.vShadow = e;
  832. this.blur = g;
  833. this.spread = h;
  834. this.color = l;
  835. this.inset = !!m;
  836. };
  837. b.prototype.toString = function () {
  838. var d = [Math.round(this.hShadow) + "px", Math.round(this.vShadow) + "px", Math.round(this.blur) + "px", Math.round(this.spread) + "px", this.color];
  839. this.inset && d.push("inset");
  840. return d.join(" ");
  841. };
  842. return b;
  843. })(),
  844. flags: { leaveValue: 1, leaveAlpha: 2, leavePreview: 4 },
  845. enumOpts: {
  846. format: "auto any hex hexa rgb rgba".split(" "),
  847. previewPosition: ["left", "right"],
  848. mode: ["hsv", "hvs", "hs", "hv"],
  849. position: ["left", "right", "top", "bottom"],
  850. alphaChannel: ["auto", !0, !1],
  851. paletteSetsAlpha: ["auto", !0, !1],
  852. },
  853. deprecatedOpts: {
  854. styleElement: "previewElement",
  855. onFineChange: "onInput",
  856. overwriteImportant: "forceStyle",
  857. closable: "closeButton",
  858. insetWidth: "controlBorderWidth",
  859. insetColor: "controlBorderColor",
  860. refine: null,
  861. },
  862. pub: function (b, d) {
  863. function e(c, k) {
  864. if ("string" !== typeof c) throw Error("Invalid value for option name: " + c);
  865. if (a.enumOpts.hasOwnProperty(c) && ("string" === typeof k && (k = k.toLowerCase()), -1 === a.enumOpts[c].indexOf(k)))
  866. throw Error("Option '" + c + "' has invalid value: " + k);
  867. if (a.deprecatedOpts.hasOwnProperty(c)) {
  868. var p = a.deprecatedOpts[c];
  869. if (p) c = p;
  870. else throw Error("Option '" + c + "' is DEPRECATED");
  871. }
  872. p = "set__" + c;
  873. if ("function" === typeof f[p]) return f[p](k), !0;
  874. if (c in f) return (f[c] = k), !0;
  875. throw Error("Unrecognized configuration option: " + c);
  876. }
  877. function g() {
  878. f._processParentElementsInDOM();
  879. a.picker ||
  880. ((a.picker = {
  881. owner: null,
  882. wrap: a.createEl("fr-colorpicker"),
  883. box: a.createEl("div"),
  884. boxS: a.createEl("div"),
  885. boxB: a.createEl("div"),
  886. pad: a.createEl("div"),
  887. padB: a.createEl("div"),
  888. padM: a.createEl("div"),
  889. padCanvas: a.createPadCanvas(),
  890. cross: a.createEl("div"),
  891. crossBY: a.createEl("div"),
  892. crossBX: a.createEl("div"),
  893. crossLY: a.createEl("div"),
  894. crossLX: a.createEl("div"),
  895. sld: a.createEl("div"),
  896. sldB: a.createEl("div"),
  897. sldM: a.createEl("div"),
  898. sldGrad: a.createSliderGradient(),
  899. sldPtrS: a.createEl("div"),
  900. sldPtrIB: a.createEl("div"),
  901. sldPtrMB: a.createEl("div"),
  902. sldPtrOB: a.createEl("div"),
  903. asld: a.createEl("div"),
  904. asldB: a.createEl("div"),
  905. asldM: a.createEl("div"),
  906. asldGrad: a.createASliderGradient(),
  907. asldPtrS: a.createEl("div"),
  908. asldPtrIB: a.createEl("div"),
  909. asldPtrMB: a.createEl("div"),
  910. asldPtrOB: a.createEl("div"),
  911. pal: a.createEl("div"),
  912. btn: a.createEl("div"),
  913. btnT: a.createEl("span"),
  914. }),
  915. a.picker.pad.appendChild(a.picker.padCanvas.elm),
  916. a.picker.padB.appendChild(a.picker.pad),
  917. a.picker.cross.appendChild(a.picker.crossBY),
  918. a.picker.cross.appendChild(a.picker.crossBX),
  919. a.picker.cross.appendChild(a.picker.crossLY),
  920. a.picker.cross.appendChild(a.picker.crossLX),
  921. a.picker.padB.appendChild(a.picker.cross),
  922. a.picker.box.appendChild(a.picker.padB),
  923. a.picker.box.appendChild(a.picker.padM),
  924. a.picker.sld.appendChild(a.picker.sldGrad.elm),
  925. a.picker.sldB.appendChild(a.picker.sld),
  926. a.picker.sldB.appendChild(a.picker.sldPtrOB),
  927. a.picker.sldPtrOB.appendChild(a.picker.sldPtrMB),
  928. a.picker.sldPtrMB.appendChild(a.picker.sldPtrIB),
  929. a.picker.sldPtrIB.appendChild(a.picker.sldPtrS),
  930. a.picker.box.appendChild(a.picker.sldB),
  931. a.picker.box.appendChild(a.picker.sldM),
  932. a.picker.asld.appendChild(a.picker.asldGrad.elm),
  933. a.picker.asldB.appendChild(a.picker.asld),
  934. a.picker.asldB.appendChild(a.picker.asldPtrOB),
  935. a.picker.asldPtrOB.appendChild(a.picker.asldPtrMB),
  936. a.picker.asldPtrMB.appendChild(a.picker.asldPtrIB),
  937. a.picker.asldPtrIB.appendChild(a.picker.asldPtrS),
  938. a.picker.box.appendChild(a.picker.asldB),
  939. a.picker.box.appendChild(a.picker.asldM),
  940. a.picker.box.appendChild(a.picker.pal),
  941. a.picker.btn.appendChild(a.picker.btnT),
  942. a.picker.box.appendChild(a.picker.btn),
  943. a.picker.boxB.appendChild(a.picker.box),
  944. a.picker.wrap.appendChild(a.picker.boxS),
  945. a.picker.wrap.appendChild(a.picker.boxB),
  946. a.picker.wrap.addEventListener("touchstart", a.onPickerTouchStart, a.isPassiveEventSupported ? { passive: !1 } : !1));
  947. var c = a.picker,
  948. k = !!a.getSliderChannel(f),
  949. p = f.hasAlphaChannel(),
  950. n = a.getPickerDims(f),
  951. t = 2 * f.pointerBorderWidth + f.pointerThickness + 2 * f.crossSize,
  952. x = a.getControlPadding(f),
  953. A = Math.min(f.borderRadius, Math.round(f.padding * Math.PI)),
  954. v = q.getComputedStyle(document.body, null).getPropertyValue("transform");
  955. v = v && "none" !== v ? Number(v.split(",")[3]) : 0;
  956. var y = Number(q.getComputedStyle(document.body, null).getPropertyValue("zoom")) || 1;
  957. c.wrap.className = L;
  958. c.wrap.style.clear = "both";
  959. c.wrap.style.width = n.borderW + "px";
  960. c.wrap.style.height = n.borderH + "px";
  961. c.wrap.style.zIndex = f.zIndex;
  962. v && 1 !== v
  963. ? ((c.wrap.style.transformOrigin = "left top 0px"), (c.wrap.style.transform = "scale(" + 1 / v + ")"))
  964. : ((c.wrap.style.transformOrigin = null), (c.wrap.style.transform = null));
  965. c.wrap.style.zoom = y && 1 !== y ? 1 / y : null;
  966. c.box.className = M;
  967. c.box.style.width = n.paddedW + "px";
  968. c.box.style.height = n.paddedH + "px";
  969. c.box.style.position = "relative";
  970. c.boxS.className = N;
  971. c.boxS.style.position = "absolute";
  972. c.boxS.style.left = "0";
  973. c.boxS.style.top = "0";
  974. c.boxS.style.width = "100%";
  975. c.boxS.style.height = "100%";
  976. a.setBorderRadius(c.boxS, A + "px");
  977. c.boxB.className = O;
  978. c.boxB.style.position = "relative";
  979. c.boxB.style.border = f.borderWidth + "px solid";
  980. c.boxB.style.borderColor = f.borderColor;
  981. c.boxB.style.background = f.backgroundColor;
  982. a.setBorderRadius(c.boxB, A + "px");
  983. c.padM.style.background = "rgba(255,0,0,.2)";
  984. c.sldM.style.background = "rgba(0,255,0,.2)";
  985. c.asldM.style.background = "rgba(0,0,255,.2)";
  986. c.padM.style.opacity = c.sldM.style.opacity = c.asldM.style.opacity = "0";
  987. c.pad.style.position = "relative";
  988. c.pad.style.width = f.width + "px";
  989. c.pad.style.height = f.height + "px";
  990. c.padCanvas.draw(f.width, f.height, a.getPadYChannel(f));
  991. c.padB.style.position = "absolute";
  992. c.padB.style.left = f.padding + "px";
  993. c.padB.style.top = f.padding + "px";
  994. c.padB.style.border = f.controlBorderWidth + "px solid";
  995. c.padB.style.borderColor = f.controlBorderColor;
  996. c.padM.style.position = "absolute";
  997. c.padM.style.left = "0px";
  998. c.padM.style.top = "0px";
  999. c.padM.style.width = f.padding + 2 * f.controlBorderWidth + f.width + x + "px";
  1000. c.padM.style.height = 2 * f.controlBorderWidth + 2 * f.padding + f.height + "px";
  1001. c.padM.style.cursor = "crosshair";
  1002. a.setData(c.padM, { instance: f, control: "pad" });
  1003. c.cross.style.position = "absolute";
  1004. c.cross.style.left = c.cross.style.top = "0";
  1005. c.cross.style.width = c.cross.style.height = t + "px";
  1006. c.crossBY.style.position = c.crossBX.style.position = "absolute";
  1007. c.crossBY.style.background = c.crossBX.style.background = f.pointerBorderColor;
  1008. c.crossBY.style.width = c.crossBX.style.height = 2 * f.pointerBorderWidth + f.pointerThickness + "px";
  1009. c.crossBY.style.height = c.crossBX.style.width = t + "px";
  1010. c.crossBY.style.left = c.crossBX.style.top = Math.floor(t / 2) - Math.floor(f.pointerThickness / 2) - f.pointerBorderWidth + "px";
  1011. c.crossBY.style.top = c.crossBX.style.left = "0";
  1012. c.crossLY.style.position = c.crossLX.style.position = "absolute";
  1013. c.crossLY.style.background = c.crossLX.style.background = f.pointerColor;
  1014. c.crossLY.style.height = c.crossLX.style.width = t - 2 * f.pointerBorderWidth + "px";
  1015. c.crossLY.style.width = c.crossLX.style.height = f.pointerThickness + "px";
  1016. c.crossLY.style.left = c.crossLX.style.top = Math.floor(t / 2) - Math.floor(f.pointerThickness / 2) + "px";
  1017. c.crossLY.style.top = c.crossLX.style.left = f.pointerBorderWidth + "px";
  1018. c.sld.style.overflow = "hidden";
  1019. c.sld.style.width = f.sliderSize + "px";
  1020. c.sld.style.height = f.height + "px";
  1021. c.sldGrad.draw(f.sliderSize, f.height, "#000", "#000");
  1022. c.sldB.style.display = k ? "block" : "none";
  1023. c.sldB.style.position = "absolute";
  1024. c.sldB.style.left = f.padding + f.width + 2 * f.controlBorderWidth + 2 * x + "px";
  1025. c.sldB.style.top = f.padding + "px";
  1026. c.sldB.style.border = f.controlBorderWidth + "px solid";
  1027. c.sldB.style.borderColor = f.controlBorderColor;
  1028. c.sldM.style.display = k ? "block" : "none";
  1029. c.sldM.style.position = "absolute";
  1030. c.sldM.style.left = f.padding + f.width + 2 * f.controlBorderWidth + x + "px";
  1031. c.sldM.style.top = "0px";
  1032. c.sldM.style.width = f.sliderSize + 2 * x + 2 * f.controlBorderWidth + (p ? 0 : Math.max(0, f.padding - x)) + "px";
  1033. c.sldM.style.height = 2 * f.controlBorderWidth + 2 * f.padding + f.height + "px";
  1034. c.sldM.style.cursor = "default";
  1035. a.setData(c.sldM, { instance: f, control: "sld" });
  1036. c.sldPtrIB.style.border = c.sldPtrOB.style.border = f.pointerBorderWidth + "px solid " + f.pointerBorderColor;
  1037. c.sldPtrOB.style.position = "absolute";
  1038. c.sldPtrOB.style.left = -(2 * f.pointerBorderWidth + f.pointerThickness) + "px";
  1039. c.sldPtrOB.style.top = "0";
  1040. c.sldPtrMB.style.border = f.pointerThickness + "px solid " + f.pointerColor;
  1041. c.sldPtrS.style.width = f.sliderSize + "px";
  1042. c.sldPtrS.style.height = a.pub.sliderInnerSpace + "px";
  1043. c.asld.style.overflow = "hidden";
  1044. c.asld.style.width = f.sliderSize + "px";
  1045. c.asld.style.height = f.height + "px";
  1046. c.asldGrad.draw(f.sliderSize, f.height, "#000");
  1047. c.asldB.style.display = p ? "block" : "none";
  1048. c.asldB.style.position = "absolute";
  1049. c.asldB.style.left = f.padding + f.width + 2 * f.controlBorderWidth + x + (k ? f.sliderSize + 3 * x + 2 * f.controlBorderWidth : 0) + "px";
  1050. c.asldB.style.top = f.padding + "px";
  1051. c.asldB.style.border = f.controlBorderWidth + "px solid";
  1052. c.asldB.style.borderColor = f.controlBorderColor;
  1053. c.asldM.style.display = p ? "block" : "none";
  1054. c.asldM.style.position = "absolute";
  1055. c.asldM.style.left = f.padding + f.width + 2 * f.controlBorderWidth + x + (k ? f.sliderSize + 2 * x + 2 * f.controlBorderWidth : 0) + "px";
  1056. c.asldM.style.top = "0px";
  1057. c.asldM.style.width = f.sliderSize + 2 * x + 2 * f.controlBorderWidth + Math.max(0, f.padding - x) + "px";
  1058. c.asldM.style.height = 2 * f.controlBorderWidth + 2 * f.padding + f.height + "px";
  1059. c.asldM.style.cursor = "default";
  1060. a.setData(c.asldM, { instance: f, control: "asld" });
  1061. c.asldPtrIB.style.border = c.asldPtrOB.style.border = f.pointerBorderWidth + "px solid " + f.pointerBorderColor;
  1062. c.asldPtrOB.style.position = "absolute";
  1063. c.asldPtrOB.style.left = -(2 * f.pointerBorderWidth + f.pointerThickness) + "px";
  1064. c.asldPtrOB.style.top = "0";
  1065. c.asldPtrMB.style.border = f.pointerThickness + "px solid " + f.pointerColor;
  1066. c.asldPtrS.style.width = f.sliderSize + "px";
  1067. c.asldPtrS.style.height = a.pub.sliderInnerSpace + "px";
  1068. c.pal.className = P;
  1069. c.pal.style.display = n.palette.rows ? "block" : "none";
  1070. c.pal.style.position = "absolute";
  1071. c.pal.style.left = f.padding + "px";
  1072. c.pal.style.top = 2 * f.controlBorderWidth + 2 * f.padding + f.height + "px";
  1073. c.pal.textContent = "";
  1074. k = a.genColorPreviewCanvas("rgba(0,0,0,0)");
  1075. for (t = p = 0; t < n.palette.rows; t++)
  1076. for (x = 0; x < n.palette.cols && p < f._palette.length; x++, p++)
  1077. (A = f._palette[p]),
  1078. (y = a.rgbaColor.apply(null, A.rgba)),
  1079. (v = a.createEl("div")),
  1080. (v.style.width = n.palette.cellW - 2 * f.controlBorderWidth + "px"),
  1081. (v.style.height = n.palette.cellH - 2 * f.controlBorderWidth + "px"),
  1082. (v.style.backgroundColor = y),
  1083. (y = a.createEl("div")),
  1084. (y.className = Q),
  1085. (y.style.display = "block"),
  1086. (y.style.position = "absolute"),
  1087. (y.style.left = (1 >= n.palette.cols ? 0 : Math.round(((n.contentW - n.palette.cellW) / (n.palette.cols - 1)) * 10 * x) / 10) + "px"),
  1088. (y.style.top = t * (n.palette.cellH + f.paletteSpacing) + "px"),
  1089. (y.style.border = f.controlBorderWidth + "px solid"),
  1090. (y.style.borderColor = f.controlBorderColor),
  1091. (y.style.cursor = "pointer"),
  1092. null !== A.rgba[3] &&
  1093. 1 > A.rgba[3] &&
  1094. ((y.style.backgroundImage = "url('" + k.canvas.toDataURL() + "')"), (y.style.backgroundRepeat = "repeat"), (y.style.backgroundPosition = "center center")),
  1095. a.setData(y, {
  1096. instance: f,
  1097. control: "palette-sample",
  1098. color: A,
  1099. }),
  1100. y.addEventListener("click", a.onPaletteSampleClick, !1),
  1101. y.appendChild(v),
  1102. c.pal.appendChild(y);
  1103. c.btn.className = R;
  1104. c.btn.style.display = f.closeButton ? "block" : "none";
  1105. c.btn.style.position = "absolute";
  1106. c.btn.style.left = f.padding + "px";
  1107. c.btn.style.bottom = f.padding + "px";
  1108. c.btn.style.padding = "0 15px";
  1109. c.btn.style.maxWidth = n.contentW - 2 * f.controlBorderWidth - 30 + "px";
  1110. c.btn.style.overflow = "hidden";
  1111. c.btn.style.height = f.buttonHeight + "px";
  1112. c.btn.style.whiteSpace = "nowrap";
  1113. c.btn.style.border = f.controlBorderWidth + "px solid";
  1114. (function () {
  1115. var F = f.controlBorderColor.split(/\s+/);
  1116. c.btn.style.borderColor = 2 > F.length ? F[0] : F[1] + " " + F[0] + " " + F[0] + " " + F[1];
  1117. })();
  1118. c.btn.style.color = f.buttonColor;
  1119. c.btn.style.font = "12px sans-serif";
  1120. c.btn.style.textAlign = "center";
  1121. c.btn.style.cursor = "pointer";
  1122. c.btn.onmousedown = function () {
  1123. f.hide();
  1124. };
  1125. c.btnT.style.lineHeight = f.buttonHeight + "px";
  1126. c.btnT.textContent = "";
  1127. c.btnT.appendChild(q.document.createTextNode(f.closeText));
  1128. h();
  1129. l();
  1130. m();
  1131. a.picker.owner && a.picker.owner !== f && a.removeClass(a.picker.owner.targetElement, a.pub.activeClassName);
  1132. a.picker.owner = f;
  1133. f.container === q.document.body ? a.redrawPosition() : a._drawPosition(f, 0, 0, "relative", !1);
  1134. c.wrap.parentNode !== f.container && f.container.appendChild(c.wrap);
  1135. a.addClass(f.targetElement, a.pub.activeClassName);
  1136. }
  1137. function h() {
  1138. var c = a.getPadYChannel(f);
  1139. c = Math.round((1 - f.channels[c] / 100) * (f.height - 1));
  1140. var k = -Math.floor((2 * f.pointerBorderWidth + f.pointerThickness + 2 * f.crossSize) / 2);
  1141. a.picker.cross.style.left = Math.round((f.channels.h / 360) * (f.width - 1)) + k + "px";
  1142. a.picker.cross.style.top = c + k + "px";
  1143. switch (a.getSliderChannel(f)) {
  1144. case "s":
  1145. k = a.HSV_RGB(f.channels.h, 100, f.channels.v);
  1146. c = a.HSV_RGB(f.channels.h, 0, f.channels.v);
  1147. k = "rgb(" + Math.round(k[0]) + "," + Math.round(k[1]) + "," + Math.round(k[2]) + ")";
  1148. a.picker.sldGrad.draw(f.sliderSize, f.height, k, "rgb(" + Math.round(c[0]) + "," + Math.round(c[1]) + "," + Math.round(c[2]) + ")");
  1149. break;
  1150. case "v":
  1151. (c = a.HSV_RGB(f.channels.h, f.channels.s, 100)),
  1152. (k = "rgb(" + Math.round(c[0]) + "," + Math.round(c[1]) + "," + Math.round(c[2]) + ")"),
  1153. a.picker.sldGrad.draw(f.sliderSize, f.height, k, "#000");
  1154. }
  1155. a.picker.asldGrad.draw(f.sliderSize, f.height, f.toHEXString());
  1156. }
  1157. function l() {
  1158. var c = a.getSliderChannel(f);
  1159. c &&
  1160. (a.picker.sldPtrOB.style.top =
  1161. Math.round((1 - f.channels[c] / 100) * (f.height - 1)) - (2 * f.pointerBorderWidth + f.pointerThickness) - Math.floor(a.pub.sliderInnerSpace / 2) + "px");
  1162. a.picker.asldGrad.draw(f.sliderSize, f.height, f.toHEXString());
  1163. }
  1164. function m() {
  1165. a.picker.asldPtrOB.style.top =
  1166. Math.round((1 - f.channels.a) * (f.height - 1)) - (2 * f.pointerBorderWidth + f.pointerThickness) - Math.floor(a.pub.sliderInnerSpace / 2) + "px";
  1167. }
  1168. function r() {
  1169. return a.picker && a.picker.owner === f;
  1170. }
  1171. function w(c) {
  1172. "Enter" === a.eventKey(c) && (f.valueElement && f.processValueInput(f.valueElement.value), f.tryHide());
  1173. }
  1174. function u(c) {
  1175. "Enter" === a.eventKey(c) && (f.alphaElement && f.processAlphaInput(f.alphaElement.value), f.tryHide());
  1176. }
  1177. function z(c) {
  1178. a.getData(c, "internal") ||
  1179. ((c = f.valueElement.value),
  1180. f.processValueInput(f.valueElement.value),
  1181. a.triggerCallback(f, "onChange"),
  1182. f.valueElement.value !== c && a.triggerInputEvent(f.valueElement, "change", !0, !0));
  1183. }
  1184. function S(c) {
  1185. a.getData(c, "internal") ||
  1186. ((c = f.alphaElement.value),
  1187. f.processAlphaInput(f.alphaElement.value),
  1188. a.triggerCallback(f, "onChange"),
  1189. a.triggerInputEvent(f.valueElement, "change", !0, !0),
  1190. f.alphaElement.value !== c && a.triggerInputEvent(f.alphaElement, "change", !0, !0));
  1191. }
  1192. function T(c) {
  1193. a.getData(c, "internal") || (f.valueElement && f.fromString(f.valueElement.value, a.flags.leaveValue), a.triggerCallback(f, "onInput"));
  1194. }
  1195. function U(c) {
  1196. a.getData(c, "internal") ||
  1197. (f.alphaElement && f.fromHSVA(null, null, null, parseFloat(f.alphaElement.value), a.flags.leaveAlpha),
  1198. a.triggerCallback(f, "onInput"),
  1199. a.triggerInputEvent(f.valueElement, "input", !0, !0));
  1200. }
  1201. var f = this;
  1202. d || (d = {});
  1203. this.channels = { r: 255, g: 255, b: 255, h: 0, s: 0, v: 100, a: 1 };
  1204. this.format = "auto";
  1205. this.alpha = this.value = void 0;
  1206. this.random = !1;
  1207. this.previewElement = this.alphaElement = this.valueElement = this.onInput = this.onChange = void 0;
  1208. this.previewPosition = "left";
  1209. this.previewSize = 32;
  1210. this.previewPadding = 8;
  1211. this.forceStyle = this.uppercase = this.hash = this.required = !0;
  1212. this.width = 181;
  1213. this.height = 101;
  1214. this.mode = "HSV";
  1215. this.alphaChannel = "auto";
  1216. this.position = "bottom";
  1217. this.hideOnLeave = this.showOnClick = this.smartPosition = !0;
  1218. this.palette = [];
  1219. this.paletteCols = 10;
  1220. this.paletteSetsAlpha = "auto";
  1221. this.paletteHeight = 16;
  1222. this.paletteSpacing = 4;
  1223. this.hideOnPaletteClick = !1;
  1224. this.sliderSize = 16;
  1225. this.crossSize = 8;
  1226. this.closeButton = !1;
  1227. this.closeText = "Close";
  1228. this.buttonColor = "rgba(0,0,0,1)";
  1229. this.buttonHeight = 18;
  1230. this.padding = 12;
  1231. this.backgroundColor = "rgba(255,255,255,1)";
  1232. this.borderWidth = 1;
  1233. this.borderColor = "rgba(187,187,187,1)";
  1234. this.borderRadius = 8;
  1235. this.controlBorderWidth = 1;
  1236. this.controlBorderColor = "rgba(187,187,187,1)";
  1237. this.shadow = !0;
  1238. this.shadowBlur = 15;
  1239. this.shadowColor = "rgba(0,0,0,0.2)";
  1240. this.pointerColor = "rgba(76,76,76,1)";
  1241. this.pointerBorderWidth = 1;
  1242. this.pointerBorderColor = "rgba(255,255,255,1)";
  1243. this.pointerThickness = 2;
  1244. this.zIndex = 999999;
  1245. this.container = void 0;
  1246. this.minS = 0;
  1247. this.maxS = 100;
  1248. this.minV = 0;
  1249. this.maxV = 100;
  1250. this.minA = 0;
  1251. this.maxA = 1;
  1252. this.option = function () {
  1253. if (!arguments.length) throw Error("No option specified");
  1254. if (1 === arguments.length && "string" === typeof arguments[0]) {
  1255. try {
  1256. var c = arguments[0];
  1257. if ("string" !== typeof c) throw Error("Invalid value for option name: " + c);
  1258. if (a.deprecatedOpts.hasOwnProperty(c)) {
  1259. var k = a.deprecatedOpts[c];
  1260. if (k) c = k;
  1261. else throw Error("Option '" + c + "' is DEPRECATED");
  1262. }
  1263. var p = "get__" + c;
  1264. if ("function" === typeof f[p]) var n = f[p](value);
  1265. else if (c in f) n = f[c];
  1266. else throw Error("Unrecognized configuration option: " + c);
  1267. return n;
  1268. } catch (t) {
  1269. console.error(t);
  1270. }
  1271. return !1;
  1272. }
  1273. if (2 <= arguments.length && "string" === typeof arguments[0]) {
  1274. try {
  1275. if (!e(arguments[0], arguments[1])) return !1;
  1276. } catch (t) {
  1277. return console.error(t), !1;
  1278. }
  1279. this.redraw();
  1280. this.exposeColor();
  1281. return !0;
  1282. }
  1283. if (1 === arguments.length && "object" === typeof arguments[0]) {
  1284. n = arguments[0];
  1285. c = !0;
  1286. for (p in n)
  1287. if (n.hasOwnProperty(p))
  1288. try {
  1289. e(p, n[p]) || (c = !1);
  1290. } catch (t) {
  1291. console.error(t), (c = !1);
  1292. }
  1293. this.redraw();
  1294. this.exposeColor();
  1295. return c;
  1296. }
  1297. throw Error("Invalid arguments");
  1298. };
  1299. this.channel = function (c, k) {
  1300. if ("string" !== typeof c) throw Error("Invalid value for channel name: " + c);
  1301. if (void 0 === k) return this.channels.hasOwnProperty(c.toLowerCase()) ? this.channels[c.toLowerCase()] : !1;
  1302. switch (c.toLowerCase()) {
  1303. case "r":
  1304. c = this.fromRGBA(k, null, null, null);
  1305. break;
  1306. case "g":
  1307. c = this.fromRGBA(null, k, null, null);
  1308. break;
  1309. case "b":
  1310. c = this.fromRGBA(null, null, k, null);
  1311. break;
  1312. case "h":
  1313. c = this.fromHSVA(k, null, null, null);
  1314. break;
  1315. case "s":
  1316. c = this.fromHSVA(null, k, null, null);
  1317. break;
  1318. case "v":
  1319. c = this.fromHSVA(null, null, k, null);
  1320. break;
  1321. case "a":
  1322. c = this.fromHSVA(null, null, null, k);
  1323. break;
  1324. default:
  1325. return !1;
  1326. }
  1327. return c ? (this.redraw(), !0) : !1;
  1328. };
  1329. this.trigger = function (c) {
  1330. c = a.strList(c);
  1331. for (var k = 0; k < c.length; k += 1) {
  1332. var p = c[k].toLowerCase(),
  1333. n = null;
  1334. switch (p) {
  1335. case "input":
  1336. n = "onInput";
  1337. break;
  1338. case "change":
  1339. n = "onChange";
  1340. }
  1341. n && a.triggerCallback(this, n);
  1342. a.triggerInputEvent(this.valueElement, p, !0, !0);
  1343. }
  1344. };
  1345. this.fromHSVA = function (c, k, p, n, t) {
  1346. void 0 === c && (c = null);
  1347. void 0 === k && (k = null);
  1348. void 0 === p && (p = null);
  1349. void 0 === n && (n = null);
  1350. if (null !== c) {
  1351. if (isNaN(c)) return !1;
  1352. this.channels.h = Math.max(0, Math.min(360, c));
  1353. }
  1354. if (null !== k) {
  1355. if (isNaN(k)) return !1;
  1356. this.channels.s = Math.max(0, Math.min(100, this.maxS, k), this.minS);
  1357. }
  1358. if (null !== p) {
  1359. if (isNaN(p)) return !1;
  1360. this.channels.v = Math.max(0, Math.min(100, this.maxV, p), this.minV);
  1361. }
  1362. if (null !== n) {
  1363. if (isNaN(n)) return !1;
  1364. this.channels.a = this.hasAlphaChannel() ? Math.max(0, Math.min(1, this.maxA, n), this.minA) : 1;
  1365. }
  1366. c = a.HSV_RGB(this.channels.h, this.channels.s, this.channels.v);
  1367. this.channels.r = c[0];
  1368. this.channels.g = c[1];
  1369. this.channels.b = c[2];
  1370. this.exposeColor(t);
  1371. return !0;
  1372. };
  1373. this.fromRGBA = function (c, k, p, n, t) {
  1374. void 0 === c && (c = null);
  1375. void 0 === k && (k = null);
  1376. void 0 === p && (p = null);
  1377. void 0 === n && (n = null);
  1378. if (null !== c) {
  1379. if (isNaN(c)) return !1;
  1380. c = Math.max(0, Math.min(255, c));
  1381. }
  1382. if (null !== k) {
  1383. if (isNaN(k)) return !1;
  1384. k = Math.max(0, Math.min(255, k));
  1385. }
  1386. if (null !== p) {
  1387. if (isNaN(p)) return !1;
  1388. p = Math.max(0, Math.min(255, p));
  1389. }
  1390. if (null !== n) {
  1391. if (isNaN(n)) return !1;
  1392. this.channels.a = this.hasAlphaChannel() ? Math.max(0, Math.min(1, this.maxA, n), this.minA) : 1;
  1393. }
  1394. c = a.RGB_HSV(null === c ? this.channels.r : c, null === k ? this.channels.g : k, null === p ? this.channels.b : p);
  1395. null !== c[0] && (this.channels.h = Math.max(0, Math.min(360, c[0])));
  1396. 0 !== c[2] && (this.channels.s = Math.max(0, this.minS, Math.min(100, this.maxS, c[1])));
  1397. this.channels.v = Math.max(0, this.minV, Math.min(100, this.maxV, c[2]));
  1398. c = a.HSV_RGB(this.channels.h, this.channels.s, this.channels.v);
  1399. this.channels.r = c[0];
  1400. this.channels.g = c[1];
  1401. this.channels.b = c[2];
  1402. this.exposeColor(t);
  1403. return !0;
  1404. };
  1405. this.fromHSV = function (c, k, p, n) {
  1406. return this.fromHSVA(c, k, p, null, n);
  1407. };
  1408. this.fromRGB = function (c, k, p, n) {
  1409. return this.fromRGBA(c, k, p, null, n);
  1410. };
  1411. this.fromString = function (c, k) {
  1412. if (!this.required && "" === c.trim()) return this.setPreviewElementBg(null), this.setValueElementValue(""), !0;
  1413. c = a.parseColorString(c);
  1414. if (!c) return !1;
  1415. "any" === this.format.toLowerCase() && (this._setFormat(c.format), a.isAlphaFormat(this.getFormat()) || (c.rgba[3] = 1));
  1416. this.fromRGBA(c.rgba[0], c.rgba[1], c.rgba[2], c.rgba[3], k);
  1417. return !0;
  1418. };
  1419. this.randomize = function (c, k, p, n, t, x, A, v) {
  1420. void 0 === c && (c = 0);
  1421. void 0 === k && (k = 100);
  1422. void 0 === p && (p = 0);
  1423. void 0 === n && (n = 100);
  1424. void 0 === t && (t = 0);
  1425. void 0 === x && (x = 359);
  1426. void 0 === A && (A = 1);
  1427. void 0 === v && (v = 1);
  1428. this.fromHSVA(
  1429. t + Math.floor(Math.random() * (x - t + 1)),
  1430. p + Math.floor(Math.random() * (n - p + 1)),
  1431. c + Math.floor(Math.random() * (k - c + 1)),
  1432. (100 * A + Math.floor(Math.random() * (100 * (v - A) + 1))) / 100
  1433. );
  1434. };
  1435. this.toString = function (c) {
  1436. void 0 === c && (c = this.getFormat());
  1437. switch (c.toLowerCase()) {
  1438. case "hex":
  1439. return this.toHEXString();
  1440. case "hexa":
  1441. return this.toHEXAString();
  1442. case "rgb":
  1443. return this.toRGBString();
  1444. case "rgba":
  1445. return this.toRGBAString();
  1446. }
  1447. return !1;
  1448. };
  1449. this.toHEXString = function () {
  1450. return a.hexColor(this.channels.r, this.channels.g, this.channels.b);
  1451. };
  1452. this.toHEXAString = function () {
  1453. return a.hexaColor(this.channels.r, this.channels.g, this.channels.b, this.channels.a);
  1454. };
  1455. this.toRGBString = function () {
  1456. return a.rgbColor(this.channels.r, this.channels.g, this.channels.b);
  1457. };
  1458. this.toRGBAString = function () {
  1459. return a.rgbaColor(this.channels.r, this.channels.g, this.channels.b, this.channels.a);
  1460. };
  1461. this.toGrayscale = function () {
  1462. return 0.213 * this.channels.r + 0.715 * this.channels.g + 0.072 * this.channels.b;
  1463. };
  1464. this.toCanvas = function () {
  1465. return a.genColorPreviewCanvas(this.toRGBAString()).canvas;
  1466. };
  1467. this.toDataURL = function () {
  1468. return this.toCanvas().toDataURL();
  1469. };
  1470. this.toBackground = function () {
  1471. return a.pub.background(this.toRGBAString());
  1472. };
  1473. this.isLight = function () {
  1474. return 127.5 < this.toGrayscale();
  1475. };
  1476. this.hide = function () {
  1477. r() &&
  1478. (a.removeClass(f.targetElement, a.pub.activeClassName),
  1479. a.picker.wrap && a.picker.wrap.parentNode && a.picker.wrap.parentNode.removeChild(a.picker.wrap),
  1480. delete a.picker.owner);
  1481. };
  1482. this.show = function () {
  1483. g();
  1484. };
  1485. this.redraw = function () {
  1486. r() && g();
  1487. };
  1488. this.getFormat = function () {
  1489. return this._currentFormat;
  1490. };
  1491. this._setFormat = function (c) {
  1492. this._currentFormat = c.toLowerCase();
  1493. };
  1494. this.hasAlphaChannel = function () {
  1495. return "auto" === this.alphaChannel
  1496. ? "any" === this.format.toLowerCase() || a.isAlphaFormat(this.getFormat()) || void 0 !== this.alpha || void 0 !== this.alphaElement
  1497. : this.alphaChannel;
  1498. };
  1499. this.processValueInput = function (c) {
  1500. this.fromString(c) || this.exposeColor();
  1501. };
  1502. this.processAlphaInput = function (c) {
  1503. this.fromHSVA(null, null, null, parseFloat(c)) || this.exposeColor();
  1504. };
  1505. this.exposeColor = function (c) {
  1506. var k = this.toString(),
  1507. p = this.getFormat();
  1508. a.setDataAttr(this.targetElement, "current-color", k);
  1509. if (!(c & a.flags.leaveValue) && this.valueElement) {
  1510. if ("hex" === p || "hexa" === p) this.uppercase || (k = k.toLowerCase()), this.hash || (k = k.replace(/^#/, ""));
  1511. this.setValueElementValue(k);
  1512. }
  1513. c & a.flags.leaveAlpha || !this.alphaElement || this.setAlphaElementValue(Math.round(100 * this.channels.a) / 100);
  1514. c & a.flags.leavePreview ||
  1515. !this.previewElement ||
  1516. (a.isTextInput(this.previewElement) || (a.isButton(this.previewElement) && a.isButtonEmpty(this.previewElement)), this.setPreviewElementBg(this.toRGBAString()));
  1517. r() && (h(), l(), m());
  1518. };
  1519. this.setPreviewElementBg = function (c) {
  1520. if (this.previewElement) {
  1521. var k = null,
  1522. p = null;
  1523. if (a.isTextInput(this.previewElement) || (a.isButton(this.previewElement) && !a.isButtonEmpty(this.previewElement)))
  1524. (k = this.previewPosition), (p = this.previewSize);
  1525. var n = [];
  1526. c
  1527. ? (n.push({
  1528. image: a.genColorPreviewGradient(c, k, p ? p - a.pub.previewSeparator.length : null),
  1529. position: "left top",
  1530. size: "auto",
  1531. repeat: k ? "repeat-y" : "repeat",
  1532. origin: "padding-box",
  1533. }),
  1534. (c = a.genColorPreviewCanvas("rgba(0,0,0,0)", k ? { left: "right", right: "left" }[k] : null, p, !0)),
  1535. n.push({
  1536. image: "url('" + c.canvas.toDataURL() + "')",
  1537. position: (k || "left") + " top",
  1538. size: c.width + "px " + c.height + "px",
  1539. repeat: k ? "repeat-y" : "repeat",
  1540. origin: "padding-box",
  1541. }))
  1542. : n.push({
  1543. image: "none",
  1544. position: "left top",
  1545. size: "auto",
  1546. repeat: "no-repeat",
  1547. origin: "padding-box",
  1548. });
  1549. c = [];
  1550. p = [];
  1551. for (var t = [], x = [], A = [], v = 0; v < n.length; v += 1) c.push(n[v].image), p.push(n[v].position), t.push(n[v].size), x.push(n[v].repeat), A.push(n[v].origin);
  1552. n = {
  1553. "background-image": c.join(", "),
  1554. "background-position": p.join(", "),
  1555. "background-size": t.join(", "),
  1556. "background-repeat": x.join(", "),
  1557. "background-origin": A.join(", "),
  1558. };
  1559. a.setStyle(this.previewElement, n, this.forceStyle);
  1560. n = { left: null, right: null };
  1561. k && (n[k] = this.previewSize + this.previewPadding + "px");
  1562. n = { "padding-left": n.left, "padding-right": n.right };
  1563. a.setStyle(this.previewElement, n, this.forceStyle, !0);
  1564. }
  1565. };
  1566. this.setValueElementValue = function (c) {
  1567. this.valueElement && ("input" === a.nodeName(this.valueElement) ? (this.valueElement.value = c) : (this.valueElement.innerHTML = C.createHTML(c)));
  1568. };
  1569. this.setAlphaElementValue = function (c) {
  1570. this.alphaElement && ("input" === a.nodeName(this.alphaElement) ? (this.alphaElement.value = c) : (this.alphaElement.innerHTML = C.createHTML(c)));
  1571. };
  1572. this._processParentElementsInDOM = function () {
  1573. if (!this._parentElementsProcessed) {
  1574. this._parentElementsProcessed = !0;
  1575. var c = this.targetElement;
  1576. do {
  1577. var k = a.getCompStyle(c);
  1578. k.position && "fixed" === k.position.toLowerCase() && (this.fixed = !0);
  1579. c === this.targetElement || a.getData(c, "hasScrollListener") || (c.addEventListener("scroll", a.onParentScroll, !1), a.setData(c, "hasScrollListener", !0));
  1580. } while ((c = c.parentNode) && "body" !== a.nodeName(c));
  1581. }
  1582. };
  1583. this.tryHide = function () {
  1584. this.hideOnLeave && this.hide();
  1585. };
  1586. this.set__palette = function (c) {
  1587. this.palette = c;
  1588. this._palette = a.parsePaletteValue(c);
  1589. this._paletteHasTransparency = a.containsTranparentColor(this._palette);
  1590. };
  1591. if (a.pub.options)
  1592. for (var B in a.pub.options)
  1593. if (a.pub.options.hasOwnProperty(B))
  1594. try {
  1595. e(B, a.pub.options[B]);
  1596. } catch (c) {
  1597. console.error(c);
  1598. }
  1599. var E = [];
  1600. d.preset && ("string" === typeof d.preset ? (E = d.preset.split(/\s+/)) : Array.isArray(d.preset) ? (E = d.preset.slice()) : console.warn("Unrecognized preset value"));
  1601. -1 === E.indexOf("default") && E.push("default");
  1602. for (var H = E.length - 1; 0 <= H; --H) {
  1603. var G = E[H];
  1604. if (G && a.pub.presets.hasOwnProperty(G))
  1605. for (B in a.pub.presets[G])
  1606. if (a.pub.presets[G].hasOwnProperty(B))
  1607. try {
  1608. e(B, a.pub.presets[G][B]);
  1609. } catch (c) {
  1610. console.error(c);
  1611. }
  1612. }
  1613. E = ["preset"];
  1614. for (B in d)
  1615. if (d.hasOwnProperty(B) && -1 === E.indexOf(B))
  1616. try {
  1617. e(B, d[B]);
  1618. } catch (c) {
  1619. console.error(c);
  1620. }
  1621. this.container = void 0 === this.container ? q.document.body : a.node(this.container);
  1622. if (!this.container) throw Error("No container element");
  1623. this.targetElement = a.node(b);
  1624. if (!this.targetElement) {
  1625. if ("string" === typeof b && /^[a-zA-Z][\w:.-]*$/.test(b)) throw Error("Need CSS selector.");
  1626. throw Error("No target element");
  1627. }
  1628. if (this.targetElement.frcolorpicker && this.targetElement.frcolorpicker instanceof a.pub) throw Error("Redundant Fr-Color-picker");
  1629. this.targetElement.frcolorpicker = this;
  1630. a.addClass(this.targetElement, a.pub.className);
  1631. a.instances.push(this);
  1632. a.isButton(this.targetElement) &&
  1633. ("button" !== this.targetElement.type.toLowerCase() && (this.targetElement.type = "button"),
  1634. a.isButtonEmpty(this.targetElement) &&
  1635. (a.removeChildren(this.targetElement),
  1636. this.targetElement.appendChild(q.document.createTextNode("\u00a0")),
  1637. (b = a.getCompStyle(this.targetElement)),
  1638. (parseFloat(b["min-width"]) || 0) < this.previewSize && a.setStyle(this.targetElement, { "min-width": this.previewSize + "px" }, this.forceStyle)));
  1639. void 0 === this.valueElement
  1640. ? a.isTextInput(this.targetElement) && (this.valueElement = this.targetElement)
  1641. : null !== this.valueElement && (this.valueElement = a.node(this.valueElement));
  1642. this.alphaElement && (this.alphaElement = a.node(this.alphaElement));
  1643. void 0 === this.previewElement ? (this.previewElement = this.targetElement) : null !== this.previewElement && (this.previewElement = a.node(this.previewElement));
  1644. this.valueElement &&
  1645. a.isTextInput(this.valueElement) &&
  1646. ((b = this.valueElement.oninput),
  1647. (this.valueElement.oninput = null),
  1648. this.valueElement.addEventListener("keydown", w, !1),
  1649. this.valueElement.addEventListener("change", z, !1),
  1650. this.valueElement.addEventListener("input", T, !1),
  1651. b && this.valueElement.addEventListener("input", b, !1),
  1652. this.valueElement.setAttribute("autocomplete", "off"),
  1653. this.valueElement.setAttribute("autocorrect", "off"),
  1654. this.valueElement.setAttribute("autocapitalize", "off"),
  1655. this.valueElement.setAttribute("spellcheck", !1));
  1656. this.alphaElement &&
  1657. a.isTextInput(this.alphaElement) &&
  1658. (this.alphaElement.addEventListener("keydown", u, !1),
  1659. this.alphaElement.addEventListener("change", S, !1),
  1660. this.alphaElement.addEventListener("input", U, !1),
  1661. this.alphaElement.setAttribute("autocomplete", "off"),
  1662. this.alphaElement.setAttribute("autocorrect", "off"),
  1663. this.alphaElement.setAttribute("autocapitalize", "off"),
  1664. this.alphaElement.setAttribute("spellcheck", !1));
  1665. b = "FFFFFF";
  1666. void 0 !== this.value ? (b = this.value) : this.valueElement && void 0 !== this.valueElement.value && (b = this.valueElement.value);
  1667. d = void 0;
  1668. void 0 !== this.alpha ? (d = "" + this.alpha) : this.alphaElement && void 0 !== this.alphaElement.value && (d = this.alphaElement.value);
  1669. this._currentFormat = null;
  1670. -1 < ["auto", "any"].indexOf(this.format.toLowerCase())
  1671. ? (this._currentFormat = (B = a.parseColorString(b)) ? B.format : "hex")
  1672. : (this._currentFormat = this.format.toLowerCase());
  1673. this.processValueInput(b);
  1674. void 0 !== d && this.processAlphaInput(d);
  1675. this.random && this.randomize.apply(this, Array.isArray(this.random) ? this.random : []);
  1676. },
  1677. };
  1678. a.pub.className = I;
  1679. a.pub.activeClassName = K;
  1680. a.pub.looseJSON = !0;
  1681. a.pub.presets = {};
  1682. a.pub.presets["default"] = {};
  1683. a.pub.sliderInnerSpace = 3;
  1684. a.pub.chessboardSize = 8;
  1685. a.pub.chessboardColor1 = "#666666";
  1686. a.pub.chessboardColor2 = "#999999";
  1687. a.pub.previewSeparator = [];
  1688. a.pub.init = function () {
  1689. if (!a.initialized)
  1690. for (
  1691. q.document.addEventListener("mousedown", a.onDocumentMouseDown, !1),
  1692. q.document.addEventListener("keyup", a.onDocumentKeyUp, !1),
  1693. q.addEventListener("resize", a.onWindowResize, !1),
  1694. q.addEventListener("scroll", a.onWindowScroll, !1),
  1695. a.pub.install(),
  1696. a.initialized = !0;
  1697. a.readyQueue.length;
  1698.  
  1699. )
  1700. a.readyQueue.shift()();
  1701. };
  1702. a.pub.install = function (b) {
  1703. var d = !0;
  1704. try {
  1705. a.installBySelector("[data-frcolorpicker]", b);
  1706. } catch (e) {
  1707. d = !1;
  1708. }
  1709. if (a.pub.lookupClass)
  1710. try {
  1711. a.installBySelector("input." + a.pub.lookupClass + ", button." + a.pub.lookupClass, b);
  1712. } catch (e) {}
  1713. return d;
  1714. };
  1715. a.pub.ready = function (b) {
  1716. if ("function" !== typeof b) return !1;
  1717. a.initialized ? b() : a.readyQueue.push(b);
  1718. return !0;
  1719. };
  1720. a.pub.trigger = function (b) {
  1721. var d = function () {
  1722. a.triggerGlobal(b);
  1723. };
  1724. a.initialized ? d() : a.pub.ready(d);
  1725. };
  1726. a.pub.hide = function () {
  1727. a.picker && a.picker.owner && a.picker.owner.hide();
  1728. };
  1729. a.pub.chessboard = function (b) {
  1730. b || (b = "rgba(0,0,0,0)");
  1731. return a.genColorPreviewCanvas(b).canvas.toDataURL();
  1732. };
  1733. a.pub.background = function (b) {
  1734. var d = [];
  1735. d.push(a.genColorPreviewGradient(b));
  1736. b = a.genColorPreviewCanvas();
  1737. d.push(["url('" + b.canvas.toDataURL() + "')", "left top repeat"].join(" "));
  1738. return d.join(", ");
  1739. };
  1740. a.pub.options = {};
  1741. a.pub.lookupClass = I;
  1742. a.pub.installByClassName = function () {
  1743. return !1;
  1744. };
  1745. a.register();
  1746. return a.pub;
  1747. })();
  1748. "undefined" === typeof q.FRColorPicker && (q.FRColorPicker = q.frColorPicker = J);
  1749. return J;
  1750. });