frColorPicker

frColorPicker 拾色器专供Font Rendering使用。

当前为 2021-12-20 提交的版本,查看 最新版本

此脚本不应直接安装,它是供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.cn-greasyfork.org/scripts/437214/1000333/frColorPicker.js

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