{"version":3,"file":"svg.node.js","sources":["../node_modules/core-js/internals/fails.js","../node_modules/core-js/internals/classof-raw.js","../node_modules/core-js/internals/indexed-object.js","../node_modules/core-js/internals/require-object-coercible.js","../node_modules/core-js/internals/to-indexed-object.js","../node_modules/core-js/internals/global.js","../node_modules/core-js/internals/descriptors.js","../node_modules/core-js/internals/is-object.js","../node_modules/core-js/internals/document-create-element.js","../node_modules/core-js/internals/ie8-dom-define.js","../node_modules/core-js/internals/an-object.js","../node_modules/core-js/internals/to-primitive.js","../node_modules/core-js/internals/object-define-property.js","../node_modules/core-js/internals/create-property-descriptor.js","../node_modules/core-js/internals/create-non-enumerable-property.js","../node_modules/core-js/internals/set-global.js","../node_modules/core-js/internals/shared-store.js","../node_modules/core-js/internals/shared.js","../node_modules/core-js/internals/uid.js","../node_modules/core-js/internals/native-symbol.js","../node_modules/core-js/internals/well-known-symbol.js","../node_modules/core-js/internals/has.js","../node_modules/core-js/internals/to-integer.js","../node_modules/core-js/internals/to-length.js","../node_modules/core-js/internals/to-absolute-index.js","../node_modules/core-js/internals/array-includes.js","../node_modules/core-js/internals/hidden-keys.js","../node_modules/core-js/internals/object-keys-internal.js","../node_modules/core-js/internals/enum-bug-keys.js","../node_modules/core-js/internals/object-keys.js","../node_modules/core-js/internals/object-define-properties.js","../node_modules/core-js/internals/path.js","../node_modules/core-js/internals/get-built-in.js","../node_modules/core-js/internals/html.js","../node_modules/core-js/internals/shared-key.js","../node_modules/core-js/internals/object-create.js","../node_modules/core-js/internals/add-to-unscopables.js","../node_modules/core-js/internals/function-to-string.js","../node_modules/core-js/internals/native-weak-map.js","../node_modules/core-js/internals/internal-state.js","../node_modules/core-js/internals/object-property-is-enumerable.js","../node_modules/core-js/internals/object-get-own-property-descriptor.js","../node_modules/core-js/internals/redefine.js","../node_modules/core-js/internals/object-get-own-property-names.js","../node_modules/core-js/internals/object-get-own-property-symbols.js","../node_modules/core-js/internals/own-keys.js","../node_modules/core-js/internals/copy-constructor-properties.js","../node_modules/core-js/internals/is-forced.js","../node_modules/core-js/internals/export.js","../node_modules/core-js/internals/to-object.js","../node_modules/core-js/internals/correct-prototype-getter.js","../node_modules/core-js/internals/object-get-prototype-of.js","../node_modules/core-js/internals/iterators-core.js","../node_modules/core-js/internals/set-to-string-tag.js","../node_modules/core-js/internals/create-iterator-constructor.js","../node_modules/core-js/internals/a-possible-prototype.js","../node_modules/core-js/internals/object-set-prototype-of.js","../node_modules/core-js/internals/define-iterator.js","../node_modules/core-js/modules/es.array.iterator.js","../src/utils/methods.js","../node_modules/core-js/internals/regexp-flags.js","../node_modules/core-js/internals/regexp-exec.js","../node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","../node_modules/core-js/internals/string-multibyte.js","../node_modules/core-js/internals/advance-string-index.js","../node_modules/core-js/internals/regexp-exec-abstract.js","../node_modules/core-js/modules/es.string.replace.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/types/Matrix.js","../src/modules/core/parser.js","../src/types/Box.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","../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/internals/a-function.js","../node_modules/core-js/internals/sloppy-array-method.js","../node_modules/core-js/modules/es.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/ForeignObject.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":["module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins\n  return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n","var check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line no-undef\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func\n  Function('return this')();\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n  if (!isObject(it)) {\n    throw TypeError(String(it) + ' is not an object');\n  } return it;\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\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 (input, PREFERRED_STRING) {\n  if (!isObject(input)) return input;\n  var fn, val;\n  if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return nativeDefineProperty(O, P, Attributes);\n  } catch (error) { /* 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 DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n  try {\n    createNonEnumerableProperty(global, key, value);\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.3.6',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n  return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  // Chrome 38 Symbol has incorrect toString conversion\n  // eslint-disable-next-line no-undef\n  return !String(Symbol());\n});\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nvar Symbol = global.Symbol;\nvar store = shared('wks');\n\nmodule.exports = function (name) {\n  return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]\n    || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n  return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).\nmodule.exports = function (index, length) {\n  var integer = toInteger(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n","module.exports = {};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~indexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n  return O;\n};\n","module.exports = require('../internals/global');\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n  return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n    : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar PROTOTYPE = 'prototype';\nvar Empty = function () { /* empty */ };\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var length = enumBugKeys.length;\n  var lt = '<';\n  var script = 'script';\n  var gt = '>';\n  var js = 'java' + script + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  iframe.src = String(js);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];\n  return createDict();\n};\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\nhiddenKeys[IE_PROTO] = true;\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n  createNonEnumerableProperty(ArrayPrototype, UNSCOPABLES, create(null));\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","var shared = require('../internals/shared');\n\nmodule.exports = shared('native-function-to-string', Function.toString);\n","var global = require('../internals/global');\nvar nativeFunctionToString = require('../internals/function-to-string');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP) {\n  var store = new WeakMap();\n  var wmget = store.get;\n  var wmhas = store.has;\n  var wmset = store.set;\n  set = function (it, metadata) {\n    wmset.call(store, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget.call(store, it) || {};\n  };\n  has = function (it) {\n    return wmhas.call(store, it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return objectHas(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return objectHas(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return nativeGetOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar nativeFunctionToString = require('../internals/function-to-string');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(nativeFunctionToString).split('toString');\n\nshared('inspectSource', function (it) {\n  return nativeFunctionToString.call(it);\n});\n\n(module.exports = function (O, key, value, options) {\n  var unsafe = options ? !!options.unsafe : false;\n  var simple = options ? !!options.enumerable : false;\n  var noTargetGet = options ? !!options.noTargetGet : false;\n  if (typeof value == 'function') {\n    if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n    enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n  }\n  if (O === global) {\n    if (simple) O[key] = value;\n    else setGlobal(key, value);\n    return;\n  } else if (!unsafe) {\n    delete O[key];\n  } else if (!noTargetGet && O[key]) {\n    simple = true;\n  }\n  if (simple) O[key] = value;\n  else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n  return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);\n});\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n  }\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : typeof detection == 'function' ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target      - name of the target object\n  options.global      - target is the global object\n  options.stat        - export as static methods of target\n  options.proto       - export as prototype methods of target\n  options.real        - real prototype method for the `pure` version\n  options.forced      - export even if the native feature is available\n  options.bind        - bind methods to the target, required for the `pure` version\n  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe      - use the simple assignment of property instead of delete + defineProperty\n  options.sham        - add a flag to not completely full polyfills\n  options.enumerable  - export as enumerable property\n  options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || setGlobal(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.noTargetGet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty === typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    // extend global\n    redefine(target, key, sourceProperty, options);\n  }\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n  createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n  if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n    defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n  if (!isObject(it) && it !== null) {\n    throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n  } return it;\n};\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n    setter.call(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter.call(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    } return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n          createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    INCORRECT_VALUES_NAME = true;\n    defaultIterator = function values() { return nativeIterator.call(this); };\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n  }\n  Iterators[NAME] = defaultIterator;\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        redefine(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  return methods;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return { value: undefined, done: true };\n  }\n  if (kind == 'keys') return { value: index, done: false };\n  if (kind == 'values') return { value: target[index], done: false };\n  return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","const methods = {}\r\nconst names = []\r\n\r\nexport function registerMethods (name, m) {\r\n  if (Array.isArray(name)) {\r\n    for (const _name of name) {\r\n      registerMethods(_name, m)\r\n    }\r\n    return\r\n  }\r\n\r\n  if (typeof name === 'object') {\r\n    for (const _name in name) {\r\n      registerMethods(_name, name[_name])\r\n    }\r\n    return\r\n  }\r\n\r\n  addMethodNames(Object.getOwnPropertyNames(m))\r\n  methods[name] = Object.assign(methods[name] || {}, m)\r\n}\r\n\r\nexport function getMethodsFor (name) {\r\n  return methods[name] || {}\r\n}\r\n\r\nexport function getMethodNames () {\r\n  return [ ...new Set(names) ]\r\n}\r\n\r\nexport function addMethodNames (_names) {\r\n  names.push(..._names)\r\n}\r\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/;\n  var re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n    match = nativeExec.call(re, str);\n\n    if (UPDATES_LAST_INDEX_WRONG && match) {\n      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n  var SYMBOL = wellKnownSymbol(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n\n    if (KEY === 'split') {\n      // We can't use real regex here since it causes deoptimization\n      // and serious performance degradation in V8\n      // https://github.com/zloirock/core-js/issues/306\n      re = {};\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n      re.flags = '';\n      re[SYMBOL] = /./[SYMBOL];\n    }\n\n    re.exec = function () { execCalled = true; return null; };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      if (regexp.exec === regexpExec) {\n        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n          // The native String method already delegates to @@method (this\n          // polyfilled function), leasing to infinite recursion.\n          // We avoid it by directly calling the native @@method method.\n          return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n        }\n        return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n      }\n      return { done: false };\n    });\n    var stringMethod = methods[0];\n    var regexMethod = methods[1];\n\n    redefine(String.prototype, KEY, stringMethod);\n    redefine(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return regexMethod.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return regexMethod.call(string, this); }\n    );\n    if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n  }\n};\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = String(requireObjectCoercible($this));\n    var position = toInteger(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = S.charCodeAt(position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING ? S.charAt(position) : first\n        : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? charAt(S, index).length : 1);\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n\n  if (classof(R) !== 'RegExp') {\n    throw TypeError('RegExp#exec called on incompatible receiver');\n  }\n\n  return regexpExec.call(R, S);\n};\n\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) {\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = requireObjectCoercible(this);\n      var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return replacer !== undefined\n        ? replacer.call(searchValue, O, replaceValue)\n        : nativeReplace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n\n        results.push(result);\n        if (!global) break;\n\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n\n  // https://tc39.github.io/ecma262/#sec-getsubstitution\n  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n    var tailPos = position + matched.length;\n    var m = captures.length;\n    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n    if (namedCaptures !== undefined) {\n      namedCaptures = toObject(namedCaptures);\n      symbols = SUBSTITUTION_SYMBOLS;\n    }\n    return nativeReplace.call(replacement, symbols, function (match, ch) {\n      var capture;\n      switch (ch.charAt(0)) {\n        case '$': return '$';\n        case '&': return matched;\n        case '`': return str.slice(0, position);\n        case \"'\": return str.slice(tailPos);\n        case '<':\n          capture = namedCaptures[ch.slice(1, -1)];\n          break;\n        default: // \\d\\d?\n          var n = +ch;\n          if (n === 0) return match;\n          if (n > m) {\n            var f = floor(n / 10);\n            if (f === 0) return match;\n            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n            return match;\n          }\n          capture = captures[n - 1];\n      }\n      return capture === undefined ? '' : capture;\n    });\n  }\n});\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])) {\r\n      result.push(array[i])\r\n    }\r\n  }\r\n\r\n  return result\r\n}\r\n\r\n// Degrees to radians\r\nexport function radians (d) {\r\n  return d % 360 * Math.PI / 180\r\n}\r\n\r\n// Radians to degrees\r\nexport function degrees (r) {\r\n  return r * 180 / Math.PI % 360\r\n}\r\n\r\n// Convert dash-separated-string to camelCase\r\nexport function camelCase (s) {\r\n  return s.toLowerCase().replace(/-(.)/g, function (m, g) {\r\n    return g.toUpperCase()\r\n  })\r\n}\r\n\r\n// Convert camel cased string to 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, box) {\r\n  if (width == null || height == null) {\r\n    box = box || element.bbox()\r\n\r\n    if (width == null) {\r\n      width = box.width / box.height * height\r\n    } else if (height == null) {\r\n      height = box.height / box.width * width\r\n    }\r\n  }\r\n\r\n  return {\r\n    width: width,\r\n    height: height\r\n  }\r\n}\r\n\r\nexport function getOrigin (o, element) {\r\n  // Allow origin or around as the names\r\n  const 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    const bx = string.includes('left') ? x\r\n      : string.includes('right') ? x + width\r\n      : x + width / 2\r\n    const 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 const ns = 'http://www.w3.org/2000/svg'\r\nexport const xmlns = 'http://www.w3.org/2000/xmlns/'\r\nexport const xlink = 'http://www.w3.org/1999/xlink'\r\nexport const 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\r\nconst save = {}\r\n\r\nexport function saveWindow () {\r\n  save.window = globals.window\r\n  save.document = globals.document\r\n}\r\n\r\nexport function restoreWindow () {\r\n  globals.window = save.window\r\n  globals.document = save.document\r\n}\r\n\r\nexport function withWindow (win, fn) {\r\n  saveWindow()\r\n  registerWindow(win, win.document)\r\n  fn(win, win.document)\r\n  restoreWindow()\r\n}\r\n\r\nexport function getWindow () {\r\n  return globals.window\r\n}\r\n","export default class Base {\r\n  // constructor (node/*, {extensions = []} */) {\r\n  //   // this.tags = []\r\n  //   //\r\n  //   // for (let extension of extensions) {\r\n  //   //   extension.setup.call(this, node)\r\n  //   //   this.tags.push(extension.name)\r\n  //   // }\r\n  // }\r\n}\r\n","import { addMethodNames } from './methods.js'\r\nimport { capitalize } from './utils.js'\r\nimport { 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 create (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 adopter(element)\r\n  }\r\n\r\n  if (element == null) {\r\n    return new elements[root]()\r\n  }\r\n\r\n  if (typeof element === 'string' && element.charAt(0) !== '<') {\r\n    return adopter(globals.document.querySelector(element))\r\n  }\r\n\r\n  var node = create('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 = adopter(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 : create(name)\r\n}\r\n\r\n// Adopt existing svg elements\r\nexport function adopt (node) {\r\n  // check for presence of node\r\n  if (!node) return null\r\n\r\n  // make sure a node isn't already adopted\r\n  if (node.instance instanceof Base) return node.instance\r\n\r\n  // initialize variables\r\n  var className = capitalize(node.nodeName || 'Dom')\r\n\r\n  // Make sure that gradients are adopted correctly\r\n  if (className === 'LinearGradient' || className === 'RadialGradient') {\r\n    className = 'Gradient'\r\n\r\n  // Fallback to Dom if element is not known\r\n  } else if (!elements[className]) {\r\n    className = 'Dom'\r\n  }\r\n\r\n  return new elements[className](node)\r\n}\r\n\r\nlet adopter = adopt\r\n\r\nexport function mockAdopt (mock = adopt) {\r\n  adopter = mock\r\n}\r\n\r\nexport function register (element, name = element.name, asRoot = false) {\r\n  elements[name] = element\r\n  if (asRoot) elements[root] = element\r\n\r\n  addMethodNames(Object.getOwnPropertyNames(element.prototype))\r\n\r\n  return element\r\n}\r\n\r\nexport function getClass (name) {\r\n  return elements[name]\r\n}\r\n\r\n// Element id sequence\r\nlet did = 1000\r\n\r\n// Get next named element id\r\nexport function eid (name) {\r\n  return 'Svgjs' + capitalize(name) + (did++)\r\n}\r\n\r\n// Deep new id assignment\r\nexport function assignNewId (node) {\r\n  // do the same for SVG child nodes as well\r\n  for (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\n// export function extendWithAttrCheck (...args) {\r\n//   extend(...args, true)\r\n// }\r\n\r\nexport function wrapWithAttrCheck (fn) {\r\n  return function (...args) {\r\n    const o = args[args.length - 1]\r\n\r\n    if (o && o.constructor === Object && !(o instanceof Array)) {\r\n      return fn.apply(this, args.slice(0, -1)).attr(o)\r\n    } else {\r\n      return fn.apply(this, args)\r\n    }\r\n  }\r\n}\r\n\r\nexport function invent (config) {\r\n  // Create element initializer\r\n  var initializer = typeof config.create === 'function'\r\n    ? config.create\r\n    : function (node) {\r\n      this.constructor(node || create(config.create))\r\n    }\r\n\r\n  // Inherit prototype\r\n  if (config.inherit) {\r\n    /* eslint new-cap: off */\r\n    initializer.prototype = new config.inherit()\r\n    initializer.prototype.constructor = initializer\r\n  }\r\n\r\n  // Extend with methods\r\n  if (config.extend) { extend(initializer, config.extend) }\r\n\r\n  // Attach construct method to parent\r\n  if (config.construct) { extend(config.parent || elements.Container, config.construct) }\r\n\r\n  return initializer\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  return this\r\n}\r\n\r\nexport function insertAfter (element) {\r\n  element = makeInstance(element)\r\n  element.after(this)\r\n  return this\r\n}\r\n\r\nregisterMethods('Dom', {\r\n  siblings,\r\n  position,\r\n  next,\r\n  prev,\r\n  forward,\r\n  backward,\r\n  front,\r\n  back,\r\n  before,\r\n  after,\r\n  insertBefore,\r\n  insertAfter\r\n})\r\n","// Parse unit value\r\nexport const numberAndUnit = /^([+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?)([a-z%]*)$/i\r\n\r\n// Parse hex value\r\nexport const hex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i\r\n\r\n// Parse rgb value\r\nexport const rgb = /rgb\\((\\d+),(\\d+),(\\d+)\\)/\r\n\r\n// Parse reference id\r\nexport const reference = /(#[a-z0-9\\-_]+)/i\r\n\r\n// splits a transformation chain\r\nexport const transforms = /\\)\\s*,?\\s*/\r\n\r\n// Whitespace\r\nexport const whitespace = /\\s/g\r\n\r\n// Test hex value\r\nexport const isHex = /^#[a-f0-9]{3,6}$/i\r\n\r\n// Test rgb value\r\nexport const isRgb = /^rgb\\(/\r\n\r\n// Test css declaration\r\nexport const isCss = /[^:]+:[^;]+;?/\r\n\r\n// Test for blank string\r\nexport const isBlank = /^(\\s+)?$/\r\n\r\n// Test for numeric string\r\nexport const isNumber = /^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i\r\n\r\n// Test for percent value\r\nexport const isPercent = /^-?[\\d.]+%$/\r\n\r\n// Test for image url\r\nexport const isImage = /\\.(jpg|jpeg|png|gif|svg)(\\?[^=]+.*)?/i\r\n\r\n// split at whitespace and comma\r\nexport const delimiter = /[\\s,]+/\r\n\r\n// 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 const hyphen = /([^e])-/gi\r\n\r\n// Replaces and tests for all path letters\r\nexport const pathLetters = /[MLHVCSQTAZ]/gi\r\n\r\n// yes we need this one, too\r\nexport const isPathLetter = /[MLHVCSQTAZ]/i\r\n\r\n// matches 0.154.23.45\r\nexport const numbersWithDots = /((\\d?\\.\\d+(?:e[+-]?\\d+)?)((?:\\.\\d+(?:e[+-]?\\d+)?)+))+/gi\r\n\r\n// matches .\r\nexport const 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  const ret = {}\r\n  if (arguments.length === 0) {\r\n    // get full style as object\r\n    this.node.style.cssText.split(/\\s*;\\s*/)\r\n      .filter(function (el) {\r\n        return !!el.length\r\n      })\r\n      .forEach(function (el) {\r\n        const t = el.split(/\\s*:\\s*/)\r\n        ret[t[0]] = t[1]\r\n      })\r\n    return ret\r\n  }\r\n\r\n  if (arguments.length < 2) {\r\n    // get style properties in the array\r\n    if (Array.isArray(style)) {\r\n      for (const name of style) {\r\n        const cased = camelCase(name)\r\n        ret[cased] = this.node.style[cased]\r\n      }\r\n      return ret\r\n    }\r\n\r\n    // get style for property\r\n    if (typeof style === 'string') {\r\n      return this.node.style[camelCase(style)]\r\n    }\r\n\r\n    // set styles in object\r\n    if (typeof style === 'object') {\r\n      for (const name in style) {\r\n        // set empty string if null/undefined/'' was given\r\n        this.node.style[camelCase(name)]\r\n          = (style[name] == null || isBlank.test(style[name])) ? '' : style[name]\r\n      }\r\n    }\r\n  }\r\n\r\n  // set style for property\r\n  if (arguments.length === 2) {\r\n    this.node.style[camelCase(style)]\r\n      = (val == null || isBlank.test(val)) ? '' : val\r\n  }\r\n\r\n  return this\r\n}\r\n\r\n// Show element\r\nexport function show () {\r\n  return this.css('display', '')\r\n}\r\n\r\n// Hide element\r\nexport function hide () {\r\n  return this.css('display', 'none')\r\n}\r\n\r\n// Is element visible?\r\nexport function visible () {\r\n  return this.css('display') !== 'none'\r\n}\r\n\r\nregisterMethods('Dom', {\r\n  css, show, hide, visible\r\n})\r\n","import { registerMethods } from '../../utils/methods.js'\r\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\nconst windowEvents = {}\r\n\r\nfunction getEvents (instance) {\r\n  let n = instance.getEventHolder()\r\n\r\n  // We dont want to save events in global space\r\n  if (n === globals.window) n = windowEvents\r\n  if (!n.events) n.events = {}\r\n  return n.events\r\n}\r\n\r\nfunction getEventTarget (instance) {\r\n  return instance.getEventTarget()\r\n}\r\n\r\nfunction clearEvents (instance) {\r\n  const n = instance.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 instance = makeInstance(node)\r\n  var bag = getEvents(instance)\r\n  var n = getEventTarget(instance)\r\n\r\n  // events can be an array of events or a string of events\r\n  events = Array.isArray(events) ? events : events.split(delimiter)\r\n\r\n  // add id to listener\r\n  if (!listener._svgjsListenerId) {\r\n    listener._svgjsListenerId = ++listenerId\r\n  }\r\n\r\n  events.forEach(function (event) {\r\n    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 instance = makeInstance(node)\r\n  var bag = getEvents(instance)\r\n  var n = getEventTarget(instance)\r\n\r\n  // listener can be a function or a number\r\n  if (typeof listener === 'function') {\r\n    listener = listener._svgjsListenerId\r\n    if (!listener) return\r\n  }\r\n\r\n  // events can be an array of events or a string or undefined\r\n  events = Array.isArray(events) ? events : (events || '').split(delimiter)\r\n\r\n  events.forEach(function (event) {\r\n    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]) {\r\n          off(n, [ ev, ns ].join('.'), l)\r\n        }\r\n\r\n        delete bag[ev][ns]\r\n      }\r\n    } else if (ns) {\r\n      // remove all listeners for a specific namespace\r\n      for (event in bag) {\r\n        for (namespace in bag[event]) {\r\n          if (ns === namespace) {\r\n            off(n, [ event, ns ].join('.'))\r\n          }\r\n        }\r\n      }\r\n    } else if (ev) {\r\n      // remove all listeners for the event\r\n      if (bag[ev]) {\r\n        for (namespace in bag[ev]) {\r\n          off(n, [ ev, namespace ].join('.'))\r\n        }\r\n\r\n        delete bag[ev]\r\n      }\r\n    } else {\r\n      // remove all listeners on a given node\r\n      for (event in bag) {\r\n        off(n, event)\r\n      }\r\n\r\n      clearEvents(instance)\r\n    }\r\n  })\r\n}\r\n\r\nexport function dispatch (node, event, data) {\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\nimport { hex, isHex, isRgb, rgb, whitespace } from '../modules/core/regex.js'\r\n\r\nfunction sixDigitHex (hex) {\r\n  return hex.length === 4\r\n    ? [ '#',\r\n      hex.substring(1, 2), hex.substring(1, 2),\r\n      hex.substring(2, 3), hex.substring(2, 3),\r\n      hex.substring(3, 4), hex.substring(3, 4)\r\n    ].join('')\r\n    : hex\r\n}\r\n\r\nfunction componentHex (component) {\r\n  const integer = Math.round(component)\r\n  const bounded = Math.max(0, Math.min(255, integer))\r\n  const hex = bounded.toString(16)\r\n  return hex.length === 1 ? '0' + hex : hex\r\n}\r\n\r\nfunction is (object, space) {\r\n  for (let i = space.length; i--;) {\r\n    if (object[space[i]] == null) {\r\n      return false\r\n    }\r\n  }\r\n  return true\r\n}\r\n\r\nfunction getParameters (a, b) {\r\n  const params = is(a, 'rgb') ? { _a: a.r, _b: a.g, _c: a.b, space: 'rgb' }\r\n    : is(a, 'xyz') ? { _a: a.x, _b: a.y, _c: a.z, _d: 0, space: 'xyz' }\r\n    : is(a, 'hsl') ? { _a: a.h, _b: a.s, _c: a.l, _d: 0, space: 'hsl' }\r\n    : is(a, 'lab') ? { _a: a.l, _b: a.a, _c: a.b, _d: 0, space: 'lab' }\r\n    : is(a, 'lch') ? { _a: a.l, _b: a.c, _c: a.h, _d: 0, space: 'lch' }\r\n    : is(a, 'cmyk') ? { _a: a.c, _b: a.m, _c: a.y, _d: a.k, space: 'cmyk' }\r\n    : { _a: 0, _b: 0, _c: 0, space: 'rgb' }\r\n\r\n  params.space = b || params.space\r\n  return params\r\n}\r\n\r\nfunction cieSpace (space) {\r\n  if (space === 'lab' || space === 'xyz' || space === 'lch') {\r\n    return true\r\n  } else {\r\n    return false\r\n  }\r\n}\r\n\r\nfunction hueToRgb (p, q, t) {\r\n  if (t < 0) t += 1\r\n  if (t > 1) t -= 1\r\n  if (t < 1 / 6) return p + (q - p) * 6 * t\r\n  if (t < 1 / 2) return q\r\n  if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6\r\n  return p\r\n}\r\n\r\nexport default class Color {\r\n  constructor (...inputs) {\r\n    this.init(...inputs)\r\n  }\r\n\r\n  init (a = 0, b = 0, c = 0, d = 0, space = 'rgb') {\r\n    // This catches the case when a falsy value is passed like ''\r\n    a = !a ? 0 : a\r\n\r\n    // Reset all values in case the init function is rerun with new color space\r\n    if (this.space) {\r\n      for (const component in this.space) {\r\n        delete this[this.space[component]]\r\n      }\r\n    }\r\n\r\n    if (typeof a === 'number') {\r\n      // Allow for the case that we don't need d...\r\n      space = typeof d === 'string' ? d : space\r\n      d = typeof d === 'string' ? 0 : d\r\n\r\n      // Assign the values straight to the color\r\n      Object.assign(this, { _a: a, _b: b, _c: c, _d: d, space })\r\n    // If the user gave us an array, make the color from it\r\n    } else if (a instanceof Array) {\r\n      this.space = b || (typeof a[3] === 'string' ? a[3] : a[4]) || 'rgb'\r\n      Object.assign(this, { _a: a[0], _b: a[1], _c: a[2], _d: a[3] || 0 })\r\n    } else if (a instanceof Object) {\r\n      // Set the object up and assign its values directly\r\n      const values = getParameters(a, b)\r\n      Object.assign(this, values)\r\n    } else if (typeof a === 'string') {\r\n      if (isRgb.test(a)) {\r\n        const noWhitespace = a.replace(whitespace, '')\r\n        const [ _a, _b, _c ] = rgb.exec(noWhitespace)\r\n          .slice(1, 4).map(v => parseInt(v))\r\n        Object.assign(this, { _a, _b, _c, _d: 0, space: 'rgb' })\r\n      } else if (isHex.test(a)) {\r\n        const hexParse = v => parseInt(v, 16)\r\n        const [ , _a, _b, _c ] = hex.exec(sixDigitHex(a)).map(hexParse)\r\n        Object.assign(this, { _a, _b, _c, _d: 0, space: 'rgb' })\r\n      } else throw Error('Unsupported string format, can\\'t construct Color')\r\n    }\r\n\r\n    // Now add the components as a convenience\r\n    const { _a, _b, _c, _d } = this\r\n    const components = this.space === 'rgb' ? { r: _a, g: _b, b: _c }\r\n      : this.space === 'xyz' ? { x: _a, y: _b, z: _c }\r\n      : this.space === 'hsl' ? { h: _a, s: _b, l: _c }\r\n      : this.space === 'lab' ? { l: _a, a: _b, b: _c }\r\n      : this.space === 'lch' ? { l: _a, c: _b, h: _c }\r\n      : this.space === 'cmyk' ? { c: _a, m: _b, y: _c, k: _d }\r\n      : {}\r\n    Object.assign(this, components)\r\n  }\r\n\r\n  /*\r\n  Conversion Methods\r\n  */\r\n\r\n  rgb () {\r\n    if (this.space === 'rgb') {\r\n      return this\r\n    } else if (cieSpace(this.space)) {\r\n      // Convert to the xyz color space\r\n      let { x, y, z } = this\r\n      if (this.space === 'lab' || this.space === 'lch') {\r\n        // Get the values in the lab space\r\n        let { l, a, b } = this\r\n        if (this.space === 'lch') {\r\n          const { c, h } = this\r\n          const dToR = Math.PI / 180\r\n          a = c * Math.cos(dToR * h)\r\n          b = c * Math.sin(dToR * h)\r\n        }\r\n\r\n        // Undo the nonlinear function\r\n        const yL = (l + 16) / 116\r\n        const xL = a / 500 + yL\r\n        const zL = yL - b / 200\r\n\r\n        // Get the xyz values\r\n        const ct = 16 / 116\r\n        const mx = 0.008856\r\n        const nm = 7.787\r\n        x = 0.95047 * ((xL ** 3 > mx) ? xL ** 3 : (xL - ct) / nm)\r\n        y = 1.00000 * ((yL ** 3 > mx) ? yL ** 3 : (yL - ct) / nm)\r\n        z = 1.08883 * ((zL ** 3 > mx) ? zL ** 3 : (zL - ct) / nm)\r\n      }\r\n\r\n      // Convert xyz to unbounded rgb values\r\n      const rU = x * 3.2406 + y * -1.5372 + z * -0.4986\r\n      const gU = x * -0.9689 + y * 1.8758 + z * 0.0415\r\n      const bU = x * 0.0557 + y * -0.2040 + z * 1.0570\r\n\r\n      // Convert the values to true rgb values\r\n      const pow = Math.pow\r\n      const bd = 0.0031308\r\n      const r = (rU > bd) ? (1.055 * pow(rU, 1 / 2.4) - 0.055) : 12.92 * rU\r\n      const g = (gU > bd) ? (1.055 * pow(gU, 1 / 2.4) - 0.055) : 12.92 * gU\r\n      const b = (bU > bd) ? (1.055 * pow(bU, 1 / 2.4) - 0.055) : 12.92 * bU\r\n\r\n      // Make and return the color\r\n      const color = new Color(255 * r, 255 * g, 255 * b)\r\n      return color\r\n    } else if (this.space === 'hsl') {\r\n      // https://bgrins.github.io/TinyColor/docs/tinycolor.html\r\n      // Get the current hsl values\r\n      let { h, s, l } = this\r\n      h /= 360\r\n      s /= 100\r\n      l /= 100\r\n\r\n      // If we are grey, then just make the color directly\r\n      if (s === 0) {\r\n        l *= 255\r\n        const color = new Color(l, l, l)\r\n        return color\r\n      }\r\n\r\n      // TODO I have no idea what this does :D If you figure it out, tell me!\r\n      const q = l < 0.5 ? l * (1 + s) : l + s - l * s\r\n      const p = 2 * l - q\r\n\r\n      // Get the rgb values\r\n      const r = 255 * hueToRgb(p, q, h + 1 / 3)\r\n      const g = 255 * hueToRgb(p, q, h)\r\n      const b = 255 * hueToRgb(p, q, h - 1 / 3)\r\n\r\n      // Make a new color\r\n      const color = new Color(r, g, b)\r\n      return color\r\n    } else if (this.space === 'cmyk') {\r\n      // https://gist.github.com/felipesabino/5066336\r\n      // Get the normalised cmyk values\r\n      const { c, m, y, k } = this\r\n\r\n      // Get the rgb values\r\n      const r = 255 * (1 - Math.min(1, c * (1 - k) + k))\r\n      const g = 255 * (1 - Math.min(1, m * (1 - k) + k))\r\n      const b = 255 * (1 - Math.min(1, y * (1 - k) + k))\r\n\r\n      // Form the color and return it\r\n      const color = new Color(r, g, b)\r\n      return color\r\n    } else {\r\n      return this\r\n    }\r\n  }\r\n\r\n  lab () {\r\n    // Get the xyz color\r\n    const { x, y, z } = this.xyz()\r\n\r\n    // Get the lab components\r\n    const l = (116 * y) - 16\r\n    const a = 500 * (x - y)\r\n    const b = 200 * (y - z)\r\n\r\n    // Construct and return a new color\r\n    const color = new Color(l, a, b, 'lab')\r\n    return color\r\n  }\r\n\r\n  xyz () {\r\n\r\n    // Normalise the red, green and blue values\r\n    const { _a: r255, _b: g255, _c: b255 } = this.rgb()\r\n    const [ r, g, b ] = [ r255, g255, b255 ].map(v => v / 255)\r\n\r\n    // Convert to the lab rgb space\r\n    const rL = (r > 0.04045) ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92\r\n    const gL = (g > 0.04045) ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92\r\n    const bL = (b > 0.04045) ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92\r\n\r\n    // Convert to the xyz color space without bounding the values\r\n    const xU = (rL * 0.4124 + gL * 0.3576 + bL * 0.1805) / 0.95047\r\n    const yU = (rL * 0.2126 + gL * 0.7152 + bL * 0.0722) / 1.00000\r\n    const zU = (rL * 0.0193 + gL * 0.1192 + bL * 0.9505) / 1.08883\r\n\r\n    // Get the proper xyz values by applying the bounding\r\n    const x = (xU > 0.008856) ? Math.pow(xU, 1 / 3) : (7.787 * xU) + 16 / 116\r\n    const y = (yU > 0.008856) ? Math.pow(yU, 1 / 3) : (7.787 * yU) + 16 / 116\r\n    const z = (zU > 0.008856) ? Math.pow(zU, 1 / 3) : (7.787 * zU) + 16 / 116\r\n\r\n    // Make and return the color\r\n    const color = new Color(x, y, z, 'xyz')\r\n    return color\r\n  }\r\n\r\n  lch () {\r\n\r\n    // Get the lab color directly\r\n    const { l, a, b } = this.lab()\r\n\r\n    // Get the chromaticity and the hue using polar coordinates\r\n    const c = Math.sqrt(a ** 2 + b ** 2)\r\n    let h = 180 * Math.atan2(b, a) / Math.PI\r\n    if (h < 0) {\r\n      h *= -1\r\n      h = 360 - h\r\n    }\r\n\r\n    // Make a new color and return it\r\n    const color = new Color(l, c, h, 'lch')\r\n    return color\r\n  }\r\n\r\n  hsl () {\r\n\r\n    // Get the rgb values\r\n    const { _a, _b, _c } = this.rgb()\r\n    const [ r, g, b ] = [ _a, _b, _c ].map(v => v / 255)\r\n\r\n    // Find the maximum and minimum values to get the lightness\r\n    const max = Math.max(r, g, b)\r\n    const min = Math.min(r, g, b)\r\n    const l = (max + min) / 2\r\n\r\n    // If the r, g, v values are identical then we are grey\r\n    const isGrey = max === min\r\n\r\n    // Calculate the hue and saturation\r\n    const delta = max - min\r\n    const s = isGrey ? 0\r\n      : l > 0.5 ? delta / (2 - max - min)\r\n      : delta / (max + min)\r\n    const h = isGrey ? 0\r\n      : max === r ? ((g - b) / delta + (g < b ? 6 : 0)) / 6\r\n      : max === g ? ((b - r) / delta + 2) / 6\r\n      : max === b ? ((r - g) / delta + 4) / 6\r\n      : 0\r\n\r\n    // Construct and return the new color\r\n    const color = new Color(360 * h, 100 * s, 100 * l, 'hsl')\r\n    return color\r\n  }\r\n\r\n  cmyk () {\r\n\r\n    // Get the rgb values for the current color\r\n    const { _a, _b, _c } = this.rgb()\r\n    const [ r, g, b ] = [ _a, _b, _c ].map(v => v / 255)\r\n\r\n    // Get the cmyk values in an unbounded format\r\n    const k = Math.min(1 - r, 1 - g, 1 - b)\r\n\r\n    if (k === 1) {\r\n      // Catch the black case\r\n      return new Color(0, 0, 0, 1, 'cmyk')\r\n    }\r\n\r\n    const c = (1 - r - k) / (1 - k)\r\n    const m = (1 - g - k) / (1 - k)\r\n    const y = (1 - b - k) / (1 - k)\r\n\r\n    // Construct the new color\r\n    const color = new Color(c, m, y, k, 'cmyk')\r\n    return color\r\n  }\r\n\r\n  /*\r\n  Input and Output methods\r\n  */\r\n\r\n  _clamped () {\r\n    const { _a, _b, _c } = this.rgb()\r\n    const { max, min, round } = Math\r\n    const format = v => max(0, min(round(v), 255))\r\n    return [ _a, _b, _c ].map(format)\r\n  }\r\n\r\n  toHex () {\r\n    const [ r, g, b ] = this._clamped().map(componentHex)\r\n    return `#${r}${g}${b}`\r\n  }\r\n\r\n  toString () {\r\n    return this.toHex()\r\n  }\r\n\r\n  toRgb () {\r\n    const [ rV, gV, bV ] = this._clamped()\r\n    const string = `rgb(${rV},${gV},${bV})`\r\n    return string\r\n  }\r\n\r\n  toArray () {\r\n    const { _a, _b, _c, _d, space } = this\r\n    return [ _a, _b, _c, _d, space ]\r\n  }\r\n\r\n  /*\r\n  Generating random colors\r\n  */\r\n\r\n  static random (mode = 'vibrant', t, u) {\r\n\r\n    // Get the math modules\r\n    const { random, round, sin, PI: pi } = Math\r\n\r\n    // Run the correct generator\r\n    if (mode === 'vibrant') {\r\n\r\n      const l = (81 - 57) * random() + 57\r\n      const c = (83 - 45) * random() + 45\r\n      const h = 360 * random()\r\n      const color = new Color(l, c, h, 'lch')\r\n      return color\r\n\r\n    } else if (mode === 'sine') {\r\n\r\n      t = t == null ? random() : t\r\n      const r = round(80 * sin(2 * pi * t / 0.5 + 0.01) + 150)\r\n      const g = round(50 * sin(2 * pi * t / 0.5 + 4.6) + 200)\r\n      const b = round(100 * sin(2 * pi * t / 0.5 + 2.3) + 150)\r\n      const color = new Color(r, g, b)\r\n      return color\r\n\r\n    } else if (mode === 'pastel') {\r\n\r\n      const l = (94 - 86) * random() + 86\r\n      const c = (26 - 9) * random() + 9\r\n      const h = 360 * random()\r\n      const color = new Color(l, c, h, 'lch')\r\n      return color\r\n\r\n    } else if (mode === 'dark') {\r\n\r\n      const l = 10 + 10 * random()\r\n      const c = (125 - 75) * random() + 86\r\n      const h = 360 * random()\r\n      const color = new Color(l, c, h, 'lch')\r\n      return color\r\n\r\n    } else if (mode === 'rgb') {\r\n\r\n      const r = 255 * random()\r\n      const g = 255 * random()\r\n      const b = 255 * random()\r\n      const color = new Color(r, g, b)\r\n      return color\r\n\r\n    } else if (mode === 'lab') {\r\n\r\n      const l = 100 * random()\r\n      const a = 256 * random() - 128\r\n      const b = 256 * random() - 128\r\n      const color = new Color(l, a, b, 'lab')\r\n      return color\r\n\r\n    } else if (mode === 'grey') {\r\n\r\n      const grey = 255 * random()\r\n      const color = new Color(grey, grey, grey)\r\n      return color\r\n\r\n    }\r\n  }\r\n\r\n  /*\r\n  Constructing colors\r\n  */\r\n\r\n  // Test if given value is a color string\r\n  static test (color) {\r\n    return (typeof color === 'string')\r\n      && (isHex.test(color) || isRgb.test(color))\r\n  }\r\n\r\n  // Test if given value is an 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 color && (\r\n      color instanceof Color\r\n      || this.isRgb(color)\r\n      || this.test(color)\r\n    )\r\n  }\r\n}\r\n","import Matrix from './Matrix.js'\r\n\r\nexport default class Point {\r\n  // Initialize\r\n  constructor (...args) {\r\n    this.init(...args)\r\n  }\r\n\r\n  init (x, y) {\r\n    const base = { x: 0, y: 0 }\r\n\r\n    // ensure source as object\r\n    const source = Array.isArray(x) ? { 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 (m) {\r\n    return this.clone().transformO(m)\r\n  }\r\n\r\n  // Transform point with matrix\r\n  transformO (m) {\r\n    if (!Matrix.isMatrixLike(m)) {\r\n      m = new Matrix(m)\r\n    }\r\n\r\n    const { x, y } = this\r\n\r\n    // Perform the matrix multiplication\r\n    this.x = m.a * x + m.c * y + m.e\r\n    this.y = m.b * x + m.d * y + m.f\r\n\r\n    return this\r\n  }\r\n\r\n  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 { delimiter } from '../modules/core/regex.js'\r\nimport { radians } from '../utils/utils.js'\r\nimport { register } from '../utils/adopter.js'\r\nimport Element from '../elements/Element.js'\r\nimport Point from './Point.js'\r\n\r\nfunction closeEnough (a, b, threshold) {\r\n  return Math.abs(b - a) < (threshold || 1e-6)\r\n}\r\n\r\nexport default class Matrix {\r\n  constructor (...args) {\r\n    this.init(...args)\r\n  }\r\n\r\n  // 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    const { 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    const tx = e - cx + cx * ct * sx + cy * (lam * ct * sx - st * sy)\r\n    const ty = f - cy + cx * st * sx + cy * (lam * st * sx + ct * sy)\r\n\r\n    // Construct the decomposition and return it\r\n    return {\r\n      // Return the affine parameters\r\n      scaleX: sx,\r\n      scaleY: sy,\r\n      shear: lam,\r\n      rotate: theta,\r\n      translateX: tx,\r\n      translateY: ty,\r\n      originX: cx,\r\n      originY: cy,\r\n\r\n      // Return the matrix parameters\r\n      a: this.a,\r\n      b: this.b,\r\n      c: this.c,\r\n      d: this.d,\r\n      e: this.e,\r\n      f: this.f\r\n    }\r\n  }\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    const { a, b, c, d, e, f } = this\r\n\r\n    this.a = a * x\r\n    this.b = b * y\r\n    this.c = c * x\r\n    this.d = d * y\r\n    this.e = e * x - cx * x + cx\r\n    this.f = f * y - cy * y + cy\r\n\r\n    return this\r\n  }\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    const cos = Math.cos(r)\r\n    const sin = Math.sin(r)\r\n\r\n    const { a, b, c, d, e, f } = this\r\n\r\n    this.a = a * cos - b * sin\r\n    this.b = b * cos + a * sin\r\n    this.c = c * cos - d * sin\r\n    this.d = d * cos + c * sin\r\n    this.e = e * cos - f * sin + cy * sin - cx * cos + cx\r\n    this.f = f * cos + e * sin - cx * sin - cy * cos + cy\r\n\r\n    return this\r\n  }\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    const { a, b, c, d, e, f } = this\r\n\r\n    this.a = a + b * lx\r\n    this.c = c + d * lx\r\n    this.e = e + f * lx - cy * lx\r\n\r\n    return this\r\n  }\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    const lx = Math.tan(x)\r\n    const ly = Math.tan(y)\r\n\r\n    const { a, b, c, d, e, f } = this\r\n\r\n    this.a = a + b * lx\r\n    this.b = b + a * ly\r\n    this.c = c + d * lx\r\n    this.d = d + c * ly\r\n    this.e = e + f * lx - cy * lx\r\n    this.f = f + e * ly - cx * ly\r\n\r\n    return this\r\n  }\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\r\nregister(Matrix, 'Matrix')\r\n","import { globals } from '../../utils/window.js'\r\nimport { makeInstance } from '../../utils/adopter.js'\r\n\r\nexport default function parser () {\r\n  // Reuse cached element if possible\r\n  if (!parser.nodes) {\r\n    const svg = makeInstance().size(2, 0)\r\n    svg.node.style.cssText = [\r\n      'opacity: 0',\r\n      'position: absolute',\r\n      'left: -100%',\r\n      'top: -100%',\r\n      'overflow: hidden'\r\n    ].join(';')\r\n\r\n    svg.attr('focusable', 'false')\r\n    svg.attr('aria-hidden', 'true')\r\n\r\n    const path = svg.path().node\r\n\r\n    parser.nodes = { svg, path }\r\n  }\r\n\r\n  if (!parser.nodes.svg.node.parentNode) {\r\n    const b = globals.document.body || globals.document.documentElement\r\n    parser.nodes.svg.addTo(b)\r\n  }\r\n\r\n  return parser.nodes\r\n}\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { globals } from '../utils/window.js'\r\nimport { register } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Matrix from './Matrix.js'\r\nimport Point from './Point.js'\r\nimport parser from '../modules/core/parser.js'\r\n\r\nfunction isNulledBox (box) {\r\n  return !box.width && !box.height && !box.x && !box.y\r\n}\r\n\r\nfunction domContains (node) {\r\n  return node === globals.document\r\n    || (globals.document.documentElement.contains || function (node) {\r\n      // This is IE - it does not support contains() for top-level SVGs\r\n      while (node.parentNode) {\r\n        node = node.parentNode\r\n      }\r\n      return node === globals.document\r\n    }).call(globals.document.documentElement, node)\r\n}\r\n\r\nexport default class Box {\r\n  constructor (...args) {\r\n    this.init(...args)\r\n  }\r\n\r\n  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    const x = Math.min(this.x, box.x)\r\n    const y = Math.min(this.y, box.y)\r\n    const width = Math.max(this.x + this.width, box.x + box.width) - x\r\n    const height = Math.max(this.y + this.height, box.y + box.height) - y\r\n\r\n    return new Box(x, y, width, height)\r\n  }\r\n\r\n  transform (m) {\r\n    if (!(m instanceof Matrix)) {\r\n      m = new Matrix(m)\r\n    }\r\n\r\n    let xMin = Infinity\r\n    let xMax = -Infinity\r\n    let yMin = Infinity\r\n    let yMax = -Infinity\r\n\r\n    const pts = [\r\n      new Point(this.x, this.y),\r\n      new Point(this.x2, this.y),\r\n      new Point(this.x, this.y2),\r\n      new Point(this.x2, this.y2)\r\n    ]\r\n\r\n    pts.forEach(function (p) {\r\n      p = p.transform(m)\r\n      xMin = Math.min(xMin, p.x)\r\n      xMax = Math.max(xMax, p.x)\r\n      yMin = Math.min(yMin, p.y)\r\n      yMax = Math.max(yMax, p.y)\r\n    })\r\n\r\n    return new Box(\r\n      xMin, yMin,\r\n      xMax - xMin,\r\n      yMax - yMin\r\n    )\r\n  }\r\n\r\n  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, retry) {\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    box = retry(this)\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(), (el) => {\r\n    try {\r\n      const clone = el.clone().addTo(parser().svg).show()\r\n      const box = clone.node.getBBox()\r\n      clone.remove()\r\n      return box\r\n    } catch (e) {\r\n      throw new Error('Getting bbox of element \"' + el.node.nodeName + '\" is not possible. ' + e.toString())\r\n    }\r\n  }))\r\n}\r\n\r\nexport function rbox (el) {\r\n  const box = new Box(getBox.call(this, (node) => node.getBoundingClientRect(), (el) => {\r\n    throw new Error('Getting rbox of element \"' + el.node.nodeName + '\" is not possible')\r\n  }))\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    zoom (level, point) {\r\n      let width = this.node.clientWidth\r\n      let height = this.node.clientHeight\r\n      const v = this.viewbox()\r\n\r\n      // Firefox does not support clientHeight and returns 0\r\n      // https://bugzilla.mozilla.org/show_bug.cgi?id=874811\r\n      if (!width && !height) {\r\n        var style = window.getComputedStyle(this.node)\r\n        width = parseFloat(style.getPropertyValue('width'))\r\n        height = parseFloat(style.getPropertyValue('height'))\r\n      }\r\n\r\n      const zoomX = width / v.width\r\n      const zoomY = height / v.height\r\n      const zoom = Math.min(zoomX, zoomY)\r\n\r\n      if (level == null) {\r\n        return zoom\r\n      }\r\n\r\n      let zoomAmount = zoom / level\r\n      if (zoomAmount === Infinity) zoomAmount = Number.MIN_VALUE\r\n\r\n      point = point || new Point(width / 2 / zoomX + v.x, height / 2 / zoomY + v.y)\r\n\r\n      const box = new Box(v).transform(\r\n        new Matrix({ scale: zoomAmount, origin: point })\r\n      )\r\n\r\n      return this.viewbox(box)\r\n    }\r\n  }\r\n})\r\n\r\nregister(Box, 'Box')\r\n","/* 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      return this.map((el) => {\r\n        return fnOrMethodName.call(el, el)\r\n      })\r\n    } else {\r\n      return this.map(el => {\r\n        return el[fnOrMethodName](...args)\r\n      })\r\n    }\r\n  },\r\n\r\n  toArray () {\r\n    return Array.prototype.concat.apply([], this)\r\n  }\r\n})\r\n\r\nconst reserved = [ 'toArray', 'constructor', 'each' ]\r\n\r\nList.extend = function (methods) {\r\n  methods = methods.reduce((obj, name) => {\r\n    // Don't overwrite own methods\r\n    if (reserved.includes(name)) return obj\r\n\r\n    // Don't add private methods\r\n    if (name[0] === '_') return obj\r\n\r\n    // Relay every call to each()\r\n    obj[name] = function (...attrs) {\r\n      return this.each(name, ...attrs)\r\n    }\r\n    return obj\r\n  }, {})\r\n\r\n  extend(List, methods)\r\n}\r\n","import { adopt } from '../../utils/adopter.js'\r\nimport { globals } from '../../utils/window.js'\r\nimport { map } from '../../utils/utils.js'\r\nimport List from '../../types/List.js'\r\n\r\nexport default function baseFind (query, parent) {\r\n  return new List(map((parent || globals.document).querySelectorAll(query), function (node) {\r\n    return adopt(node)\r\n  }))\r\n}\r\n\r\n// Scoped find method\r\nexport function find (query) {\r\n  return baseFind(query, this.node)\r\n}\r\n\r\nexport function findOne (query) {\r\n  return adopt(this.node.querySelector(query))\r\n}\r\n","import { dispatch, off, on } from '../modules/core/event.js'\r\nimport { register } from '../utils/adopter.js'\r\nimport Base from './Base.js'\r\n\r\nexport default class EventTarget extends Base {\r\n  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 (const i in events) {\r\n      for (const j in events[i]) {\r\n        events[i][j](event)\r\n      }\r\n    }\r\n\r\n    return !event.defaultPrevented\r\n  }\r\n\r\n  // Fire given event\r\n  fire (event, data) {\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\nregister(EventTarget, 'EventTarget')\r\n","\r\nexport function noop () {}\r\n\r\n// Default animation values\r\nexport const timeline = {\r\n  duration: 400,\r\n  ease: '>',\r\n  delay: 0\r\n}\r\n\r\n// Default attribute values\r\nexport const attrs = {\r\n\r\n  // fill and stroke\r\n  'fill-opacity': 1,\r\n  'stroke-opacity': 1,\r\n  'stroke-width': 0,\r\n  'stroke-linejoin': 'miter',\r\n  'stroke-linecap': 'butt',\r\n  fill: '#000000',\r\n  stroke: '#000000',\r\n  opacity: 1,\r\n\r\n  // position\r\n  x: 0,\r\n  y: 0,\r\n  cx: 0,\r\n  cy: 0,\r\n\r\n  // size\r\n  width: 0,\r\n  height: 0,\r\n\r\n  // radius\r\n  r: 0,\r\n  rx: 0,\r\n  ry: 0,\r\n\r\n  // gradient\r\n  offset: 0,\r\n  'stop-opacity': 1,\r\n  'stop-color': '#000000',\r\n\r\n  // text\r\n  'text-anchor': 'start'\r\n}\r\n","import { delimiter } from '../modules/core/regex.js'\r\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] === '%') {\r\n          this.value /= 100\r\n        } else if (unit[5] === 's') {\r\n          this.value *= 1000\r\n        }\r\n\r\n        // store unit\r\n        this.unit = unit[5]\r\n      }\r\n    } else {\r\n      if (value instanceof SVGNumber) {\r\n        this.value = value.valueOf()\r\n        this.unit = value.unit\r\n      }\r\n    }\r\n\r\n    return this\r\n  }\r\n\r\n  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  convert (unit) {\r\n    return new SVGNumber(this.value, 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 (const node of val) {\r\n      attr[node.nodeName] = isNumber.test(node.nodeValue)\r\n        ? parseFloat(node.nodeValue)\r\n        : node.nodeValue\r\n    }\r\n\r\n    return attr\r\n  } else if (attr instanceof Array) {\r\n    // loop through array and get all values\r\n    return attr.reduce((last, curr) => {\r\n      last[curr] = this.attr(curr)\r\n      return last\r\n    }, {})\r\n  } else if (typeof attr === 'object' && attr.constructor === Object) {\r\n    // apply every attribute individually if an object is passed\r\n    for (val in attr) this.attr(val, attr[val])\r\n  } else if (val === null) {\r\n    // remove value\r\n    this.node.removeAttribute(attr)\r\n  } else if (val == null) {\r\n    // act as a getter if the first and only argument is not an object\r\n    val = this.node.getAttribute(attr)\r\n    return val == null ? 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  create,\r\n  register\r\n} from '../utils/adopter.js'\r\nimport { find, findOne } from '../modules/core/selector.js'\r\nimport { globals } from '../utils/window.js'\r\nimport { map } from '../utils/utils.js'\r\nimport { 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    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(create(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) {\r\n      if (typeof type === 'string' ? parent.matches(type) : parent instanceof type) return parent\r\n      if (!parent.node.parentNode || parent.node.parentNode.nodeName === '#document' || parent.node.parentNode.nodeName === '#document-fragment') return null // #759, #720\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          const 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          const result = svgOrFn(this)\r\n          const _this = result || this\r\n\r\n          // If modifier returns false, discard node\r\n          if (result === false) {\r\n            this.remove()\r\n\r\n            // If modifier returns new node, use it\r\n          } else if (result && this !== _this) {\r\n            this.replace(_this)\r\n          }\r\n        }, true)\r\n      }\r\n\r\n      // Return outer or inner content\r\n      return 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    const 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, findOne })\r\nregister(Dom, '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\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  // Relative move over x and y axes\r\n  dmove (x, y) {\r\n    return this.dx(x).dy(y)\r\n  }\r\n\r\n  // Relative move over x axis\r\n  dx (x = 0) {\r\n    return this.x(new SVGNumber(x).plus(this.x()))\r\n  }\r\n\r\n  // Relative move over y axis\r\n  dy (y = 0) {\r\n    return this.y(new SVGNumber(y).plus(this.y()))\r\n  }\r\n\r\n  // Get parent document\r\n  root () {\r\n    const p = this.parent(getClass(root))\r\n    return p && p.root()\r\n  }\r\n\r\n  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    const box = this.bbox()\r\n\r\n    return x > box.x\r\n      && y > box.y\r\n      && x < box.x + box.width\r\n      && y < box.y + box.height\r\n  }\r\n\r\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    const 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    const p = proportionalSize(this, width, height)\r\n\r\n    return this\r\n      .width(new SVGNumber(p.width))\r\n      .height(new SVGNumber(p.height))\r\n  }\r\n\r\n  // Set width of element\r\n  width (width) {\r\n    return this.attr('width', width)\r\n  }\r\n\r\n  // write svgjs data to the dom\r\n  writeDataToDom () {\r\n    // remove previously set data\r\n    this.node.removeAttribute('svgjs:data')\r\n\r\n    if (Object.keys(this.dom).length) {\r\n      this.node.setAttribute('svgjs:data', JSON.stringify(this.dom)) // see #428\r\n    }\r\n\r\n    return super.writeDataToDom()\r\n  }\r\n\r\n  // Move over x-axis\r\n  x (x) {\r\n    return this.attr('x', x)\r\n  }\r\n\r\n  // Move over y-axis\r\n  y (y) {\r\n    return this.attr('y', y)\r\n  }\r\n}\r\n\r\nextend(Element, {\r\n  bbox, rbox, point, ctm, screenCTM\r\n})\r\n\r\nregister(Element, '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' || o instanceof Color || Color.isRgb(o) || (o instanceof Element)) {\r\n      this.attr(m, o)\r\n    } else {\r\n      // set all attributes from sugar.fill and sugar.stroke list\r\n      for (i = sugar[m].length - 1; i >= 0; i--) {\r\n        if (o[sugar[m][i]] != null) {\r\n          this.attr(sugar.prefix(m, sugar[m][i]), o[sugar[m][i]])\r\n        }\r\n      }\r\n    }\r\n\r\n    return this\r\n  }\r\n\r\n  registerMethods([ 'Element', 'Runner' ], extension)\r\n})\r\n\r\nregisterMethods([ 'Element', 'Runner' ], {\r\n  // Let the user set the matrix directly\r\n  matrix: function (mat, b, c, d, e, f) {\r\n    // Act as a getter\r\n    if (mat == null) {\r\n      return new Matrix(this)\r\n    }\r\n\r\n    // Act as a setter, the user can pass a matrix or a set of numbers\r\n    return this.attr('transform', new Matrix(mat, b, c, d, e, f))\r\n  },\r\n\r\n  // Map rotation to transform\r\n  rotate: function (angle, cx, cy) {\r\n    return this.transform({ rotate: angle, ox: cx, oy: cy }, true)\r\n  },\r\n\r\n  // Map skew to transform\r\n  skew: function (x, y, cx, cy) {\r\n    return arguments.length === 1 || arguments.length === 3\r\n      ? this.transform({ skew: x, ox: y, oy: cx }, true)\r\n      : this.transform({ skew: [ x, y ], ox: cx, oy: cy }, true)\r\n  },\r\n\r\n  shear: function (lam, cx, cy) {\r\n    return this.transform({ shear: lam, ox: cx, oy: cy }, true)\r\n  },\r\n\r\n  // Map scale to transform\r\n  scale: function (x, y, cx, cy) {\r\n    return arguments.length === 1 || arguments.length === 3\r\n      ? this.transform({ scale: x, ox: y, oy: cx }, true)\r\n      : this.transform({ scale: [ x, y ], ox: cx, oy: cy }, true)\r\n  },\r\n\r\n  // Map translate to transform\r\n  translate: function (x, y) {\r\n    return this.transform({ translate: [ x, y ] }, true)\r\n  },\r\n\r\n  // Map relative translations to transform\r\n  relative: function (x, y) {\r\n    return this.transform({ relative: [ x, y ] }, true)\r\n  },\r\n\r\n  // Map flip to transform\r\n  flip: function (direction, 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    return 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\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      return this\r\n    }\r\n\r\n    return a === 'leading'\r\n      ? this.leading(v)\r\n      : a === 'anchor'\r\n        ? this.attr('text-anchor', v)\r\n        : a === 'size' || a === 'family' || a === 'weight' || a === 'stretch' || a === 'variant' || a === 'style'\r\n          ? this.attr('font-' + a, v)\r\n          : this.attr(a, v)\r\n  }\r\n})\r\n\r\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","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) {\r\n            return parseFloat(str)\r\n          })\r\n      ]\r\n    })\r\n    .reverse()\r\n    // merge every transformation into one matrix\r\n    .reduce(function (matrix, transform) {\r\n      if (transform[0] === 'matrix') {\r\n        return matrix.lmultiply(Matrix.fromArray(transform[1]))\r\n      }\r\n      return matrix[transform[0]].apply(matrix, transform[1])\r\n    }, new Matrix())\r\n\r\n  return matrix\r\n}\r\n\r\n// add an element to another parent without changing the visual representation on the screen\r\nexport function toParent (parent) {\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 o == null ? decomposed : decomposed[o]\r\n  }\r\n\r\n  if (!Matrix.isMatrixLike(o)) {\r\n    // Set the origin according to the defined transform\r\n    o = { ...o, origin: getOrigin(o, this) }\r\n  }\r\n\r\n  // The user can pass a boolean, an Element or an Matrix or nothing\r\n  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, '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  Container: {\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, '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, '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 () {\r\n    return this\r\n  }\n\r\n  ungroup () {\r\n    return this\r\n  }\r\n}\r\n\r\nregister(Defs, '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 = 0, height = width) {\r\n    return this.put(new Ellipse()).size(width, height).move(0, 0)\r\n  })\r\n})\r\n\r\nregister(Ellipse, 'Ellipse')\r\n","import { 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, '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, '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, '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, '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\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  // transform points with matrix (similar to Point.transform)\r\n  transform (m) {\r\n    const points = []\r\n\r\n    for (let i = 0; i < this.length; i++) {\r\n      const point = this[i]\r\n      // Perform the matrix multiplication\r\n      points.push([\r\n        m.a * point[0] + m.c * point[1] + m.e,\r\n        m.b * point[0] + m.d * point[1] + m.f\r\n      ])\r\n    }\r\n\r\n    // Return the required point\r\n    return new PointArray(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 const MorphArray = PointArray\r\n\r\n// Move by left top corner over x-axis\r\nexport function x (x) {\r\n  return x == null ? this.bbox().x : this.move(x, this.bbox().y)\r\n}\r\n\r\n// Move by left top corner over y-axis\r\nexport function y (y) {\r\n  return y == null ? this.bbox().y : this.move(this.bbox().x, y)\r\n}\r\n\r\n// Set width of element\r\nexport function width (width) {\r\n  const b = this.bbox()\r\n  return width == null ? b.width : this.size(width, b.height)\r\n}\r\n\r\n// Set height of element\r\nexport function height (height) {\r\n  const b = this.bbox()\r\n  return height == null ? b.height : this.size(b.width, height)\r\n}\r\n","import {\r\n  extend,\r\n  nodeOrNew,\r\n  register,\r\n  wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PointArray from '../types/PointArray.js'\r\nimport Shape from './Shape.js'\r\nimport * as pointed from '../modules/core/pointed.js'\r\n\r\nexport default class Line extends Shape {\r\n  // Initialize node\r\n  constructor (node) {\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, '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') {\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  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, 'Marker')\r\n","module.exports = function (it) {\n  if (typeof it != 'function') {\n    throw TypeError(String(it) + ' is not a function');\n  } return it;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !method || !fails(function () {\n    // eslint-disable-next-line no-useless-call,no-throw-literal\n    method.call(null, argument || function () { throw 1; }, 1);\n  });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeSort = [].sort;\nvar test = [1, 2, 3];\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n  test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n  test.sort(null);\n});\n// Old WebKit\nvar SLOPPY_METHOD = sloppyArrayMethod('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  sort: function sort(comparefn) {\n    return comparefn === undefined\n      ? nativeSort.call(toObject(this))\n      : nativeSort.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 const easing = {\r\n  '-': function (pos) {\r\n    return pos\r\n  },\r\n  '<>': function (pos) {\r\n    return -Math.cos(pos * Math.PI) / 2 + 0.5\r\n  },\r\n  '>': function (pos) {\r\n    return Math.sin(pos * Math.PI / 2)\r\n  },\r\n  '<': function (pos) {\r\n    return -Math.cos(pos * Math.PI / 2) + 1\r\n  },\r\n  bezier: function (x1, y1, x2, y2) {\r\n    // see https://www.w3.org/TR/css-easing-1/#cubic-bezier-algo\r\n    return function (t) {\r\n      if (t < 0) {\r\n        if (x1 > 0) {\r\n          return y1 / x1 * t\r\n        } else if (x2 > 0) {\r\n          return y2 / x2 * t\r\n        } else {\r\n          return 0\r\n        }\r\n      } else if (t > 1) {\r\n        if (x2 < 1) {\r\n          return (1 - y2) / (1 - x2) * t + (y2 - x2) / (1 - x2)\r\n        } else if (x1 < 1) {\r\n          return (1 - y1) / (1 - x1) * t + (y1 - x1) / (1 - x1)\r\n        } else {\r\n          return 1\r\n        }\r\n      } else {\r\n        return 3 * t * (1 - t) ** 2 * y1 + 3 * t ** 2 * (1 - t) * y2 + t ** 3\r\n      }\r\n    }\r\n  },\r\n  // see https://www.w3.org/TR/css-easing-1/#step-timing-function-algo\r\n  steps: function (steps, stepPosition = 'end') {\r\n    // deal with \"jump-\" prefix\r\n    stepPosition = stepPosition.split('-').reverse()[0]\r\n\r\n    let jumps = steps\r\n    if (stepPosition === 'none') {\r\n      --jumps\r\n    } else if (stepPosition === 'both') {\r\n      ++jumps\r\n    }\r\n\r\n    // The beforeFlag is essentially useless\r\n    return (t, beforeFlag = false) => {\r\n      // Step is called currentStep in referenced url\r\n      let step = Math.floor(t * steps)\r\n      const jumping = (t * step) % 1 === 0\r\n\r\n      if (stepPosition === 'start' || stepPosition === 'both') {\r\n        ++step\r\n      }\r\n\r\n      if (beforeFlag && jumping) {\r\n        --step\r\n      }\r\n\r\n      if (t >= 0 && step < 0) {\r\n        step = 0\r\n      }\r\n\r\n      if (t <= 1 && step > jumps) {\r\n        step = jumps\r\n      }\r\n\r\n      return step / jumps\r\n    }\r\n  }\r\n}\r\n\r\nexport class Stepper {\r\n  done () {\r\n    return false\r\n  }\r\n}\r\n\r\n/***\r\nEasing Functions\r\n================\r\n***/\r\n\r\nexport class Ease extends Stepper {\r\n  constructor (fn) {\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\nconst 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    // If the box width or height is 0 then we ignore\r\n    // transformations on the respective axis\r\n    box.width = box.width === 0 ? 1 : box.width\r\n    box.height = box.height === 0 ? 1 : box.height\r\n\r\n    // recalculate position of all points according to new size\r\n    for (i = this.length - 1; i >= 0; i--) {\r\n      l = this[i][0]\r\n\r\n      if (l === 'M' || l === 'L' || l === 'T') {\r\n        this[i][1] = ((this[i][1] - box.x) * width) / box.width + box.x\r\n        this[i][2] = ((this[i][2] - box.y) * height) / box.height + box.y\r\n      } else if (l === 'H') {\r\n        this[i][1] = ((this[i][1] - box.x) * width) / box.width + box.x\r\n      } else if (l === 'V') {\r\n        this[i][1] = ((this[i][1] - box.y) * height) / box.height + box.y\r\n      } else if (l === 'C' || l === 'S' || l === 'Q') {\r\n        this[i][1] = ((this[i][1] - box.x) * width) / box.width + box.x\r\n        this[i][2] = ((this[i][2] - box.y) * height) / box.height + box.y\r\n        this[i][3] = ((this[i][3] - box.x) * width) / box.width + box.x\r\n        this[i][4] = ((this[i][4] - box.y) * height) / box.height + box.y\r\n\r\n        if (l === 'C') {\r\n          this[i][5] = ((this[i][5] - box.x) * width) / box.width + box.x\r\n          this[i][6] = ((this[i][6] - box.y) * height) / box.height + box.y\r\n        }\r\n      } else if (l === 'A') {\r\n        // resize radii\r\n        this[i][1] = (this[i][1] * width) / box.width\r\n        this[i][2] = (this[i][2] * height) / box.height\r\n\r\n        // move position values\r\n        this[i][6] = ((this[i][6] - box.x) * width) / box.width + box.x\r\n        this[i][7] = ((this[i][7] - box.y) * height) / box.height + box.y\r\n      }\r\n    }\r\n\r\n    return this\r\n  },\r\n\r\n  // 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))\r\n    if (this._type === Color) {\r\n      result = this._to ? result[this._to[4]]()\r\n        : this._from ? result[this._from[4]]()\r\n        : result\r\n    }\r\n    result = result.toArray()\r\n\r\n    this._morphObj = this._morphObj || new this._type()\r\n    this._context = this._context\r\n      || Array.apply(null, Array(result.length))\r\n        .map(Object)\r\n        .map(function (o) {\r\n          o.done = true\r\n          return o\r\n        })\r\n    return result\r\n  }\r\n\r\n  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 (const 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, '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  const p = proportionalSize(this, width, height)\r\n  return this.attr('points', this.array().size(p.width, p.height))\r\n}\r\n","import {\r\n  extend,\r\n  nodeOrNew,\r\n  register,\r\n  wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PointArray from '../types/PointArray.js'\r\nimport Shape from './Shape.js'\r\nimport * as pointed from '../modules/core/pointed.js'\r\nimport * as poly from '../modules/core/poly.js'\r\n\r\nexport default class Polygon extends Shape {\r\n  // Initialize node\r\n  constructor (node) {\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, '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, '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, '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    // 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  immediates: new Queue(),\r\n  timer: () => globals.window.performance || globals.window.Date,\r\n  transforms: [],\r\n\r\n  frame (fn) {\r\n    // Store the node\r\n    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  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  immediate (fn) {\r\n    // Add the immediate fn to the end of the queue\r\n    var node = Animator.immediates.push(fn)\r\n    // Request another animation frame if we need one\r\n    if (Animator.nextDraw === null) {\r\n      Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw)\r\n    }\r\n\r\n    return node\r\n  },\r\n\r\n  cancelFrame (node) {\r\n    node != null && Animator.frames.remove(node)\r\n  },\r\n\r\n  clearTimeout (node) {\r\n    node != null && Animator.timeouts.remove(node)\r\n  },\r\n\r\n  cancelImmediate (node) {\r\n    node != null && Animator.immediates.remove(node)\r\n  },\r\n\r\n  _draw (now) {\r\n    // Run all the timeouts we can run, if they are not ready yet, add them\r\n    // to the end of the queue immediately! (bad timeouts!!! [sarcasm])\r\n    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(now)\r\n    }\r\n\r\n    var nextImmediate = null\r\n    while ((nextImmediate = Animator.immediates.shift())) {\r\n      nextImmediate()\r\n    }\r\n\r\n    // If we have remaining timeouts or frames, draw until we don't anymore\r\n    Animator.nextDraw = Animator.timeouts.first() || Animator.frames.first()\r\n      ? globals.window.requestAnimationFrame(Animator._draw)\r\n      : null\r\n  }\r\n}\r\n\r\nexport default Animator\r\n","import { globals } from '../utils/window.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Animator from './Animator.js'\r\nimport EventTarget from '../types/EventTarget.js'\r\n\r\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  const w = globals.window\r\n  return (w.performance || w.Date).now()\r\n}\r\n\r\nexport default class Timeline extends EventTarget {\r\n  // Construct a new timeline on the given element\r\n  constructor (timeSource = defaultSource) {\r\n    super()\r\n\r\n    this._timeSource = timeSource\r\n\r\n    // Store the timing variables\r\n    this._startTime = 0\r\n    this._speed = 1.0\r\n\r\n    // Determines how long a runner is hold in memory. Can be a dt or true/false\r\n    this._persist = 0\r\n\r\n    // Keep track of the running animations and their starting parameters\r\n    this._nextFrame = null\r\n    this._paused = true\r\n    this._runners = []\r\n    this._runnerIds = []\r\n    this._lastRunnerId = -1\r\n    this._time = 0\r\n    this._lastSourceTime = 0\r\n    this._lastStepTime = 0\r\n\r\n    // Make sure that step is always called in class context\r\n    this._step = this._stepFn.bind(this, false)\r\n    this._stepImmediate = this._stepFn.bind(this, true)\r\n  }\r\n\r\n  // schedules a runner on the timeline\r\n  schedule (runner, delay, when) {\r\n    if (runner == null) {\r\n      return this._runners.map(makeSchedule)\r\n    }\r\n\r\n    // The start time for the next animation can either be given explicitly,\r\n    // derived from the current timeline time or it can be relative to the\r\n    // last start time to chain animations 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      const 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\r\n    const persist = runner.persist()\r\n    const runnerInfo = {\r\n      persist: persist === null ? this._persist : persist,\r\n      start: absoluteStartTime + delay,\r\n      runner\r\n    }\r\n\r\n    this._lastRunnerId = runner.id\r\n\r\n    this._runners.push(runnerInfo)\r\n    this._runners.sort((a, b) => a.start - b.start)\r\n    this._runnerIds = this._runners.map(info => info.runner.id)\r\n\r\n    this.updateTime()._continue()\r\n    return this\r\n  }\r\n\r\n  // Remove the runner from this timeline\r\n  unschedule (runner) {\r\n    var index = this._runnerIds.indexOf(runner.id)\r\n    if (index < 0) return this\r\n\r\n    this._runners.splice(index, 1)\r\n    this._runnerIds.splice(index, 1)\r\n\r\n    runner.timeline(null)\r\n    return this\r\n  }\r\n\r\n  // Calculates the end of the timeline\r\n  getEndTime () {\r\n    var lastRunnerInfo = this._runners[this._runnerIds.indexOf(this._lastRunnerId)]\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  getEndTimeOfTimeline () {\r\n    let lastEndTime = 0\r\n    for (var i = 0; i < this._runners.length; i++) {\r\n      const runnerInfo = this._runners[i]\r\n      var duration = runnerInfo ? runnerInfo.runner.duration() : 0\r\n      var startTime = runnerInfo ? runnerInfo.start : 0\r\n      const endTime = startTime + duration\r\n      if (endTime > lastEndTime) {\r\n        lastEndTime = endTime\r\n      }\r\n    }\r\n    return lastEndTime\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.getEndTimeOfTimeline() + 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  _stepFn (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    // This is for the case that the timeline was seeked so that the time\r\n    // is now before the startTime of the runner. Thats why we need to set\r\n    // the runner to position 0\r\n\r\n    // FIXME:\r\n    // However, reseting in insertion order leads to bugs. Considering the case,\r\n    // where 2 runners change the same attriute but in different times,\r\n    // reseting both of them will lead to the case where the later defined\r\n    // runner always wins the reset even if the other runner started earlier\r\n    // and therefore should win the attribute battle\r\n    // this can be solved by reseting them backwards\r\n    for (var k = this._runners.length; k--;) {\r\n      // Get and run the current runner and ignore it if its inactive\r\n      const runnerInfo = this._runners[k]\r\n      const runner = runnerInfo.runner\r\n\r\n      // Make sure that we give the actual difference\r\n      // between runner start time and now\r\n      const dtToStart = this._time - runnerInfo.start\r\n\r\n      // Dont run runner if not started yet\r\n      // and try to reset it\r\n      if (dtToStart <= 0) {\r\n        runner.reset()\r\n      }\r\n    }\r\n\r\n    // Run all of the runners directly\r\n    var runnersLeft = false\r\n    for (var i = 0, len = this._runners.length; i < len; i++) {\r\n      // Get and run the current runner and ignore it if its inactive\r\n      const runnerInfo = this._runners[i]\r\n      const runner = runnerInfo.runner\r\n      let dt = dtTime\r\n\r\n      // Make sure that we give the actual difference\r\n      // between runner start time and now\r\n      const dtToStart = this._time - runnerInfo.start\r\n\r\n      // Dont run runner if not started yet\r\n      if (dtToStart <= 0) {\r\n        runnersLeft = true\r\n        continue\r\n      } else if (dtToStart < dt) {\r\n        // Adjust dt to make sure that animation is on point\r\n        dt = dtToStart\r\n      }\r\n\r\n      if (!runner.active()) continue\r\n\r\n      // If this runner is still going, signal that we need another animation\r\n      // frame, otherwise, remove the completed runner\r\n      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        var endTime = runner.duration() - runner.time() + this._time\r\n\r\n        if (endTime + runnerInfo.persist < this._time) {\r\n          // Delete runner and correct index\r\n          runner.unschedule()\r\n          --i\r\n          --len\r\n        }\r\n      }\r\n    }\r\n\r\n    // Basically: we continue when there are runners right from us in time\r\n    // when -->, and when runners are left from us when <--\r\n    if ((runnersLeft && !(this._speed < 0 && this._time === 0)) || (this._runnerIds.length && this._speed < 0 && this._time > 0)) {\r\n      this._continue()\r\n    } else {\r\n      this.pause()\r\n      this.fire('finished')\r\n    }\r\n\r\n    return this\r\n  }\r\n\r\n  // Checks if we are running and continues the animation\r\n  _continue (immediateStep = false) {\r\n    Animator.cancelFrame(this._nextFrame)\r\n    this._nextFrame = null\r\n\r\n    if (immediateStep) return this._stepImmediate()\r\n    if (this._paused) return this\r\n\r\n    this._nextFrame = Animator.frame(this._step)\r\n    return this\r\n  }\r\n\r\n  active () {\r\n    return !!this._nextFrame\r\n  }\r\n}\r\n\r\nregisterMethods({\r\n  Element: {\r\n    timeline: function (timeline) {\r\n      if (timeline == null) {\r\n        this._timeline = (this._timeline || new Timeline())\r\n        return this._timeline\r\n      } else {\r\n        this._timeline = timeline\r\n        return this\r\n      }\r\n    }\r\n  }\r\n})\r\n","import { Controller, Ease, Stepper } from './Controller.js'\r\nimport { extend, register } from '../utils/adopter.js'\r\nimport { from, to } from '../modules/core/gradiented.js'\r\nimport { getOrigin } from '../utils/utils.js'\r\nimport { noop, timeline } from '../modules/core/defaults.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { rx, ry } from '../modules/core/circled.js'\r\nimport Animator from './Animator.js'\r\nimport Box from '../types/Box.js'\r\nimport EventTarget from '../types/EventTarget.js'\r\nimport Matrix from '../types/Matrix.js'\r\nimport Morphable, { TransformBag } from './Morphable.js'\r\nimport Point from '../types/Point.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Timeline from './Timeline.js'\r\n\r\nexport default class Runner extends EventTarget {\r\n  constructor (options) {\r\n    super()\r\n\r\n    // Store a unique id on the runner, so that we can identify it later\r\n    this.id = Runner.id++\r\n\r\n    // Ensure a default value\r\n    options = options == null\r\n      ? timeline.duration\r\n      : options\r\n\r\n    // Ensure that we get a controller\r\n    options = typeof options === 'function'\r\n      ? new Controller(options)\r\n      : options\r\n\r\n    // Declare all of the variables\r\n    this._element = null\r\n    this._timeline = null\r\n    this.done = false\r\n    this._queue = []\r\n\r\n    // Work out the stepper and the duration\r\n    this._duration = typeof options === 'number' && options\r\n    this._isDeclarative = options instanceof Controller\r\n    this._stepper = this._isDeclarative ? options : new Ease()\r\n\r\n    // We copy the current values from the timeline because they can change\r\n    this._history = {}\r\n\r\n    // Store the state of the runner\r\n    this.enabled = true\r\n    this._time = 0\r\n    this._lastTime = 0\r\n\r\n    // At creation, the runner is in reseted state\r\n    this._reseted = true\r\n\r\n    // Save transforms applied to this runner\r\n    this.transforms = new Matrix()\r\n    this.transformId = 1\r\n\r\n    // Looping variables\r\n    this._haveReversed = false\r\n    this._reverse = false\r\n    this._loopsDone = 0\r\n    this._swing = false\r\n    this._wait = 0\r\n    this._times = 1\r\n\r\n    this._frameId = null\r\n\r\n    // Stores how long a runner is stored after beeing done\r\n    this._persist = this._isDeclarative ? true : null\r\n  }\r\n\r\n  /*\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(o.delay, o.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\r\n    // Allow true to be passed\r\n    if (this._times === true) { this._times = Infinity }\r\n\r\n    return this\r\n  }\r\n\r\n  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('finished', 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    const 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  persist (dtOrForever) {\r\n    if (dtOrForever == null) return this._persist\r\n    this._persist = dtOrForever\r\n    return this\r\n  }\r\n\r\n  position (p) {\r\n    // Get all of the variables we need\r\n    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 < duration && this._time >= duration\r\n\r\n    this._lastTime = this._time\r\n    if (justStarted) {\r\n      this.fire('start', this)\r\n    }\r\n\r\n    // Work out if the runner is finished set the done flag here so animations\r\n    // know, that they are running in the last step (this is good for\r\n    // transformations which can be merged)\r\n    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) {\r\n      this._initialise(running)\r\n\r\n      // clear the transforms on this runner so they dont get added again and again\r\n      this.transforms = new Matrix()\r\n      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 (justFinished) {\r\n      this.fire('finished', this)\r\n    }\r\n    return this\r\n  }\r\n\r\n  reset () {\r\n    if (this._reseted) return this\r\n    this.time(0)\r\n    this._reseted = true\r\n    return this\r\n  }\r\n\r\n  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    // We have to resume the timeline in case a controller\r\n    // is already done without beeing ever run\r\n    // This can happen when e.g. this is done:\r\n    //    anim = el.animate(new SVG.Spring)\r\n    // and later\r\n    //    anim.move(...)\r\n    if (this._isDeclarative) {\r\n      var timeline = this.timeline()\r\n      timeline && timeline.play()\r\n    }\r\n  }\r\n\r\n  // Try to set the target for a morpher if the morpher exists, otherwise\r\n  // do nothing and return false\r\n  _tryRetarget (method, target, extra) {\r\n    if (this._history[method]) {\r\n      // if the last method wasnt even initialised, throw it away\r\n      if (!this._history[method].caller.initialised) {\r\n        const index = this._queue.indexOf(this._history[method].caller)\r\n        this._queue.splice(index, 1)\r\n        return false\r\n      }\r\n\r\n      // for the case of transformations, we use the special retarget function\r\n      // which has access to the outer scope\r\n      if (this._history[method].caller.retarget) {\r\n        this._history[method].caller.retarget(target, extra)\r\n        // for everything else a simple morpher change is sufficient\r\n      } else {\r\n        this._history[method].morpher.to(target)\r\n      }\r\n\r\n      this._history[method].caller.finished = false\r\n      var timeline = this.timeline()\r\n      timeline && timeline.play()\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 || !this._timeline || !this._timeline._runnerIds.includes(this.id)) {\r\n      this._queue = this._queue.filter((item) => {\r\n        return !item.isTransform\r\n      })\r\n    }\r\n  }\r\n\r\n  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  const runners = this._transformationRunners.runners\r\n  const netTransform = runners\r\n    .map(getRunnerTransform)\r\n    .reduce(lmultiply, new Matrix())\r\n\r\n  this.transform(netTransform)\r\n\r\n  this._transformationRunners.merge()\r\n\r\n  if (this._transformationRunners.length() === 1) {\r\n    this._frameId = null\r\n  }\r\n}\r\n\r\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    const id = runner.id + 1\r\n\r\n    this.runners.push(runner)\r\n    this.ids.push(id)\r\n\r\n    return this\r\n  }\r\n\r\n  getByID (id) {\r\n    return this.runners[this.ids.indexOf(id + 1)]\r\n  }\r\n\r\n  remove (id) {\r\n    const index = this.ids.indexOf(id + 1)\r\n    this.ids.splice(index, 1)\r\n    this.runners.splice(index, 1)\r\n    return this\r\n  }\r\n\r\n  merge () {\r\n    let lastRunner = null\r\n    this.runners.forEach((runner, i) => {\r\n\r\n      const condition = lastRunner\r\n        && runner.done && lastRunner.done\r\n        // don't merge runner when persisted on timeline\r\n        && (!runner._timeline || !runner._timeline._runnerIds.includes(runner.id))\r\n        && (!lastRunner._timeline || !lastRunner._timeline._runnerIds.includes(lastRunner.id))\r\n\r\n      if (condition) {\r\n        // the +1 happens in the function\r\n        this.remove(runner.id)\r\n        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    const index = this.ids.indexOf(id + 1)\r\n    this.ids.splice(index, 1, id + 1)\r\n    this.runners.splice(index, 1, newRunner)\r\n    return this\r\n  }\r\n\r\n  length () {\r\n    return this.ids.length\r\n  }\r\n\r\n  clearBefore (id) {\r\n    const deleteCnt = this.ids.indexOf(id + 1) || 1\r\n    this.ids.splice(0, deleteCnt, 0)\r\n    this.runners.splice(0, deleteCnt, new FakeRunner())\r\n      .forEach((r) => r.clearTransformsFromQueue())\r\n    return this\r\n  }\r\n}\r\n\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(o.delay, o.when)\r\n    },\r\n\r\n    delay (by, when) {\r\n      return this.animate(0, by, when)\r\n    },\r\n\r\n    // this function searches for all runners on the element and deletes the ones\r\n    // which run before the current one. This is because absolute transformations\r\n    // overwfrite anything anyway so there is no need to waste time computing\r\n    // other runners\r\n    _clearTransformRunnersBefore (currentRunner) {\r\n      this._transformationRunners.clearBefore(currentRunner.id)\r\n    },\r\n\r\n    _currentTransform (current) {\r\n      return this._transformationRunners.runners\r\n        // we need the equal sign here to make sure, that also transformations\r\n        // on the same runner which execute before the current transformation are\r\n        // taken into account\r\n        .filter((runner) => runner.id <= current.id)\r\n        .map(getRunnerTransform)\r\n        .reduce(lmultiply, new Matrix())\r\n    },\r\n\r\n    _addRunner (runner) {\r\n      this._transformationRunners.add(runner)\r\n\r\n      // Make sure that the runner merge is executed at the very end of\r\n      // all Animator functions. Thats why we use immediate here to execute\r\n      // the merge right after all frames are run\r\n      Animator.cancelImmediate(this._frameId)\r\n      this._frameId = Animator.immediate(mergeTransforms.bind(this))\r\n    },\r\n\r\n    _prepareRunner () {\r\n      if (this._frameId == null) {\r\n        this._transformationRunners = new RunnerArray()\r\n          .add(new FakeRunner(new Matrix(this)))\r\n      }\r\n    }\r\n  }\r\n})\r\n\r\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 name) {\r\n        this.styleAttr(type, key, name[key])\r\n      }\r\n      return this\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    if (this._tryRetarget('zoom', to, point)) return this\r\n\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.element().zoom())\r\n    }, function (pos) {\r\n      this.element().zoom(morpher.at(pos), point)\r\n      return morpher.done()\r\n    }, function (newLevel, newPoint) {\r\n      point = newPoint\r\n      morpher.to(newLevel)\r\n    })\r\n\r\n    this._rememberMorpher('zoom', morpher)\r\n    return this\r\n  },\r\n\r\n  /**\r\n   ** absolute transformations\r\n   **/\r\n\r\n  //\r\n  // M v -----|-----(D M v = F v)------|----->  T v\r\n  //\r\n  // 1. define the final state (T) and decompose it (once)\r\n  //    t = [tx, ty, the, lam, sy, sx]\r\n  // 2. on every frame: pull the current state of all previous transforms\r\n  //    (M - m can change)\r\n  //   and then write this as m = [tx0, ty0, the0, lam0, sy0, sx0]\r\n  // 3. Find the interpolated matrix F(pos) = m + pos * (t - m)\r\n  //   - Note F(0) = M\r\n  //   - Note F(1) = T\r\n  // 4. Now you get the delta matrix as a result: D = F * inv(M)\r\n\r\n  transform (transforms, relative, affine) {\r\n    // If we have a declarative function, we should retarget it if possible\r\n    relative = transforms.relative || relative\r\n    if (this._isDeclarative && !relative && this._tryRetarget('transform', transforms)) {\r\n      return this\r\n    }\r\n\r\n    // Parse the parameters\r\n    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      const { x, y } = new Point(origin).transform(element._currentTransform(this))\r\n\r\n      let target = new Matrix({ ...transforms, origin: [ x, y ] })\r\n      let start = this._isDeclarative && current\r\n        ? current\r\n        : startTransform\r\n\r\n      if (affine) {\r\n        target = target.decompose(x, y)\r\n        start = start.decompose(x, y)\r\n\r\n        // Get the current and target angle as it was set\r\n        const rTarget = target.rotate\r\n        const rCurrent = start.rotate\r\n\r\n        // Figure out the shortest path to rotate directly\r\n        const possibilities = [ rTarget - 360, rTarget, rTarget + 360 ]\r\n        const distances = possibilities.map(a => Math.abs(a - rCurrent))\r\n        const shortest = Math.min(...distances)\r\n        const index = distances.indexOf(shortest)\r\n        target.rotate = possibilities[index]\r\n      }\r\n\r\n      if (relative) {\r\n        // we have to be careful here not to overwrite the rotation\r\n        // with the rotate method of Matrix\r\n        if (!isMatrix) {\r\n          target.rotate = transforms.rotate || 0\r\n        }\r\n        if (this._isDeclarative && currentAngle) {\r\n          start.rotate = currentAngle\r\n        }\r\n      }\r\n\r\n      morpher.from(start)\r\n      morpher.to(target)\r\n\r\n      const affineParameters = morpher.at(pos)\r\n      currentAngle = affineParameters.rotate\r\n      current = new Matrix(affineParameters)\r\n\r\n      this.addTransform(current)\r\n      element._addRunner(this)\r\n      return morpher.done()\r\n    }\r\n\r\n    function retarget (newTransforms) {\r\n      // only get a new origin if it changed since the last call\r\n      if (\r\n        (newTransforms.origin || 'center').toString()\r\n        !== (transforms.origin || 'center').toString()\r\n      ) {\r\n        origin = getOrigin(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 = 0) {\r\n    return this._queueNumberDelta('x', x)\r\n  },\r\n\r\n  dy (y = 0) {\r\n    return this._queueNumberDelta('y', y)\r\n  },\r\n\r\n  dmove (x, y) {\r\n    return this.dx(x).dy(y)\r\n  },\r\n\r\n  _queueNumberDelta (method, to) {\r\n    to = new SVGNumber(to)\r\n\r\n    // Try to change the target if we have this method already registerd\r\n    if (this._tryRetarget(method, to)) return this\r\n\r\n    // Make a morpher and queue the animation\r\n    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    if (this._tryRetarget('plot', a)) return this\r\n\r\n    var morpher = new Morphable(this._stepper)\r\n      .type(this._element.MorphArray).to(a)\r\n\r\n    this.queue(function () {\r\n      morpher.from(this._element.array())\r\n    }, function (pos) {\r\n      this._element.plot(morpher.at(pos))\r\n      return morpher.done()\r\n    })\r\n\r\n    this._rememberMorpher('plot', morpher)\r\n    return this\r\n  },\r\n\r\n  // Add leading method\r\n  leading (value) {\r\n    return this._queueNumber('leading', value)\r\n  },\r\n\r\n  // Add animatable viewbox\r\n  viewbox (x, y, width, height) {\r\n    return this._queueObject('viewbox', new Box(x, y, width, height))\r\n  },\r\n\r\n  update (o) {\r\n    if (typeof o !== 'object') {\r\n      return this.update({\r\n        offset: arguments[0],\r\n        color: arguments[1],\r\n        opacity: arguments[2]\r\n      })\r\n    }\r\n\r\n    if (o.opacity != null) this.attr('stop-opacity', o.opacity)\r\n    if (o.color != null) this.attr('stop-color', o.color)\r\n    if (o.offset != null) this.attr('offset', o.offset)\r\n\r\n    return this\r\n  }\r\n})\r\n\r\nextend(Runner, { rx, ry, from, to })\r\nregister(Runner, 'Runner')\r\n","import {\r\n  adopt,\r\n  nodeOrNew,\r\n  register,\r\n  wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { 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.querySelector('defs'))\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\r\n    // remove defs reference\r\n    delete this._defs\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, '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 { 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\r\n  // Move over x-axis\r\n  // Text is moved its bounding box\r\n  // text-anchor does NOT matter\r\n  x (x, box = this.bbox()) {\r\n    if (x == null) {\r\n      return box.x\r\n    }\r\n\r\n    return this.attr('x', this.attr('x') + x - box.x)\r\n  }\r\n\r\n  // Move over y-axis\r\n  y (y, box = this.bbox()) {\r\n    if (y == null) {\r\n      return box.y\r\n    }\r\n\r\n    return this.attr('y', this.attr('y') + y - box.y)\r\n  }\r\n\r\n  move (x, y, box = this.bbox()) {\r\n    return this.x(x, box).y(y, box)\r\n  }\r\n\r\n  // Move center over x-axis\r\n  cx (x, box = this.bbox()) {\r\n    if (x == null) {\r\n      return box.cx\r\n    }\r\n\r\n    return this.attr('x', this.attr('x') + x - box.cx)\r\n  }\r\n\r\n  // Move center over y-axis\r\n  cy (y, box = this.bbox()) {\r\n    if (y == null) {\r\n      return box.cy\r\n    }\r\n\r\n    return this.attr('y', this.attr('y') + y - box.cy)\r\n  }\r\n\r\n  center (x, y, box = this.bbox()) {\r\n    return this.cx(x, box).cy(y, box)\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, 'Text')\r\n","import {\r\n  extend,\r\n  nodeOrNew,\r\n  register,\r\n  wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { globals } from '../utils/window.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport 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  x (x) {\r\n    return this.attr('x', x)\r\n  }\r\n\r\n  y (y) {\r\n    return this.attr('x', y)\r\n  }\r\n\r\n  move (x, y) {\r\n    return this.x(x).y(y)\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    var fontSize = globals.window.getComputedStyle(this.node)\r\n      .getPropertyValue('font-size')\r\n    var dy = t.dom.leading * new SVGNumber(fontSize)\r\n\r\n    // apply new position\r\n    return this.dy(dy).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, '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      const clipper = element instanceof ClipPath\r\n        ? element\r\n        : this.parent().clip().add(element)\r\n\r\n      // apply mask\r\n      return this.attr('clip-path', 'url(\"#' + clipper.id() + '\")')\r\n    },\r\n\r\n    // Unclip element\r\n    unclip () {\r\n      return this.attr('clip-path', null)\r\n    },\r\n\r\n    clipper () {\r\n      return this.reference('clip-path')\r\n    }\r\n  }\r\n})\r\n\r\nregister(ClipPath, 'ClipPath')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Element from './Element.js'\r\n\r\nexport default class ForeignObject extends Element {\r\n  constructor (node) {\r\n    super(nodeOrNew('foreignObject', node), node)\r\n  }\r\n}\r\n\r\nregisterMethods({\r\n  Container: {\r\n    foreignObject: wrapWithAttrCheck(function (width, height) {\r\n      return this.put(new ForeignObject()).size(width, height)\r\n    })\r\n  }\r\n})\r\n\r\nregister(ForeignObject, 'ForeignObject')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\nimport Matrix from '../types/Matrix.js'\r\nimport Point from '../types/Point.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  x (x, box = this.bbox()) {\r\n    if (x == null) return box.x\r\n    return this.move(x, box.y, box)\r\n  }\r\n\r\n  y (y, box = this.bbox()) {\r\n    if (y == null) return box.y\r\n    return this.move(box.x, y, box)\r\n  }\r\n\r\n  move (x = 0, y = 0, box = this.bbox()) {\r\n    const dx = x - box.x\r\n    const dy = y - box.y\r\n\r\n    return this.dmove(dx, dy)\r\n  }\r\n\r\n  dx (dx) {\r\n    return this.dmove(dx, 0)\r\n  }\r\n\r\n  dy (dy) {\r\n    return this.dmove(0, dy)\r\n  }\r\n\r\n  dmove (dx, dy) {\r\n    this.children().forEach((child, i) => {\r\n      // Get the childs bbox\r\n      const bbox = child.bbox()\r\n      // Get childs matrix\r\n      const m = new Matrix(child)\r\n      // Translate childs matrix by amount and\r\n      // transform it back into parents space\r\n      const matrix = m.translate(dx, dy).transform(m.inverse())\r\n      // Calculate new x and y from old box\r\n      const p = new Point(bbox.x, bbox.y).transform(matrix)\r\n      // Move element\r\n      child.move(p.x, p.y)\r\n    })\r\n\r\n    return this\r\n  }\r\n\r\n  width (width, box = this.bbox()) {\r\n    if (width == null) return box.width\r\n    return this.size(width, box.height, box)\r\n  }\r\n\r\n  height (height, box = this.bbox()) {\r\n    if (height == null) return box.height\r\n    return this.size(box.width, height, box)\r\n  }\r\n\r\n  size (width, height, box = this.bbox()) {\r\n    const p = proportionalSize(this, width, height, box)\r\n    const scaleX = p.width / box.width\r\n    const scaleY = p.height / box.height\r\n\r\n    this.children().forEach((child, i) => {\r\n      const o = new Point(box).transform(new Matrix(child).inverse())\r\n      child.scale(scaleX, scaleY, o.x, o.y)\r\n    })\r\n\r\n    return this\r\n  }\r\n}\r\n\r\nregisterMethods({\r\n  Container: {\r\n    // Create a group element\r\n    group: wrapWithAttrCheck(function () {\r\n      return this.put(new G())\r\n    })\r\n  }\r\n})\r\n\r\nregister(G, 'G')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } 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') {\r\n        url.call(link, link)\r\n      } 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, '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, '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, '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      // Convert text to instance if needed\r\n      if (!(text instanceof Text)) {\r\n        text = this.text(text)\r\n      }\r\n\r\n      return text.path(path)\r\n    })\r\n  },\r\n  Text: {\r\n    // Create path for text to run on\r\n    path: wrapWithAttrCheck(function (track, importNodes = true) {\r\n      var textPath = new TextPath()\r\n\r\n      // if track is a path, reuse it\r\n      if (!(track instanceof Path)) {\r\n        // create path element\r\n        track = this.defs().path(track)\r\n      }\r\n\r\n      // link textPath to path and add content\r\n      textPath.attr('href', '#' + track, xlink)\r\n\r\n      // Transplant all nodes from text to textPath\r\n      let node\r\n      if (importNodes) {\r\n        while ((node = this.node.firstChild)) {\r\n          textPath.node.appendChild(node)\r\n        }\r\n      }\r\n\r\n      // add textPath element as child node and return textPath\r\n      return this.put(textPath)\r\n    }),\r\n\r\n    // Get the textPath children\r\n    textPath () {\r\n      return this.findOne('textPath')\r\n    }\r\n  },\r\n  Path: {\r\n    // creates a textPath from this path\r\n    text: wrapWithAttrCheck(function (text) {\r\n      // Convert text to instance if needed\r\n      if (!(text instanceof Text)) {\r\n        text = new Text().addTo(this.parent()).text(text)\r\n      }\r\n\r\n      // Create textPath from text and path and return\r\n      return text.path(this)\r\n    }),\r\n\r\n    targets () {\r\n      return baseFind('svg [href*=\"' + this.id() + '\"]')\r\n    }\r\n  }\r\n})\r\n\r\nTextPath.prototype.MorphArray = PathArray\r\nregister(TextPath, 'TextPath')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Shape from './Shape.js'\r\n\r\nexport default class Use extends Shape {\r\n  constructor (node) {\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, '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 ForeignObject } from './elements/ForeignObject.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":["classof","IndexedObject","global","document","DESCRIPTORS","createElement","IE8_DOM_DEFINE","definePropertyModule","store","Symbol","NATIVE_SYMBOL","min","require$$0","internalObjectKeys","defineProperties","create","nativeFunctionToString","WeakMap","has","NATIVE_WEAK_MAP","objectHas","propertyIsEnumerableModule","InternalStateModule","hiddenKeys","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","getOwnPropertyDescriptorModule","getOwnPropertyDescriptor","isForced","IE_PROTO","CORRECT_PROTOTYPE_GETTER","getPrototypeOf","IteratorPrototype","IteratorsCore","BUGGY_SAFARI_ITERATORS","ITERATOR","returnThis","setPrototypeOf","$","methods","names","registerMethods","name","m","Array","isArray","_name","addMethodNames","Object","getOwnPropertyNames","assign","getMethodsFor","getMethodNames","Set","_names","push","createMethod","max","floor","fixRegExpWellKnownSymbolLogic","regExpExec","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","registerWindow","win","doc","Base","elements","root","createElementNS","makeInstance","adopter","querySelector","node","innerHTML","firstChild","nodeOrNew","Node","adopt","instance","className","nodeName","mockAdopt","mock","register","asRoot","prototype","getClass","did","eid","assignNewId","children","id","extend","modules","attrCheck","key","method","wrapWithAttrCheck","fn","args","constructor","apply","attr","invent","config","initializer","inherit","construct","parent","Container","siblings","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","windowEvents","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","sixDigitHex","substring","componentHex","component","integer","round","bounded","toString","is","object","space","getParameters","b","params","_a","_b","_c","z","_d","h","cieSpace","hueToRgb","q","Color","inputs","init","values","noWhitespace","exec","parseInt","hexParse","Error","components","dToR","cos","sin","yL","xL","zL","ct","mx","nm","rU","gU","bU","pow","bd","color","lab","xyz","r255","g255","b255","rL","gL","bL","xU","yU","zU","lch","sqrt","atan2","hsl","isGrey","delta","cmyk","_clamped","format","toHex","toRgb","rV","gV","bV","toArray","random","mode","u","pi","grey","isColor","Point","base","source","clone","transform","transformO","Matrix","isMatrixLike","f","point","screenCTM","inverse","closeEnough","threshold","abs","fromArray","Element","matrixify","parseFloat","call","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","cx","cy","determinant","ccw","thetaRad","st","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","comp","valueOf","flipBoth","flipX","flipY","positionX","positionY","relative","relativeX","relativeY","ctm","getCTM","rect","getScreenCTM","parser","nodes","svg","size","path","parentNode","body","documentElement","addTo","isNulledBox","domContains","contains","Box","left","top","w","x2","y2","merge","xMin","Infinity","xMax","yMin","yMax","pts","addOffset","pageXOffset","pageYOffset","isNulled","getBox","cb","retry","getBBox","rbox","getBoundingClientRect","viewbox","zoom","level","clientWidth","clientHeight","getComputedStyle","getPropertyValue","zoomX","zoomY","zoomAmount","Number","MIN_VALUE","subClassArray","Function","baseClass","_constructor","Arr","arr","List","each","fnOrMethodName","concat","reserved","reduce","obj","attrs","baseFind","query","querySelectorAll","find","findOne","EventTarget","type","j","defaultPrevented","fire","noop","timeline","duration","ease","delay","fill","stroke","opacity","offset","SVGArray","toSet","SVGNumber","value","unit","isNaN","match","toJSON","plus","number","minus","times","divide","convert","hooks","registerAttrHook","attributes","nodeValue","last","curr","removeAttribute","getAttribute","defaults","_val","hook","leading","setAttributeNS","setAttribute","rebuild","Dom","childNodes","put","clear","hasChildNodes","removeChild","lastChild","writeDataToDom","cloneNode","deep","first","get","matches","selector","matchesSelector","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","oMatchesSelector","putIn","replaceChild","precision","factor","keys","newAttrs","svgOrFn","outerHTML","well","len","fragment","_this","createDocumentFragment","firstElementChild","words","text","textContent","dom","hasAttribute","setData","center","dmove","inside","move","parents","until","sugar","prefix","extension","mat","angle","direction","directionString","radius","_element","getTotalLength","pointAt","getPointAtLength","font","ax","ay","amove","untransform","str","kv","reverse","toParent","pCtm","toRoot","decomposed","cleanRelative","Shape","Circle","circle","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","aFunction","makeSetterGetter","easing","bezier","steps","stepPosition","jumps","beforeFlag","step","jumping","Stepper","done","Ease","Controller","stepper","target","dt","recalculate","_duration","overshoot","_overshoot","eps","os","log","zeta","wn","Spring","velocity","acceleration","newPosition","PID","windup","integral","error","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","entries","sort","registerMorphableType","makeMorphable","Path","_array","Polygon","polygon","poly","Polyline","polyline","Rect","Queue","_first","_last","item","shift","Animator","nextDraw","frames","timeouts","immediates","timer","performance","Date","frame","run","requestAnimationFrame","_draw","timeout","time","now","immediate","cancelFrame","clearTimeout","cancelImmediate","nextTimeout","lastTimeout","nextFrame","lastFrame","nextImmediate","makeSchedule","runnerInfo","start","runner","end","defaultSource","Timeline","timeSource","_timeSource","_startTime","_speed","_persist","_nextFrame","_paused","_runners","_runnerIds","_lastRunnerId","_time","_lastSourceTime","_lastStepTime","_step","_stepFn","_stepImmediate","schedule","when","absoluteStartTime","endTime","getEndTime","unschedule","persist","info","updateTime","_continue","splice","lastRunnerInfo","lastDuration","lastStartTime","getEndTimeOfTimeline","lastEndTime","startTime","active","play","pause","finish","speed","yes","currentSpeed","positive","seek","dtOrForever","immediateStep","dtSource","dtTime","dtToStart","reset","runnersLeft","finished","_timeline","Runner","_queue","_isDeclarative","_history","enabled","_lastTime","_reseted","transformId","_haveReversed","_reverse","_loopsDone","_swing","_wait","_times","_frameId","_prepareRunner","animate","sanitise","loop","swing","wait","queue","initFn","runFn","retargetFn","isTransform","initialiser","retarget","initialised","during","loops","loopDuration","loopsDone","relativeTime","whole","partial","swinging","backwards","uncliped","clipped","swingForward","forwards","progress","running","_lastPosition","justStarted","justFinished","declarative","_initialise","converged","_run","_rememberMorpher","morpher","caller","_tryRetarget","extra","needsIt","positionOrDt","allfinished","addTransform","clearTransform","clearTransformsFromQueue","FakeRunner","mergeWith","getRunnerTransform","mergeTransforms","runners","_transformationRunners","netTransform","RunnerArray","ids","getByID","lastRunner","condition","edit","newRunner","clearBefore","deleteCnt","_clearTransformRunnersBefore","currentRunner","_currentTransform","_addRunner","styleAttr","newLevel","newPoint","affine","isMatrix","currentAngle","startTransform","setup","undefined","rTarget","rCurrent","possibilities","distances","shortest","affineParameters","newTransforms","_queueNumber","_queueNumberDelta","newTo","_queueObject","Svg","SVGElement","version","_defs","nested","symbol","plain","_build","createTextNode","getComputedTextLength","Text","_rebuild","firstLine","nodeType","newLined","build","tspan","newLine","self","blankLineOffset","fontSize","textable","Tspan","ClipPath","unclip","clip","clipWith","clipper","ForeignObject","foreignObject","G","child","group","link","linkTo","Mask","unmask","mask","maskWith","masker","cssRule","rule","Style","addText","fontFamily","fontface","TextPath","track","textPath","importNodes","Use","file","use","SVG"],"mappings":"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"}