summaryrefslogtreecommitdiffstats
path: root/dist/svg.node.js.map
blob: ad81645c8436fa3a90179d2856b016dc074fdece (plain)
1
{"version":3,"file":"svg.node.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/modules/core/event.js","../src/types/Color.js","../src/types/Point.js","../src/modules/core/parser.js","../src/types/Box.js","../src/types/Matrix.js","../src/types/ArrayPolyfill.js","../src/types/List.js","../src/modules/core/selector.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","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread.js","../src/modules/optional/transform.js","../src/modules/core/circled.js","../src/elements/Shape.js","../src/elements/Circle.js","../src/elements/Container.js","../src/elements/Defs.js","../src/elements/Ellipse.js","../src/elements/Stop.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","../node_modules/core-js/modules/_global.js","../node_modules/core-js/modules/_core.js","../node_modules/core-js/modules/_is-object.js","../node_modules/core-js/modules/_an-object.js","../node_modules/core-js/modules/_fails.js","../node_modules/core-js/modules/_descriptors.js","../node_modules/core-js/modules/_dom-create.js","../node_modules/core-js/modules/_ie8-dom-define.js","../node_modules/core-js/modules/_to-primitive.js","../node_modules/core-js/modules/_object-dp.js","../node_modules/core-js/modules/_property-desc.js","../node_modules/core-js/modules/_hide.js","../node_modules/core-js/modules/_has.js","../node_modules/core-js/modules/_uid.js","../node_modules/core-js/modules/_redefine.js","../node_modules/core-js/modules/_a-function.js","../node_modules/core-js/modules/_ctx.js","../node_modules/core-js/modules/_export.js","../node_modules/core-js/modules/_defined.js","../node_modules/core-js/modules/_to-object.js","../node_modules/core-js/modules/_strict-method.js","../node_modules/core-js/modules/es6.array.sort.js","../src/animation/Controller.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/ClipPath.js","../src/elements/G.js","../src/elements/A.js","../src/elements/Mask.js","../src/elements/Style.js","../src/elements/TextPath.js","../src/elements/Use.js","../src/main.js"],"sourcesContent":["const methods = {}\r\nconst names = []\r\n\r\nexport function registerMethods (name, m) {\r\n  if (Array.isArray(name)) {\r\n    for (let _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 (let _name in name) {\r\n      registerMethods(_name, name[_name])\r\n    }\r\n    return\r\n  }\r\n\r\n  addMethodNames(Object.keys(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  var i\r\n  var il = array.length\r\n  var 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  var i\r\n  var il = array.length\r\n  var result = []\r\n\r\n  for (i = 0; i < il; i++) {\r\n    if (block(array[i])) { result.push(array[i]) }\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 string seperated\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) {\r\n  if (width == null || height == null) {\r\n    var 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\nexport function getOrigin (o, element) {\r\n  // Allow origin or around as the names\r\n  let origin = o.origin // o.around == null ? o.origin : o.around\r\n  let ox, oy\r\n\r\n  // Allow the user to pass a string to rotate around a given point\r\n  if (typeof origin === 'string' || origin == null) {\r\n    // Get the bounding box of the element with no transformations applied\r\n    const string = (origin || 'center').toLowerCase().trim()\r\n    const { height, width, x, y } = element.bbox()\r\n\r\n    // Calculate the transformed x and y coordinates\r\n    let bx = string.includes('left') ? x\r\n      : string.includes('right') ? x + width\r\n        : x + width / 2\r\n    let by = string.includes('top') ? y\r\n      : string.includes('bottom') ? y + height\r\n        : y + height / 2\r\n\r\n    // Set the bounds eg : \"bottom-left\", \"Top right\", \"middle\" etc...\r\n    ox = o.ox != null ? o.ox : bx\r\n    oy = o.oy != null ? o.oy : by\r\n  } else {\r\n    ox = origin[0]\r\n    oy = origin[1]\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\r\nexport let ns = 'http://www.w3.org/2000/svg'\r\nexport let xmlns = 'http://www.w3.org/2000/xmlns/'\r\nexport let xlink = 'http://www.w3.org/1999/xlink'\r\nexport let svgjs = 'http://svgjs.com/svgjs'\r\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","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 { ns } 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 makeNode (name) {\r\n  // create element\r\n  return globals.document.createElementNS(ns, name)\r\n}\r\n\r\nexport function makeInstance (element) {\r\n  if (element instanceof Base) return element\r\n\r\n  if (typeof element === 'object') {\r\n    return adopt(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 adopt(globals.document.querySelector(element))\r\n  }\r\n\r\n  var node = makeNode('svg')\r\n  node.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 = adopt(node.firstChild)\r\n\r\n  return element\r\n}\r\n\r\nexport function nodeOrNew (name, node) {\r\n  return node instanceof globals.window.Node ? node : makeNode(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  // initialize variables\r\n  var className = capitalize(node.nodeName)\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\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.keys(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 (var 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    return adopt(node).id(eid(node.nodeName))\r\n  }\r\n\r\n  return adopt(node)\r\n}\r\n\r\n// Method for extending objects\r\nexport function extend (modules, methods, attrCheck) {\r\n  var 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      let method = methods[key]\r\n      if (attrCheck) {\r\n        method = wrapWithAttrCheck(methods[key])\r\n      }\r\n      modules[i].prototype[key] = method\r\n    }\r\n  }\r\n}\r\n\r\nexport function extendWithAttrCheck (...args) {\r\n  extend(...args, true)\r\n}\r\n\r\nexport function wrapWithAttrCheck (fn) {\r\n  return function (...args) {\r\n    let 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 curent 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  var i = this.position() + 1\r\n  var p = this.parent()\r\n\r\n  // move node one step forward\r\n  p.removeElement(this).add(this, i)\r\n\r\n  // make sure defs node is always at the top\r\n  if (typeof p.isRoot === 'function' && p.isRoot()) {\r\n    p.node.appendChild(p.defs().node)\r\n  }\r\n\r\n  return this\r\n}\r\n\r\n// Send given element one step backward\r\nexport function backward () {\r\n  var i = this.position()\r\n\r\n  if (i > 0) {\r\n    this.parent().removeElement(this).add(this, i - 1)\r\n  }\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  var p = this.parent()\r\n\r\n  // Move node forward\r\n  p.node.appendChild(this.node)\r\n\r\n  // Make sure defs node is always at the top\r\n  if (typeof p.isRoot === 'function' && p.isRoot()) {\r\n    p.node.appendChild(p.defs().node)\r\n  }\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  if (this.position() > 0) {\r\n    this.parent().removeElement(this).add(this, 0)\r\n  }\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  var 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  var 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}\r\n\r\nexport function insertAfter (element) {\r\n  element = makeInstance(element)\r\n  element.after(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 let numberAndUnit = /^([+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?)([a-z%]*)$/i\r\n\r\n// Parse hex value\r\nexport let hex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i\r\n\r\n// Parse rgb value\r\nexport let rgb = /rgb\\((\\d+),(\\d+),(\\d+)\\)/\r\n\r\n// Parse reference id\r\nexport let reference = /(#[a-z0-9\\-_]+)/i\r\n\r\n// splits a transformation chain\r\nexport let transforms = /\\)\\s*,?\\s*/\r\n\r\n// Whitespace\r\nexport let whitespace = /\\s/g\r\n\r\n// Test hex value\r\nexport let isHex = /^#[a-f0-9]{3,6}$/i\r\n\r\n// Test rgb value\r\nexport let isRgb = /^rgb\\(/\r\n\r\n// Test css declaration\r\nexport let isCss = /[^:]+:[^;]+;?/\r\n\r\n// Test for blank string\r\nexport let isBlank = /^(\\s+)?$/\r\n\r\n// Test for numeric string\r\nexport let isNumber = /^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i\r\n\r\n// Test for percent value\r\nexport let isPercent = /^-?[\\d.]+%$/\r\n\r\n// Test for image url\r\nexport let isImage = /\\.(jpg|jpeg|png|gif|svg)(\\?[^=]+.*)?/i\r\n\r\n// split at whitespace and comma\r\nexport let delimiter = /[\\s,]+/\r\n\r\n// The following regex are used to parse the d attribute of a path\r\n\r\n// Matches all hyphens which are not after an exponent\r\nexport let hyphen = /([^e])-/gi\r\n\r\n// Replaces and tests for all path letters\r\nexport let pathLetters = /[MLHVCSQTAZ]/gi\r\n\r\n// yes we need this one, too\r\nexport let isPathLetter = /[MLHVCSQTAZ]/i\r\n\r\n// matches 0.154.23.45\r\nexport let numbersWithDots = /((\\d?\\.\\d+(?:e[+-]?\\d+)?)((?:\\.\\d+(?:e[+-]?\\d+)?)+))+/gi\r\n\r\n// matches .\r\nexport let dots = /\\./g\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  var 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    var 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  let 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) { return !!el.length })\r\n      .forEach(function (el) {\r\n        let 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 in the array\r\n    if (Array.isArray(style)) {\r\n      for (let name of style) {\r\n        let 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 (let 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\n\r\n// Store data values on svg nodes\r\nexport function data (a, v, r) {\r\n  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 ? null\r\n        : r === true || typeof v === 'string' || typeof v === 'number' ? 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 (var 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 (var 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","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\n\r\nfunction getEvents (node) {\r\n  const n = makeInstance(node).getEventHolder()\r\n  if (!n.events) n.events = {}\r\n  return n.events\r\n}\r\n\r\nfunction getEventTarget (node) {\r\n  return makeInstance(node).getEventTarget()\r\n}\r\n\r\nfunction clearEvents (node) {\r\n  const n = makeInstance(node).getEventHolder()\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  var l = listener.bind(binding || node)\r\n  var bag = getEvents(node)\r\n  var n = getEventTarget(node)\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    var ev = event.split('.')[0]\r\n    var 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  var bag = getEvents(node)\r\n  var n = getEventTarget(node)\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    var ev = event && event.split('.')[0]\r\n    var ns = event && event.split('.')[1]\r\n    var 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]) { off(n, [ev, ns].join('.'), l) }\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) { off(n, [event, ns].join('.')) }\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]) { off(n, [ev, namespace].join('.')) }\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) { off(n, event) }\r\n\r\n      clearEvents(node)\r\n    }\r\n  })\r\n}\r\n\r\nexport function dispatch (node, event, data) {\r\n  var 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 })\r\n    n.dispatchEvent(event)\r\n  }\r\n  return event\r\n}\r\n","/*\r\n\r\nColor {\r\n  constructor (a, b, c, space) {\r\n    space: 'hsl'\r\n    a: 30\r\n    b: 20\r\n    c: 10\r\n  },\r\n\r\n  toRgb () { return new Color in rgb space }\r\n  toHsl () { return new Color in hsl space }\r\n  toLab () { return new Color in lab space }\r\n\r\n  toArray () { [space, a, b, c] }\r\n  fromArray () { convert it back }\r\n}\r\n\r\n// Conversions aren't always exact because of monitor profiles etc...\r\nnew Color(h, s, l, 'hsl') !== new Color(r, g, b).hsl()\r\nnew Color(100, 100, 100, [space])\r\nnew Color('hsl(30, 20, 10)')\r\n\r\n// Sugar\r\nSVG.rgb(30, 20, 50).lab()\r\nSVG.hsl()\r\nSVG.lab('rgb(100, 100, 100)')\r\n*/\r\n\r\nimport { hex, isHex, isRgb, rgb, whitespace } from '../modules/core/regex.js'\r\n\r\n// Ensure to six-based hex\r\nfunction fullHex (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\n// Component to hex value\r\nfunction compToHex (comp) {\r\n  var hex = comp.toString(16)\r\n  return hex.length === 1 ? '0' + hex : hex\r\n}\r\n\r\nexport default class Color {\r\n  constructor (...args) {\r\n    this.init(...args)\r\n  }\r\n\r\n  init (color, g, b) {\r\n    let match\r\n\r\n    // initialize defaults\r\n    this.r = 0\r\n    this.g = 0\r\n    this.b = 0\r\n\r\n    if (!color) return\r\n\r\n    // parse color\r\n    if (typeof color === 'string') {\r\n      if (isRgb.test(color)) {\r\n        // get rgb values\r\n        match = rgb.exec(color.replace(whitespace, ''))\r\n\r\n        // parse numeric values\r\n        this.r = parseInt(match[1])\r\n        this.g = parseInt(match[2])\r\n        this.b = parseInt(match[3])\r\n      } else if (isHex.test(color)) {\r\n        // get hex values\r\n        match = hex.exec(fullHex(color))\r\n\r\n        // parse numeric values\r\n        this.r = parseInt(match[1], 16)\r\n        this.g = parseInt(match[2], 16)\r\n        this.b = parseInt(match[3], 16)\r\n      }\r\n    } else if (Array.isArray(color)) {\r\n      this.r = color[0]\r\n      this.g = color[1]\r\n      this.b = color[2]\r\n    } else if (typeof color === 'object') {\r\n      this.r = color.r\r\n      this.g = color.g\r\n      this.b = color.b\r\n    } else if (arguments.length === 3) {\r\n      this.r = color\r\n      this.g = g\r\n      this.b = b\r\n    }\r\n\r\n    return this\r\n  }\r\n\r\n  // Default to hex conversion\r\n  toString () {\r\n    return this.toHex()\r\n  }\r\n\r\n  toArray () {\r\n    return [this.r, this.g, this.b]\r\n  }\r\n\r\n  // Build hex value\r\n  toHex () {\r\n    return '#' +\r\n      compToHex(Math.round(this.r)) +\r\n      compToHex(Math.round(this.g)) +\r\n      compToHex(Math.round(this.b))\r\n  }\r\n\r\n  // Build rgb value\r\n  toRgb () {\r\n    return 'rgb(' + [this.r, this.g, this.b].join() + ')'\r\n  }\r\n\r\n  // Calculate true brightness\r\n  brightness () {\r\n    return (this.r / 255 * 0.30) +\r\n      (this.g / 255 * 0.59) +\r\n      (this.b / 255 * 0.11)\r\n  }\r\n\r\n  // Testers\r\n\r\n  // Test if given value is a color string\r\n  static test (color) {\r\n    color += ''\r\n    return isHex.test(color) || isRgb.test(color)\r\n  }\r\n\r\n  // Test if given value is a rgb object\r\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  }\r\n\r\n  // Test if given value is a color\r\n  static isColor (color) {\r\n    return this.isRgb(color) || this.test(color)\r\n  }\r\n}\r\n","export default class Point {\r\n  // Initialize\r\n  constructor (...args) {\r\n    this.init(...args)\r\n  }\r\n\r\n  init (x, y) {\r\n    let source\r\n    let base = { x: 0, y: 0 }\r\n\r\n    // ensure source as object\r\n    source = Array.isArray(x) ? { x: x[0], y: x[1] }\r\n      : typeof x === 'object' ? { 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  // Clone point\r\n  clone () {\r\n    return new Point(this)\r\n  }\r\n\r\n  // transform point with matrix\r\n  transform (m) {\r\n    // Perform the matrix multiplication\r\n    var x = m.a * this.x + m.c * this.y + m.e\r\n    var y = m.b * this.x + m.d * this.y + m.f\r\n\r\n    // Return the required point\r\n    return new Point(x, y)\r\n  }\r\n\r\n  toArray () {\r\n    return [this.x, this.y]\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 { 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    let svg = makeInstance().size(2, 0)\r\n    svg.node.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    let 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    let 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 { registerMethods } from '../utils/methods.js'\r\nimport { globals } from '../utils/window.js'\r\nimport Point from './Point.js'\r\nimport parser from '../modules/core/parser.js'\r\n\r\nfunction isNulledBox (box) {\r\n  return !box.w && !box.h && !box.x && !box.y\r\n}\r\n\r\nfunction domContains (node) {\r\n  return (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 === 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  init (source) {\r\n    var base = [0, 0, 0, 0]\r\n    source = typeof source === 'string' ? source.split(delimiter).map(parseFloat)\r\n      : Array.isArray(source) ? source\r\n        : typeof source === 'object' ? [source.left != null ? source.left\r\n          : source.x, source.top != null ? source.top : source.y, source.width, source.height]\r\n          : arguments.length === 4 ? [].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  // Merge rect box with another, return a new instance\r\n  merge (box) {\r\n    let x = Math.min(this.x, box.x)\r\n    let y = Math.min(this.y, box.y)\r\n    let width = Math.max(this.x + this.width, box.x + box.width) - x\r\n    let 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  transform (m) {\r\n    let xMin = Infinity\r\n    let xMax = -Infinity\r\n    let yMin = Infinity\r\n    let yMax = -Infinity\r\n\r\n    let 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  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 this\r\n  }\r\n\r\n  toString () {\r\n    return this.x + ' ' + this.y + ' ' + this.width + ' ' + this.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  isNulled () {\r\n    return isNulledBox(this)\r\n  }\r\n}\r\n\r\nfunction getBox (cb) {\r\n  let box\r\n\r\n  try {\r\n    box = cb(this.node)\r\n\r\n    if (isNulledBox(box) && !domContains(this.node)) {\r\n      throw new Error('Element not in the dom')\r\n    }\r\n  } catch (e) {\r\n    try {\r\n      let clone = this.clone().addTo(parser().svg).show()\r\n      box = cb(clone.node)\r\n      clone.remove()\r\n    } catch (e) {\r\n      throw new Error('Getting a bounding box of element \"' + this.node.nodeName + '\" is not possible')\r\n    }\r\n  }\r\n  return box\r\n}\r\n\r\nexport function bbox () {\r\n  return new Box(getBox.call(this, (node) => node.getBBox()))\r\n}\r\n\r\nexport function rbox (el) {\r\n  let box = new Box(getBox.call(this, (node) => node.getBoundingClientRect()))\r\n  if (el) return box.transform(el.screenCTM().inverse())\r\n  return box.addOffset()\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})\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { radians } from '../utils/utils.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  // Initialize\r\n  init (source) {\r\n    var base = Matrix.fromArray([1, 0, 0, 1, 0, 0])\r\n\r\n    // ensure source as object\r\n    source = source instanceof Element ? source.matrixify()\r\n      : typeof source === 'string' ? Matrix.fromArray(source.split(delimiter).map(parseFloat))\r\n        : Array.isArray(source) ? Matrix.fromArray(source)\r\n          : (typeof source === 'object' && Matrix.isMatrixLike(source)) ? source\r\n            : (typeof source === 'object') ? new Matrix().transform(source)\r\n              : arguments.length === 6 ? 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\r\n  // Clones this matrix\r\n  clone () {\r\n    return new Matrix(this)\r\n  }\r\n\r\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      var 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    var t = Matrix.formatTransforms(o)\r\n    var current = this\r\n    let { x: ox, y: oy } = new Point(t.ox, t.oy).transform(current)\r\n\r\n    // Construct the resulting matrix\r\n    var 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      const dx = t.px ? t.px - origin.x : 0\r\n      const dy = 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\r\n  // Applies a matrix defined by its affine parameters\r\n  compose (o) {\r\n    if (o.origin) {\r\n      o.originX = o.origin[0]\r\n      o.originY = o.origin[1]\r\n    }\r\n    // Get the parameters\r\n    var ox = o.originX || 0\r\n    var oy = o.originY || 0\r\n    var sx = o.scaleX || 1\r\n    var sy = o.scaleY || 1\r\n    var lam = o.shear || 0\r\n    var theta = o.rotate || 0\r\n    var tx = o.translateX || 0\r\n    var ty = o.translateY || 0\r\n\r\n    // Apply the standard matrix\r\n    var result = new Matrix()\r\n      .translateO(-ox, -oy)\r\n      .scaleO(sx, sy)\r\n      .shearO(lam)\r\n      .rotateO(theta)\r\n      .translateO(tx, ty)\r\n      .lmultiplyO(this)\r\n      .translateO(ox, oy)\r\n    return result\r\n  }\r\n\r\n  // Decomposes this matrix into its affine parameters\r\n  decompose (cx = 0, cy = 0) {\r\n    // Get the parameters from the matrix\r\n    var a = this.a\r\n    var b = this.b\r\n    var c = this.c\r\n    var d = this.d\r\n    var e = this.e\r\n    var f = this.f\r\n\r\n    // Figure out if the winding direction is clockwise or counterclockwise\r\n    var determinant = a * d - b * c\r\n    var 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    var sx = ccw * Math.sqrt(a * a + b * b)\r\n    var thetaRad = Math.atan2(ccw * b, ccw * a)\r\n    var theta = 180 / Math.PI * thetaRad\r\n    var ct = Math.cos(thetaRad)\r\n    var 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    var lam = (a * c + b * d) / determinant\r\n    var sy = ((c * sx) / (lam * a - b)) || ((d * sx) / (lam * b + a))\r\n\r\n    // Use the translations\r\n    let tx = e - cx + cx * ct * sx + cy * (lam * ct * sx - st * sy)\r\n    let 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  }\r\n\r\n  // Left multiplies by the given matrix\r\n  multiply (matrix) {\r\n    return this.clone().multiplyO(matrix)\r\n  }\r\n\r\n  multiplyO (matrix) {\r\n    // Get the matrices\r\n    var l = this\r\n    var r = matrix instanceof Matrix\r\n      ? matrix\r\n      : new Matrix(matrix)\r\n\r\n    return Matrix.matrixMultiply(l, r, this)\r\n  }\r\n\r\n  lmultiply (matrix) {\r\n    return this.clone().lmultiplyO(matrix)\r\n  }\r\n\r\n  lmultiplyO (matrix) {\r\n    var r = this\r\n    var l = matrix instanceof Matrix\r\n      ? matrix\r\n      : new Matrix(matrix)\r\n\r\n    return Matrix.matrixMultiply(l, r, this)\r\n  }\r\n\r\n  // Inverses matrix\r\n  inverseO () {\r\n    // Get the current parameters out of the matrix\r\n    var a = this.a\r\n    var b = this.b\r\n    var c = this.c\r\n    var d = this.d\r\n    var e = this.e\r\n    var f = this.f\r\n\r\n    // Invert the 2x2 matrix in the top left\r\n    var 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    var na = d / det\r\n    var nb = -b / det\r\n    var nc = -c / det\r\n    var nd = a / det\r\n\r\n    // Apply the inverted matrix to the top right\r\n    var ne = -(na * e + nc * f)\r\n    var 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  }\r\n\r\n  inverse () {\r\n    return this.clone().inverseO()\r\n  }\r\n\r\n  // Translate matrix\r\n  translate (x, y) {\r\n    return this.clone().translateO(x, y)\r\n  }\r\n\r\n  translateO (x, y) {\r\n    this.e += x || 0\r\n    this.f += y || 0\r\n    return this\r\n  }\r\n\r\n  // Scale matrix\r\n  scale (x, y, cx, cy) {\r\n    return this.clone().scaleO(...arguments)\r\n  }\r\n\r\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    let { 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  }\r\n\r\n  // Rotate matrix\r\n  rotate (r, cx, cy) {\r\n    return this.clone().rotateO(r, cx, cy)\r\n  }\r\n\r\n  rotateO (r, cx = 0, cy = 0) {\r\n    // Convert degrees to radians\r\n    r = radians(r)\r\n\r\n    let cos = Math.cos(r)\r\n    let sin = Math.sin(r)\r\n\r\n    let { 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  }\r\n\r\n  // Flip matrix on x or y, at a given offset\r\n  flip (axis, around) {\r\n    return this.clone().flipO(axis, around)\r\n  }\r\n\r\n  flipO (axis, around) {\r\n    return axis === 'x' ? this.scaleO(-1, 1, around, 0)\r\n      : axis === 'y' ? this.scaleO(1, -1, 0, around)\r\n        : this.scaleO(-1, -1, axis, around || axis) // Define an x, y flip point\r\n  }\r\n\r\n  // Shear matrix\r\n  shear (a, cx, cy) {\r\n    return this.clone().shearO(a, cx, cy)\r\n  }\r\n\r\n  shearO (lx, cx = 0, cy = 0) {\r\n    let { 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  }\r\n\r\n  // Skew Matrix\r\n  skew (x, y, cx, cy) {\r\n    return this.clone().skewO(...arguments)\r\n  }\r\n\r\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    let lx = Math.tan(x)\r\n    let ly = Math.tan(y)\r\n\r\n    let { 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  }\r\n\r\n  // SkewX\r\n  skewX (x, cx, cy) {\r\n    return this.skew(x, 0, cx, cy)\r\n  }\r\n\r\n  skewXO (x, cx, cy) {\r\n    return this.skewO(x, 0, cx, cy)\r\n  }\r\n\r\n  // SkewY\r\n  skewY (y, cx, cy) {\r\n    return this.skew(0, y, cx, cy)\r\n  }\r\n\r\n  skewYO (y, cx, cy) {\r\n    return this.skewO(0, y, cx, cy)\r\n  }\r\n\r\n  // Transform around a center point\r\n  aroundO (cx, cy, matrix) {\r\n    var dx = cx || 0\r\n    var dy = cy || 0\r\n    return this.translateO(-dx, -dy).lmultiplyO(matrix).translateO(dx, dy)\r\n  }\r\n\r\n  around (cx, cy, matrix) {\r\n    return this.clone().aroundO(cx, cy, matrix)\r\n  }\r\n\r\n  // Check if two matrices are equal\r\n  equals (other) {\r\n    var 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  }\r\n\r\n  // Convert matrix to string\r\n  toString () {\r\n    return 'matrix(' + this.a + ',' + this.b + ',' + this.c + ',' + this.d + ',' + this.e + ',' + this.f + ')'\r\n  }\r\n\r\n  toArray () {\r\n    return [this.a, this.b, this.c, this.d, this.e, this.f]\r\n  }\r\n\r\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  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  }\r\n\r\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  }\r\n\r\n  static formatTransforms (o) {\r\n    // Get all of the parameters required to form the matrix\r\n    var flipBoth = o.flip === 'both' || o.flip === true\r\n    var flipX = o.flip && (flipBoth || o.flip === 'x') ? -1 : 1\r\n    var flipY = o.flip && (flipBoth || o.flip === 'y') ? -1 : 1\r\n    var skewX = o.skew && o.skew.length ? o.skew[0]\r\n      : isFinite(o.skew) ? o.skew\r\n        : isFinite(o.skewX) ? o.skewX\r\n          : 0\r\n    var skewY = o.skew && o.skew.length ? o.skew[1]\r\n      : isFinite(o.skew) ? o.skew\r\n        : isFinite(o.skewY) ? o.skewY\r\n          : 0\r\n    var scaleX = o.scale && o.scale.length ? o.scale[0] * flipX\r\n      : isFinite(o.scale) ? o.scale * flipX\r\n        : isFinite(o.scaleX) ? o.scaleX * flipX\r\n          : flipX\r\n    var scaleY = o.scale && o.scale.length ? o.scale[1] * flipY\r\n      : isFinite(o.scale) ? o.scale * flipY\r\n        : isFinite(o.scaleY) ? o.scaleY * flipY\r\n          : flipY\r\n    var shear = o.shear || 0\r\n    var theta = o.rotate || o.theta || 0\r\n    var origin = new Point(o.origin || o.around || o.ox || o.originX, o.oy || o.originY)\r\n    var ox = origin.x\r\n    var oy = origin.y\r\n    var position = new Point(o.position || o.px || o.positionX, o.py || o.positionY)\r\n    var px = position.x\r\n    var py = position.y\r\n    var translate = new Point(o.translate || o.tx || o.translateX, o.ty || o.translateY)\r\n    var tx = translate.x\r\n    var ty = translate.y\r\n    var relative = new Point(o.relative || o.rx || o.relativeX, o.ry || o.relativeY)\r\n    var rx = relative.x\r\n    var 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  }\r\n\r\n  // left matrix, right matrix, target matrix which is overwritten\r\n  static matrixMultiply (l, r, o) {\r\n    // Work out the product directly\r\n    var a = l.a * r.a + l.c * r.b\r\n    var b = l.b * r.a + l.d * r.b\r\n    var c = l.a * r.c + l.c * r.d\r\n    var d = l.b * r.c + l.d * r.d\r\n    var e = l.e + l.a * r.e + l.c * r.f\r\n    var 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  }\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    var rect = this.rect(1, 1)\r\n    var 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","/* eslint no-new-func: \"off\" */\r\nexport const subClassArray = (function () {\r\n  try {\r\n    // try es6 subclassing\r\n    return Function('name', 'baseClass', '_constructor', [\r\n      'baseClass = baseClass || Array',\r\n      'return {',\r\n      '  [name]: class extends baseClass {',\r\n      '    constructor (...args) {',\r\n      '      super(...args)',\r\n      '      _constructor && _constructor.apply(this, args)',\r\n      '    }',\r\n      '  }',\r\n      '}[name]'\r\n    ].join('\\n'))\r\n  } catch (e) {\r\n    // Use es5 approach\r\n    return (name, baseClass = Array, _constructor) => {\r\n      const Arr = function () {\r\n        baseClass.apply(this, arguments)\r\n        _constructor && _constructor.apply(this, arguments)\r\n      }\r\n\r\n      Arr.prototype = Object.create(baseClass.prototype)\r\n      Arr.prototype.constructor = Arr\r\n\r\n      Arr.prototype.map = function (fn) {\r\n        const arr = new Arr()\r\n        arr.push.apply(arr, Array.prototype.map.call(this, fn))\r\n        return arr\r\n      }\r\n\r\n      return Arr\r\n    }\r\n  }\r\n})()\r\n","import { extend } from '../utils/adopter.js'\r\nimport { subClassArray } from './ArrayPolyfill.js'\r\n\r\nconst List = 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      this.forEach((el) => { fnOrMethodName.call(el, el) })\r\n    } else {\r\n      return this.map(el => { return el[fnOrMethodName](...args) })\r\n    }\r\n\r\n    return this\r\n  },\r\n\r\n  toArray () {\r\n    return Array.prototype.concat.apply([], this)\r\n  }\r\n})\r\n\r\nList.extend = function (methods) {\r\n  methods = methods.reduce((obj, name) => {\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","import { dispatch, off, on } from '../modules/core/event.js'\r\nimport Base from './Base.js'\r\n\r\nexport default class EventTarget extends Base {\r\n  constructor ({ events = {} } = {}) {\r\n    super()\r\n    this.events = events\r\n  }\r\n\r\n  addEventListener () {}\r\n\r\n  dispatch (event, data) {\r\n    return dispatch(this, event, data)\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 (let i in events) {\r\n      for (let 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) {\r\n    this.dispatch(event, data)\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\nexport function noop () {}\r\n\r\n// Default animation values\r\nexport let timeline = {\r\n  duration: 400,\r\n  ease: '>',\r\n  delay: 0\r\n}\r\n\r\n// Default attribute values\r\nexport let 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  'font-size': 16,\r\n  'font-family': 'Helvetica, Arial, sans-serif',\r\n  'text-anchor': 'start'\r\n}\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { extend } from '../utils/adopter.js'\r\nimport { subClassArray } from './ArrayPolyfill.js'\r\n\r\nconst SVGArray = subClassArray('SVGArray', Array, function (arr) {\r\n  this.init(arr)\r\n})\r\n\r\nexport default SVGArray\r\n\r\nextend(SVGArray, {\r\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  toArray () {\r\n    return Array.prototype.concat.apply([], this)\r\n  },\r\n\r\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  // Parse whitespace separated string\r\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  },\r\n\r\n  clone () {\r\n    return new this.constructor(this)\r\n  },\r\n\r\n  toSet () {\r\n    return new Set(this)\r\n  }\r\n})\r\n","import { numberAndUnit } from '../modules/core/regex.js'\r\n\r\n// Module for unit convertions\r\nexport default class SVGNumber {\r\n  // Initialize\r\n  constructor (...args) {\r\n    this.init(...args)\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] === '%') { this.value /= 100 } 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  toString () {\r\n    return (this.unit === '%' ? ~~(this.value * 1e8) / 1e6\r\n      : this.unit === 's' ? this.value / 1e3\r\n        : this.value\r\n    ) + this.unit\r\n  }\r\n\r\n  toJSON () {\r\n    return this.toString()\r\n  }\r\n\r\n  toArray () {\r\n    return [this.value, this.unit]\r\n  }\r\n\r\n  valueOf () {\r\n    return this.value\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  // 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  // 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  // 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","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 (let 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') {\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 ? defaults[attr]\r\n      : isNumber.test(val) ? 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' ? 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  makeNode,\r\n  register\r\n} from '../utils/adopter.js'\r\nimport { find } from '../modules/core/selector.js'\r\nimport { globals } from '../utils/window.js'\r\nimport { map } from '../utils/utils.js'\r\nimport { ns } 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(node)\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 (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) {\r\n    return makeInstance(parent).put(this)\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    // remove defs reference\r\n    delete this._defs\r\n\r\n    return this\r\n  }\r\n\r\n  // Clone element\r\n  clone () {\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 assignNewId(this.node.cloneNode(true))\r\n  }\r\n\r\n  // Iterates over all children and invokes a given block\r\n  each (block, deep) {\r\n    var children = this.children()\r\n    var 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) {\r\n    return this.put(new Dom(makeNode(nodeName)))\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  // 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    // dont't set directly width 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    return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector)\r\n  }\r\n\r\n  // Returns the parent element instance\r\n  parent (type) {\r\n    var 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    while (parent && parent.node instanceof globals.window.SVGElement) { // FIXME: That shouldnt be neccessary\r\n      if (typeof type === 'string' ? parent.matches(type) : parent instanceof type) return parent\r\n      parent = adopt(parent.node.parentNode)\r\n    }\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    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) {\r\n    return makeInstance(parent).add(this)\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    this.node.parentNode.replaceChild(element.node, this.node)\r\n    return element\r\n  }\r\n\r\n  round (precision = 2, map) {\r\n    const factor = 10 ** precision\r\n    const attrs = this.attr()\r\n\r\n    // If we have no map, build one from attrs\r\n    if (!map) {\r\n      map = Object.keys(attrs)\r\n    }\r\n\r\n    // Holds rounded attributes\r\n    const newAttrs = {}\r\n    map.forEach((key) => {\r\n      newAttrs[key] = Math.round(attrs[key] * factor) / factor\r\n    })\r\n\r\n    this.attr(newAttrs)\r\n    return this\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  // Import raw svg\r\n  svg (svgOrFn, outerHTML) {\r\n    var well, len, fragment\r\n\r\n    if (svgOrFn === false) {\r\n      outerHTML = false\r\n      svgOrFn = null\r\n    }\r\n\r\n    // act as getter if no svg string is given\r\n    if (svgOrFn == null || typeof svgOrFn === 'function') {\r\n      // The default for exports is, that the outerNode is included\r\n      outerHTML = outerHTML == null ? true : outerHTML\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 (svgOrFn != 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 (outerHTML) {\r\n          let result = svgOrFn(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          let result = svgOrFn(this)\r\n          let _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 outerHTML\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    outerHTML = outerHTML == null ? false : outerHTML\r\n\r\n    // Create temporary holder\r\n    well = globals.document.createElementNS(ns, 'svg')\r\n    fragment = globals.document.createDocumentFragment()\r\n\r\n    // Dump raw svg\r\n    well.innerHTML = svgOrFn\r\n\r\n    // Transplant nodes into the fragment\r\n    for (len = well.children.length; len--;) {\r\n      fragment.appendChild(well.firstElementChild)\r\n    }\r\n\r\n    let parent = this.parent()\r\n\r\n    // Add the whole fragment at once\r\n    return outerHTML\r\n      ? this.replace(fragment) && parent\r\n      : this.add(fragment)\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  // 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\r\nextend(Dom, { attr, find })\r\nregister(Dom)\r\n","import { bbox, rbox } 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\nconst Svg = getClass(root)\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 ? this.x() + this.width() / 2 : 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    return this.root().defs()\r\n  }\r\n\r\n  // Get parent document\r\n  root () {\r\n    let p = this.parent(Svg)\r\n    return p && p.root()\r\n  }\r\n\r\n  getEventHolder () {\r\n    return this\r\n  }\r\n\r\n  // Set height of element\r\n  height (height) {\r\n    return this.attr('height', height)\r\n  }\r\n\r\n  // Checks whether the given point inside the bounding box of the element\r\n  inside (x, y) {\r\n    let 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\n  // Move element to given x and y values\r\n  move (x, y) {\r\n    return this.x(x).y(y)\r\n  }\r\n\r\n  // return array of all ancestors of given type up to the root svg\r\n  parents (until = globals.document) {\r\n    until = makeInstance(until)\r\n    let parents = new List()\r\n    let parent = this\r\n\r\n    while (\r\n      (parent = parent.parent()) &&\r\n      parent.node !== until.node &&\r\n      parent.node !== globals.document\r\n    ) {\r\n      parents.push(parent)\r\n    }\r\n\r\n    return parents\r\n  }\r\n\r\n  // Get referenced element form attribute value\r\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  }\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    let 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, point, ctm, screenCTM\r\n})\r\n\r\nregister(Element)\r\n","import { on, off } from '../core/event.js'\r\nimport { 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\nvar 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  var extension = {}\r\n  var 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' || 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(['Shape', '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, around) {\r\n    var directionString = typeof direction === 'string' ? direction\r\n      : isFinite(direction) ? 'both'\r\n        : 'both'\r\n    var origin = (direction === 'both' && isFinite(around)) ? [around, around]\r\n      : (direction === 'x') ? [around, 0]\r\n        : (direction === 'y') ? [0, around]\r\n          : isFinite(direction) ? [direction, direction]\r\n            : [0, 0]\r\n    this.transform({ flip: directionString, 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  // Relative move over x and y axes\r\n  dmove: function (x, y) {\r\n    return this.dx(x).dy(y)\r\n  }\r\n})\r\n\r\nregisterMethods('Element', {\r\n  // Relative move over x axis\r\n  dx: function (x) {\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: function (y) {\r\n    return this.y(new SVGNumber(y).plus(this.y()))\r\n  }\r\n})\r\n\r\nregisterMethods('radius', {\r\n  // Add x and y radius\r\n  radius: function (x, y) {\r\n    var type = (this._element || this).type\r\n    return type === 'radialGradient' || type === 'radialGradient'\r\n      ? this.attr('r', new SVGNumber(x))\r\n      : this.rx(x).ry(y == null ? x : 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    }\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\nregisterMethods('Text', {\r\n  ax (x) {\r\n    return this.attr('x', x)\r\n  },\r\n  ay (y) {\r\n    return this.attr('y', y)\r\n  },\r\n  amove (x, y) {\r\n    return this.ax(x).ay(y)\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      off(this, event)\r\n    } else {\r\n      on(this, 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","export default function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}","import defineProperty from \"./defineProperty\";\nexport default function _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n    var ownKeys = Object.keys(source);\n\n    if (typeof Object.getOwnPropertySymbols === 'function') {\n      ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n      }));\n    }\n\n    ownKeys.forEach(function (key) {\n      defineProperty(target, key, source[key]);\n    });\n  }\n\n  return target;\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  var 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      var kv = str.trim().split('(')\r\n      return [kv[0],\r\n        kv[1].split(delimiter)\r\n          .map(function (str) { return parseFloat(str) })\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) {\r\n  if (this === parent) return this\r\n  var ctm = this.screenCTM()\r\n  var pCtm = parent.screenCTM().inverse()\r\n\r\n  this.addTo(parent).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 () {\r\n  return this.toParent(this.root())\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    var decomposed = new Matrix(this).decompose()\r\n    return decomposed[o] || decomposed\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  var cleanRelative = relative === true ? this : (relative || false)\r\n  var 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 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 x == null\r\n    ? this.attr('cx')\r\n    : this.attr('cx', x)\r\n}\r\n\r\n// Move by center over y-axis\r\nexport function cy (y) {\r\n  return y == null\r\n    ? this.attr('cy')\r\n    : 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 { 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)\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) {\r\n    super(nodeOrNew('circle', node), node)\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  Element: {\r\n    // Create circle element\r\n    circle: wrapWithAttrCheck(function (size) {\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)\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) {\r\n    this.each(function () {\r\n      if (this instanceof Container) return this.flatten(parent).ungroup(parent)\r\n      return this.toParent(parent)\r\n    })\r\n\r\n    // we need this so that the root does not get removed\r\n    this.node.firstElementChild || this.remove()\r\n\r\n    return this\r\n  }\r\n\r\n  ungroup (parent) {\r\n    parent = parent || this.parent()\r\n\r\n    this.each(function () {\r\n      return this.toParent(parent)\r\n    })\r\n\r\n    this.remove()\r\n\r\n    return this\r\n  }\r\n}\r\n\r\nregister(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) {\r\n    super(nodeOrNew('defs', node), node)\r\n  }\r\n\r\n  flatten () { return this }\r\n  ungroup () { return this }\r\n}\r\n\r\nregister(Defs)\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) {\r\n    super(nodeOrNew('ellipse', node), node)\r\n  }\r\n\r\n  size (width, height) {\r\n    var 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, height) {\r\n    return this.put(new Ellipse()).size(width, height).move(0, 0)\r\n  })\r\n})\r\n\r\nregister(Ellipse)\r\n","import { nodeOrNew, register } from '../utils/adopter.js'\r\nimport Element from './Element.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\n\r\nexport default class Stop extends Element {\r\n  constructor (node) {\r\n    super(nodeOrNew('stop', node), node)\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\nregister(Stop)\r\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 Stop from './Stop.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  // Add a color stop\r\n  stop (offset, color, opacity) {\r\n    return this.put(new Stop()).update(offset, color, opacity)\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  // Alias string convertion to fill\r\n  toString () {\r\n    return this.url()\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  targets () {\r\n    return baseFind('svg [fill*=\"' + this.id() + '\"]')\r\n  }\r\n\r\n  bbox () {\r\n    return new Box()\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: wrapWithAttrCheck(function (type, block) {\r\n      return this.defs().gradient(type, block)\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)\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) {\r\n    super(nodeOrNew('pattern', node), node)\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  // 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  // Alias string convertion to fill\r\n  toString () {\r\n    return this.url()\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  targets () {\r\n    return baseFind('svg [fill*=\"' + this.id() + '\"]')\r\n  }\r\n\r\n  bbox () {\r\n    return new Box()\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)\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) {\r\n    super(nodeOrNew('image', node), node)\r\n  }\r\n\r\n  // (re)load image\r\n  load (url, callback) {\r\n    if (!url) return this\r\n\r\n    var img = new globals.window.Image()\r\n\r\n    on(img, 'load', function (e) {\r\n      var 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)\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { extend } from '../utils/adopter.js'\r\nimport { subClassArray } from './ArrayPolyfill.js'\r\nimport SVGArray from './SVGArray.js'\r\n\r\nconst PointArray = subClassArray('PointArray', SVGArray)\r\n\r\nexport default PointArray\r\n\r\nextend(PointArray, {\r\n  // Convert array to string\r\n  toString () {\r\n    // convert to a poly point string\r\n    for (var i = 0, il = this.length, array = []; 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  // 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  // Get morphed array at given position\r\n  at (pos) {\r\n    // make sure a destination is defined\r\n    if (!this.destination) return this\r\n\r\n    // generate morphed point string\r\n    for (var i = 0, il = this.length, array = []; i < il; i++) {\r\n      array.push([\r\n        this[i][0] + (this.destination[i][0] - this[i][0]) * pos,\r\n        this[i][1] + (this.destination[i][1] - this[i][1]) * pos\r\n      ])\r\n    }\r\n\r\n    return new PointArray(array)\r\n  },\r\n\r\n  // Parse point string and flat array\r\n  parse (array = [[0, 0]]) {\r\n    var points = []\r\n\r\n    // if it is an array\r\n    if (array instanceof Array) {\r\n      // and it is not flat, there is no need to parse it\r\n      if (array[0] instanceof Array) {\r\n        return array\r\n      }\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 and parse points as floats\r\n    for (var 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  // Move point string\r\n  move (x, y) {\r\n    var 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 (var 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  // Resize poly string\r\n  size (width, height) {\r\n    var i\r\n    var 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  // Get bounding box of points\r\n  bbox () {\r\n    var maxX = -Infinity\r\n    var maxY = -Infinity\r\n    var minX = Infinity\r\n    var 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 { x: minX, y: minY, width: maxX - minX, height: maxY - minY }\r\n  }\r\n})\r\n","import PointArray from '../../types/PointArray.js'\r\n\r\nexport let 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  let 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  let 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) {\r\n    super(nodeOrNew('line', node), node)\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  // 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: x1, y1: y1, x2: x2, y2: 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  // 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  // Set element size to given width and height\r\n  size (width, height) {\r\n    var 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)\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) {\r\n    super(nodeOrNew('marker', node), node)\r\n  }\r\n\r\n  // Set width of element\r\n  width (width) {\r\n    return this.attr('markerWidth', width)\r\n  }\r\n\r\n  // Set height of element\r\n  height (height) {\r\n    return this.attr('markerHeight', height)\r\n  }\r\n\r\n  // Set marker refX and refY\r\n  ref (x, y) {\r\n    return this.attr('refX', x).attr('refY', y)\r\n  }\r\n\r\n  // Update marker\r\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') { block.call(this, this) }\r\n\r\n    return this\r\n  }\r\n\r\n  // Return the fill id\r\n  toString () {\r\n    return 'url(#' + this.id() + ')'\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      var 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)\r\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n  return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    // export native or passed\n    out = (own ? target : source)[key];\n    // bind timers to global for call from export context\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // extend global\n    if (target) redefine(target, key, out, type & $export.U);\n    // export\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call\n    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n  });\n};\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n  // IE8-\n  test.sort(undefined);\n}) || !fails(function () {\n  // V8 bug\n  test.sort(null);\n  // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n  // 22.1.3.25 Array.prototype.sort(comparefn)\n  sort: function sort(comparefn) {\n    return comparefn === undefined\n      ? $sort.call(toObject(this))\n      : $sort.call(toObject(this), aFunction(comparefn));\n  }\n});\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[v]\r\n    this[k] = v\r\n    if (f) f.call(this)\r\n    return this\r\n  }\r\n}\r\n\r\nexport let easing = {\r\n  '-': function (pos) { return pos },\r\n  '<>': function (pos) { return -Math.cos(pos * Math.PI) / 2 + 0.5 },\r\n  '>': function (pos) { return Math.sin(pos * Math.PI / 2) },\r\n  '<': function (pos) { return -Math.cos(pos * Math.PI / 2) + 1 },\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 () { return false }\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) {\r\n    super()\r\n    this.ease = easing[fn || timeline.ease] || 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  step (current, target, dt, c) {\r\n    return this.stepper(current, target, dt, c)\r\n  }\r\n\r\n  done (c) {\r\n    return c.done\r\n  }\r\n}\r\n\r\nfunction recalculate () {\r\n  // Apply the default parameters\r\n  var duration = (this._duration || 500) / 1000\r\n  var overshoot = this._overshoot || 0\r\n\r\n  // Calculate the PID natural response\r\n  var eps = 1e-10\r\n  var pi = Math.PI\r\n  var os = Math.log(overshoot / 100 + eps)\r\n  var zeta = -os / Math.sqrt(pi * pi + os * os)\r\n  var 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, overshoot) {\r\n    super()\r\n    this.duration(duration || 500)\r\n      .overshoot(overshoot || 0)\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    var velocity = c.velocity || 0\r\n\r\n    // Apply the control to get the new position and store it\r\n    var acceleration = -this.d * velocity - this.k * (current - target)\r\n    var 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, i, d, windup) {\r\n    super()\r\n\r\n    p = p == null ? 0.1 : p\r\n    i = i == null ? 0.01 : i\r\n    d = d == null ? 0 : d\r\n    windup = windup == null ? 1000 : windup\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    var p = target - current\r\n    var i = (c.integral || 0) + p * dt\r\n    var d = (p - (c.error || 0)) / dt\r\n    var 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 {\r\n  delimiter,\r\n  dots,\r\n  hyphen,\r\n  isPathLetter,\r\n  numbersWithDots,\r\n  pathLetters\r\n} from '../modules/core/regex.js'\r\nimport { extend } from '../utils/adopter.js'\r\nimport { subClassArray } from './ArrayPolyfill.js'\r\nimport Point from './Point.js'\r\nimport SVGArray from './SVGArray.js'\r\nimport parser from '../modules/core/parser.js'\r\n\r\nconst PathArray = subClassArray('PathArray', SVGArray)\r\n\r\nexport default PathArray\r\n\r\nexport function pathRegReplace (a, b, c, d) {\r\n  return c + d.replace(dots, ' .')\r\n}\r\n\r\nfunction arrayToString (a) {\r\n  for (var i = 0, il = a.length, s = ''; 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\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\nlet mlhvqtcsaz = 'mlhvqtcsaz'.split('')\r\n\r\nfor (var 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 (var 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\nextend(PathArray, {\r\n  // Convert array to string\r\n  toString () {\r\n    return arrayToString(this)\r\n  },\r\n\r\n  // Move path string\r\n  move (x, y) {\r\n    // get bounding box of current situation\r\n    var 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 (var 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  // Resize path string\r\n  size (width, height) {\r\n    // get bounding box of current situation\r\n    var box = this.bbox()\r\n    var i, l\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  // Test if the passed path array use the same path data commands as this path array\r\n  equalCommands (pathArray) {\r\n    var i, il, equalCommands\r\n\r\n    pathArray = new PathArray(pathArray)\r\n\r\n    equalCommands = this.length === pathArray.length\r\n    for (i = 0, il = this.length; equalCommands && i < il; i++) {\r\n      equalCommands = this[i][0] === pathArray[i][0]\r\n    }\r\n\r\n    return equalCommands\r\n  },\r\n\r\n  // Make path array morphable\r\n  morph (pathArray) {\r\n    pathArray = new PathArray(pathArray)\r\n\r\n    if (this.equalCommands(pathArray)) {\r\n      this.destination = pathArray\r\n    } else {\r\n      this.destination = null\r\n    }\r\n\r\n    return this\r\n  },\r\n\r\n  // Get morphed path array at given position\r\n  at (pos) {\r\n    // make sure a destination is defined\r\n    if (!this.destination) return this\r\n\r\n    var sourceArray = this\r\n    var destinationArray = this.destination.value\r\n    var array = []\r\n    var pathArray = new PathArray()\r\n    var i, il, j, jl\r\n\r\n    // Animate has specified in the SVG spec\r\n    // See: https://www.w3.org/TR/SVG11/paths.html#PathElement\r\n    for (i = 0, il = sourceArray.length; i < il; i++) {\r\n      array[i] = [sourceArray[i][0]]\r\n      for (j = 1, jl = sourceArray[i].length; j < jl; j++) {\r\n        array[i][j] = sourceArray[i][j] + (destinationArray[i][j] - sourceArray[i][j]) * pos\r\n      }\r\n      // For the two flags of the elliptical arc command, the SVG spec say:\r\n      // Flags and booleans are interpolated as fractions between zero and one, with any non-zero value considered to be a value of one/true\r\n      // Elliptical arc command as an array followed by corresponding indexes:\r\n      // ['A', rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y]\r\n      //   0    1   2        3                 4             5      6  7\r\n      if (array[i][0] === 'A') {\r\n        array[i][4] = +(array[i][4] !== 0)\r\n        array[i][5] = +(array[i][5] !== 0)\r\n      }\r\n    }\r\n\r\n    // Directly modify the value of a path array, this is done this way for performance\r\n    pathArray.value = array\r\n    return pathArray\r\n  },\r\n\r\n  // Absolutize and parse path to array\r\n  parse (array = [['M', 0, 0]]) {\r\n    // if it's already a patharray, no need to parse it\r\n    if (array instanceof PathArray) return array\r\n\r\n    // prepare for parsing\r\n    var s\r\n    var paramCnt = { 'M': 2, 'L': 2, 'H': 1, 'V': 1, 'C': 6, 'S': 4, 'Q': 4, 'T': 2, 'A': 7, 'Z': 0 }\r\n\r\n    if (typeof array === 'string') {\r\n      array = array\r\n        .replace(numbersWithDots, pathRegReplace) // convert 45.123.123 to 45.123 .123\r\n        .replace(pathLetters, ' $& ') // put some room between letters and numbers\r\n        .replace(hyphen, '$1 -') // add space before hyphen\r\n        .trim() // trim\r\n        .split(delimiter) // split into array\r\n    } else {\r\n      array = array.reduce(function (prev, curr) {\r\n        return [].concat.call(prev, curr)\r\n      }, [])\r\n    }\r\n\r\n    // array now is an array containing all parts of a path e.g. ['M', '0', '0', 'L', '30', '30' ...]\r\n    var result = []\r\n    var p = new Point()\r\n    var p0 = new Point()\r\n    var index = 0\r\n    var len = array.length\r\n\r\n    do {\r\n      // Test if we have a path letter\r\n      if (isPathLetter.test(array[index])) {\r\n        s = array[index]\r\n        ++index\r\n      // If last letter was a move command and we got no new, it defaults to [L]ine\r\n      } else if (s === 'M') {\r\n        s = 'L'\r\n      } else if (s === 'm') {\r\n        s = 'l'\r\n      }\r\n\r\n      result.push(pathHandlers[s].call(null,\r\n        array.slice(index, (index = index + paramCnt[s.toUpperCase()])).map(parseFloat),\r\n        p, p0\r\n      )\r\n      )\r\n    } while (len > index)\r\n\r\n    return result\r\n  },\r\n\r\n  // Get bounding box of path\r\n  bbox () {\r\n    parser().path.setAttribute('d', this.toString())\r\n    return parser.nodes.path.getBBox()\r\n  }\r\n})\r\n","import { Ease } from './Controller.js'\r\nimport {\r\n  delimiter,\r\n  numberAndUnit,\r\n  pathLetters\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\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  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  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      var type = typeof value\r\n\r\n      if (type === 'number') {\r\n        this.type(SVGNumber)\r\n      } else if (type === 'string') {\r\n        if (Color.isColor(value)) {\r\n          this.type(Color)\r\n        } else if (delimiter.test(value)) {\r\n          this.type(pathLetters.test(value)\r\n            ? PathArray\r\n            : SVGArray\r\n          )\r\n        } else if (numberAndUnit.test(value)) {\r\n          this.type(SVGNumber)\r\n        } else {\r\n          this.type(NonMorphable)\r\n        }\r\n      } else if (morphableTypes.indexOf(value.constructor) > -1) {\r\n        this.type(value.constructor)\r\n      } else if (Array.isArray(value)) {\r\n        this.type(SVGArray)\r\n      } else if (type === 'object') {\r\n        this.type(ObjectBag)\r\n      } else {\r\n        this.type(NonMorphable)\r\n      }\r\n    }\r\n\r\n    var result = (new this._type(value)).toArray()\r\n    this._morphObj = this._morphObj || new this._type()\r\n    this._context = this._context ||\r\n      Array.apply(null, Array(result.length)).map(Object)\r\n    return result\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  done () {\r\n    var 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  at (pos) {\r\n    var _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\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  valueOf () {\r\n    return this.value\r\n  }\r\n\r\n  toArray () {\r\n    return [this.value]\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    var 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\nexport class ObjectBag {\r\n  constructor (...args) {\r\n    this.init(...args)\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\r\n      return\r\n    }\r\n\r\n    objOrArr = objOrArr || {}\r\n    var entries = []\r\n\r\n    for (let i in objOrArr) {\r\n      entries.push([i, objOrArr[i]])\r\n    }\r\n\r\n    entries.sort((a, b) => {\r\n      return a[0] - b[0]\r\n    })\r\n\r\n    this.values = entries.reduce((last, curr) => last.concat(curr), [])\r\n    return this\r\n  }\r\n\r\n  valueOf () {\r\n    var obj = {}\r\n    var arr = this.values\r\n\r\n    for (var i = 0, len = arr.length; i < len; i += 2) {\r\n      obj[arr[i]] = arr[i + 1]\r\n    }\r\n\r\n    return obj\r\n  }\r\n\r\n  toArray () {\r\n    return this.values\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\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class Path extends Shape {\r\n  // Initialize node\r\n  constructor (node) {\r\n    super(nodeOrNew('path', node), node)\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  // Plot new path\r\n  plot (d) {\r\n    return (d == null) ? this.array()\r\n      : this.clear().attr('d', typeof d === 'string' ? d : (this._array = new PathArray(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  // 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  // 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  // Set element size to given width and height\r\n  size (width, height) {\r\n    var 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  // 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  targets () {\r\n    return baseFind('svg textpath [href*=\"' + this.id() + '\"]')\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)\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// Plot new path\r\nexport function plot (p) {\r\n  return (p == null) ? this.array()\r\n    : this.clear().attr('points', typeof p === 'string' ? p\r\n      : (this._array = new PointArray(p)))\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// Set element size to given width and height\r\nexport function size (width, height) {\r\n  let 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) {\r\n    super(nodeOrNew('polygon', node), node)\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)\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) {\r\n    super(nodeOrNew('polyline', node), node)\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)\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) {\r\n    super(nodeOrNew('rect', node), node)\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)\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  push (value) {\r\n    // An item stores an id and the provided value\r\n    var item = value.next ? 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    // Update the length and return the current item\r\n    return item\r\n  }\r\n\r\n  shift () {\r\n    // Check if we have a value\r\n    var 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  // Shows us the first item in the list\r\n  first () {\r\n    return this._first && this._first.value\r\n  }\r\n\r\n  // Shows us the last item in the list\r\n  last () {\r\n    return this._last && this._last.value\r\n  }\r\n\r\n  // Removes the item that was returned from the push\r\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  }\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  timer: globals.window.performance || globals.window.Date,\r\n  transforms: [],\r\n\r\n  frame (fn) {\r\n    // Store the node\r\n    var 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  transform_frame (fn, id) {\r\n    Animator.transforms[id] = fn\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    var time = Animator.timer.now() + delay\r\n\r\n    // Add the timeout to the end of the queue\r\n    var 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  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  _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    var nextTimeout = null\r\n    var 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    var nextFrame = null\r\n    var lastFrame = Animator.frames.last()\r\n    while ((nextFrame !== lastFrame) && (nextFrame = Animator.frames.shift())) {\r\n      nextFrame.run()\r\n    }\r\n\r\n    Animator.transforms.forEach(function (el) { el() })\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\nvar makeSchedule = function (runnerInfo) {\r\n  var start = runnerInfo.start\r\n  var duration = runnerInfo.runner.duration()\r\n  var 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  let 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._order = []\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._step.bind(this)\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).sort(function (a, b) {\r\n        return a.runner.id - b.runner.id\r\n      })\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 direclty\r\n\r\n    var absoluteStartTime = 0\r\n    var 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      let runnerInfo = this._runners[runner.id]\r\n      if (runnerInfo) {\r\n        absoluteStartTime = runnerInfo.start + delay\r\n        delay = 0\r\n      }\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    // runner.time(-delay)\r\n\r\n    // Save runnerInfo\r\n    this._runners[runner.id] = {\r\n      persist: this.persist(),\r\n      runner: runner,\r\n      start: absoluteStartTime + delay\r\n    }\r\n\r\n    // Save order, update Time if needed and continue\r\n    this._order.push(runner.id)\r\n    this.updateTime()._continue()\r\n    return this\r\n  }\r\n\r\n  // Remove the runner from this timeline\r\n  unschedule (runner) {\r\n    var index = this._order.indexOf(runner.id)\r\n    if (index < 0) return this\r\n\r\n    delete this._runners[runner.id]\r\n    this._order.splice(index, 1)\r\n    runner.timeline(null)\r\n    return this\r\n  }\r\n\r\n  // Calculates the end of the timeline\r\n  getEndTime () {\r\n    var lastRunnerInfo = this._runners[this._order[this._order.length - 1]]\r\n    var lastDuration = lastRunnerInfo ? lastRunnerInfo.runner.duration() : 0\r\n    var lastStartTime = lastRunnerInfo ? lastRunnerInfo.start : 0\r\n    return lastStartTime + lastDuration\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  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  pause () {\r\n    this._paused = true\r\n    return this._continue()\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  finish () {\r\n    // Go to end and pause\r\n    this.time(this.getEndTime() + 1)\r\n    return this.pause()\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  reverse (yes) {\r\n    var currentSpeed = this.speed()\r\n    if (yes == null) return this.speed(-currentSpeed)\r\n\r\n    var positive = Math.abs(currentSpeed)\r\n    return this.speed(yes ? positive : -positive)\r\n  }\r\n\r\n  seek (dt) {\r\n    return this.time(this._time + dt)\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  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  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  _step (immediateStep = false) {\r\n    // Get the time delta from the last time and update the time\r\n    var time = this._timeSource()\r\n    var dtSource = time - this._lastSourceTime\r\n\r\n    if (immediateStep) dtSource = 0\r\n\r\n    var 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    // Run all of the runners directly\r\n    var runnersLeft = false\r\n    for (var i = 0, len = this._order.length; i < len; i++) {\r\n      // Get and run the current runner and ignore it if its inactive\r\n      var runnerInfo = this._runners[this._order[i]]\r\n      var 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      let 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\r\n        // This is for the case that teh 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        runner.reset()\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      var 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\r\n        var endTime = runner.duration() - runner.time() + this._time\r\n\r\n        if (endTime + this._persist < this._time) {\r\n          // Delete runner and correct index\r\n          delete this._runners[this._order[i]]\r\n          this._order.splice(i--, 1) && --len\r\n          runner.timeline(null)\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._order.length && this._speed < 0 && this._time > 0)) {\r\n      this._continue()\r\n    } else {\r\n      this.fire('finished')\r\n      this.pause()\r\n    }\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._step(true)\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  active () {\r\n    return !!this._nextFrame\r\n  }\r\n}\r\n\r\nregisterMethods({\r\n  Element: {\r\n    timeline: function () {\r\n      this._timeline = (this._timeline || new Timeline())\r\n      return this._timeline\r\n    }\r\n  }\r\n})\r\n","import { Controller, Ease, Stepper } from './Controller.js'\r\nimport { extend } 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 } 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\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  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  animate (duration, delay, when) {\r\n    var o = Runner.sanitise(duration, delay, when)\r\n    var 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(delay, when)\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  unschedule () {\r\n    var timeline = this.timeline()\r\n    timeline && timeline.unschedule(this)\r\n    return this\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    return this\r\n  }\r\n\r\n  delay (delay) {\r\n    return this.animate(0, delay)\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\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    var timeline = this.timeline()\r\n    timeline && this.timeline()._continue()\r\n    return this\r\n  }\r\n\r\n  during (fn) {\r\n    return this.queue(null, fn)\r\n  }\r\n\r\n  after (fn) {\r\n    return this.on('finish', fn)\r\n  }\r\n\r\n  /*\r\n  Runner animation methods\r\n  ========================\r\n  Control how the animation plays\r\n  */\r\n\r\n  time (time) {\r\n    if (time == null) {\r\n      return this._time\r\n    }\r\n    let dt = time - this._time\r\n    this.step(dt)\r\n    return this\r\n  }\r\n\r\n  duration () {\r\n    return this._times * (this._wait + this._duration) - this._wait\r\n  }\r\n\r\n  loops (p) {\r\n    var loopDuration = this._duration + this._wait\r\n    if (p == null) {\r\n      var loopsDone = Math.floor(this._time / loopDuration)\r\n      var relativeTime = (this._time - loopsDone * loopDuration)\r\n      var position = relativeTime / this._duration\r\n      return Math.min(loopsDone + position, this._times)\r\n    }\r\n    var whole = Math.floor(p)\r\n    var partial = p % 1\r\n    var time = loopDuration * whole + this._duration * partial\r\n    return this.time(time)\r\n  }\r\n\r\n  position (p) {\r\n    // Get all of the variables we need\r\n    var x = this._time\r\n    var d = this._duration\r\n    var w = this._wait\r\n    var t = this._times\r\n    var s = this._swing\r\n    var r = this._reverse\r\n    var 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        var swinging = s * Math.floor(x % (2 * (w + d)) / (w + d))\r\n        var backwards = (swinging && !r) || (!swinging && r)\r\n        var uncliped = Math.pow(-1, backwards) * (x % (w + d)) / d + backwards\r\n        var 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      var endTime = t * (w + d) - w\r\n      position = x <= 0 ? Math.round(f(1e-5))\r\n        : x < endTime ? 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    var loopsDone = Math.floor(this.loops())\r\n    var swingForward = s && (loopsDone % 2 === 0)\r\n    var 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  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    var position = this.position()\r\n\r\n    // Figure out if we need to run the stepper in this frame\r\n    var running = this._lastPosition !== position && this._time >= 0\r\n    this._lastPosition = position\r\n\r\n    // Figure out if we just started\r\n    var duration = this.duration()\r\n    var justStarted = this._lastTime <= 0 && this._time > 0\r\n    var justFinished = this._lastTime < this._time && this.time > duration\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    var 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    // Call initialise and the run function\r\n    if (running || declarative) {\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      var 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 (this.done) {\r\n      this.fire('finish', this)\r\n    }\r\n    return this\r\n  }\r\n\r\n  reset () {\r\n    if (this._reseted) return this\r\n    this.loops(0)\r\n    this._reseted = true\r\n    return this\r\n  }\r\n\r\n  finish () {\r\n    return this.step(Infinity)\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  ease (fn) {\r\n    this._stepper = new Ease(fn)\r\n    return this\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\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\r\n  // Try to set the target for a morpher if the morpher exists, otherwise\r\n  // do nothing and return false\r\n  _tryRetarget (method, target) {\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        let 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(target)\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      var timeline = this.timeline()\r\n      timeline && timeline._continue()\r\n      return true\r\n    }\r\n    return false\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 (var i = 0, len = this._queue.length; i < len; ++i) {\r\n      // Get the current initialiser\r\n      var current = this._queue[i]\r\n\r\n      // Determine whether we need to initialise\r\n      var 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  // Run each run function for the position or dt given\r\n  _run (positionOrDt) {\r\n    // Run all of the _queue directly\r\n    var allfinished = true\r\n    for (var i = 0, len = this._queue.length; i < len; ++i) {\r\n      // Get the current function to run\r\n      var 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      var 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  addTransform (transform, index) {\r\n    this.transforms.lmultiplyO(transform)\r\n    return this\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) {\r\n      this._queue = this._queue.filter((item) => {\r\n        return !item.isTransform\r\n      })\r\n    }\r\n  }\r\n\r\n  static sanitise (duration, delay, when) {\r\n    // Initialise the default parameters\r\n    var times = 1\r\n    var swing = false\r\n    var 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\r\nRunner.id = 0\r\n\r\nclass 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  let runners = this._transformationRunners.runners\r\n  let 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\nclass 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\r\n    let id = runner.id + 1\r\n\r\n    let leftSibling = this.ids.reduce((last, curr) => {\r\n      if (curr > last && curr < id) return curr\r\n      return last\r\n    }, 0)\r\n\r\n    let index = this.ids.indexOf(leftSibling) + 1\r\n\r\n    this.ids.splice(index, 0, id)\r\n    this.runners.splice(index, 0, runner)\r\n\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  remove (id) {\r\n    let 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  merge () {\r\n    let lastRunner = null\r\n    this.runners.forEach((runner, i) => {\r\n      if (lastRunner && runner.done && lastRunner.done) {\r\n        this.remove(runner.id)\r\n        this.edit(lastRunner.id, runner.mergeWith(lastRunner))\r\n      }\r\n\r\n      lastRunner = runner\r\n    })\r\n\r\n    return this\r\n  }\r\n\r\n  edit (id, newRunner) {\r\n    let index = this.ids.indexOf(id + 1)\r\n    this.ids.splice(index, 1, id)\r\n    this.runners.splice(index, 1, newRunner)\r\n    return this\r\n  }\r\n\r\n  length () {\r\n    return this.ids.length\r\n  }\r\n\r\n  clearBefore (id) {\r\n    let 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\r\nlet frameId = 0\r\nregisterMethods({\r\n  Element: {\r\n    animate (duration, delay, when) {\r\n      var o = Runner.sanitise(duration, delay, when)\r\n      var 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(delay, 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      Animator.transform_frame(\r\n        mergeTransforms.bind(this), this._frameId\r\n      )\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        this._frameId = frameId++\r\n      }\r\n    }\r\n  }\r\n})\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, name, val) {\r\n    // apply attributes individually\r\n    if (typeof name === 'object') {\r\n      for (var key in val) {\r\n        this.styleAttr(type, key, val[key])\r\n      }\r\n    }\r\n\r\n    var morpher = new Morphable(this._stepper).to(val)\r\n\r\n    this.queue(function () {\r\n      morpher = morpher.from(this.element()[type](name))\r\n    }, function (pos) {\r\n      this.element()[type](name, morpher.at(pos))\r\n      return morpher.done()\r\n    })\r\n\r\n    return this\r\n  },\r\n\r\n  zoom (level, point) {\r\n    var morpher = new Morphable(this._stepper).to(new SVGNumber(level))\r\n\r\n    this.queue(function () {\r\n      morpher = morpher.from(this.zoom())\r\n    }, function (pos) {\r\n      this.element().zoom(morpher.at(pos), point)\r\n      return morpher.done()\r\n    })\r\n\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    var 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      let { 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      let affineParameters = morpher.at(pos)\r\n      currentAngle = affineParameters.rotate\r\n      current = new Matrix(affineParameters)\r\n\r\n      this.addTransform(current)\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(transforms, 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) {\r\n    return this._queueNumberDelta('x', x)\r\n  },\r\n\r\n  dy (y) {\r\n    return this._queueNumberDelta('y', 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    var morpher = new Morphable(this._stepper).to(to)\r\n    var 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    var 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    var 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    var morpher = 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    })\r\n\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\n","import {\r\n  adopt,\r\n  nodeOrNew,\r\n  register,\r\n  wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { ns, 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) {\r\n    super(nodeOrNew('svg', node), node)\r\n    this.namespace()\r\n  }\r\n\r\n  isRoot () {\r\n    return !this.node.parentNode ||\r\n      !(this.node.parentNode instanceof globals.window.SVGElement) ||\r\n      this.node.parentNode.nodeName === '#document'\r\n  }\r\n\r\n  // Check if this is a root svg\r\n  // If not, call docs from this element\r\n  root () {\r\n    if (this.isRoot()) return this\r\n    return super.root()\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: ns, version: '1.1' })\r\n      .attr('xmlns:xlink', xlink, xmlns)\r\n      .attr('xmlns:svgjs', svgjs, xmlns)\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.getElementsByTagName('defs')[0]) ||\r\n      this.put(new Defs())\r\n  }\r\n\r\n  // custom parent method\r\n  parent (type) {\r\n    if (this.isRoot()) {\r\n      return this.node.parentNode.nodeName === '#document'\r\n        ? null\r\n        : adopt(this.node.parentNode)\r\n    }\r\n\r\n    return super.parent(type)\r\n  }\r\n\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    return this\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) {\r\n    super(nodeOrNew('symbol', node), node)\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)\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","import {\r\n  adopt,\r\n  extend,\r\n  nodeOrNew,\r\n  register,\r\n  wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { attrs } from '../modules/core/defaults.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) {\r\n    super(nodeOrNew('text', node), node)\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    // set default font\r\n    this.attr('font-family', attrs['font-family'])\r\n  }\r\n\r\n  // Move over x-axis\r\n  x (x) {\r\n    // act as getter\r\n    if (x == null) {\r\n      return this.attr('x')\r\n    }\r\n\r\n    return this.attr('x', x)\r\n  }\r\n\r\n  // Move over y-axis\r\n  y (y) {\r\n    var oy = this.attr('y')\r\n    var o = typeof oy === 'number' ? oy - this.bbox().y : 0\r\n\r\n    // act as getter\r\n    if (y == null) {\r\n      return typeof oy === 'number' ? oy - o : oy\r\n    }\r\n\r\n    return this.attr('y', typeof y === 'number' ? y + o : y)\r\n  }\r\n\r\n  // Move center over x-axis\r\n  cx (x) {\r\n    return x == null ? this.bbox().cx : this.x(x - this.bbox().width / 2)\r\n  }\r\n\r\n  // Move center over y-axis\r\n  cy (y) {\r\n    return y == null ? this.bbox().cy : this.y(y - this.bbox().height / 2)\r\n  }\r\n\r\n  // Set the text content\r\n  text (text) {\r\n    // act as getter\r\n    if (text === undefined) {\r\n      var children = this.node.childNodes\r\n      var firstLine = 0\r\n      text = ''\r\n\r\n      for (var 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 (var j = 0, jl = text.length; j < jl; j++) {\r\n        this.tspan(text[j]).newLine()\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  // Set / get leading\r\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  }\r\n\r\n  // Rebuild appearance type\r\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      var self = this\r\n      var blankLineOffset = 0\r\n      var leading = this.dom.leading\r\n\r\n      this.each(function () {\r\n        var fontSize = globals.window.getComputedStyle(this.node)\r\n          .getPropertyValue('font-size')\r\n        var 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', dy + blankLineOffset)\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  }\r\n\r\n  // Enable / disable build mode\r\n  build (build) {\r\n    this._build = !!build\r\n    return this\r\n  }\r\n\r\n  // overwrite method from parent to set data properly\r\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  }\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)\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 Text from './Text.js'\r\nimport * as textable from '../modules/core/textable.js'\r\n\r\nexport default class Tspan extends Text {\r\n  // Initialize node\r\n  constructor (node) {\r\n    super(nodeOrNew('tspan', node), node)\r\n  }\r\n\r\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    typeof text === 'function' ? text.call(this, this) : this.plain(text)\r\n\r\n    return this\r\n  }\r\n\r\n  // Shortcut dx\r\n  dx (dx) {\r\n    return this.attr('dx', dx)\r\n  }\r\n\r\n  // Shortcut dy\r\n  dy (dy) {\r\n    return this.attr('dy', dy)\r\n  }\r\n\r\n  // Create new line\r\n  newLine () {\r\n    // fetch text parent\r\n    var t = this.parent(Text)\r\n\r\n    // mark new line\r\n    this.dom.newLined = true\r\n\r\n    // apply new position\r\n    return this.dy(t.dom.leading * t.attr('font-size')).attr('x', t.x())\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      var 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      this.node.appendChild(tspan.node)\r\n\r\n      return tspan.text(text)\r\n    })\r\n  }\r\n})\r\n\r\nregister(Tspan)\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) {\r\n    super(nodeOrNew('clipPath', node), node)\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    clipWith (element) {\r\n      // use given clip or create a new one\r\n      let 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    clipper () {\r\n      return this.reference('clip-path')\r\n    }\r\n  }\r\n})\r\n\r\nregister(ClipPath)\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 G extends Container {\r\n  constructor (node) {\r\n    super(nodeOrNew('g', node), node)\r\n  }\r\n}\r\n\r\nregisterMethods({\r\n  Element: {\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)\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 Container from './Container.js'\r\n\r\nexport default class A extends Container {\r\n  constructor (node) {\r\n    super(nodeOrNew('a', node), node)\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  // Link target attribute\r\n  target (target) {\r\n    return this.attr('target', target)\r\n  }\r\n}\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    // Create a hyperlink element\r\n    linkTo: function (url) {\r\n      var link = new A()\r\n\r\n      if (typeof url === 'function') { url.call(link, link) } else {\r\n        link.to(url)\r\n      }\r\n\r\n      return this.parent().put(link).put(this)\r\n    }\r\n  }\r\n})\r\n\r\nregister(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) {\r\n    super(nodeOrNew('mask', node), node)\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    maskWith (element) {\r\n      // use given mask or create a new one\r\n      var 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    masker () {\r\n      return this.reference('mask')\r\n    }\r\n  }\r\n})\r\n\r\nregister(Mask)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } 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  var ret = selector + '{'\r\n\r\n  for (var 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) {\r\n    super(nodeOrNew('style', node), node)\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: wrapWithAttrCheck(function (selector, obj) {\r\n    return this.put(new Style()).rule(selector, obj)\r\n  }),\r\n  fontface: wrapWithAttrCheck(function (name, src, params) {\r\n    return this.put(new Style()).font(name, src, params)\r\n  })\r\n})\r\n\r\nregister(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) {\r\n    super(nodeOrNew('textPath', node), node)\r\n  }\r\n\r\n  // return the array of the path track element\r\n  array () {\r\n    var 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    var track = this.track()\r\n    var 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      return this.defs().path(path).text(text).addTo(this)\r\n    })\r\n  },\r\n  Text: {\r\n    // Create path for text to run on\r\n    path: wrapWithAttrCheck(function (track) {\r\n      var path = 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.root().defs().path(track)\r\n      }\r\n\r\n      // link textPath to path and add content\r\n      path.attr('href', '#' + track, xlink)\r\n\r\n      // add textPath element as child node and return textPath\r\n      return this.put(path)\r\n    }),\r\n\r\n    // Get the textPath children\r\n    textPath () {\r\n      return this.find('textPath')[0]\r\n    }\r\n  },\r\n  Path: {\r\n    // creates a textPath from this path\r\n    text: wrapWithAttrCheck(function (text) {\r\n      if (text instanceof Text) {\r\n        var txt = text.text()\r\n        return text.clear().path(this).text(txt)\r\n      }\r\n      return this.parent().put(new Text()).path(this).text(text)\r\n    }),\r\n\r\n    targets () {\r\n      return baseFind('svg [href*=\"' + this.id() + '\"]')\r\n    }\r\n  }\r\n})\r\n\r\nTextPath.prototype.MorphArray = PathArray\r\nregister(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) {\r\n    super(nodeOrNew('use', node), node)\r\n  }\r\n\r\n  // Use element as a reference\r\n  element (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()).element(element, file)\r\n    })\r\n  }\r\n})\r\n\r\nregister(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 Circle from './elements/Circle.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 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 { registerWindow } 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 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  Circle,\r\n  Gradient\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\n// extend(Element, getConstructor('Memory'))\r\nextend(Container, getMethodsFor('Container'))\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"],"names":["methods","names","registerMethods","name","m","Array","isArray","_name","addMethodNames","Object","keys","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","oy","string","trim","x","y","bx","includes","by","ns","xmlns","xlink","svgjs","globals","window","document","registerWindow","win","doc","Base","elements","root","makeNode","createElementNS","makeInstance","adopt","querySelector","node","innerHTML","firstChild","nodeOrNew","Node","instance","className","nodeName","register","asRoot","prototype","getClass","did","eid","assignNewId","children","id","extend","modules","attrCheck","key","method","wrapWithAttrCheck","extendWithAttrCheck","args","fn","constructor","apply","attr","siblings","parent","position","index","next","prev","forward","p","removeElement","add","isRoot","appendChild","defs","backward","front","back","before","remove","after","insertBefore","insertAfter","numberAndUnit","hex","rgb","reference","transforms","whitespace","isHex","isRgb","isCss","isBlank","isNumber","isPercent","isImage","delimiter","hyphen","pathLetters","isPathLetter","numbersWithDots","dots","classes","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","JSON","parse","e","stringify","remember","k","memory","forget","_memory","listenerId","getEvents","n","getEventHolder","events","getEventTarget","clearEvents","on","listener","binding","options","l","bind","bag","_svgjsListenerId","event","ev","addEventListener","off","namespace","removeEventListener","dispatch","Event","dispatchEvent","CustomEvent","detail","cancelable","fullHex","substring","compToHex","comp","toString","Color","init","color","b","match","exec","parseInt","toHex","toArray","round","toRgb","brightness","isColor","Point","source","base","clone","transform","f","point","screenCTM","inverse","parser","nodes","svg","size","path","parentNode","body","documentElement","addTo","isNulledBox","w","h","domContains","contains","call","Box","parseFloat","left","top","x2","y2","cx","cy","merge","min","max","xMin","Infinity","xMax","yMin","yMax","pts","addOffset","pageXOffset","pageYOffset","isNulled","getBox","cb","Error","getBBox","rbox","getBoundingClientRect","viewbox","closeEnough","threshold","abs","Matrix","fromArray","Element","matrixify","isMatrixLike","matrix","multiplyO","formatTransforms","current","transformer","translateO","rx","ry","lmultiplyO","scaleO","scaleX","scaleY","skewO","skewX","skewY","shearO","shear","rotateO","theta","isFinite","px","py","dx","dy","tx","ty","compose","originX","originY","sx","sy","lam","rotate","translateX","translateY","decompose","determinant","ccw","sqrt","thetaRad","atan2","ct","cos","st","sin","multiply","matrixMultiply","lmultiply","inverseO","det","na","nb","nc","nd","ne","nf","translate","scale","flip","axis","around","flipO","lx","skew","tan","ly","skewXO","skewYO","aroundO","equals","other","valueOf","flipBoth","flipX","flipY","positionX","positionY","relative","relativeX","relativeY","ctm","getCTM","rect","getScreenCTM","subClassArray","Function","baseClass","_constructor","Arr","create","arr","List","each","fnOrMethodName","concat","reduce","obj","attrs","baseFind","query","querySelectorAll","find","EventTarget","type","j","defaultPrevented","fire","noop","timeline","duration","ease","delay","fill","stroke","opacity","offset","SVGArray","toSet","SVGNumber","value","unit","isNaN","toJSON","plus","number","minus","times","divide","hooks","registerAttrHook","attributes","nodeValue","last","curr","removeAttribute","getAttribute","defaults","_val","hook","leading","setAttributeNS","setAttribute","rebuild","Dom","childNodes","put","clear","hasChildNodes","removeChild","lastChild","_defs","writeDataToDom","cloneNode","deep","first","get","has","matches","selector","matchesSelector","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","oMatchesSelector","SVGElement","putIn","replaceChild","precision","factor","newAttrs","svgOrFn","outerHTML","well","len","fragment","_this","createDocumentFragment","firstElementChild","words","text","textContent","Svg","dom","hasAttribute","setData","center","inside","move","parents","until","sugar","prefix","extension","mat","angle","direction","directionString","dmove","radius","_element","getTotalLength","pointAt","getPointAtLength","font","ax","ay","amove","defineProperty","untransform","str","kv","reverse","toParent","pCtm","toRoot","decomposed","cleanRelative","Shape","Circle","circle","Container","flatten","ungroup","Defs","Ellipse","circled","ellipse","Stop","update","from","fx","fy","x1","y1","to","Gradient","stop","url","targets","gradiented","gradient","Pattern","pattern","patternUnits","Image","load","callback","img","src","image","PointArray","toLine","at","pos","destination","points","pop","maxX","maxY","minX","minY","MorphArray","Line","plot","pointed","line","Marker","ref","marker","isObject","require$$0","require$$1","require$$2","anObject","toPrimitive","IE8_DOM_DEFINE","dP","createDesc","global","aFunction","core","ctx","redefine","defined","fails","$export","toObject","makeSetterGetter","easing","bezier","steps","stepPosition","jumps","beforeFlag","step","floor","jumping","Stepper","done","Ease","Controller","stepper","target","dt","recalculate","_duration","overshoot","_overshoot","eps","pi","os","log","zeta","wn","Spring","velocity","acceleration","newPosition","PID","windup","integral","error","P","I","D","PathArray","pathRegReplace","arrayToString","pathHandlers","M","p0","L","H","V","C","S","Q","T","Z","A","mlhvqtcsaz","jl","equalCommands","pathArray","morph","sourceArray","destinationArray","paramCnt","Morphable","_stepper","_from","_to","_type","_context","_morphObj","_set","NonMorphable","morphableTypes","ObjectBag","complete","TransformBag","objOrArr","values","entries","sort","registerMorphableType","makeMorphable","Path","_array","Polygon","polygon","poly","Polyline","polyline","Rect","Queue","_first","_last","item","shift","Animator","nextDraw","frames","timeouts","timer","performance","Date","frame","run","requestAnimationFrame","_draw","transform_frame","timeout","time","now","cancelFrame","clearTimeout","nextTimeout","lastTimeout","nextFrame","lastFrame","makeSchedule","runnerInfo","start","runner","end","defaultSource","Timeline","timeSource","_timeSource","_startTime","_speed","_persist","_nextFrame","_paused","_runners","_order","_time","_lastSourceTime","_lastStepTime","_step","schedule","when","absoluteStartTime","endTime","getEndTime","unschedule","persist","updateTime","_continue","splice","lastRunnerInfo","lastDuration","lastStartTime","active","play","pause","finish","speed","yes","currentSpeed","positive","seek","dtOrForever","immediateStep","dtSource","dtTime","runnersLeft","dtToStart","reset","finished","_timeline","Runner","_queue","_isDeclarative","_history","enabled","_lastTime","_reseted","transformId","_haveReversed","_reverse","_loopsDone","_swing","_wait","_times","_prepareRunner","animate","sanitise","loop","swing","wait","queue","initFn","runFn","retargetFn","isTransform","initialiser","retarget","initialised","during","loops","loopDuration","loopsDone","relativeTime","whole","partial","swinging","backwards","uncliped","pow","clipped","swingForward","forwards","progress","running","_lastPosition","justStarted","justFinished","declarative","_initialise","converged","_run","_rememberMorpher","morpher","caller","_tryRetarget","needsIt","positionOrDt","allfinished","addTransform","clearTransform","clearTransformsFromQueue","FakeRunner","mergeWith","getRunnerTransform","mergeTransforms","runners","_transformationRunners","netTransform","_frameId","RunnerArray","ids","leftSibling","getByID","lastRunner","edit","newRunner","clearBefore","deleteCnt","frameId","_clearTransformRunnersBefore","currentRunner","_currentTransform","addRunner","styleAttr","zoom","level","affine","isMatrix","currentAngle","startTransform","setup","undefined","rTarget","rCurrent","possibilities","distances","shortest","affineParameters","newTransforms","_queueNumber","_queueNumberDelta","newTo","_queueObject","version","getElementsByTagName","nested","Symbol","symbol","plain","_build","createTextNode","getComputedTextLength","Text","_rebuild","firstLine","nodeType","newLined","build","tspan","newLine","self","blankLineOffset","fontSize","getComputedStyle","getPropertyValue","textable","Tspan","ClipPath","unclip","clip","clipWith","clipper","G","group","link","linkTo","Mask","unmask","mask","maskWith","masker","cssRule","rule","Style","addText","params","fontFamily","fontface","TextPath","track","textPath","txt","Use","file","use","SVG"],"mappings":"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"}