From fae6e6d22fb9b440d303d824c4db318ffb26a44b Mon Sep 17 00:00:00 2001 From: Olivier Gagnon Date: Sat, 2 Oct 2021 00:24:50 -0400 Subject: [PATCH] fix research tree, kinda --- src/Corporation/ui/IndustryOverview.tsx | 15 +- src/Corporation/ui/ResearchModal.tsx | 122 + src/Corporation/ui/ResearchPopup.tsx | 96 - src/NetscriptFunctions.ts | 4 - src/ThirdParty/raphael.min.js | 4887 ----------------- src/ThirdParty/treant-js.d.ts | 1 - src/index.html | 1 - src/ui/React/MuiTextField.tsx | 81 - src/ui/React/Select.tsx | 38 - src/ui/React/createPopup.tsx | 95 - src/ui/createStatusText.ts | 36 - src/ui/navigationTracking.ts | 161 - src/ui/uiHelpers/clearEventListeners.ts | 29 - src/ui/uiHelpers/createElement.ts | 308 -- src/ui/uiHelpers/createPopup.ts | 37 - src/ui/uiHelpers/getElementById.ts | 14 - src/ui/uiHelpers/getSelectData.ts | 25 - src/ui/uiHelpers/removeChildrenFromElement.ts | 28 - src/ui/uiHelpers/removeElement.ts | 26 - src/ui/uiHelpers/removeElementById.ts | 15 - 20 files changed, 126 insertions(+), 5893 deletions(-) create mode 100644 src/Corporation/ui/ResearchModal.tsx delete mode 100644 src/Corporation/ui/ResearchPopup.tsx delete mode 100644 src/ThirdParty/raphael.min.js delete mode 100644 src/ThirdParty/treant-js.d.ts delete mode 100644 src/ui/React/MuiTextField.tsx delete mode 100644 src/ui/React/Select.tsx delete mode 100644 src/ui/React/createPopup.tsx delete mode 100644 src/ui/createStatusText.ts delete mode 100644 src/ui/navigationTracking.ts delete mode 100644 src/ui/uiHelpers/clearEventListeners.ts delete mode 100644 src/ui/uiHelpers/createElement.ts delete mode 100644 src/ui/uiHelpers/createPopup.ts delete mode 100644 src/ui/uiHelpers/getElementById.ts delete mode 100644 src/ui/uiHelpers/getSelectData.ts delete mode 100644 src/ui/uiHelpers/removeChildrenFromElement.ts delete mode 100644 src/ui/uiHelpers/removeElement.ts delete mode 100644 src/ui/uiHelpers/removeElementById.ts diff --git a/src/Corporation/ui/IndustryOverview.tsx b/src/Corporation/ui/IndustryOverview.tsx index 1712d261a..4bef7d3fd 100644 --- a/src/Corporation/ui/IndustryOverview.tsx +++ b/src/Corporation/ui/IndustryOverview.tsx @@ -8,8 +8,7 @@ import { IndustryUpgrades } from "../IndustryUpgrades"; import { numeralWrapper } from "../../ui/numeralFormat"; import { createProgressBarText } from "../../utils/helpers/createProgressBarText"; import { MakeProductModal } from "./MakeProductModal"; -import { ResearchPopup } from "./ResearchPopup"; -import { createPopup } from "../../ui/React/createPopup"; +import { ResearchModal } from "./ResearchModal"; import { Money } from "../../ui/React/Money"; import { MoneyRate } from "../../ui/React/MoneyRate"; import { StatsTable } from "../../ui/React/StatsTable"; @@ -96,6 +95,7 @@ function Text(): React.ReactElement { const corp = useCorporation(); const division = useDivision(); const [helpOpen, setHelpOpen] = useState(false); + const [researchOpen, setResearchOpen] = useState(false); const vechain = corp.unlockUpgrades[4] === 1; const profit = division.lastCycleRevenue.minus(division.lastCycleExpenses).toNumber(); @@ -116,14 +116,6 @@ function Text(): React.ReactElement { }); } - function openResearchPopup(): void { - const popupId = "corporation-research-popup-box"; - createPopup(popupId, ResearchPopup, { - industry: division, - popupId: popupId, - }); - } - return ( <> @@ -214,9 +206,10 @@ function Text(): React.ReactElement { > Scientific Research: {numeralWrapper.format(division.sciResearch.qty, "0.000a")} - + setResearchOpen(false)} industry={division} /> ); diff --git a/src/Corporation/ui/ResearchModal.tsx b/src/Corporation/ui/ResearchModal.tsx new file mode 100644 index 000000000..0594d01d9 --- /dev/null +++ b/src/Corporation/ui/ResearchModal.tsx @@ -0,0 +1,122 @@ +import React, { useState } from "react"; +import { Modal } from "../../ui/React/Modal"; +import { IndustryResearchTrees } from "../IndustryData"; +import { CorporationConstants } from "../data/Constants"; +import { IIndustry } from "../IIndustry"; +import { Research } from "../Actions"; +import { Node } from "../ResearchTree"; +import { ResearchMap } from "../ResearchMap"; +import { dialogBoxCreate } from "../../ui/React/DialogBox"; +import Typography from "@mui/material/Typography"; +import Tooltip from "@mui/material/Tooltip"; +import Button from "@mui/material/Button"; +import Box from "@mui/material/Box"; + +import ListItemButton from "@mui/material/ListItemButton"; +import ListItemText from "@mui/material/ListItemText"; +import Collapse from "@mui/material/Collapse"; +import ExpandMore from "@mui/icons-material/ExpandMore"; +import ExpandLess from "@mui/icons-material/ExpandLess"; +interface INodeProps { + n: Node | null; + division: IIndustry; +} +function Upgrade({ n, division }: INodeProps): React.ReactElement { + const [open, setOpen] = useState(false); + if (n === null) return <>; + const r = ResearchMap[n.text]; + let disabled = division.sciResearch.qty < r.cost; + const parent = n.parent; + if (parent !== null) { + disabled = disabled || !parent.researched; + } + + function research(): void { + if (n === null || disabled) return; + try { + Research(division, n.text); + } catch (err) { + dialogBoxCreate(err + ""); + return; + } + + dialogBoxCreate( + `Researched ${n.text}. It may take a market cycle ` + + `(~${CorporationConstants.SecsPerMarketCycle} seconds) before the effects of ` + + `the Research apply.`, + ); + } + + const but = ( + + + Research points: {r.cost} +
+ {r.desc} +
+ } + > + + + + + + ); + + if (n.children.length === 0) return but; + + return ( + + + {but} + setOpen((old) => !old)}> + + {open ? : } + + + + + {n.children.map((m) => ( + + ))} + + + + ); +} + +interface IProps { + open: boolean; + onClose: () => void; + industry: IIndustry; +} + +// Create the Research Tree UI for this Industry +export function ResearchModal(props: IProps): React.ReactElement { + const researchTree = IndustryResearchTrees[props.industry.type]; + if (researchTree === undefined) return <>; + + return ( + + + + Research points: {props.industry.sciResearch.qty} +
+ Multipliers from research: +
* Advertising Multiplier: x{researchTree.getAdvertisingMultiplier()} +
* Employee Charisma Multiplier: x{researchTree.getEmployeeChaMultiplier()} +
* Employee Creativity Multiplier: x{researchTree.getEmployeeCreMultiplier()} +
* Employee Efficiency Multiplier: x{researchTree.getEmployeeEffMultiplier()} +
* Employee Intelligence Multiplier: x{researchTree.getEmployeeIntMultiplier()} +
* Production Multiplier: x{researchTree.getProductionMultiplier()} +
* Sales Multiplier: x{researchTree.getSalesMultiplier()} +
* Scientific Research Multiplier: x{researchTree.getScientificResearchMultiplier()} +
* Storage Multiplier: x{researchTree.getStorageMultiplier()} +
+
+ ); +} diff --git a/src/Corporation/ui/ResearchPopup.tsx b/src/Corporation/ui/ResearchPopup.tsx deleted file mode 100644 index 294d24a2b..000000000 --- a/src/Corporation/ui/ResearchPopup.tsx +++ /dev/null @@ -1,96 +0,0 @@ -import React, { useEffect } from "react"; -import { dialogBoxCreate } from "../../ui/React/DialogBox"; -import { removePopup } from "../../ui/React/createPopup"; -import { IndustryResearchTrees } from "../IndustryData"; -import { CorporationConstants } from "../data/Constants"; -import { Treant } from "treant-js"; -import { IIndustry } from "../IIndustry"; -import { Research } from "../Actions"; - -interface IProps { - industry: IIndustry; - popupId: string; -} - -// Create the Research Tree UI for this Industry -export function ResearchPopup(props: IProps): React.ReactElement { - const researchTree = IndustryResearchTrees[props.industry.type]; - if (researchTree === undefined) return <>; - useEffect(() => { - { - const boxContent = document.getElementById(`${props.popupId}-content`); - if (boxContent != null) { - boxContent.style.minHeight = "80vh"; - } - } - - // Get the tree's markup (i.e. config) for Treant - const markup = researchTree.createTreantMarkup(); - markup.chart.container = "#" + props.popupId + "-content"; - markup.chart.nodeAlign = "BOTTOM"; - markup.chart.rootOrientation = "WEST"; - markup.chart.siblingSeparation = 40; - markup.chart.connectors = { - type: "step", - style: { - "arrow-end": "block-wide-long", - stroke: "white", - "stroke-width": 2, - }, - }; - - Treant(markup); - - // Add Event Listeners for all Nodes - const allResearch = researchTree.getAllNodes(); - for (let i = 0; i < allResearch.length; ++i) { - // If this is already Researched, skip it - if (props.industry.researched[allResearch[i]] === true) { - continue; - } - - // Get the DOM Element to add a click listener to it - const sanitizedName = allResearch[i].replace(/\s/g, ""); - const div = document.getElementById(sanitizedName + "-corp-research-click-listener"); - if (div == null) { - console.warn(`Could not find Research Tree div for ${sanitizedName}`); - continue; - } - - div.addEventListener("click", () => { - try { - Research(props.industry, allResearch[i]); - } catch (err) { - dialogBoxCreate(err + ""); - return; - } - - dialogBoxCreate( - `Researched ${allResearch[i]}. It may take a market cycle ` + - `(~${CorporationConstants.SecsPerMarketCycle} seconds) before the effects of ` + - `the Research apply.`, - ); - removePopup(props.popupId); - }); - } - }); - - return ( -
-
- Research points: {props.industry.sciResearch.qty} -
- Multipliers from research: -
* Advertising Multiplier: x{researchTree.getAdvertisingMultiplier()} -
* Employee Charisma Multiplier: x{researchTree.getEmployeeChaMultiplier()} -
* Employee Creativity Multiplier: x{researchTree.getEmployeeCreMultiplier()} -
* Employee Efficiency Multiplier: x{researchTree.getEmployeeEffMultiplier()} -
* Employee Intelligence Multiplier: x{researchTree.getEmployeeIntMultiplier()} -
* Production Multiplier: x{researchTree.getProductionMultiplier()} -
* Sales Multiplier: x{researchTree.getSalesMultiplier()} -
* Scientific Research Multiplier: x{researchTree.getScientificResearchMultiplier()} -
* Storage Multiplier: x{researchTree.getStorageMultiplier()} -
-
- ); -} diff --git a/src/NetscriptFunctions.ts b/src/NetscriptFunctions.ts index 7575fb324..173340ef2 100644 --- a/src/NetscriptFunctions.ts +++ b/src/NetscriptFunctions.ts @@ -150,10 +150,6 @@ import { LogBoxEvents } from "./ui/React/LogBoxManager"; import { arrayToString } from "./utils/helpers/arrayToString"; import { isString } from "./utils/helpers/isString"; -import { createElement } from "./ui/uiHelpers/createElement"; -import { createPopup } from "./ui/uiHelpers/createPopup"; -import { removeElementById } from "./ui/uiHelpers/removeElementById"; - import { OfficeSpace } from "./Corporation/OfficeSpace"; import { Employee } from "./Corporation/Employee"; import { Product } from "./Corporation/Product"; diff --git a/src/ThirdParty/raphael.min.js b/src/ThirdParty/raphael.min.js deleted file mode 100644 index 58c81da74..000000000 --- a/src/ThirdParty/raphael.min.js +++ /dev/null @@ -1,4887 +0,0 @@ -!(function (t, e) { - typeof exports == "object" && typeof module == "object" - ? (module.exports = e()) - : typeof define == "function" && define.amd - ? define([], e) - : typeof exports == "object" - ? (exports.Raphael = e()) - : (t.Raphael = e()); -})(window, function () { - return (function (t) { - var e = {}; - function r(i) { - if (e[i]) return e[i].exports; - var n = (e[i] = { i: i, l: !1, exports: {} }); - return t[i].call(n.exports, n, n.exports, r), (n.l = !0), n.exports; - } - return ( - (r.m = t), - (r.c = e), - (r.d = function (t, e, i) { - r.o(t, e) || - Object.defineProperty(t, e, { - configurable: !1, - enumerable: !0, - get: i, - }); - }), - (r.r = function (t) { - Object.defineProperty(t, "__esModule", { value: !0 }); - }), - (r.n = function (t) { - var e = - t && t.__esModule - ? function () { - return t.default; - } - : function () { - return t; - }; - return r.d(e, "a", e), e; - }), - (r.o = function (t, e) { - return Object.prototype.hasOwnProperty.call(t, e); - }), - (r.p = ""), - r((r.s = 4)) - ); - })([ - function (t, e, r) { - var i, n; - (i = [r(3)]), - void 0 === - (n = function (t) { - function e(i) { - if (e.is(i, "function")) return r ? i() : t.on("raphael.DOMload", i); - if (e.is(i, T)) return e._engine.create[c](e, i.splice(0, 3 + e.is(i[0], A))).add(i); - var n = Array.prototype.slice.call(arguments, 0); - if (e.is(n[n.length - 1], "function")) { - var a = n.pop(); - return r - ? a.call(e._engine.create[c](e, n)) - : t.on("raphael.DOMload", function () { - a.call(e._engine.create[c](e, n)); - }); - } - return e._engine.create[c](e, arguments); - } - (e.version = "2.2.0"), (e.eve = t); - var r, - i, - n = /[, ]+/, - a = { - circle: 1, - rect: 1, - path: 1, - ellipse: 1, - text: 1, - image: 1, - }, - s = /\{(\d+)\}/g, - o = "hasOwnProperty", - l = { doc: document, win: window }, - h = { - was: Object.prototype[o].call(l.win, "Raphael"), - is: l.win.Raphael, - }, - u = function () { - this.ca = this.customAttributes = {}; - }, - c = "apply", - f = "concat", - p = "ontouchstart" in l.win || (l.win.DocumentTouch && l.doc instanceof DocumentTouch), - d = "", - g = " ", - x = String, - v = "split", - y = - "click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel"[ - v - ](g), - m = { - mousedown: "touchstart", - mousemove: "touchmove", - mouseup: "touchend", - }, - b = x.prototype.toLowerCase, - _ = Math, - w = _.max, - k = _.min, - B = _.abs, - C = _.pow, - S = _.PI, - A = "number", - T = "array", - M = Object.prototype.toString, - E = - ((e._ISURL = /^url\(['"]?(.+?)['"]?\)$/i), - /^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i), - N = { NaN: 1, Infinity: 1, "-Infinity": 1 }, - L = /^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/, - P = _.round, - z = parseFloat, - F = parseInt, - R = x.prototype.toUpperCase, - j = (e._availableAttrs = { - "arrow-end": "none", - "arrow-start": "none", - blur: 0, - "clip-rect": "0 0 1e9 1e9", - cursor: "default", - cx: 0, - cy: 0, - fill: "#fff", - "fill-opacity": 1, - font: '10px "Arial"', - "font-family": '"Arial"', - "font-size": "10", - "font-style": "normal", - "font-weight": 400, - gradient: 0, - height: 0, - href: "http://raphaeljs.com/", - "letter-spacing": 0, - opacity: 1, - path: "M0,0", - r: 0, - rx: 0, - ry: 0, - src: "", - stroke: "#000", - "stroke-dasharray": "", - "stroke-linecap": "butt", - "stroke-linejoin": "butt", - "stroke-miterlimit": 0, - "stroke-opacity": 1, - "stroke-width": 1, - target: "_blank", - "text-anchor": "middle", - title: "Raphael", - transform: "", - width: 0, - x: 0, - y: 0, - class: "", - }), - I = (e._availableAnimAttrs = { - blur: A, - "clip-rect": "csv", - cx: A, - cy: A, - fill: "colour", - "fill-opacity": A, - "font-size": A, - height: A, - opacity: A, - path: "path", - r: A, - rx: A, - ry: A, - stroke: "colour", - "stroke-opacity": A, - "stroke-width": A, - transform: "transform", - width: A, - x: A, - y: A, - }), - D = - /[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/, - q = { hs: 1, rg: 1 }, - O = /,?([achlmqrstvxz]),?/gi, - V = - /([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi, - Y = - /([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi, - W = - /(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/gi, - G = - ((e._radial_gradient = - /^r(?:\(([^,]+?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*([^\)]+?)\))?/), - {}), - H = function (t, e) { - return z(t) - z(e); - }, - X = function (t) { - return t; - }, - U = (e._rectPath = function (t, e, r, i, n) { - return n - ? [ - ["M", t + n, e], - ["l", r - 2 * n, 0], - ["a", n, n, 0, 0, 1, n, n], - ["l", 0, i - 2 * n], - ["a", n, n, 0, 0, 1, -n, n], - ["l", 2 * n - r, 0], - ["a", n, n, 0, 0, 1, -n, -n], - ["l", 0, 2 * n - i], - ["a", n, n, 0, 0, 1, n, -n], - ["z"], - ] - : [["M", t, e], ["l", r, 0], ["l", 0, i], ["l", -r, 0], ["z"]]; - }), - $ = function (t, e, r, i) { - return ( - i == null && (i = r), - [["M", t, e], ["m", 0, -i], ["a", r, i, 0, 1, 1, 0, 2 * i], ["a", r, i, 0, 1, 1, 0, -2 * i], ["z"]] - ); - }, - Z = (e._getPath = { - path: function (t) { - return t.attr("path"); - }, - circle: function (t) { - var e = t.attrs; - return $(e.cx, e.cy, e.r); - }, - ellipse: function (t) { - var e = t.attrs; - return $(e.cx, e.cy, e.rx, e.ry); - }, - rect: function (t) { - var e = t.attrs; - return U(e.x, e.y, e.width, e.height, e.r); - }, - image: function (t) { - var e = t.attrs; - return U(e.x, e.y, e.width, e.height); - }, - text: function (t) { - var e = t._getBBox(); - return U(e.x, e.y, e.width, e.height); - }, - set: function (t) { - var e = t._getBBox(); - return U(e.x, e.y, e.width, e.height); - }, - }), - Q = (e.mapPath = function (t, e) { - if (!e) return t; - var r, i, n, a, s, o, l; - for (n = 0, s = (t = At(t)).length; n < s; n++) - for (a = 1, o = (l = t[n]).length; a < o; a += 2) - (r = e.x(l[a], l[a + 1])), (i = e.y(l[a], l[a + 1])), (l[a] = r), (l[a + 1] = i); - return t; - }); - if ( - ((e._g = l), - (e.type = - l.win.SVGAngle || - l.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1") - ? "SVG" - : "VML"), - e.type == "VML") - ) { - var J, - K = l.doc.createElement("div"); - if ( - ((K.innerHTML = ''), - ((J = K.firstChild).style.behavior = "url(#default#VML)"), - !J || typeof J.adj != "object") - ) - return (e.type = d); - K = null; - } - function tt(t) { - if (typeof t == "function" || Object(t) !== t) return t; - var e = new t.constructor(); - for (var r in t) t[o](r) && (e[r] = tt(t[r])); - return e; - } - (e.svg = !(e.vml = e.type == "VML")), - (e._Paper = u), - (e.fn = i = u.prototype = e.prototype), - (e._id = 0), - (e.is = function (t, e) { - return (e = b.call(e)) == "finite" - ? !N[o](+t) - : e == "array" - ? t instanceof Array - : (e == "null" && t === null) || - (e == typeof t && t !== null) || - (e == "object" && t === Object(t)) || - (e == "array" && Array.isArray && Array.isArray(t)) || - M.call(t).slice(8, -1).toLowerCase() == e; - }), - (e.angle = function (t, r, i, n, a, s) { - if (a == null) { - var o = t - i, - l = r - n; - return o || l ? (180 + (180 * _.atan2(-l, -o)) / S + 360) % 360 : 0; - } - return e.angle(t, r, a, s) - e.angle(i, n, a, s); - }), - (e.rad = function (t) { - return ((t % 360) * S) / 180; - }), - (e.deg = function (t) { - return Math.round((((180 * t) / S) % 360) * 1e3) / 1e3; - }), - (e.snapTo = function (t, r, i) { - if (((i = e.is(i, "finite") ? i : 10), e.is(t, T))) { - for (var n = t.length; n--; ) if (B(t[n] - r) <= i) return t[n]; - } else { - var a = r % (t = +t); - if (a < i) return r - a; - if (a > t - i) return r - a + t; - } - return r; - }); - var et, rt; - e.createUUID = - ((et = /[xy]/g), - (rt = function (t) { - var e = (16 * _.random()) | 0; - return (t == "x" ? e : (3 & e) | 8).toString(16); - }), - function () { - return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(et, rt).toUpperCase(); - }); - e.setWindow = function (r) { - t("raphael.setWindow", e, l.win, r), - (l.win = r), - (l.doc = l.win.document), - e._engine.initWin && e._engine.initWin(l.win); - }; - var it = function (t) { - if (e.vml) { - var r, - i = /^\s+|\s+$/g; - try { - var n = new ActiveXObject("htmlfile"); - n.write(""), n.close(), (r = n.body); - } catch (t) { - r = createPopup().document.body; - } - var a = r.createTextRange(); - it = ht(function (t) { - try { - r.style.color = x(t).replace(i, d); - var e = a.queryCommandValue("ForeColor"); - return ( - "#" + - ("000000" + (e = ((255 & e) << 16) | (65280 & e) | ((16711680 & e) >>> 16)).toString(16)).slice( - -6, - ) - ); - } catch (t) { - return "none"; - } - }); - } else { - var s = l.doc.createElement("i"); - (s.title = "Raphaël Colour Picker"), - (s.style.display = "none"), - l.doc.body.appendChild(s), - (it = ht(function (t) { - return (s.style.color = t), l.doc.defaultView.getComputedStyle(s, d).getPropertyValue("color"); - })); - } - return it(t); - }, - nt = function () { - return "hsb(" + [this.h, this.s, this.b] + ")"; - }, - at = function () { - return "hsl(" + [this.h, this.s, this.l] + ")"; - }, - st = function () { - return this.hex; - }, - ot = function (t, r, i) { - if ( - (r == null && - e.is(t, "object") && - "r" in t && - "g" in t && - "b" in t && - ((i = t.b), (r = t.g), (t = t.r)), - r == null && e.is(t, "string")) - ) { - var n = e.getRGB(t); - (t = n.r), (r = n.g), (i = n.b); - } - return (t > 1 || r > 1 || i > 1) && ((t /= 255), (r /= 255), (i /= 255)), [t, r, i]; - }, - lt = function (t, r, i, n) { - var a = { - r: (t *= 255), - g: (r *= 255), - b: (i *= 255), - hex: e.rgb(t, r, i), - toString: st, - }; - return e.is(n, "finite") && (a.opacity = n), a; - }; - function ht(t, e, r) { - return function i() { - var n = Array.prototype.slice.call(arguments, 0), - a = n.join("␀"), - s = (i.cache = i.cache || {}), - l = (i.count = i.count || []); - return s[o](a) - ? ((function (t, e) { - for (var r = 0, i = t.length; r < i; r++) if (t[r] === e) return t.push(t.splice(r, 1)[0]); - })(l, a), - r ? r(s[a]) : s[a]) - : (l.length >= 1e3 && delete s[l.shift()], l.push(a), (s[a] = t[c](e, n)), r ? r(s[a]) : s[a]); - }; - } - (e.color = function (t) { - var r; - return ( - e.is(t, "object") && "h" in t && "s" in t && "b" in t - ? ((r = e.hsb2rgb(t)), (t.r = r.r), (t.g = r.g), (t.b = r.b), (t.hex = r.hex)) - : e.is(t, "object") && "h" in t && "s" in t && "l" in t - ? ((r = e.hsl2rgb(t)), (t.r = r.r), (t.g = r.g), (t.b = r.b), (t.hex = r.hex)) - : (e.is(t, "string") && (t = e.getRGB(t)), - e.is(t, "object") && "r" in t && "g" in t && "b" in t - ? ((r = e.rgb2hsl(t)), (t.h = r.h), (t.s = r.s), (t.l = r.l), (r = e.rgb2hsb(t)), (t.v = r.b)) - : ((t = { hex: "none" }).r = t.g = t.b = t.h = t.s = t.v = t.l = -1)), - (t.toString = st), - t - ); - }), - (e.hsb2rgb = function (t, e, r, i) { - var n, a, s, o, l; - return ( - this.is(t, "object") && - "h" in t && - "s" in t && - "b" in t && - ((r = t.b), (e = t.s), (i = t.o), (t = t.h)), - (o = (l = r * e) * (1 - B(((t = ((t *= 360) % 360) / 60) % 2) - 1))), - (n = a = s = r - l), - lt( - (n += [l, o, 0, 0, o, l][(t = ~~t)]), - (a += [o, l, l, o, 0, 0][t]), - (s += [0, 0, o, l, l, o][t]), - i, - ) - ); - }), - (e.hsl2rgb = function (t, e, r, i) { - var n, a, s, o, l; - return ( - this.is(t, "object") && "h" in t && "s" in t && "l" in t && ((r = t.l), (e = t.s), (t = t.h)), - (t > 1 || e > 1 || r > 1) && ((t /= 360), (e /= 100), (r /= 100)), - (t = ((t *= 360) % 360) / 60), - (o = (l = 2 * e * (r < 0.5 ? r : 1 - r)) * (1 - B((t % 2) - 1))), - (n = a = s = r - l / 2), - lt( - (n += [l, o, 0, 0, o, l][(t = ~~t)]), - (a += [o, l, l, o, 0, 0][t]), - (s += [0, 0, o, l, l, o][t]), - i, - ) - ); - }), - (e.rgb2hsb = function (t, e, r) { - var i, n; - return ( - (t = (r = ot(t, e, r))[0]), - (e = r[1]), - (r = r[2]), - { - h: - (((((n = (i = w(t, e, r)) - k(t, e, r)) == 0 - ? null - : i == t - ? (e - r) / n - : i == e - ? (r - t) / n + 2 - : (t - e) / n + 4) + - 360) % - 6) * - 60) / - 360, - s: n == 0 ? 0 : n / i, - b: i, - toString: nt, - } - ); - }), - (e.rgb2hsl = function (t, e, r) { - var i, n, a, s; - return ( - (t = (r = ot(t, e, r))[0]), - (e = r[1]), - (r = r[2]), - (i = ((n = w(t, e, r)) + (a = k(t, e, r))) / 2), - { - h: - (((((s = n - a) == 0 ? null : n == t ? (e - r) / s : n == e ? (r - t) / s + 2 : (t - e) / s + 4) + - 360) % - 6) * - 60) / - 360, - s: s == 0 ? 0 : i < 0.5 ? s / (2 * i) : s / (2 - 2 * i), - l: i, - toString: at, - } - ); - }), - (e._path2string = function () { - return this.join(",").replace(O, "$1"); - }); - e._preload = function (t, e) { - var r = l.doc.createElement("img"); - (r.style.cssText = "position:absolute;left:-9999em;top:-9999em"), - (r.onload = function () { - e.call(this), (this.onload = null), l.doc.body.removeChild(this); - }), - (r.onerror = function () { - l.doc.body.removeChild(this); - }), - l.doc.body.appendChild(r), - (r.src = t); - }; - function ut() { - return this.hex; - } - function ct(t, e) { - for (var r = [], i = 0, n = t.length; n - 2 * !e > i; i += 2) { - var a = [ - { x: +t[i - 2], y: +t[i - 1] }, - { x: +t[i], y: +t[i + 1] }, - { x: +t[i + 2], y: +t[i + 3] }, - { x: +t[i + 4], y: +t[i + 5] }, - ]; - e - ? i - ? n - 4 == i - ? (a[3] = { x: +t[0], y: +t[1] }) - : n - 2 == i && ((a[2] = { x: +t[0], y: +t[1] }), (a[3] = { x: +t[2], y: +t[3] })) - : (a[0] = { x: +t[n - 2], y: +t[n - 1] }) - : n - 4 == i - ? (a[3] = a[2]) - : i || (a[0] = { x: +t[i], y: +t[i + 1] }), - r.push([ - "C", - (-a[0].x + 6 * a[1].x + a[2].x) / 6, - (-a[0].y + 6 * a[1].y + a[2].y) / 6, - (a[1].x + 6 * a[2].x - a[3].x) / 6, - (a[1].y + 6 * a[2].y - a[3].y) / 6, - a[2].x, - a[2].y, - ]); - } - return r; - } - (e.getRGB = ht(function (t) { - if (!t || (t = x(t)).indexOf("-") + 1) - return { - r: -1, - g: -1, - b: -1, - hex: "none", - error: 1, - toString: ut, - }; - if (t == "none") return { r: -1, g: -1, b: -1, hex: "none", toString: ut }; - !q[o](t.toLowerCase().substring(0, 2)) && t.charAt() != "#" && (t = it(t)); - var r, - i, - n, - a, - s, - l, - h = t.match(E); - return h - ? (h[2] && - ((n = F(h[2].substring(5), 16)), - (i = F(h[2].substring(3, 5), 16)), - (r = F(h[2].substring(1, 3), 16))), - h[3] && - ((n = F((s = h[3].charAt(3)) + s, 16)), - (i = F((s = h[3].charAt(2)) + s, 16)), - (r = F((s = h[3].charAt(1)) + s, 16))), - h[4] && - ((l = h[4][v](D)), - (r = z(l[0])), - l[0].slice(-1) == "%" && (r *= 2.55), - (i = z(l[1])), - l[1].slice(-1) == "%" && (i *= 2.55), - (n = z(l[2])), - l[2].slice(-1) == "%" && (n *= 2.55), - h[1].toLowerCase().slice(0, 4) == "rgba" && (a = z(l[3])), - l[3] && l[3].slice(-1) == "%" && (a /= 100)), - h[5] - ? ((l = h[5][v](D)), - (r = z(l[0])), - l[0].slice(-1) == "%" && (r *= 2.55), - (i = z(l[1])), - l[1].slice(-1) == "%" && (i *= 2.55), - (n = z(l[2])), - l[2].slice(-1) == "%" && (n *= 2.55), - (l[0].slice(-3) == "deg" || l[0].slice(-1) == "°") && (r /= 360), - h[1].toLowerCase().slice(0, 4) == "hsba" && (a = z(l[3])), - l[3] && l[3].slice(-1) == "%" && (a /= 100), - e.hsb2rgb(r, i, n, a)) - : h[6] - ? ((l = h[6][v](D)), - (r = z(l[0])), - l[0].slice(-1) == "%" && (r *= 2.55), - (i = z(l[1])), - l[1].slice(-1) == "%" && (i *= 2.55), - (n = z(l[2])), - l[2].slice(-1) == "%" && (n *= 2.55), - (l[0].slice(-3) == "deg" || l[0].slice(-1) == "°") && (r /= 360), - h[1].toLowerCase().slice(0, 4) == "hsla" && (a = z(l[3])), - l[3] && l[3].slice(-1) == "%" && (a /= 100), - e.hsl2rgb(r, i, n, a)) - : (((h = { r: r, g: i, b: n, toString: ut }).hex = - "#" + (16777216 | n | (i << 8) | (r << 16)).toString(16).slice(1)), - e.is(a, "finite") && (h.opacity = a), - h)) - : { r: -1, g: -1, b: -1, hex: "none", error: 1, toString: ut }; - }, e)), - (e.hsb = ht(function (t, r, i) { - return e.hsb2rgb(t, r, i).hex; - })), - (e.hsl = ht(function (t, r, i) { - return e.hsl2rgb(t, r, i).hex; - })), - (e.rgb = ht(function (t, e, r) { - function i(t) { - return (t + 0.5) | 0; - } - return "#" + (16777216 | i(r) | (i(e) << 8) | (i(t) << 16)).toString(16).slice(1); - })), - (e.getColor = function (t) { - var e = (this.getColor.start = this.getColor.start || { - h: 0, - s: 1, - b: t || 0.75, - }), - r = this.hsb2rgb(e.h, e.s, e.b); - return ( - (e.h += 0.075), - e.h > 1 && ((e.h = 0), (e.s -= 0.2), e.s <= 0 && (this.getColor.start = { h: 0, s: 1, b: e.b })), - r.hex - ); - }), - (e.getColor.reset = function () { - delete this.start; - }), - (e.parsePathString = function (t) { - if (!t) return null; - var r = ft(t); - if (r.arr) return mt(r.arr); - var i = { - a: 7, - c: 6, - h: 1, - l: 2, - m: 2, - r: 4, - q: 4, - s: 4, - t: 2, - v: 1, - z: 0, - }, - n = []; - return ( - e.is(t, T) && e.is(t[0], T) && (n = mt(t)), - n.length || - x(t).replace(V, function (t, e, r) { - var a = [], - s = e.toLowerCase(); - if ( - (r.replace(W, function (t, e) { - e && a.push(+e); - }), - s == "m" && - a.length > 2 && - (n.push([e][f](a.splice(0, 2))), (s = "l"), (e = e == "m" ? "l" : "L")), - s == "r") - ) - n.push([e][f](a)); - else for (; a.length >= i[s] && (n.push([e][f](a.splice(0, i[s]))), i[s]); ); - }), - (n.toString = e._path2string), - (r.arr = mt(n)), - n - ); - }), - (e.parseTransformString = ht(function (t) { - if (!t) return null; - var r = []; - return ( - e.is(t, T) && e.is(t[0], T) && (r = mt(t)), - r.length || - x(t).replace(Y, function (t, e, i) { - var n = []; - b.call(e); - i.replace(W, function (t, e) { - e && n.push(+e); - }), - r.push([e][f](n)); - }), - (r.toString = e._path2string), - r - ); - })); - var ft = function (t) { - var e = (ft.ps = ft.ps || {}); - return ( - e[t] ? (e[t].sleep = 100) : (e[t] = { sleep: 100 }), - setTimeout(function () { - for (var r in e) e[o](r) && r != t && (e[r].sleep--, !e[r].sleep && delete e[r]); - }), - e[t] - ); - }; - function pt(t, e, r, i, n) { - return t * (t * (-3 * e + 9 * r - 9 * i + 3 * n) + 6 * e - 12 * r + 6 * i) - 3 * e + 3 * r; - } - function dt(t, e, r, i, n, a, s, o, l) { - l == null && (l = 1); - for ( - var h = (l = l > 1 ? 1 : l < 0 ? 0 : l) / 2, - u = [ - -0.1252, 0.1252, -0.3678, 0.3678, -0.5873, 0.5873, -0.7699, 0.7699, -0.9041, 0.9041, -0.9816, - 0.9816, - ], - c = [0.2491, 0.2491, 0.2335, 0.2335, 0.2032, 0.2032, 0.1601, 0.1601, 0.1069, 0.1069, 0.0472, 0.0472], - f = 0, - p = 0; - p < 12; - p++ - ) { - var d = h * u[p] + h, - g = pt(d, t, r, n, s), - x = pt(d, e, i, a, o), - v = g * g + x * x; - f += c[p] * _.sqrt(v); - } - return h * f; - } - function gt(t, e, r, i, n, a, s, o) { - if (!(w(t, r) < k(n, s) || k(t, r) > w(n, s) || w(e, i) < k(a, o) || k(e, i) > w(a, o))) { - var l = (t - r) * (a - o) - (e - i) * (n - s); - if (l) { - var h = ((t * i - e * r) * (n - s) - (t - r) * (n * o - a * s)) / l, - u = ((t * i - e * r) * (a - o) - (e - i) * (n * o - a * s)) / l, - c = +h.toFixed(2), - f = +u.toFixed(2); - if ( - !( - c < +k(t, r).toFixed(2) || - c > +w(t, r).toFixed(2) || - c < +k(n, s).toFixed(2) || - c > +w(n, s).toFixed(2) || - f < +k(e, i).toFixed(2) || - f > +w(e, i).toFixed(2) || - f < +k(a, o).toFixed(2) || - f > +w(a, o).toFixed(2) - ) - ) - return { x: h, y: u }; - } - } - } - function xt(t, r, i) { - var n = e.bezierBBox(t), - a = e.bezierBBox(r); - if (!e.isBBoxIntersect(n, a)) return i ? 0 : []; - for ( - var s = dt.apply(0, t), - o = dt.apply(0, r), - l = w(~~(s / 5), 1), - h = w(~~(o / 5), 1), - u = [], - c = [], - f = {}, - p = i ? 0 : [], - d = 0; - d < l + 1; - d++ - ) { - var g = e.findDotsAtSegment.apply(e, t.concat(d / l)); - u.push({ x: g.x, y: g.y, t: d / l }); - } - for (d = 0; d < h + 1; d++) - (g = e.findDotsAtSegment.apply(e, r.concat(d / h))), c.push({ x: g.x, y: g.y, t: d / h }); - for (d = 0; d < l; d++) - for (var x = 0; x < h; x++) { - var v = u[d], - y = u[d + 1], - m = c[x], - b = c[x + 1], - _ = B(y.x - v.x) < 0.001 ? "y" : "x", - C = B(b.x - m.x) < 0.001 ? "y" : "x", - S = gt(v.x, v.y, y.x, y.y, m.x, m.y, b.x, b.y); - if (S) { - if (f[S.x.toFixed(4)] == S.y.toFixed(4)) continue; - f[S.x.toFixed(4)] = S.y.toFixed(4); - var A = v.t + B((S[_] - v[_]) / (y[_] - v[_])) * (y.t - v.t), - T = m.t + B((S[C] - m[C]) / (b[C] - m[C])) * (b.t - m.t); - A >= 0 && - A <= 1.001 && - T >= 0 && - T <= 1.001 && - (i ? p++ : p.push({ x: S.x, y: S.y, t1: k(A, 1), t2: k(T, 1) })); - } - } - return p; - } - function vt(t, r, i) { - (t = e._path2curve(t)), (r = e._path2curve(r)); - for (var n, a, s, o, l, h, u, c, f, p, d = i ? 0 : [], g = 0, x = t.length; g < x; g++) { - var v = t[g]; - if (v[0] == "M") (n = l = v[1]), (a = h = v[2]); - else { - v[0] == "C" - ? ((n = (f = [n, a].concat(v.slice(1)))[6]), (a = f[7])) - : ((f = [n, a, n, a, l, h, l, h]), (n = l), (a = h)); - for (var y = 0, m = r.length; y < m; y++) { - var b = r[y]; - if (b[0] == "M") (s = u = b[1]), (o = c = b[2]); - else { - b[0] == "C" - ? ((s = (p = [s, o].concat(b.slice(1)))[6]), (o = p[7])) - : ((p = [s, o, s, o, u, c, u, c]), (s = u), (o = c)); - var _ = xt(f, p, i); - if (i) d += _; - else { - for (var w = 0, k = _.length; w < k; w++) - (_[w].segment1 = g), (_[w].segment2 = y), (_[w].bez1 = f), (_[w].bez2 = p); - d = d.concat(_); - } - } - } - } - } - return d; - } - (e.findDotsAtSegment = function (t, e, r, i, n, a, s, o, l) { - var h = 1 - l, - u = C(h, 3), - c = C(h, 2), - f = l * l, - p = f * l, - d = u * t + 3 * c * l * r + 3 * h * l * l * n + p * s, - g = u * e + 3 * c * l * i + 3 * h * l * l * a + p * o, - x = t + 2 * l * (r - t) + f * (n - 2 * r + t), - v = e + 2 * l * (i - e) + f * (a - 2 * i + e), - y = r + 2 * l * (n - r) + f * (s - 2 * n + r), - m = i + 2 * l * (a - i) + f * (o - 2 * a + i), - b = h * t + l * r, - w = h * e + l * i, - k = h * n + l * s, - B = h * a + l * o, - A = 90 - (180 * _.atan2(x - y, v - m)) / S; - return ( - (x > y || v < m) && (A += 180), - { - x: d, - y: g, - m: { x: x, y: v }, - n: { x: y, y: m }, - start: { x: b, y: w }, - end: { x: k, y: B }, - alpha: A, - } - ); - }), - (e.bezierBBox = function (t, r, i, n, a, s, o, l) { - e.is(t, "array") || (t = [t, r, i, n, a, s, o, l]); - var h = St.apply(null, t); - return { - x: h.min.x, - y: h.min.y, - x2: h.max.x, - y2: h.max.y, - width: h.max.x - h.min.x, - height: h.max.y - h.min.y, - }; - }), - (e.isPointInsideBBox = function (t, e, r) { - return e >= t.x && e <= t.x2 && r >= t.y && r <= t.y2; - }), - (e.isBBoxIntersect = function (t, r) { - var i = e.isPointInsideBBox; - return ( - i(r, t.x, t.y) || - i(r, t.x2, t.y) || - i(r, t.x, t.y2) || - i(r, t.x2, t.y2) || - i(t, r.x, r.y) || - i(t, r.x2, r.y) || - i(t, r.x, r.y2) || - i(t, r.x2, r.y2) || - (((t.x < r.x2 && t.x > r.x) || (r.x < t.x2 && r.x > t.x)) && - ((t.y < r.y2 && t.y > r.y) || (r.y < t.y2 && r.y > t.y))) - ); - }), - (e.pathIntersection = function (t, e) { - return vt(t, e); - }), - (e.pathIntersectionNumber = function (t, e) { - return vt(t, e, 1); - }), - (e.isPointInsidePath = function (t, r, i) { - var n = e.pathBBox(t); - return ( - e.isPointInsideBBox(n, r, i) && - vt( - t, - [ - ["M", r, i], - ["H", n.x2 + 10], - ], - 1, - ) % - 2 == - 1 - ); - }), - (e._removedFactory = function (e) { - return function () { - t("raphael.log", null, "Raphaël: you are calling to method “" + e + "” of removed object", e); - }; - }); - var yt = (e.pathBBox = function (t) { - var e = ft(t); - if (e.bbox) return tt(e.bbox); - if (!t) return { x: 0, y: 0, width: 0, height: 0, x2: 0, y2: 0 }; - for (var r, i = 0, n = 0, a = [], s = [], o = 0, l = (t = At(t)).length; o < l; o++) - if ((r = t[o])[0] == "M") (i = r[1]), (n = r[2]), a.push(i), s.push(n); - else { - var h = St(i, n, r[1], r[2], r[3], r[4], r[5], r[6]); - (a = a[f](h.min.x, h.max.x)), (s = s[f](h.min.y, h.max.y)), (i = r[5]), (n = r[6]); - } - var u = k[c](0, a), - p = k[c](0, s), - d = w[c](0, a), - g = w[c](0, s), - x = d - u, - v = g - p, - y = { - x: u, - y: p, - x2: d, - y2: g, - width: x, - height: v, - cx: u + x / 2, - cy: p + v / 2, - }; - return (e.bbox = tt(y)), y; - }), - mt = function (t) { - var r = tt(t); - return (r.toString = e._path2string), r; - }, - bt = (e._pathToRelative = function (t) { - var r = ft(t); - if (r.rel) return mt(r.rel); - (e.is(t, T) && e.is(t && t[0], T)) || (t = e.parsePathString(t)); - var i = [], - n = 0, - a = 0, - s = 0, - o = 0, - l = 0; - t[0][0] == "M" && ((s = n = t[0][1]), (o = a = t[0][2]), l++, i.push(["M", n, a])); - for (var h = l, u = t.length; h < u; h++) { - var c = (i[h] = []), - f = t[h]; - if (f[0] != b.call(f[0])) - switch (((c[0] = b.call(f[0])), c[0])) { - case "a": - (c[1] = f[1]), - (c[2] = f[2]), - (c[3] = f[3]), - (c[4] = f[4]), - (c[5] = f[5]), - (c[6] = +(f[6] - n).toFixed(3)), - (c[7] = +(f[7] - a).toFixed(3)); - break; - case "v": - c[1] = +(f[1] - a).toFixed(3); - break; - case "m": - (s = f[1]), (o = f[2]); - default: - for (var p = 1, d = f.length; p < d; p++) c[p] = +(f[p] - (p % 2 ? n : a)).toFixed(3); - } - else { - (c = i[h] = []), f[0] == "m" && ((s = f[1] + n), (o = f[2] + a)); - for (var g = 0, x = f.length; g < x; g++) i[h][g] = f[g]; - } - var v = i[h].length; - switch (i[h][0]) { - case "z": - (n = s), (a = o); - break; - case "h": - n += +i[h][v - 1]; - break; - case "v": - a += +i[h][v - 1]; - break; - default: - (n += +i[h][v - 2]), (a += +i[h][v - 1]); - } - } - return (i.toString = e._path2string), (r.rel = mt(i)), i; - }), - _t = (e._pathToAbsolute = function (t) { - var r = ft(t); - if (r.abs) return mt(r.abs); - if (((e.is(t, T) && e.is(t && t[0], T)) || (t = e.parsePathString(t)), !t || !t.length)) - return [["M", 0, 0]]; - var i = [], - n = 0, - a = 0, - s = 0, - o = 0, - l = 0; - t[0][0] == "M" && ((s = n = +t[0][1]), (o = a = +t[0][2]), l++, (i[0] = ["M", n, a])); - for ( - var h, - u, - c = t.length == 3 && t[0][0] == "M" && t[1][0].toUpperCase() == "R" && t[2][0].toUpperCase() == "Z", - p = l, - d = t.length; - p < d; - p++ - ) { - if ((i.push((h = [])), (u = t[p])[0] != R.call(u[0]))) - switch (((h[0] = R.call(u[0])), h[0])) { - case "A": - (h[1] = u[1]), - (h[2] = u[2]), - (h[3] = u[3]), - (h[4] = u[4]), - (h[5] = u[5]), - (h[6] = +(u[6] + n)), - (h[7] = +(u[7] + a)); - break; - case "V": - h[1] = +u[1] + a; - break; - case "H": - h[1] = +u[1] + n; - break; - case "R": - for (var g = [n, a][f](u.slice(1)), x = 2, v = g.length; x < v; x++) - (g[x] = +g[x] + n), (g[++x] = +g[x] + a); - i.pop(), (i = i[f](ct(g, c))); - break; - case "M": - (s = +u[1] + n), (o = +u[2] + a); - default: - for (x = 1, v = u.length; x < v; x++) h[x] = +u[x] + (x % 2 ? n : a); - } - else if (u[0] == "R") - (g = [n, a][f](u.slice(1))), i.pop(), (i = i[f](ct(g, c))), (h = ["R"][f](u.slice(-2))); - else for (var y = 0, m = u.length; y < m; y++) h[y] = u[y]; - switch (h[0]) { - case "Z": - (n = s), (a = o); - break; - case "H": - n = h[1]; - break; - case "V": - a = h[1]; - break; - case "M": - (s = h[h.length - 2]), (o = h[h.length - 1]); - default: - (n = h[h.length - 2]), (a = h[h.length - 1]); - } - } - return (i.toString = e._path2string), (r.abs = mt(i)), i; - }), - wt = function (t, e, r, i) { - return [t, e, r, i, r, i]; - }, - kt = function (t, e, r, i, n, a) { - return [ - (1 / 3) * t + (2 / 3) * r, - (1 / 3) * e + (2 / 3) * i, - (1 / 3) * n + (2 / 3) * r, - (1 / 3) * a + (2 / 3) * i, - n, - a, - ]; - }, - Bt = function (t, e, r, i, n, a, s, o, l, h) { - var u, - c = (120 * S) / 180, - p = (S / 180) * (+n || 0), - d = [], - g = ht(function (t, e, r) { - return { - x: t * _.cos(r) - e * _.sin(r), - y: t * _.sin(r) + e * _.cos(r), - }; - }); - if (h) (T = h[0]), (M = h[1]), (C = h[2]), (A = h[3]); - else { - (t = (u = g(t, e, -p)).x), (e = u.y), (o = (u = g(o, l, -p)).x), (l = u.y); - _.cos((S / 180) * n), _.sin((S / 180) * n); - var x = (t - o) / 2, - y = (e - l) / 2, - m = (x * x) / (r * r) + (y * y) / (i * i); - m > 1 && ((r *= m = _.sqrt(m)), (i *= m)); - var b = r * r, - w = i * i, - k = (a == s ? -1 : 1) * _.sqrt(B((b * w - b * y * y - w * x * x) / (b * y * y + w * x * x))), - C = (k * r * y) / i + (t + o) / 2, - A = (k * -i * x) / r + (e + l) / 2, - T = _.asin(((e - A) / i).toFixed(9)), - M = _.asin(((l - A) / i).toFixed(9)); - (T = t < C ? S - T : T), - (M = o < C ? S - M : M), - T < 0 && (T = 2 * S + T), - M < 0 && (M = 2 * S + M), - s && T > M && (T -= 2 * S), - !s && M > T && (M -= 2 * S); - } - var E = M - T; - if (B(E) > c) { - var N = M, - L = o, - P = l; - (M = T + c * (s && M > T ? 1 : -1)), - (o = C + r * _.cos(M)), - (l = A + i * _.sin(M)), - (d = Bt(o, l, r, i, n, 0, s, L, P, [M, N, C, A])); - } - E = M - T; - var z = _.cos(T), - F = _.sin(T), - R = _.cos(M), - j = _.sin(M), - I = _.tan(E / 4), - D = (4 / 3) * r * I, - q = (4 / 3) * i * I, - O = [t, e], - V = [t + D * F, e - q * z], - Y = [o + D * j, l - q * R], - W = [o, l]; - if (((V[0] = 2 * O[0] - V[0]), (V[1] = 2 * O[1] - V[1]), h)) return [V, Y, W][f](d); - for (var G = [], H = 0, X = (d = [V, Y, W][f](d).join()[v](",")).length; H < X; H++) - G[H] = H % 2 ? g(d[H - 1], d[H], p).y : g(d[H], d[H + 1], p).x; - return G; - }, - Ct = function (t, e, r, i, n, a, s, o, l) { - var h = 1 - l; - return { - x: C(h, 3) * t + 3 * C(h, 2) * l * r + 3 * h * l * l * n + C(l, 3) * s, - y: C(h, 3) * e + 3 * C(h, 2) * l * i + 3 * h * l * l * a + C(l, 3) * o, - }; - }, - St = ht(function (t, e, r, i, n, a, s, o) { - var l, - h = n - 2 * r + t - (s - 2 * n + r), - u = 2 * (r - t) - 2 * (n - r), - f = t - r, - p = (-u + _.sqrt(u * u - 4 * h * f)) / 2 / h, - d = (-u - _.sqrt(u * u - 4 * h * f)) / 2 / h, - g = [e, o], - x = [t, s]; - return ( - B(p) > "1e12" && (p = 0.5), - B(d) > "1e12" && (d = 0.5), - p > 0 && p < 1 && ((l = Ct(t, e, r, i, n, a, s, o, p)), x.push(l.x), g.push(l.y)), - d > 0 && d < 1 && ((l = Ct(t, e, r, i, n, a, s, o, d)), x.push(l.x), g.push(l.y)), - (h = a - 2 * i + e - (o - 2 * a + i)), - (f = e - i), - (p = (-(u = 2 * (i - e) - 2 * (a - i)) + _.sqrt(u * u - 4 * h * f)) / 2 / h), - (d = (-u - _.sqrt(u * u - 4 * h * f)) / 2 / h), - B(p) > "1e12" && (p = 0.5), - B(d) > "1e12" && (d = 0.5), - p > 0 && p < 1 && ((l = Ct(t, e, r, i, n, a, s, o, p)), x.push(l.x), g.push(l.y)), - d > 0 && d < 1 && ((l = Ct(t, e, r, i, n, a, s, o, d)), x.push(l.x), g.push(l.y)), - { - min: { x: k[c](0, x), y: k[c](0, g) }, - max: { x: w[c](0, x), y: w[c](0, g) }, - } - ); - }), - At = (e._path2curve = ht( - function (t, e) { - var r = !e && ft(t); - if (!e && r.curve) return mt(r.curve); - for ( - var i = _t(t), - n = e && _t(e), - a = { - x: 0, - y: 0, - bx: 0, - by: 0, - X: 0, - Y: 0, - qx: null, - qy: null, - }, - s = { - x: 0, - y: 0, - bx: 0, - by: 0, - X: 0, - Y: 0, - qx: null, - qy: null, - }, - o = function (t, e, r) { - var i, n; - if (!t) return ["C", e.x, e.y, e.x, e.y, e.x, e.y]; - switch ((!(t[0] in { T: 1, Q: 1 }) && (e.qx = e.qy = null), t[0])) { - case "M": - (e.X = t[1]), (e.Y = t[2]); - break; - case "A": - t = ["C"][f](Bt[c](0, [e.x, e.y][f](t.slice(1)))); - break; - case "S": - r == "C" || r == "S" - ? ((i = 2 * e.x - e.bx), (n = 2 * e.y - e.by)) - : ((i = e.x), (n = e.y)), - (t = ["C", i, n][f](t.slice(1))); - break; - case "T": - r == "Q" || r == "T" - ? ((e.qx = 2 * e.x - e.qx), (e.qy = 2 * e.y - e.qy)) - : ((e.qx = e.x), (e.qy = e.y)), - (t = ["C"][f](kt(e.x, e.y, e.qx, e.qy, t[1], t[2]))); - break; - case "Q": - (e.qx = t[1]), (e.qy = t[2]), (t = ["C"][f](kt(e.x, e.y, t[1], t[2], t[3], t[4]))); - break; - case "L": - t = ["C"][f](wt(e.x, e.y, t[1], t[2])); - break; - case "H": - t = ["C"][f](wt(e.x, e.y, t[1], e.y)); - break; - case "V": - t = ["C"][f](wt(e.x, e.y, e.x, t[1])); - break; - case "Z": - t = ["C"][f](wt(e.x, e.y, e.X, e.Y)); - } - return t; - }, - l = function (t, e) { - if (t[e].length > 7) { - t[e].shift(); - for (var r = t[e]; r.length; ) - (u[e] = "A"), n && (p[e] = "A"), t.splice(e++, 0, ["C"][f](r.splice(0, 6))); - t.splice(e, 1), (v = w(i.length, (n && n.length) || 0)); - } - }, - h = function (t, e, r, a, s) { - t && - e && - t[s][0] == "M" && - e[s][0] != "M" && - (e.splice(s, 0, ["M", a.x, a.y]), - (r.bx = 0), - (r.by = 0), - (r.x = t[s][1]), - (r.y = t[s][2]), - (v = w(i.length, (n && n.length) || 0))); - }, - u = [], - p = [], - d = "", - g = "", - x = 0, - v = w(i.length, (n && n.length) || 0); - x < v; - x++ - ) { - i[x] && (d = i[x][0]), - d != "C" && ((u[x] = d), x && (g = u[x - 1])), - (i[x] = o(i[x], a, g)), - u[x] != "A" && d == "C" && (u[x] = "C"), - l(i, x), - n && - (n[x] && (d = n[x][0]), - d != "C" && ((p[x] = d), x && (g = p[x - 1])), - (n[x] = o(n[x], s, g)), - p[x] != "A" && d == "C" && (p[x] = "C"), - l(n, x)), - h(i, n, a, s, x), - h(n, i, s, a, x); - var y = i[x], - m = n && n[x], - b = y.length, - _ = n && m.length; - (a.x = y[b - 2]), - (a.y = y[b - 1]), - (a.bx = z(y[b - 4]) || a.x), - (a.by = z(y[b - 3]) || a.y), - (s.bx = n && (z(m[_ - 4]) || s.x)), - (s.by = n && (z(m[_ - 3]) || s.y)), - (s.x = n && m[_ - 2]), - (s.y = n && m[_ - 1]); - } - return n || (r.curve = mt(i)), n ? [i, n] : i; - }, - null, - mt, - )), - Tt = - ((e._parseDots = ht(function (t) { - for (var r = [], i = 0, n = t.length; i < n; i++) { - var a = {}, - s = t[i].match(/^([^:]*):?([\d\.]*)/); - if (((a.color = e.getRGB(s[1])), a.color.error)) return null; - (a.opacity = a.color.opacity), (a.color = a.color.hex), s[2] && (a.offset = s[2] + "%"), r.push(a); - } - for (i = 1, n = r.length - 1; i < n; i++) - if (!r[i].offset) { - for (var o = z(r[i - 1].offset || 0), l = 0, h = i + 1; h < n; h++) - if (r[h].offset) { - l = r[h].offset; - break; - } - l || ((l = 100), (h = n)); - for (var u = ((l = z(l)) - o) / (h - i + 1); i < h; i++) (o += u), (r[i].offset = o + "%"); - } - return r; - })), - (e._tear = function (t, e) { - t == e.top && (e.top = t.prev), - t == e.bottom && (e.bottom = t.next), - t.next && (t.next.prev = t.prev), - t.prev && (t.prev.next = t.next); - })), - Mt = - ((e._tofront = function (t, e) { - e.top !== t && (Tt(t, e), (t.next = null), (t.prev = e.top), (e.top.next = t), (e.top = t)); - }), - (e._toback = function (t, e) { - e.bottom !== t && - (Tt(t, e), (t.next = e.bottom), (t.prev = null), (e.bottom.prev = t), (e.bottom = t)); - }), - (e._insertafter = function (t, e, r) { - Tt(t, r), - e == r.top && (r.top = t), - e.next && (e.next.prev = t), - (t.next = e.next), - (t.prev = e), - (e.next = t); - }), - (e._insertbefore = function (t, e, r) { - Tt(t, r), - e == r.bottom && (r.bottom = t), - e.prev && (e.prev.next = t), - (t.prev = e.prev), - (e.prev = t), - (t.next = e); - }), - (e.toMatrix = function (t, e) { - var r = yt(t), - i = { - _: { transform: d }, - getBBox: function () { - return r; - }, - }; - return Et(i, e), i.matrix; - })), - Et = - ((e.transformPath = function (t, e) { - return Q(t, Mt(t, e)); - }), - (e._extractTransform = function (t, r) { - if (r == null) return t._.transform; - r = x(r).replace(/\.{3}|\u2026/g, t._.transform || d); - var i, - n, - a = e.parseTransformString(r), - s = 0, - o = 1, - l = 1, - h = t._, - u = new Pt(); - if (((h.transform = a || []), a)) - for (var c = 0, f = a.length; c < f; c++) { - var p, - g, - v, - y, - m, - b = a[c], - _ = b.length, - w = x(b[0]).toLowerCase(), - k = b[0] != w, - B = k ? u.invert() : 0; - w == "t" && _ == 3 - ? k - ? ((p = B.x(0, 0)), - (g = B.y(0, 0)), - (v = B.x(b[1], b[2])), - (y = B.y(b[1], b[2])), - u.translate(v - p, y - g)) - : u.translate(b[1], b[2]) - : w == "r" - ? _ == 2 - ? ((m = m || t.getBBox(1)), - u.rotate(b[1], m.x + m.width / 2, m.y + m.height / 2), - (s += b[1])) - : _ == 4 && - (k - ? ((v = B.x(b[2], b[3])), (y = B.y(b[2], b[3])), u.rotate(b[1], v, y)) - : u.rotate(b[1], b[2], b[3]), - (s += b[1])) - : w == "s" - ? _ == 2 || _ == 3 - ? ((m = m || t.getBBox(1)), - u.scale(b[1], b[_ - 1], m.x + m.width / 2, m.y + m.height / 2), - (o *= b[1]), - (l *= b[_ - 1])) - : _ == 5 && - (k - ? ((v = B.x(b[3], b[4])), (y = B.y(b[3], b[4])), u.scale(b[1], b[2], v, y)) - : u.scale(b[1], b[2], b[3], b[4]), - (o *= b[1]), - (l *= b[2])) - : w == "m" && _ == 7 && u.add(b[1], b[2], b[3], b[4], b[5], b[6]), - (h.dirtyT = 1), - (t.matrix = u); - } - (t.matrix = u), - (h.sx = o), - (h.sy = l), - (h.deg = s), - (h.dx = i = u.e), - (h.dy = n = u.f), - o == 1 && l == 1 && !s && h.bbox ? ((h.bbox.x += +i), (h.bbox.y += +n)) : (h.dirtyT = 1); - })), - Nt = function (t) { - var e = t[0]; - switch (e.toLowerCase()) { - case "t": - return [e, 0, 0]; - case "m": - return [e, 1, 0, 0, 1, 0, 0]; - case "r": - return t.length == 4 ? [e, 0, t[2], t[3]] : [e, 0]; - case "s": - return t.length == 5 ? [e, 1, 1, t[3], t[4]] : t.length == 3 ? [e, 1, 1] : [e, 1]; - } - }, - Lt = (e._equaliseTransform = function (t, r) { - (r = x(r).replace(/\.{3}|\u2026/g, t)), - (t = e.parseTransformString(t) || []), - (r = e.parseTransformString(r) || []); - for (var i, n, a, s, o = w(t.length, r.length), l = [], h = [], u = 0; u < o; u++) { - if ( - ((a = t[u] || Nt(r[u])), - (s = r[u] || Nt(a)), - a[0] != s[0] || - (a[0].toLowerCase() == "r" && (a[2] != s[2] || a[3] != s[3])) || - (a[0].toLowerCase() == "s" && (a[3] != s[3] || a[4] != s[4]))) - ) - return; - for (l[u] = [], h[u] = [], i = 0, n = w(a.length, s.length); i < n; i++) - i in a && (l[u][i] = a[i]), i in s && (h[u][i] = s[i]); - } - return { from: l, to: h }; - }); - function Pt(t, e, r, i, n, a) { - t != null - ? ((this.a = +t), (this.b = +e), (this.c = +r), (this.d = +i), (this.e = +n), (this.f = +a)) - : ((this.a = 1), (this.b = 0), (this.c = 0), (this.d = 1), (this.e = 0), (this.f = 0)); - } - (e._getContainer = function (t, r, i, n) { - var a; - if ((a = n != null || e.is(t, "object") ? t : l.doc.getElementById(t)) != null) - return a.tagName - ? r == null - ? { - container: a, - width: a.style.pixelWidth || a.offsetWidth, - height: a.style.pixelHeight || a.offsetHeight, - } - : { container: a, width: r, height: i } - : { container: 1, x: t, y: r, width: i, height: n }; - }), - (e.pathToRelative = bt), - (e._engine = {}), - (e.path2curve = At), - (e.matrix = function (t, e, r, i, n, a) { - return new Pt(t, e, r, i, n, a); - }), - (function (t) { - function r(t) { - return t[0] * t[0] + t[1] * t[1]; - } - function i(t) { - var e = _.sqrt(r(t)); - t[0] && (t[0] /= e), t[1] && (t[1] /= e); - } - (t.add = function (t, e, r, i, n, a) { - var s, - o, - l, - h, - u = [[], [], []], - c = [ - [this.a, this.c, this.e], - [this.b, this.d, this.f], - [0, 0, 1], - ], - f = [ - [t, r, n], - [e, i, a], - [0, 0, 1], - ]; - for ( - t && - t instanceof Pt && - (f = [ - [t.a, t.c, t.e], - [t.b, t.d, t.f], - [0, 0, 1], - ]), - s = 0; - s < 3; - s++ - ) - for (o = 0; o < 3; o++) { - for (h = 0, l = 0; l < 3; l++) h += c[s][l] * f[l][o]; - u[s][o] = h; - } - (this.a = u[0][0]), - (this.b = u[1][0]), - (this.c = u[0][1]), - (this.d = u[1][1]), - (this.e = u[0][2]), - (this.f = u[1][2]); - }), - (t.invert = function () { - var t = this, - e = t.a * t.d - t.b * t.c; - return new Pt( - t.d / e, - -t.b / e, - -t.c / e, - t.a / e, - (t.c * t.f - t.d * t.e) / e, - (t.b * t.e - t.a * t.f) / e, - ); - }), - (t.clone = function () { - return new Pt(this.a, this.b, this.c, this.d, this.e, this.f); - }), - (t.translate = function (t, e) { - this.add(1, 0, 0, 1, t, e); - }), - (t.scale = function (t, e, r, i) { - e == null && (e = t), - (r || i) && this.add(1, 0, 0, 1, r, i), - this.add(t, 0, 0, e, 0, 0), - (r || i) && this.add(1, 0, 0, 1, -r, -i); - }), - (t.rotate = function (t, r, i) { - (t = e.rad(t)), (r = r || 0), (i = i || 0); - var n = +_.cos(t).toFixed(9), - a = +_.sin(t).toFixed(9); - this.add(n, a, -a, n, r, i), this.add(1, 0, 0, 1, -r, -i); - }), - (t.x = function (t, e) { - return t * this.a + e * this.c + this.e; - }), - (t.y = function (t, e) { - return t * this.b + e * this.d + this.f; - }), - (t.get = function (t) { - return +this[x.fromCharCode(97 + t)].toFixed(4); - }), - (t.toString = function () { - return e.svg - ? "matrix(" + - [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)].join() + - ")" - : [this.get(0), this.get(2), this.get(1), this.get(3), 0, 0].join(); - }), - (t.toFilter = function () { - return ( - "progid:DXImageTransform.Microsoft.Matrix(M11=" + - this.get(0) + - ", M12=" + - this.get(2) + - ", M21=" + - this.get(1) + - ", M22=" + - this.get(3) + - ", Dx=" + - this.get(4) + - ", Dy=" + - this.get(5) + - ", sizingmethod='auto expand')" - ); - }), - (t.offset = function () { - return [this.e.toFixed(4), this.f.toFixed(4)]; - }), - (t.split = function () { - var t = {}; - (t.dx = this.e), (t.dy = this.f); - var n = [ - [this.a, this.c], - [this.b, this.d], - ]; - (t.scalex = _.sqrt(r(n[0]))), - i(n[0]), - (t.shear = n[0][0] * n[1][0] + n[0][1] * n[1][1]), - (n[1] = [n[1][0] - n[0][0] * t.shear, n[1][1] - n[0][1] * t.shear]), - (t.scaley = _.sqrt(r(n[1]))), - i(n[1]), - (t.shear /= t.scaley); - var a = -n[0][1], - s = n[1][1]; - return ( - s < 0 - ? ((t.rotate = e.deg(_.acos(s))), a < 0 && (t.rotate = 360 - t.rotate)) - : (t.rotate = e.deg(_.asin(a))), - (t.isSimple = !(+t.shear.toFixed(9) || (t.scalex.toFixed(9) != t.scaley.toFixed(9) && t.rotate))), - (t.isSuperSimple = - !+t.shear.toFixed(9) && t.scalex.toFixed(9) == t.scaley.toFixed(9) && !t.rotate), - (t.noRotation = !+t.shear.toFixed(9) && !t.rotate), - t - ); - }), - (t.toTransformString = function (t) { - var e = t || this[v](); - return e.isSimple - ? ((e.scalex = +e.scalex.toFixed(4)), - (e.scaley = +e.scaley.toFixed(4)), - (e.rotate = +e.rotate.toFixed(4)), - (e.dx || e.dy ? "t" + [e.dx, e.dy] : d) + - (e.scalex != 1 || e.scaley != 1 ? "s" + [e.scalex, e.scaley, 0, 0] : d) + - (e.rotate ? "r" + [e.rotate, 0, 0] : d)) - : "m" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)]; - }); - })(Pt.prototype); - for ( - var zt = function () { - this.returnValue = !1; - }, - Ft = function () { - return this.originalEvent.preventDefault(); - }, - Rt = function () { - this.cancelBubble = !0; - }, - jt = function () { - return this.originalEvent.stopPropagation(); - }, - It = function (t) { - var e = l.doc.documentElement.scrollTop || l.doc.body.scrollTop, - r = l.doc.documentElement.scrollLeft || l.doc.body.scrollLeft; - return { x: t.clientX + r, y: t.clientY + e }; - }, - Dt = l.doc.addEventListener - ? function (t, e, r, i) { - var n = function (t) { - var e = It(t); - return r.call(i, t, e.x, e.y); - }; - if ((t.addEventListener(e, n, !1), p && m[e])) { - var a = function (e) { - for (var n = It(e), a = e, s = 0, o = e.targetTouches && e.targetTouches.length; s < o; s++) - if (e.targetTouches[s].target == t) { - ((e = e.targetTouches[s]).originalEvent = a), - (e.preventDefault = Ft), - (e.stopPropagation = jt); - break; - } - return r.call(i, e, n.x, n.y); - }; - t.addEventListener(m[e], a, !1); - } - return function () { - return t.removeEventListener(e, n, !1), p && m[e] && t.removeEventListener(m[e], a, !1), !0; - }; - } - : l.doc.attachEvent - ? function (t, e, r, i) { - var n = function (t) { - t = t || l.win.event; - var e = l.doc.documentElement.scrollTop || l.doc.body.scrollTop, - n = l.doc.documentElement.scrollLeft || l.doc.body.scrollLeft, - a = t.clientX + n, - s = t.clientY + e; - return ( - (t.preventDefault = t.preventDefault || zt), - (t.stopPropagation = t.stopPropagation || Rt), - r.call(i, t, a, s) - ); - }; - return ( - t.attachEvent("on" + e, n), - function () { - return t.detachEvent("on" + e, n), !0; - } - ); - } - : void 0, - qt = [], - Ot = function (e) { - for ( - var r, - i = e.clientX, - n = e.clientY, - a = l.doc.documentElement.scrollTop || l.doc.body.scrollTop, - s = l.doc.documentElement.scrollLeft || l.doc.body.scrollLeft, - o = qt.length; - o--; - - ) { - if (((r = qt[o]), p && e.touches)) { - for (var h, u = e.touches.length; u--; ) - if ((h = e.touches[u]).identifier == r.el._drag.id) { - (i = h.clientX), (n = h.clientY), (e.originalEvent ? e.originalEvent : e).preventDefault(); - break; - } - } else e.preventDefault(); - var c, - f = r.el.node, - d = f.nextSibling, - g = f.parentNode, - x = f.style.display; - l.win.opera && g.removeChild(f), - (f.style.display = "none"), - (c = r.el.paper.getElementByPoint(i, n)), - (f.style.display = x), - l.win.opera && (d ? g.insertBefore(f, d) : g.appendChild(f)), - c && t("raphael.drag.over." + r.el.id, r.el, c), - (i += s), - (n += a), - t( - "raphael.drag.move." + r.el.id, - r.move_scope || r.el, - i - r.el._drag.x, - n - r.el._drag.y, - i, - n, - e, - ); - } - }, - Vt = function (r) { - e.unmousemove(Ot).unmouseup(Vt); - for (var i, n = qt.length; n--; ) - ((i = qt[n]).el._drag = {}), - t("raphael.drag.end." + i.el.id, i.end_scope || i.start_scope || i.move_scope || i.el, r); - qt = []; - }, - Yt = (e.el = {}), - Wt = y.length; - Wt--; - - ) - !(function (t) { - (e[t] = Yt[t] = - function (r, i) { - return ( - e.is(r, "function") && - ((this.events = this.events || []), - this.events.push({ - name: t, - f: r, - unbind: Dt(this.shape || this.node || l.doc, t, r, i || this), - })), - this - ); - }), - (e["un" + t] = Yt["un" + t] = - function (r) { - for (var i = this.events || [], n = i.length; n--; ) - i[n].name != t || - (!e.is(r, "undefined") && i[n].f != r) || - (i[n].unbind(), i.splice(n, 1), !i.length && delete this.events); - return this; - }); - })(y[Wt]); - (Yt.data = function (r, i) { - var n = (G[this.id] = G[this.id] || {}); - if (arguments.length == 0) return n; - if (arguments.length == 1) { - if (e.is(r, "object")) { - for (var a in r) r[o](a) && this.data(a, r[a]); - return this; - } - return t("raphael.data.get." + this.id, this, n[r], r), n[r]; - } - return (n[r] = i), t("raphael.data.set." + this.id, this, i, r), this; - }), - (Yt.removeData = function (t) { - return t == null ? (G[this.id] = {}) : G[this.id] && delete G[this.id][t], this; - }), - (Yt.getData = function () { - return tt(G[this.id] || {}); - }), - (Yt.hover = function (t, e, r, i) { - return this.mouseover(t, r).mouseout(e, i || r); - }), - (Yt.unhover = function (t, e) { - return this.unmouseover(t).unmouseout(e); - }); - var Gt = []; - (Yt.drag = function (r, i, n, a, s, o) { - function h(h) { - (h.originalEvent || h).preventDefault(); - var u = h.clientX, - c = h.clientY, - f = l.doc.documentElement.scrollTop || l.doc.body.scrollTop, - d = l.doc.documentElement.scrollLeft || l.doc.body.scrollLeft; - if (((this._drag.id = h.identifier), p && h.touches)) - for (var g, x = h.touches.length; x--; ) - if (((g = h.touches[x]), (this._drag.id = g.identifier), g.identifier == this._drag.id)) { - (u = g.clientX), (c = g.clientY); - break; - } - (this._drag.x = u + d), - (this._drag.y = c + f), - !qt.length && e.mousemove(Ot).mouseup(Vt), - qt.push({ - el: this, - move_scope: a, - start_scope: s, - end_scope: o, - }), - i && t.on("raphael.drag.start." + this.id, i), - r && t.on("raphael.drag.move." + this.id, r), - n && t.on("raphael.drag.end." + this.id, n), - t("raphael.drag.start." + this.id, s || a || this, h.clientX + d, h.clientY + f, h); - } - return (this._drag = {}), Gt.push({ el: this, start: h }), this.mousedown(h), this; - }), - (Yt.onDragOver = function (e) { - e ? t.on("raphael.drag.over." + this.id, e) : t.unbind("raphael.drag.over." + this.id); - }), - (Yt.undrag = function () { - for (var r = Gt.length; r--; ) - Gt[r].el == this && - (this.unmousedown(Gt[r].start), Gt.splice(r, 1), t.unbind("raphael.drag.*." + this.id)); - !Gt.length && e.unmousemove(Ot).unmouseup(Vt), (qt = []); - }), - (i.circle = function (t, r, i) { - var n = e._engine.circle(this, t || 0, r || 0, i || 0); - return this.__set__ && this.__set__.push(n), n; - }), - (i.rect = function (t, r, i, n, a) { - var s = e._engine.rect(this, t || 0, r || 0, i || 0, n || 0, a || 0); - return this.__set__ && this.__set__.push(s), s; - }), - (i.ellipse = function (t, r, i, n) { - var a = e._engine.ellipse(this, t || 0, r || 0, i || 0, n || 0); - return this.__set__ && this.__set__.push(a), a; - }), - (i.path = function (t) { - t && !e.is(t, "string") && !e.is(t[0], T) && (t += d); - var r = e._engine.path(e.format[c](e, arguments), this); - return this.__set__ && this.__set__.push(r), r; - }), - (i.image = function (t, r, i, n, a) { - var s = e._engine.image(this, t || "about:blank", r || 0, i || 0, n || 0, a || 0); - return this.__set__ && this.__set__.push(s), s; - }), - (i.text = function (t, r, i) { - var n = e._engine.text(this, t || 0, r || 0, x(i)); - return this.__set__ && this.__set__.push(n), n; - }), - (i.set = function (t) { - !e.is(t, "array") && (t = Array.prototype.splice.call(arguments, 0, arguments.length)); - var r = new he(t); - return this.__set__ && this.__set__.push(r), (r.paper = this), (r.type = "set"), r; - }), - (i.setStart = function (t) { - this.__set__ = t || this.set(); - }), - (i.setFinish = function (t) { - var e = this.__set__; - return delete this.__set__, e; - }), - (i.getSize = function () { - var t = this.canvas.parentNode; - return { width: t.offsetWidth, height: t.offsetHeight }; - }), - (i.setSize = function (t, r) { - return e._engine.setSize.call(this, t, r); - }), - (i.setViewBox = function (t, r, i, n, a) { - return e._engine.setViewBox.call(this, t, r, i, n, a); - }), - (i.top = i.bottom = null), - (i.raphael = e); - function Ht() { - return this.x + g + this.y + g + this.width + " × " + this.height; - } - (i.getElementByPoint = function (t, e) { - var r, - i, - n, - a, - s, - o, - h, - u = this.canvas, - c = l.doc.elementFromPoint(t, e); - if (l.win.opera && c.tagName == "svg") { - var f = - ((i = (r = u).getBoundingClientRect()), - (n = r.ownerDocument), - (a = n.body), - (s = n.documentElement), - (o = s.clientTop || a.clientTop || 0), - (h = s.clientLeft || a.clientLeft || 0), - { - y: i.top + (l.win.pageYOffset || s.scrollTop || a.scrollTop) - o, - x: i.left + (l.win.pageXOffset || s.scrollLeft || a.scrollLeft) - h, - }), - p = u.createSVGRect(); - (p.x = t - f.x), (p.y = e - f.y), (p.width = p.height = 1); - var d = u.getIntersectionList(p, null); - d.length && (c = d[d.length - 1]); - } - if (!c) return null; - for (; c.parentNode && c != u.parentNode && !c.raphael; ) c = c.parentNode; - return c == this.canvas.parentNode && (c = u), (c = c && c.raphael ? this.getById(c.raphaelid) : null); - }), - (i.getElementsByBBox = function (t) { - var r = this.set(); - return ( - this.forEach(function (i) { - e.isBBoxIntersect(i.getBBox(), t) && r.push(i); - }), - r - ); - }), - (i.getById = function (t) { - for (var e = this.bottom; e; ) { - if (e.id == t) return e; - e = e.next; - } - return null; - }), - (i.forEach = function (t, e) { - for (var r = this.bottom; r; ) { - if (!1 === t.call(e, r)) return this; - r = r.next; - } - return this; - }), - (i.getElementsByPoint = function (t, e) { - var r = this.set(); - return ( - this.forEach(function (i) { - i.isPointInside(t, e) && r.push(i); - }), - r - ); - }), - (Yt.isPointInside = function (t, r) { - var i = (this.realPath = Z[this.type](this)); - return ( - this.attr("transform") && - this.attr("transform").length && - (i = e.transformPath(i, this.attr("transform"))), - e.isPointInsidePath(i, t, r) - ); - }), - (Yt.getBBox = function (t) { - if (this.removed) return {}; - var e = this._; - return t - ? ((!e.dirty && e.bboxwt) || - ((this.realPath = Z[this.type](this)), - (e.bboxwt = yt(this.realPath)), - (e.bboxwt.toString = Ht), - (e.dirty = 0)), - e.bboxwt) - : ((e.dirty || e.dirtyT || !e.bbox) && - ((!e.dirty && this.realPath) || ((e.bboxwt = 0), (this.realPath = Z[this.type](this))), - (e.bbox = yt(Q(this.realPath, this.matrix))), - (e.bbox.toString = Ht), - (e.dirty = e.dirtyT = 0)), - e.bbox); - }), - (Yt.clone = function () { - if (this.removed) return null; - var t = this.paper[this.type]().attr(this.attr()); - return this.__set__ && this.__set__.push(t), t; - }), - (Yt.glow = function (t) { - if (this.type == "text") return null; - var e = { - width: ((t = t || {}).width || 10) + (+this.attr("stroke-width") || 1), - fill: t.fill || !1, - opacity: t.opacity == null ? 0.5 : t.opacity, - offsetx: t.offsetx || 0, - offsety: t.offsety || 0, - color: t.color || "#000", - }, - r = e.width / 2, - i = this.paper, - n = i.set(), - a = this.realPath || Z[this.type](this); - a = this.matrix ? Q(a, this.matrix) : a; - for (var s = 1; s < r + 1; s++) - n.push( - i.path(a).attr({ - stroke: e.color, - fill: e.fill ? e.color : "none", - "stroke-linejoin": "round", - "stroke-linecap": "round", - "stroke-width": +((e.width / r) * s).toFixed(3), - opacity: +(e.opacity / r).toFixed(3), - }), - ); - return n.insertBefore(this).translate(e.offsetx, e.offsety); - }); - var Xt = function (t, r, i, n, a, s, o, l, h) { - return h == null - ? dt(t, r, i, n, a, s, o, l) - : e.findDotsAtSegment( - t, - r, - i, - n, - a, - s, - o, - l, - (function (t, e, r, i, n, a, s, o, l) { - if (!(l < 0 || dt(t, e, r, i, n, a, s, o) < l)) { - var h, - u = 0.5, - c = 1 - u; - for (h = dt(t, e, r, i, n, a, s, o, c); B(h - l) > 0.01; ) - (u /= 2), (h = dt(t, e, r, i, n, a, s, o, (c += (h < l ? 1 : -1) * u))); - return c; - } - })(t, r, i, n, a, s, o, l, h), - ); - }, - Ut = function (t, r) { - return function (i, n, a) { - for (var s, o, l, h, u, c = "", f = {}, p = 0, d = 0, g = (i = At(i)).length; d < g; d++) { - if ((l = i[d])[0] == "M") (s = +l[1]), (o = +l[2]); - else { - if (p + (h = Xt(s, o, l[1], l[2], l[3], l[4], l[5], l[6])) > n) { - if (r && !f.start) { - if ( - ((c += [ - "C" + (u = Xt(s, o, l[1], l[2], l[3], l[4], l[5], l[6], n - p)).start.x, - u.start.y, - u.m.x, - u.m.y, - u.x, - u.y, - ]), - a) - ) - return c; - (f.start = c), - (c = ["M" + u.x, u.y + "C" + u.n.x, u.n.y, u.end.x, u.end.y, l[5], l[6]].join()), - (p += h), - (s = +l[5]), - (o = +l[6]); - continue; - } - if (!t && !r) - return { - x: (u = Xt(s, o, l[1], l[2], l[3], l[4], l[5], l[6], n - p)).x, - y: u.y, - alpha: u.alpha, - }; - } - (p += h), (s = +l[5]), (o = +l[6]); - } - c += l.shift() + l; - } - return ( - (f.end = c), - (u = t ? p : r ? f : e.findDotsAtSegment(s, o, l[0], l[1], l[2], l[3], l[4], l[5], 1)).alpha && - (u = { x: u.x, y: u.y, alpha: u.alpha }), - u - ); - }; - }, - $t = Ut(1), - Zt = Ut(), - Qt = Ut(0, 1); - (e.getTotalLength = $t), - (e.getPointAtLength = Zt), - (e.getSubpath = function (t, e, r) { - if (this.getTotalLength(t) - r < 1e-6) return Qt(t, e).end; - var i = Qt(t, r, 1); - return e ? Qt(i, e).end : i; - }), - (Yt.getTotalLength = function () { - var t = this.getPath(); - if (t) return this.node.getTotalLength ? this.node.getTotalLength() : $t(t); - }), - (Yt.getPointAtLength = function (t) { - var e = this.getPath(); - if (e) return Zt(e, t); - }), - (Yt.getPath = function () { - var t, - r = e._getPath[this.type]; - if (this.type != "text" && this.type != "set") return r && (t = r(this)), t; - }), - (Yt.getSubpath = function (t, r) { - var i = this.getPath(); - if (i) return e.getSubpath(i, t, r); - }); - var Jt = (e.easing_formulas = { - linear: function (t) { - return t; - }, - "<": function (t) { - return C(t, 1.7); - }, - ">": function (t) { - return C(t, 0.48); - }, - "<>": function (t) { - var e = 0.48 - t / 1.04, - r = _.sqrt(0.1734 + e * e), - i = r - e, - n = -r - e, - a = C(B(i), 1 / 3) * (i < 0 ? -1 : 1) + C(B(n), 1 / 3) * (n < 0 ? -1 : 1) + 0.5; - return 3 * (1 - a) * a * a + a * a * a; - }, - backIn: function (t) { - var e = 1.70158; - return t * t * ((e + 1) * t - e); - }, - backOut: function (t) { - var e = 1.70158; - return (t -= 1) * t * ((e + 1) * t + e) + 1; - }, - elastic: function (t) { - return t == !!t ? t : C(2, -10 * t) * _.sin((2 * S * (t - 0.075)) / 0.3) + 1; - }, - bounce: function (t) { - var e = 7.5625, - r = 2.75; - return t < 1 / r - ? e * t * t - : t < 2 / r - ? e * (t -= 1.5 / r) * t + 0.75 - : t < 2.5 / r - ? e * (t -= 2.25 / r) * t + 0.9375 - : e * (t -= 2.625 / r) * t + 0.984375; - }, - }); - (Jt.easeIn = Jt["ease-in"] = Jt["<"]), - (Jt.easeOut = Jt["ease-out"] = Jt[">"]), - (Jt.easeInOut = Jt["ease-in-out"] = Jt["<>"]), - (Jt["back-in"] = Jt.backIn), - (Jt["back-out"] = Jt.backOut); - var Kt = [], - te = - window.requestAnimationFrame || - window.webkitRequestAnimationFrame || - window.mozRequestAnimationFrame || - window.oRequestAnimationFrame || - window.msRequestAnimationFrame || - function (t) { - setTimeout(t, 16); - }, - ee = function () { - for (var r = +new Date(), i = 0; i < Kt.length; i++) { - var n = Kt[i]; - if (!n.el.removed && !n.paused) { - var a, - s, - l = r - n.start, - h = n.ms, - u = n.easing, - c = n.from, - p = n.diff, - d = n.to, - x = (n.t, n.el), - v = {}, - y = {}; - if ( - (n.initstatus - ? ((l = ((n.initstatus * n.anim.top - n.prev) / (n.percent - n.prev)) * h), - (n.status = n.initstatus), - delete n.initstatus, - n.stop && Kt.splice(i--, 1)) - : (n.status = (n.prev + (n.percent - n.prev) * (l / h)) / n.anim.top), - !(l < 0)) - ) - if (l < h) { - var m = u(l / h); - for (var b in c) - if (c[o](b)) { - switch (I[b]) { - case A: - a = +c[b] + m * h * p[b]; - break; - case "colour": - a = - "rgb(" + - [ - re(P(c[b].r + m * h * p[b].r)), - re(P(c[b].g + m * h * p[b].g)), - re(P(c[b].b + m * h * p[b].b)), - ].join(",") + - ")"; - break; - case "path": - a = []; - for (var _ = 0, w = c[b].length; _ < w; _++) { - a[_] = [c[b][_][0]]; - for (var k = 1, B = c[b][_].length; k < B; k++) - a[_][k] = +c[b][_][k] + m * h * p[b][_][k]; - a[_] = a[_].join(g); - } - a = a.join(g); - break; - case "transform": - if (p[b].real) - for (a = [], _ = 0, w = c[b].length; _ < w; _++) - for (a[_] = [c[b][_][0]], k = 1, B = c[b][_].length; k < B; k++) - a[_][k] = c[b][_][k] + m * h * p[b][_][k]; - else { - var C = function (t) { - return +c[b][t] + m * h * p[b][t]; - }; - a = [["m", C(0), C(1), C(2), C(3), C(4), C(5)]]; - } - break; - case "csv": - if (b == "clip-rect") for (a = [], _ = 4; _--; ) a[_] = +c[b][_] + m * h * p[b][_]; - break; - default: - var S = [][f](c[b]); - for (a = [], _ = x.paper.customAttributes[b].length; _--; ) - a[_] = +S[_] + m * h * p[b][_]; - } - v[b] = a; - } - x.attr(v), - (function (e, r, i) { - setTimeout(function () { - t("raphael.anim.frame." + e, r, i); - }); - })(x.id, x, n.anim); - } else { - if ( - ((function (r, i, n) { - setTimeout(function () { - t("raphael.anim.frame." + i.id, i, n), - t("raphael.anim.finish." + i.id, i, n), - e.is(r, "function") && r.call(i); - }); - })(n.callback, x, n.anim), - x.attr(d), - Kt.splice(i--, 1), - n.repeat > 1 && !n.next) - ) { - for (s in d) d[o](s) && (y[s] = n.totalOrigin[s]); - n.el.attr(y), ae(n.anim, n.el, n.anim.percents[0], null, n.totalOrigin, n.repeat - 1); - } - n.next && !n.stop && ae(n.anim, n.el, n.next, null, n.totalOrigin, n.repeat); - } - } - } - Kt.length && te(ee); - }, - re = function (t) { - return t > 255 ? 255 : t < 0 ? 0 : t; - }; - function ie(t, e, r, i, n, a) { - var s = 3 * e, - o = 3 * (i - e) - s, - l = 1 - s - o, - h = 3 * r, - u = 3 * (n - r) - h, - c = 1 - h - u; - function f(t) { - return ((l * t + o) * t + s) * t; - } - return (function (t, e) { - var r = (function (t, e) { - var r, i, n, a, h, u; - for (n = t, u = 0; u < 8; u++) { - if (((a = f(n) - t), B(a) < e)) return n; - if (B((h = (3 * l * n + 2 * o) * n + s)) < 1e-6) break; - n -= a / h; - } - if (((i = 1), (n = t) < (r = 0))) return r; - if (n > i) return i; - for (; r < i; ) { - if (((a = f(n)), B(a - t) < e)) return n; - t > a ? (r = n) : (i = n), (n = (i - r) / 2 + r); - } - return n; - })(t, e); - return ((c * r + u) * r + h) * r; - })(t, 1 / (200 * a)); - } - function ne(t, e) { - var r = [], - i = {}; - if (((this.ms = e), (this.times = 1), t)) { - for (var n in t) t[o](n) && ((i[z(n)] = t[n]), r.push(z(n))); - r.sort(H); - } - (this.anim = i), (this.top = r[r.length - 1]), (this.percents = r); - } - function ae(r, i, a, s, l, h) { - a = z(a); - var u, - c, - p, - d, - g, - y, - m = r.ms, - b = {}, - _ = {}, - w = {}; - if (s) - for (B = 0, C = Kt.length; B < C; B++) { - var k = Kt[B]; - if (k.el.id == i.id && k.anim == r) { - k.percent != a ? (Kt.splice(B, 1), (p = 1)) : (c = k), i.attr(k.totalOrigin); - break; - } - } - else s = +_; - for (var B = 0, C = r.percents.length; B < C; B++) { - if (r.percents[B] == a || r.percents[B] > s * r.top) { - (a = r.percents[B]), - (g = r.percents[B - 1] || 0), - (m = (m / r.top) * (a - g)), - (d = r.percents[B + 1]), - (u = r.anim[a]); - break; - } - s && i.attr(r.anim[r.percents[B]]); - } - if (u) { - if (c) (c.initstatus = s), (c.start = new Date() - c.ms * s); - else { - for (var S in u) - if (u[o](S) && (I[o](S) || i.paper.customAttributes[o](S))) - switch (((b[S] = i.attr(S)), b[S] == null && (b[S] = j[S]), (_[S] = u[S]), I[S])) { - case A: - w[S] = (_[S] - b[S]) / m; - break; - case "colour": - b[S] = e.getRGB(b[S]); - var T = e.getRGB(_[S]); - w[S] = { - r: (T.r - b[S].r) / m, - g: (T.g - b[S].g) / m, - b: (T.b - b[S].b) / m, - }; - break; - case "path": - var M = At(b[S], _[S]), - E = M[1]; - for (b[S] = M[0], w[S] = [], B = 0, C = b[S].length; B < C; B++) { - w[S][B] = [0]; - for (var N = 1, P = b[S][B].length; N < P; N++) w[S][B][N] = (E[B][N] - b[S][B][N]) / m; - } - break; - case "transform": - var F = i._, - R = Lt(F[S], _[S]); - if (R) - for ( - b[S] = R.from, _[S] = R.to, w[S] = [], w[S].real = !0, B = 0, C = b[S].length; - B < C; - B++ - ) - for (w[S][B] = [b[S][B][0]], N = 1, P = b[S][B].length; N < P; N++) - w[S][B][N] = (_[S][B][N] - b[S][B][N]) / m; - else { - var D = i.matrix || new Pt(), - q = { - _: { transform: F.transform }, - getBBox: function () { - return i.getBBox(1); - }, - }; - (b[S] = [D.a, D.b, D.c, D.d, D.e, D.f]), - Et(q, _[S]), - (_[S] = q._.transform), - (w[S] = [ - (q.matrix.a - D.a) / m, - (q.matrix.b - D.b) / m, - (q.matrix.c - D.c) / m, - (q.matrix.d - D.d) / m, - (q.matrix.e - D.e) / m, - (q.matrix.f - D.f) / m, - ]); - } - break; - case "csv": - var O = x(u[S])[v](n), - V = x(b[S])[v](n); - if (S == "clip-rect") - for (b[S] = V, w[S] = [], B = V.length; B--; ) w[S][B] = (O[B] - b[S][B]) / m; - _[S] = O; - break; - default: - for ( - O = [][f](u[S]), V = [][f](b[S]), w[S] = [], B = i.paper.customAttributes[S].length; - B--; - - ) - w[S][B] = ((O[B] || 0) - (V[B] || 0)) / m; - } - var Y = u.easing, - W = e.easing_formulas[Y]; - if (!W) - if ((W = x(Y).match(L)) && W.length == 5) { - var G = W; - W = function (t) { - return ie(t, +G[1], +G[2], +G[3], +G[4], m); - }; - } else W = X; - if ( - ((k = { - anim: r, - percent: a, - timestamp: (y = u.start || r.start || +new Date()), - start: y + (r.del || 0), - status: 0, - initstatus: s || 0, - stop: !1, - ms: m, - easing: W, - from: b, - diff: w, - to: _, - el: i, - callback: u.callback, - prev: g, - next: d, - repeat: h || r.times, - origin: i.attr(), - totalOrigin: l, - }), - Kt.push(k), - s && !c && !p && ((k.stop = !0), (k.start = new Date() - m * s), Kt.length == 1)) - ) - return ee(); - p && (k.start = new Date() - k.ms * s), Kt.length == 1 && te(ee); - } - t("raphael.anim.start." + i.id, i, r); - } - } - function se(t) { - for (var e = 0; e < Kt.length; e++) Kt[e].el.paper == t && Kt.splice(e--, 1); - } - (Yt.animateWith = function (t, r, i, n, a, s) { - if (this.removed) return s && s.call(this), this; - var o = i instanceof ne ? i : e.animation(i, n, a, s); - ae(o, this, o.percents[0], null, this.attr()); - for (var l = 0, h = Kt.length; l < h; l++) - if (Kt[l].anim == r && Kt[l].el == t) { - Kt[h - 1].start = Kt[l].start; - break; - } - return this; - }), - (Yt.onAnimation = function (e) { - return e ? t.on("raphael.anim.frame." + this.id, e) : t.unbind("raphael.anim.frame." + this.id), this; - }), - (ne.prototype.delay = function (t) { - var e = new ne(this.anim, this.ms); - return (e.times = this.times), (e.del = +t || 0), e; - }), - (ne.prototype.repeat = function (t) { - var e = new ne(this.anim, this.ms); - return (e.del = this.del), (e.times = _.floor(w(t, 0)) || 1), e; - }), - (e.animation = function (t, r, i, n) { - if (t instanceof ne) return t; - (!e.is(i, "function") && i) || ((n = n || i || null), (i = null)), (t = Object(t)), (r = +r || 0); - var a, - s, - l = {}; - for (s in t) t[o](s) && z(s) != s && z(s) + "%" != s && ((a = !0), (l[s] = t[s])); - if (a) return i && (l.easing = i), n && (l.callback = n), new ne({ 100: l }, r); - if (n) { - var h = 0; - for (var u in t) { - var c = F(u); - t[o](u) && c > h && (h = c); - } - !t[(h += "%")].callback && (t[h].callback = n); - } - return new ne(t, r); - }), - (Yt.animate = function (t, r, i, n) { - if (this.removed) return n && n.call(this), this; - var a = t instanceof ne ? t : e.animation(t, r, i, n); - return ae(a, this, a.percents[0], null, this.attr()), this; - }), - (Yt.setTime = function (t, e) { - return t && e != null && this.status(t, k(e, t.ms) / t.ms), this; - }), - (Yt.status = function (t, e) { - var r, - i, - n = [], - a = 0; - if (e != null) return ae(t, this, -1, k(e, 1)), this; - for (r = Kt.length; a < r; a++) - if ((i = Kt[a]).el.id == this.id && (!t || i.anim == t)) { - if (t) return i.status; - n.push({ anim: i.anim, status: i.status }); - } - return t ? 0 : n; - }), - (Yt.pause = function (e) { - for (var r = 0; r < Kt.length; r++) - Kt[r].el.id != this.id || - (e && Kt[r].anim != e) || - (!1 !== t("raphael.anim.pause." + this.id, this, Kt[r].anim) && (Kt[r].paused = !0)); - return this; - }), - (Yt.resume = function (e) { - for (var r = 0; r < Kt.length; r++) - if (Kt[r].el.id == this.id && (!e || Kt[r].anim == e)) { - var i = Kt[r]; - !1 !== t("raphael.anim.resume." + this.id, this, i.anim) && - (delete i.paused, this.status(i.anim, i.status)); - } - return this; - }), - (Yt.stop = function (e) { - for (var r = 0; r < Kt.length; r++) - Kt[r].el.id != this.id || - (e && Kt[r].anim != e) || - (!1 !== t("raphael.anim.stop." + this.id, this, Kt[r].anim) && Kt.splice(r--, 1)); - return this; - }), - t.on("raphael.remove", se), - t.on("raphael.clear", se), - (Yt.toString = function () { - return "Raphaël’s object"; - }); - var oe, - le, - he = function (t) { - if (((this.items = []), (this.length = 0), (this.type = "set"), t)) - for (var e = 0, r = t.length; e < r; e++) - !t[e] || - (t[e].constructor != Yt.constructor && t[e].constructor != he) || - ((this[this.items.length] = this.items[this.items.length] = t[e]), this.length++); - }, - ue = he.prototype; - for (var ce in ((ue.push = function () { - for (var t, e, r = 0, i = arguments.length; r < i; r++) - !(t = arguments[r]) || - (t.constructor != Yt.constructor && t.constructor != he) || - ((this[(e = this.items.length)] = this.items[e] = t), this.length++); - return this; - }), - (ue.pop = function () { - return this.length && delete this[this.length--], this.items.pop(); - }), - (ue.forEach = function (t, e) { - for (var r = 0, i = this.items.length; r < i; r++) if (!1 === t.call(e, this.items[r], r)) return this; - return this; - }), - Yt)) - Yt[o](ce) && - (ue[ce] = (function (t) { - return function () { - var e = arguments; - return this.forEach(function (r) { - r[t][c](r, e); - }); - }; - })(ce)); - return ( - (ue.attr = function (t, r) { - if (t && e.is(t, T) && e.is(t[0], "object")) - for (var i = 0, n = t.length; i < n; i++) this.items[i].attr(t[i]); - else for (var a = 0, s = this.items.length; a < s; a++) this.items[a].attr(t, r); - return this; - }), - (ue.clear = function () { - for (; this.length; ) this.pop(); - }), - (ue.splice = function (t, e, r) { - (t = t < 0 ? w(this.length + t, 0) : t), (e = w(0, k(this.length - t, e))); - var i, - n = [], - a = [], - s = []; - for (i = 2; i < arguments.length; i++) s.push(arguments[i]); - for (i = 0; i < e; i++) a.push(this[t + i]); - for (; i < this.length - t; i++) n.push(this[t + i]); - var o = s.length; - for (i = 0; i < o + n.length; i++) this.items[t + i] = this[t + i] = i < o ? s[i] : n[i - o]; - for (i = this.items.length = this.length -= e - o; this[i]; ) delete this[i++]; - return new he(a); - }), - (ue.exclude = function (t) { - for (var e = 0, r = this.length; e < r; e++) if (this[e] == t) return this.splice(e, 1), !0; - }), - (ue.animate = function (t, r, i, n) { - (e.is(i, "function") || !i) && (n = i || null); - var a, - s, - o = this.items.length, - l = o, - h = this; - if (!o) return this; - n && - (s = function () { - !--o && n.call(h); - }), - (i = e.is(i, "string") ? i : s); - var u = e.animation(t, r, i, s); - for (a = this.items[--l].animate(u); l--; ) - this.items[l] && !this.items[l].removed && this.items[l].animateWith(a, u, u), - (this.items[l] && !this.items[l].removed) || o--; - return this; - }), - (ue.insertAfter = function (t) { - for (var e = this.items.length; e--; ) this.items[e].insertAfter(t); - return this; - }), - (ue.getBBox = function () { - for (var t = [], e = [], r = [], i = [], n = this.items.length; n--; ) - if (!this.items[n].removed) { - var a = this.items[n].getBBox(); - t.push(a.x), e.push(a.y), r.push(a.x + a.width), i.push(a.y + a.height); - } - return { - x: (t = k[c](0, t)), - y: (e = k[c](0, e)), - x2: (r = w[c](0, r)), - y2: (i = w[c](0, i)), - width: r - t, - height: i - e, - }; - }), - (ue.clone = function (t) { - t = this.paper.set(); - for (var e = 0, r = this.items.length; e < r; e++) t.push(this.items[e].clone()); - return t; - }), - (ue.toString = function () { - return "Raphaël‘s set"; - }), - (ue.glow = function (t) { - var e = this.paper.set(); - return ( - this.forEach(function (r, i) { - var n = r.glow(t); - n != null && - n.forEach(function (t, r) { - e.push(t); - }); - }), - e - ); - }), - (ue.isPointInside = function (t, e) { - var r = !1; - return ( - this.forEach(function (i) { - if (i.isPointInside(t, e)) return (r = !0), !1; - }), - r - ); - }), - (e.registerFont = function (t) { - if (!t.face) return t; - this.fonts = this.fonts || {}; - var e = { w: t.w, face: {}, glyphs: {} }, - r = t.face["font-family"]; - for (var i in t.face) t.face[o](i) && (e.face[i] = t.face[i]); - if ((this.fonts[r] ? this.fonts[r].push(e) : (this.fonts[r] = [e]), !t.svg)) - for (var n in ((e.face["units-per-em"] = F(t.face["units-per-em"], 10)), t.glyphs)) - if (t.glyphs[o](n)) { - var a = t.glyphs[n]; - if ( - ((e.glyphs[n] = { - w: a.w, - k: {}, - d: - a.d && - "M" + - a.d.replace(/[mlcxtrv]/g, function (t) { - return ( - { - l: "L", - c: "C", - x: "z", - t: "m", - r: "l", - v: "c", - }[t] || "M" - ); - }) + - "z", - }), - a.k) - ) - for (var s in a.k) a[o](s) && (e.glyphs[n].k[s] = a.k[s]); - } - return t; - }), - (i.getFont = function (t, r, i, n) { - if ( - ((n = n || "normal"), - (i = i || "normal"), - (r = +r || { normal: 400, bold: 700, lighter: 300, bolder: 800 }[r] || 400), - e.fonts) - ) { - var a, - s = e.fonts[t]; - if (!s) { - var l = new RegExp("(^|\\s)" + t.replace(/[^\w\d\s+!~.:_-]/g, d) + "(\\s|$)", "i"); - for (var h in e.fonts) - if (e.fonts[o](h) && l.test(h)) { - s = e.fonts[h]; - break; - } - } - if (s) - for ( - var u = 0, c = s.length; - u < c && - ((a = s[u]).face["font-weight"] != r || - (a.face["font-style"] != i && a.face["font-style"]) || - a.face["font-stretch"] != n); - u++ - ); - return a; - } - }), - (i.print = function (t, r, i, a, s, o, l, h) { - (o = o || "middle"), (l = w(k(l || 0, 1), -1)), (h = w(k(h || 1, 3), 1)); - var u, - c = x(i)[v](d), - f = 0, - p = 0, - g = d; - if ((e.is(a, "string") && (a = this.getFont(a)), a)) { - u = (s || 16) / a.face["units-per-em"]; - for ( - var y = a.face.bbox[v](n), - m = +y[0], - b = y[3] - y[1], - _ = 0, - B = +y[1] + (o == "baseline" ? b + +a.face.descent : b / 2), - C = 0, - S = c.length; - C < S; - C++ - ) { - if (c[C] == "\n") (f = 0), (T = 0), (p = 0), (_ += b * h); - else { - var A = (p && a.glyphs[c[C - 1]]) || {}, - T = a.glyphs[c[C]]; - (f += p ? (A.w || a.w) + ((A.k && A.k[c[C]]) || 0) + a.w * l : 0), (p = 1); - } - T && - T.d && - (g += e.transformPath(T.d, ["t", f * u, _ * u, "s", u, u, m, B, "t", (t - m) / u, (r - B) / u])); - } - } - return this.path(g).attr({ fill: "#000", stroke: "none" }); - }), - (i.add = function (t) { - if (e.is(t, "array")) - for (var r, i = this.set(), n = 0, s = t.length; n < s; n++) - (r = t[n] || {}), a[o](r.type) && i.push(this[r.type]().attr(r)); - return i; - }), - (e.format = function (t, r) { - var i = e.is(r, T) ? [0][f](r) : arguments; - return ( - t && - e.is(t, "string") && - i.length - 1 && - (t = t.replace(s, function (t, e) { - return i[++e] == null ? d : i[e]; - })), - t || d - ); - }), - (e.fullfill = - ((oe = /\{([^\}]+)\}/g), - (le = /(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g), - function (t, e) { - return String(t).replace(oe, function (t, r) { - return (function (t, e, r) { - var i = r; - return ( - e.replace(le, function (t, e, r, n, a) { - (e = e || n), i && (e in i && (i = i[e]), typeof i == "function" && a && (i = i())); - }), - (i = (i == null || i == r ? t : i) + "") - ); - })(t, r, e); - }); - })), - (e.ninja = function () { - if (h.was) l.win.Raphael = h.is; - else { - window.Raphael = void 0; - try { - delete window.Raphael; - } catch (t) {} - } - return e; - }), - (e.st = ue), - t.on("raphael.DOMload", function () { - r = !0; - }), - (function (t, r, i) { - t.readyState == null && - t.addEventListener && - (t.addEventListener( - "DOMContentLoaded", - (i = function () { - t.removeEventListener("DOMContentLoaded", i, !1), (t.readyState = "complete"); - }), - !1, - ), - (t.readyState = "loading")), - (function r() { - /in/.test(t.readyState) ? setTimeout(r, 9) : e.eve("raphael.DOMload"); - })(); - })(document), - e - ); - }.apply(e, i)) || (t.exports = n); - }, - function (t, e, r) { - var i, n; - (i = [r(0)]), - void 0 === - (n = function (t) { - if (!t || t.vml) { - var e = "hasOwnProperty", - r = String, - i = parseFloat, - n = Math, - a = n.round, - s = n.max, - o = n.min, - l = n.abs, - h = /[, ]+/, - u = t.eve, - c = " ", - f = "", - p = { - M: "m", - L: "l", - C: "c", - Z: "x", - m: "t", - l: "r", - c: "v", - z: "x", - }, - d = /([clmz]),?([^clmz]*)/gi, - g = / progid:\S+Blur\([^\)]+\)/g, - x = /-?[^,\s-]+/g, - v = "position:absolute;left:0;top:0;width:1px;height:1px;behavior:url(#default#VML)", - y = 21600, - m = { path: 1, rect: 1, image: 1 }, - b = { circle: 1, ellipse: 1 }, - _ = function (e, r, i) { - var n = t.matrix(); - return n.rotate(-e, 0.5, 0.5), { dx: n.x(r, i), dy: n.y(r, i) }; - }, - w = function (t, e, r, i, n, a) { - var s = t._, - o = t.matrix, - h = s.fillpos, - u = t.node, - f = u.style, - p = 1, - d = "", - g = y / e, - x = y / r; - if (((f.visibility = "hidden"), e && r)) { - if (((u.coordsize = l(g) + c + l(x)), (f.rotation = a * (e * r < 0 ? -1 : 1)), a)) { - var v = _(a, i, n); - (i = v.dx), (n = v.dy); - } - if ( - (e < 0 && (d += "x"), - r < 0 && (d += " y") && (p = -1), - (f.flip = d), - (u.coordorigin = i * -g + c + n * -x), - h || s.fillsize) - ) { - var m = u.getElementsByTagName("fill"); - (m = m && m[0]), - u.removeChild(m), - h && ((v = _(a, o.x(h[0], h[1]), o.y(h[0], h[1]))), (m.position = v.dx * p + c + v.dy * p)), - s.fillsize && (m.size = s.fillsize[0] * l(e) + c + s.fillsize[1] * l(r)), - u.appendChild(m); - } - f.visibility = "visible"; - } - }; - t.toString = function () { - return ( - "Your browser doesn’t support SVG. Falling down to VML.\nYou are running Raphaël " + this.version - ); - }; - var k, - B = function (t, e, i) { - for ( - var n = r(e).toLowerCase().split("-"), - a = i ? "end" : "start", - s = n.length, - o = "classic", - l = "medium", - h = "medium"; - s--; - - ) - switch (n[s]) { - case "block": - case "classic": - case "oval": - case "diamond": - case "open": - case "none": - o = n[s]; - break; - case "wide": - case "narrow": - h = n[s]; - break; - case "long": - case "short": - l = n[s]; - } - var u = t.node.getElementsByTagName("stroke")[0]; - (u[a + "arrow"] = o), (u[a + "arrowlength"] = l), (u[a + "arrowwidth"] = h); - }, - C = function (n, l) { - n.attrs = n.attrs || {}; - var u = n.node, - g = n.attrs, - v = u.style, - _ = - m[n.type] && - (l.x != g.x || - l.y != g.y || - l.width != g.width || - l.height != g.height || - l.cx != g.cx || - l.cy != g.cy || - l.rx != g.rx || - l.ry != g.ry || - l.r != g.r), - C = b[n.type] && (g.cx != l.cx || g.cy != l.cy || g.r != l.r || g.rx != l.rx || g.ry != l.ry), - A = n; - for (var T in l) l[e](T) && (g[T] = l[T]); - if ( - (_ && ((g.path = t._getPath[n.type](n)), (n._.dirty = 1)), - l.href && (u.href = l.href), - l.title && (u.title = l.title), - l.target && (u.target = l.target), - l.cursor && (v.cursor = l.cursor), - "blur" in l && n.blur(l.blur), - ((l.path && n.type == "path") || _) && - ((u.path = (function (e) { - var i = /[ahqstv]/gi, - n = t._pathToAbsolute; - if ( - (r(e).match(i) && (n = t._path2curve), - (i = /[clmz]/g), - n == t._pathToAbsolute && !r(e).match(i)) - ) { - var s = r(e).replace(d, function (t, e, r) { - var i = [], - n = e.toLowerCase() == "m", - s = p[e]; - return ( - r.replace(x, function (t) { - n && i.length == 2 && ((s += i + p[e == "m" ? "l" : "L"]), (i = [])), i.push(a(t * y)); - }), - s + i - ); - }); - return s; - } - var o, - l, - h = n(e); - s = []; - for (var u = 0, g = h.length; u < g; u++) { - (o = h[u]), (l = h[u][0].toLowerCase()) == "z" && (l = "x"); - for (var v = 1, m = o.length; v < m; v++) l += a(o[v] * y) + (v != m - 1 ? "," : f); - s.push(l); - } - return s.join(c); - })(~r(g.path).toLowerCase().indexOf("r") ? t._pathToAbsolute(g.path) : g.path)), - (n._.dirty = 1), - n.type == "image" && - ((n._.fillpos = [g.x, g.y]), (n._.fillsize = [g.width, g.height]), w(n, 1, 1, 0, 0, 0))), - "transform" in l && n.transform(l.transform), - C) - ) { - var M = +g.cx, - E = +g.cy, - N = +g.rx || +g.r || 0, - L = +g.ry || +g.r || 0; - (u.path = t.format( - "ar{0},{1},{2},{3},{4},{1},{4},{1}x", - a((M - N) * y), - a((E - L) * y), - a((M + N) * y), - a((E + L) * y), - a(M * y), - )), - (n._.dirty = 1); - } - if ("clip-rect" in l) { - var P = r(l["clip-rect"]).split(h); - if (P.length == 4) { - (P[2] = +P[2] + +P[0]), (P[3] = +P[3] + +P[1]); - var z = u.clipRect || t._g.doc.createElement("div"), - F = z.style; - (F.clip = t.format("rect({1}px {2}px {3}px {0}px)", P)), - u.clipRect || - ((F.position = "absolute"), - (F.top = 0), - (F.left = 0), - (F.width = n.paper.width + "px"), - (F.height = n.paper.height + "px"), - u.parentNode.insertBefore(z, u), - z.appendChild(u), - (u.clipRect = z)); - } - l["clip-rect"] || (u.clipRect && (u.clipRect.style.clip = "auto")); - } - if (n.textpath) { - var R = n.textpath.style; - l.font && (R.font = l.font), - l["font-family"] && - (R.fontFamily = '"' + l["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g, f) + '"'), - l["font-size"] && (R.fontSize = l["font-size"]), - l["font-weight"] && (R.fontWeight = l["font-weight"]), - l["font-style"] && (R.fontStyle = l["font-style"]); - } - if ( - ("arrow-start" in l && B(A, l["arrow-start"]), - "arrow-end" in l && B(A, l["arrow-end"], 1), - l.opacity != null || - l.fill != null || - l.src != null || - l.stroke != null || - l["stroke-width"] != null || - l["stroke-opacity"] != null || - l["fill-opacity"] != null || - l["stroke-dasharray"] != null || - l["stroke-miterlimit"] != null || - l["stroke-linejoin"] != null || - l["stroke-linecap"] != null) - ) { - var j = u.getElementsByTagName("fill"); - if ( - (!(j = j && j[0]) && (j = k("fill")), - n.type == "image" && l.src && (j.src = l.src), - l.fill && (j.on = !0), - (j.on != null && l.fill != "none" && l.fill !== null) || (j.on = !1), - j.on && l.fill) - ) { - var I = r(l.fill).match(t._ISURL); - if (I) { - j.parentNode == u && u.removeChild(j), (j.rotate = !0), (j.src = I[1]), (j.type = "tile"); - var D = n.getBBox(1); - (j.position = D.x + c + D.y), - (n._.fillpos = [D.x, D.y]), - t._preload(I[1], function () { - n._.fillsize = [this.offsetWidth, this.offsetHeight]; - }); - } else - (j.color = t.getRGB(l.fill).hex), - (j.src = f), - (j.type = "solid"), - t.getRGB(l.fill).error && - (A.type in { circle: 1, ellipse: 1 } || r(l.fill).charAt() != "r") && - S(A, l.fill, j) && - ((g.fill = "none"), (g.gradient = l.fill), (j.rotate = !1)); - } - if ("fill-opacity" in l || "opacity" in l) { - var q = - ((+g["fill-opacity"] + 1 || 2) - 1) * - ((+g.opacity + 1 || 2) - 1) * - ((+t.getRGB(l.fill).o + 1 || 2) - 1); - (q = o(s(q, 0), 1)), (j.opacity = q), j.src && (j.color = "none"); - } - u.appendChild(j); - var O = u.getElementsByTagName("stroke") && u.getElementsByTagName("stroke")[0], - V = !1; - !O && (V = O = k("stroke")), - ((l.stroke && l.stroke != "none") || - l["stroke-width"] || - l["stroke-opacity"] != null || - l["stroke-dasharray"] || - l["stroke-miterlimit"] || - l["stroke-linejoin"] || - l["stroke-linecap"]) && - (O.on = !0), - (l.stroke == "none" || - l.stroke === null || - O.on == null || - l.stroke == 0 || - l["stroke-width"] == 0) && - (O.on = !1); - var Y = t.getRGB(l.stroke); - O.on && l.stroke && (O.color = Y.hex), - (q = ((+g["stroke-opacity"] + 1 || 2) - 1) * ((+g.opacity + 1 || 2) - 1) * ((+Y.o + 1 || 2) - 1)); - var W = 0.75 * (i(l["stroke-width"]) || 1); - if ( - ((q = o(s(q, 0), 1)), - l["stroke-width"] == null && (W = g["stroke-width"]), - l["stroke-width"] && (O.weight = W), - W && W < 1 && (q *= W) && (O.weight = 1), - (O.opacity = q), - l["stroke-linejoin"] && (O.joinstyle = l["stroke-linejoin"] || "miter"), - (O.miterlimit = l["stroke-miterlimit"] || 8), - l["stroke-linecap"] && - (O.endcap = - l["stroke-linecap"] == "butt" - ? "flat" - : l["stroke-linecap"] == "square" - ? "square" - : "round"), - "stroke-dasharray" in l) - ) { - var G = { - "-": "shortdash", - ".": "shortdot", - "-.": "shortdashdot", - "-..": "shortdashdotdot", - ". ": "dot", - "- ": "dash", - "--": "longdash", - "- .": "dashdot", - "--.": "longdashdot", - "--..": "longdashdotdot", - }; - O.dashstyle = G[e](l["stroke-dasharray"]) ? G[l["stroke-dasharray"]] : f; - } - V && u.appendChild(O); - } - if (A.type == "text") { - A.paper.canvas.style.display = f; - var H = A.paper.span, - X = g.font && g.font.match(/\d+(?:\.\d*)?(?=px)/); - (v = H.style), - g.font && (v.font = g.font), - g["font-family"] && (v.fontFamily = g["font-family"]), - g["font-weight"] && (v.fontWeight = g["font-weight"]), - g["font-style"] && (v.fontStyle = g["font-style"]), - (X = i(g["font-size"] || (X && X[0])) || 10), - (v.fontSize = 100 * X + "px"), - A.textpath.string && - (H.innerHTML = r(A.textpath.string) - .replace(/")); - var U = H.getBoundingClientRect(); - (A.W = g.w = (U.right - U.left) / 100), - (A.H = g.h = (U.bottom - U.top) / 100), - (A.X = g.x), - (A.Y = g.y + A.H / 2), - ("x" in l || "y" in l) && - (A.path.v = t.format("m{0},{1}l{2},{1}", a(g.x * y), a(g.y * y), a(g.x * y) + 1)); - for ( - var $ = ["x", "y", "text", "font", "font-family", "font-weight", "font-style", "font-size"], - Z = 0, - Q = $.length; - Z < Q; - Z++ - ) - if ($[Z] in l) { - A._.dirty = 1; - break; - } - switch (g["text-anchor"]) { - case "start": - (A.textpath.style["v-text-align"] = "left"), (A.bbx = A.W / 2); - break; - case "end": - (A.textpath.style["v-text-align"] = "right"), (A.bbx = -A.W / 2); - break; - default: - (A.textpath.style["v-text-align"] = "center"), (A.bbx = 0); - } - A.textpath.style["v-text-kern"] = !0; - } - }, - S = function (e, a, s) { - e.attrs = e.attrs || {}; - e.attrs; - var o = Math.pow, - l = "linear", - h = ".5 .5"; - if ( - ((e.attrs.gradient = a), - (a = (a = r(a).replace(t._radial_gradient, function (t, e, r) { - return ( - (l = "radial"), - e && - r && - ((e = i(e)), - (r = i(r)), - o(e - 0.5, 2) + o(r - 0.5, 2) > 0.25 && - (r = n.sqrt(0.25 - o(e - 0.5, 2)) * (2 * (r > 0.5) - 1) + 0.5), - (h = e + c + r)), - f - ); - })).split(/\s*\-\s*/)), - l == "linear") - ) { - var u = a.shift(); - if (((u = -i(u)), isNaN(u))) return null; - } - var p = t._parseDots(a); - if (!p) return null; - if (((e = e.shape || e.node), p.length)) { - e.removeChild(s), - (s.on = !0), - (s.method = "none"), - (s.color = p[0].color), - (s.color2 = p[p.length - 1].color); - for (var d = [], g = 0, x = p.length; g < x; g++) - p[g].offset && d.push(p[g].offset + c + p[g].color); - (s.colors = d.length ? d.join() : "0% " + s.color), - l == "radial" - ? ((s.type = "gradientTitle"), - (s.focus = "100%"), - (s.focussize = "0 0"), - (s.focusposition = h), - (s.angle = 0)) - : ((s.type = "gradient"), (s.angle = (270 - u) % 360)), - e.appendChild(s); - } - return 1; - }, - A = function (e, r) { - (this[0] = this.node = e), - (e.raphael = !0), - (this.id = t._oid++), - (e.raphaelid = this.id), - (this.X = 0), - (this.Y = 0), - (this.attrs = {}), - (this.paper = r), - (this.matrix = t.matrix()), - (this._ = { - transform: [], - sx: 1, - sy: 1, - dx: 0, - dy: 0, - deg: 0, - dirty: 1, - dirtyT: 1, - }), - !r.bottom && (r.bottom = this), - (this.prev = r.top), - r.top && (r.top.next = this), - (r.top = this), - (this.next = null); - }, - T = t.el; - (A.prototype = T), - (T.constructor = A), - (T.transform = function (e) { - if (e == null) return this._.transform; - var i, - n = this.paper._viewBoxShift, - a = n ? "s" + [n.scale, n.scale] + "-1-1t" + [n.dx, n.dy] : f; - n && (i = e = r(e).replace(/\.{3}|\u2026/g, this._.transform || f)), t._extractTransform(this, a + e); - var s, - o = this.matrix.clone(), - l = this.skew, - h = this.node, - u = ~r(this.attrs.fill).indexOf("-"), - p = !r(this.attrs.fill).indexOf("url("); - if ((o.translate(1, 1), p || u || this.type == "image")) - if ( - ((l.matrix = "1 0 0 1"), (l.offset = "0 0"), (s = o.split()), (u && s.noRotation) || !s.isSimple) - ) { - h.style.filter = o.toFilter(); - var d = this.getBBox(), - g = this.getBBox(1), - x = d.x - g.x, - v = d.y - g.y; - (h.coordorigin = x * -y + c + v * -y), w(this, 1, 1, x, v, 0); - } else (h.style.filter = f), w(this, s.scalex, s.scaley, s.dx, s.dy, s.rotate); - else (h.style.filter = f), (l.matrix = r(o)), (l.offset = o.offset()); - return i !== null && ((this._.transform = i), t._extractTransform(this, i)), this; - }), - (T.rotate = function (t, e, n) { - if (this.removed) return this; - if (t != null) { - if ( - ((t = r(t).split(h)).length - 1 && ((e = i(t[1])), (n = i(t[2]))), - (t = i(t[0])), - n == null && (e = n), - e == null || n == null) - ) { - var a = this.getBBox(1); - (e = a.x + a.width / 2), (n = a.y + a.height / 2); - } - return (this._.dirtyT = 1), this.transform(this._.transform.concat([["r", t, e, n]])), this; - } - }), - (T.translate = function (t, e) { - return this.removed - ? this - : ((t = r(t).split(h)).length - 1 && (e = i(t[1])), - (t = i(t[0]) || 0), - (e = +e || 0), - this._.bbox && ((this._.bbox.x += t), (this._.bbox.y += e)), - this.transform(this._.transform.concat([["t", t, e]])), - this); - }), - (T.scale = function (t, e, n, a) { - if (this.removed) return this; - if ( - ((t = r(t).split(h)).length - 1 && - ((e = i(t[1])), (n = i(t[2])), (a = i(t[3])), isNaN(n) && (n = null), isNaN(a) && (a = null)), - (t = i(t[0])), - e == null && (e = t), - a == null && (n = a), - n == null || a == null) - ) - var s = this.getBBox(1); - return ( - (n = n == null ? s.x + s.width / 2 : n), - (a = a == null ? s.y + s.height / 2 : a), - this.transform(this._.transform.concat([["s", t, e, n, a]])), - (this._.dirtyT = 1), - this - ); - }), - (T.hide = function () { - return !this.removed && (this.node.style.display = "none"), this; - }), - (T.show = function () { - return !this.removed && (this.node.style.display = f), this; - }), - (T.auxGetBBox = t.el.getBBox), - (T.getBBox = function () { - var t = this.auxGetBBox(); - if (this.paper && this.paper._viewBoxShift) { - var e = {}, - r = 1 / this.paper._viewBoxShift.scale; - return ( - (e.x = t.x - this.paper._viewBoxShift.dx), - (e.x *= r), - (e.y = t.y - this.paper._viewBoxShift.dy), - (e.y *= r), - (e.width = t.width * r), - (e.height = t.height * r), - (e.x2 = e.x + e.width), - (e.y2 = e.y + e.height), - e - ); - } - return t; - }), - (T._getBBox = function () { - return this.removed - ? {} - : { - x: this.X + (this.bbx || 0) - this.W / 2, - y: this.Y - this.H, - width: this.W, - height: this.H, - }; - }), - (T.remove = function () { - if (!this.removed && this.node.parentNode) { - for (var e in (this.paper.__set__ && this.paper.__set__.exclude(this), - t.eve.unbind("raphael.*.*." + this.id), - t._tear(this, this.paper), - this.node.parentNode.removeChild(this.node), - this.shape && this.shape.parentNode.removeChild(this.shape), - this)) - this[e] = typeof this[e] == "function" ? t._removedFactory(e) : null; - this.removed = !0; - } - }), - (T.attr = function (r, i) { - if (this.removed) return this; - if (r == null) { - var n = {}; - for (var a in this.attrs) this.attrs[e](a) && (n[a] = this.attrs[a]); - return ( - n.gradient && n.fill == "none" && (n.fill = n.gradient) && delete n.gradient, - (n.transform = this._.transform), - n - ); - } - if (i == null && t.is(r, "string")) { - if (r == "fill" && this.attrs.fill == "none" && this.attrs.gradient) return this.attrs.gradient; - for (var s = r.split(h), o = {}, l = 0, c = s.length; l < c; l++) - (r = s[l]) in this.attrs - ? (o[r] = this.attrs[r]) - : t.is(this.paper.customAttributes[r], "function") - ? (o[r] = this.paper.customAttributes[r].def) - : (o[r] = t._availableAttrs[r]); - return c - 1 ? o : o[s[0]]; - } - if (this.attrs && i == null && t.is(r, "array")) { - for (o = {}, l = 0, c = r.length; l < c; l++) o[r[l]] = this.attr(r[l]); - return o; - } - var f; - for (var p in (i != null && ((f = {})[r] = i), i == null && t.is(r, "object") && (f = r), f)) - u("raphael.attr." + p + "." + this.id, this, f[p]); - if (f) { - for (p in this.paper.customAttributes) - if ( - this.paper.customAttributes[e](p) && - f[e](p) && - t.is(this.paper.customAttributes[p], "function") - ) { - var d = this.paper.customAttributes[p].apply(this, [].concat(f[p])); - for (var g in ((this.attrs[p] = f[p]), d)) d[e](g) && (f[g] = d[g]); - } - f.text && this.type == "text" && (this.textpath.string = f.text), C(this, f); - } - return this; - }), - (T.toFront = function () { - return ( - !this.removed && this.node.parentNode.appendChild(this.node), - this.paper && this.paper.top != this && t._tofront(this, this.paper), - this - ); - }), - (T.toBack = function () { - return this.removed - ? this - : (this.node.parentNode.firstChild != this.node && - (this.node.parentNode.insertBefore(this.node, this.node.parentNode.firstChild), - t._toback(this, this.paper)), - this); - }), - (T.insertAfter = function (e) { - return this.removed - ? this - : (e.constructor == t.st.constructor && (e = e[e.length - 1]), - e.node.nextSibling - ? e.node.parentNode.insertBefore(this.node, e.node.nextSibling) - : e.node.parentNode.appendChild(this.node), - t._insertafter(this, e, this.paper), - this); - }), - (T.insertBefore = function (e) { - return this.removed - ? this - : (e.constructor == t.st.constructor && (e = e[0]), - e.node.parentNode.insertBefore(this.node, e.node), - t._insertbefore(this, e, this.paper), - this); - }), - (T.blur = function (e) { - var r = this.node.runtimeStyle, - i = r.filter; - return ( - (i = i.replace(g, f)), - +e != 0 - ? ((this.attrs.blur = e), - (r.filter = i + c + " progid:DXImageTransform.Microsoft.Blur(pixelradius=" + (+e || 1.5) + ")"), - (r.margin = t.format("-{0}px 0 0 -{0}px", a(+e || 1.5)))) - : ((r.filter = i), (r.margin = 0), delete this.attrs.blur), - this - ); - }), - (t._engine.path = function (t, e) { - var r = k("shape"); - (r.style.cssText = v), (r.coordsize = y + c + y), (r.coordorigin = e.coordorigin); - var i = new A(r, e), - n = { fill: "none", stroke: "#000" }; - t && (n.path = t), - (i.type = "path"), - (i.path = []), - (i.Path = f), - C(i, n), - e.canvas && e.canvas.appendChild(r); - var a = k("skew"); - return (a.on = !0), r.appendChild(a), (i.skew = a), i.transform(f), i; - }), - (t._engine.rect = function (e, r, i, n, a, s) { - var o = t._rectPath(r, i, n, a, s), - l = e.path(o), - h = l.attrs; - return ( - (l.X = h.x = r), - (l.Y = h.y = i), - (l.W = h.width = n), - (l.H = h.height = a), - (h.r = s), - (h.path = o), - (l.type = "rect"), - l - ); - }), - (t._engine.ellipse = function (t, e, r, i, n) { - var a = t.path(); - a.attrs; - return ( - (a.X = e - i), - (a.Y = r - n), - (a.W = 2 * i), - (a.H = 2 * n), - (a.type = "ellipse"), - C(a, { cx: e, cy: r, rx: i, ry: n }), - a - ); - }), - (t._engine.circle = function (t, e, r, i) { - var n = t.path(); - n.attrs; - return ( - (n.X = e - i), - (n.Y = r - i), - (n.W = n.H = 2 * i), - (n.type = "circle"), - C(n, { cx: e, cy: r, r: i }), - n - ); - }), - (t._engine.image = function (e, r, i, n, a, s) { - var o = t._rectPath(i, n, a, s), - l = e.path(o).attr({ stroke: "none" }), - h = l.attrs, - u = l.node, - c = u.getElementsByTagName("fill")[0]; - return ( - (h.src = r), - (l.X = h.x = i), - (l.Y = h.y = n), - (l.W = h.width = a), - (l.H = h.height = s), - (h.path = o), - (l.type = "image"), - c.parentNode == u && u.removeChild(c), - (c.rotate = !0), - (c.src = r), - (c.type = "tile"), - (l._.fillpos = [i, n]), - (l._.fillsize = [a, s]), - u.appendChild(c), - w(l, 1, 1, 0, 0, 0), - l - ); - }), - (t._engine.text = function (e, i, n, s) { - var o = k("shape"), - l = k("path"), - h = k("textpath"); - (i = i || 0), - (n = n || 0), - (s = s || ""), - (l.v = t.format("m{0},{1}l{2},{1}", a(i * y), a(n * y), a(i * y) + 1)), - (l.textpathok = !0), - (h.string = r(s)), - (h.on = !0), - (o.style.cssText = v), - (o.coordsize = y + c + y), - (o.coordorigin = "0 0"); - var u = new A(o, e), - p = { - fill: "#000", - stroke: "none", - font: t._availableAttrs.font, - text: s, - }; - (u.shape = o), - (u.path = l), - (u.textpath = h), - (u.type = "text"), - (u.attrs.text = r(s)), - (u.attrs.x = i), - (u.attrs.y = n), - (u.attrs.w = 1), - (u.attrs.h = 1), - C(u, p), - o.appendChild(h), - o.appendChild(l), - e.canvas.appendChild(o); - var d = k("skew"); - return (d.on = !0), o.appendChild(d), (u.skew = d), u.transform(f), u; - }), - (t._engine.setSize = function (e, r) { - var i = this.canvas.style; - return ( - (this.width = e), - (this.height = r), - e == +e && (e += "px"), - r == +r && (r += "px"), - (i.width = e), - (i.height = r), - (i.clip = "rect(0 " + e + " " + r + " 0)"), - this._viewBox && t._engine.setViewBox.apply(this, this._viewBox), - this - ); - }), - (t._engine.setViewBox = function (e, r, i, n, a) { - t.eve("raphael.setViewBox", this, this._viewBox, [e, r, i, n, a]); - var s, - o, - l = this.getSize(), - h = l.width, - u = l.height; - return ( - a && - ((o = h / i), - i * (s = u / n) < h && (e -= (h - i * s) / 2 / s), - n * o < u && (r -= (u - n * o) / 2 / o)), - (this._viewBox = [e, r, i, n, !!a]), - (this._viewBoxShift = { dx: -e, dy: -r, scale: l }), - this.forEach(function (t) { - t.transform("..."); - }), - this - ); - }), - (t._engine.initWin = function (t) { - var e = t.document; - e.styleSheets.length < 31 - ? e.createStyleSheet().addRule(".rvml", "behavior:url(#default#VML)") - : e.styleSheets[0].addRule(".rvml", "behavior:url(#default#VML)"); - try { - !e.namespaces.rvml && e.namespaces.add("rvml", "urn:schemas-microsoft-com:vml"), - (k = function (t) { - return e.createElement("'); - }); - } catch (t) { - k = function (t) { - return e.createElement("<" + t + ' xmlns="urn:schemas-microsoft.com:vml" class="rvml">'); - }; - } - }), - t._engine.initWin(t._g.win), - (t._engine.create = function () { - var e = t._getContainer.apply(0, arguments), - r = e.container, - i = e.height, - n = e.width, - a = e.x, - s = e.y; - if (!r) throw new Error("VML container not found."); - var o = new t._Paper(), - l = (o.canvas = t._g.doc.createElement("div")), - h = l.style; - return ( - (a = a || 0), - (s = s || 0), - (n = n || 512), - (i = i || 342), - (o.width = n), - (o.height = i), - n == +n && (n += "px"), - i == +i && (i += "px"), - (o.coordsize = 216e5 + c + 216e5), - (o.coordorigin = "0 0"), - (o.span = t._g.doc.createElement("span")), - (o.span.style.cssText = - "position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;"), - l.appendChild(o.span), - (h.cssText = t.format( - "top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden", - n, - i, - )), - r == 1 - ? (t._g.doc.body.appendChild(l), - (h.left = a + "px"), - (h.top = s + "px"), - (h.position = "absolute")) - : r.firstChild - ? r.insertBefore(l, r.firstChild) - : r.appendChild(l), - (o.renderfix = function () {}), - o - ); - }), - (t.prototype.clear = function () { - t.eve("raphael.clear", this), - (this.canvas.innerHTML = f), - (this.span = t._g.doc.createElement("span")), - (this.span.style.cssText = - "position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;"), - this.canvas.appendChild(this.span), - (this.bottom = this.top = null); - }), - (t.prototype.remove = function () { - for (var e in (t.eve("raphael.remove", this), this.canvas.parentNode.removeChild(this.canvas), this)) - this[e] = typeof this[e] == "function" ? t._removedFactory(e) : null; - return !0; - }); - var M = t.st; - for (var E in T) - T[e](E) && - !M[e](E) && - (M[E] = (function (t) { - return function () { - var e = arguments; - return this.forEach(function (r) { - r[t].apply(r, e); - }); - }; - })(E)); - } - }.apply(e, i)) || (t.exports = n); - }, - function (t, e, r) { - var i, n; - (i = [r(0)]), - void 0 === - (n = function (t) { - if (!t || t.svg) { - var e = "hasOwnProperty", - r = String, - i = parseFloat, - n = parseInt, - a = Math, - s = a.max, - o = a.abs, - l = a.pow, - h = /[, ]+/, - u = t.eve, - c = "", - f = " ", - p = "http://www.w3.org/1999/xlink", - d = { - block: "M5,0 0,2.5 5,5z", - classic: "M5,0 0,2.5 5,5 3.5,3 3.5,2z", - diamond: "M2.5,0 5,2.5 2.5,5 0,2.5z", - open: "M6,1 1,3.5 6,6", - oval: "M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z", - }, - g = {}; - t.toString = function () { - return "Your browser supports SVG.\nYou are running Raphaël " + this.version; - }; - var x = function (i, n) { - if (n) - for (var a in (typeof i == "string" && (i = x(i)), n)) - n[e](a) && - (a.substring(0, 6) == "xlink:" - ? i.setAttributeNS(p, a.substring(6), r(n[a])) - : i.setAttribute(a, r(n[a]))); - else - (i = t._g.doc.createElementNS("http://www.w3.org/2000/svg", i)).style && - (i.style.webkitTapHighlightColor = "rgba(0,0,0,0)"); - return i; - }, - v = function (e, n) { - var h = "linear", - u = e.id + n, - f = 0.5, - p = 0.5, - d = e.node, - g = e.paper, - v = d.style, - m = t._g.doc.getElementById(u); - if (!m) { - if ( - ((n = (n = r(n).replace(t._radial_gradient, function (t, e, r) { - if (((h = "radial"), e && r)) { - f = i(e); - var n = 2 * ((p = i(r)) > 0.5) - 1; - l(f - 0.5, 2) + l(p - 0.5, 2) > 0.25 && - (p = a.sqrt(0.25 - l(f - 0.5, 2)) * n + 0.5) && - p != 0.5 && - (p = p.toFixed(5) - 1e-5 * n); - } - return c; - })).split(/\s*\-\s*/)), - h == "linear") - ) { - var b = n.shift(); - if (((b = -i(b)), isNaN(b))) return null; - var _ = [0, 0, a.cos(t.rad(b)), a.sin(t.rad(b))], - w = 1 / (s(o(_[2]), o(_[3])) || 1); - (_[2] *= w), - (_[3] *= w), - _[2] < 0 && ((_[0] = -_[2]), (_[2] = 0)), - _[3] < 0 && ((_[1] = -_[3]), (_[3] = 0)); - } - var k = t._parseDots(n); - if (!k) return null; - if ( - ((u = u.replace(/[\(\)\s,\xb0#]/g, "_")), - e.gradient && u != e.gradient.id && (g.defs.removeChild(e.gradient), delete e.gradient), - !e.gradient) - ) { - (m = x(h + "Gradient", { id: u })), - (e.gradient = m), - x( - m, - h == "radial" - ? { fx: f, fy: p } - : { - x1: _[0], - y1: _[1], - x2: _[2], - y2: _[3], - gradientTransform: e.matrix.invert(), - }, - ), - g.defs.appendChild(m); - for (var B = 0, C = k.length; B < C; B++) - m.appendChild( - x("stop", { - offset: k[B].offset ? k[B].offset : B ? "100%" : "0%", - "stop-color": k[B].color || "#fff", - "stop-opacity": isFinite(k[B].opacity) ? k[B].opacity : 1, - }), - ); - } - } - return ( - x(d, { fill: y(u), opacity: 1, "fill-opacity": 1 }), - (v.fill = c), - (v.opacity = 1), - (v.fillOpacity = 1), - 1 - ); - }, - y = function (t) { - if ((e = document.documentMode) && (e === 9 || e === 10)) return "url('#" + t + "')"; - var e, - r = document.location; - return "url('" + (r.protocol + "//" + r.host + r.pathname + r.search) + "#" + t + "')"; - }, - m = function (t) { - var e = t.getBBox(1); - x(t.pattern, { - patternTransform: t.matrix.invert() + " translate(" + e.x + "," + e.y + ")", - }); - }, - b = function (i, n, a) { - if (i.type == "path") { - for ( - var s, - o, - l, - h, - u, - f = r(n).toLowerCase().split("-"), - p = i.paper, - v = a ? "end" : "start", - y = i.node, - m = i.attrs, - b = m["stroke-width"], - _ = f.length, - w = "classic", - k = 3, - B = 3, - C = 5; - _--; - - ) - switch (f[_]) { - case "block": - case "classic": - case "oval": - case "diamond": - case "open": - case "none": - w = f[_]; - break; - case "wide": - B = 5; - break; - case "narrow": - B = 2; - break; - case "long": - k = 5; - break; - case "short": - k = 2; - } - if ( - (w == "open" - ? ((k += 2), - (B += 2), - (C += 2), - (l = 1), - (h = a ? 4 : 1), - (u = { fill: "none", stroke: m.stroke })) - : ((h = l = k / 2), (u = { fill: m.stroke, stroke: "none" })), - i._.arrows - ? a - ? (i._.arrows.endPath && g[i._.arrows.endPath]--, - i._.arrows.endMarker && g[i._.arrows.endMarker]--) - : (i._.arrows.startPath && g[i._.arrows.startPath]--, - i._.arrows.startMarker && g[i._.arrows.startMarker]--) - : (i._.arrows = {}), - w != "none") - ) { - var S = "raphael-marker-" + w, - A = "raphael-marker-" + v + w + k + B + "-obj" + i.id; - t._g.doc.getElementById(S) - ? g[S]++ - : (p.defs.appendChild( - x(x("path"), { - "stroke-linecap": "round", - d: d[w], - id: S, - }), - ), - (g[S] = 1)); - var T, - M = t._g.doc.getElementById(A); - M - ? (g[A]++, (T = M.getElementsByTagName("use")[0])) - : ((M = x(x("marker"), { - id: A, - markerHeight: B, - markerWidth: k, - orient: "auto", - refX: h, - refY: B / 2, - })), - (T = x(x("use"), { - "xlink:href": "#" + S, - transform: - (a ? "rotate(180 " + k / 2 + " " + B / 2 + ") " : c) + - "scale(" + - k / C + - "," + - B / C + - ")", - "stroke-width": (1 / ((k / C + B / C) / 2)).toFixed(4), - })), - M.appendChild(T), - p.defs.appendChild(M), - (g[A] = 1)), - x(T, u); - var E = l * (w != "diamond" && w != "oval"); - a - ? ((s = i._.arrows.startdx * b || 0), (o = t.getTotalLength(m.path) - E * b)) - : ((s = E * b), (o = t.getTotalLength(m.path) - (i._.arrows.enddx * b || 0))), - ((u = {})["marker-" + v] = "url(#" + A + ")"), - (o || s) && (u.d = t.getSubpath(m.path, s, o)), - x(y, u), - (i._.arrows[v + "Path"] = S), - (i._.arrows[v + "Marker"] = A), - (i._.arrows[v + "dx"] = E), - (i._.arrows[v + "Type"] = w), - (i._.arrows[v + "String"] = n); - } else - a - ? ((s = i._.arrows.startdx * b || 0), (o = t.getTotalLength(m.path) - s)) - : ((s = 0), (o = t.getTotalLength(m.path) - (i._.arrows.enddx * b || 0))), - i._.arrows[v + "Path"] && x(y, { d: t.getSubpath(m.path, s, o) }), - delete i._.arrows[v + "Path"], - delete i._.arrows[v + "Marker"], - delete i._.arrows[v + "dx"], - delete i._.arrows[v + "Type"], - delete i._.arrows[v + "String"]; - for (u in g) - if (g[e](u) && !g[u]) { - var N = t._g.doc.getElementById(u); - N && N.parentNode.removeChild(N); - } - } - }, - _ = { - "-": [3, 1], - ".": [1, 1], - "-.": [3, 1, 1, 1], - "-..": [3, 1, 1, 1, 1, 1], - ". ": [1, 3], - "- ": [4, 3], - "--": [8, 3], - "- .": [4, 3, 1, 3], - "--.": [8, 3, 1, 3], - "--..": [8, 3, 1, 3, 1, 3], - }, - w = function (t, e, i) { - if ((e = _[r(e).toLowerCase()])) { - for ( - var n = t.attrs["stroke-width"] || "1", - a = { round: n, square: n, butt: 0 }[t.attrs["stroke-linecap"] || i["stroke-linecap"]] || 0, - s = [], - o = e.length; - o--; - - ) - s[o] = e[o] * n + (o % 2 ? 1 : -1) * a; - x(t.node, { "stroke-dasharray": s.join(",") }); - } else x(t.node, { "stroke-dasharray": "none" }); - }, - k = function (i, a) { - var l = i.node, - u = i.attrs, - f = l.style.visibility; - for (var d in ((l.style.visibility = "hidden"), a)) - if (a[e](d)) { - if (!t._availableAttrs[e](d)) continue; - var g = a[d]; - switch (((u[d] = g), d)) { - case "blur": - i.blur(g); - break; - case "title": - var y = l.getElementsByTagName("title"); - if (y.length && (y = y[0])) y.firstChild.nodeValue = g; - else { - y = x("title"); - var _ = t._g.doc.createTextNode(g); - y.appendChild(_), l.appendChild(y); - } - break; - case "href": - case "target": - var k = l.parentNode; - if (k.tagName.toLowerCase() != "a") { - var C = x("a"); - k.insertBefore(C, l), C.appendChild(l), (k = C); - } - d == "target" - ? k.setAttributeNS(p, "show", g == "blank" ? "new" : g) - : k.setAttributeNS(p, d, g); - break; - case "cursor": - l.style.cursor = g; - break; - case "transform": - i.transform(g); - break; - case "arrow-start": - b(i, g); - break; - case "arrow-end": - b(i, g, 1); - break; - case "clip-rect": - var S = r(g).split(h); - if (S.length == 4) { - i.clip && i.clip.parentNode.parentNode.removeChild(i.clip.parentNode); - var A = x("clipPath"), - T = x("rect"); - (A.id = t.createUUID()), - x(T, { - x: S[0], - y: S[1], - width: S[2], - height: S[3], - }), - A.appendChild(T), - i.paper.defs.appendChild(A), - x(l, { "clip-path": "url(#" + A.id + ")" }), - (i.clip = T); - } - if (!g) { - var M = l.getAttribute("clip-path"); - if (M) { - var E = t._g.doc.getElementById(M.replace(/(^url\(#|\)$)/g, c)); - E && E.parentNode.removeChild(E), x(l, { "clip-path": c }), delete i.clip; - } - } - break; - case "path": - i.type == "path" && - (x(l, { - d: g ? (u.path = t._pathToAbsolute(g)) : "M0,0", - }), - (i._.dirty = 1), - i._.arrows && - ("startString" in i._.arrows && b(i, i._.arrows.startString), - "endString" in i._.arrows && b(i, i._.arrows.endString, 1))); - break; - case "width": - if ((l.setAttribute(d, g), (i._.dirty = 1), !u.fx)) break; - (d = "x"), (g = u.x); - case "x": - u.fx && (g = -u.x - (u.width || 0)); - case "rx": - if (d == "rx" && i.type == "rect") break; - case "cx": - l.setAttribute(d, g), i.pattern && m(i), (i._.dirty = 1); - break; - case "height": - if ((l.setAttribute(d, g), (i._.dirty = 1), !u.fy)) break; - (d = "y"), (g = u.y); - case "y": - u.fy && (g = -u.y - (u.height || 0)); - case "ry": - if (d == "ry" && i.type == "rect") break; - case "cy": - l.setAttribute(d, g), i.pattern && m(i), (i._.dirty = 1); - break; - case "r": - i.type == "rect" ? x(l, { rx: g, ry: g }) : l.setAttribute(d, g), (i._.dirty = 1); - break; - case "src": - i.type == "image" && l.setAttributeNS(p, "href", g); - break; - case "stroke-width": - (i._.sx == 1 && i._.sy == 1) || (g /= s(o(i._.sx), o(i._.sy)) || 1), - l.setAttribute(d, g), - u["stroke-dasharray"] && w(i, u["stroke-dasharray"], a), - i._.arrows && - ("startString" in i._.arrows && b(i, i._.arrows.startString), - "endString" in i._.arrows && b(i, i._.arrows.endString, 1)); - break; - case "stroke-dasharray": - w(i, g, a); - break; - case "fill": - var N = r(g).match(t._ISURL); - if (N) { - A = x("pattern"); - var L = x("image"); - (A.id = t.createUUID()), - x(A, { - x: 0, - y: 0, - patternUnits: "userSpaceOnUse", - height: 1, - width: 1, - }), - x(L, { x: 0, y: 0, "xlink:href": N[1] }), - A.appendChild(L), - (function (e) { - t._preload(N[1], function () { - var t = this.offsetWidth, - r = this.offsetHeight; - x(e, { width: t, height: r }), x(L, { width: t, height: r }); - }); - })(A), - i.paper.defs.appendChild(A), - x(l, { fill: "url(#" + A.id + ")" }), - (i.pattern = A), - i.pattern && m(i); - break; - } - var P = t.getRGB(g); - if (P.error) { - if ((i.type == "circle" || i.type == "ellipse" || r(g).charAt() != "r") && v(i, g)) { - if ("opacity" in u || "fill-opacity" in u) { - var z = t._g.doc.getElementById(l.getAttribute("fill").replace(/^url\(#|\)$/g, c)); - if (z) { - var F = z.getElementsByTagName("stop"); - x(F[F.length - 1], { - "stop-opacity": - ("opacity" in u ? u.opacity : 1) * ("fill-opacity" in u ? u["fill-opacity"] : 1), - }); - } - } - (u.gradient = g), (u.fill = "none"); - break; - } - } else - delete a.gradient, - delete u.gradient, - !t.is(u.opacity, "undefined") && - t.is(a.opacity, "undefined") && - x(l, { opacity: u.opacity }), - !t.is(u["fill-opacity"], "undefined") && - t.is(a["fill-opacity"], "undefined") && - x(l, { "fill-opacity": u["fill-opacity"] }); - P[e]("opacity") && - x(l, { - "fill-opacity": P.opacity > 1 ? P.opacity / 100 : P.opacity, - }); - case "stroke": - (P = t.getRGB(g)), - l.setAttribute(d, P.hex), - d == "stroke" && - P[e]("opacity") && - x(l, { - "stroke-opacity": P.opacity > 1 ? P.opacity / 100 : P.opacity, - }), - d == "stroke" && - i._.arrows && - ("startString" in i._.arrows && b(i, i._.arrows.startString), - "endString" in i._.arrows && b(i, i._.arrows.endString, 1)); - break; - case "gradient": - (i.type == "circle" || i.type == "ellipse" || r(g).charAt() != "r") && v(i, g); - break; - case "opacity": - u.gradient && !u[e]("stroke-opacity") && x(l, { "stroke-opacity": g > 1 ? g / 100 : g }); - case "fill-opacity": - if (u.gradient) { - (z = t._g.doc.getElementById(l.getAttribute("fill").replace(/^url\(#|\)$/g, c))) && - ((F = z.getElementsByTagName("stop")), x(F[F.length - 1], { "stop-opacity": g })); - break; - } - default: - d == "font-size" && (g = n(g, 10) + "px"); - var R = d.replace(/(\-.)/g, function (t) { - return t.substring(1).toUpperCase(); - }); - (l.style[R] = g), (i._.dirty = 1), l.setAttribute(d, g); - } - } - B(i, a), (l.style.visibility = f); - }, - B = function (i, a) { - if ( - i.type == "text" && - (a[e]("text") || a[e]("font") || a[e]("font-size") || a[e]("x") || a[e]("y")) - ) { - var s = i.attrs, - o = i.node, - l = o.firstChild - ? n(t._g.doc.defaultView.getComputedStyle(o.firstChild, c).getPropertyValue("font-size"), 10) - : 10; - if (a[e]("text")) { - for (s.text = a.text; o.firstChild; ) o.removeChild(o.firstChild); - for (var h, u = r(a.text).split("\n"), f = [], p = 0, d = u.length; p < d; p++) - (h = x("tspan")), - p && x(h, { dy: 1.2 * l, x: s.x }), - h.appendChild(t._g.doc.createTextNode(u[p])), - o.appendChild(h), - (f[p] = h); - } else - for (p = 0, d = (f = o.getElementsByTagName("tspan")).length; p < d; p++) - p ? x(f[p], { dy: 1.2 * l, x: s.x }) : x(f[0], { dy: 0 }); - x(o, { x: s.x, y: s.y }), (i._.dirty = 1); - var g = i._getBBox(), - v = s.y - (g.y + g.height / 2); - v && t.is(v, "finite") && x(f[0], { dy: v }); - } - }, - C = function (t) { - return t.parentNode && t.parentNode.tagName.toLowerCase() === "a" ? t.parentNode : t; - }, - S = function (e, r) { - (this[0] = this.node = e), - (e.raphael = !0), - (this.id = ("0000" + ((Math.random() * Math.pow(36, 5)) << 0).toString(36)).slice(-5)), - (e.raphaelid = this.id), - (this.matrix = t.matrix()), - (this.realPath = null), - (this.paper = r), - (this.attrs = this.attrs || {}), - (this._ = { - transform: [], - sx: 1, - sy: 1, - deg: 0, - dx: 0, - dy: 0, - dirty: 1, - }), - !r.bottom && (r.bottom = this), - (this.prev = r.top), - r.top && (r.top.next = this), - (r.top = this), - (this.next = null); - }, - A = t.el; - (S.prototype = A), - (A.constructor = S), - (t._engine.path = function (t, e) { - var r = x("path"); - e.canvas && e.canvas.appendChild(r); - var i = new S(r, e); - return (i.type = "path"), k(i, { fill: "none", stroke: "#000", path: t }), i; - }), - (A.rotate = function (t, e, n) { - if (this.removed) return this; - if ( - ((t = r(t).split(h)).length - 1 && ((e = i(t[1])), (n = i(t[2]))), - (t = i(t[0])), - n == null && (e = n), - e == null || n == null) - ) { - var a = this.getBBox(1); - (e = a.x + a.width / 2), (n = a.y + a.height / 2); - } - return this.transform(this._.transform.concat([["r", t, e, n]])), this; - }), - (A.scale = function (t, e, n, a) { - if (this.removed) return this; - if ( - ((t = r(t).split(h)).length - 1 && ((e = i(t[1])), (n = i(t[2])), (a = i(t[3]))), - (t = i(t[0])), - e == null && (e = t), - a == null && (n = a), - n == null || a == null) - ) - var s = this.getBBox(1); - return ( - (n = n == null ? s.x + s.width / 2 : n), - (a = a == null ? s.y + s.height / 2 : a), - this.transform(this._.transform.concat([["s", t, e, n, a]])), - this - ); - }), - (A.translate = function (t, e) { - return this.removed - ? this - : ((t = r(t).split(h)).length - 1 && (e = i(t[1])), - (t = i(t[0]) || 0), - (e = +e || 0), - this.transform(this._.transform.concat([["t", t, e]])), - this); - }), - (A.transform = function (r) { - var i = this._; - if (r == null) return i.transform; - if ( - (t._extractTransform(this, r), - this.clip && x(this.clip, { transform: this.matrix.invert() }), - this.pattern && m(this), - this.node && x(this.node, { transform: this.matrix }), - i.sx != 1 || i.sy != 1) - ) { - var n = this.attrs[e]("stroke-width") ? this.attrs["stroke-width"] : 1; - this.attr({ "stroke-width": n }); - } - return this; - }), - (A.hide = function () { - return this.removed || (this.node.style.display = "none"), this; - }), - (A.show = function () { - return this.removed || (this.node.style.display = ""), this; - }), - (A.remove = function () { - var e = C(this.node); - if (!this.removed && e.parentNode) { - var r = this.paper; - for (var i in (r.__set__ && r.__set__.exclude(this), - u.unbind("raphael.*.*." + this.id), - this.gradient && r.defs.removeChild(this.gradient), - t._tear(this, r), - e.parentNode.removeChild(e), - this.removeData(), - this)) - this[i] = typeof this[i] == "function" ? t._removedFactory(i) : null; - this.removed = !0; - } - }), - (A._getBBox = function () { - if (this.node.style.display == "none") { - this.show(); - var t = !0; - } - var e, - r = !1; - this.paper.canvas.parentElement - ? (e = this.paper.canvas.parentElement.style) - : this.paper.canvas.parentNode && (e = this.paper.canvas.parentNode.style), - e && e.display == "none" && ((r = !0), (e.display = "")); - var i = {}; - try { - i = this.node.getBBox(); - } catch (t) { - i = { - x: this.node.clientLeft, - y: this.node.clientTop, - width: this.node.clientWidth, - height: this.node.clientHeight, - }; - } finally { - (i = i || {}), r && (e.display = "none"); - } - return t && this.hide(), i; - }), - (A.attr = function (r, i) { - if (this.removed) return this; - if (r == null) { - var n = {}; - for (var a in this.attrs) this.attrs[e](a) && (n[a] = this.attrs[a]); - return ( - n.gradient && n.fill == "none" && (n.fill = n.gradient) && delete n.gradient, - (n.transform = this._.transform), - n - ); - } - if (i == null && t.is(r, "string")) { - if (r == "fill" && this.attrs.fill == "none" && this.attrs.gradient) return this.attrs.gradient; - if (r == "transform") return this._.transform; - for (var s = r.split(h), o = {}, l = 0, c = s.length; l < c; l++) - (r = s[l]) in this.attrs - ? (o[r] = this.attrs[r]) - : t.is(this.paper.customAttributes[r], "function") - ? (o[r] = this.paper.customAttributes[r].def) - : (o[r] = t._availableAttrs[r]); - return c - 1 ? o : o[s[0]]; - } - if (i == null && t.is(r, "array")) { - for (o = {}, l = 0, c = r.length; l < c; l++) o[r[l]] = this.attr(r[l]); - return o; - } - if (i != null) { - var f = {}; - f[r] = i; - } else r != null && t.is(r, "object") && (f = r); - for (var p in f) u("raphael.attr." + p + "." + this.id, this, f[p]); - for (p in this.paper.customAttributes) - if ( - this.paper.customAttributes[e](p) && - f[e](p) && - t.is(this.paper.customAttributes[p], "function") - ) { - var d = this.paper.customAttributes[p].apply(this, [].concat(f[p])); - for (var g in ((this.attrs[p] = f[p]), d)) d[e](g) && (f[g] = d[g]); - } - return k(this, f), this; - }), - (A.toFront = function () { - if (this.removed) return this; - var e = C(this.node); - e.parentNode.appendChild(e); - var r = this.paper; - return r.top != this && t._tofront(this, r), this; - }), - (A.toBack = function () { - if (this.removed) return this; - var e = C(this.node), - r = e.parentNode; - r.insertBefore(e, r.firstChild), t._toback(this, this.paper); - this.paper; - return this; - }), - (A.insertAfter = function (e) { - if (this.removed || !e) return this; - var r = C(this.node), - i = C(e.node || e[e.length - 1].node); - return ( - i.nextSibling ? i.parentNode.insertBefore(r, i.nextSibling) : i.parentNode.appendChild(r), - t._insertafter(this, e, this.paper), - this - ); - }), - (A.insertBefore = function (e) { - if (this.removed || !e) return this; - var r = C(this.node), - i = C(e.node || e[0].node); - return i.parentNode.insertBefore(r, i), t._insertbefore(this, e, this.paper), this; - }), - (A.blur = function (e) { - var r = this; - if (+e != 0) { - var i = x("filter"), - n = x("feGaussianBlur"); - (r.attrs.blur = e), - (i.id = t.createUUID()), - x(n, { stdDeviation: +e || 1.5 }), - i.appendChild(n), - r.paper.defs.appendChild(i), - (r._blur = i), - x(r.node, { filter: "url(#" + i.id + ")" }); - } else - r._blur && (r._blur.parentNode.removeChild(r._blur), delete r._blur, delete r.attrs.blur), - r.node.removeAttribute("filter"); - return r; - }), - (t._engine.circle = function (t, e, r, i) { - var n = x("circle"); - t.canvas && t.canvas.appendChild(n); - var a = new S(n, t); - return ( - (a.attrs = { - cx: e, - cy: r, - r: i, - fill: "none", - stroke: "#000", - }), - (a.type = "circle"), - x(n, a.attrs), - a - ); - }), - (t._engine.rect = function (t, e, r, i, n, a) { - var s = x("rect"); - t.canvas && t.canvas.appendChild(s); - var o = new S(s, t); - return ( - (o.attrs = { - x: e, - y: r, - width: i, - height: n, - rx: a || 0, - ry: a || 0, - fill: "none", - stroke: "#000", - }), - (o.type = "rect"), - x(s, o.attrs), - o - ); - }), - (t._engine.ellipse = function (t, e, r, i, n) { - var a = x("ellipse"); - t.canvas && t.canvas.appendChild(a); - var s = new S(a, t); - return ( - (s.attrs = { - cx: e, - cy: r, - rx: i, - ry: n, - fill: "none", - stroke: "#000", - }), - (s.type = "ellipse"), - x(a, s.attrs), - s - ); - }), - (t._engine.image = function (t, e, r, i, n, a) { - var s = x("image"); - x(s, { - x: r, - y: i, - width: n, - height: a, - preserveAspectRatio: "none", - }), - s.setAttributeNS(p, "href", e), - t.canvas && t.canvas.appendChild(s); - var o = new S(s, t); - return (o.attrs = { x: r, y: i, width: n, height: a, src: e }), (o.type = "image"), o; - }), - (t._engine.text = function (e, r, i, n) { - var a = x("text"); - e.canvas && e.canvas.appendChild(a); - var s = new S(a, e); - return ( - (s.attrs = { - x: r, - y: i, - "text-anchor": "middle", - text: n, - "font-family": t._availableAttrs["font-family"], - "font-size": t._availableAttrs["font-size"], - stroke: "none", - fill: "#000", - }), - (s.type = "text"), - k(s, s.attrs), - s - ); - }), - (t._engine.setSize = function (t, e) { - return ( - (this.width = t || this.width), - (this.height = e || this.height), - this.canvas.setAttribute("width", this.width), - this.canvas.setAttribute("height", this.height), - this._viewBox && this.setViewBox.apply(this, this._viewBox), - this - ); - }), - (t._engine.create = function () { - var e = t._getContainer.apply(0, arguments), - r = e && e.container, - i = e.x, - n = e.y, - a = e.width, - s = e.height; - if (!r) throw new Error("SVG container not found."); - var o, - l = x("svg"), - h = "overflow:hidden;"; - return ( - (i = i || 0), - (n = n || 0), - (a = a || 512), - x(l, { - height: (s = s || 342), - version: 1.1, - width: a, - xmlns: "http://www.w3.org/2000/svg", - "xmlns:xlink": "http://www.w3.org/1999/xlink", - }), - r == 1 - ? ((l.style.cssText = h + "position:absolute;left:" + i + "px;top:" + n + "px"), - t._g.doc.body.appendChild(l), - (o = 1)) - : ((l.style.cssText = h + "position:relative"), - r.firstChild ? r.insertBefore(l, r.firstChild) : r.appendChild(l)), - ((r = new t._Paper()).width = a), - (r.height = s), - (r.canvas = l), - r.clear(), - (r._left = r._top = 0), - o && (r.renderfix = function () {}), - r.renderfix(), - r - ); - }), - (t._engine.setViewBox = function (t, e, r, i, n) { - u("raphael.setViewBox", this, this._viewBox, [t, e, r, i, n]); - var a, - o, - l = this.getSize(), - h = s(r / l.width, i / l.height), - c = this.top, - p = n ? "xMidYMid meet" : "xMinYMin"; - for ( - t == null - ? (this._vbSize && (h = 1), delete this._vbSize, (a = "0 0 " + this.width + f + this.height)) - : ((this._vbSize = h), (a = t + f + e + f + r + f + i)), - x(this.canvas, { viewBox: a, preserveAspectRatio: p }); - h && c; - - ) - (o = "stroke-width" in c.attrs ? c.attrs["stroke-width"] : 1), - c.attr({ "stroke-width": o }), - (c._.dirty = 1), - (c._.dirtyT = 1), - (c = c.prev); - return (this._viewBox = [t, e, r, i, !!n]), this; - }), - (t.prototype.renderfix = function () { - var t, - e = this.canvas, - r = e.style; - try { - t = e.getScreenCTM() || e.createSVGMatrix(); - } catch (r) { - t = e.createSVGMatrix(); - } - var i = -t.e % 1, - n = -t.f % 1; - (i || n) && - (i && ((this._left = (this._left + i) % 1), (r.left = this._left + "px")), - n && ((this._top = (this._top + n) % 1), (r.top = this._top + "px"))); - }), - (t.prototype.clear = function () { - t.eve("raphael.clear", this); - for (var e = this.canvas; e.firstChild; ) e.removeChild(e.firstChild); - (this.bottom = this.top = null), - (this.desc = x("desc")).appendChild(t._g.doc.createTextNode("Created with Raphaël " + t.version)), - e.appendChild(this.desc), - e.appendChild((this.defs = x("defs"))); - }), - (t.prototype.remove = function () { - for (var e in (u("raphael.remove", this), - this.canvas.parentNode && this.canvas.parentNode.removeChild(this.canvas), - this)) - this[e] = typeof this[e] == "function" ? t._removedFactory(e) : null; - }); - var T = t.st; - for (var M in A) - A[e](M) && - !T[e](M) && - (T[M] = (function (t) { - return function () { - var e = arguments; - return this.forEach(function (r) { - r[t].apply(r, e); - }); - }; - })(M)); - } - }.apply(e, i)) || (t.exports = n); - }, - function (t, e, r) { - var i, n, a, s, o, l, h, u, c, f, p, d, g, x; - (s = "hasOwnProperty"), - (o = /[\.\/]/), - (l = /\s*,\s*/), - (h = function (t, e) { - return t - e; - }), - (u = { n: {} }), - (c = function () { - for (var t = 0, e = this.length; t < e; t++) if (void 0 !== this[t]) return this[t]; - }), - (f = function () { - for (var t = this.length; --t; ) if (void 0 !== this[t]) return this[t]; - }), - (p = Object.prototype.toString), - (d = String), - (g = - Array.isArray || - function (t) { - return t instanceof Array || p.call(t) == "[object Array]"; - }), - ((x = function (t, e) { - var r, - i = a, - s = Array.prototype.slice.call(arguments, 2), - o = x.listeners(t), - l = 0, - u = [], - p = {}, - d = [], - g = n; - (d.firstDefined = c), (d.lastDefined = f), (n = t), (a = 0); - for (var v = 0, y = o.length; v < y; v++) - "zIndex" in o[v] && (u.push(o[v].zIndex), o[v].zIndex < 0 && (p[o[v].zIndex] = o[v])); - for (u.sort(h); u[l] < 0; ) if (((r = p[u[l++]]), d.push(r.apply(e, s)), a)) return (a = i), d; - for (v = 0; v < y; v++) - if ("zIndex" in (r = o[v])) - if (r.zIndex == u[l]) { - if ((d.push(r.apply(e, s)), a)) break; - do { - if (((r = p[u[++l]]) && d.push(r.apply(e, s)), a)) break; - } while (r); - } else p[r.zIndex] = r; - else if ((d.push(r.apply(e, s)), a)) break; - return (a = i), (n = g), d; - })._events = u), - (x.listeners = function (t) { - var e, - r, - i, - n, - a, - s, - l, - h, - c = g(t) ? t : t.split(o), - f = u, - p = [f], - d = []; - for (n = 0, a = c.length; n < a; n++) { - for (h = [], s = 0, l = p.length; s < l; s++) - for (r = [(f = p[s].n)[c[n]], f["*"]], i = 2; i--; ) (e = r[i]) && (h.push(e), (d = d.concat(e.f || []))); - p = h; - } - return d; - }), - (x.separator = function (t) { - t ? ((t = "[" + (t = d(t).replace(/(?=[\.\^\]\[\-])/g, "\\")) + "]"), (o = new RegExp(t))) : (o = /[\.\/]/); - }), - (x.on = function (t, e) { - if (typeof e != "function") return function () {}; - for (var r = g(t) ? (g(t[0]) ? t : [t]) : d(t).split(l), i = 0, n = r.length; i < n; i++) - !(function (t) { - for (var r, i = g(t) ? t : d(t).split(o), n = u, a = 0, s = i.length; a < s; a++) - n = ((n = n.n).hasOwnProperty(i[a]) && n[i[a]]) || (n[i[a]] = { n: {} }); - for (n.f = n.f || [], a = 0, s = n.f.length; a < s; a++) - if (n.f[a] == e) { - r = !0; - break; - } - !r && n.f.push(e); - })(r[i]); - return function (t) { - +t == +t && (e.zIndex = +t); - }; - }), - (x.f = function (t) { - var e = [].slice.call(arguments, 1); - return function () { - x.apply(null, [t, null].concat(e).concat([].slice.call(arguments, 0))); - }; - }), - (x.stop = function () { - a = 1; - }), - (x.nt = function (t) { - var e = g(n) ? n.join(".") : n; - return t ? new RegExp("(?:\\.|\\/|^)" + t + "(?:\\.|\\/|$)").test(e) : e; - }), - (x.nts = function () { - return g(n) ? n : n.split(o); - }), - (x.off = x.unbind = - function (t, e) { - if (t) { - var r = g(t) ? (g(t[0]) ? t : [t]) : d(t).split(l); - if (r.length > 1) for (var i = 0, n = r.length; i < n; i++) x.off(r[i], e); - else { - r = g(t) ? t : d(t).split(o); - var a, - h, - c, - f, - p, - v = [u]; - for (i = 0, n = r.length; i < n; i++) - for (f = 0; f < v.length; f += c.length - 2) { - if (((c = [f, 1]), (a = v[f].n), r[i] != "*")) a[r[i]] && c.push(a[r[i]]); - else for (h in a) a[s](h) && c.push(a[h]); - v.splice.apply(v, c); - } - for (i = 0, n = v.length; i < n; i++) - for (a = v[i]; a.n; ) { - if (e) { - if (a.f) { - for (f = 0, p = a.f.length; f < p; f++) - if (a.f[f] == e) { - a.f.splice(f, 1); - break; - } - !a.f.length && delete a.f; - } - for (h in a.n) - if (a.n[s](h) && a.n[h].f) { - var y = a.n[h].f; - for (f = 0, p = y.length; f < p; f++) - if (y[f] == e) { - y.splice(f, 1); - break; - } - !y.length && delete a.n[h].f; - } - } else for (h in (delete a.f, a.n)) a.n[s](h) && a.n[h].f && delete a.n[h].f; - a = a.n; - } - } - } else x._events = u = { n: {} }; - }), - (x.once = function (t, e) { - var r = function () { - return x.off(t, r), e.apply(this, arguments); - }; - return x.on(t, r); - }), - (x.version = "0.5.0"), - (x.toString = function () { - return "You are running Eve 0.5.0"; - }), - void 0 !== t && t.exports - ? (t.exports = x) - : void 0 === - (i = function () { - return x; - }.apply(e, [])) || (t.exports = i); - }, - function (t, e, r) { - var i, n; - (i = [r(0), r(2), r(1)]), - void 0 === - (n = function (t) { - return t; - }.apply(e, i)) || (t.exports = n); - }, - ]); -}); diff --git a/src/ThirdParty/treant-js.d.ts b/src/ThirdParty/treant-js.d.ts deleted file mode 100644 index 1a75af193..000000000 --- a/src/ThirdParty/treant-js.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare module "treant-js"; diff --git a/src/index.html b/src/index.html index e60a40fc6..21de681d9 100644 --- a/src/index.html +++ b/src/index.html @@ -53,5 +53,4 @@
- diff --git a/src/ui/React/MuiTextField.tsx b/src/ui/React/MuiTextField.tsx deleted file mode 100644 index 7974405f3..000000000 --- a/src/ui/React/MuiTextField.tsx +++ /dev/null @@ -1,81 +0,0 @@ -/** - * Wrapper around material-ui's TextField component that styles it with - * Bitburner's UI theme - */ - -import React from "react"; -import { TextField, TextFieldProps } from "@mui/material"; - -import makeStyles from "@mui/styles/makeStyles"; - -const backgroundColorStyles = { - backgroundColor: "rgba(57, 54, 54, 0.9)", - "&:hover": { - backgroundColor: "rgba(70, 70, 70, 0.9)", - }, -}; - -const formControlStyles = { - border: "1px solid #e2e2e1", - overflow: "hidden", - borderRadius: 4, - color: "white", - ...backgroundColorStyles, -}; - -const useStyles = makeStyles({ - root: { - ...formControlStyles, - }, -}); - -const useInputStyles = makeStyles({ - root: { - ...backgroundColorStyles, - color: "white", - }, - focused: { - backgroundColor: "rgba(70, 70, 70, 0.9)", - }, - disabled: { - color: "white", - }, -}); - -const useLabelStyles = makeStyles({ - root: { - color: "white", - }, - focused: { - color: "white !important", // Need important to override styles from FormLabel - }, - disabled: { - color: "white !important", // Need important to override styles from FormLabel - }, -}); - -export const MuiTextField: React.FC = (props: TextFieldProps) => { - return ( - - ); -}; diff --git a/src/ui/React/Select.tsx b/src/ui/React/Select.tsx deleted file mode 100644 index de7b891f2..000000000 --- a/src/ui/React/Select.tsx +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Wrapper around material-ui's Button component that styles it with - * Bitburner's UI theme - */ - -import React from "react"; -import { Select as MuiSelect, SelectProps } from "@mui/material"; -import { Theme } from "@mui/material/styles"; -import makeStyles from "@mui/styles/makeStyles"; -import createStyles from "@mui/styles/createStyles"; - -const useStyles = makeStyles((theme: Theme) => - createStyles({ - root: { - backgroundColor: theme.palette.background.paper, - color: theme.palette.primary.dark, - margin: "5px", - padding: "3px 5px", - "&:after": { - backgroundColor: theme.palette.background.paper, - }, - - borderRadius: 0, - }, - }), -); - -export const Select: React.FC = (props: SelectProps) => { - return ( - - ); -}; diff --git a/src/ui/React/createPopup.tsx b/src/ui/React/createPopup.tsx deleted file mode 100644 index 2ebf7e66c..000000000 --- a/src/ui/React/createPopup.tsx +++ /dev/null @@ -1,95 +0,0 @@ -/** - * Create a pop-up dialog box using React. - * - * Calling this function with the same ID and React Root Component will trigger a re-render - * - * @param id The (hopefully) unique identifier for the popup container - * @param rootComponent Root React Component for the content (NOT the popup containers themselves) - */ -import * as React from "react"; -import * as ReactDOM from "react-dom"; - -import { Popup } from "./Popup"; - -import { createElement } from "../uiHelpers/createElement"; -import { removeElementById } from "../uiHelpers/removeElementById"; - -let gameContainer: HTMLElement; - -(function () { - function getGameContainer(): void { - const container = document.getElementById("root"); - if (container == null) { - throw new Error(`Failed to find game container DOM element`); - } - - gameContainer = container; - document.removeEventListener("DOMContentLoaded", getGameContainer); - } - - document.addEventListener("DOMContentLoaded", getGameContainer); -})(); - -// This variable is used to avoid setting the semi-transparent background -// several times on top of one another. Sometimes there's several popup at once. -let deepestPopupId = ""; - -// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types -export function createPopup( - id: string, - rootComponent: (props: T) => React.ReactElement, - props: T, - onClose?: () => void, -): HTMLElement | null { - let container = document.getElementById(id); - if (container == null) { - function onClick(this: HTMLElement, event: MouseEvent): void { - if (!event.srcElement) return; - if (!(event.srcElement instanceof HTMLElement)) return; - const clickedId = (event.srcElement as HTMLElement).id; - if (clickedId !== id) return; - removePopup(id); - if (onClose) onClose(); - } - const backgroundColor = deepestPopupId === "" ? "rgba(0,0,0,0.5)" : "rgba(0,0,0,0)"; - container = createElement("div", { - class: "popup-box-container", - display: "flex", - id: id, - backgroundColor: backgroundColor, - mouseDown: onClick, - }); - - gameContainer.appendChild(container); - } - - if (deepestPopupId === "") deepestPopupId = id; - ReactDOM.render( - { - removePopup(id); - if (onClose) onClose(); - }} - />, - container, - ); - - return container; -} - -/** - * Closes a popup created with the createPopup() function above - */ -export function removePopup(id: string): void { - const content = document.getElementById(`${id}`); - if (content == null) return; - - ReactDOM.unmountComponentAtNode(content); - - removeElementById(id); - removeElementById(`${id}-close`); - if (id === deepestPopupId) deepestPopupId = ""; -} diff --git a/src/ui/createStatusText.ts b/src/ui/createStatusText.ts deleted file mode 100644 index 5249a1d2a..000000000 --- a/src/ui/createStatusText.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { setTimeoutRef } from "../utils/SetTimeoutRef"; -import { getElementById } from "./uiHelpers/getElementById"; -import { Action } from "../types"; - -const threeSeconds = 3000; -let x: number | undefined; - -/** - * Displays a status message to the player for approximately 3 seconds. - * @param text The status text to display - */ -export function createStatusText(text: string): void { - const statusElement: HTMLElement = getElementById("status-text"); - const handler: Action = () => { - statusElement.innerText = ""; - statusElement.style.display = "none"; - statusElement.classList.remove("status-text"); - }; - - if (x !== undefined) { - clearTimeout(x); - // Likely not needed due to clearTimeout, but just in case... - x = undefined; - // reset the element's animation - statusElement.style.animation = "none"; - setTimeout(function () { - statusElement.style.animation = ""; - }, 10); - } - - statusElement.style.display = "block"; - statusElement.classList.add("status-text"); - statusElement.innerText = text; - - x = setTimeoutRef(handler, threeSeconds); -} diff --git a/src/ui/navigationTracking.ts b/src/ui/navigationTracking.ts deleted file mode 100644 index 274d60af2..000000000 --- a/src/ui/navigationTracking.ts +++ /dev/null @@ -1,161 +0,0 @@ -/** - * The full-screen page the player is currently be on. - * These pages are mutually exclusive. - */ -export enum Page { - /** - * (Default) The terminal is where the player issues all commands, executes scripts, etc. - */ - Terminal = "Terminal", - - /** - * Displays most of the statistics about the player. - */ - CharacterInfo = "CharacterInfo", - - /** - * The console for editing Netscript files. - */ - ScriptEditor = "ScriptEditor", - - /** - * Monitor the scripts currently executing across the servers. - */ - ActiveScripts = "ActiveScripts", - - /** - * View, purchase, and upgrade Hacknet nodes. - */ - HacknetNodes = "HacknetNodes", - - /** - * The list of programs the player could potentially build. - */ - CreateProgram = "CreateProgram", - - /** - * The list of all factions, and invites, available to the player. - */ - Factions = "Factions", - - /** - * Information about a specific faction. - */ - Faction = "Faction", - - /** - * The list of installed, and yet-to-be installed, augmentations the player has purchased. - */ - Augmentations = "Augmentations", - - /** - * List of milestones that players should follow. - */ - Milestones = "Milestones", - - /** - * A collection of in-game material to learn about the game. - */ - Tutorial = "Tutorial", - - /** - * A collection of items to manipulate the state of the game. Useful for development. - */ - DevMenu = "Dev Menu", - - /** - * Visiting a location in the world - */ - Location = "Location", - - /** - * A blocking page to show the player they are currently doing some action (building a program, working, etc.). - */ - workInProgress = "WorkInProgress", - - /** - * A special screen to show the player they've reached a certain point in the game. - */ - RedPill = "RedPill", - - /** - * A special screen to show the player they've reached a certain point in the game. - */ - CinematicText = "CinematicText", - - /** - * Mini-game to infiltrate a company, gaining experience from successful progress. - */ - Infiltration = "Infiltration", - - /** - * View the in-game stock market. - */ - StockMarket = "StockMarket", - - /** - * Manage gang actions and members. - */ - Gang = "Gang", - - /** - * Perform missions for a Faction. - */ - Mission = "Mission", - - /** - * Manage a corporation. - */ - Corporation = "Corporation", - - /** - * Manage special Bladeburner activities. - */ - Bladeburner = "Bladeburner", - - /** - * Manage your Sleeves - */ - Sleeves = "Sleeves", - - /** - * Purchase Resleeves - */ - Resleeves = "Re-sleeving", - - /** - * Game options - */ - GameOptions = "GameOptions", -} - -/** - * This class keeps track of player navigation/routing within the game. - */ -class Routing { - /** - * Tracking the what page the user is currently on. - */ - private currentPage: Page | null = null; - - /** - * Determines if the player is currently on the specified page. - * @param page The page to compare against the current state. - */ - isOn(page: Page): boolean { - return this.currentPage === page; - } - - /** - * Routes the player to the appropriate page. - * @param page The page to navigate to. - */ - navigateTo(page: Page): void { - this.currentPage = page; - } -} - -/** - * The routing instance for tracking page navigation. - */ -export const routing: Routing = new Routing(); diff --git a/src/ui/uiHelpers/clearEventListeners.ts b/src/ui/uiHelpers/clearEventListeners.ts deleted file mode 100644 index dab025cb1..000000000 --- a/src/ui/uiHelpers/clearEventListeners.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { getElementById } from "./getElementById"; - -/** - * Given an element by its ID, removes all event listeners from that element by cloning and - * replacing. Then returns the new cloned element. - * @param elemId The HTML ID to retrieve the element by. - */ -export function clearEventListeners(elemId: string | HTMLElement): HTMLElement | null { - try { - let elem: HTMLElement; - if (typeof elemId === "string") { - elem = getElementById(elemId); - } else { - elem = elemId; - } - - const newElem: HTMLElement = elem.cloneNode(true) as HTMLElement; - if (elem.parentNode !== null) { - elem.parentNode.replaceChild(newElem, elem); - } - - return newElem; - } catch (e) { - // tslint:disable-next-line:no-console - console.error(e); - - return null; - } -} diff --git a/src/ui/uiHelpers/createElement.ts b/src/ui/uiHelpers/createElement.ts deleted file mode 100644 index f890d081e..000000000 --- a/src/ui/uiHelpers/createElement.ts +++ /dev/null @@ -1,308 +0,0 @@ -/** - * Options specific to creating an anchor ("") element. - */ -interface ICreateElementAnchorOptions { - href?: string; - target?: string; - text?: string; -} - -/** - * Options specific to creating an input ("") element. - */ -interface ICreateElementInputOptions { - checked?: boolean; - max?: string; - maxLength?: number; - min?: string; - name?: string; - pattern?: string; - placeholder?: string; - step?: string; - type?: string; - value?: string; -} - -/** - * Options specific to creating a label ("