{"version":3,"file":"svg.js","sources":["../src/utils/methods.js","../src/utils/utils.js","../src/modules/core/namespaces.js","../src/utils/window.js","../src/types/Base.js","../src/utils/adopter.js","../src/modules/optional/arrange.js","../src/modules/core/regex.js","../src/modules/optional/class.js","../src/modules/optional/css.js","../src/modules/optional/data.js","../src/modules/optional/memory.js","../src/types/Color.js","../src/types/Point.js","../src/types/Matrix.js","../src/modules/core/parser.js","../src/types/Box.js","../src/types/List.js","../src/modules/core/selector.js","../src/modules/core/event.js","../src/types/EventTarget.js","../src/modules/core/defaults.js","../src/types/SVGArray.js","../src/types/SVGNumber.js","../src/modules/core/attr.js","../src/elements/Dom.js","../src/elements/Element.js","../src/modules/optional/sugar.js","../src/modules/optional/transform.js","../src/elements/Container.js","../src/elements/Defs.js","../src/elements/Shape.js","../src/modules/core/circled.js","../src/elements/Ellipse.js","../src/elements/Fragment.js","../src/modules/core/gradiented.js","../src/elements/Gradient.js","../src/elements/Pattern.js","../src/elements/Image.js","../src/types/PointArray.js","../src/modules/core/pointed.js","../src/elements/Line.js","../src/elements/Marker.js","../src/animation/Controller.js","../src/utils/pathParser.js","../src/types/PathArray.js","../src/animation/Morphable.js","../src/elements/Path.js","../src/modules/core/poly.js","../src/elements/Polygon.js","../src/elements/Polyline.js","../src/elements/Rect.js","../src/animation/Queue.js","../src/animation/Animator.js","../src/animation/Timeline.js","../src/animation/Runner.js","../src/elements/Svg.js","../src/elements/Symbol.js","../src/modules/core/textable.js","../src/elements/Text.js","../src/elements/Tspan.js","../src/elements/Circle.js","../src/elements/ClipPath.js","../src/elements/ForeignObject.js","../src/modules/core/containerGeometry.js","../src/elements/G.js","../src/elements/A.js","../src/elements/Mask.js","../src/elements/Stop.js","../src/elements/Style.js","../src/elements/TextPath.js","../src/elements/Use.js","../src/main.js","../src/svg.js"],"sourcesContent":["const methods = {}\r\nconst names = []\r\n\r\nexport function registerMethods (name, m) {\r\n if (Array.isArray(name)) {\r\n for (const _name of name) {\r\n registerMethods(_name, m)\r\n }\r\n return\r\n }\r\n\r\n if (typeof name === 'object') {\r\n for (const _name in name) {\r\n registerMethods(_name, name[_name])\r\n }\r\n return\r\n }\r\n\r\n addMethodNames(Object.getOwnPropertyNames(m))\r\n methods[name] = Object.assign(methods[name] || {}, m)\r\n}\r\n\r\nexport function getMethodsFor (name) {\r\n return methods[name] || {}\r\n}\r\n\r\nexport function getMethodNames () {\r\n return [ ...new Set(names) ]\r\n}\r\n\r\nexport function addMethodNames (_names) {\r\n names.push(..._names)\r\n}\r\n","// Map function\r\nexport function map (array, block) {\r\n let i\r\n const il = array.length\r\n const result = []\r\n\r\n for (i = 0; i < il; i++) {\r\n result.push(block(array[i]))\r\n }\r\n\r\n return result\r\n}\r\n\r\n// Filter function\r\nexport function filter (array, block) {\r\n let i\r\n const il = array.length\r\n const result = []\r\n\r\n for (i = 0; i < il; i++) {\r\n if (block(array[i])) {\r\n result.push(array[i])\r\n }\r\n }\r\n\r\n return result\r\n}\r\n\r\n// Degrees to radians\r\nexport function radians (d) {\r\n return d % 360 * Math.PI / 180\r\n}\r\n\r\n// Radians to degrees\r\nexport function degrees (r) {\r\n return r * 180 / Math.PI % 360\r\n}\r\n\r\n// Convert dash-separated-string to camelCase\r\nexport function camelCase (s) {\r\n return s.toLowerCase().replace(/-(.)/g, function (m, g) {\r\n return g.toUpperCase()\r\n })\r\n}\r\n\r\n// Convert camel cased string to dash separated\r\nexport function unCamelCase (s) {\r\n return s.replace(/([A-Z])/g, function (m, g) {\r\n return '-' + g.toLowerCase()\r\n })\r\n}\r\n\r\n// Capitalize first letter of a string\r\nexport function capitalize (s) {\r\n return s.charAt(0).toUpperCase() + s.slice(1)\r\n}\r\n\r\n// Calculate proportional width and height values when necessary\r\nexport function proportionalSize (element, width, height, box) {\r\n if (width == null || height == null) {\r\n box = box || element.bbox()\r\n\r\n if (width == null) {\r\n width = box.width / box.height * height\r\n } else if (height == null) {\r\n height = box.height / box.width * width\r\n }\r\n }\r\n\r\n return {\r\n width: width,\r\n height: height\r\n }\r\n}\r\n\r\n/**\r\n * This function adds support for string origins.\r\n * It searches for an origin in o.origin o.ox and o.originX.\r\n * This way, origin: {x: 'center', y: 50} can be passed as well as ox: 'center', oy: 50\r\n**/\r\nexport function getOrigin (o, element) {\r\n const origin = o.origin\r\n // First check if origin is in ox or originX\r\n let ox = o.ox != null\n ? o.ox\r\n : o.originX != null\n ? o.originX\r\n : 'center'\r\n let oy = o.oy != null\n ? o.oy\r\n : o.originY != null\n ? o.originY\r\n : 'center'\r\n\r\n // Then check if origin was used and overwrite in that case\r\n if (origin != null) {\r\n [ ox, oy ] = Array.isArray(origin)\n ? origin\r\n : typeof origin === 'object'\n ? [ origin.x, origin.y ]\r\n : [ origin, origin ]\r\n }\r\n\r\n // Make sure to only call bbox when actually needed\r\n const condX = typeof ox === 'string'\r\n const condY = typeof oy === 'string'\r\n if (condX || condY) {\r\n const { height, width, x, y } = element.bbox()\r\n\r\n // And only overwrite if string was passed for this specific axis\r\n if (condX) {\r\n ox = ox.includes('left')\n ? x\r\n : ox.includes('right')\n ? x + width\r\n : x + width / 2\r\n }\r\n\r\n if (condY) {\r\n oy = oy.includes('top')\n ? y\r\n : oy.includes('bottom')\n ? y + height\r\n : y + height / 2\r\n }\r\n }\r\n\r\n // Return the origin as it is if it wasn't a string\r\n return [ ox, oy ]\r\n}\r\n","// Default namespaces\nexport const svg = 'http://www.w3.org/2000/svg'\nexport const html = 'http://www.w3.org/1999/xhtml'\nexport const xmlns = 'http://www.w3.org/2000/xmlns/'\nexport const xlink = 'http://www.w3.org/1999/xlink'\nexport const svgjs = 'http://svgjs.dev/svgjs'\n","export const globals = {\r\n window: typeof window === 'undefined' ? null : window,\r\n document: typeof document === 'undefined' ? null : document\r\n}\r\n\r\nexport function registerWindow (win = null, doc = null) {\r\n globals.window = win\r\n globals.document = doc\r\n}\r\n\r\nconst save = {}\r\n\r\nexport function saveWindow () {\r\n save.window = globals.window\r\n save.document = globals.document\r\n}\r\n\r\nexport function restoreWindow () {\r\n globals.window = save.window\r\n globals.document = save.document\r\n}\r\n\r\nexport function withWindow (win, fn) {\r\n saveWindow()\r\n registerWindow(win, win.document)\r\n fn(win, win.document)\r\n restoreWindow()\r\n}\r\n\r\nexport function getWindow () {\r\n return globals.window\r\n}\r\n","export default class Base {\r\n // constructor (node/*, {extensions = []} */) {\r\n // // this.tags = []\r\n // //\r\n // // for (let extension of extensions) {\r\n // // extension.setup.call(this, node)\r\n // // this.tags.push(extension.name)\r\n // // }\r\n // }\r\n}\r\n","import { addMethodNames } from './methods.js'\r\nimport { capitalize } from './utils.js'\r\nimport { svg } from '../modules/core/namespaces.js'\r\nimport { globals } from '../utils/window.js'\r\nimport Base from '../types/Base.js'\r\n\r\nconst elements = {}\r\nexport const root = '___SYMBOL___ROOT___'\r\n\r\n// Method for element creation\r\nexport function create (name, ns = svg) {\r\n // create element\r\n return globals.document.createElementNS(ns, name)\r\n}\r\n\r\nexport function makeInstance (element, isHTML = false) {\r\n if (element instanceof Base) return element\r\n\r\n if (typeof element === 'object') {\r\n return adopter(element)\r\n }\r\n\r\n if (element == null) {\r\n return new elements[root]()\r\n }\r\n\r\n if (typeof element === 'string' && element.charAt(0) !== '<') {\r\n return adopter(globals.document.querySelector(element))\r\n }\r\n\r\n // Make sure, that HTML elements are created with the correct namespace\r\n const wrapper = isHTML ? globals.document.createElement('div') : create('svg')\r\n wrapper.innerHTML = element\r\n\r\n // We can use firstChild here because we know,\r\n // that the first char is < and thus an element\r\n element = adopter(wrapper.firstChild)\r\n\r\n // make sure, that element doesnt have its wrapper attached\r\n wrapper.removeChild(wrapper.firstChild)\r\n return element\r\n}\r\n\r\nexport function nodeOrNew (name, node) {\r\n return node instanceof globals.window.Node ? node : create(name)\r\n}\r\n\r\n// Adopt existing svg elements\r\nexport function adopt (node) {\r\n // check for presence of node\r\n if (!node) return null\r\n\r\n // make sure a node isn't already adopted\r\n if (node.instance instanceof Base) return node.instance\r\n\r\n if (node.nodeName === '#document-fragment') {\r\n return new elements.Fragment(node)\r\n }\r\n\r\n // initialize variables\r\n let className = capitalize(node.nodeName || 'Dom')\r\n\r\n // Make sure that gradients are adopted correctly\r\n if (className === 'LinearGradient' || className === 'RadialGradient') {\r\n className = 'Gradient'\r\n\r\n // Fallback to Dom if element is not known\r\n } else if (!elements[className]) {\r\n className = 'Dom'\r\n }\r\n\r\n return new elements[className](node)\r\n}\r\n\r\nlet adopter = adopt\r\n\r\nexport function mockAdopt (mock = adopt) {\r\n adopter = mock\r\n}\r\n\r\nexport function register (element, name = element.name, asRoot = false) {\r\n elements[name] = element\r\n if (asRoot) elements[root] = element\r\n\r\n addMethodNames(Object.getOwnPropertyNames(element.prototype))\r\n\r\n return element\r\n}\r\n\r\nexport function getClass (name) {\r\n return elements[name]\r\n}\r\n\r\n// Element id sequence\r\nlet did = 1000\r\n\r\n// Get next named element id\r\nexport function eid (name) {\r\n return 'Svgjs' + capitalize(name) + (did++)\r\n}\r\n\r\n// Deep new id assignment\r\nexport function assignNewId (node) {\r\n // do the same for SVG child nodes as well\r\n for (let i = node.children.length - 1; i >= 0; i--) {\r\n assignNewId(node.children[i])\r\n }\r\n\r\n if (node.id) {\r\n node.id = eid(node.nodeName)\r\n return node\r\n }\r\n\r\n return node\r\n}\r\n\r\n// Method for extending objects\r\nexport function extend (modules, methods) {\r\n let key, i\r\n\r\n modules = Array.isArray(modules) ? modules : [ modules ]\r\n\r\n for (i = modules.length - 1; i >= 0; i--) {\r\n for (key in methods) {\r\n modules[i].prototype[key] = methods[key]\r\n }\r\n }\r\n}\r\n\r\nexport function wrapWithAttrCheck (fn) {\r\n return function (...args) {\r\n const o = args[args.length - 1]\r\n\r\n if (o && o.constructor === Object && !(o instanceof Array)) {\r\n return fn.apply(this, args.slice(0, -1)).attr(o)\r\n } else {\r\n return fn.apply(this, args)\r\n }\r\n }\r\n}\r\n","import { makeInstance } from '../../utils/adopter.js'\r\nimport { registerMethods } from '../../utils/methods.js'\r\n\r\n// Get all siblings, including myself\r\nexport function siblings () {\r\n return this.parent().children()\r\n}\r\n\r\n// Get the current position siblings\r\nexport function position () {\r\n return this.parent().index(this)\r\n}\r\n\r\n// Get the next element (will return null if there is none)\r\nexport function next () {\r\n return this.siblings()[this.position() + 1]\r\n}\r\n\r\n// Get the next element (will return null if there is none)\r\nexport function prev () {\r\n return this.siblings()[this.position() - 1]\r\n}\r\n\r\n// Send given element one step forward\r\nexport function forward () {\r\n const i = this.position()\r\n const p = this.parent()\r\n\r\n // move node one step forward\r\n p.add(this.remove(), i + 1)\r\n\r\n return this\r\n}\r\n\r\n// Send given element one step backward\r\nexport function backward () {\r\n const i = this.position()\r\n const p = this.parent()\r\n\r\n p.add(this.remove(), i ? i - 1 : 0)\r\n\r\n return this\r\n}\r\n\r\n// Send given element all the way to the front\r\nexport function front () {\r\n const p = this.parent()\r\n\r\n // Move node forward\r\n p.add(this.remove())\r\n\r\n return this\r\n}\r\n\r\n// Send given element all the way to the back\r\nexport function back () {\r\n const p = this.parent()\r\n\r\n // Move node back\r\n p.add(this.remove(), 0)\r\n\r\n return this\r\n}\r\n\r\n// Inserts a given element before the targeted element\r\nexport function before (element) {\r\n element = makeInstance(element)\r\n element.remove()\r\n\r\n const i = this.position()\r\n\r\n this.parent().add(element, i)\r\n\r\n return this\r\n}\r\n\r\n// Inserts a given element after the targeted element\r\nexport function after (element) {\r\n element = makeInstance(element)\r\n element.remove()\r\n\r\n const i = this.position()\r\n\r\n this.parent().add(element, i + 1)\r\n\r\n return this\r\n}\r\n\r\nexport function insertBefore (element) {\r\n element = makeInstance(element)\r\n element.before(this)\r\n return this\r\n}\r\n\r\nexport function insertAfter (element) {\r\n element = makeInstance(element)\r\n element.after(this)\r\n return this\r\n}\r\n\r\nregisterMethods('Dom', {\r\n siblings,\r\n position,\r\n next,\r\n prev,\r\n forward,\r\n backward,\r\n front,\r\n back,\r\n before,\r\n after,\r\n insertBefore,\r\n insertAfter\r\n})\r\n","// Parse unit value\r\nexport const numberAndUnit = /^([+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?)([a-z%]*)$/i\r\n\r\n// Parse hex value\r\nexport const hex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i\r\n\r\n// Parse rgb value\r\nexport const rgb = /rgb\\((\\d+),(\\d+),(\\d+)\\)/\r\n\r\n// Parse reference id\r\nexport const reference = /(#[a-z_][a-z0-9\\-_]*)/i\r\n\r\n// splits a transformation chain\r\nexport const transforms = /\\)\\s*,?\\s*/\r\n\r\n// Whitespace\r\nexport const whitespace = /\\s/g\r\n\r\n// Test hex value\r\nexport const isHex = /^#[a-f0-9]{3}$|^#[a-f0-9]{6}$/i\r\n\r\n// Test rgb value\r\nexport const isRgb = /^rgb\\(/\r\n\r\n// Test for blank string\r\nexport const isBlank = /^(\\s+)?$/\r\n\r\n// Test for numeric string\r\nexport const isNumber = /^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i\r\n\r\n// Test for image url\r\nexport const isImage = /\\.(jpg|jpeg|png|gif|svg)(\\?[^=]+.*)?/i\r\n\r\n// split at whitespace and comma\r\nexport const delimiter = /[\\s,]+/\r\n\r\n// Test for path letter\r\nexport const isPathLetter = /[MLHVCSQTAZ]/i\r\n","import { delimiter } from '../core/regex.js'\r\nimport { registerMethods } from '../../utils/methods.js'\r\n\r\n// Return array of classes on the node\r\nexport function classes () {\r\n const attr = this.attr('class')\r\n return attr == null ? [] : attr.trim().split(delimiter)\r\n}\r\n\r\n// Return true if class exists on the node, false otherwise\r\nexport function hasClass (name) {\r\n return this.classes().indexOf(name) !== -1\r\n}\r\n\r\n// Add class to the node\r\nexport function addClass (name) {\r\n if (!this.hasClass(name)) {\r\n const array = this.classes()\r\n array.push(name)\r\n this.attr('class', array.join(' '))\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Remove class from the node\r\nexport function removeClass (name) {\r\n if (this.hasClass(name)) {\r\n this.attr('class', this.classes().filter(function (c) {\r\n return c !== name\r\n }).join(' '))\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Toggle the presence of a class on the node\r\nexport function toggleClass (name) {\r\n return this.hasClass(name) ? this.removeClass(name) : this.addClass(name)\r\n}\r\n\r\nregisterMethods('Dom', {\r\n classes, hasClass, addClass, removeClass, toggleClass\r\n})\r\n","import { camelCase } from '../../utils/utils.js'\r\nimport { isBlank } from '../core/regex.js'\r\nimport { registerMethods } from '../../utils/methods.js'\r\n\r\n// Dynamic style generator\r\nexport function css (style, val) {\r\n const ret = {}\r\n if (arguments.length === 0) {\r\n // get full style as object\r\n this.node.style.cssText.split(/\\s*;\\s*/)\r\n .filter(function (el) {\r\n return !!el.length\r\n })\r\n .forEach(function (el) {\r\n const t = el.split(/\\s*:\\s*/)\r\n ret[t[0]] = t[1]\r\n })\r\n return ret\r\n }\r\n\r\n if (arguments.length < 2) {\r\n // get style properties as array\r\n if (Array.isArray(style)) {\r\n for (const name of style) {\r\n const cased = camelCase(name)\r\n ret[cased] = this.node.style[cased]\r\n }\r\n return ret\r\n }\r\n\r\n // get style for property\r\n if (typeof style === 'string') {\r\n return this.node.style[camelCase(style)]\r\n }\r\n\r\n // set styles in object\r\n if (typeof style === 'object') {\r\n for (const name in style) {\r\n // set empty string if null/undefined/'' was given\r\n this.node.style[camelCase(name)]\r\n = (style[name] == null || isBlank.test(style[name])) ? '' : style[name]\r\n }\r\n }\r\n }\r\n\r\n // set style for property\r\n if (arguments.length === 2) {\r\n this.node.style[camelCase(style)]\r\n = (val == null || isBlank.test(val)) ? '' : val\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Show element\r\nexport function show () {\r\n return this.css('display', '')\r\n}\r\n\r\n// Hide element\r\nexport function hide () {\r\n return this.css('display', 'none')\r\n}\r\n\r\n// Is element visible?\r\nexport function visible () {\r\n return this.css('display') !== 'none'\r\n}\r\n\r\nregisterMethods('Dom', {\r\n css, show, hide, visible\r\n})\r\n","import { registerMethods } from '../../utils/methods.js'\r\nimport { filter, map } from '../../utils/utils.js'\r\n\r\n// Store data values on svg nodes\r\nexport function data (a, v, r) {\r\n if (a == null) {\r\n // get an object of attributes\r\n return this.data(map(filter(this.node.attributes, (el) => el.nodeName.indexOf('data-') === 0), (el) => el.nodeName.slice(5)))\r\n } else if (a instanceof Array) {\r\n const data = {}\r\n for (const key of a) {\r\n data[key] = this.data(key)\r\n }\r\n return data\r\n } else if (typeof a === 'object') {\r\n for (v in a) {\r\n this.data(v, a[v])\r\n }\r\n } else if (arguments.length < 2) {\r\n try {\r\n return JSON.parse(this.attr('data-' + a))\r\n } catch (e) {\r\n return this.attr('data-' + a)\r\n }\r\n } else {\r\n this.attr('data-' + a,\r\n v === null\n ? null\r\n : r === true || typeof v === 'string' || typeof v === 'number'\n ? v\r\n : JSON.stringify(v)\r\n )\r\n }\r\n\r\n return this\r\n}\r\n\r\nregisterMethods('Dom', { data })\r\n","import { registerMethods } from '../../utils/methods.js'\r\n\r\n// Remember arbitrary data\r\nexport function remember (k, v) {\r\n // remember every item in an object individually\r\n if (typeof arguments[0] === 'object') {\r\n for (const key in k) {\r\n this.remember(key, k[key])\r\n }\r\n } else if (arguments.length === 1) {\r\n // retrieve memory\r\n return this.memory()[k]\r\n } else {\r\n // store memory\r\n this.memory()[k] = v\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Erase a given memory\r\nexport function forget () {\r\n if (arguments.length === 0) {\r\n this._memory = {}\r\n } else {\r\n for (let i = arguments.length - 1; i >= 0; i--) {\r\n delete this.memory()[arguments[i]]\r\n }\r\n }\r\n return this\r\n}\r\n\r\n// This triggers creation of a new hidden class which is not performant\r\n// However, this function is not rarely used so it will not happen frequently\r\n// Return local memory object\r\nexport function memory () {\r\n return (this._memory = this._memory || {})\r\n}\r\n\r\nregisterMethods('Dom', { remember, forget, memory })\r\n","\r\nimport { hex, isHex, isRgb, rgb, whitespace } from '../modules/core/regex.js'\r\n\r\nfunction sixDigitHex (hex) {\r\n return hex.length === 4\r\n ? [ '#',\r\n hex.substring(1, 2), hex.substring(1, 2),\r\n hex.substring(2, 3), hex.substring(2, 3),\r\n hex.substring(3, 4), hex.substring(3, 4)\r\n ].join('')\r\n : hex\r\n}\r\n\r\nfunction componentHex (component) {\r\n const integer = Math.round(component)\r\n const bounded = Math.max(0, Math.min(255, integer))\r\n const hex = bounded.toString(16)\r\n return hex.length === 1 ? '0' + hex : hex\r\n}\r\n\r\nfunction is (object, space) {\r\n for (let i = space.length; i--;) {\r\n if (object[space[i]] == null) {\r\n return false\r\n }\r\n }\r\n return true\r\n}\r\n\r\nfunction getParameters (a, b) {\r\n const params = is(a, 'rgb')\n ? { _a: a.r, _b: a.g, _c: a.b, _d: 0, space: 'rgb' }\r\n : is(a, 'xyz')\n ? { _a: a.x, _b: a.y, _c: a.z, _d: 0, space: 'xyz' }\r\n : is(a, 'hsl')\n ? { _a: a.h, _b: a.s, _c: a.l, _d: 0, space: 'hsl' }\r\n : is(a, 'lab')\n ? { _a: a.l, _b: a.a, _c: a.b, _d: 0, space: 'lab' }\r\n : is(a, 'lch')\n ? { _a: a.l, _b: a.c, _c: a.h, _d: 0, space: 'lch' }\r\n : is(a, 'cmyk')\n ? { _a: a.c, _b: a.m, _c: a.y, _d: a.k, space: 'cmyk' }\r\n : { _a: 0, _b: 0, _c: 0, space: 'rgb' }\r\n\r\n params.space = b || params.space\r\n return params\r\n}\r\n\r\nfunction cieSpace (space) {\r\n if (space === 'lab' || space === 'xyz' || space === 'lch') {\r\n return true\r\n } else {\r\n return false\r\n }\r\n}\r\n\r\nfunction hueToRgb (p, q, t) {\r\n if (t < 0) t += 1\r\n if (t > 1) t -= 1\r\n if (t < 1 / 6) return p + (q - p) * 6 * t\r\n if (t < 1 / 2) return q\r\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6\r\n return p\r\n}\r\n\r\nexport default class Color {\r\n constructor (...inputs) {\r\n this.init(...inputs)\r\n }\r\n\r\n // Test if given value is a color\n static isColor (color) {\r\n return color && (\r\n color instanceof Color\r\n || this.isRgb(color)\r\n || this.test(color)\r\n )\r\n }\n\n // Test if given value is an rgb object\n static isRgb (color) {\r\n return color && typeof color.r === 'number'\r\n && typeof color.g === 'number'\r\n && typeof color.b === 'number'\r\n }\n\n /*\r\n Generating random colors\r\n */\n static random (mode = 'vibrant', t, u) {\r\n\r\n // Get the math modules\r\n const { random, round, sin, PI: pi } = Math\r\n\r\n // Run the correct generator\r\n if (mode === 'vibrant') {\r\n\r\n const l = (81 - 57) * random() + 57\r\n const c = (83 - 45) * random() + 45\r\n const h = 360 * random()\r\n const color = new Color(l, c, h, 'lch')\r\n return color\r\n\r\n } else if (mode === 'sine') {\r\n\r\n t = t == null ? random() : t\r\n const r = round(80 * sin(2 * pi * t / 0.5 + 0.01) + 150)\r\n const g = round(50 * sin(2 * pi * t / 0.5 + 4.6) + 200)\r\n const b = round(100 * sin(2 * pi * t / 0.5 + 2.3) + 150)\r\n const color = new Color(r, g, b)\r\n return color\r\n\r\n } else if (mode === 'pastel') {\r\n\r\n const l = (94 - 86) * random() + 86\r\n const c = (26 - 9) * random() + 9\r\n const h = 360 * random()\r\n const color = new Color(l, c, h, 'lch')\r\n return color\r\n\r\n } else if (mode === 'dark') {\r\n\r\n const l = 10 + 10 * random()\r\n const c = (125 - 75) * random() + 86\r\n const h = 360 * random()\r\n const color = new Color(l, c, h, 'lch')\r\n return color\r\n\r\n } else if (mode === 'rgb') {\r\n\r\n const r = 255 * random()\r\n const g = 255 * random()\r\n const b = 255 * random()\r\n const color = new Color(r, g, b)\r\n return color\r\n\r\n } else if (mode === 'lab') {\r\n\r\n const l = 100 * random()\r\n const a = 256 * random() - 128\r\n const b = 256 * random() - 128\r\n const color = new Color(l, a, b, 'lab')\r\n return color\r\n\r\n } else if (mode === 'grey') {\r\n\r\n const grey = 255 * random()\r\n const color = new Color(grey, grey, grey)\r\n return color\r\n\r\n } else {\r\n\r\n throw new Error('Unsupported random color mode')\r\n\r\n }\r\n }\n\n // Test if given value is a color string\n static test (color) {\r\n return (typeof color === 'string')\r\n && (isHex.test(color) || isRgb.test(color))\r\n }\n\n cmyk () {\r\n\r\n // Get the rgb values for the current color\r\n const { _a, _b, _c } = this.rgb()\r\n const [ r, g, b ] = [ _a, _b, _c ].map(v => v / 255)\r\n\r\n // Get the cmyk values in an unbounded format\r\n const k = Math.min(1 - r, 1 - g, 1 - b)\r\n\r\n if (k === 1) {\r\n // Catch the black case\r\n return new Color(0, 0, 0, 1, 'cmyk')\r\n }\r\n\r\n const c = (1 - r - k) / (1 - k)\r\n const m = (1 - g - k) / (1 - k)\r\n const y = (1 - b - k) / (1 - k)\r\n\r\n // Construct the new color\r\n const color = new Color(c, m, y, k, 'cmyk')\r\n return color\r\n }\n\n hsl () {\r\n\r\n // Get the rgb values\r\n const { _a, _b, _c } = this.rgb()\r\n const [ r, g, b ] = [ _a, _b, _c ].map(v => v / 255)\r\n\r\n // Find the maximum and minimum values to get the lightness\r\n const max = Math.max(r, g, b)\r\n const min = Math.min(r, g, b)\r\n const l = (max + min) / 2\r\n\r\n // If the r, g, v values are identical then we are grey\r\n const isGrey = max === min\r\n\r\n // Calculate the hue and saturation\r\n const delta = max - min\r\n const s = isGrey\n ? 0\r\n : l > 0.5\n ? delta / (2 - max - min)\r\n : delta / (max + min)\r\n const h = isGrey\n ? 0\r\n : max === r\n ? ((g - b) / delta + (g < b ? 6 : 0)) / 6\r\n : max === g\n ? ((b - r) / delta + 2) / 6\r\n : max === b\n ? ((r - g) / delta + 4) / 6\r\n : 0\r\n\r\n // Construct and return the new color\r\n const color = new Color(360 * h, 100 * s, 100 * l, 'hsl')\r\n return color\r\n }\n\n init (a = 0, b = 0, c = 0, d = 0, space = 'rgb') {\r\n // This catches the case when a falsy value is passed like ''\r\n a = !a ? 0 : a\r\n\r\n // Reset all values in case the init function is rerun with new color space\r\n if (this.space) {\r\n for (const component in this.space) {\r\n delete this[this.space[component]]\r\n }\r\n }\r\n\r\n if (typeof a === 'number') {\r\n // Allow for the case that we don't need d...\r\n space = typeof d === 'string' ? d : space\r\n d = typeof d === 'string' ? 0 : d\r\n\r\n // Assign the values straight to the color\r\n Object.assign(this, { _a: a, _b: b, _c: c, _d: d, space })\r\n // If the user gave us an array, make the color from it\r\n } else if (a instanceof Array) {\r\n this.space = b || (typeof a[3] === 'string' ? a[3] : a[4]) || 'rgb'\r\n Object.assign(this, { _a: a[0], _b: a[1], _c: a[2], _d: a[3] || 0 })\r\n } else if (a instanceof Object) {\r\n // Set the object up and assign its values directly\r\n const values = getParameters(a, b)\r\n Object.assign(this, values)\r\n } else if (typeof a === 'string') {\r\n if (isRgb.test(a)) {\r\n const noWhitespace = a.replace(whitespace, '')\r\n const [ _a, _b, _c ] = rgb.exec(noWhitespace)\r\n .slice(1, 4).map(v => parseInt(v))\r\n Object.assign(this, { _a, _b, _c, _d: 0, space: 'rgb' })\r\n } else if (isHex.test(a)) {\r\n const hexParse = v => parseInt(v, 16)\r\n const [ , _a, _b, _c ] = hex.exec(sixDigitHex(a)).map(hexParse)\r\n Object.assign(this, { _a, _b, _c, _d: 0, space: 'rgb' })\r\n } else throw Error('Unsupported string format, can\\'t construct Color')\r\n }\r\n\r\n // Now add the components as a convenience\r\n const { _a, _b, _c, _d } = this\r\n const components = this.space === 'rgb'\n ? { r: _a, g: _b, b: _c }\r\n : this.space === 'xyz'\n ? { x: _a, y: _b, z: _c }\r\n : this.space === 'hsl'\n ? { h: _a, s: _b, l: _c }\r\n : this.space === 'lab'\n ? { l: _a, a: _b, b: _c }\r\n : this.space === 'lch'\n ? { l: _a, c: _b, h: _c }\r\n : this.space === 'cmyk'\n ? { c: _a, m: _b, y: _c, k: _d }\r\n : {}\r\n Object.assign(this, components)\r\n }\r\n\r\n lab () {\r\n // Get the xyz color\r\n const { x, y, z } = this.xyz()\r\n\r\n // Get the lab components\r\n const l = (116 * y) - 16\r\n const a = 500 * (x - y)\r\n const b = 200 * (y - z)\r\n\r\n // Construct and return a new color\r\n const color = new Color(l, a, b, 'lab')\r\n return color\r\n }\n\n lch () {\r\n\r\n // Get the lab color directly\r\n const { l, a, b } = this.lab()\r\n\r\n // Get the chromaticity and the hue using polar coordinates\r\n const c = Math.sqrt(a ** 2 + b ** 2)\r\n let h = 180 * Math.atan2(b, a) / Math.PI\r\n if (h < 0) {\r\n h *= -1\r\n h = 360 - h\r\n }\r\n\r\n // Make a new color and return it\r\n const color = new Color(l, c, h, 'lch')\r\n return color\r\n }\n /*\r\n Conversion Methods\r\n */\r\n\r\n rgb () {\r\n if (this.space === 'rgb') {\r\n return this\r\n } else if (cieSpace(this.space)) {\r\n // Convert to the xyz color space\r\n let { x, y, z } = this\r\n if (this.space === 'lab' || this.space === 'lch') {\r\n // Get the values in the lab space\r\n let { l, a, b } = this\r\n if (this.space === 'lch') {\r\n const { c, h } = this\r\n const dToR = Math.PI / 180\r\n a = c * Math.cos(dToR * h)\r\n b = c * Math.sin(dToR * h)\r\n }\r\n\r\n // Undo the nonlinear function\r\n const yL = (l + 16) / 116\r\n const xL = a / 500 + yL\r\n const zL = yL - b / 200\r\n\r\n // Get the xyz values\r\n const ct = 16 / 116\r\n const mx = 0.008856\r\n const nm = 7.787\r\n x = 0.95047 * ((xL ** 3 > mx) ? xL ** 3 : (xL - ct) / nm)\r\n y = 1.00000 * ((yL ** 3 > mx) ? yL ** 3 : (yL - ct) / nm)\r\n z = 1.08883 * ((zL ** 3 > mx) ? zL ** 3 : (zL - ct) / nm)\r\n }\r\n\r\n // Convert xyz to unbounded rgb values\r\n const rU = x * 3.2406 + y * -1.5372 + z * -0.4986\r\n const gU = x * -0.9689 + y * 1.8758 + z * 0.0415\r\n const bU = x * 0.0557 + y * -0.2040 + z * 1.0570\r\n\r\n // Convert the values to true rgb values\r\n const pow = Math.pow\r\n const bd = 0.0031308\r\n const r = (rU > bd) ? (1.055 * pow(rU, 1 / 2.4) - 0.055) : 12.92 * rU\r\n const g = (gU > bd) ? (1.055 * pow(gU, 1 / 2.4) - 0.055) : 12.92 * gU\r\n const b = (bU > bd) ? (1.055 * pow(bU, 1 / 2.4) - 0.055) : 12.92 * bU\r\n\r\n // Make and return the color\r\n const color = new Color(255 * r, 255 * g, 255 * b)\r\n return color\r\n } else if (this.space === 'hsl') {\r\n // https://bgrins.github.io/TinyColor/docs/tinycolor.html\r\n // Get the current hsl values\r\n let { h, s, l } = this\r\n h /= 360\r\n s /= 100\r\n l /= 100\r\n\r\n // If we are grey, then just make the color directly\r\n if (s === 0) {\r\n l *= 255\r\n const color = new Color(l, l, l)\r\n return color\r\n }\r\n\r\n // TODO I have no idea what this does :D If you figure it out, tell me!\r\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s\r\n const p = 2 * l - q\r\n\r\n // Get the rgb values\r\n const r = 255 * hueToRgb(p, q, h + 1 / 3)\r\n const g = 255 * hueToRgb(p, q, h)\r\n const b = 255 * hueToRgb(p, q, h - 1 / 3)\r\n\r\n // Make a new color\r\n const color = new Color(r, g, b)\r\n return color\r\n } else if (this.space === 'cmyk') {\r\n // https://gist.github.com/felipesabino/5066336\r\n // Get the normalised cmyk values\r\n const { c, m, y, k } = this\r\n\r\n // Get the rgb values\r\n const r = 255 * (1 - Math.min(1, c * (1 - k) + k))\r\n const g = 255 * (1 - Math.min(1, m * (1 - k) + k))\r\n const b = 255 * (1 - Math.min(1, y * (1 - k) + k))\r\n\r\n // Form the color and return it\r\n const color = new Color(r, g, b)\r\n return color\r\n } else {\r\n return this\r\n }\r\n }\r\n\n toArray () {\r\n const { _a, _b, _c, _d, space } = this\r\n return [ _a, _b, _c, _d, space ]\r\n }\n\n toHex () {\r\n const [ r, g, b ] = this._clamped().map(componentHex)\r\n return `#${r}${g}${b}`\r\n }\n\n toRgb () {\r\n const [ rV, gV, bV ] = this._clamped()\r\n const string = `rgb(${rV},${gV},${bV})`\r\n return string\r\n }\n\n toString () {\r\n return this.toHex()\r\n }\n\n xyz () {\r\n\r\n // Normalise the red, green and blue values\r\n const { _a: r255, _b: g255, _c: b255 } = this.rgb()\r\n const [ r, g, b ] = [ r255, g255, b255 ].map(v => v / 255)\r\n\r\n // Convert to the lab rgb space\r\n const rL = (r > 0.04045) ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92\r\n const gL = (g > 0.04045) ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92\r\n const bL = (b > 0.04045) ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92\r\n\r\n // Convert to the xyz color space without bounding the values\r\n const xU = (rL * 0.4124 + gL * 0.3576 + bL * 0.1805) / 0.95047\r\n const yU = (rL * 0.2126 + gL * 0.7152 + bL * 0.0722) / 1.00000\r\n const zU = (rL * 0.0193 + gL * 0.1192 + bL * 0.9505) / 1.08883\r\n\r\n // Get the proper xyz values by applying the bounding\r\n const x = (xU > 0.008856) ? Math.pow(xU, 1 / 3) : (7.787 * xU) + 16 / 116\r\n const y = (yU > 0.008856) ? Math.pow(yU, 1 / 3) : (7.787 * yU) + 16 / 116\r\n const z = (zU > 0.008856) ? Math.pow(zU, 1 / 3) : (7.787 * zU) + 16 / 116\r\n\r\n // Make and return the color\r\n const color = new Color(x, y, z, 'xyz')\r\n return color\r\n }\r\n\n /*\r\n Input and Output methods\r\n */\r\n\r\n _clamped () {\r\n const { _a, _b, _c } = this.rgb()\r\n const { max, min, round } = Math\r\n const format = v => max(0, min(round(v), 255))\r\n return [ _a, _b, _c ].map(format)\r\n }\r\n\r\n /*\r\n Constructing colors\r\n */\r\n\r\n}\r\n","import Matrix from './Matrix.js'\r\n\r\nexport default class Point {\r\n // Initialize\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n // Clone point\n clone () {\r\n return new Point(this)\r\n }\n\n init (x, y) {\r\n const base = { x: 0, y: 0 }\r\n\r\n // ensure source as object\r\n const source = Array.isArray(x)\n ? { x: x[0], y: x[1] }\r\n : typeof x === 'object'\n ? { x: x.x, y: x.y }\r\n : { x: x, y: y }\r\n\r\n // merge source\r\n this.x = source.x == null ? base.x : source.x\r\n this.y = source.y == null ? base.y : source.y\r\n\r\n return this\r\n }\r\n\r\n toArray () {\r\n return [ this.x, this.y ]\r\n }\n\n transform (m) {\r\n return this.clone().transformO(m)\r\n }\r\n\r\n // Transform point with matrix\r\n transformO (m) {\r\n if (!Matrix.isMatrixLike(m)) {\r\n m = new Matrix(m)\r\n }\r\n\r\n const { x, y } = this\r\n\r\n // Perform the matrix multiplication\r\n this.x = m.a * x + m.c * y + m.e\r\n this.y = m.b * x + m.d * y + m.f\r\n\r\n return this\r\n }\r\n\r\n}\r\n\r\nexport function point (x, y) {\r\n return new Point(x, y).transform(this.screenCTM().inverse())\r\n}\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { radians } from '../utils/utils.js'\r\nimport { register } from '../utils/adopter.js'\r\nimport Element from '../elements/Element.js'\r\nimport Point from './Point.js'\r\n\r\nfunction closeEnough (a, b, threshold) {\r\n return Math.abs(b - a) < (threshold || 1e-6)\r\n}\r\n\r\nexport default class Matrix {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n static formatTransforms (o) {\r\n // Get all of the parameters required to form the matrix\r\n const flipBoth = o.flip === 'both' || o.flip === true\r\n const flipX = o.flip && (flipBoth || o.flip === 'x') ? -1 : 1\r\n const flipY = o.flip && (flipBoth || o.flip === 'y') ? -1 : 1\r\n const skewX = o.skew && o.skew.length\n ? o.skew[0]\r\n : isFinite(o.skew)\n ? o.skew\r\n : isFinite(o.skewX)\n ? o.skewX\r\n : 0\r\n const skewY = o.skew && o.skew.length\n ? o.skew[1]\r\n : isFinite(o.skew)\n ? o.skew\r\n : isFinite(o.skewY)\n ? o.skewY\r\n : 0\r\n const scaleX = o.scale && o.scale.length\n ? o.scale[0] * flipX\r\n : isFinite(o.scale)\n ? o.scale * flipX\r\n : isFinite(o.scaleX)\n ? o.scaleX * flipX\r\n : flipX\r\n const scaleY = o.scale && o.scale.length\n ? o.scale[1] * flipY\r\n : isFinite(o.scale)\n ? o.scale * flipY\r\n : isFinite(o.scaleY)\n ? o.scaleY * flipY\r\n : flipY\r\n const shear = o.shear || 0\r\n const theta = o.rotate || o.theta || 0\r\n const origin = new Point(o.origin || o.around || o.ox || o.originX, o.oy || o.originY)\r\n const ox = origin.x\r\n const oy = origin.y\r\n // We need Point to be invalid if nothing was passed because we cannot default to 0 here. Thats why NaN\r\n const position = new Point(o.position || o.px || o.positionX || NaN, o.py || o.positionY || NaN)\r\n const px = position.x\r\n const py = position.y\r\n const translate = new Point(o.translate || o.tx || o.translateX, o.ty || o.translateY)\r\n const tx = translate.x\r\n const ty = translate.y\r\n const relative = new Point(o.relative || o.rx || o.relativeX, o.ry || o.relativeY)\r\n const rx = relative.x\r\n const ry = relative.y\r\n\r\n // Populate all of the values\r\n return {\r\n scaleX, scaleY, skewX, skewY, shear, theta, rx, ry, tx, ty, ox, oy, px, py\r\n }\r\n }\n\n static fromArray (a) {\r\n return { a: a[0], b: a[1], c: a[2], d: a[3], e: a[4], f: a[5] }\r\n }\n\n static isMatrixLike (o) {\r\n return (\r\n o.a != null\r\n || o.b != null\r\n || o.c != null\r\n || o.d != null\r\n || o.e != null\r\n || o.f != null\r\n )\r\n }\n\n // left matrix, right matrix, target matrix which is overwritten\n static matrixMultiply (l, r, o) {\r\n // Work out the product directly\r\n const a = l.a * r.a + l.c * r.b\r\n const b = l.b * r.a + l.d * r.b\r\n const c = l.a * r.c + l.c * r.d\r\n const d = l.b * r.c + l.d * r.d\r\n const e = l.e + l.a * r.e + l.c * r.f\r\n const f = l.f + l.b * r.e + l.d * r.f\r\n\r\n // make sure to use local variables because l/r and o could be the same\r\n o.a = a\r\n o.b = b\r\n o.c = c\r\n o.d = d\r\n o.e = e\r\n o.f = f\r\n\r\n return o\r\n }\n\n around (cx, cy, matrix) {\r\n return this.clone().aroundO(cx, cy, matrix)\r\n }\n\n // Transform around a center point\n aroundO (cx, cy, matrix) {\r\n const dx = cx || 0\r\n const dy = cy || 0\r\n return this.translateO(-dx, -dy).lmultiplyO(matrix).translateO(dx, dy)\r\n }\n\n // Clones this matrix\n clone () {\r\n return new Matrix(this)\r\n }\n\n // Decomposes this matrix into its affine parameters\n decompose (cx = 0, cy = 0) {\r\n // Get the parameters from the matrix\r\n const a = this.a\r\n const b = this.b\r\n const c = this.c\r\n const d = this.d\r\n const e = this.e\r\n const f = this.f\r\n\r\n // Figure out if the winding direction is clockwise or counterclockwise\r\n const determinant = a * d - b * c\r\n const ccw = determinant > 0 ? 1 : -1\r\n\r\n // Since we only shear in x, we can use the x basis to get the x scale\r\n // and the rotation of the resulting matrix\r\n const sx = ccw * Math.sqrt(a * a + b * b)\r\n const thetaRad = Math.atan2(ccw * b, ccw * a)\r\n const theta = 180 / Math.PI * thetaRad\r\n const ct = Math.cos(thetaRad)\r\n const st = Math.sin(thetaRad)\r\n\r\n // We can then solve the y basis vector simultaneously to get the other\r\n // two affine parameters directly from these parameters\r\n const lam = (a * c + b * d) / determinant\r\n const sy = ((c * sx) / (lam * a - b)) || ((d * sx) / (lam * b + a))\r\n\r\n // Use the translations\r\n const tx = e - cx + cx * ct * sx + cy * (lam * ct * sx - st * sy)\r\n const ty = f - cy + cx * st * sx + cy * (lam * st * sx + ct * sy)\r\n\r\n // Construct the decomposition and return it\r\n return {\r\n // Return the affine parameters\r\n scaleX: sx,\r\n scaleY: sy,\r\n shear: lam,\r\n rotate: theta,\r\n translateX: tx,\r\n translateY: ty,\r\n originX: cx,\r\n originY: cy,\r\n\r\n // Return the matrix parameters\r\n a: this.a,\r\n b: this.b,\r\n c: this.c,\r\n d: this.d,\r\n e: this.e,\r\n f: this.f\r\n }\r\n }\n\n // Check if two matrices are equal\n equals (other) {\r\n if (other === this) return true\r\n const comp = new Matrix(other)\r\n return closeEnough(this.a, comp.a) && closeEnough(this.b, comp.b)\r\n && closeEnough(this.c, comp.c) && closeEnough(this.d, comp.d)\r\n && closeEnough(this.e, comp.e) && closeEnough(this.f, comp.f)\r\n }\n\n // Flip matrix on x or y, at a given offset\n flip (axis, around) {\r\n return this.clone().flipO(axis, around)\r\n }\n\n flipO (axis, around) {\r\n return axis === 'x'\n ? this.scaleO(-1, 1, around, 0)\r\n : axis === 'y'\n ? this.scaleO(1, -1, 0, around)\r\n : this.scaleO(-1, -1, axis, around || axis) // Define an x, y flip point\r\n }\n\n // Initialize\r\n init (source) {\r\n const base = Matrix.fromArray([ 1, 0, 0, 1, 0, 0 ])\r\n\r\n // ensure source as object\r\n source = source instanceof Element\n ? source.matrixify()\r\n : typeof source === 'string'\n ? Matrix.fromArray(source.split(delimiter).map(parseFloat))\r\n : Array.isArray(source)\n ? Matrix.fromArray(source)\r\n : (typeof source === 'object' && Matrix.isMatrixLike(source))\n ? source\r\n : (typeof source === 'object')\n ? new Matrix().transform(source)\r\n : arguments.length === 6\n ? Matrix.fromArray([].slice.call(arguments))\r\n : base\r\n\r\n // Merge the source matrix with the base matrix\r\n this.a = source.a != null ? source.a : base.a\r\n this.b = source.b != null ? source.b : base.b\r\n this.c = source.c != null ? source.c : base.c\r\n this.d = source.d != null ? source.d : base.d\r\n this.e = source.e != null ? source.e : base.e\r\n this.f = source.f != null ? source.f : base.f\r\n\r\n return this\r\n }\r\n\n inverse () {\r\n return this.clone().inverseO()\r\n }\n\n // Inverses matrix\n inverseO () {\r\n // Get the current parameters out of the matrix\r\n const a = this.a\r\n const b = this.b\r\n const c = this.c\r\n const d = this.d\r\n const e = this.e\r\n const f = this.f\r\n\r\n // Invert the 2x2 matrix in the top left\r\n const det = a * d - b * c\r\n if (!det) throw new Error('Cannot invert ' + this)\r\n\r\n // Calculate the top 2x2 matrix\r\n const na = d / det\r\n const nb = -b / det\r\n const nc = -c / det\r\n const nd = a / det\r\n\r\n // Apply the inverted matrix to the top right\r\n const ne = -(na * e + nc * f)\r\n const nf = -(nb * e + nd * f)\r\n\r\n // Construct the inverted matrix\r\n this.a = na\r\n this.b = nb\r\n this.c = nc\r\n this.d = nd\r\n this.e = ne\r\n this.f = nf\r\n\r\n return this\r\n }\n\n lmultiply (matrix) {\r\n return this.clone().lmultiplyO(matrix)\r\n }\n\n lmultiplyO (matrix) {\r\n const r = this\r\n const l = matrix instanceof Matrix\r\n ? matrix\r\n : new Matrix(matrix)\r\n\r\n return Matrix.matrixMultiply(l, r, this)\r\n }\n\n // Left multiplies by the given matrix\n multiply (matrix) {\r\n return this.clone().multiplyO(matrix)\r\n }\n\n multiplyO (matrix) {\r\n // Get the matrices\r\n const l = this\r\n const r = matrix instanceof Matrix\r\n ? matrix\r\n : new Matrix(matrix)\r\n\r\n return Matrix.matrixMultiply(l, r, this)\r\n }\n\n // Rotate matrix\n rotate (r, cx, cy) {\r\n return this.clone().rotateO(r, cx, cy)\r\n }\n\n rotateO (r, cx = 0, cy = 0) {\r\n // Convert degrees to radians\r\n r = radians(r)\r\n\r\n const cos = Math.cos(r)\r\n const sin = Math.sin(r)\r\n\r\n const { a, b, c, d, e, f } = this\r\n\r\n this.a = a * cos - b * sin\r\n this.b = b * cos + a * sin\r\n this.c = c * cos - d * sin\r\n this.d = d * cos + c * sin\r\n this.e = e * cos - f * sin + cy * sin - cx * cos + cx\r\n this.f = f * cos + e * sin - cx * sin - cy * cos + cy\r\n\r\n return this\r\n }\n\n // Scale matrix\n scale (x, y, cx, cy) {\r\n return this.clone().scaleO(...arguments)\r\n }\n\n scaleO (x, y = x, cx = 0, cy = 0) {\r\n // Support uniform scaling\r\n if (arguments.length === 3) {\r\n cy = cx\r\n cx = y\r\n y = x\r\n }\r\n\r\n const { a, b, c, d, e, f } = this\r\n\r\n this.a = a * x\r\n this.b = b * y\r\n this.c = c * x\r\n this.d = d * y\r\n this.e = e * x - cx * x + cx\r\n this.f = f * y - cy * y + cy\r\n\r\n return this\r\n }\n\n // Shear matrix\n shear (a, cx, cy) {\r\n return this.clone().shearO(a, cx, cy)\r\n }\n\n shearO (lx, cx = 0, cy = 0) {\r\n const { a, b, c, d, e, f } = this\r\n\r\n this.a = a + b * lx\r\n this.c = c + d * lx\r\n this.e = e + f * lx - cy * lx\r\n\r\n return this\r\n }\n\n // Skew Matrix\n skew (x, y, cx, cy) {\r\n return this.clone().skewO(...arguments)\r\n }\n\n skewO (x, y = x, cx = 0, cy = 0) {\r\n // support uniformal skew\r\n if (arguments.length === 3) {\r\n cy = cx\r\n cx = y\r\n y = x\r\n }\r\n\r\n // Convert degrees to radians\r\n x = radians(x)\r\n y = radians(y)\r\n\r\n const lx = Math.tan(x)\r\n const ly = Math.tan(y)\r\n\r\n const { a, b, c, d, e, f } = this\r\n\r\n this.a = a + b * lx\r\n this.b = b + a * ly\r\n this.c = c + d * lx\r\n this.d = d + c * ly\r\n this.e = e + f * lx - cy * lx\r\n this.f = f + e * ly - cx * ly\r\n\r\n return this\r\n }\n\n // SkewX\n skewX (x, cx, cy) {\r\n return this.skew(x, 0, cx, cy)\r\n }\n\n // SkewY\n skewY (y, cx, cy) {\r\n return this.skew(0, y, cx, cy)\r\n }\n\n toArray () {\r\n return [ this.a, this.b, this.c, this.d, this.e, this.f ]\r\n }\n\n // Convert matrix to string\n toString () {\r\n return 'matrix(' + this.a + ',' + this.b + ',' + this.c + ',' + this.d + ',' + this.e + ',' + this.f + ')'\r\n }\n\n // Transform a matrix into another matrix by manipulating the space\r\n transform (o) {\r\n // Check if o is a matrix and then left multiply it directly\r\n if (Matrix.isMatrixLike(o)) {\r\n const matrix = new Matrix(o)\r\n return matrix.multiplyO(this)\r\n }\r\n\r\n // Get the proposed transformations and the current transformations\r\n const t = Matrix.formatTransforms(o)\r\n const current = this\r\n const { x: ox, y: oy } = new Point(t.ox, t.oy).transform(current)\r\n\r\n // Construct the resulting matrix\r\n const transformer = new Matrix()\r\n .translateO(t.rx, t.ry)\r\n .lmultiplyO(current)\r\n .translateO(-ox, -oy)\r\n .scaleO(t.scaleX, t.scaleY)\r\n .skewO(t.skewX, t.skewY)\r\n .shearO(t.shear)\r\n .rotateO(t.theta)\r\n .translateO(ox, oy)\r\n\r\n // If we want the origin at a particular place, we force it there\r\n if (isFinite(t.px) || isFinite(t.py)) {\r\n const origin = new Point(ox, oy).transform(transformer)\r\n // TODO: Replace t.px with isFinite(t.px)\r\n // Doesnt work because t.px is also 0 if it wasnt passed\r\n const dx = isFinite(t.px) ? t.px - origin.x : 0\r\n const dy = isFinite(t.py) ? t.py - origin.y : 0\r\n transformer.translateO(dx, dy)\r\n }\r\n\r\n // Translate now after positioning\r\n transformer.translateO(t.tx, t.ty)\r\n return transformer\r\n }\r\n\n // Translate matrix\r\n translate (x, y) {\r\n return this.clone().translateO(x, y)\r\n }\r\n\n translateO (x, y) {\r\n this.e += x || 0\r\n this.f += y || 0\r\n return this\r\n }\r\n\n valueOf () {\r\n return {\r\n a: this.a,\r\n b: this.b,\r\n c: this.c,\r\n d: this.d,\r\n e: this.e,\r\n f: this.f\r\n }\r\n }\r\n\r\n}\r\n\r\nexport function ctm () {\r\n return new Matrix(this.node.getCTM())\r\n}\r\n\r\nexport function screenCTM () {\r\n /* https://bugzilla.mozilla.org/show_bug.cgi?id=1344537\r\n This is needed because FF does not return the transformation matrix\r\n for the inner coordinate system when getScreenCTM() is called on nested svgs.\r\n However all other Browsers do that */\r\n if (typeof this.isRoot === 'function' && !this.isRoot()) {\r\n const rect = this.rect(1, 1)\r\n const m = rect.node.getScreenCTM()\r\n rect.remove()\r\n return new Matrix(m)\r\n }\r\n return new Matrix(this.node.getScreenCTM())\r\n}\r\n\r\nregister(Matrix, 'Matrix')\r\n","import { globals } from '../../utils/window.js'\r\nimport { makeInstance } from '../../utils/adopter.js'\r\n\r\nexport default function parser () {\r\n // Reuse cached element if possible\r\n if (!parser.nodes) {\r\n const svg = makeInstance().size(2, 0)\r\n svg.node.style.cssText = [\r\n 'opacity: 0',\r\n 'position: absolute',\r\n 'left: -100%',\r\n 'top: -100%',\r\n 'overflow: hidden'\r\n ].join(';')\r\n\r\n svg.attr('focusable', 'false')\r\n svg.attr('aria-hidden', 'true')\r\n\r\n const path = svg.path().node\r\n\r\n parser.nodes = { svg, path }\r\n }\r\n\r\n if (!parser.nodes.svg.node.parentNode) {\r\n const b = globals.document.body || globals.document.documentElement\r\n parser.nodes.svg.addTo(b)\r\n }\r\n\r\n return parser.nodes\r\n}\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { globals } from '../utils/window.js'\r\nimport { register } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Matrix from './Matrix.js'\r\nimport Point from './Point.js'\r\nimport parser from '../modules/core/parser.js'\r\n\r\nexport function isNulledBox (box) {\r\n return !box.width && !box.height && !box.x && !box.y\r\n}\r\n\r\nexport function domContains (node) {\r\n return node === globals.document\r\n || (globals.document.documentElement.contains || function (node) {\r\n // This is IE - it does not support contains() for top-level SVGs\r\n while (node.parentNode) {\r\n node = node.parentNode\r\n }\r\n return node === globals.document\r\n }).call(globals.document.documentElement, node)\r\n}\r\n\r\nexport default class Box {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n addOffset () {\r\n // offset by window scroll position, because getBoundingClientRect changes when window is scrolled\r\n this.x += globals.window.pageXOffset\r\n this.y += globals.window.pageYOffset\r\n return new Box(this)\r\n }\r\n\r\n init (source) {\r\n const base = [ 0, 0, 0, 0 ]\r\n source = typeof source === 'string'\n ? source.split(delimiter).map(parseFloat)\r\n : Array.isArray(source)\n ? source\r\n : typeof source === 'object'\n ? [ source.left != null\n ? source.left\r\n : source.x, source.top != null ? source.top : source.y, source.width, source.height ]\r\n : arguments.length === 4\n ? [].slice.call(arguments)\r\n : base\r\n\r\n this.x = source[0] || 0\r\n this.y = source[1] || 0\r\n this.width = this.w = source[2] || 0\r\n this.height = this.h = source[3] || 0\r\n\r\n // Add more bounding box properties\r\n this.x2 = this.x + this.w\r\n this.y2 = this.y + this.h\r\n this.cx = this.x + this.w / 2\r\n this.cy = this.y + this.h / 2\r\n\r\n return this\r\n }\r\n\r\n isNulled () {\r\n return isNulledBox(this)\r\n }\r\n\r\n // Merge rect box with another, return a new instance\r\n merge (box) {\r\n const x = Math.min(this.x, box.x)\r\n const y = Math.min(this.y, box.y)\r\n const width = Math.max(this.x + this.width, box.x + box.width) - x\r\n const height = Math.max(this.y + this.height, box.y + box.height) - y\r\n\r\n return new Box(x, y, width, height)\r\n }\r\n\r\n toArray () {\r\n return [ this.x, this.y, this.width, this.height ]\r\n }\r\n\r\n toString () {\r\n return this.x + ' ' + this.y + ' ' + this.width + ' ' + this.height\r\n }\r\n\r\n transform (m) {\r\n if (!(m instanceof Matrix)) {\r\n m = new Matrix(m)\r\n }\r\n\r\n let xMin = Infinity\r\n let xMax = -Infinity\r\n let yMin = Infinity\r\n let yMax = -Infinity\r\n\r\n const pts = [\r\n new Point(this.x, this.y),\r\n new Point(this.x2, this.y),\r\n new Point(this.x, this.y2),\r\n new Point(this.x2, this.y2)\r\n ]\r\n\r\n pts.forEach(function (p) {\r\n p = p.transform(m)\r\n xMin = Math.min(xMin, p.x)\r\n xMax = Math.max(xMax, p.x)\r\n yMin = Math.min(yMin, p.y)\r\n yMax = Math.max(yMax, p.y)\r\n })\r\n\r\n return new Box(\r\n xMin, yMin,\r\n xMax - xMin,\r\n yMax - yMin\r\n )\r\n }\r\n\r\n}\r\n\r\nfunction getBox (el, getBBoxFn, retry) {\r\n let box\r\n\r\n try {\r\n // Try to get the box with the provided function\r\n box = getBBoxFn(el.node)\r\n\r\n // If the box is worthless and not even in the dom, retry\r\n // by throwing an error here...\r\n if (isNulledBox(box) && !domContains(el.node)) {\r\n throw new Error('Element not in the dom')\r\n }\r\n } catch (e) {\r\n // ... and calling the retry handler here\r\n box = retry(el)\r\n }\r\n\r\n return box\r\n}\r\n\r\nexport function bbox () {\r\n // Function to get bbox is getBBox()\r\n const getBBox = (node) => node.getBBox()\r\n\r\n // Take all measures so that a stupid browser renders the element\r\n // so we can get the bbox from it when we try again\r\n const retry = (el) => {\r\n try {\r\n const clone = el.clone().addTo(parser().svg).show()\r\n const box = clone.node.getBBox()\r\n clone.remove()\r\n return box\r\n } catch (e) {\r\n // We give up...\r\n throw new Error(`Getting bbox of element \"${el.node.nodeName}\" is not possible: ${e.toString()}`)\r\n }\r\n }\r\n\r\n const box = getBox(this, getBBox, retry)\r\n const bbox = new Box(box)\r\n\r\n return bbox\r\n}\r\n\r\nexport function rbox (el) {\r\n const getRBox = (node) => node.getBoundingClientRect()\r\n const retry = (el) => {\r\n // There is no point in trying tricks here because if we insert the element into the dom ourselves\r\n // it obviously will be at the wrong position\r\n throw new Error(`Getting rbox of element \"${el.node.nodeName}\" is not possible`)\r\n }\r\n\r\n const box = getBox(this, getRBox, retry)\r\n const rbox = new Box(box)\r\n\r\n // If an element was passed, we want the bbox in the coordinate system of that element\r\n if (el) {\r\n return rbox.transform(el.screenCTM().inverseO())\r\n }\r\n\r\n // Else we want it in absolute screen coordinates\r\n // Therefore we need to add the scrollOffset\r\n return rbox.addOffset()\r\n}\r\n\r\n// Checks whether the given point is inside the bounding box\r\nexport function inside (x, y) {\r\n const box = this.bbox()\r\n\r\n return x > box.x\r\n && y > box.y\r\n && x < box.x + box.width\r\n && y < box.y + box.height\r\n}\r\n\r\nregisterMethods({\r\n viewbox: {\r\n viewbox (x, y, width, height) {\r\n // act as getter\r\n if (x == null) return new Box(this.attr('viewBox'))\r\n\r\n // act as setter\r\n return this.attr('viewBox', new Box(x, y, width, height))\r\n },\r\n\r\n zoom (level, point) {\r\n // Its best to rely on the attributes here and here is why:\r\n // clientXYZ: Doesn't work on non-root svgs because they dont have a CSSBox (silly!)\r\n // getBoundingClientRect: Doesn't work because Chrome just ignores width and height of nested svgs completely\r\n // that means, their clientRect is always as big as the content.\r\n // Furthermore this size is incorrect if the element is further transformed by its parents\r\n // computedStyle: Only returns meaningful values if css was used with px. We dont go this route here!\r\n // getBBox: returns the bounding box of its content - that doesnt help!\r\n let { width, height } = this.attr([ 'width', 'height' ])\r\n\r\n // Width and height is a string when a number with a unit is present which we can't use\r\n // So we try clientXYZ\r\n if ((!width && !height) || (typeof width === 'string' || typeof height === 'string')) {\r\n width = this.node.clientWidth\r\n height = this.node.clientHeight\r\n }\r\n\r\n // Giving up...\r\n if (!width || !height) {\r\n throw new Error('Impossible to get absolute width and height. Please provide an absolute width and height attribute on the zooming element')\r\n }\r\n\r\n const v = this.viewbox()\r\n\r\n const zoomX = width / v.width\r\n const zoomY = height / v.height\r\n const zoom = Math.min(zoomX, zoomY)\r\n\r\n if (level == null) {\r\n return zoom\r\n }\r\n\r\n let zoomAmount = zoom / level\r\n\r\n // Set the zoomAmount to the highest value which is safe to process and recover from\r\n // The * 100 is a bit of wiggle room for the matrix transformation\r\n if (zoomAmount === Infinity) zoomAmount = Number.MAX_SAFE_INTEGER / 100\r\n\r\n point = point || new Point(width / 2 / zoomX + v.x, height / 2 / zoomY + v.y)\r\n\r\n const box = new Box(v).transform(\r\n new Matrix({ scale: zoomAmount, origin: point })\r\n )\r\n\r\n return this.viewbox(box)\r\n }\r\n }\r\n})\r\n\r\nregister(Box, 'Box')\r\n","import { extend } from '../utils/adopter.js'\r\n// import { subClassArray } from './ArrayPolyfill.js'\r\n\r\nclass List extends Array {\r\n constructor (arr = [], ...args) {\r\n super(arr, ...args)\r\n if (typeof arr === 'number') return this\r\n this.length = 0\r\n this.push(...arr)\r\n }\r\n}\r\n\r\n/* = subClassArray('List', Array, function (arr = []) {\r\n // This catches the case, that native map tries to create an array with new Array(1)\r\n if (typeof arr === 'number') return this\r\n this.length = 0\r\n this.push(...arr)\r\n}) */\r\n\r\nexport default List\r\n\r\nextend([ List ], {\r\n each (fnOrMethodName, ...args) {\r\n if (typeof fnOrMethodName === 'function') {\r\n return this.map((el, i, arr) => {\r\n return fnOrMethodName.call(el, el, i, arr)\r\n })\r\n } else {\r\n return this.map(el => {\r\n return el[fnOrMethodName](...args)\r\n })\r\n }\r\n },\r\n\r\n toArray () {\r\n return Array.prototype.concat.apply([], this)\r\n }\r\n})\r\n\r\nconst reserved = [ 'toArray', 'constructor', 'each' ]\r\n\r\nList.extend = function (methods) {\r\n methods = methods.reduce((obj, name) => {\r\n // Don't overwrite own methods\r\n if (reserved.includes(name)) return obj\r\n\r\n // Don't add private methods\r\n if (name[0] === '_') return obj\r\n\r\n // Relay every call to each()\r\n obj[name] = function (...attrs) {\r\n return this.each(name, ...attrs)\r\n }\r\n return obj\r\n }, {})\r\n\r\n extend([ List ], methods)\r\n}\r\n","import { adopt } from '../../utils/adopter.js'\r\nimport { globals } from '../../utils/window.js'\r\nimport { map } from '../../utils/utils.js'\r\nimport List from '../../types/List.js'\r\n\r\nexport default function baseFind (query, parent) {\r\n return new List(map((parent || globals.document).querySelectorAll(query), function (node) {\r\n return adopt(node)\r\n }))\r\n}\r\n\r\n// Scoped find method\r\nexport function find (query) {\r\n return baseFind(query, this.node)\r\n}\r\n\r\nexport function findOne (query) {\r\n return adopt(this.node.querySelector(query))\r\n}\r\n","import { delimiter } from './regex.js'\r\nimport { makeInstance } from '../../utils/adopter.js'\r\nimport { globals } from '../../utils/window.js'\r\n\r\nlet listenerId = 0\r\nexport const windowEvents = {}\r\n\r\nexport function getEvents (instance) {\r\n let n = instance.getEventHolder()\r\n\r\n // We dont want to save events in global space\r\n if (n === globals.window) n = windowEvents\r\n if (!n.events) n.events = {}\r\n return n.events\r\n}\r\n\r\nexport function getEventTarget (instance) {\r\n return instance.getEventTarget()\r\n}\r\n\r\nexport function clearEvents (instance) {\r\n let n = instance.getEventHolder()\r\n if (n === globals.window) n = windowEvents\r\n if (n.events) n.events = {}\r\n}\r\n\r\n// Add event binder in the SVG namespace\r\nexport function on (node, events, listener, binding, options) {\r\n const l = listener.bind(binding || node)\r\n const instance = makeInstance(node)\r\n const bag = getEvents(instance)\r\n const n = getEventTarget(instance)\r\n\r\n // events can be an array of events or a string of events\r\n events = Array.isArray(events) ? events : events.split(delimiter)\r\n\r\n // add id to listener\r\n if (!listener._svgjsListenerId) {\r\n listener._svgjsListenerId = ++listenerId\r\n }\r\n\r\n events.forEach(function (event) {\r\n const ev = event.split('.')[0]\r\n const ns = event.split('.')[1] || '*'\r\n\r\n // ensure valid object\r\n bag[ev] = bag[ev] || {}\r\n bag[ev][ns] = bag[ev][ns] || {}\r\n\r\n // reference listener\r\n bag[ev][ns][listener._svgjsListenerId] = l\r\n\r\n // add listener\r\n n.addEventListener(ev, l, options || false)\r\n })\r\n}\r\n\r\n// Add event unbinder in the SVG namespace\r\nexport function off (node, events, listener, options) {\r\n const instance = makeInstance(node)\r\n const bag = getEvents(instance)\r\n const n = getEventTarget(instance)\r\n\r\n // listener can be a function or a number\r\n if (typeof listener === 'function') {\r\n listener = listener._svgjsListenerId\r\n if (!listener) return\r\n }\r\n\r\n // events can be an array of events or a string or undefined\r\n events = Array.isArray(events) ? events : (events || '').split(delimiter)\r\n\r\n events.forEach(function (event) {\r\n const ev = event && event.split('.')[0]\r\n const ns = event && event.split('.')[1]\r\n let namespace, l\r\n\r\n if (listener) {\r\n // remove listener reference\r\n if (bag[ev] && bag[ev][ns || '*']) {\r\n // removeListener\r\n n.removeEventListener(ev, bag[ev][ns || '*'][listener], options || false)\r\n\r\n delete bag[ev][ns || '*'][listener]\r\n }\r\n } else if (ev && ns) {\r\n // remove all listeners for a namespaced event\r\n if (bag[ev] && bag[ev][ns]) {\r\n for (l in bag[ev][ns]) {\r\n off(n, [ ev, ns ].join('.'), l)\r\n }\r\n\r\n delete bag[ev][ns]\r\n }\r\n } else if (ns) {\r\n // remove all listeners for a specific namespace\r\n for (event in bag) {\r\n for (namespace in bag[event]) {\r\n if (ns === namespace) {\r\n off(n, [ event, ns ].join('.'))\r\n }\r\n }\r\n }\r\n } else if (ev) {\r\n // remove all listeners for the event\r\n if (bag[ev]) {\r\n for (namespace in bag[ev]) {\r\n off(n, [ ev, namespace ].join('.'))\r\n }\r\n\r\n delete bag[ev]\r\n }\r\n } else {\r\n // remove all listeners on a given node\r\n for (event in bag) {\r\n off(n, event)\r\n }\r\n\r\n clearEvents(instance)\r\n }\r\n })\r\n}\r\n\r\nexport function dispatch (node, event, data, options) {\r\n const n = getEventTarget(node)\r\n\r\n // Dispatch event\r\n if (event instanceof globals.window.Event) {\r\n n.dispatchEvent(event)\r\n } else {\r\n event = new globals.window.CustomEvent(event, { detail: data, cancelable: true, ...options })\r\n n.dispatchEvent(event)\r\n }\r\n return event\r\n}\r\n","import { dispatch, off, on } from '../modules/core/event.js'\r\nimport { register } from '../utils/adopter.js'\r\nimport Base from './Base.js'\r\n\r\nexport default class EventTarget extends Base {\r\n addEventListener () {}\r\n\r\n dispatch (event, data, options) {\r\n return dispatch(this, event, data, options)\r\n }\r\n\r\n dispatchEvent (event) {\r\n const bag = this.getEventHolder().events\r\n if (!bag) return true\r\n\r\n const events = bag[event.type]\r\n\r\n for (const i in events) {\r\n for (const j in events[i]) {\r\n events[i][j](event)\r\n }\r\n }\r\n\r\n return !event.defaultPrevented\r\n }\r\n\r\n // Fire given event\r\n fire (event, data, options) {\r\n this.dispatch(event, data, options)\r\n return this\r\n }\r\n\r\n getEventHolder () {\r\n return this\r\n }\r\n\r\n getEventTarget () {\r\n return this\r\n }\r\n\r\n // Unbind event from listener\r\n off (event, listener) {\r\n off(this, event, listener)\r\n return this\r\n }\r\n\r\n // Bind given event to listener\r\n on (event, listener, binding, options) {\r\n on(this, event, listener, binding, options)\r\n return this\r\n }\r\n\r\n removeEventListener () {}\r\n}\r\n\r\nregister(EventTarget, 'EventTarget')\r\n","\r\nexport function noop () {}\r\n\r\n// Default animation values\r\nexport const timeline = {\r\n duration: 400,\r\n ease: '>',\r\n delay: 0\r\n}\r\n\r\n// Default attribute values\r\nexport const attrs = {\r\n\r\n // fill and stroke\r\n 'fill-opacity': 1,\r\n 'stroke-opacity': 1,\r\n 'stroke-width': 0,\r\n 'stroke-linejoin': 'miter',\r\n 'stroke-linecap': 'butt',\r\n fill: '#000000',\r\n stroke: '#000000',\r\n opacity: 1,\r\n\r\n // position\r\n x: 0,\r\n y: 0,\r\n cx: 0,\r\n cy: 0,\r\n\r\n // size\r\n width: 0,\r\n height: 0,\r\n\r\n // radius\r\n r: 0,\r\n rx: 0,\r\n ry: 0,\r\n\r\n // gradient\r\n offset: 0,\r\n 'stop-opacity': 1,\r\n 'stop-color': '#000000',\r\n\r\n // text\r\n 'text-anchor': 'start'\r\n}\r\n","import { delimiter } from '../modules/core/regex.js'\r\n\r\nexport default class SVGArray extends Array {\r\n constructor (...args) {\r\n super(...args)\r\n this.init(...args)\r\n }\r\n\r\n clone () {\r\n return new this.constructor(this)\r\n }\n\n init (arr) {\r\n // This catches the case, that native map tries to create an array with new Array(1)\r\n if (typeof arr === 'number') return this\r\n this.length = 0\r\n this.push(...this.parse(arr))\r\n return this\r\n }\r\n\r\n // Parse whitespace separated string\n parse (array = []) {\r\n // If already is an array, no need to parse it\r\n if (array instanceof Array) return array\r\n\r\n return array.trim().split(delimiter).map(parseFloat)\r\n }\n\n toArray () {\r\n return Array.prototype.concat.apply([], this)\r\n }\r\n\r\n toSet () {\r\n return new Set(this)\r\n }\n\n toString () {\r\n return this.join(' ')\r\n }\r\n\r\n // Flattens the array if needed\r\n valueOf () {\r\n const ret = []\r\n ret.push(...this)\r\n return ret\r\n }\r\n\r\n}\r\n","import { numberAndUnit } from '../modules/core/regex.js'\r\n\r\n// Module for unit conversions\r\nexport default class SVGNumber {\r\n // Initialize\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n convert (unit) {\r\n return new SVGNumber(this.value, unit)\r\n }\r\n\r\n // Divide number\r\n divide (number) {\r\n number = new SVGNumber(number)\r\n return new SVGNumber(this / number, this.unit || number.unit)\r\n }\r\n\r\n init (value, unit) {\r\n unit = Array.isArray(value) ? value[1] : unit\r\n value = Array.isArray(value) ? value[0] : value\r\n\r\n // initialize defaults\r\n this.value = 0\r\n this.unit = unit || ''\r\n\r\n // parse value\r\n if (typeof value === 'number') {\r\n // ensure a valid numeric value\r\n this.value = isNaN(value) ? 0 : !isFinite(value) ? (value < 0 ? -3.4e+38 : +3.4e+38) : value\r\n } else if (typeof value === 'string') {\r\n unit = value.match(numberAndUnit)\r\n\r\n if (unit) {\r\n // make value numeric\r\n this.value = parseFloat(unit[1])\r\n\r\n // normalize\r\n if (unit[5] === '%') {\r\n this.value /= 100\r\n } else if (unit[5] === 's') {\r\n this.value *= 1000\r\n }\r\n\r\n // store unit\r\n this.unit = unit[5]\r\n }\r\n } else {\r\n if (value instanceof SVGNumber) {\r\n this.value = value.valueOf()\r\n this.unit = value.unit\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Subtract number\r\n minus (number) {\r\n number = new SVGNumber(number)\r\n return new SVGNumber(this - number, this.unit || number.unit)\r\n }\r\n\r\n // Add number\r\n plus (number) {\r\n number = new SVGNumber(number)\r\n return new SVGNumber(this + number, this.unit || number.unit)\r\n }\r\n\r\n // Multiply number\r\n times (number) {\r\n number = new SVGNumber(number)\r\n return new SVGNumber(this * number, this.unit || number.unit)\r\n }\r\n\r\n toArray () {\r\n return [ this.value, this.unit ]\r\n }\r\n\r\n toJSON () {\r\n return this.toString()\r\n }\r\n\r\n toString () {\r\n return (this.unit === '%'\n ? ~~(this.value * 1e8) / 1e6\r\n : this.unit === 's'\n ? this.value / 1e3\r\n : this.value\r\n ) + this.unit\r\n }\r\n\r\n valueOf () {\r\n return this.value\r\n }\r\n\r\n}\r\n","import { attrs as defaults } from './defaults.js'\r\nimport { isNumber } from './regex.js'\r\nimport Color from '../../types/Color.js'\r\nimport SVGArray from '../../types/SVGArray.js'\r\nimport SVGNumber from '../../types/SVGNumber.js'\r\n\r\nconst hooks = []\r\nexport function registerAttrHook (fn) {\r\n hooks.push(fn)\r\n}\r\n\r\n// Set svg element attribute\r\nexport default function attr (attr, val, ns) {\r\n // act as full getter\r\n if (attr == null) {\r\n // get an object of attributes\r\n attr = {}\r\n val = this.node.attributes\r\n\r\n for (const node of val) {\r\n attr[node.nodeName] = isNumber.test(node.nodeValue)\r\n ? parseFloat(node.nodeValue)\r\n : node.nodeValue\r\n }\r\n\r\n return attr\r\n } else if (attr instanceof Array) {\r\n // loop through array and get all values\r\n return attr.reduce((last, curr) => {\r\n last[curr] = this.attr(curr)\r\n return last\r\n }, {})\r\n } else if (typeof attr === 'object' && attr.constructor === Object) {\r\n // apply every attribute individually if an object is passed\r\n for (val in attr) this.attr(val, attr[val])\r\n } else if (val === null) {\r\n // remove value\r\n this.node.removeAttribute(attr)\r\n } else if (val == null) {\r\n // act as a getter if the first and only argument is not an object\r\n val = this.node.getAttribute(attr)\r\n return val == null\n ? defaults[attr]\r\n : isNumber.test(val)\n ? parseFloat(val)\r\n : val\r\n } else {\r\n // Loop through hooks and execute them to convert value\r\n val = hooks.reduce((_val, hook) => {\r\n return hook(attr, _val, this)\r\n }, val)\r\n\r\n // ensure correct numeric values (also accepts NaN and Infinity)\r\n if (typeof val === 'number') {\r\n val = new SVGNumber(val)\r\n } else if (Color.isColor(val)) {\r\n // ensure full hex color\r\n val = new Color(val)\r\n } else if (val.constructor === Array) {\r\n // Check for plain arrays and parse array values\r\n val = new SVGArray(val)\r\n }\r\n\r\n // if the passed attribute is leading...\r\n if (attr === 'leading') {\r\n // ... call the leading method instead\r\n if (this.leading) {\r\n this.leading(val)\r\n }\r\n } else {\r\n // set given attribute on node\r\n typeof ns === 'string'\n ? this.node.setAttributeNS(ns, attr, val.toString())\r\n : this.node.setAttribute(attr, val.toString())\r\n }\r\n\r\n // rebuild if required\r\n if (this.rebuild && (attr === 'font-size' || attr === 'x')) {\r\n this.rebuild()\r\n }\r\n }\r\n\r\n return this\r\n}\r\n","import {\r\n adopt,\r\n assignNewId,\r\n eid,\r\n extend,\r\n makeInstance,\r\n create,\r\n register\r\n} from '../utils/adopter.js'\r\nimport { find, findOne } from '../modules/core/selector.js'\r\nimport { globals } from '../utils/window.js'\r\nimport { map } from '../utils/utils.js'\r\nimport { svg, html } from '../modules/core/namespaces.js'\r\nimport EventTarget from '../types/EventTarget.js'\r\nimport List from '../types/List.js'\r\nimport attr from '../modules/core/attr.js'\r\n\r\nexport default class Dom extends EventTarget {\r\n constructor (node, attrs) {\r\n super()\r\n this.node = node\r\n this.type = node.nodeName\r\n\r\n if (attrs && node !== attrs) {\r\n this.attr(attrs)\r\n }\r\n }\r\n\r\n // Add given element at a position\r\n add (element, i) {\r\n element = makeInstance(element)\r\n\r\n // If non-root svg nodes are added we have to remove their namespaces\r\n if (element.removeNamespace && this.node instanceof globals.window.SVGElement) {\r\n element.removeNamespace()\r\n }\r\n\r\n if (i == null) {\r\n this.node.appendChild(element.node)\r\n } else if (element.node !== this.node.childNodes[i]) {\r\n this.node.insertBefore(element.node, this.node.childNodes[i])\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Add element to given container and return self\r\n addTo (parent, i) {\r\n return makeInstance(parent).put(this, i)\r\n }\r\n\r\n // Returns all child elements\r\n children () {\r\n return new List(map(this.node.children, function (node) {\r\n return adopt(node)\r\n }))\r\n }\r\n\r\n // Remove all elements in this container\r\n clear () {\r\n // remove children\r\n while (this.node.hasChildNodes()) {\r\n this.node.removeChild(this.node.lastChild)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Clone element\r\n clone (deep = true) {\r\n // write dom data to the dom so the clone can pickup the data\r\n this.writeDataToDom()\r\n\r\n // clone element and assign new id\r\n return new this.constructor(assignNewId(this.node.cloneNode(deep)))\r\n }\r\n\r\n // Iterates over all children and invokes a given block\r\n each (block, deep) {\r\n const children = this.children()\r\n let i, il\r\n\r\n for (i = 0, il = children.length; i < il; i++) {\r\n block.apply(children[i], [ i, children ])\r\n\r\n if (deep) {\r\n children[i].each(block, deep)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n element (nodeName, attrs) {\r\n return this.put(new Dom(create(nodeName), attrs))\r\n }\r\n\r\n // Get first child\r\n first () {\r\n return adopt(this.node.firstChild)\r\n }\r\n\r\n // Get a element at the given index\r\n get (i) {\r\n return adopt(this.node.childNodes[i])\r\n }\r\n\r\n getEventHolder () {\r\n return this.node\r\n }\r\n\r\n getEventTarget () {\r\n return this.node\r\n }\r\n\r\n // Checks if the given element is a child\r\n has (element) {\r\n return this.index(element) >= 0\r\n }\r\n\r\n html (htmlOrFn, outerHTML) {\r\n return this.xml(htmlOrFn, outerHTML, html)\r\n }\r\n\r\n // Get / set id\r\n id (id) {\r\n // generate new id if no id set\r\n if (typeof id === 'undefined' && !this.node.id) {\r\n this.node.id = eid(this.type)\r\n }\r\n\r\n // don't set directly with this.node.id to make `null` work correctly\r\n return this.attr('id', id)\r\n }\r\n\r\n // Gets index of given element\r\n index (element) {\r\n return [].slice.call(this.node.childNodes).indexOf(element.node)\r\n }\r\n\r\n // Get the last child\r\n last () {\r\n return adopt(this.node.lastChild)\r\n }\r\n\r\n // matches the element vs a css selector\r\n matches (selector) {\r\n const el = this.node\r\n const matcher = el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector || null\r\n return matcher && matcher.call(el, selector)\r\n }\r\n\r\n // Returns the parent element instance\r\n parent (type) {\r\n let parent = this\r\n\r\n // check for parent\r\n if (!parent.node.parentNode) return null\r\n\r\n // get parent element\r\n parent = adopt(parent.node.parentNode)\r\n\r\n if (!type) return parent\r\n\r\n // loop trough ancestors if type is given\r\n do {\r\n if (typeof type === 'string' ? parent.matches(type) : parent instanceof type) return parent\r\n } while ((parent = adopt(parent.node.parentNode)))\r\n\r\n return parent\r\n }\r\n\r\n // Basically does the same as `add()` but returns the added element instead\r\n put (element, i) {\r\n element = makeInstance(element)\r\n this.add(element, i)\r\n return element\r\n }\r\n\r\n // Add element to given container and return container\r\n putIn (parent, i) {\r\n return makeInstance(parent).add(this, i)\r\n }\r\n\r\n // Remove element\r\n remove () {\r\n if (this.parent()) {\r\n this.parent().removeElement(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Remove a given child\r\n removeElement (element) {\r\n this.node.removeChild(element.node)\r\n\r\n return this\r\n }\r\n\r\n // Replace this with element\r\n replace (element) {\r\n element = makeInstance(element)\r\n\r\n if (this.node.parentNode) {\r\n this.node.parentNode.replaceChild(element.node, this.node)\r\n }\r\n\r\n return element\r\n }\r\n\r\n round (precision = 2, map = null) {\r\n const factor = 10 ** precision\r\n const attrs = this.attr(map)\r\n\r\n for (const i in attrs) {\r\n if (typeof attrs[i] === 'number') {\r\n attrs[i] = Math.round(attrs[i] * factor) / factor\r\n }\r\n }\r\n\r\n this.attr(attrs)\r\n return this\r\n }\r\n\r\n // Import / Export raw svg\r\n svg (svgOrFn, outerSVG) {\r\n return this.xml(svgOrFn, outerSVG, svg)\r\n }\r\n\r\n // Return id on string conversion\r\n toString () {\r\n return this.id()\r\n }\r\n\r\n words (text) {\r\n // This is faster than removing all children and adding a new one\r\n this.node.textContent = text\r\n return this\r\n }\r\n\r\n wrap (node) {\r\n const parent = this.parent()\r\n\r\n if (!parent) {\r\n return this.addTo(node)\r\n }\r\n\r\n const position = parent.index(this)\r\n return parent.put(node, position).put(this)\r\n }\r\n\r\n // write svgjs data to the dom\r\n writeDataToDom () {\r\n // dump variables recursively\r\n this.each(function () {\r\n this.writeDataToDom()\r\n })\r\n\r\n return this\r\n }\r\n\r\n // Import / Export raw svg\r\n xml (xmlOrFn, outerXML, ns) {\r\n if (typeof xmlOrFn === 'boolean') {\r\n ns = outerXML\r\n outerXML = xmlOrFn\r\n xmlOrFn = null\r\n }\r\n\r\n // act as getter if no svg string is given\r\n if (xmlOrFn == null || typeof xmlOrFn === 'function') {\r\n // The default for exports is, that the outerNode is included\r\n outerXML = outerXML == null ? true : outerXML\r\n\r\n // write svgjs data to the dom\r\n this.writeDataToDom()\r\n let current = this\r\n\r\n // An export modifier was passed\r\n if (xmlOrFn != null) {\r\n current = adopt(current.node.cloneNode(true))\r\n\r\n // If the user wants outerHTML we need to process this node, too\r\n if (outerXML) {\r\n const result = xmlOrFn(current)\r\n current = result || current\r\n\r\n // The user does not want this node? Well, then he gets nothing\r\n if (result === false) return ''\r\n }\r\n\r\n // Deep loop through all children and apply modifier\r\n current.each(function () {\r\n const result = xmlOrFn(this)\r\n const _this = result || this\r\n\r\n // If modifier returns false, discard node\r\n if (result === false) {\r\n this.remove()\r\n\r\n // If modifier returns new node, use it\r\n } else if (result && this !== _this) {\r\n this.replace(_this)\r\n }\r\n }, true)\r\n }\r\n\r\n // Return outer or inner content\r\n return outerXML\r\n ? current.node.outerHTML\r\n : current.node.innerHTML\r\n }\r\n\r\n // Act as setter if we got a string\r\n\r\n // The default for import is, that the current node is not replaced\r\n outerXML = outerXML == null ? false : outerXML\r\n\r\n // Create temporary holder\r\n const well = create('wrapper', ns)\r\n const fragment = globals.document.createDocumentFragment()\r\n\r\n // Dump raw svg\r\n well.innerHTML = xmlOrFn\r\n\r\n // Transplant nodes into the fragment\r\n for (let len = well.children.length; len--;) {\r\n fragment.appendChild(well.firstElementChild)\r\n }\r\n\r\n const parent = this.parent()\r\n\r\n // Add the whole fragment at once\r\n return outerXML\r\n ? this.replace(fragment) && parent\r\n : this.add(fragment)\r\n }\r\n}\r\n\r\nextend(Dom, { attr, find, findOne })\r\nregister(Dom, 'Dom')\r\n","import { bbox, rbox, inside } from '../types/Box.js'\r\nimport { ctm, screenCTM } from '../types/Matrix.js'\r\nimport {\r\n extend,\r\n getClass,\r\n makeInstance,\r\n register,\r\n root\r\n} from '../utils/adopter.js'\r\nimport { globals } from '../utils/window.js'\r\nimport { point } from '../types/Point.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { reference } from '../modules/core/regex.js'\r\nimport Dom from './Dom.js'\r\nimport List from '../types/List.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\n\r\nexport default class Element extends Dom {\r\n constructor (node, attrs) {\r\n super(node, attrs)\r\n\r\n // initialize data object\r\n this.dom = {}\r\n\r\n // create circular reference\r\n this.node.instance = this\r\n\r\n if (node.hasAttribute('svgjs:data')) {\r\n // pull svgjs data from the dom (getAttributeNS doesn't work in html5)\r\n this.setData(JSON.parse(node.getAttribute('svgjs:data')) || {})\r\n }\r\n }\r\n\r\n // Move element by its center\r\n center (x, y) {\r\n return this.cx(x).cy(y)\r\n }\r\n\r\n // Move by center over x-axis\r\n cx (x) {\r\n return x == null\r\n ? this.x() + this.width() / 2\r\n : this.x(x - this.width() / 2)\r\n }\r\n\r\n // Move by center over y-axis\r\n cy (y) {\r\n return y == null\r\n ? this.y() + this.height() / 2\r\n : this.y(y - this.height() / 2)\r\n }\r\n\r\n // Get defs\r\n defs () {\r\n const root = this.root()\r\n return root && root.defs()\r\n }\r\n\r\n // Relative move over x and y axes\r\n dmove (x, y) {\r\n return this.dx(x).dy(y)\r\n }\r\n\r\n // Relative move over x axis\r\n dx (x = 0) {\r\n return this.x(new SVGNumber(x).plus(this.x()))\r\n }\r\n\r\n // Relative move over y axis\r\n dy (y = 0) {\r\n return this.y(new SVGNumber(y).plus(this.y()))\r\n }\r\n\r\n getEventHolder () {\r\n return this\r\n }\n\n // Set height of element\n height (height) {\r\n return this.attr('height', height)\r\n }\n\n // Move element to given x and y values\n move (x, y) {\r\n return this.x(x).y(y)\r\n }\n\n // return array of all ancestors of given type up to the root svg\n parents (until = this.root()) {\r\n until = makeInstance(until)\r\n const parents = new List()\r\n let parent = this\r\n\r\n while (\r\n (parent = parent.parent())\r\n && parent.node !== globals.document\r\n && parent.nodeName !== '#document-fragment') {\r\n\r\n parents.push(parent)\r\n\r\n if (parent.node === until.node) {\r\n break\r\n }\r\n }\r\n\r\n return parents\r\n }\n\n // Get referenced element form attribute value\n reference (attr) {\r\n attr = this.attr(attr)\r\n if (!attr) return null\r\n\r\n const m = (attr + '').match(reference)\r\n return m ? makeInstance(m[1]) : null\r\n }\n\n // Get parent document\r\n root () {\r\n const p = this.parent(getClass(root))\r\n return p && p.root()\r\n }\r\n\r\n // set given data to the elements data property\r\n setData (o) {\r\n this.dom = o\r\n return this\r\n }\r\n\r\n // Set element size to given width and height\r\n size (width, height) {\r\n const p = proportionalSize(this, width, height)\r\n\r\n return this\r\n .width(new SVGNumber(p.width))\r\n .height(new SVGNumber(p.height))\r\n }\r\n\r\n // Set width of element\r\n width (width) {\r\n return this.attr('width', width)\r\n }\r\n\r\n // write svgjs data to the dom\r\n writeDataToDom () {\r\n // remove previously set data\r\n this.node.removeAttribute('svgjs:data')\r\n\r\n if (Object.keys(this.dom).length) {\r\n this.node.setAttribute('svgjs:data', JSON.stringify(this.dom)) // see #428\r\n }\r\n\r\n return super.writeDataToDom()\r\n }\r\n\r\n // Move over x-axis\r\n x (x) {\r\n return this.attr('x', x)\r\n }\r\n\r\n // Move over y-axis\r\n y (y) {\r\n return this.attr('y', y)\r\n }\r\n}\r\n\r\nextend(Element, {\r\n bbox, rbox, inside, point, ctm, screenCTM\r\n})\r\n\r\nregister(Element, 'Element')\r\n","import { registerMethods } from '../../utils/methods.js'\r\nimport Color from '../../types/Color.js'\r\nimport Element from '../../elements/Element.js'\r\nimport Matrix from '../../types/Matrix.js'\r\nimport Point from '../../types/Point.js'\r\nimport SVGNumber from '../../types/SVGNumber.js'\r\n\r\n// Define list of available attributes for stroke and fill\r\nconst sugar = {\r\n stroke: [ 'color', 'width', 'opacity', 'linecap', 'linejoin', 'miterlimit', 'dasharray', 'dashoffset' ],\r\n fill: [ 'color', 'opacity', 'rule' ],\r\n prefix: function (t, a) {\r\n return a === 'color' ? t : t + '-' + a\r\n }\r\n}\r\n\r\n// Add sugar for fill and stroke\r\n;[ 'fill', 'stroke' ].forEach(function (m) {\r\n const extension = {}\r\n let i\r\n\r\n extension[m] = function (o) {\r\n if (typeof o === 'undefined') {\r\n return this.attr(m)\r\n }\r\n if (typeof o === 'string' || o instanceof Color || Color.isRgb(o) || (o instanceof Element)) {\r\n this.attr(m, o)\r\n } else {\r\n // set all attributes from sugar.fill and sugar.stroke list\r\n for (i = sugar[m].length - 1; i >= 0; i--) {\r\n if (o[sugar[m][i]] != null) {\r\n this.attr(sugar.prefix(m, sugar[m][i]), o[sugar[m][i]])\r\n }\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n registerMethods([ 'Element', 'Runner' ], extension)\r\n})\r\n\r\nregisterMethods([ 'Element', 'Runner' ], {\r\n // Let the user set the matrix directly\r\n matrix: function (mat, b, c, d, e, f) {\r\n // Act as a getter\r\n if (mat == null) {\r\n return new Matrix(this)\r\n }\r\n\r\n // Act as a setter, the user can pass a matrix or a set of numbers\r\n return this.attr('transform', new Matrix(mat, b, c, d, e, f))\r\n },\r\n\r\n // Map rotation to transform\r\n rotate: function (angle, cx, cy) {\r\n return this.transform({ rotate: angle, ox: cx, oy: cy }, true)\r\n },\r\n\r\n // Map skew to transform\r\n skew: function (x, y, cx, cy) {\r\n return arguments.length === 1 || arguments.length === 3\r\n ? this.transform({ skew: x, ox: y, oy: cx }, true)\r\n : this.transform({ skew: [ x, y ], ox: cx, oy: cy }, true)\r\n },\r\n\r\n shear: function (lam, cx, cy) {\r\n return this.transform({ shear: lam, ox: cx, oy: cy }, true)\r\n },\r\n\r\n // Map scale to transform\r\n scale: function (x, y, cx, cy) {\r\n return arguments.length === 1 || arguments.length === 3\r\n ? this.transform({ scale: x, ox: y, oy: cx }, true)\r\n : this.transform({ scale: [ x, y ], ox: cx, oy: cy }, true)\r\n },\r\n\r\n // Map translate to transform\r\n translate: function (x, y) {\r\n return this.transform({ translate: [ x, y ] }, true)\r\n },\r\n\r\n // Map relative translations to transform\r\n relative: function (x, y) {\r\n return this.transform({ relative: [ x, y ] }, true)\r\n },\r\n\r\n // Map flip to transform\r\n flip: function (direction = 'both', origin = 'center') {\r\n if ('xybothtrue'.indexOf(direction) === -1) {\r\n origin = direction\r\n direction = 'both'\r\n }\r\n\r\n return this.transform({ flip: direction, origin: origin }, true)\r\n },\r\n\r\n // Opacity\r\n opacity: function (value) {\r\n return this.attr('opacity', value)\r\n }\r\n})\r\n\r\nregisterMethods('radius', {\r\n // Add x and y radius\r\n radius: function (x, y = x) {\r\n const type = (this._element || this).type\r\n return type === 'radialGradient'\r\n ? this.attr('r', new SVGNumber(x))\r\n : this.rx(x).ry(y)\r\n }\r\n})\r\n\r\nregisterMethods('Path', {\r\n // Get path length\r\n length: function () {\r\n return this.node.getTotalLength()\r\n },\r\n // Get point at length\r\n pointAt: function (length) {\r\n return new Point(this.node.getPointAtLength(length))\r\n }\r\n})\r\n\r\nregisterMethods([ 'Element', 'Runner' ], {\r\n // Set font\r\n font: function (a, v) {\r\n if (typeof a === 'object') {\r\n for (v in a) this.font(v, a[v])\r\n return this\r\n }\r\n\r\n return a === 'leading'\r\n ? this.leading(v)\r\n : a === 'anchor'\r\n ? this.attr('text-anchor', v)\r\n : a === 'size' || a === 'family' || a === 'weight' || a === 'stretch' || a === 'variant' || a === 'style'\r\n ? this.attr('font-' + a, v)\r\n : this.attr(a, v)\r\n }\r\n})\r\n\r\n// Add events to elements\r\nconst methods = [ 'click',\r\n 'dblclick',\r\n 'mousedown',\r\n 'mouseup',\r\n 'mouseover',\r\n 'mouseout',\r\n 'mousemove',\r\n 'mouseenter',\r\n 'mouseleave',\r\n 'touchstart',\r\n 'touchmove',\r\n 'touchleave',\r\n 'touchend',\r\n 'touchcancel' ].reduce(function (last, event) {\r\n // add event to Element\r\n const fn = function (f) {\r\n if (f === null) {\r\n this.off(event)\r\n } else {\r\n this.on(event, f)\r\n }\r\n return this\r\n }\r\n\r\n last[event] = fn\r\n return last\r\n}, {})\r\n\r\nregisterMethods('Element', methods)\r\n","import { getOrigin } from '../../utils/utils.js'\r\nimport { delimiter, transforms } from '../core/regex.js'\r\nimport { registerMethods } from '../../utils/methods.js'\r\nimport Matrix from '../../types/Matrix.js'\r\n\r\n// Reset all transformations\r\nexport function untransform () {\r\n return this.attr('transform', null)\r\n}\r\n\r\n// merge the whole transformation chain into one matrix and returns it\r\nexport function matrixify () {\r\n const matrix = (this.attr('transform') || '')\r\n // split transformations\r\n .split(transforms).slice(0, -1).map(function (str) {\r\n // generate key => value pairs\r\n const kv = str.trim().split('(')\r\n return [ kv[0],\r\n kv[1].split(delimiter)\r\n .map(function (str) {\r\n return parseFloat(str)\r\n })\r\n ]\r\n })\r\n .reverse()\r\n // merge every transformation into one matrix\r\n .reduce(function (matrix, transform) {\r\n if (transform[0] === 'matrix') {\r\n return matrix.lmultiply(Matrix.fromArray(transform[1]))\r\n }\r\n return matrix[transform[0]].apply(matrix, transform[1])\r\n }, new Matrix())\r\n\r\n return matrix\r\n}\r\n\r\n// add an element to another parent without changing the visual representation on the screen\r\nexport function toParent (parent, i) {\r\n if (this === parent) return this\r\n const ctm = this.screenCTM()\r\n const pCtm = parent.screenCTM().inverse()\r\n\r\n this.addTo(parent, i).untransform().transform(pCtm.multiply(ctm))\r\n\r\n return this\r\n}\r\n\r\n// same as above with parent equals root-svg\r\nexport function toRoot (i) {\r\n return this.toParent(this.root(), i)\r\n}\r\n\r\n// Add transformations\r\nexport function transform (o, relative) {\r\n // Act as a getter if no object was passed\r\n if (o == null || typeof o === 'string') {\r\n const decomposed = new Matrix(this).decompose()\r\n return o == null ? decomposed : decomposed[o]\r\n }\r\n\r\n if (!Matrix.isMatrixLike(o)) {\r\n // Set the origin according to the defined transform\r\n o = { ...o, origin: getOrigin(o, this) }\r\n }\r\n\r\n // The user can pass a boolean, an Element or an Matrix or nothing\r\n const cleanRelative = relative === true ? this : (relative || false)\r\n const result = new Matrix(cleanRelative).transform(o)\r\n return this.attr('transform', result)\r\n}\r\n\r\nregisterMethods('Element', {\r\n untransform, matrixify, toParent, toRoot, transform\r\n})\r\n","import { register } from '../utils/adopter.js'\r\nimport Element from './Element.js'\r\n\r\nexport default class Container extends Element {\r\n flatten (parent = this, index) {\r\n this.each(function () {\r\n if (this instanceof Container) {\r\n return this.flatten().ungroup()\r\n }\r\n })\r\n\r\n return this\r\n }\r\n\r\n ungroup (parent = this.parent(), index = parent.index(this)) {\r\n // when parent != this, we want append all elements to the end\r\n index = index === -1 ? parent.children().length : index\r\n\r\n this.each(function (i, children) {\r\n // reverse each\r\n return children[children.length - i - 1].toParent(parent, index)\r\n })\r\n\r\n return this.remove()\r\n }\r\n}\r\n\r\nregister(Container, 'Container')\r\n","import { nodeOrNew, register } from '../utils/adopter.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class Defs extends Container {\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('defs', node), attrs)\r\n }\r\n\r\n flatten () {\r\n return this\r\n }\r\n\r\n ungroup () {\r\n return this\r\n }\r\n}\r\n\r\nregister(Defs, 'Defs')\r\n","import { register } from '../utils/adopter.js'\r\nimport Element from './Element.js'\r\n\r\nexport default class Shape extends Element {}\r\n\r\nregister(Shape, 'Shape')\r\n","import SVGNumber from '../../types/SVGNumber.js'\r\n\r\n// Radius x value\r\nexport function rx (rx) {\r\n return this.attr('rx', rx)\r\n}\r\n\r\n// Radius y value\r\nexport function ry (ry) {\r\n return this.attr('ry', ry)\r\n}\r\n\r\n// Move over x-axis\r\nexport function x (x) {\r\n return x == null\r\n ? this.cx() - this.rx()\r\n : this.cx(x + this.rx())\r\n}\r\n\r\n// Move over y-axis\r\nexport function y (y) {\r\n return y == null\r\n ? this.cy() - this.ry()\r\n : this.cy(y + this.ry())\r\n}\r\n\r\n// Move by center over x-axis\r\nexport function cx (x) {\r\n return this.attr('cx', x)\r\n}\r\n\r\n// Move by center over y-axis\r\nexport function cy (y) {\r\n return this.attr('cy', y)\r\n}\r\n\r\n// Set width of element\r\nexport function width (width) {\r\n return width == null\r\n ? this.rx() * 2\r\n : this.rx(new SVGNumber(width).divide(2))\r\n}\r\n\r\n// Set height of element\r\nexport function height (height) {\r\n return height == null\r\n ? this.ry() * 2\r\n : this.ry(new SVGNumber(height).divide(2))\r\n}\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Shape from './Shape.js'\r\nimport * as circled from '../modules/core/circled.js'\r\n\r\nexport default class Ellipse extends Shape {\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('ellipse', node), attrs)\r\n }\r\n\r\n size (width, height) {\r\n const p = proportionalSize(this, width, height)\r\n\r\n return this\r\n .rx(new SVGNumber(p.width).divide(2))\r\n .ry(new SVGNumber(p.height).divide(2))\r\n }\r\n}\r\n\r\nextend(Ellipse, circled)\r\n\r\nregisterMethods('Container', {\r\n // Create an ellipse\r\n ellipse: wrapWithAttrCheck(function (width = 0, height = width) {\r\n return this.put(new Ellipse()).size(width, height).move(0, 0)\r\n })\r\n})\r\n\r\nregister(Ellipse, 'Ellipse')\r\n","import Dom from './Dom.js'\nimport { globals } from '../utils/window.js'\nimport { register, create } from '../utils/adopter.js'\n\nclass Fragment extends Dom {\n constructor (node = globals.document.createDocumentFragment()) {\n super(node)\n }\n\n // Import / Export raw xml\n xml (xmlOrFn, outerXML, ns) {\n if (typeof xmlOrFn === 'boolean') {\n ns = outerXML\n outerXML = xmlOrFn\n xmlOrFn = null\n }\n\n // because this is a fragment we have to put all elements into a wrapper first\n // before we can get the innerXML from it\n if (xmlOrFn == null || typeof xmlOrFn === 'function') {\n const wrapper = new Dom(create('wrapper', ns))\n wrapper.add(this.node.cloneNode(true))\n\n return wrapper.xml(false, ns)\n }\n\n // Act as setter if we got a string\n return super.xml(xmlOrFn, false, ns)\n }\n\n}\n\nregister(Fragment, 'Fragment')\n\nexport default Fragment\n","import SVGNumber from '../../types/SVGNumber.js'\r\n\r\nexport function from (x, y) {\r\n return (this._element || this).type === 'radialGradient'\r\n ? this.attr({ fx: new SVGNumber(x), fy: new SVGNumber(y) })\r\n : this.attr({ x1: new SVGNumber(x), y1: new SVGNumber(y) })\r\n}\r\n\r\nexport function to (x, y) {\r\n return (this._element || this).type === 'radialGradient'\r\n ? this.attr({ cx: new SVGNumber(x), cy: new SVGNumber(y) })\r\n : this.attr({ x2: new SVGNumber(x), y2: new SVGNumber(y) })\r\n}\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Box from '../types/Box.js'\r\nimport Container from './Container.js'\r\nimport baseFind from '../modules/core/selector.js'\r\nimport * as gradiented from '../modules/core/gradiented.js'\r\n\r\nexport default class Gradient extends Container {\r\n constructor (type, attrs) {\r\n super(\r\n nodeOrNew(type + 'Gradient', typeof type === 'string' ? null : type),\r\n attrs\r\n )\r\n }\r\n\r\n // custom attr to handle transform\r\n attr (a, b, c) {\r\n if (a === 'transform') a = 'gradientTransform'\r\n return super.attr(a, b, c)\r\n }\r\n\r\n bbox () {\r\n return new Box()\r\n }\r\n\r\n targets () {\r\n return baseFind('svg [fill*=\"' + this.id() + '\"]')\r\n }\r\n\r\n // Alias string conversion to fill\r\n toString () {\r\n return this.url()\r\n }\r\n\r\n // Update gradient\r\n update (block) {\r\n // remove all stops\r\n this.clear()\r\n\r\n // invoke passed block\r\n if (typeof block === 'function') {\r\n block.call(this, this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Return the fill id\r\n url () {\r\n return 'url(\"#' + this.id() + '\")'\r\n }\r\n}\r\n\r\nextend(Gradient, gradiented)\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create gradient element in defs\r\n gradient (...args) {\r\n return this.defs().gradient(...args)\r\n }\r\n },\r\n // define gradient\r\n Defs: {\r\n gradient: wrapWithAttrCheck(function (type, block) {\r\n return this.put(new Gradient(type)).update(block)\r\n })\r\n }\r\n})\r\n\r\nregister(Gradient, 'Gradient')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Box from '../types/Box.js'\r\nimport Container from './Container.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class Pattern extends Container {\r\n // Initialize node\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('pattern', node), attrs)\r\n }\r\n\r\n // custom attr to handle transform\r\n attr (a, b, c) {\r\n if (a === 'transform') a = 'patternTransform'\r\n return super.attr(a, b, c)\r\n }\r\n\r\n bbox () {\r\n return new Box()\r\n }\r\n\r\n targets () {\r\n return baseFind('svg [fill*=\"' + this.id() + '\"]')\r\n }\r\n\r\n // Alias string conversion to fill\r\n toString () {\r\n return this.url()\r\n }\r\n\r\n // Update pattern by rebuilding\r\n update (block) {\r\n // remove content\r\n this.clear()\r\n\r\n // invoke passed block\r\n if (typeof block === 'function') {\r\n block.call(this, this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Return the fill id\r\n url () {\r\n return 'url(\"#' + this.id() + '\")'\r\n }\r\n\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create pattern element in defs\r\n pattern (...args) {\r\n return this.defs().pattern(...args)\r\n }\r\n },\r\n Defs: {\r\n pattern: wrapWithAttrCheck(function (width, height, block) {\r\n return this.put(new Pattern()).update(block).attr({\r\n x: 0,\r\n y: 0,\r\n width: width,\r\n height: height,\r\n patternUnits: 'userSpaceOnUse'\r\n })\r\n })\r\n }\r\n})\r\n\r\nregister(Pattern, 'Pattern')\r\n","import { isImage } from '../modules/core/regex.js'\r\nimport { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { off, on } from '../modules/core/event.js'\r\nimport { registerAttrHook } from '../modules/core/attr.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Pattern from './Pattern.js'\r\nimport Shape from './Shape.js'\r\nimport { globals } from '../utils/window.js'\r\n\r\nexport default class Image extends Shape {\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('image', node), attrs)\r\n }\r\n\r\n // (re)load image\r\n load (url, callback) {\r\n if (!url) return this\r\n\r\n const img = new globals.window.Image()\r\n\r\n on(img, 'load', function (e) {\r\n const p = this.parent(Pattern)\r\n\r\n // ensure image size\r\n if (this.width() === 0 && this.height() === 0) {\r\n this.size(img.width, img.height)\r\n }\r\n\r\n if (p instanceof Pattern) {\r\n // ensure pattern size if not set\r\n if (p.width() === 0 && p.height() === 0) {\r\n p.size(this.width(), this.height())\r\n }\r\n }\r\n\r\n if (typeof callback === 'function') {\r\n callback.call(this, e)\r\n }\r\n }, this)\r\n\r\n on(img, 'load error', function () {\r\n // dont forget to unbind memory leaking events\r\n off(img)\r\n })\r\n\r\n return this.attr('href', (img.src = url), xlink)\r\n }\r\n}\r\n\r\nregisterAttrHook(function (attr, val, _this) {\r\n // convert image fill and stroke to patterns\r\n if (attr === 'fill' || attr === 'stroke') {\r\n if (isImage.test(val)) {\r\n val = _this.root().defs().image(val)\r\n }\r\n }\r\n\r\n if (val instanceof Image) {\r\n val = _this.root().defs().pattern(0, 0, (pattern) => {\r\n pattern.add(val)\r\n })\r\n }\r\n\r\n return val\r\n})\r\n\r\nregisterMethods({\r\n Container: {\r\n // create image element, load image and set its size\r\n image: wrapWithAttrCheck(function (source, callback) {\r\n return this.put(new Image()).size(0, 0).load(source, callback)\r\n })\r\n }\r\n})\r\n\r\nregister(Image, 'Image')\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport SVGArray from './SVGArray.js'\r\nimport Box from './Box.js'\r\nimport Matrix from './Matrix.js'\r\n\r\nexport default class PointArray extends SVGArray {\r\n // Get bounding box of points\r\n bbox () {\r\n let maxX = -Infinity\r\n let maxY = -Infinity\r\n let minX = Infinity\r\n let minY = Infinity\r\n this.forEach(function (el) {\r\n maxX = Math.max(el[0], maxX)\r\n maxY = Math.max(el[1], maxY)\r\n minX = Math.min(el[0], minX)\r\n minY = Math.min(el[1], minY)\r\n })\r\n return new Box(minX, minY, maxX - minX, maxY - minY)\r\n }\r\n\r\n // Move point string\r\n move (x, y) {\r\n const box = this.bbox()\r\n\r\n // get relative offset\r\n x -= box.x\r\n y -= box.y\r\n\r\n // move every point\r\n if (!isNaN(x) && !isNaN(y)) {\r\n for (let i = this.length - 1; i >= 0; i--) {\r\n this[i] = [ this[i][0] + x, this[i][1] + y ]\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Parse point string and flat array\r\n parse (array = [ 0, 0 ]) {\r\n const points = []\r\n\r\n // if it is an array, we flatten it and therefore clone it to 1 depths\r\n if (array instanceof Array) {\r\n array = Array.prototype.concat.apply([], array)\r\n } else { // Else, it is considered as a string\r\n // parse points\r\n array = array.trim().split(delimiter).map(parseFloat)\r\n }\r\n\r\n // validate points - https://svgwg.org/svg2-draft/shapes.html#DataTypePoints\r\n // Odd number of coordinates is an error. In such cases, drop the last odd coordinate.\r\n if (array.length % 2 !== 0) array.pop()\r\n\r\n // wrap points in two-tuples\r\n for (let i = 0, len = array.length; i < len; i = i + 2) {\r\n points.push([ array[i], array[i + 1] ])\r\n }\r\n\r\n return points\r\n }\r\n\r\n // Resize poly string\r\n size (width, height) {\r\n let i\r\n const box = this.bbox()\r\n\r\n // recalculate position of all points according to new size\r\n for (i = this.length - 1; i >= 0; i--) {\r\n if (box.width) this[i][0] = ((this[i][0] - box.x) * width) / box.width + box.x\r\n if (box.height) this[i][1] = ((this[i][1] - box.y) * height) / box.height + box.y\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Convert array to line object\r\n toLine () {\r\n return {\r\n x1: this[0][0],\r\n y1: this[0][1],\r\n x2: this[1][0],\r\n y2: this[1][1]\r\n }\r\n }\r\n\r\n // Convert array to string\r\n toString () {\r\n const array = []\r\n // convert to a poly point string\r\n for (let i = 0, il = this.length; i < il; i++) {\r\n array.push(this[i].join(','))\r\n }\r\n\r\n return array.join(' ')\r\n }\r\n\r\n transform (m) {\r\n return this.clone().transformO(m)\r\n }\r\n\r\n // transform points with matrix (similar to Point.transform)\r\n transformO (m) {\r\n if (!Matrix.isMatrixLike(m)) {\r\n m = new Matrix(m)\r\n }\r\n\r\n for (let i = this.length; i--;) {\r\n // Perform the matrix multiplication\r\n const [ x, y ] = this[i]\r\n this[i][0] = m.a * x + m.c * y + m.e\r\n this[i][1] = m.b * x + m.d * y + m.f\r\n }\r\n\r\n return this\r\n }\r\n\r\n}\r\n","import PointArray from '../../types/PointArray.js'\r\n\r\nexport const MorphArray = PointArray\r\n\r\n// Move by left top corner over x-axis\r\nexport function x (x) {\r\n return x == null ? this.bbox().x : this.move(x, this.bbox().y)\r\n}\r\n\r\n// Move by left top corner over y-axis\r\nexport function y (y) {\r\n return y == null ? this.bbox().y : this.move(this.bbox().x, y)\r\n}\r\n\r\n// Set width of element\r\nexport function width (width) {\r\n const b = this.bbox()\r\n return width == null ? b.width : this.size(width, b.height)\r\n}\r\n\r\n// Set height of element\r\nexport function height (height) {\r\n const b = this.bbox()\r\n return height == null ? b.height : this.size(b.width, height)\r\n}\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PointArray from '../types/PointArray.js'\r\nimport Shape from './Shape.js'\r\nimport * as pointed from '../modules/core/pointed.js'\r\n\r\nexport default class Line extends Shape {\r\n // Initialize node\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('line', node), attrs)\r\n }\r\n\r\n // Get array\r\n array () {\r\n return new PointArray([\r\n [ this.attr('x1'), this.attr('y1') ],\r\n [ this.attr('x2'), this.attr('y2') ]\r\n ])\r\n }\r\n\r\n // Move by left top corner\r\n move (x, y) {\r\n return this.attr(this.array().move(x, y).toLine())\r\n }\r\n\r\n // Overwrite native plot() method\r\n plot (x1, y1, x2, y2) {\r\n if (x1 == null) {\r\n return this.array()\r\n } else if (typeof y1 !== 'undefined') {\r\n x1 = { x1, y1, x2, y2 }\r\n } else {\r\n x1 = new PointArray(x1).toLine()\r\n }\r\n\r\n return this.attr(x1)\r\n }\r\n\r\n // Set element size to given width and height\r\n size (width, height) {\r\n const p = proportionalSize(this, width, height)\r\n return this.attr(this.array().size(p.width, p.height).toLine())\r\n }\r\n}\r\n\r\nextend(Line, pointed)\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a line element\r\n line: wrapWithAttrCheck(function (...args) {\r\n // make sure plot is called as a setter\r\n // x1 is not necessarily a number, it can also be an array, a string and a PointArray\r\n return Line.prototype.plot.apply(\r\n this.put(new Line())\r\n , args[0] != null ? args : [ 0, 0, 0, 0 ]\r\n )\r\n })\r\n }\r\n})\r\n\r\nregister(Line, 'Line')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class Marker extends Container {\r\n // Initialize node\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('marker', node), attrs)\r\n }\r\n\r\n // Set height of element\n height (height) {\r\n return this.attr('markerHeight', height)\r\n }\n\n orient (orient) {\r\n return this.attr('orient', orient)\r\n }\n\n // Set marker refX and refY\n ref (x, y) {\r\n return this.attr('refX', x).attr('refY', y)\r\n }\n\n // Return the fill id\n toString () {\r\n return 'url(#' + this.id() + ')'\r\n }\n\n // Update marker\n update (block) {\r\n // remove all content\r\n this.clear()\r\n\r\n // invoke passed block\r\n if (typeof block === 'function') {\r\n block.call(this, this)\r\n }\r\n\r\n return this\r\n }\n\n // Set width of element\r\n width (width) {\r\n return this.attr('markerWidth', width)\r\n }\r\n\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n marker (...args) {\r\n // Create marker element in defs\r\n return this.defs().marker(...args)\r\n }\r\n },\r\n Defs: {\r\n // Create marker\r\n marker: wrapWithAttrCheck(function (width, height, block) {\r\n // Set default viewbox to match the width and height, set ref to cx and cy and set orient to auto\r\n return this.put(new Marker())\r\n .size(width, height)\r\n .ref(width / 2, height / 2)\r\n .viewbox(0, 0, width, height)\r\n .attr('orient', 'auto')\r\n .update(block)\r\n })\r\n },\r\n marker: {\r\n // Create and attach markers\r\n marker (marker, width, height, block) {\r\n let attr = [ 'marker' ]\r\n\r\n // Build attribute name\r\n if (marker !== 'all') attr.push(marker)\r\n attr = attr.join('-')\r\n\r\n // Set marker attribute\r\n marker = arguments[1] instanceof Marker\r\n ? arguments[1]\r\n : this.defs().marker(width, height, block)\r\n\r\n return this.attr(attr, marker)\r\n }\r\n }\r\n})\r\n\r\nregister(Marker, 'Marker')\r\n","import { timeline } from '../modules/core/defaults.js'\r\nimport { extend } from '../utils/adopter.js'\r\n\r\n/***\r\nBase Class\r\n==========\r\nThe base stepper class that will be\r\n***/\r\n\r\nfunction makeSetterGetter (k, f) {\r\n return function (v) {\r\n if (v == null) return this[k]\r\n this[k] = v\r\n if (f) f.call(this)\r\n return this\r\n }\r\n}\r\n\r\nexport const easing = {\r\n '-': function (pos) {\r\n return pos\r\n },\r\n '<>': function (pos) {\r\n return -Math.cos(pos * Math.PI) / 2 + 0.5\r\n },\r\n '>': function (pos) {\r\n return Math.sin(pos * Math.PI / 2)\r\n },\r\n '<': function (pos) {\r\n return -Math.cos(pos * Math.PI / 2) + 1\r\n },\r\n bezier: function (x1, y1, x2, y2) {\r\n // see https://www.w3.org/TR/css-easing-1/#cubic-bezier-algo\r\n return function (t) {\r\n if (t < 0) {\r\n if (x1 > 0) {\r\n return y1 / x1 * t\r\n } else if (x2 > 0) {\r\n return y2 / x2 * t\r\n } else {\r\n return 0\r\n }\r\n } else if (t > 1) {\r\n if (x2 < 1) {\r\n return (1 - y2) / (1 - x2) * t + (y2 - x2) / (1 - x2)\r\n } else if (x1 < 1) {\r\n return (1 - y1) / (1 - x1) * t + (y1 - x1) / (1 - x1)\r\n } else {\r\n return 1\r\n }\r\n } else {\r\n return 3 * t * (1 - t) ** 2 * y1 + 3 * t ** 2 * (1 - t) * y2 + t ** 3\r\n }\r\n }\r\n },\r\n // see https://www.w3.org/TR/css-easing-1/#step-timing-function-algo\r\n steps: function (steps, stepPosition = 'end') {\r\n // deal with \"jump-\" prefix\r\n stepPosition = stepPosition.split('-').reverse()[0]\r\n\r\n let jumps = steps\r\n if (stepPosition === 'none') {\r\n --jumps\r\n } else if (stepPosition === 'both') {\r\n ++jumps\r\n }\r\n\r\n // The beforeFlag is essentially useless\r\n return (t, beforeFlag = false) => {\r\n // Step is called currentStep in referenced url\r\n let step = Math.floor(t * steps)\r\n const jumping = (t * step) % 1 === 0\r\n\r\n if (stepPosition === 'start' || stepPosition === 'both') {\r\n ++step\r\n }\r\n\r\n if (beforeFlag && jumping) {\r\n --step\r\n }\r\n\r\n if (t >= 0 && step < 0) {\r\n step = 0\r\n }\r\n\r\n if (t <= 1 && step > jumps) {\r\n step = jumps\r\n }\r\n\r\n return step / jumps\r\n }\r\n }\r\n}\r\n\r\nexport class Stepper {\r\n done () {\r\n return false\r\n }\r\n}\r\n\r\n/***\r\nEasing Functions\r\n================\r\n***/\r\n\r\nexport class Ease extends Stepper {\r\n constructor (fn = timeline.ease) {\r\n super()\r\n this.ease = easing[fn] || fn\r\n }\r\n\r\n step (from, to, pos) {\r\n if (typeof from !== 'number') {\r\n return pos < 1 ? from : to\r\n }\r\n return from + (to - from) * this.ease(pos)\r\n }\r\n}\r\n\r\n/***\r\nController Types\r\n================\r\n***/\r\n\r\nexport class Controller extends Stepper {\r\n constructor (fn) {\r\n super()\r\n this.stepper = fn\r\n }\r\n\r\n done (c) {\r\n return c.done\r\n }\n\n step (current, target, dt, c) {\r\n return this.stepper(current, target, dt, c)\r\n }\r\n\r\n}\r\n\r\nfunction recalculate () {\r\n // Apply the default parameters\r\n const duration = (this._duration || 500) / 1000\r\n const overshoot = this._overshoot || 0\r\n\r\n // Calculate the PID natural response\r\n const eps = 1e-10\r\n const pi = Math.PI\r\n const os = Math.log(overshoot / 100 + eps)\r\n const zeta = -os / Math.sqrt(pi * pi + os * os)\r\n const wn = 3.9 / (zeta * duration)\r\n\r\n // Calculate the Spring values\r\n this.d = 2 * zeta * wn\r\n this.k = wn * wn\r\n}\r\n\r\nexport class Spring extends Controller {\r\n constructor (duration = 500, overshoot = 0) {\r\n super()\r\n this.duration(duration)\r\n .overshoot(overshoot)\r\n }\r\n\r\n step (current, target, dt, c) {\r\n if (typeof current === 'string') return current\r\n c.done = dt === Infinity\r\n if (dt === Infinity) return target\r\n if (dt === 0) return current\r\n\r\n if (dt > 100) dt = 16\r\n\r\n dt /= 1000\r\n\r\n // Get the previous velocity\r\n const velocity = c.velocity || 0\r\n\r\n // Apply the control to get the new position and store it\r\n const acceleration = -this.d * velocity - this.k * (current - target)\r\n const newPosition = current\r\n + velocity * dt\r\n + acceleration * dt * dt / 2\r\n\r\n // Store the velocity\r\n c.velocity = velocity + acceleration * dt\r\n\r\n // Figure out if we have converged, and if so, pass the value\r\n c.done = Math.abs(target - newPosition) + Math.abs(velocity) < 0.002\r\n return c.done ? target : newPosition\r\n }\r\n}\r\n\r\nextend(Spring, {\r\n duration: makeSetterGetter('_duration', recalculate),\r\n overshoot: makeSetterGetter('_overshoot', recalculate)\r\n})\r\n\r\nexport class PID extends Controller {\r\n constructor (p = 0.1, i = 0.01, d = 0, windup = 1000) {\r\n super()\r\n this.p(p).i(i).d(d).windup(windup)\r\n }\r\n\r\n step (current, target, dt, c) {\r\n if (typeof current === 'string') return current\r\n c.done = dt === Infinity\r\n\r\n if (dt === Infinity) return target\r\n if (dt === 0) return current\r\n\r\n const p = target - current\r\n let i = (c.integral || 0) + p * dt\r\n const d = (p - (c.error || 0)) / dt\r\n const windup = this._windup\r\n\r\n // antiwindup\r\n if (windup !== false) {\r\n i = Math.max(-windup, Math.min(i, windup))\r\n }\r\n\r\n c.error = p\r\n c.integral = i\r\n\r\n c.done = Math.abs(p) < 0.001\r\n\r\n return c.done ? target : current + (this.P * p + this.I * i + this.D * d)\r\n }\r\n}\r\n\r\nextend(PID, {\r\n windup: makeSetterGetter('_windup'),\r\n p: makeSetterGetter('P'),\r\n i: makeSetterGetter('I'),\r\n d: makeSetterGetter('D')\r\n})\r\n","import { isPathLetter } from '../modules/core/regex.js'\r\nimport Point from '../types/Point.js'\r\n\r\nconst segmentParameters = { M: 2, L: 2, H: 1, V: 1, C: 6, S: 4, Q: 4, T: 2, A: 7, Z: 0 }\r\n\r\nconst pathHandlers = {\r\n M: function (c, p, p0) {\r\n p.x = p0.x = c[0]\r\n p.y = p0.y = c[1]\r\n\r\n return [ 'M', p.x, p.y ]\r\n },\r\n L: function (c, p) {\r\n p.x = c[0]\r\n p.y = c[1]\r\n return [ 'L', c[0], c[1] ]\r\n },\r\n H: function (c, p) {\r\n p.x = c[0]\r\n return [ 'H', c[0] ]\r\n },\r\n V: function (c, p) {\r\n p.y = c[0]\r\n return [ 'V', c[0] ]\r\n },\r\n C: function (c, p) {\r\n p.x = c[4]\r\n p.y = c[5]\r\n return [ 'C', c[0], c[1], c[2], c[3], c[4], c[5] ]\r\n },\r\n S: function (c, p) {\r\n p.x = c[2]\r\n p.y = c[3]\r\n return [ 'S', c[0], c[1], c[2], c[3] ]\r\n },\r\n Q: function (c, p) {\r\n p.x = c[2]\r\n p.y = c[3]\r\n return [ 'Q', c[0], c[1], c[2], c[3] ]\r\n },\r\n T: function (c, p) {\r\n p.x = c[0]\r\n p.y = c[1]\r\n return [ 'T', c[0], c[1] ]\r\n },\r\n Z: function (c, p, p0) {\r\n p.x = p0.x\r\n p.y = p0.y\r\n return [ 'Z' ]\r\n },\r\n A: function (c, p) {\r\n p.x = c[5]\r\n p.y = c[6]\r\n return [ 'A', c[0], c[1], c[2], c[3], c[4], c[5], c[6] ]\r\n }\r\n}\r\n\r\nconst mlhvqtcsaz = 'mlhvqtcsaz'.split('')\r\n\r\nfor (let i = 0, il = mlhvqtcsaz.length; i < il; ++i) {\r\n pathHandlers[mlhvqtcsaz[i]] = (function (i) {\r\n return function (c, p, p0) {\r\n if (i === 'H') c[0] = c[0] + p.x\r\n else if (i === 'V') c[0] = c[0] + p.y\r\n else if (i === 'A') {\r\n c[5] = c[5] + p.x\r\n c[6] = c[6] + p.y\r\n } else {\r\n for (let j = 0, jl = c.length; j < jl; ++j) {\r\n c[j] = c[j] + (j % 2 ? p.y : p.x)\r\n }\r\n }\r\n\r\n return pathHandlers[i](c, p, p0)\r\n }\r\n })(mlhvqtcsaz[i].toUpperCase())\r\n}\r\n\r\nfunction makeAbsolut (parser) {\r\n const command = parser.segment[0]\r\n return pathHandlers[command](parser.segment.slice(1), parser.p, parser.p0)\r\n}\r\n\r\nfunction segmentComplete (parser) {\r\n return parser.segment.length && parser.segment.length - 1 === segmentParameters[parser.segment[0].toUpperCase()]\r\n}\r\n\r\nfunction startNewSegment (parser, token) {\r\n parser.inNumber && finalizeNumber(parser, false)\r\n const pathLetter = isPathLetter.test(token)\r\n\r\n if (pathLetter) {\r\n parser.segment = [ token ]\r\n } else {\r\n const lastCommand = parser.lastCommand\r\n const small = lastCommand.toLowerCase()\r\n const isSmall = lastCommand === small\r\n parser.segment = [ small === 'm' ? (isSmall ? 'l' : 'L') : lastCommand ]\r\n }\r\n\r\n parser.inSegment = true\r\n parser.lastCommand = parser.segment[0]\r\n\r\n return pathLetter\r\n}\r\n\r\nfunction finalizeNumber (parser, inNumber) {\r\n if (!parser.inNumber) throw new Error('Parser Error')\r\n parser.number && parser.segment.push(parseFloat(parser.number))\r\n parser.inNumber = inNumber\r\n parser.number = ''\r\n parser.pointSeen = false\r\n parser.hasExponent = false\r\n\r\n if (segmentComplete(parser)) {\r\n finalizeSegment(parser)\r\n }\r\n}\r\n\r\nfunction finalizeSegment (parser) {\r\n parser.inSegment = false\r\n if (parser.absolute) {\r\n parser.segment = makeAbsolut(parser)\r\n }\r\n parser.segments.push(parser.segment)\r\n}\r\n\r\nfunction isArcFlag (parser) {\r\n if (!parser.segment.length) return false\r\n const isArc = parser.segment[0].toUpperCase() === 'A'\r\n const length = parser.segment.length\r\n\r\n return isArc && (length === 4 || length === 5)\r\n}\r\n\r\nfunction isExponential (parser) {\r\n return parser.lastToken.toUpperCase() === 'E'\r\n}\r\n\r\nexport function pathParser (d, toAbsolute = true) {\r\n\r\n let index = 0\r\n let token = ''\r\n const parser = {\r\n segment: [],\r\n inNumber: false,\r\n number: '',\r\n lastToken: '',\r\n inSegment: false,\r\n segments: [],\r\n pointSeen: false,\r\n hasExponent: false,\r\n absolute: toAbsolute,\r\n p0: new Point(),\r\n p: new Point()\r\n }\r\n\r\n while ((parser.lastToken = token, token = d.charAt(index++))) {\r\n if (!parser.inSegment) {\r\n if (startNewSegment(parser, token)) {\r\n continue\r\n }\r\n }\r\n\r\n if (token === '.') {\r\n if (parser.pointSeen || parser.hasExponent) {\r\n finalizeNumber(parser, false)\r\n --index\r\n continue\r\n }\r\n parser.inNumber = true\r\n parser.pointSeen = true\r\n parser.number += token\r\n continue\r\n }\r\n\r\n if (!isNaN(parseInt(token))) {\r\n\r\n if (parser.number === '0' || isArcFlag(parser)) {\r\n parser.inNumber = true\r\n parser.number = token\r\n finalizeNumber(parser, true)\r\n continue\r\n }\r\n\r\n parser.inNumber = true\r\n parser.number += token\r\n continue\r\n }\r\n\r\n if (token === ' ' || token === ',') {\r\n if (parser.inNumber) {\r\n finalizeNumber(parser, false)\r\n }\r\n continue\r\n }\r\n\r\n if (token === '-') {\r\n if (parser.inNumber && !isExponential(parser)) {\r\n finalizeNumber(parser, false)\r\n --index\r\n continue\r\n }\r\n parser.number += token\r\n parser.inNumber = true\r\n continue\r\n }\r\n\r\n if (token.toUpperCase() === 'E') {\r\n parser.number += token\r\n parser.hasExponent = true\r\n continue\r\n }\r\n\r\n if (isPathLetter.test(token)) {\r\n if (parser.inNumber) {\r\n finalizeNumber(parser, false)\r\n } else if (!segmentComplete(parser)) {\r\n throw new Error('parser Error')\r\n } else {\r\n finalizeSegment(parser)\r\n }\r\n --index\r\n }\r\n }\r\n\r\n if (parser.inNumber) {\r\n finalizeNumber(parser, false)\r\n }\r\n\r\n if (parser.inSegment && segmentComplete(parser)) {\r\n finalizeSegment(parser)\r\n }\r\n\r\n return parser.segments\r\n\r\n}\r\n","import SVGArray from './SVGArray.js'\r\nimport parser from '../modules/core/parser.js'\r\nimport Box from './Box.js'\r\nimport { pathParser } from '../utils/pathParser.js'\r\n\r\nfunction arrayToString (a) {\r\n let s = ''\r\n for (let i = 0, il = a.length; i < il; i++) {\r\n s += a[i][0]\r\n\r\n if (a[i][1] != null) {\r\n s += a[i][1]\r\n\r\n if (a[i][2] != null) {\r\n s += ' '\r\n s += a[i][2]\r\n\r\n if (a[i][3] != null) {\r\n s += ' '\r\n s += a[i][3]\r\n s += ' '\r\n s += a[i][4]\r\n\r\n if (a[i][5] != null) {\r\n s += ' '\r\n s += a[i][5]\r\n s += ' '\r\n s += a[i][6]\r\n\r\n if (a[i][7] != null) {\r\n s += ' '\r\n s += a[i][7]\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return s + ' '\r\n}\r\n\r\nexport default class PathArray extends SVGArray {\r\n // Get bounding box of path\r\n bbox () {\r\n parser().path.setAttribute('d', this.toString())\r\n return new Box(parser.nodes.path.getBBox())\r\n }\r\n\r\n // Move path string\r\n move (x, y) {\r\n // get bounding box of current situation\r\n const box = this.bbox()\r\n\r\n // get relative offset\r\n x -= box.x\r\n y -= box.y\r\n\r\n if (!isNaN(x) && !isNaN(y)) {\r\n // move every point\r\n for (let l, i = this.length - 1; i >= 0; i--) {\r\n l = this[i][0]\r\n\r\n if (l === 'M' || l === 'L' || l === 'T') {\r\n this[i][1] += x\r\n this[i][2] += y\r\n } else if (l === 'H') {\r\n this[i][1] += x\r\n } else if (l === 'V') {\r\n this[i][1] += y\r\n } else if (l === 'C' || l === 'S' || l === 'Q') {\r\n this[i][1] += x\r\n this[i][2] += y\r\n this[i][3] += x\r\n this[i][4] += y\r\n\r\n if (l === 'C') {\r\n this[i][5] += x\r\n this[i][6] += y\r\n }\r\n } else if (l === 'A') {\r\n this[i][6] += x\r\n this[i][7] += y\r\n }\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Absolutize and parse path to array\r\n parse (d = 'M0 0') {\r\n if (Array.isArray(d)) {\r\n d = Array.prototype.concat.apply([], d).toString()\r\n }\r\n\r\n return pathParser(d)\r\n }\r\n\r\n // Resize path string\r\n size (width, height) {\r\n // get bounding box of current situation\r\n const box = this.bbox()\r\n let i, l\r\n\r\n // If the box width or height is 0 then we ignore\r\n // transformations on the respective axis\r\n box.width = box.width === 0 ? 1 : box.width\r\n box.height = box.height === 0 ? 1 : box.height\r\n\r\n // recalculate position of all points according to new size\r\n for (i = this.length - 1; i >= 0; i--) {\r\n l = this[i][0]\r\n\r\n if (l === 'M' || l === 'L' || l === 'T') {\r\n this[i][1] = ((this[i][1] - box.x) * width) / box.width + box.x\r\n this[i][2] = ((this[i][2] - box.y) * height) / box.height + box.y\r\n } else if (l === 'H') {\r\n this[i][1] = ((this[i][1] - box.x) * width) / box.width + box.x\r\n } else if (l === 'V') {\r\n this[i][1] = ((this[i][1] - box.y) * height) / box.height + box.y\r\n } else if (l === 'C' || l === 'S' || l === 'Q') {\r\n this[i][1] = ((this[i][1] - box.x) * width) / box.width + box.x\r\n this[i][2] = ((this[i][2] - box.y) * height) / box.height + box.y\r\n this[i][3] = ((this[i][3] - box.x) * width) / box.width + box.x\r\n this[i][4] = ((this[i][4] - box.y) * height) / box.height + box.y\r\n\r\n if (l === 'C') {\r\n this[i][5] = ((this[i][5] - box.x) * width) / box.width + box.x\r\n this[i][6] = ((this[i][6] - box.y) * height) / box.height + box.y\r\n }\r\n } else if (l === 'A') {\r\n // resize radii\r\n this[i][1] = (this[i][1] * width) / box.width\r\n this[i][2] = (this[i][2] * height) / box.height\r\n\r\n // move position values\r\n this[i][6] = ((this[i][6] - box.x) * width) / box.width + box.x\r\n this[i][7] = ((this[i][7] - box.y) * height) / box.height + box.y\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Convert array to string\r\n toString () {\r\n return arrayToString(this)\r\n }\r\n\r\n}\r\n","import { Ease } from './Controller.js'\r\nimport {\r\n delimiter,\r\n numberAndUnit,\r\n isPathLetter\r\n} from '../modules/core/regex.js'\r\nimport { extend } from '../utils/adopter.js'\r\nimport Color from '../types/Color.js'\r\nimport PathArray from '../types/PathArray.js'\r\nimport SVGArray from '../types/SVGArray.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\n\r\nconst getClassForType = (value) => {\r\n const type = typeof value\r\n\r\n if (type === 'number') {\r\n return SVGNumber\r\n } else if (type === 'string') {\r\n if (Color.isColor(value)) {\r\n return Color\r\n } else if (delimiter.test(value)) {\r\n return isPathLetter.test(value)\r\n ? PathArray\r\n : SVGArray\r\n } else if (numberAndUnit.test(value)) {\r\n return SVGNumber\r\n } else {\r\n return NonMorphable\r\n }\r\n } else if (morphableTypes.indexOf(value.constructor) > -1) {\r\n return value.constructor\r\n } else if (Array.isArray(value)) {\r\n return SVGArray\r\n } else if (type === 'object') {\r\n return ObjectBag\r\n } else {\r\n return NonMorphable\r\n }\r\n}\r\n\r\nexport default class Morphable {\r\n constructor (stepper) {\r\n this._stepper = stepper || new Ease('-')\r\n\r\n this._from = null\r\n this._to = null\r\n this._type = null\r\n this._context = null\r\n this._morphObj = null\r\n }\r\n\r\n at (pos) {\r\n const _this = this\r\n\r\n return this._morphObj.fromArray(\r\n this._from.map(function (i, index) {\r\n return _this._stepper.step(i, _this._to[index], pos, _this._context[index], _this._context)\r\n })\r\n )\r\n }\r\n\r\n done () {\r\n const complete = this._context\r\n .map(this._stepper.done)\r\n .reduce(function (last, curr) {\r\n return last && curr\r\n }, true)\r\n return complete\r\n }\r\n\r\n from (val) {\r\n if (val == null) {\r\n return this._from\r\n }\r\n\r\n this._from = this._set(val)\r\n return this\r\n }\r\n\r\n stepper (stepper) {\r\n if (stepper == null) return this._stepper\r\n this._stepper = stepper\r\n return this\r\n }\r\n\r\n to (val) {\r\n if (val == null) {\r\n return this._to\r\n }\r\n\r\n this._to = this._set(val)\r\n return this\r\n }\r\n\r\n type (type) {\r\n // getter\r\n if (type == null) {\r\n return this._type\r\n }\r\n\r\n // setter\r\n this._type = type\r\n return this\r\n }\r\n\r\n _set (value) {\r\n if (!this._type) {\r\n this.type(getClassForType(value))\r\n }\r\n\r\n let result = (new this._type(value))\r\n if (this._type === Color) {\r\n result = this._to\n ? result[this._to[4]]()\r\n : this._from\n ? result[this._from[4]]()\r\n : result\r\n }\r\n\r\n if (this._type === ObjectBag) {\r\n result = this._to\n ? result.align(this._to)\r\n : this._from\n ? result.align(this._from)\r\n : result\r\n }\r\n\r\n result = result.toArray()\r\n\r\n this._morphObj = this._morphObj || new this._type()\r\n this._context = this._context\r\n || Array.apply(null, Array(result.length))\r\n .map(Object)\r\n .map(function (o) {\r\n o.done = true\r\n return o\r\n })\r\n return result\r\n }\r\n\r\n}\r\n\r\nexport class NonMorphable {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (val) {\r\n val = Array.isArray(val) ? val[0] : val\r\n this.value = val\r\n return this\r\n }\r\n\r\n toArray () {\r\n return [ this.value ]\r\n }\r\n\r\n valueOf () {\r\n return this.value\r\n }\r\n\r\n}\r\n\r\nexport class TransformBag {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (obj) {\r\n if (Array.isArray(obj)) {\r\n obj = {\r\n scaleX: obj[0],\r\n scaleY: obj[1],\r\n shear: obj[2],\r\n rotate: obj[3],\r\n translateX: obj[4],\r\n translateY: obj[5],\r\n originX: obj[6],\r\n originY: obj[7]\r\n }\r\n }\r\n\r\n Object.assign(this, TransformBag.defaults, obj)\r\n return this\r\n }\r\n\r\n toArray () {\r\n const v = this\r\n\r\n return [\r\n v.scaleX,\r\n v.scaleY,\r\n v.shear,\r\n v.rotate,\r\n v.translateX,\r\n v.translateY,\r\n v.originX,\r\n v.originY\r\n ]\r\n }\r\n}\r\n\r\nTransformBag.defaults = {\r\n scaleX: 1,\r\n scaleY: 1,\r\n shear: 0,\r\n rotate: 0,\r\n translateX: 0,\r\n translateY: 0,\r\n originX: 0,\r\n originY: 0\r\n}\r\n\r\nconst sortByKey = (a, b) => {\r\n return (a[0] < b[0] ? -1 : (a[0] > b[0] ? 1 : 0))\r\n}\r\n\r\nexport class ObjectBag {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n align (other) {\r\n for (let i = 0, il = this.values.length; i < il; ++i) {\r\n if (this.values[i] === Color) {\r\n const space = other[i + 6]\r\n const color = new Color(this.values.splice(i + 2, 5))[space]().toArray()\r\n this.values.splice(i + 2, 0, ...color)\r\n }\r\n }\r\n return this\r\n }\r\n\r\n init (objOrArr) {\r\n this.values = []\r\n\r\n if (Array.isArray(objOrArr)) {\r\n this.values = objOrArr.slice()\r\n return\r\n }\r\n\r\n objOrArr = objOrArr || {}\r\n const entries = []\r\n\r\n for (const i in objOrArr) {\r\n const Type = getClassForType(objOrArr[i])\r\n const val = new Type(objOrArr[i]).toArray()\r\n entries.push([ i, Type, val.length, ...val ])\r\n }\r\n\r\n entries.sort(sortByKey)\r\n\r\n this.values = entries.reduce((last, curr) => last.concat(curr), [])\r\n return this\r\n }\r\n\r\n toArray () {\r\n return this.values\r\n }\r\n\r\n valueOf () {\r\n const obj = {}\r\n const arr = this.values\r\n\r\n // for (var i = 0, len = arr.length; i < len; i += 2) {\r\n while (arr.length) {\r\n const key = arr.shift()\r\n const Type = arr.shift()\r\n const num = arr.shift()\r\n const values = arr.splice(0, num)\r\n obj[key] = new Type(values).valueOf()\r\n }\r\n\r\n return obj\r\n }\r\n\r\n}\r\n\r\nconst morphableTypes = [\r\n NonMorphable,\r\n TransformBag,\r\n ObjectBag\r\n]\r\n\r\nexport function registerMorphableType (type = []) {\r\n morphableTypes.push(...[].concat(type))\r\n}\r\n\r\nexport function makeMorphable () {\r\n extend(morphableTypes, {\r\n to (val) {\r\n return new Morphable()\r\n .type(this.constructor)\r\n .from(this.valueOf())\r\n .to(val)\r\n },\r\n fromArray (arr) {\r\n this.init(arr)\r\n return this\r\n }\r\n })\r\n}\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PathArray from '../types/PathArray.js'\r\nimport Shape from './Shape.js'\r\n\r\nexport default class Path extends Shape {\r\n // Initialize node\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('path', node), attrs)\r\n }\r\n\r\n // Get array\r\n array () {\r\n return this._array || (this._array = new PathArray(this.attr('d')))\r\n }\r\n\r\n // Clear array cache\r\n clear () {\r\n delete this._array\r\n return this\r\n }\r\n\r\n // Set height of element\r\n height (height) {\r\n return height == null ? this.bbox().height : this.size(this.bbox().width, height)\r\n }\r\n\r\n // Move by left top corner\r\n move (x, y) {\r\n return this.attr('d', this.array().move(x, y))\r\n }\r\n\r\n // Plot new path\r\n plot (d) {\r\n return (d == null)\n ? this.array()\r\n : this.clear().attr('d', typeof d === 'string' ? d : (this._array = new PathArray(d)))\r\n }\r\n\r\n // Set element size to given width and height\r\n size (width, height) {\r\n const p = proportionalSize(this, width, height)\r\n return this.attr('d', this.array().size(p.width, p.height))\r\n }\r\n\r\n // Set width of element\r\n width (width) {\r\n return width == null ? this.bbox().width : this.size(width, this.bbox().height)\r\n }\r\n\r\n // Move by left top corner over x-axis\r\n x (x) {\r\n return x == null ? this.bbox().x : this.move(x, this.bbox().y)\r\n }\r\n\r\n // Move by left top corner over y-axis\r\n y (y) {\r\n return y == null ? this.bbox().y : this.move(this.bbox().x, y)\r\n }\r\n\r\n}\r\n\r\n// Define morphable array\r\nPath.prototype.MorphArray = PathArray\r\n\r\n// Add parent method\r\nregisterMethods({\r\n Container: {\r\n // Create a wrapped path element\r\n path: wrapWithAttrCheck(function (d) {\r\n // make sure plot is called as a setter\r\n return this.put(new Path()).plot(d || new PathArray())\r\n })\r\n }\r\n})\r\n\r\nregister(Path, 'Path')\r\n","import { proportionalSize } from '../../utils/utils.js'\r\nimport PointArray from '../../types/PointArray.js'\r\n\r\n// Get array\r\nexport function array () {\r\n return this._array || (this._array = new PointArray(this.attr('points')))\r\n}\r\n\r\n// Clear array cache\r\nexport function clear () {\r\n delete this._array\r\n return this\r\n}\r\n\r\n// Move by left top corner\r\nexport function move (x, y) {\r\n return this.attr('points', this.array().move(x, y))\r\n}\r\n\r\n// Plot new path\r\nexport function plot (p) {\r\n return (p == null)\n ? this.array()\r\n : this.clear().attr('points', typeof p === 'string'\n ? p\r\n : (this._array = new PointArray(p)))\r\n}\r\n\r\n// Set element size to given width and height\r\nexport function size (width, height) {\r\n const p = proportionalSize(this, width, height)\r\n return this.attr('points', this.array().size(p.width, p.height))\r\n}\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PointArray from '../types/PointArray.js'\r\nimport Shape from './Shape.js'\r\nimport * as pointed from '../modules/core/pointed.js'\r\nimport * as poly from '../modules/core/poly.js'\r\n\r\nexport default class Polygon extends Shape {\r\n // Initialize node\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('polygon', node), attrs)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a wrapped polygon element\r\n polygon: wrapWithAttrCheck(function (p) {\r\n // make sure plot is called as a setter\r\n return this.put(new Polygon()).plot(p || new PointArray())\r\n })\r\n }\r\n})\r\n\r\nextend(Polygon, pointed)\r\nextend(Polygon, poly)\r\nregister(Polygon, 'Polygon')\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PointArray from '../types/PointArray.js'\r\nimport Shape from './Shape.js'\r\nimport * as pointed from '../modules/core/pointed.js'\r\nimport * as poly from '../modules/core/poly.js'\r\n\r\nexport default class Polyline extends Shape {\r\n // Initialize node\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('polyline', node), attrs)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a wrapped polygon element\r\n polyline: wrapWithAttrCheck(function (p) {\r\n // make sure plot is called as a setter\r\n return this.put(new Polyline()).plot(p || new PointArray())\r\n })\r\n }\r\n})\r\n\r\nextend(Polyline, pointed)\r\nextend(Polyline, poly)\r\nregister(Polyline, 'Polyline')\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { rx, ry } from '../modules/core/circled.js'\r\nimport Shape from './Shape.js'\r\n\r\nexport default class Rect extends Shape {\r\n // Initialize node\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('rect', node), attrs)\r\n }\r\n}\r\n\r\nextend(Rect, { rx, ry })\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a rect element\r\n rect: wrapWithAttrCheck(function (width, height) {\r\n return this.put(new Rect()).size(width, height)\r\n })\r\n }\r\n})\r\n\r\nregister(Rect, 'Rect')\r\n","export default class Queue {\r\n constructor () {\r\n this._first = null\r\n this._last = null\r\n }\r\n\r\n // Shows us the first item in the list\n first () {\r\n return this._first && this._first.value\r\n }\n\n // Shows us the last item in the list\n last () {\r\n return this._last && this._last.value\r\n }\n\n push (value) {\r\n // An item stores an id and the provided value\r\n const item = typeof value.next !== 'undefined' ? value : { value: value, next: null, prev: null }\r\n\r\n // Deal with the queue being empty or populated\r\n if (this._last) {\r\n item.prev = this._last\r\n this._last.next = item\r\n this._last = item\r\n } else {\r\n this._last = item\r\n this._first = item\r\n }\r\n\r\n // Return the current item\r\n return item\r\n }\r\n\n // Removes the item that was returned from the push\n remove (item) {\r\n // Relink the previous item\r\n if (item.prev) item.prev.next = item.next\r\n if (item.next) item.next.prev = item.prev\r\n if (item === this._last) this._last = item.prev\r\n if (item === this._first) this._first = item.next\r\n\r\n // Invalidate item\r\n item.prev = null\r\n item.next = null\r\n }\n\n shift () {\r\n // Check if we have a value\r\n const remove = this._first\r\n if (!remove) return null\r\n\r\n // If we do, remove it and relink things\r\n this._first = remove.next\r\n if (this._first) this._first.prev = null\r\n this._last = this._first ? this._last : null\r\n return remove.value\r\n }\r\n\r\n}\r\n","import { globals } from '../utils/window.js'\r\nimport Queue from './Queue.js'\r\n\r\nconst Animator = {\r\n nextDraw: null,\r\n frames: new Queue(),\r\n timeouts: new Queue(),\r\n immediates: new Queue(),\r\n timer: () => globals.window.performance || globals.window.Date,\r\n transforms: [],\r\n\r\n frame (fn) {\r\n // Store the node\r\n const node = Animator.frames.push({ run: fn })\r\n\r\n // Request an animation frame if we don't have one\r\n if (Animator.nextDraw === null) {\r\n Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw)\r\n }\r\n\r\n // Return the node so we can remove it easily\r\n return node\r\n },\r\n\r\n timeout (fn, delay) {\r\n delay = delay || 0\r\n\r\n // Work out when the event should fire\r\n const time = Animator.timer().now() + delay\r\n\r\n // Add the timeout to the end of the queue\r\n const node = Animator.timeouts.push({ run: fn, time: time })\r\n\r\n // Request another animation frame if we need one\r\n if (Animator.nextDraw === null) {\r\n Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw)\r\n }\r\n\r\n return node\r\n },\r\n\r\n immediate (fn) {\r\n // Add the immediate fn to the end of the queue\r\n const node = Animator.immediates.push(fn)\r\n // Request another animation frame if we need one\r\n if (Animator.nextDraw === null) {\r\n Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw)\r\n }\r\n\r\n return node\r\n },\r\n\r\n cancelFrame (node) {\r\n node != null && Animator.frames.remove(node)\r\n },\r\n\r\n clearTimeout (node) {\r\n node != null && Animator.timeouts.remove(node)\r\n },\r\n\r\n cancelImmediate (node) {\r\n node != null && Animator.immediates.remove(node)\r\n },\r\n\r\n _draw (now) {\r\n // Run all the timeouts we can run, if they are not ready yet, add them\r\n // to the end of the queue immediately! (bad timeouts!!! [sarcasm])\r\n let nextTimeout = null\r\n const lastTimeout = Animator.timeouts.last()\r\n while ((nextTimeout = Animator.timeouts.shift())) {\r\n // Run the timeout if its time, or push it to the end\r\n if (now >= nextTimeout.time) {\r\n nextTimeout.run()\r\n } else {\r\n Animator.timeouts.push(nextTimeout)\r\n }\r\n\r\n // If we hit the last item, we should stop shifting out more items\r\n if (nextTimeout === lastTimeout) break\r\n }\r\n\r\n // Run all of the animation frames\r\n let nextFrame = null\r\n const lastFrame = Animator.frames.last()\r\n while ((nextFrame !== lastFrame) && (nextFrame = Animator.frames.shift())) {\r\n nextFrame.run(now)\r\n }\r\n\r\n let nextImmediate = null\r\n while ((nextImmediate = Animator.immediates.shift())) {\r\n nextImmediate()\r\n }\r\n\r\n // If we have remaining timeouts or frames, draw until we don't anymore\r\n Animator.nextDraw = Animator.timeouts.first() || Animator.frames.first()\r\n ? globals.window.requestAnimationFrame(Animator._draw)\r\n : null\r\n }\r\n}\r\n\r\nexport default Animator\r\n","import { globals } from '../utils/window.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Animator from './Animator.js'\r\nimport EventTarget from '../types/EventTarget.js'\r\n\r\nconst makeSchedule = function (runnerInfo) {\r\n const start = runnerInfo.start\r\n const duration = runnerInfo.runner.duration()\r\n const end = start + duration\r\n return { start: start, duration: duration, end: end, runner: runnerInfo.runner }\r\n}\r\n\r\nconst defaultSource = function () {\r\n const w = globals.window\r\n return (w.performance || w.Date).now()\r\n}\r\n\r\nexport default class Timeline extends EventTarget {\r\n // Construct a new timeline on the given element\r\n constructor (timeSource = defaultSource) {\r\n super()\r\n\r\n this._timeSource = timeSource\r\n\r\n // Store the timing variables\r\n this._startTime = 0\r\n this._speed = 1.0\r\n\r\n // Determines how long a runner is hold in memory. Can be a dt or true/false\r\n this._persist = 0\r\n\r\n // Keep track of the running animations and their starting parameters\r\n this._nextFrame = null\r\n this._paused = true\r\n this._runners = []\r\n this._runnerIds = []\r\n this._lastRunnerId = -1\r\n this._time = 0\r\n this._lastSourceTime = 0\r\n this._lastStepTime = 0\r\n\r\n // Make sure that step is always called in class context\r\n this._step = this._stepFn.bind(this, false)\r\n this._stepImmediate = this._stepFn.bind(this, true)\r\n }\r\n\r\n active () {\r\n return !!this._nextFrame\r\n }\r\n\r\n finish () {\r\n // Go to end and pause\r\n this.time(this.getEndTimeOfTimeline() + 1)\r\n return this.pause()\r\n }\r\n\r\n // Calculates the end of the timeline\r\n getEndTime () {\r\n const lastRunnerInfo = this.getLastRunnerInfo()\r\n const lastDuration = lastRunnerInfo ? lastRunnerInfo.runner.duration() : 0\r\n const lastStartTime = lastRunnerInfo ? lastRunnerInfo.start : this._time\r\n return lastStartTime + lastDuration\r\n }\r\n\r\n getEndTimeOfTimeline () {\r\n const endTimes = this._runners.map((i) => i.start + i.runner.duration())\r\n return Math.max(0, ...endTimes)\r\n }\r\n\r\n getLastRunnerInfo () {\r\n return this.getRunnerInfoById(this._lastRunnerId)\r\n }\r\n\r\n getRunnerInfoById (id) {\r\n return this._runners[this._runnerIds.indexOf(id)] || null\r\n }\r\n\r\n pause () {\r\n this._paused = true\r\n return this._continue()\r\n }\r\n\r\n persist (dtOrForever) {\r\n if (dtOrForever == null) return this._persist\r\n this._persist = dtOrForever\r\n return this\r\n }\r\n\r\n play () {\r\n // Now make sure we are not paused and continue the animation\r\n this._paused = false\r\n return this.updateTime()._continue()\r\n }\r\n\r\n reverse (yes) {\r\n const currentSpeed = this.speed()\r\n if (yes == null) return this.speed(-currentSpeed)\r\n\r\n const positive = Math.abs(currentSpeed)\r\n return this.speed(yes ? -positive : positive)\r\n }\r\n\r\n // schedules a runner on the timeline\r\n schedule (runner, delay, when) {\r\n if (runner == null) {\r\n return this._runners.map(makeSchedule)\r\n }\r\n\r\n // The start time for the next animation can either be given explicitly,\r\n // derived from the current timeline time or it can be relative to the\r\n // last start time to chain animations directly\r\n\r\n let absoluteStartTime = 0\r\n const endTime = this.getEndTime()\r\n delay = delay || 0\r\n\r\n // Work out when to start the animation\r\n if (when == null || when === 'last' || when === 'after') {\r\n // Take the last time and increment\r\n absoluteStartTime = endTime\r\n } else if (when === 'absolute' || when === 'start') {\r\n absoluteStartTime = delay\r\n delay = 0\r\n } else if (when === 'now') {\r\n absoluteStartTime = this._time\r\n } else if (when === 'relative') {\r\n const runnerInfo = this.getRunnerInfoById(runner.id)\r\n if (runnerInfo) {\r\n absoluteStartTime = runnerInfo.start + delay\r\n delay = 0\r\n }\r\n } else if (when === 'with-last') {\r\n const lastRunnerInfo = this.getLastRunnerInfo()\r\n const lastStartTime = lastRunnerInfo ? lastRunnerInfo.start : this._time\r\n absoluteStartTime = lastStartTime\r\n } else {\r\n throw new Error('Invalid value for the \"when\" parameter')\r\n }\r\n\r\n // Manage runner\r\n runner.unschedule()\r\n runner.timeline(this)\r\n\r\n const persist = runner.persist()\r\n const runnerInfo = {\r\n persist: persist === null ? this._persist : persist,\r\n start: absoluteStartTime + delay,\r\n runner\r\n }\r\n\r\n this._lastRunnerId = runner.id\r\n\r\n this._runners.push(runnerInfo)\r\n this._runners.sort((a, b) => a.start - b.start)\r\n this._runnerIds = this._runners.map(info => info.runner.id)\r\n\r\n this.updateTime()._continue()\r\n return this\r\n }\r\n\r\n seek (dt) {\r\n return this.time(this._time + dt)\r\n }\r\n\r\n source (fn) {\r\n if (fn == null) return this._timeSource\r\n this._timeSource = fn\r\n return this\r\n }\r\n\r\n speed (speed) {\r\n if (speed == null) return this._speed\r\n this._speed = speed\r\n return this\r\n }\r\n\r\n stop () {\r\n // Go to start and pause\r\n this.time(0)\r\n return this.pause()\r\n }\r\n\r\n time (time) {\r\n if (time == null) return this._time\r\n this._time = time\r\n return this._continue(true)\r\n }\r\n\r\n // Remove the runner from this timeline\r\n unschedule (runner) {\r\n const index = this._runnerIds.indexOf(runner.id)\r\n if (index < 0) return this\r\n\r\n this._runners.splice(index, 1)\r\n this._runnerIds.splice(index, 1)\r\n\r\n runner.timeline(null)\r\n return this\r\n }\r\n\r\n // Makes sure, that after pausing the time doesn't jump\r\n updateTime () {\r\n if (!this.active()) {\r\n this._lastSourceTime = this._timeSource()\r\n }\r\n return this\r\n }\r\n\r\n // Checks if we are running and continues the animation\r\n _continue (immediateStep = false) {\r\n Animator.cancelFrame(this._nextFrame)\r\n this._nextFrame = null\r\n\r\n if (immediateStep) return this._stepImmediate()\r\n if (this._paused) return this\r\n\r\n this._nextFrame = Animator.frame(this._step)\r\n return this\r\n }\r\n\r\n _stepFn (immediateStep = false) {\r\n // Get the time delta from the last time and update the time\r\n const time = this._timeSource()\r\n let dtSource = time - this._lastSourceTime\r\n\r\n if (immediateStep) dtSource = 0\r\n\r\n const dtTime = this._speed * dtSource + (this._time - this._lastStepTime)\r\n this._lastSourceTime = time\r\n\r\n // Only update the time if we use the timeSource.\r\n // Otherwise use the current time\r\n if (!immediateStep) {\r\n // Update the time\r\n this._time += dtTime\r\n this._time = this._time < 0 ? 0 : this._time\r\n }\r\n this._lastStepTime = this._time\r\n this.fire('time', this._time)\r\n\r\n // This is for the case that the timeline was seeked so that the time\r\n // is now before the startTime of the runner. Thats why we need to set\r\n // the runner to position 0\r\n\r\n // FIXME:\r\n // However, reseting in insertion order leads to bugs. Considering the case,\r\n // where 2 runners change the same attribute but in different times,\r\n // reseting both of them will lead to the case where the later defined\r\n // runner always wins the reset even if the other runner started earlier\r\n // and therefore should win the attribute battle\r\n // this can be solved by reseting them backwards\r\n for (let k = this._runners.length; k--;) {\r\n // Get and run the current runner and ignore it if its inactive\r\n const runnerInfo = this._runners[k]\r\n const runner = runnerInfo.runner\r\n\r\n // Make sure that we give the actual difference\r\n // between runner start time and now\r\n const dtToStart = this._time - runnerInfo.start\r\n\r\n // Dont run runner if not started yet\r\n // and try to reset it\r\n if (dtToStart <= 0) {\r\n runner.reset()\r\n }\r\n }\r\n\r\n // Run all of the runners directly\r\n let runnersLeft = false\r\n for (let i = 0, len = this._runners.length; i < len; i++) {\r\n // Get and run the current runner and ignore it if its inactive\r\n const runnerInfo = this._runners[i]\r\n const runner = runnerInfo.runner\r\n let dt = dtTime\r\n\r\n // Make sure that we give the actual difference\r\n // between runner start time and now\r\n const dtToStart = this._time - runnerInfo.start\r\n\r\n // Dont run runner if not started yet\r\n if (dtToStart <= 0) {\r\n runnersLeft = true\r\n continue\r\n } else if (dtToStart < dt) {\r\n // Adjust dt to make sure that animation is on point\r\n dt = dtToStart\r\n }\r\n\r\n if (!runner.active()) continue\r\n\r\n // If this runner is still going, signal that we need another animation\r\n // frame, otherwise, remove the completed runner\r\n const finished = runner.step(dt).done\r\n if (!finished) {\r\n runnersLeft = true\r\n // continue\r\n } else if (runnerInfo.persist !== true) {\r\n // runner is finished. And runner might get removed\r\n const endTime = runner.duration() - runner.time() + this._time\r\n\r\n if (endTime + runnerInfo.persist < this._time) {\r\n // Delete runner and correct index\r\n runner.unschedule()\r\n --i\r\n --len\r\n }\r\n }\r\n }\r\n\r\n // Basically: we continue when there are runners right from us in time\r\n // when -->, and when runners are left from us when <--\r\n if ((runnersLeft && !(this._speed < 0 && this._time === 0)) || (this._runnerIds.length && this._speed < 0 && this._time > 0)) {\r\n this._continue()\r\n } else {\r\n this.pause()\r\n this.fire('finished')\r\n }\r\n\r\n return this\r\n }\r\n\r\n}\r\n\r\nregisterMethods({\r\n Element: {\r\n timeline: function (timeline) {\r\n if (timeline == null) {\r\n this._timeline = (this._timeline || new Timeline())\r\n return this._timeline\r\n } else {\r\n this._timeline = timeline\r\n return this\r\n }\r\n }\r\n }\r\n})\r\n","import { Controller, Ease, Stepper } from './Controller.js'\r\nimport { extend, register } from '../utils/adopter.js'\r\nimport { from, to } from '../modules/core/gradiented.js'\r\nimport { getOrigin } from '../utils/utils.js'\r\nimport { noop, timeline } from '../modules/core/defaults.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { rx, ry } from '../modules/core/circled.js'\r\nimport Animator from './Animator.js'\r\nimport Box from '../types/Box.js'\r\nimport EventTarget from '../types/EventTarget.js'\r\nimport Matrix from '../types/Matrix.js'\r\nimport Morphable, { TransformBag, ObjectBag } from './Morphable.js'\r\nimport Point from '../types/Point.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Timeline from './Timeline.js'\r\n\r\nexport default class Runner extends EventTarget {\r\n constructor (options) {\r\n super()\r\n\r\n // Store a unique id on the runner, so that we can identify it later\r\n this.id = Runner.id++\r\n\r\n // Ensure a default value\r\n options = options == null\r\n ? timeline.duration\r\n : options\r\n\r\n // Ensure that we get a controller\r\n options = typeof options === 'function'\r\n ? new Controller(options)\r\n : options\r\n\r\n // Declare all of the variables\r\n this._element = null\r\n this._timeline = null\r\n this.done = false\r\n this._queue = []\r\n\r\n // Work out the stepper and the duration\r\n this._duration = typeof options === 'number' && options\r\n this._isDeclarative = options instanceof Controller\r\n this._stepper = this._isDeclarative ? options : new Ease()\r\n\r\n // We copy the current values from the timeline because they can change\r\n this._history = {}\r\n\r\n // Store the state of the runner\r\n this.enabled = true\r\n this._time = 0\r\n this._lastTime = 0\r\n\r\n // At creation, the runner is in reseted state\r\n this._reseted = true\r\n\r\n // Save transforms applied to this runner\r\n this.transforms = new Matrix()\r\n this.transformId = 1\r\n\r\n // Looping variables\r\n this._haveReversed = false\r\n this._reverse = false\r\n this._loopsDone = 0\r\n this._swing = false\r\n this._wait = 0\r\n this._times = 1\r\n\r\n this._frameId = null\r\n\r\n // Stores how long a runner is stored after beeing done\r\n this._persist = this._isDeclarative ? true : null\r\n }\r\n\r\n static sanitise (duration, delay, when) {\r\n // Initialise the default parameters\r\n let times = 1\r\n let swing = false\r\n let wait = 0\r\n duration = duration || timeline.duration\r\n delay = delay || timeline.delay\r\n when = when || 'last'\r\n\r\n // If we have an object, unpack the values\r\n if (typeof duration === 'object' && !(duration instanceof Stepper)) {\r\n delay = duration.delay || delay\r\n when = duration.when || when\r\n swing = duration.swing || swing\r\n times = duration.times || times\r\n wait = duration.wait || wait\r\n duration = duration.duration || timeline.duration\r\n }\r\n\r\n return {\r\n duration: duration,\r\n delay: delay,\r\n swing: swing,\r\n times: times,\r\n wait: wait,\r\n when: when\r\n }\r\n }\r\n\r\n active (enabled) {\r\n if (enabled == null) return this.enabled\r\n this.enabled = enabled\r\n return this\r\n }\r\n\r\n /*\r\n Private Methods\r\n ===============\r\n Methods that shouldn't be used externally\r\n */\r\n addTransform (transform, index) {\r\n this.transforms.lmultiplyO(transform)\r\n return this\r\n }\r\n\r\n after (fn) {\r\n return this.on('finished', fn)\r\n }\r\n\r\n animate (duration, delay, when) {\r\n const o = Runner.sanitise(duration, delay, when)\r\n const runner = new Runner(o.duration)\r\n if (this._timeline) runner.timeline(this._timeline)\r\n if (this._element) runner.element(this._element)\r\n return runner.loop(o).schedule(o.delay, o.when)\r\n }\r\n\r\n clearTransform () {\r\n this.transforms = new Matrix()\r\n return this\r\n }\r\n\r\n // TODO: Keep track of all transformations so that deletion is faster\r\n clearTransformsFromQueue () {\r\n if (!this.done || !this._timeline || !this._timeline._runnerIds.includes(this.id)) {\r\n this._queue = this._queue.filter((item) => {\r\n return !item.isTransform\r\n })\r\n }\r\n }\r\n\r\n delay (delay) {\r\n return this.animate(0, delay)\r\n }\r\n\r\n duration () {\r\n return this._times * (this._wait + this._duration) - this._wait\r\n }\r\n\r\n during (fn) {\r\n return this.queue(null, fn)\r\n }\r\n\r\n ease (fn) {\r\n this._stepper = new Ease(fn)\r\n return this\r\n }\r\n /*\r\n Runner Definitions\r\n ==================\r\n These methods help us define the runtime behaviour of the Runner or they\r\n help us make new runners from the current runner\r\n */\r\n\r\n element (element) {\r\n if (element == null) return this._element\r\n this._element = element\r\n element._prepareRunner()\r\n return this\r\n }\r\n\r\n finish () {\r\n return this.step(Infinity)\r\n }\r\n\r\n loop (times, swing, wait) {\r\n // Deal with the user passing in an object\r\n if (typeof times === 'object') {\r\n swing = times.swing\r\n wait = times.wait\r\n times = times.times\r\n }\r\n\r\n // Sanitise the values and store them\r\n this._times = times || Infinity\r\n this._swing = swing || false\r\n this._wait = wait || 0\r\n\r\n // Allow true to be passed\r\n if (this._times === true) { this._times = Infinity }\r\n\r\n return this\r\n }\r\n\r\n loops (p) {\r\n const loopDuration = this._duration + this._wait\r\n if (p == null) {\r\n const loopsDone = Math.floor(this._time / loopDuration)\r\n const relativeTime = (this._time - loopsDone * loopDuration)\r\n const position = relativeTime / this._duration\r\n return Math.min(loopsDone + position, this._times)\r\n }\r\n const whole = Math.floor(p)\r\n const partial = p % 1\r\n const time = loopDuration * whole + this._duration * partial\r\n return this.time(time)\r\n }\r\n\r\n persist (dtOrForever) {\r\n if (dtOrForever == null) return this._persist\r\n this._persist = dtOrForever\r\n return this\r\n }\r\n\r\n position (p) {\r\n // Get all of the variables we need\r\n const x = this._time\r\n const d = this._duration\r\n const w = this._wait\r\n const t = this._times\r\n const s = this._swing\r\n const r = this._reverse\r\n let position\r\n\r\n if (p == null) {\r\n /*\r\n This function converts a time to a position in the range [0, 1]\r\n The full explanation can be found in this desmos demonstration\r\n https://www.desmos.com/calculator/u4fbavgche\r\n The logic is slightly simplified here because we can use booleans\r\n */\r\n\r\n // Figure out the value without thinking about the start or end time\r\n const f = function (x) {\r\n const swinging = s * Math.floor(x % (2 * (w + d)) / (w + d))\r\n const backwards = (swinging && !r) || (!swinging && r)\r\n const uncliped = Math.pow(-1, backwards) * (x % (w + d)) / d + backwards\r\n const clipped = Math.max(Math.min(uncliped, 1), 0)\r\n return clipped\r\n }\r\n\r\n // Figure out the value by incorporating the start time\r\n const endTime = t * (w + d) - w\r\n position = x <= 0\r\n ? Math.round(f(1e-5))\r\n : x < endTime\r\n ? f(x)\r\n : Math.round(f(endTime - 1e-5))\r\n return position\r\n }\r\n\r\n // Work out the loops done and add the position to the loops done\r\n const loopsDone = Math.floor(this.loops())\r\n const swingForward = s && (loopsDone % 2 === 0)\r\n const forwards = (swingForward && !r) || (r && swingForward)\r\n position = loopsDone + (forwards ? p : 1 - p)\r\n return this.loops(position)\r\n }\r\n\r\n progress (p) {\r\n if (p == null) {\r\n return Math.min(1, this._time / this.duration())\r\n }\r\n return this.time(p * this.duration())\r\n }\r\n\r\n /*\r\n Basic Functionality\r\n ===================\r\n These methods allow us to attach basic functions to the runner directly\r\n */\r\n queue (initFn, runFn, retargetFn, isTransform) {\r\n this._queue.push({\r\n initialiser: initFn || noop,\r\n runner: runFn || noop,\r\n retarget: retargetFn,\r\n isTransform: isTransform,\r\n initialised: false,\r\n finished: false\r\n })\r\n const timeline = this.timeline()\r\n timeline && this.timeline()._continue()\r\n return this\r\n }\r\n\r\n reset () {\r\n if (this._reseted) return this\r\n this.time(0)\r\n this._reseted = true\r\n return this\r\n }\r\n\r\n reverse (reverse) {\r\n this._reverse = reverse == null ? !this._reverse : reverse\r\n return this\r\n }\r\n\r\n schedule (timeline, delay, when) {\r\n // The user doesn't need to pass a timeline if we already have one\r\n if (!(timeline instanceof Timeline)) {\r\n when = delay\r\n delay = timeline\r\n timeline = this.timeline()\r\n }\r\n\r\n // If there is no timeline, yell at the user...\r\n if (!timeline) {\r\n throw Error('Runner cannot be scheduled without timeline')\r\n }\r\n\r\n // Schedule the runner on the timeline provided\r\n timeline.schedule(this, delay, when)\r\n return this\r\n }\r\n\r\n step (dt) {\r\n // If we are inactive, this stepper just gets skipped\r\n if (!this.enabled) return this\r\n\r\n // Update the time and get the new position\r\n dt = dt == null ? 16 : dt\r\n this._time += dt\r\n const position = this.position()\r\n\r\n // Figure out if we need to run the stepper in this frame\r\n const running = this._lastPosition !== position && this._time >= 0\r\n this._lastPosition = position\r\n\r\n // Figure out if we just started\r\n const duration = this.duration()\r\n const justStarted = this._lastTime <= 0 && this._time > 0\r\n const justFinished = this._lastTime < duration && this._time >= duration\r\n\r\n this._lastTime = this._time\r\n if (justStarted) {\r\n this.fire('start', this)\r\n }\r\n\r\n // Work out if the runner is finished set the done flag here so animations\r\n // know, that they are running in the last step (this is good for\r\n // transformations which can be merged)\r\n const declarative = this._isDeclarative\r\n this.done = !declarative && !justFinished && this._time >= duration\r\n\r\n // Runner is running. So its not in reseted state anymore\r\n this._reseted = false\r\n\r\n let converged = false\r\n // Call initialise and the run function\r\n if (running || declarative) {\r\n this._initialise(running)\r\n\r\n // clear the transforms on this runner so they dont get added again and again\r\n this.transforms = new Matrix()\r\n converged = this._run(declarative ? dt : position)\r\n\r\n this.fire('step', this)\r\n }\r\n // correct the done flag here\r\n // declaritive animations itself know when they converged\r\n this.done = this.done || (converged && declarative)\r\n if (justFinished) {\r\n this.fire('finished', this)\r\n }\r\n return this\r\n }\r\n\r\n /*\r\n Runner animation methods\r\n ========================\r\n Control how the animation plays\r\n */\r\n time (time) {\r\n if (time == null) {\r\n return this._time\r\n }\r\n const dt = time - this._time\r\n this.step(dt)\r\n return this\r\n }\r\n\r\n timeline (timeline) {\r\n // check explicitly for undefined so we can set the timeline to null\r\n if (typeof timeline === 'undefined') return this._timeline\r\n this._timeline = timeline\r\n return this\r\n }\r\n\r\n unschedule () {\r\n const timeline = this.timeline()\r\n timeline && timeline.unschedule(this)\r\n return this\r\n }\r\n\r\n // Run each initialise function in the runner if required\r\n _initialise (running) {\r\n // If we aren't running, we shouldn't initialise when not declarative\r\n if (!running && !this._isDeclarative) return\r\n\r\n // Loop through all of the initialisers\r\n for (let i = 0, len = this._queue.length; i < len; ++i) {\r\n // Get the current initialiser\r\n const current = this._queue[i]\r\n\r\n // Determine whether we need to initialise\r\n const needsIt = this._isDeclarative || (!current.initialised && running)\r\n running = !current.finished\r\n\r\n // Call the initialiser if we need to\r\n if (needsIt && running) {\r\n current.initialiser.call(this)\r\n current.initialised = true\r\n }\r\n }\r\n }\r\n\r\n // Save a morpher to the morpher list so that we can retarget it later\r\n _rememberMorpher (method, morpher) {\r\n this._history[method] = {\r\n morpher: morpher,\r\n caller: this._queue[this._queue.length - 1]\r\n }\r\n\r\n // We have to resume the timeline in case a controller\r\n // is already done without being ever run\r\n // This can happen when e.g. this is done:\r\n // anim = el.animate(new SVG.Spring)\r\n // and later\r\n // anim.move(...)\r\n if (this._isDeclarative) {\r\n const timeline = this.timeline()\r\n timeline && timeline.play()\r\n }\r\n }\r\n\r\n // Try to set the target for a morpher if the morpher exists, otherwise\r\n // Run each run function for the position or dt given\r\n _run (positionOrDt) {\r\n // Run all of the _queue directly\r\n let allfinished = true\r\n for (let i = 0, len = this._queue.length; i < len; ++i) {\r\n // Get the current function to run\r\n const current = this._queue[i]\r\n\r\n // Run the function if its not finished, we keep track of the finished\r\n // flag for the sake of declarative _queue\r\n const converged = current.runner.call(this, positionOrDt)\r\n current.finished = current.finished || (converged === true)\r\n allfinished = allfinished && current.finished\r\n }\r\n\r\n // We report when all of the constructors are finished\r\n return allfinished\r\n }\r\n\r\n // do nothing and return false\r\n _tryRetarget (method, target, extra) {\r\n if (this._history[method]) {\r\n // if the last method wasnt even initialised, throw it away\r\n if (!this._history[method].caller.initialised) {\r\n const index = this._queue.indexOf(this._history[method].caller)\r\n this._queue.splice(index, 1)\r\n return false\r\n }\r\n\r\n // for the case of transformations, we use the special retarget function\r\n // which has access to the outer scope\r\n if (this._history[method].caller.retarget) {\r\n this._history[method].caller.retarget.call(this, target, extra)\r\n // for everything else a simple morpher change is sufficient\r\n } else {\r\n this._history[method].morpher.to(target)\r\n }\r\n\r\n this._history[method].caller.finished = false\r\n const timeline = this.timeline()\r\n timeline && timeline.play()\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n}\r\n\r\nRunner.id = 0\r\n\r\nexport class FakeRunner {\r\n constructor (transforms = new Matrix(), id = -1, done = true) {\r\n this.transforms = transforms\r\n this.id = id\r\n this.done = done\r\n }\r\n\r\n clearTransformsFromQueue () { }\r\n}\r\n\r\nextend([ Runner, FakeRunner ], {\r\n mergeWith (runner) {\r\n return new FakeRunner(\r\n runner.transforms.lmultiply(this.transforms),\r\n runner.id\r\n )\r\n }\r\n})\r\n\r\n// FakeRunner.emptyRunner = new FakeRunner()\r\n\r\nconst lmultiply = (last, curr) => last.lmultiplyO(curr)\r\nconst getRunnerTransform = (runner) => runner.transforms\r\n\r\nfunction mergeTransforms () {\r\n // Find the matrix to apply to the element and apply it\r\n const runners = this._transformationRunners.runners\r\n const netTransform = runners\r\n .map(getRunnerTransform)\r\n .reduce(lmultiply, new Matrix())\r\n\r\n this.transform(netTransform)\r\n\r\n this._transformationRunners.merge()\r\n\r\n if (this._transformationRunners.length() === 1) {\r\n this._frameId = null\r\n }\r\n}\r\n\r\nexport class RunnerArray {\r\n constructor () {\r\n this.runners = []\r\n this.ids = []\r\n }\r\n\r\n add (runner) {\r\n if (this.runners.includes(runner)) return\r\n const id = runner.id + 1\r\n\r\n this.runners.push(runner)\r\n this.ids.push(id)\r\n\r\n return this\r\n }\r\n\r\n clearBefore (id) {\r\n const deleteCnt = this.ids.indexOf(id + 1) || 1\r\n this.ids.splice(0, deleteCnt, 0)\r\n this.runners.splice(0, deleteCnt, new FakeRunner())\r\n .forEach((r) => r.clearTransformsFromQueue())\r\n return this\r\n }\r\n\r\n edit (id, newRunner) {\r\n const index = this.ids.indexOf(id + 1)\r\n this.ids.splice(index, 1, id + 1)\r\n this.runners.splice(index, 1, newRunner)\r\n return this\r\n }\r\n\r\n getByID (id) {\r\n return this.runners[this.ids.indexOf(id + 1)]\r\n }\r\n\r\n length () {\r\n return this.ids.length\r\n }\r\n\r\n merge () {\r\n let lastRunner = null\r\n for (let i = 0; i < this.runners.length; ++i) {\r\n const runner = this.runners[i]\r\n\r\n const condition = lastRunner\r\n && runner.done && lastRunner.done\r\n // don't merge runner when persisted on timeline\r\n && (!runner._timeline || !runner._timeline._runnerIds.includes(runner.id))\r\n && (!lastRunner._timeline || !lastRunner._timeline._runnerIds.includes(lastRunner.id))\r\n\r\n if (condition) {\r\n // the +1 happens in the function\r\n this.remove(runner.id)\r\n const newRunner = runner.mergeWith(lastRunner)\r\n this.edit(lastRunner.id, newRunner)\r\n lastRunner = newRunner\r\n --i\r\n } else {\r\n lastRunner = runner\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n remove (id) {\r\n const index = this.ids.indexOf(id + 1)\r\n this.ids.splice(index, 1)\r\n this.runners.splice(index, 1)\r\n return this\r\n }\r\n\r\n}\r\n\r\nregisterMethods({\r\n Element: {\r\n animate (duration, delay, when) {\r\n const o = Runner.sanitise(duration, delay, when)\r\n const timeline = this.timeline()\r\n return new Runner(o.duration)\r\n .loop(o)\r\n .element(this)\r\n .timeline(timeline.play())\r\n .schedule(o.delay, o.when)\r\n },\r\n\r\n delay (by, when) {\r\n return this.animate(0, by, when)\r\n },\r\n\r\n // this function searches for all runners on the element and deletes the ones\r\n // which run before the current one. This is because absolute transformations\r\n // overwfrite anything anyway so there is no need to waste time computing\r\n // other runners\r\n _clearTransformRunnersBefore (currentRunner) {\r\n this._transformationRunners.clearBefore(currentRunner.id)\r\n },\r\n\r\n _currentTransform (current) {\r\n return this._transformationRunners.runners\r\n // we need the equal sign here to make sure, that also transformations\r\n // on the same runner which execute before the current transformation are\r\n // taken into account\r\n .filter((runner) => runner.id <= current.id)\r\n .map(getRunnerTransform)\r\n .reduce(lmultiply, new Matrix())\r\n },\r\n\r\n _addRunner (runner) {\r\n this._transformationRunners.add(runner)\r\n\r\n // Make sure that the runner merge is executed at the very end of\r\n // all Animator functions. Thats why we use immediate here to execute\r\n // the merge right after all frames are run\r\n Animator.cancelImmediate(this._frameId)\r\n this._frameId = Animator.immediate(mergeTransforms.bind(this))\r\n },\r\n\r\n _prepareRunner () {\r\n if (this._frameId == null) {\r\n this._transformationRunners = new RunnerArray()\r\n .add(new FakeRunner(new Matrix(this)))\r\n }\r\n }\r\n }\r\n})\r\n\r\n// Will output the elements from array A that are not in the array B\r\nconst difference = (a, b) => a.filter(x => !b.includes(x))\r\n\r\nextend(Runner, {\r\n attr (a, v) {\r\n return this.styleAttr('attr', a, v)\r\n },\r\n\r\n // Add animatable styles\r\n css (s, v) {\r\n return this.styleAttr('css', s, v)\r\n },\r\n\r\n styleAttr (type, nameOrAttrs, val) {\r\n if (typeof nameOrAttrs === 'string') {\r\n return this.styleAttr(type, { [nameOrAttrs]: val })\r\n }\r\n\r\n let attrs = nameOrAttrs\r\n if (this._tryRetarget(type, attrs)) return this\r\n\r\n let morpher = new Morphable(this._stepper).to(attrs)\r\n let keys = Object.keys(attrs)\r\n\r\n this.queue(function () {\r\n morpher = morpher.from(this.element()[type](keys))\r\n }, function (pos) {\r\n this.element()[type](morpher.at(pos).valueOf())\r\n return morpher.done()\r\n }, function (newToAttrs) {\r\n\r\n // Check if any new keys were added\r\n const newKeys = Object.keys(newToAttrs)\r\n const differences = difference(newKeys, keys)\r\n\r\n // If their are new keys, initialize them and add them to morpher\r\n if (differences.length) {\r\n // Get the values\r\n const addedFromAttrs = this.element()[type](differences)\r\n\r\n // Get the already initialized values\r\n const oldFromAttrs = new ObjectBag(morpher.from()).valueOf()\r\n\r\n // Merge old and new\r\n Object.assign(oldFromAttrs, addedFromAttrs)\r\n morpher.from(oldFromAttrs)\r\n }\r\n\r\n // Get the object from the morpher\r\n const oldToAttrs = new ObjectBag(morpher.to()).valueOf()\r\n\r\n // Merge in new attributes\r\n Object.assign(oldToAttrs, newToAttrs)\r\n\r\n // Change morpher target\r\n morpher.to(oldToAttrs)\r\n\r\n // Make sure that we save the work we did so we don't need it to do again\r\n keys = newKeys\r\n attrs = newToAttrs\r\n })\r\n\r\n this._rememberMorpher(type, morpher)\r\n return this\r\n },\r\n\r\n zoom (level, point) {\r\n if (this._tryRetarget('zoom', level, point)) return this\r\n\r\n let morpher = new Morphable(this._stepper).to(new SVGNumber(level))\r\n\r\n this.queue(function () {\r\n morpher = morpher.from(this.element().zoom())\r\n }, function (pos) {\r\n this.element().zoom(morpher.at(pos), point)\r\n return morpher.done()\r\n }, function (newLevel, newPoint) {\r\n point = newPoint\r\n morpher.to(newLevel)\r\n })\r\n\r\n this._rememberMorpher('zoom', morpher)\r\n return this\r\n },\r\n\r\n /**\r\n ** absolute transformations\r\n **/\r\n\r\n //\r\n // M v -----|-----(D M v = F v)------|-----> T v\r\n //\r\n // 1. define the final state (T) and decompose it (once)\r\n // t = [tx, ty, the, lam, sy, sx]\r\n // 2. on every frame: pull the current state of all previous transforms\r\n // (M - m can change)\r\n // and then write this as m = [tx0, ty0, the0, lam0, sy0, sx0]\r\n // 3. Find the interpolated matrix F(pos) = m + pos * (t - m)\r\n // - Note F(0) = M\r\n // - Note F(1) = T\r\n // 4. Now you get the delta matrix as a result: D = F * inv(M)\r\n\r\n transform (transforms, relative, affine) {\r\n // If we have a declarative function, we should retarget it if possible\r\n relative = transforms.relative || relative\r\n if (this._isDeclarative && !relative && this._tryRetarget('transform', transforms)) {\r\n return this\r\n }\r\n\r\n // Parse the parameters\r\n const isMatrix = Matrix.isMatrixLike(transforms)\r\n affine = transforms.affine != null\r\n ? transforms.affine\r\n : (affine != null ? affine : !isMatrix)\r\n\r\n // Create a morepher and set its type\r\n const morpher = new Morphable(this._stepper)\r\n .type(affine ? TransformBag : Matrix)\r\n\r\n let origin\r\n let element\r\n let current\r\n let currentAngle\r\n let startTransform\r\n\r\n function setup () {\r\n // make sure element and origin is defined\r\n element = element || this.element()\r\n origin = origin || getOrigin(transforms, element)\r\n\r\n startTransform = new Matrix(relative ? undefined : element)\r\n\r\n // add the runner to the element so it can merge transformations\r\n element._addRunner(this)\r\n\r\n // Deactivate all transforms that have run so far if we are absolute\r\n if (!relative) {\r\n element._clearTransformRunnersBefore(this)\r\n }\r\n }\r\n\r\n function run (pos) {\r\n // clear all other transforms before this in case something is saved\r\n // on this runner. We are absolute. We dont need these!\r\n if (!relative) this.clearTransform()\r\n\r\n const { x, y } = new Point(origin).transform(element._currentTransform(this))\r\n\r\n let target = new Matrix({ ...transforms, origin: [ x, y ] })\r\n let start = this._isDeclarative && current\r\n ? current\r\n : startTransform\r\n\r\n if (affine) {\r\n target = target.decompose(x, y)\r\n start = start.decompose(x, y)\r\n\r\n // Get the current and target angle as it was set\r\n const rTarget = target.rotate\r\n const rCurrent = start.rotate\r\n\r\n // Figure out the shortest path to rotate directly\r\n const possibilities = [ rTarget - 360, rTarget, rTarget + 360 ]\r\n const distances = possibilities.map(a => Math.abs(a - rCurrent))\r\n const shortest = Math.min(...distances)\r\n const index = distances.indexOf(shortest)\r\n target.rotate = possibilities[index]\r\n }\r\n\r\n if (relative) {\r\n // we have to be careful here not to overwrite the rotation\r\n // with the rotate method of Matrix\r\n if (!isMatrix) {\r\n target.rotate = transforms.rotate || 0\r\n }\r\n if (this._isDeclarative && currentAngle) {\r\n start.rotate = currentAngle\r\n }\r\n }\r\n\r\n morpher.from(start)\r\n morpher.to(target)\r\n\r\n const affineParameters = morpher.at(pos)\r\n currentAngle = affineParameters.rotate\r\n current = new Matrix(affineParameters)\r\n\r\n this.addTransform(current)\r\n element._addRunner(this)\r\n return morpher.done()\r\n }\r\n\r\n function retarget (newTransforms) {\r\n // only get a new origin if it changed since the last call\r\n if (\r\n (newTransforms.origin || 'center').toString()\r\n !== (transforms.origin || 'center').toString()\r\n ) {\r\n origin = getOrigin(newTransforms, element)\r\n }\r\n\r\n // overwrite the old transformations with the new ones\r\n transforms = { ...newTransforms, origin }\r\n }\r\n\r\n this.queue(setup, run, retarget, true)\r\n this._isDeclarative && this._rememberMorpher('transform', morpher)\r\n return this\r\n },\r\n\r\n // Animatable x-axis\r\n x (x, relative) {\r\n return this._queueNumber('x', x)\r\n },\r\n\r\n // Animatable y-axis\r\n y (y) {\r\n return this._queueNumber('y', y)\r\n },\r\n\r\n dx (x = 0) {\r\n return this._queueNumberDelta('x', x)\r\n },\r\n\r\n dy (y = 0) {\r\n return this._queueNumberDelta('y', y)\r\n },\r\n\r\n dmove (x, y) {\r\n return this.dx(x).dy(y)\r\n },\r\n\r\n _queueNumberDelta (method, to) {\r\n to = new SVGNumber(to)\r\n\r\n // Try to change the target if we have this method already registerd\r\n if (this._tryRetarget(method, to)) return this\r\n\r\n // Make a morpher and queue the animation\r\n const morpher = new Morphable(this._stepper).to(to)\r\n let from = null\r\n this.queue(function () {\r\n from = this.element()[method]()\r\n morpher.from(from)\r\n morpher.to(from + to)\r\n }, function (pos) {\r\n this.element()[method](morpher.at(pos))\r\n return morpher.done()\r\n }, function (newTo) {\r\n morpher.to(from + new SVGNumber(newTo))\r\n })\r\n\r\n // Register the morpher so that if it is changed again, we can retarget it\r\n this._rememberMorpher(method, morpher)\r\n return this\r\n },\r\n\r\n _queueObject (method, to) {\r\n // Try to change the target if we have this method already registerd\r\n if (this._tryRetarget(method, to)) return this\r\n\r\n // Make a morpher and queue the animation\r\n const morpher = new Morphable(this._stepper).to(to)\r\n this.queue(function () {\r\n morpher.from(this.element()[method]())\r\n }, function (pos) {\r\n this.element()[method](morpher.at(pos))\r\n return morpher.done()\r\n })\r\n\r\n // Register the morpher so that if it is changed again, we can retarget it\r\n this._rememberMorpher(method, morpher)\r\n return this\r\n },\r\n\r\n _queueNumber (method, value) {\r\n return this._queueObject(method, new SVGNumber(value))\r\n },\r\n\r\n // Animatable center x-axis\r\n cx (x) {\r\n return this._queueNumber('cx', x)\r\n },\r\n\r\n // Animatable center y-axis\r\n cy (y) {\r\n return this._queueNumber('cy', y)\r\n },\r\n\r\n // Add animatable move\r\n move (x, y) {\r\n return this.x(x).y(y)\r\n },\r\n\r\n // Add animatable center\r\n center (x, y) {\r\n return this.cx(x).cy(y)\r\n },\r\n\r\n // Add animatable size\r\n size (width, height) {\r\n // animate bbox based size for all other elements\r\n let box\r\n\r\n if (!width || !height) {\r\n box = this._element.bbox()\r\n }\r\n\r\n if (!width) {\r\n width = box.width / box.height * height\r\n }\r\n\r\n if (!height) {\r\n height = box.height / box.width * width\r\n }\r\n\r\n return this\r\n .width(width)\r\n .height(height)\r\n },\r\n\r\n // Add animatable width\r\n width (width) {\r\n return this._queueNumber('width', width)\r\n },\r\n\r\n // Add animatable height\r\n height (height) {\r\n return this._queueNumber('height', height)\r\n },\r\n\r\n // Add animatable plot\r\n plot (a, b, c, d) {\r\n // Lines can be plotted with 4 arguments\r\n if (arguments.length === 4) {\r\n return this.plot([ a, b, c, d ])\r\n }\r\n\r\n if (this._tryRetarget('plot', a)) return this\r\n\r\n const morpher = new Morphable(this._stepper)\r\n .type(this._element.MorphArray).to(a)\r\n\r\n this.queue(function () {\r\n morpher.from(this._element.array())\r\n }, function (pos) {\r\n this._element.plot(morpher.at(pos))\r\n return morpher.done()\r\n })\r\n\r\n this._rememberMorpher('plot', morpher)\r\n return this\r\n },\r\n\r\n // Add leading method\r\n leading (value) {\r\n return this._queueNumber('leading', value)\r\n },\r\n\r\n // Add animatable viewbox\r\n viewbox (x, y, width, height) {\r\n return this._queueObject('viewbox', new Box(x, y, width, height))\r\n },\r\n\r\n update (o) {\r\n if (typeof o !== 'object') {\r\n return this.update({\r\n offset: arguments[0],\r\n color: arguments[1],\r\n opacity: arguments[2]\r\n })\r\n }\r\n\r\n if (o.opacity != null) this.attr('stop-opacity', o.opacity)\r\n if (o.color != null) this.attr('stop-color', o.color)\r\n if (o.offset != null) this.attr('offset', o.offset)\r\n\r\n return this\r\n }\r\n})\r\n\r\nextend(Runner, { rx, ry, from, to })\r\nregister(Runner, 'Runner')\r\n","import {\r\n adopt,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { svg, svgjs, xlink, xmlns } from '../modules/core/namespaces.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\nimport Defs from './Defs.js'\r\nimport { globals } from '../utils/window.js'\r\n\r\nexport default class Svg extends Container {\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('svg', node), attrs)\r\n this.namespace()\r\n }\r\n\r\n // Creates and returns defs element\r\n defs () {\r\n if (!this.isRoot()) return this.root().defs()\r\n\r\n return adopt(this.node.querySelector('defs'))\r\n || this.put(new Defs())\r\n }\r\n\r\n isRoot () {\r\n return !this.node.parentNode\r\n || (!(this.node.parentNode instanceof globals.window.SVGElement) && this.node.parentNode.nodeName !== '#document-fragment')\r\n }\r\n\r\n // Add namespaces\r\n namespace () {\r\n if (!this.isRoot()) return this.root().namespace()\r\n return this\r\n .attr({ xmlns: svg, version: '1.1' })\r\n .attr('xmlns:xlink', xlink, xmlns)\r\n .attr('xmlns:svgjs', svgjs, xmlns)\r\n }\r\n\r\n removeNamespace () {\r\n return this.attr({ xmlns: null, version: null })\r\n .attr('xmlns:xlink', null, xmlns)\r\n .attr('xmlns:svgjs', null, xmlns)\r\n }\r\n\r\n // Check if this is a root svg\r\n // If not, call root() from this element\r\n root () {\r\n if (this.isRoot()) return this\r\n return super.root()\r\n }\r\n\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create nested svg document\r\n nested: wrapWithAttrCheck(function () {\r\n return this.put(new Svg())\r\n })\r\n }\r\n})\r\n\r\nregister(Svg, 'Svg', true)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class Symbol extends Container {\r\n // Initialize node\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('symbol', node), attrs)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n symbol: wrapWithAttrCheck(function () {\r\n return this.put(new Symbol())\r\n })\r\n }\r\n})\r\n\r\nregister(Symbol, 'Symbol')\r\n","import { globals } from '../../utils/window.js'\r\n\r\n// Create plain text node\r\nexport function plain (text) {\r\n // clear if build mode is disabled\r\n if (this._build === false) {\r\n this.clear()\r\n }\r\n\r\n // create text node\r\n this.node.appendChild(globals.document.createTextNode(text))\r\n\r\n return this\r\n}\r\n\r\n// Get length of text element\r\nexport function length () {\r\n return this.node.getComputedTextLength()\r\n}\r\n\r\n// Move over x-axis\r\n// Text is moved by its bounding box\r\n// text-anchor does NOT matter\r\nexport function x (x, box = this.bbox()) {\r\n if (x == null) {\r\n return box.x\r\n }\r\n\r\n return this.attr('x', this.attr('x') + x - box.x)\r\n}\r\n\r\n// Move over y-axis\r\nexport function y (y, box = this.bbox()) {\r\n if (y == null) {\r\n return box.y\r\n }\r\n\r\n return this.attr('y', this.attr('y') + y - box.y)\r\n}\r\n\r\nexport function move (x, y, box = this.bbox()) {\r\n return this.x(x, box).y(y, box)\r\n}\r\n\r\n// Move center over x-axis\r\nexport function cx (x, box = this.bbox()) {\r\n if (x == null) {\r\n return box.cx\r\n }\r\n\r\n return this.attr('x', this.attr('x') + x - box.cx)\r\n}\r\n\r\n// Move center over y-axis\r\nexport function cy (y, box = this.bbox()) {\r\n if (y == null) {\r\n return box.cy\r\n }\r\n\r\n return this.attr('y', this.attr('y') + y - box.cy)\r\n}\r\n\r\nexport function center (x, y, box = this.bbox()) {\r\n return this.cx(x, box).cy(y, box)\r\n}\r\n\r\nexport function ax (x) {\r\n return this.attr('x', x)\r\n}\r\n\r\nexport function ay (y) {\r\n return this.attr('y', y)\r\n}\r\n\r\nexport function amove (x, y) {\r\n return this.ax(x).ay(y)\r\n}\r\n\r\n// Enable / disable build mode\r\nexport function build (build) {\r\n this._build = !!build\r\n return this\r\n}\r\n","import {\r\n adopt,\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Shape from './Shape.js'\r\nimport { globals } from '../utils/window.js'\r\nimport * as textable from '../modules/core/textable.js'\r\n\r\nexport default class Text extends Shape {\r\n // Initialize node\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('text', node), attrs)\r\n\r\n this.dom.leading = new SVGNumber(1.3) // store leading value for rebuilding\r\n this._rebuild = true // enable automatic updating of dy values\r\n this._build = false // disable build mode for adding multiple lines\r\n }\r\n\r\n // Set / get leading\n leading (value) {\r\n // act as getter\r\n if (value == null) {\r\n return this.dom.leading\r\n }\r\n\r\n // act as setter\r\n this.dom.leading = new SVGNumber(value)\r\n\r\n return this.rebuild()\r\n }\n\n // Rebuild appearance type\n rebuild (rebuild) {\r\n // store new rebuild flag if given\r\n if (typeof rebuild === 'boolean') {\r\n this._rebuild = rebuild\r\n }\r\n\r\n // define position of all lines\r\n if (this._rebuild) {\r\n const self = this\r\n let blankLineOffset = 0\r\n const leading = this.dom.leading\r\n\r\n this.each(function (i) {\r\n const fontSize = globals.window.getComputedStyle(this.node)\r\n .getPropertyValue('font-size')\r\n\r\n const dy = leading * new SVGNumber(fontSize)\r\n\r\n if (this.dom.newLined) {\r\n this.attr('x', self.attr('x'))\r\n\r\n if (this.text() === '\\n') {\r\n blankLineOffset += dy\r\n } else {\r\n this.attr('dy', i ? dy + blankLineOffset : 0)\r\n blankLineOffset = 0\r\n }\r\n }\r\n })\r\n\r\n this.fire('rebuild')\r\n }\r\n\r\n return this\r\n }\n\n // overwrite method from parent to set data properly\n setData (o) {\r\n this.dom = o\r\n this.dom.leading = new SVGNumber(o.leading || 1.3)\r\n return this\r\n }\n\n // Set the text content\r\n text (text) {\r\n // act as getter\r\n if (text === undefined) {\r\n const children = this.node.childNodes\r\n let firstLine = 0\r\n text = ''\r\n\r\n for (let i = 0, len = children.length; i < len; ++i) {\r\n // skip textPaths - they are no lines\r\n if (children[i].nodeName === 'textPath') {\r\n if (i === 0) firstLine = 1\r\n continue\r\n }\r\n\r\n // add newline if its not the first child and newLined is set to true\r\n if (i !== firstLine && children[i].nodeType !== 3 && adopt(children[i]).dom.newLined === true) {\r\n text += '\\n'\r\n }\r\n\r\n // add content of this node\r\n text += children[i].textContent\r\n }\r\n\r\n return text\r\n }\r\n\r\n // remove existing content\r\n this.clear().build(true)\r\n\r\n if (typeof text === 'function') {\r\n // call block\r\n text.call(this, this)\r\n } else {\r\n // store text and make sure text is not blank\r\n text = (text + '').split('\\n')\r\n\r\n // build new lines\r\n for (let j = 0, jl = text.length; j < jl; j++) {\r\n this.newLine(text[j])\r\n }\r\n }\r\n\r\n // disable build mode and rebuild lines\r\n return this.build(false).rebuild()\r\n }\r\n\r\n}\r\n\r\nextend(Text, textable)\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create text element\r\n text: wrapWithAttrCheck(function (text = '') {\r\n return this.put(new Text()).text(text)\r\n }),\r\n\r\n // Create plain text element\r\n plain: wrapWithAttrCheck(function (text = '') {\r\n return this.put(new Text()).plain(text)\r\n })\r\n }\r\n})\r\n\r\nregister(Text, 'Text')\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { globals } from '../utils/window.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Shape from './Shape.js'\r\nimport Text from './Text.js'\r\nimport * as textable from '../modules/core/textable.js'\r\n\r\nexport default class Tspan extends Shape {\r\n // Initialize node\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('tspan', node), attrs)\r\n this._build = false // disable build mode for adding multiple lines\r\n }\r\n\r\n // Shortcut dx\n dx (dx) {\r\n return this.attr('dx', dx)\r\n }\n\n // Shortcut dy\n dy (dy) {\r\n return this.attr('dy', dy)\r\n }\n\n // Create new line\n newLine () {\r\n // mark new line\r\n this.dom.newLined = true\r\n\r\n // fetch parent\r\n const text = this.parent()\r\n\r\n // early return in case we are not in a text element\r\n if (!(text instanceof Text)) {\r\n return this\r\n }\r\n\r\n const i = text.index(this)\r\n\r\n const fontSize = globals.window.getComputedStyle(this.node)\r\n .getPropertyValue('font-size')\r\n const dy = text.dom.leading * new SVGNumber(fontSize)\r\n\r\n // apply new position\r\n return this.dy(i ? dy : 0).attr('x', text.x())\r\n }\n\n // Set text content\r\n text (text) {\r\n if (text == null) return this.node.textContent + (this.dom.newLined ? '\\n' : '')\r\n\r\n if (typeof text === 'function') {\r\n this.clear().build(true)\r\n text.call(this, this)\r\n this.build(false)\r\n } else {\r\n this.plain(text)\r\n }\r\n\r\n return this\r\n }\r\n\r\n}\r\n\r\nextend(Tspan, textable)\r\n\r\nregisterMethods({\r\n Tspan: {\r\n tspan: wrapWithAttrCheck(function (text = '') {\r\n const tspan = new Tspan()\r\n\r\n // clear if build mode is disabled\r\n if (!this._build) {\r\n this.clear()\r\n }\r\n\r\n // add new tspan\r\n return this.put(tspan).text(text)\r\n })\r\n },\r\n Text: {\r\n newLine: function (text = '') {\r\n return this.tspan(text).newLine()\r\n }\r\n }\r\n})\r\n\r\nregister(Tspan, 'Tspan')\r\n","import { cx, cy, height, width, x, y } from '../modules/core/circled.js'\r\nimport {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Shape from './Shape.js'\r\n\r\nexport default class Circle extends Shape {\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('circle', node), attrs)\r\n }\r\n\r\n radius (r) {\r\n return this.attr('r', r)\r\n }\r\n\r\n // Radius x value\r\n rx (rx) {\r\n return this.attr('r', rx)\r\n }\r\n\r\n // Alias radius x value\r\n ry (ry) {\r\n return this.rx(ry)\r\n }\r\n\r\n size (size) {\r\n return this.radius(new SVGNumber(size).divide(2))\r\n }\r\n}\r\n\r\nextend(Circle, { x, y, cx, cy, width, height })\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create circle element\r\n circle: wrapWithAttrCheck(function (size = 0) {\r\n return this.put(new Circle())\r\n .size(size)\r\n .move(0, 0)\r\n })\r\n }\r\n})\r\n\r\nregister(Circle, 'Circle')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class ClipPath extends Container {\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('clipPath', node), attrs)\r\n }\r\n\r\n // Unclip all clipped elements and remove itself\r\n remove () {\r\n // unclip all targets\r\n this.targets().forEach(function (el) {\r\n el.unclip()\r\n })\r\n\r\n // remove clipPath from parent\r\n return super.remove()\r\n }\r\n\r\n targets () {\r\n return baseFind('svg [clip-path*=\"' + this.id() + '\"]')\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create clipping element\r\n clip: wrapWithAttrCheck(function () {\r\n return this.defs().put(new ClipPath())\r\n })\r\n },\r\n Element: {\r\n // Distribute clipPath to svg element\r\n clipper () {\r\n return this.reference('clip-path')\r\n },\r\n\r\n clipWith (element) {\r\n // use given clip or create a new one\r\n const clipper = element instanceof ClipPath\r\n ? element\r\n : this.parent().clip().add(element)\r\n\r\n // apply mask\r\n return this.attr('clip-path', 'url(\"#' + clipper.id() + '\")')\r\n },\r\n\r\n // Unclip element\r\n unclip () {\r\n return this.attr('clip-path', null)\r\n }\r\n }\r\n})\r\n\r\nregister(ClipPath, 'ClipPath')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Element from './Element.js'\r\n\r\nexport default class ForeignObject extends Element {\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('foreignObject', node), attrs)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n foreignObject: wrapWithAttrCheck(function (width, height) {\r\n return this.put(new ForeignObject()).size(width, height)\r\n })\r\n }\r\n})\r\n\r\nregister(ForeignObject, 'ForeignObject')\r\n","import Matrix from '../../types/Matrix.js'\nimport Point from '../../types/Point.js'\nimport { proportionalSize } from '../../utils/utils.js'\n\nexport function dmove (dx, dy) {\n this.children().forEach((child, i) => {\n\n let bbox\n\n // We have to wrap this for elements that dont have a bbox\n // e.g. title and other descriptive elements\n try {\n // Get the childs bbox\n bbox = child.bbox()\n } catch (e) {\n return\n }\n\n // Get childs matrix\n const m = new Matrix(child)\n // Translate childs matrix by amount and\n // transform it back into parents space\n const matrix = m.translate(dx, dy).transform(m.inverse())\n // Calculate new x and y from old box\n const p = new Point(bbox.x, bbox.y).transform(matrix)\n // Move element\n child.move(p.x, p.y)\n })\n\n return this\n}\n\nexport function dx (dx) {\n return this.dmove(dx, 0)\n}\n\nexport function dy (dy) {\n return this.dmove(0, dy)\n}\n\nexport function height (height, box = this.bbox()) {\n if (height == null) return box.height\n return this.size(box.width, height, box)\n}\n\nexport function move (x = 0, y = 0, box = this.bbox()) {\n const dx = x - box.x\n const dy = y - box.y\n\n return this.dmove(dx, dy)\n}\n\nexport function size (width, height, box = this.bbox()) {\n const p = proportionalSize(this, width, height, box)\n const scaleX = p.width / box.width\n const scaleY = p.height / box.height\n\n this.children().forEach((child, i) => {\n const o = new Point(box).transform(new Matrix(child).inverse())\n child.scale(scaleX, scaleY, o.x, o.y)\n })\n\n return this\n}\n\nexport function width (width, box = this.bbox()) {\n if (width == null) return box.width\n return this.size(width, box.height, box)\n}\n\nexport function x (x, box = this.bbox()) {\n if (x == null) return box.x\n return this.move(x, box.y, box)\n}\n\nexport function y (y, box = this.bbox()) {\n if (y == null) return box.y\n return this.move(box.x, y, box)\n}\n","import { nodeOrNew, register, wrapWithAttrCheck, extend } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\nimport * as containerGeometry from '../modules/core/containerGeometry.js'\r\n\r\nexport default class G extends Container {\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('g', node), attrs)\r\n }\r\n}\r\n\r\nextend(G, containerGeometry)\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a group element\r\n group: wrapWithAttrCheck(function () {\r\n return this.put(new G())\r\n })\r\n }\r\n})\r\n\r\nregister(G, 'G')\r\n","import { nodeOrNew, register, wrapWithAttrCheck, extend } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Container from './Container.js'\r\nimport * as containerGeometry from '../modules/core/containerGeometry.js'\r\n\r\nexport default class A extends Container {\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('a', node), attrs)\r\n }\r\n\r\n // Link target attribute\r\n target (target) {\r\n return this.attr('target', target)\r\n }\r\n\r\n // Link url\r\n to (url) {\r\n return this.attr('href', url, xlink)\r\n }\r\n\r\n}\r\n\r\nextend(A, containerGeometry)\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a hyperlink element\r\n link: wrapWithAttrCheck(function (url) {\r\n return this.put(new A()).to(url)\r\n })\r\n },\r\n Element: {\r\n unlink () {\r\n const link = this.linker()\r\n\r\n if (!link) return this\r\n\r\n const parent = link.parent()\r\n\r\n if (!parent) {\r\n return this.remove()\r\n }\r\n\r\n const index = parent.index(link)\r\n parent.add(this, index)\r\n\r\n link.remove()\r\n return this\r\n },\r\n linkTo (url) {\r\n // reuse old link if possible\r\n let link = this.linker()\r\n\r\n if (!link) {\r\n link = new A()\r\n this.wrap(link)\r\n }\r\n\r\n if (typeof url === 'function') {\r\n url.call(link, link)\r\n } else {\r\n link.to(url)\r\n }\r\n\r\n return this\r\n },\r\n linker () {\r\n const link = this.parent()\r\n if (link && link.node.nodeName.toLowerCase() === 'a') {\r\n return link\r\n }\r\n\r\n return null\r\n }\r\n }\r\n})\r\n\r\nregister(A, 'A')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class Mask extends Container {\r\n // Initialize node\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('mask', node), attrs)\r\n }\r\n\r\n // Unmask all masked elements and remove itself\r\n remove () {\r\n // unmask all targets\r\n this.targets().forEach(function (el) {\r\n el.unmask()\r\n })\r\n\r\n // remove mask from parent\r\n return super.remove()\r\n }\r\n\r\n targets () {\r\n return baseFind('svg [mask*=\"' + this.id() + '\"]')\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n mask: wrapWithAttrCheck(function () {\r\n return this.defs().put(new Mask())\r\n })\r\n },\r\n Element: {\r\n // Distribute mask to svg element\r\n masker () {\r\n return this.reference('mask')\r\n },\r\n\r\n maskWith (element) {\r\n // use given mask or create a new one\r\n const masker = element instanceof Mask\r\n ? element\r\n : this.parent().mask().add(element)\r\n\r\n // apply mask\r\n return this.attr('mask', 'url(\"#' + masker.id() + '\")')\r\n },\r\n\r\n // Unmask element\r\n unmask () {\r\n return this.attr('mask', null)\r\n }\r\n }\r\n})\r\n\r\nregister(Mask, 'Mask')\r\n","import { nodeOrNew, register } from '../utils/adopter.js'\r\nimport Element from './Element.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\n\r\nexport default class Stop extends Element {\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('stop', node), attrs)\r\n }\r\n\r\n // add color stops\r\n update (o) {\r\n if (typeof o === 'number' || o instanceof SVGNumber) {\r\n o = {\r\n offset: arguments[0],\r\n color: arguments[1],\r\n opacity: arguments[2]\r\n }\r\n }\r\n\r\n // set attributes\r\n if (o.opacity != null) this.attr('stop-opacity', o.opacity)\r\n if (o.color != null) this.attr('stop-color', o.color)\r\n if (o.offset != null) this.attr('offset', new SVGNumber(o.offset))\r\n\r\n return this\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Gradient: {\r\n // Add a color stop\r\n stop: function (offset, color, opacity) {\r\n return this.put(new Stop()).update(offset, color, opacity)\r\n }\r\n }\r\n})\r\n\r\nregister(Stop, 'Stop')\r\n","import { nodeOrNew, register } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { unCamelCase } from '../utils/utils.js'\r\nimport Element from './Element.js'\r\n\r\nfunction cssRule (selector, rule) {\r\n if (!selector) return ''\r\n if (!rule) return selector\r\n\r\n let ret = selector + '{'\r\n\r\n for (const i in rule) {\r\n ret += unCamelCase(i) + ':' + rule[i] + ';'\r\n }\r\n\r\n ret += '}'\r\n\r\n return ret\r\n}\r\n\r\nexport default class Style extends Element {\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('style', node), attrs)\r\n }\r\n\r\n addText (w = '') {\r\n this.node.textContent += w\r\n return this\r\n }\r\n\r\n font (name, src, params = {}) {\r\n return this.rule('@font-face', {\r\n fontFamily: name,\r\n src: src,\r\n ...params\r\n })\r\n }\r\n\r\n rule (selector, obj) {\r\n return this.addText(cssRule(selector, obj))\r\n }\r\n}\r\n\r\nregisterMethods('Dom', {\r\n style (selector, obj) {\r\n return this.put(new Style()).rule(selector, obj)\r\n },\r\n fontface (name, src, params) {\r\n return this.put(new Style()).font(name, src, params)\r\n }\r\n})\r\n\r\nregister(Style, 'Style')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Path from './Path.js'\r\nimport PathArray from '../types/PathArray.js'\r\nimport Text from './Text.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class TextPath extends Text {\r\n // Initialize node\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('textPath', node), attrs)\r\n }\r\n\r\n // return the array of the path track element\r\n array () {\r\n const track = this.track()\r\n\r\n return track ? track.array() : null\r\n }\r\n\r\n // Plot path if any\r\n plot (d) {\r\n const track = this.track()\r\n let pathArray = null\r\n\r\n if (track) {\r\n pathArray = track.plot(d)\r\n }\r\n\r\n return (d == null) ? pathArray : this\r\n }\r\n\r\n // Get the path element\r\n track () {\r\n return this.reference('href')\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n textPath: wrapWithAttrCheck(function (text, path) {\r\n // Convert text to instance if needed\r\n if (!(text instanceof Text)) {\r\n text = this.text(text)\r\n }\r\n\r\n return text.path(path)\r\n })\r\n },\r\n Text: {\r\n // Create path for text to run on\r\n path: wrapWithAttrCheck(function (track, importNodes = true) {\r\n const textPath = new TextPath()\r\n\r\n // if track is a path, reuse it\r\n if (!(track instanceof Path)) {\r\n // create path element\r\n track = this.defs().path(track)\r\n }\r\n\r\n // link textPath to path and add content\r\n textPath.attr('href', '#' + track, xlink)\r\n\r\n // Transplant all nodes from text to textPath\r\n let node\r\n if (importNodes) {\r\n while ((node = this.node.firstChild)) {\r\n textPath.node.appendChild(node)\r\n }\r\n }\r\n\r\n // add textPath element as child node and return textPath\r\n return this.put(textPath)\r\n }),\r\n\r\n // Get the textPath children\r\n textPath () {\r\n return this.findOne('textPath')\r\n }\r\n },\r\n Path: {\r\n // creates a textPath from this path\r\n text: wrapWithAttrCheck(function (text) {\r\n // Convert text to instance if needed\r\n if (!(text instanceof Text)) {\r\n text = new Text().addTo(this.parent()).text(text)\r\n }\r\n\r\n // Create textPath from text and path and return\r\n return text.path(this)\r\n }),\r\n\r\n targets () {\r\n return baseFind('svg textPath').filter((node) => {\r\n return (node.attr('href') || '').includes(this.id())\r\n })\r\n\r\n // Does not work in IE11. Use when IE support is dropped\r\n // return baseFind('svg textPath[*|href*=\"' + this.id() + '\"]')\r\n }\r\n }\r\n})\r\n\r\nTextPath.prototype.MorphArray = PathArray\r\nregister(TextPath, 'TextPath')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Shape from './Shape.js'\r\n\r\nexport default class Use extends Shape {\r\n constructor (node, attrs = node) {\r\n super(nodeOrNew('use', node), attrs)\r\n }\r\n\r\n // Use element as a reference\r\n use (element, file) {\r\n // Set lined element\r\n return this.attr('href', (file || '') + '#' + element, xlink)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a use element\r\n use: wrapWithAttrCheck(function (element, file) {\r\n return this.put(new Use()).use(element, file)\r\n })\r\n }\r\n})\r\n\r\nregister(Use, 'Use')\r\n","/* Optional Modules */\r\nimport './modules/optional/arrange.js'\r\nimport './modules/optional/class.js'\r\nimport './modules/optional/css.js'\r\nimport './modules/optional/data.js'\r\nimport './modules/optional/memory.js'\r\nimport './modules/optional/sugar.js'\r\nimport './modules/optional/transform.js'\r\n\r\nimport { extend, makeInstance } from './utils/adopter.js'\r\nimport { getMethodNames, getMethodsFor } from './utils/methods.js'\r\nimport Box from './types/Box.js'\r\nimport Color from './types/Color.js'\r\nimport Container from './elements/Container.js'\r\nimport Defs from './elements/Defs.js'\r\nimport Dom from './elements/Dom.js'\r\nimport Element from './elements/Element.js'\r\nimport Ellipse from './elements/Ellipse.js'\r\nimport EventTarget from './types/EventTarget.js'\r\nimport Fragment from './elements/Fragment.js'\r\nimport Gradient from './elements/Gradient.js'\r\nimport Image from './elements/Image.js'\r\nimport Line from './elements/Line.js'\r\nimport List from './types/List.js'\r\nimport Marker from './elements/Marker.js'\r\nimport Matrix from './types/Matrix.js'\r\nimport Morphable, {\r\n NonMorphable,\r\n ObjectBag,\r\n TransformBag,\r\n makeMorphable,\r\n registerMorphableType\r\n} from './animation/Morphable.js'\r\nimport Path from './elements/Path.js'\r\nimport PathArray from './types/PathArray.js'\r\nimport Pattern from './elements/Pattern.js'\r\nimport PointArray from './types/PointArray.js'\r\nimport Polygon from './elements/Polygon.js'\r\nimport Polyline from './elements/Polyline.js'\r\nimport Rect from './elements/Rect.js'\r\nimport Runner from './animation/Runner.js'\r\nimport SVGArray from './types/SVGArray.js'\r\nimport SVGNumber from './types/SVGNumber.js'\r\nimport Shape from './elements/Shape.js'\r\nimport Svg from './elements/Svg.js'\r\nimport Symbol from './elements/Symbol.js'\r\nimport Text from './elements/Text.js'\r\nimport Tspan from './elements/Tspan.js'\r\nimport * as defaults from './modules/core/defaults.js'\r\nimport * as utils from './utils/utils.js'\r\nimport * as namespaces from './modules/core/namespaces.js'\r\nimport * as regex from './modules/core/regex.js'\r\n\r\nexport {\r\n Morphable,\r\n registerMorphableType,\r\n makeMorphable,\r\n TransformBag,\r\n ObjectBag,\r\n NonMorphable\r\n}\r\n\r\nexport { defaults, utils, namespaces, regex }\r\nexport const SVG = makeInstance\r\nexport { default as parser } from './modules/core/parser.js'\r\nexport { default as find } from './modules/core/selector.js'\r\nexport * from './modules/core/event.js'\r\nexport * from './utils/adopter.js'\r\nexport {\r\n getWindow,\r\n registerWindow,\r\n restoreWindow,\r\n saveWindow,\r\n withWindow\r\n} from './utils/window.js'\r\n\r\n/* Animation Modules */\r\nexport { default as Animator } from './animation/Animator.js'\r\nexport { Controller, Ease, PID, Spring, easing } from './animation/Controller.js'\r\nexport { default as Queue } from './animation/Queue.js'\r\nexport { default as Runner } from './animation/Runner.js'\r\nexport { default as Timeline } from './animation/Timeline.js'\r\n\r\n/* Types */\r\nexport { default as Array } from './types/SVGArray.js'\r\nexport { default as Box } from './types/Box.js'\r\nexport { default as Color } from './types/Color.js'\r\nexport { default as EventTarget } from './types/EventTarget.js'\r\nexport { default as Matrix } from './types/Matrix.js'\r\nexport { default as Number } from './types/SVGNumber.js'\r\nexport { default as PathArray } from './types/PathArray.js'\r\nexport { default as Point } from './types/Point.js'\r\nexport { default as PointArray } from './types/PointArray.js'\r\nexport { default as List } from './types/List.js'\r\n\r\n/* Elements */\r\nexport { default as Circle } from './elements/Circle.js'\r\nexport { default as ClipPath } from './elements/ClipPath.js'\r\nexport { default as Container } from './elements/Container.js'\r\nexport { default as Defs } from './elements/Defs.js'\r\nexport { default as Dom } from './elements/Dom.js'\r\nexport { default as Element } from './elements/Element.js'\r\nexport { default as Ellipse } from './elements/Ellipse.js'\r\nexport { default as ForeignObject } from './elements/ForeignObject.js'\r\nexport { default as Fragment } from './elements/Fragment.js'\r\nexport { default as Gradient } from './elements/Gradient.js'\r\nexport { default as G } from './elements/G.js'\r\nexport { default as A } from './elements/A.js'\r\nexport { default as Image } from './elements/Image.js'\r\nexport { default as Line } from './elements/Line.js'\r\nexport { default as Marker } from './elements/Marker.js'\r\nexport { default as Mask } from './elements/Mask.js'\r\nexport { default as Path } from './elements/Path.js'\r\nexport { default as Pattern } from './elements/Pattern.js'\r\nexport { default as Polygon } from './elements/Polygon.js'\r\nexport { default as Polyline } from './elements/Polyline.js'\r\nexport { default as Rect } from './elements/Rect.js'\r\nexport { default as Shape } from './elements/Shape.js'\r\nexport { default as Stop } from './elements/Stop.js'\r\nexport { default as Style } from './elements/Style.js'\r\nexport { default as Svg } from './elements/Svg.js'\r\nexport { default as Symbol } from './elements/Symbol.js'\r\nexport { default as Text } from './elements/Text.js'\r\nexport { default as TextPath } from './elements/TextPath.js'\r\nexport { default as Tspan } from './elements/Tspan.js'\r\nexport { default as Use } from './elements/Use.js'\r\n\r\nextend([\r\n Svg,\r\n Symbol,\r\n Image,\r\n Pattern,\r\n Marker\r\n], getMethodsFor('viewbox'))\r\n\r\nextend([\r\n Line,\r\n Polyline,\r\n Polygon,\r\n Path\r\n], getMethodsFor('marker'))\r\n\r\nextend(Text, getMethodsFor('Text'))\r\nextend(Path, getMethodsFor('Path'))\r\n\r\nextend(Defs, getMethodsFor('Defs'))\r\n\r\nextend([\r\n Text,\r\n Tspan\r\n], getMethodsFor('Tspan'))\r\n\r\nextend([\r\n Rect,\r\n Ellipse,\r\n Gradient,\r\n Runner\r\n], getMethodsFor('radius'))\r\n\r\nextend(EventTarget, getMethodsFor('EventTarget'))\r\nextend(Dom, getMethodsFor('Dom'))\r\nextend(Element, getMethodsFor('Element'))\r\nextend(Shape, getMethodsFor('Shape'))\r\nextend([ Container, Fragment ], getMethodsFor('Container'))\r\nextend(Gradient, getMethodsFor('Gradient'))\r\n\r\nextend(Runner, getMethodsFor('Runner'))\r\n\r\nList.extend(getMethodNames())\r\n\r\nregisterMorphableType([\r\n SVGNumber,\r\n Color,\r\n Box,\r\n Matrix,\r\n SVGArray,\r\n PointArray,\r\n PathArray\r\n])\r\n\r\nmakeMorphable()\r\n","import * as svgMembers from './main.js'\r\nimport { makeInstance } from './utils/adopter.js'\r\n\r\n// The main wrapping element\r\nexport default function SVG (element, isHTML) {\r\n return makeInstance(element, isHTML)\r\n}\r\n\r\nObject.assign(SVG, svgMembers)\r\n"],"names":["methods","names","registerMethods","name","m","Array","isArray","_name","addMethodNames","Object","getOwnPropertyNames","assign","getMethodsFor","getMethodNames","Set","_names","push","map","array","block","i","il","length","result","filter","radians","d","Math","PI","degrees","r","camelCase","s","toLowerCase","replace","g","toUpperCase","unCamelCase","capitalize","charAt","slice","proportionalSize","element","width","height","box","bbox","getOrigin","o","origin","ox","originX","oy","originY","x","y","condX","condY","includes","svg","html","xmlns","xlink","svgjs","globals","window","document","registerWindow","win","doc","save","saveWindow","restoreWindow","withWindow","fn","getWindow","Base","elements","root","create","ns","createElementNS","makeInstance","isHTML","adopter","querySelector","wrapper","createElement","innerHTML","firstChild","removeChild","nodeOrNew","node","Node","adopt","instance","nodeName","Fragment","className","mockAdopt","mock","register","asRoot","prototype","getClass","did","eid","assignNewId","children","id","extend","modules","key","wrapWithAttrCheck","args","constructor","apply","attr","siblings","parent","position","index","next","prev","forward","p","add","remove","backward","front","back","before","after","insertBefore","insertAfter","numberAndUnit","hex","rgb","reference","transforms","whitespace","isHex","isRgb","isBlank","isNumber","isImage","delimiter","isPathLetter","classes","trim","split","hasClass","indexOf","addClass","join","removeClass","c","toggleClass","css","style","val","ret","arguments","cssText","el","forEach","t","cased","test","show","hide","visible","data","a","v","attributes","JSON","parse","e","stringify","remember","k","memory","forget","_memory","sixDigitHex","substring","componentHex","component","integer","round","bounded","max","min","toString","is","object","space","getParameters","b","params","_a","_b","_c","_d","z","h","l","cieSpace","hueToRgb","q","Color","inputs","init","isColor","color","random","mode","u","sin","pi","grey","Error","cmyk","hsl","isGrey","delta","values","noWhitespace","exec","parseInt","hexParse","components","lab","xyz","lch","sqrt","atan2","dToR","cos","yL","xL","zL","ct","mx","nm","rU","gU","bU","pow","bd","toArray","toHex","_clamped","toRgb","rV","gV","bV","string","r255","g255","b255","rL","gL","bL","xU","yU","zU","format","Point","clone","base","source","transform","transformO","Matrix","isMatrixLike","f","point","screenCTM","inverse","closeEnough","threshold","abs","formatTransforms","flipBoth","flip","flipX","flipY","skewX","skew","isFinite","skewY","scaleX","scale","scaleY","shear","theta","rotate","around","px","positionX","NaN","py","positionY","translate","tx","translateX","ty","translateY","relative","rx","relativeX","ry","relativeY","fromArray","matrixMultiply","cx","cy","matrix","aroundO","dx","dy","translateO","lmultiplyO","decompose","determinant","ccw","sx","thetaRad","st","lam","sy","equals","other","comp","axis","flipO","scaleO","Element","matrixify","parseFloat","call","inverseO","det","na","nb","nc","nd","ne","nf","lmultiply","multiply","multiplyO","rotateO","shearO","lx","skewO","tan","ly","current","transformer","valueOf","ctm","getCTM","isRoot","rect","getScreenCTM","parser","nodes","size","path","parentNode","body","documentElement","addTo","isNulledBox","domContains","contains","Box","addOffset","pageXOffset","pageYOffset","left","top","w","x2","y2","isNulled","merge","xMin","Infinity","xMax","yMin","yMax","pts","getBox","getBBoxFn","retry","getBBox","rbox","getRBox","getBoundingClientRect","inside","viewbox","zoom","level","clientWidth","clientHeight","zoomX","zoomY","zoomAmount","Number","MAX_SAFE_INTEGER","List","arr","each","fnOrMethodName","concat","reserved","reduce","obj","attrs","baseFind","query","querySelectorAll","find","findOne","listenerId","windowEvents","getEvents","n","getEventHolder","events","getEventTarget","clearEvents","on","listener","binding","options","bind","bag","_svgjsListenerId","event","ev","addEventListener","off","namespace","removeEventListener","dispatch","Event","dispatchEvent","CustomEvent","detail","cancelable","EventTarget","type","j","defaultPrevented","fire","noop","timeline","duration","ease","delay","fill","stroke","opacity","offset","SVGArray","toSet","SVGNumber","convert","unit","value","divide","number","isNaN","match","minus","plus","times","toJSON","hooks","registerAttrHook","nodeValue","last","curr","removeAttribute","getAttribute","defaults","_val","hook","leading","setAttributeNS","setAttribute","rebuild","Dom","removeNamespace","SVGElement","appendChild","childNodes","put","clear","hasChildNodes","lastChild","deep","writeDataToDom","cloneNode","first","get","has","htmlOrFn","outerHTML","xml","matches","selector","matcher","matchesSelector","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","oMatchesSelector","putIn","removeElement","replaceChild","precision","factor","svgOrFn","outerSVG","words","text","textContent","wrap","xmlOrFn","outerXML","_this","well","fragment","createDocumentFragment","len","firstElementChild","dom","hasAttribute","setData","center","defs","dmove","move","parents","until","keys","sugar","prefix","extension","mat","angle","direction","radius","_element","getTotalLength","pointAt","getPointAtLength","font","untransform","str","kv","reverse","toParent","pCtm","toRoot","decomposed","cleanRelative","Container","flatten","ungroup","Defs","Shape","Ellipse","circled","ellipse","from","fx","fy","x1","y1","to","Gradient","targets","url","update","gradiented","gradient","Pattern","pattern","patternUnits","Image","load","callback","img","src","image","PointArray","maxX","maxY","minX","minY","points","pop","toLine","MorphArray","Line","plot","pointed","line","Marker","orient","ref","marker","makeSetterGetter","easing","pos","bezier","steps","stepPosition","jumps","beforeFlag","step","floor","jumping","Stepper","done","Ease","Controller","stepper","target","dt","recalculate","_duration","overshoot","_overshoot","eps","os","log","zeta","wn","Spring","velocity","acceleration","newPosition","PID","windup","integral","error","_windup","P","I","D","segmentParameters","M","L","H","V","C","S","Q","T","A","Z","pathHandlers","p0","mlhvqtcsaz","jl","makeAbsolut","command","segment","segmentComplete","startNewSegment","token","inNumber","finalizeNumber","pathLetter","lastCommand","small","isSmall","inSegment","pointSeen","hasExponent","finalizeSegment","absolute","segments","isArcFlag","isArc","isExponential","lastToken","pathParser","toAbsolute","arrayToString","PathArray","getClassForType","NonMorphable","morphableTypes","ObjectBag","Morphable","_stepper","_from","_to","_type","_context","_morphObj","at","complete","_set","align","TransformBag","sortByKey","splice","objOrArr","entries","Type","sort","shift","num","registerMorphableType","makeMorphable","Path","_array","Polygon","polygon","poly","Polyline","polyline","Rect","Queue","_first","_last","item","Animator","nextDraw","frames","timeouts","immediates","timer","performance","Date","frame","run","requestAnimationFrame","_draw","timeout","time","now","immediate","cancelFrame","clearTimeout","cancelImmediate","nextTimeout","lastTimeout","nextFrame","lastFrame","nextImmediate","makeSchedule","runnerInfo","start","runner","end","defaultSource","Timeline","timeSource","_timeSource","_startTime","_speed","_persist","_nextFrame","_paused","_runners","_runnerIds","_lastRunnerId","_time","_lastSourceTime","_lastStepTime","_step","_stepFn","_stepImmediate","active","finish","getEndTimeOfTimeline","pause","getEndTime","lastRunnerInfo","getLastRunnerInfo","lastDuration","lastStartTime","endTimes","getRunnerInfoById","_continue","persist","dtOrForever","play","updateTime","yes","currentSpeed","speed","positive","schedule","when","absoluteStartTime","endTime","unschedule","info","seek","stop","immediateStep","dtSource","dtTime","dtToStart","reset","runnersLeft","finished","_timeline","Runner","_queue","_isDeclarative","_history","enabled","_lastTime","_reseted","transformId","_haveReversed","_reverse","_loopsDone","_swing","_wait","_times","_frameId","sanitise","swing","wait","addTransform","animate","loop","clearTransform","clearTransformsFromQueue","isTransform","during","queue","_prepareRunner","loops","loopDuration","loopsDone","relativeTime","whole","partial","swinging","backwards","uncliped","clipped","swingForward","forwards","progress","initFn","runFn","retargetFn","initialiser","retarget","initialised","running","_lastPosition","justStarted","justFinished","declarative","converged","_initialise","_run","needsIt","_rememberMorpher","method","morpher","caller","positionOrDt","allfinished","_tryRetarget","extra","FakeRunner","mergeWith","getRunnerTransform","mergeTransforms","runners","_transformationRunners","netTransform","RunnerArray","ids","clearBefore","deleteCnt","edit","newRunner","getByID","lastRunner","condition","by","_clearTransformRunnersBefore","currentRunner","_currentTransform","_addRunner","difference","styleAttr","nameOrAttrs","newToAttrs","newKeys","differences","addedFromAttrs","oldFromAttrs","oldToAttrs","newLevel","newPoint","affine","isMatrix","currentAngle","startTransform","setup","undefined","rTarget","rCurrent","possibilities","distances","shortest","affineParameters","newTransforms","_queueNumber","_queueNumberDelta","newTo","_queueObject","Svg","version","nested","Symbol","symbol","plain","_build","createTextNode","getComputedTextLength","ax","ay","amove","build","Text","_rebuild","self","blankLineOffset","fontSize","getComputedStyle","getPropertyValue","newLined","firstLine","nodeType","newLine","textable","Tspan","tspan","Circle","circle","ClipPath","unclip","clip","clipper","clipWith","ForeignObject","foreignObject","child","G","containerGeometry","group","link","unlink","linker","linkTo","Mask","unmask","mask","masker","maskWith","Stop","cssRule","rule","Style","addText","fontFamily","fontface","TextPath","track","pathArray","textPath","importNodes","Use","use","file","SVG","svgMembers"],"mappings":"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"}