{"version":3,"file":"svg.min.js","sources":["../node_modules/core-js/modules/_global.js","../node_modules/core-js/modules/_core.js","../node_modules/core-js/modules/_is-object.js","../node_modules/core-js/modules/_an-object.js","../node_modules/core-js/modules/_fails.js","../node_modules/core-js/modules/_descriptors.js","../node_modules/core-js/modules/_dom-create.js","../node_modules/core-js/modules/_ie8-dom-define.js","../node_modules/core-js/modules/_to-primitive.js","../node_modules/core-js/modules/_object-dp.js","../node_modules/core-js/modules/_property-desc.js","../node_modules/core-js/modules/_hide.js","../node_modules/core-js/modules/_has.js","../node_modules/core-js/modules/_uid.js","../node_modules/core-js/modules/_redefine.js","../node_modules/core-js/modules/_a-function.js","../node_modules/core-js/modules/_ctx.js","../node_modules/core-js/modules/_export.js","../node_modules/core-js/modules/_cof.js","../node_modules/core-js/modules/_iobject.js","../node_modules/core-js/modules/_defined.js","../node_modules/core-js/modules/_to-iobject.js","../node_modules/core-js/modules/_to-integer.js","../node_modules/core-js/modules/_to-length.js","../node_modules/core-js/modules/_to-absolute-index.js","../node_modules/core-js/modules/_array-includes.js","../node_modules/core-js/modules/_shared.js","../node_modules/core-js/modules/_shared-key.js","../node_modules/core-js/modules/_object-keys-internal.js","../node_modules/core-js/modules/_enum-bug-keys.js","../node_modules/core-js/modules/_object-keys.js","../node_modules/core-js/modules/_object-gops.js","../node_modules/core-js/modules/_object-pie.js","../node_modules/core-js/modules/_to-object.js","../node_modules/core-js/modules/_object-assign.js","../node_modules/core-js/modules/es6.object.assign.js","../node_modules/core-js/modules/es6.function.name.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/core-js/modules/_wks.js","../node_modules/core-js/modules/_add-to-unscopables.js","../node_modules/core-js/modules/_iter-step.js","../node_modules/core-js/modules/_iterators.js","../node_modules/core-js/modules/_object-dps.js","../node_modules/core-js/modules/_html.js","../node_modules/core-js/modules/_object-create.js","../node_modules/core-js/modules/_set-to-string-tag.js","../node_modules/core-js/modules/_iter-create.js","../node_modules/core-js/modules/_object-gpo.js","../node_modules/core-js/modules/_iter-define.js","../node_modules/core-js/modules/es6.array.iterator.js","../node_modules/core-js/modules/_string-at.js","../node_modules/core-js/modules/es6.string.iterator.js","../node_modules/core-js/modules/_redefine-all.js","../node_modules/core-js/modules/_an-instance.js","../node_modules/core-js/modules/_iter-call.js","../node_modules/core-js/modules/_is-array-iter.js","../node_modules/core-js/modules/_classof.js","../node_modules/core-js/modules/core.get-iterator-method.js","../node_modules/core-js/modules/_for-of.js","../node_modules/core-js/modules/_set-species.js","../node_modules/core-js/modules/_meta.js","../node_modules/core-js/modules/_validate-collection.js","../node_modules/core-js/modules/_collection-strong.js","../node_modules/core-js/modules/_iter-detect.js","../node_modules/core-js/modules/_object-gopd.js","../node_modules/core-js/modules/_set-proto.js","../node_modules/core-js/modules/_inherit-if-required.js","../node_modules/core-js/modules/_collection.js","../node_modules/core-js/modules/es6.set.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/core-js/modules/_wks-ext.js","../node_modules/core-js/modules/_wks-define.js","../node_modules/core-js/modules/es7.symbol.async-iterator.js","../node_modules/core-js/modules/_enum-keys.js","../node_modules/core-js/modules/_is-array.js","../node_modules/core-js/modules/_object-gopn.js","../node_modules/core-js/modules/_object-gopn-ext.js","../node_modules/core-js/modules/es6.symbol.js","../node_modules/core-js/modules/web.dom.iterable.js","../src/utils/methods.js","../node_modules/core-js/modules/es7.array.includes.js","../node_modules/core-js/modules/_is-regexp.js","../node_modules/core-js/modules/_fails-is-regexp.js","../node_modules/core-js/modules/es6.string.includes.js","../node_modules/core-js/modules/_string-context.js","../node_modules/core-js/modules/_fix-re-wks.js","../src/utils/utils.js","../node_modules/core-js/modules/es6.regexp.replace.js","../src/modules/core/namespaces.js","../src/utils/window.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../src/types/Base.js","../src/utils/adopter.js","../src/modules/optional/arrange.js","../node_modules/core-js/modules/es6.regexp.split.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","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/core-js/modules/_flags.js","../node_modules/core-js/modules/es6.regexp.flags.js","../node_modules/core-js/modules/es6.regexp.to-string.js","../src/types/Color.js","../node_modules/core-js/modules/_object-sap.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/core-js/modules/es6.object.keys.js","../node_modules/core-js/modules/es6.regexp.match.js","../node_modules/core-js/modules/_string-ws.js","../node_modules/core-js/modules/_string-trim.js","../node_modules/core-js/modules/es6.number.constructor.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","../node_modules/@babel/runtime/helpers/esm/objectSpread.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../src/modules/core/circled.js","../src/modules/optional/transform.js","../src/elements/Shape.js","../src/elements/Circle.js","../src/elements/Container.js","../src/elements/Defs.js","../src/elements/Ellipse.js","../src/elements/Stop.js","../src/modules/core/gradiented.js","../src/elements/Gradient.js","../src/elements/Pattern.js","../src/elements/Image.js","../src/types/PointArray.js","../src/modules/core/pointed.js","../src/elements/Line.js","../src/elements/Marker.js","../node_modules/core-js/modules/_strict-method.js","../node_modules/core-js/modules/es6.array.sort.js","../src/animation/Controller.js","../src/types/PathArray.js","../src/animation/Morphable.js","../src/elements/Path.js","../src/modules/core/poly.js","../src/elements/Polygon.js","../src/elements/Polyline.js","../src/elements/Rect.js","../src/animation/Queue.js","../src/animation/Animator.js","../src/animation/Timeline.js","../src/animation/Runner.js","../src/elements/Svg.js","../src/elements/Symbol.js","../src/modules/core/textable.js","../src/elements/Text.js","../src/elements/Tspan.js","../src/elements/ClipPath.js","../src/elements/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","../src/svg.js"],"sourcesContent":["// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($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++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) 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 ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","exports.f = {}.propertyIsEnumerable;\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nexport default function _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\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 = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\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 (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\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 : dPs(result, Properties);\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = 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 ? ObjectProto : null;\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","exports.f = require('./_wks');\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","require('./_wks-define')('asyncIterator');\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","const methods = {}\r\nconst names = []\r\n\r\nexport function registerMethods (name, m) {\r\n if (Array.isArray(name)) {\r\n for (let _name of name) {\r\n registerMethods(_name, m)\r\n }\r\n return\r\n }\r\n\r\n if (typeof name === 'object') {\r\n for (let _name in name) {\r\n registerMethods(_name, name[_name])\r\n }\r\n return\r\n }\r\n\r\n addMethodNames(Object.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';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","'use strict';\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n var fns = exec(defined, SYMBOL, ''[KEY]);\n var strfn = fns[0];\n var rxfn = fns[1];\n if (fails(function () {\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n })) {\n redefine(String.prototype, KEY, strfn);\n hide(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 rxfn.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 rxfn.call(string, this); }\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 let origin = o.origin // o.around == null ? o.origin : o.around\r\n let ox, oy\r\n\r\n // Allow the user to pass a string to rotate around a given point\r\n if (typeof origin === 'string' || origin == null) {\r\n // Get the bounding box of the element with no transformations applied\r\n const string = (origin || 'center').toLowerCase().trim()\r\n const { height, width, x, y } = element.bbox()\r\n\r\n // Calculate the transformed x and y coordinates\r\n let bx = string.includes('left') ? x\r\n : string.includes('right') ? x + width\r\n : x + width / 2\r\n let by = string.includes('top') ? y\r\n : string.includes('bottom') ? y + height\r\n : y + height / 2\r\n\r\n // Set the bounds eg : \"bottom-left\", \"Top right\", \"middle\" etc...\r\n ox = o.ox != null ? o.ox : bx\r\n oy = o.oy != null ? o.oy : by\r\n } else {\r\n ox = origin[0]\r\n oy = origin[1]\r\n }\r\n\r\n // Return the origin as it is if it wasn't a string\r\n return [ ox, oy ]\r\n}\r\n","// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace) {\n // 21.1.3.14 String.prototype.replace(searchValue, replaceValue)\n return [function replace(searchValue, replaceValue) {\n 'use strict';\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n }, $replace];\n});\n","// Default namespaces\r\nexport let ns = 'http://www.w3.org/2000/svg'\r\nexport let xmlns = 'http://www.w3.org/2000/xmlns/'\r\nexport let xlink = 'http://www.w3.org/1999/xlink'\r\nexport let svgjs = 'http://svgjs.com/svgjs'\r\n","export const globals = {\r\n window: typeof window === 'undefined' ? null : window,\r\n document: typeof document === 'undefined' ? null : document\r\n}\r\n\r\nexport function registerWindow (win = null, doc = null) {\r\n globals.window = win\r\n globals.document = doc\r\n}\r\n\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 function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\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 let o = args[args.length - 1]\r\n\r\n if (o && o.constructor === Object && !(o instanceof Array)) {\r\n return fn.apply(this, args.slice(0, -1)).attr(o)\r\n } else {\r\n return fn.apply(this, args)\r\n }\r\n }\r\n}\r\n\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","// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split) {\n 'use strict';\n var isRegExp = require('./_is-regexp');\n var _split = $split;\n var $push = [].push;\n var $SPLIT = 'split';\n var LENGTH = 'length';\n var LAST_INDEX = 'lastIndex';\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group\n // based on es5-shim implementation, need to rework it\n $split = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return _split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var separator2, match, lastIndex, lastLength, i;\n // Doesn't need flags gy, but they don't hurt\n if (!NPCG) separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\\\s)', flags);\n while (match = separatorCopy.exec(string)) {\n // `separatorCopy.lastIndex` is not reliable cross-browser\n lastIndex = match.index + match[0][LENGTH];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG\n // eslint-disable-next-line no-loop-func\n if (!NPCG && match[LENGTH] > 1) match[0].replace(separator2, function () {\n for (i = 1; i < arguments[LENGTH] - 2; i++) if (arguments[i] === undefined) match[i] = undefined;\n });\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n $split = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);\n };\n }\n // 21.1.3.17 String.prototype.split(separator, limit)\n return [function split(separator, limit) {\n var O = defined(this);\n var fn = separator == undefined ? undefined : separator[SPLIT];\n return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);\n }, $split];\n});\n","// Parse unit value\r\nexport let numberAndUnit = /^([+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?)([a-z%]*)$/i\r\n\r\n// Parse hex value\r\nexport let hex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i\r\n\r\n// Parse rgb value\r\nexport let rgb = /rgb\\((\\d+),(\\d+),(\\d+)\\)/\r\n\r\n// Parse reference id\r\nexport let reference = /(#[a-z0-9\\-_]+)/i\r\n\r\n// splits a transformation chain\r\nexport let transforms = /\\)\\s*,?\\s*/\r\n\r\n// Whitespace\r\nexport let whitespace = /\\s/g\r\n\r\n// Test hex value\r\nexport let isHex = /^#[a-f0-9]{3,6}$/i\r\n\r\n// Test rgb value\r\nexport let isRgb = /^rgb\\(/\r\n\r\n// Test css declaration\r\nexport let isCss = /[^:]+:[^;]+;?/\r\n\r\n// Test for blank string\r\nexport let isBlank = /^(\\s+)?$/\r\n\r\n// Test for numeric string\r\nexport let isNumber = /^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i\r\n\r\n// Test for percent value\r\nexport let isPercent = /^-?[\\d.]+%$/\r\n\r\n// Test for image url\r\nexport let isImage = /\\.(jpg|jpeg|png|gif|svg)(\\?[^=]+.*)?/i\r\n\r\n// split at whitespace and comma\r\nexport let delimiter = /[\\s,]+/\r\n\r\n// The following regex are used to parse the d attribute of a path\r\n\r\n// Matches all hyphens which are not after an exponent\r\nexport let hyphen = /([^e])-/gi\r\n\r\n// Replaces and tests for all path letters\r\nexport let pathLetters = /[MLHVCSQTAZ]/gi\r\n\r\n// yes we need this one, too\r\nexport let isPathLetter = /[MLHVCSQTAZ]/i\r\n\r\n// matches 0.154.23.45\r\nexport let numbersWithDots = /((\\d?\\.\\d+(?:e[+-]?\\d+)?)((?:\\.\\d+(?:e[+-]?\\d+)?)+))+/gi\r\n\r\n// matches .\r\nexport let dots = /\\./g\r\n","import { delimiter } from '../core/regex.js'\r\nimport { registerMethods } from '../../utils/methods.js'\r\n\r\n// Return array of classes on the node\r\nexport function classes () {\r\n var attr = this.attr('class')\r\n return attr == null ? [] : attr.trim().split(delimiter)\r\n}\r\n\r\n// Return true if class exists on the node, false otherwise\r\nexport function hasClass (name) {\r\n return this.classes().indexOf(name) !== -1\r\n}\r\n\r\n// Add class to the node\r\nexport function addClass (name) {\r\n if (!this.hasClass(name)) {\r\n var array = this.classes()\r\n array.push(name)\r\n this.attr('class', array.join(' '))\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Remove class from the node\r\nexport function removeClass (name) {\r\n if (this.hasClass(name)) {\r\n this.attr('class', this.classes().filter(function (c) {\r\n return c !== name\r\n }).join(' '))\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Toggle the presence of a class on the node\r\nexport function toggleClass (name) {\r\n return this.hasClass(name) ? this.removeClass(name) : this.addClass(name)\r\n}\r\n\r\nregisterMethods('Dom', {\r\n classes, hasClass, addClass, removeClass, toggleClass\r\n})\r\n","import { camelCase } from '../../utils/utils.js'\r\nimport { isBlank } from '../core/regex.js'\r\nimport { registerMethods } from '../../utils/methods.js'\r\n\r\n// Dynamic style generator\r\nexport function css (style, val) {\r\n let ret = {}\r\n if (arguments.length === 0) {\r\n // get full style as object\r\n this.node.style.cssText.split(/\\s*;\\s*/)\r\n .filter(function (el) {\r\n return !!el.length\r\n })\r\n .forEach(function (el) {\r\n let t = el.split(/\\s*:\\s*/)\r\n ret[t[0]] = t[1]\r\n })\r\n return ret\r\n }\r\n\r\n if (arguments.length < 2) {\r\n // get style properties in the array\r\n if (Array.isArray(style)) {\r\n for (let name of style) {\r\n let cased = camelCase(name)\r\n ret[cased] = this.node.style[cased]\r\n }\r\n return ret\r\n }\r\n\r\n // get style for property\r\n if (typeof style === 'string') {\r\n return this.node.style[camelCase(style)]\r\n }\r\n\r\n // set styles in object\r\n if (typeof style === 'object') {\r\n for (let name in style) {\r\n // set empty string if null/undefined/'' was given\r\n this.node.style[camelCase(name)]\r\n = (style[name] == null || isBlank.test(style[name])) ? '' : style[name]\r\n }\r\n }\r\n }\r\n\r\n // set style for property\r\n if (arguments.length === 2) {\r\n this.node.style[camelCase(style)]\r\n = (val == null || isBlank.test(val)) ? '' : val\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Show element\r\nexport function show () {\r\n return this.css('display', '')\r\n}\r\n\r\n// Hide element\r\nexport function hide () {\r\n return this.css('display', 'none')\r\n}\r\n\r\n// Is element visible?\r\nexport function visible () {\r\n return this.css('display') !== 'none'\r\n}\r\n\r\nregisterMethods('Dom', {\r\n css, show, hide, visible\r\n})\r\n","import { registerMethods } from '../../utils/methods.js'\r\n\r\n// Store data values on svg nodes\r\nexport function data (a, v, r) {\r\n if (typeof a === 'object') {\r\n for (v in a) {\r\n this.data(v, a[v])\r\n }\r\n } else if (arguments.length < 2) {\r\n try {\r\n return JSON.parse(this.attr('data-' + a))\r\n } catch (e) {\r\n return this.attr('data-' + a)\r\n }\r\n } else {\r\n this.attr('data-' + a,\r\n v === null ? null\r\n : r === true || typeof v === 'string' || typeof v === 'number' ? v\r\n : JSON.stringify(v)\r\n )\r\n }\r\n\r\n return this\r\n}\r\n\r\nregisterMethods('Dom', { data })\r\n","import { registerMethods } from '../../utils/methods.js'\r\n\r\n// Remember arbitrary data\r\nexport function remember (k, v) {\r\n // remember every item in an object individually\r\n if (typeof arguments[0] === 'object') {\r\n for (var key in k) {\r\n this.remember(key, k[key])\r\n }\r\n } else if (arguments.length === 1) {\r\n // retrieve memory\r\n return this.memory()[k]\r\n } else {\r\n // store memory\r\n this.memory()[k] = v\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Erase a given memory\r\nexport function forget () {\r\n if (arguments.length === 0) {\r\n this._memory = {}\r\n } else {\r\n for (var i = arguments.length - 1; i >= 0; i--) {\r\n delete this.memory()[arguments[i]]\r\n }\r\n }\r\n return this\r\n}\r\n\r\n// This triggers creation of a new hidden class which is not performant\r\n// However, this function is not rarely used so it will not happen frequently\r\n// Return local memory object\r\nexport function memory () {\r\n return (this._memory = this._memory || {})\r\n}\r\n\r\nregisterMethods('Dom', { remember, forget, memory })\r\n","import { delimiter } from './regex.js'\r\nimport { makeInstance } from '../../utils/adopter.js'\r\nimport { globals } from '../../utils/window.js'\r\n\r\nlet listenerId = 0\r\nlet 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","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\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.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n define(function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n define(function toString() {\n return $toString.call(this);\n });\n}\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 (let 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 let { 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 let pow = Math.pow\r\n let 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 let 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 let { _a, _b, _c } = this.rgb()\r\n let { max, min, round } = Math\r\n let 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 let [ 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 let [ rV, gV, bV ] = this._clamped()\r\n let string = `rgb(${rV},${gV},${bV})`\r\n return string\r\n }\r\n\r\n toArray () {\r\n let { _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","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import getPrototypeOf from \"./getPrototypeOf\";\nimport superPropBase from \"./superPropBase\";\nexport default function _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}","import getPrototypeOf from \"./getPrototypeOf\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match) {\n // 21.1.3.11 String.prototype.match(regexp)\n return [function match(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n }, $match];\n});\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = require('./_descriptors') ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n require('./_redefine')(global, NUMBER, $Number);\n}\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 let source\r\n let base = { x: 0, y: 0 }\r\n\r\n // ensure source as object\r\n source = Array.isArray(x) ? { x: x[0], y: x[1] }\r\n : typeof x === 'object' ? { x: x.x, y: x.y }\r\n : { x: x, y: y }\r\n\r\n // merge source\r\n this.x = source.x == null ? base.x : source.x\r\n this.y = source.y == null ? base.y : source.y\r\n\r\n return this\r\n }\r\n\r\n // Clone point\r\n clone () {\r\n return new Point(this)\r\n }\r\n\r\n transform (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 let { 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 let { x: ox, y: oy } = new Point(t.ox, t.oy).transform(current)\r\n\r\n // Construct the resulting matrix\r\n var transformer = new Matrix()\r\n .translateO(t.rx, t.ry)\r\n .lmultiplyO(current)\r\n .translateO(-ox, -oy)\r\n .scaleO(t.scaleX, t.scaleY)\r\n .skewO(t.skewX, t.skewY)\r\n .shearO(t.shear)\r\n .rotateO(t.theta)\r\n .translateO(ox, oy)\r\n\r\n // If we want the origin at a particular place, we force it there\r\n if (isFinite(t.px) || isFinite(t.py)) {\r\n const origin = new Point(ox, oy).transform(transformer)\r\n // TODO: Replace t.px with isFinite(t.px)\r\n const dx = t.px ? t.px - origin.x : 0\r\n const dy = t.py ? t.py - origin.y : 0\r\n transformer.translateO(dx, dy)\r\n }\r\n\r\n // Translate now after positioning\r\n transformer.translateO(t.tx, t.ty)\r\n return transformer\r\n }\r\n\r\n // Applies a matrix defined by its affine parameters\r\n compose (o) {\r\n if (o.origin) {\r\n o.originX = o.origin[0]\r\n o.originY = o.origin[1]\r\n }\r\n // Get the parameters\r\n var ox = o.originX || 0\r\n var oy = o.originY || 0\r\n var sx = o.scaleX || 1\r\n var sy = o.scaleY || 1\r\n var lam = o.shear || 0\r\n var theta = o.rotate || 0\r\n var tx = o.translateX || 0\r\n var ty = o.translateY || 0\r\n\r\n // Apply the standard matrix\r\n var result = new Matrix()\r\n .translateO(-ox, -oy)\r\n .scaleO(sx, sy)\r\n .shearO(lam)\r\n .rotateO(theta)\r\n .translateO(tx, ty)\r\n .lmultiplyO(this)\r\n .translateO(ox, oy)\r\n return result\r\n }\r\n\r\n // Decomposes this matrix into its affine parameters\r\n decompose (cx = 0, cy = 0) {\r\n // Get the parameters from the matrix\r\n var a = this.a\r\n var b = this.b\r\n var c = this.c\r\n var d = this.d\r\n var e = this.e\r\n var f = this.f\r\n\r\n // Figure out if the winding direction is clockwise or counterclockwise\r\n var determinant = a * d - b * c\r\n var ccw = determinant > 0 ? 1 : -1\r\n\r\n // Since we only shear in x, we can use the x basis to get the x scale\r\n // and the rotation of the resulting matrix\r\n var sx = ccw * Math.sqrt(a * a + b * b)\r\n var thetaRad = Math.atan2(ccw * b, ccw * a)\r\n var theta = 180 / Math.PI * thetaRad\r\n var ct = Math.cos(thetaRad)\r\n var st = Math.sin(thetaRad)\r\n\r\n // We can then solve the y basis vector simultaneously to get the other\r\n // two affine parameters directly from these parameters\r\n var lam = (a * c + b * d) / determinant\r\n var sy = ((c * sx) / (lam * a - b)) || ((d * sx) / (lam * b + a))\r\n\r\n // Use the translations\r\n let tx = e - cx + cx * ct * sx + cy * (lam * ct * sx - st * sy)\r\n let ty = f - cy + cx * st * sx + cy * (lam * st * sx + ct * sy)\r\n\r\n // Construct the decomposition and return it\r\n return {\r\n // Return the affine parameters\r\n scaleX: sx,\r\n scaleY: sy,\r\n shear: lam,\r\n rotate: theta,\r\n translateX: tx,\r\n translateY: ty,\r\n originX: cx,\r\n originY: cy,\r\n\r\n // Return the matrix parameters\r\n a: this.a,\r\n b: this.b,\r\n c: this.c,\r\n d: this.d,\r\n e: this.e,\r\n f: this.f\r\n }\r\n }\r\n\r\n // Left multiplies by the given matrix\r\n multiply (matrix) {\r\n return this.clone().multiplyO(matrix)\r\n }\r\n\r\n multiplyO (matrix) {\r\n // Get the matrices\r\n var l = this\r\n var r = matrix instanceof Matrix\r\n ? matrix\r\n : new Matrix(matrix)\r\n\r\n return Matrix.matrixMultiply(l, r, this)\r\n }\r\n\r\n lmultiply (matrix) {\r\n return this.clone().lmultiplyO(matrix)\r\n }\r\n\r\n lmultiplyO (matrix) {\r\n var r = this\r\n var l = matrix instanceof Matrix\r\n ? matrix\r\n : new Matrix(matrix)\r\n\r\n return Matrix.matrixMultiply(l, r, this)\r\n }\r\n\r\n // Inverses matrix\r\n inverseO () {\r\n // Get the current parameters out of the matrix\r\n var a = this.a\r\n var b = this.b\r\n var c = this.c\r\n var d = this.d\r\n var e = this.e\r\n var f = this.f\r\n\r\n // Invert the 2x2 matrix in the top left\r\n var det = a * d - b * c\r\n if (!det) throw new Error('Cannot invert ' + this)\r\n\r\n // Calculate the top 2x2 matrix\r\n var na = d / det\r\n var nb = -b / det\r\n var nc = -c / det\r\n var nd = a / det\r\n\r\n // Apply the inverted matrix to the top right\r\n var ne = -(na * e + nc * f)\r\n var nf = -(nb * e + nd * f)\r\n\r\n // Construct the inverted matrix\r\n this.a = na\r\n this.b = nb\r\n this.c = nc\r\n this.d = nd\r\n this.e = ne\r\n this.f = nf\r\n\r\n return this\r\n }\r\n\r\n inverse () {\r\n return this.clone().inverseO()\r\n }\r\n\r\n // Translate matrix\r\n translate (x, y) {\r\n return this.clone().translateO(x, y)\r\n }\r\n\r\n translateO (x, y) {\r\n this.e += x || 0\r\n this.f += y || 0\r\n return this\r\n }\r\n\r\n // Scale matrix\r\n scale (x, y, cx, cy) {\r\n return this.clone().scaleO(...arguments)\r\n }\r\n\r\n scaleO (x, y = x, cx = 0, cy = 0) {\r\n // Support uniform scaling\r\n if (arguments.length === 3) {\r\n cy = cx\r\n cx = y\r\n y = x\r\n }\r\n\r\n let { a, b, c, d, e, f } = this\r\n\r\n this.a = a * x\r\n this.b = b * y\r\n this.c = c * x\r\n this.d = d * y\r\n this.e = e * x - cx * x + cx\r\n this.f = f * y - cy * y + cy\r\n\r\n return this\r\n }\r\n\r\n // Rotate matrix\r\n rotate (r, cx, cy) {\r\n return this.clone().rotateO(r, cx, cy)\r\n }\r\n\r\n rotateO (r, cx = 0, cy = 0) {\r\n // Convert degrees to radians\r\n r = radians(r)\r\n\r\n let cos = Math.cos(r)\r\n let sin = Math.sin(r)\r\n\r\n let { a, b, c, d, e, f } = this\r\n\r\n this.a = a * cos - b * sin\r\n this.b = b * cos + a * sin\r\n this.c = c * cos - d * sin\r\n this.d = d * cos + c * sin\r\n this.e = e * cos - f * sin + cy * sin - cx * cos + cx\r\n this.f = f * cos + e * sin - cx * sin - cy * cos + cy\r\n\r\n return this\r\n }\r\n\r\n // Flip matrix on x or y, at a given offset\r\n flip (axis, around) {\r\n return this.clone().flipO(axis, around)\r\n }\r\n\r\n flipO (axis, around) {\r\n return axis === 'x' ? this.scaleO(-1, 1, around, 0)\r\n : axis === 'y' ? this.scaleO(1, -1, 0, around)\r\n : this.scaleO(-1, -1, axis, around || axis) // Define an x, y flip point\r\n }\r\n\r\n // Shear matrix\r\n shear (a, cx, cy) {\r\n return this.clone().shearO(a, cx, cy)\r\n }\r\n\r\n shearO (lx, cx = 0, cy = 0) {\r\n let { a, b, c, d, e, f } = this\r\n\r\n this.a = a + b * lx\r\n this.c = c + d * lx\r\n this.e = e + f * lx - cy * lx\r\n\r\n return this\r\n }\r\n\r\n // Skew Matrix\r\n skew (x, y, cx, cy) {\r\n return this.clone().skewO(...arguments)\r\n }\r\n\r\n skewO (x, y = x, cx = 0, cy = 0) {\r\n // support uniformal skew\r\n if (arguments.length === 3) {\r\n cy = cx\r\n cx = y\r\n y = x\r\n }\r\n\r\n // Convert degrees to radians\r\n x = radians(x)\r\n y = radians(y)\r\n\r\n let lx = Math.tan(x)\r\n let ly = Math.tan(y)\r\n\r\n let { a, b, c, d, e, f } = this\r\n\r\n this.a = a + b * lx\r\n this.b = b + a * ly\r\n this.c = c + d * lx\r\n this.d = d + c * ly\r\n this.e = e + f * lx - cy * lx\r\n this.f = f + e * ly - cx * ly\r\n\r\n return this\r\n }\r\n\r\n // SkewX\r\n skewX (x, cx, cy) {\r\n return this.skew(x, 0, cx, cy)\r\n }\r\n\r\n skewXO (x, cx, cy) {\r\n return this.skewO(x, 0, cx, cy)\r\n }\r\n\r\n // SkewY\r\n skewY (y, cx, cy) {\r\n return this.skew(0, y, cx, cy)\r\n }\r\n\r\n skewYO (y, cx, cy) {\r\n return this.skewO(0, y, cx, cy)\r\n }\r\n\r\n // Transform around a center point\r\n aroundO (cx, cy, matrix) {\r\n var dx = cx || 0\r\n var dy = cy || 0\r\n return this.translateO(-dx, -dy).lmultiplyO(matrix).translateO(dx, dy)\r\n }\r\n\r\n around (cx, cy, matrix) {\r\n return this.clone().aroundO(cx, cy, matrix)\r\n }\r\n\r\n // Check if two matrices are equal\r\n equals (other) {\r\n var comp = new Matrix(other)\r\n return closeEnough(this.a, comp.a) && closeEnough(this.b, comp.b)\r\n && closeEnough(this.c, comp.c) && closeEnough(this.d, comp.d)\r\n && closeEnough(this.e, comp.e) && closeEnough(this.f, comp.f)\r\n }\r\n\r\n // Convert matrix to string\r\n toString () {\r\n return 'matrix(' + this.a + ',' + this.b + ',' + this.c + ',' + this.d + ',' + this.e + ',' + this.f + ')'\r\n }\r\n\r\n toArray () {\r\n return [ this.a, this.b, this.c, this.d, this.e, this.f ]\r\n }\r\n\r\n valueOf () {\r\n return {\r\n a: this.a,\r\n b: this.b,\r\n c: this.c,\r\n d: this.d,\r\n e: this.e,\r\n f: this.f\r\n }\r\n }\r\n\r\n static fromArray (a) {\r\n return { a: a[0], b: a[1], c: a[2], d: a[3], e: a[4], f: a[5] }\r\n }\r\n\r\n static isMatrixLike (o) {\r\n return (\r\n o.a != null\r\n || o.b != null\r\n || o.c != null\r\n || o.d != null\r\n || o.e != null\r\n || o.f != null\r\n )\r\n }\r\n\r\n static formatTransforms (o) {\r\n // Get all of the parameters required to form the matrix\r\n var flipBoth = o.flip === 'both' || o.flip === true\r\n var flipX = o.flip && (flipBoth || o.flip === 'x') ? -1 : 1\r\n var flipY = o.flip && (flipBoth || o.flip === 'y') ? -1 : 1\r\n var skewX = o.skew && o.skew.length ? o.skew[0]\r\n : isFinite(o.skew) ? o.skew\r\n : isFinite(o.skewX) ? o.skewX\r\n : 0\r\n var skewY = o.skew && o.skew.length ? o.skew[1]\r\n : isFinite(o.skew) ? o.skew\r\n : isFinite(o.skewY) ? o.skewY\r\n : 0\r\n var scaleX = o.scale && o.scale.length ? o.scale[0] * flipX\r\n : isFinite(o.scale) ? o.scale * flipX\r\n : isFinite(o.scaleX) ? o.scaleX * flipX\r\n : flipX\r\n var scaleY = o.scale && o.scale.length ? o.scale[1] * flipY\r\n : isFinite(o.scale) ? o.scale * flipY\r\n : isFinite(o.scaleY) ? o.scaleY * flipY\r\n : flipY\r\n var shear = o.shear || 0\r\n var theta = o.rotate || o.theta || 0\r\n var origin = new Point(o.origin || o.around || o.ox || o.originX, o.oy || o.originY)\r\n var ox = origin.x\r\n var oy = origin.y\r\n var position = new Point(o.position || o.px || o.positionX, o.py || o.positionY)\r\n var px = position.x\r\n var py = position.y\r\n var translate = new Point(o.translate || o.tx || o.translateX, o.ty || o.translateY)\r\n var tx = translate.x\r\n var ty = translate.y\r\n var relative = new Point(o.relative || o.rx || o.relativeX, o.ry || o.relativeY)\r\n var rx = relative.x\r\n var ry = relative.y\r\n\r\n // Populate all of the values\r\n return {\r\n scaleX, scaleY, skewX, skewY, shear, theta, rx, ry, tx, ty, ox, oy, px, py\r\n }\r\n }\r\n\r\n // left matrix, right matrix, target matrix which is overwritten\r\n static matrixMultiply (l, r, o) {\r\n // Work out the product directly\r\n var a = l.a * r.a + l.c * r.b\r\n var b = l.b * r.a + l.d * r.b\r\n var c = l.a * r.c + l.c * r.d\r\n var d = l.b * r.c + l.d * r.d\r\n var e = l.e + l.a * r.e + l.c * r.f\r\n var f = l.f + l.b * r.e + l.d * r.f\r\n\r\n // make sure to use local variables because l/r and o could be the same\r\n o.a = a\r\n o.b = b\r\n o.c = c\r\n o.d = d\r\n o.e = e\r\n o.f = f\r\n\r\n return o\r\n }\r\n}\r\n\r\nexport function ctm () {\r\n return new Matrix(this.node.getCTM())\r\n}\r\n\r\nexport function screenCTM () {\r\n /* https://bugzilla.mozilla.org/show_bug.cgi?id=1344537\r\n This is needed because FF does not return the transformation matrix\r\n for the inner coordinate system when getScreenCTM() is called on nested svgs.\r\n However all other Browsers do that */\r\n if (typeof this.isRoot === 'function' && !this.isRoot()) {\r\n var rect = this.rect(1, 1)\r\n var m = rect.node.getScreenCTM()\r\n rect.remove()\r\n return new Matrix(m)\r\n }\r\n return new Matrix(this.node.getScreenCTM())\r\n}\r\n\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 let 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 let path = svg.path().node\r\n\r\n parser.nodes = { svg, path }\r\n }\r\n\r\n if (!parser.nodes.svg.node.parentNode) {\r\n let b = globals.document.body || globals.document.documentElement\r\n parser.nodes.svg.addTo(b)\r\n }\r\n\r\n return parser.nodes\r\n}\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { 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 let x = Math.min(this.x, box.x)\r\n let y = Math.min(this.y, box.y)\r\n let width = Math.max(this.x + this.width, box.x + box.width) - x\r\n let height = Math.max(this.y + this.height, box.y + box.height) - y\r\n\r\n return new Box(x, y, width, height)\r\n }\r\n\r\n transform (m) {\r\n 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 let pts = [\r\n new Point(this.x, this.y),\r\n new Point(this.x2, this.y),\r\n new Point(this.x, this.y2),\r\n new Point(this.x2, this.y2)\r\n ]\r\n\r\n pts.forEach(function (p) {\r\n p = p.transform(m)\r\n xMin = Math.min(xMin, p.x)\r\n xMax = Math.max(xMax, p.x)\r\n yMin = Math.min(yMin, p.y)\r\n yMax = Math.max(yMax, p.y)\r\n })\r\n\r\n return new Box(\r\n xMin, yMin,\r\n xMax - xMin,\r\n yMax - yMin\r\n )\r\n }\r\n\r\n addOffset () {\r\n // offset by window scroll position, because getBoundingClientRect changes when window is scrolled\r\n this.x += globals.window.pageXOffset\r\n this.y += globals.window.pageYOffset\r\n return this\r\n }\r\n\r\n toString () {\r\n return this.x + ' ' + this.y + ' ' + this.width + ' ' + this.height\r\n }\r\n\r\n toArray () {\r\n return [ this.x, this.y, this.width, this.height ]\r\n }\r\n\r\n isNulled () {\r\n return isNulledBox(this)\r\n }\r\n}\r\n\r\nfunction getBox (cb, 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 let clone = el.clone().addTo(parser().svg).show()\r\n let 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 let 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'\nimport { register } from '../utils/adopter.js'\nimport Base from './Base.js'\n\r\nexport default class EventTarget extends Base {\r\n constructor ({ events = {} } = {}) {\r\n super()\r\n this.events = events\r\n }\r\n\r\n addEventListener () {}\r\n\r\n dispatch (event, data) {\r\n return dispatch(this, event, data)\r\n }\r\n\r\n dispatchEvent (event) {\r\n const bag = this.getEventHolder().events\r\n if (!bag) return true\r\n\r\n const events = bag[event.type]\r\n\r\n for (let i in events) {\r\n for (let j in events[i]) {\r\n events[i][j](event)\r\n }\r\n }\r\n\r\n return !event.defaultPrevented\r\n }\r\n\r\n // Fire given event\r\n fire (event, data) {\r\n this.dispatch(event, data)\r\n return this\r\n }\r\n\r\n getEventHolder () {\r\n return this\r\n }\r\n\r\n getEventTarget () {\r\n return this\r\n }\r\n\r\n // Unbind event from listener\r\n off (event, listener) {\r\n off(this, event, listener)\r\n return this\r\n }\r\n\r\n // Bind given event to listener\r\n on (event, listener, binding, options) {\r\n on(this, event, listener, binding, options)\r\n return this\r\n }\r\n\r\n removeEventListener () {}\r\n}\r\n\r\nregister(EventTarget, 'EventTarget')\r\n","\r\nexport function noop () {}\r\n\r\n// Default animation values\r\nexport let timeline = {\r\n duration: 400,\r\n ease: '>',\r\n delay: 0\r\n}\r\n\r\n// Default attribute values\r\nexport let attrs = {\r\n\r\n // fill and stroke\r\n 'fill-opacity': 1,\r\n 'stroke-opacity': 1,\r\n 'stroke-width': 0,\r\n 'stroke-linejoin': 'miter',\r\n 'stroke-linecap': 'butt',\r\n fill: '#000000',\r\n stroke: '#000000',\r\n opacity: 1,\r\n\r\n // position\r\n x: 0,\r\n y: 0,\r\n cx: 0,\r\n cy: 0,\r\n\r\n // size\r\n width: 0,\r\n height: 0,\r\n\r\n // radius\r\n r: 0,\r\n rx: 0,\r\n ry: 0,\r\n\r\n // gradient\r\n offset: 0,\r\n 'stop-opacity': 1,\r\n 'stop-color': '#000000',\r\n\r\n // text\r\n '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 (let node of val) {\r\n attr[node.nodeName] = isNumber.test(node.nodeValue)\r\n ? parseFloat(node.nodeValue)\r\n : node.nodeValue\r\n }\r\n\r\n return attr\r\n } else if (attr instanceof Array) {\r\n // loop through array and get all values\r\n return attr.reduce((last, curr) => {\r\n last[curr] = this.attr(curr)\r\n return last\r\n }, {})\r\n } else if (typeof attr === 'object' && 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 let result = svgOrFn(current)\r\n current = result || current\r\n\r\n // The user does not want this node? Well, then he gets nothing\r\n if (result === false) return ''\r\n }\r\n\r\n // Deep loop through all children and apply modifier\r\n current.each(function () {\r\n let result = svgOrFn(this)\r\n let _this = result || this\r\n\r\n // If modifier returns false, discard node\r\n if (result === false) {\r\n this.remove()\r\n\r\n // If modifier returns new node, use it\r\n } else if (result && this !== _this) {\r\n this.replace(_this)\r\n }\r\n }, true)\r\n }\r\n\r\n // Return outer or inner content\r\n return outerHTML\r\n ? current.node.outerHTML\r\n : current.node.innerHTML\r\n }\r\n\r\n // Act as setter if we got a string\r\n\r\n // The default for import is, that the current node is not replaced\r\n outerHTML = outerHTML == null ? false : outerHTML\r\n\r\n // Create temporary holder\r\n well = globals.document.createElementNS(ns, 'svg')\r\n fragment = globals.document.createDocumentFragment()\r\n\r\n // Dump raw svg\r\n well.innerHTML = svgOrFn\r\n\r\n // Transplant nodes into the fragment\r\n for (len = well.children.length; len--;) {\r\n fragment.appendChild(well.firstElementChild)\r\n }\r\n\r\n let parent = this.parent()\r\n\r\n // Add the whole fragment at once\r\n return outerHTML\r\n ? this.replace(fragment) && parent\r\n : this.add(fragment)\r\n }\r\n\r\n words (text) {\r\n // This is faster than removing all children and adding a new one\r\n this.node.textContent = text\r\n return this\r\n }\r\n\r\n // write svgjs data to the dom\r\n writeDataToDom () {\r\n // dump variables recursively\r\n this.each(function () {\r\n this.writeDataToDom()\r\n })\r\n\r\n return this\r\n }\r\n}\r\n\r\nextend(Dom, { attr, find, 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) {\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) {\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 let 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 let box = this.bbox()\r\n\r\n return x > box.x\r\n && y > box.y\r\n && x < box.x + box.width\r\n && y < box.y + box.height\r\n }\r\n\r\n // Move element to given x and y values\r\n move (x, y) {\r\n return this.x(x).y(y)\r\n }\r\n\r\n // return array of all ancestors of given type up to the root svg\r\n parents (until = globals.document) {\r\n until = makeInstance(until)\r\n let parents = new List()\r\n let parent = this\r\n\r\n while (\r\n (parent = parent.parent())\r\n && parent.node !== until.node\r\n && parent.node !== globals.document\r\n ) {\r\n parents.push(parent)\r\n }\r\n\r\n return parents\r\n }\r\n\r\n // Get referenced element form attribute value\r\n reference (attr) {\r\n attr = this.attr(attr)\r\n if (!attr) return null\r\n\r\n const m = attr.match(reference)\r\n return m ? makeInstance(m[1]) : null\r\n }\r\n\r\n // set given data to the elements data property\r\n setData (o) {\r\n this.dom = o\r\n return this\r\n }\r\n\r\n // Set element size to given width and height\r\n size (width, height) {\r\n let p = proportionalSize(this, width, height)\r\n\r\n return this\r\n .width(new SVGNumber(p.width))\r\n .height(new SVGNumber(p.height))\r\n }\r\n\r\n // Set width of element\r\n width (width) {\r\n return this.attr('width', width)\r\n }\r\n\r\n // write svgjs data to the dom\r\n writeDataToDom () {\r\n // remove previously set data\r\n this.node.removeAttribute('svgjs:data')\r\n\r\n if (Object.keys(this.dom).length) {\r\n this.node.setAttribute('svgjs:data', JSON.stringify(this.dom)) // see #428\r\n }\r\n\r\n return super.writeDataToDom()\r\n }\r\n\r\n // Move over x-axis\r\n x (x) {\r\n return this.attr('x', x)\r\n }\r\n\r\n // Move over y-axis\r\n y (y) {\r\n return this.attr('y', y)\r\n }\r\n}\r\n\r\nextend(Element, {\r\n bbox, rbox, point, ctm, screenCTM\r\n})\r\n\r\nregister(Element, '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 defineProperty from \"./defineProperty\";\nexport default function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import 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 { 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 { 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 }\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 let MorphArray = PointArray\r\n\r\n// Move by left top corner over x-axis\r\nexport function x (x) {\r\n return x == null ? this.bbox().x : this.move(x, this.bbox().y)\r\n}\r\n\r\n// Move by left top corner over y-axis\r\nexport function y (y) {\r\n return y == null ? this.bbox().y : this.move(this.bbox().x, y)\r\n}\r\n\r\n// Set width of element\r\nexport function width (width) {\r\n let b = this.bbox()\r\n return width == null ? b.width : this.size(width, b.height)\r\n}\r\n\r\n// Set height of element\r\nexport function height (height) {\r\n let b = this.bbox()\r\n return height == null ? b.height : this.size(b.width, height)\r\n}\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PointArray from '../types/PointArray.js'\r\nimport Shape from './Shape.js'\r\nimport * as pointed from '../modules/core/pointed.js'\r\n\r\nexport default class Line extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('line', node), node)\r\n }\r\n\r\n // Get array\r\n array () {\r\n return new PointArray([\r\n [ this.attr('x1'), this.attr('y1') ],\r\n [ this.attr('x2'), this.attr('y2') ]\r\n ])\r\n }\r\n\r\n // Overwrite native plot() method\r\n plot (x1, y1, x2, y2) {\r\n if (x1 == null) {\r\n return this.array()\r\n } else if (typeof y1 !== 'undefined') {\r\n x1 = { x1: x1, y1: y1, x2: x2, y2: y2 }\r\n } else {\r\n x1 = new PointArray(x1).toLine()\r\n }\r\n\r\n return this.attr(x1)\r\n }\r\n\r\n // Move by left top corner\r\n move (x, y) {\r\n return this.attr(this.array().move(x, y).toLine())\r\n }\r\n\r\n // Set element size to given width and height\r\n size (width, height) {\r\n var p = proportionalSize(this, width, height)\r\n return this.attr(this.array().size(p.width, p.height).toLine())\r\n }\r\n}\r\n\r\nextend(Line, pointed)\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a line element\r\n line: wrapWithAttrCheck(function (...args) {\r\n // make sure plot is called as a setter\r\n // x1 is not necessarily a number, it can also be an array, a string and a PointArray\r\n return Line.prototype.plot.apply(\r\n this.put(new Line())\r\n , args[0] != null ? args : [ 0, 0, 0, 0 ]\r\n )\r\n })\r\n }\r\n})\r\n\r\nregister(Line, '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","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","import { timeline } from '../modules/core/defaults.js'\r\nimport { extend } from '../utils/adopter.js'\r\n\r\n/***\r\nBase Class\r\n==========\r\nThe base stepper class that will be\r\n***/\r\n\r\nfunction makeSetterGetter (k, f) {\r\n return function (v) {\r\n if (v == null) return this[v]\r\n this[k] = v\r\n if (f) f.call(this)\r\n return this\r\n }\r\n}\r\n\r\nexport let easing = {\r\n '-': function (pos) {\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\nlet mlhvqtcsaz = 'mlhvqtcsaz'.split('')\r\n\r\nfor (var i = 0, il = mlhvqtcsaz.length; i < il; ++i) {\r\n pathHandlers[mlhvqtcsaz[i]] = (function (i) {\r\n return function (c, p, p0) {\r\n if (i === 'H') c[0] = c[0] + p.x\r\n else if (i === 'V') c[0] = c[0] + p.y\r\n else if (i === 'A') {\r\n c[5] = c[5] + p.x\r\n c[6] = c[6] + p.y\r\n } else {\r\n for (var j = 0, jl = c.length; j < jl; ++j) {\r\n c[j] = c[j] + (j % 2 ? p.y : p.x)\r\n }\r\n }\r\n\r\n return pathHandlers[i](c, p, p0)\r\n }\r\n })(mlhvqtcsaz[i].toUpperCase())\r\n}\r\n\r\nextend(PathArray, {\r\n // Convert array to string\r\n toString () {\r\n return arrayToString(this)\r\n },\r\n\r\n // Move path string\r\n move (x, y) {\r\n // get bounding box of current situation\r\n var box = this.bbox()\r\n\r\n // get relative offset\r\n x -= box.x\r\n y -= box.y\r\n\r\n if (!isNaN(x) && !isNaN(y)) {\r\n // move every point\r\n for (var l, i = this.length - 1; i >= 0; i--) {\r\n l = this[i][0]\r\n\r\n if (l === 'M' || l === 'L' || l === 'T') {\r\n this[i][1] += x\r\n this[i][2] += y\r\n } else if (l === 'H') {\r\n this[i][1] += x\r\n } else if (l === 'V') {\r\n this[i][1] += y\r\n } else if (l === 'C' || l === 'S' || l === 'Q') {\r\n this[i][1] += x\r\n this[i][2] += y\r\n this[i][3] += x\r\n this[i][4] += y\r\n\r\n if (l === 'C') {\r\n this[i][5] += x\r\n this[i][6] += y\r\n }\r\n } else if (l === 'A') {\r\n this[i][6] += x\r\n this[i][7] += y\r\n }\r\n }\r\n }\r\n\r\n return this\r\n },\r\n\r\n // Resize path string\r\n size (width, height) {\r\n // get bounding box of current situation\r\n var box = this.bbox()\r\n var i, l\r\n\r\n // 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 (let i in objOrArr) {\r\n entries.push([i, objOrArr[i]])\r\n }\r\n\r\n entries.sort((a, b) => {\r\n return a[0] - b[0]\r\n })\r\n\r\n this.values = entries.reduce((last, curr) => last.concat(curr), [])\r\n return this\r\n }\r\n\r\n valueOf () {\r\n var obj = {}\r\n var arr = this.values\r\n\r\n for (var i = 0, len = arr.length; i < len; i += 2) {\r\n obj[arr[i]] = arr[i + 1]\r\n }\r\n\r\n return obj\r\n }\r\n\r\n toArray () {\r\n return this.values\r\n }\r\n}\r\n\r\nconst morphableTypes = [\r\n NonMorphable,\r\n TransformBag,\r\n ObjectBag\r\n]\r\n\r\nexport function registerMorphableType (type = []) {\r\n morphableTypes.push(...[].concat(type))\r\n}\r\n\r\nexport function makeMorphable () {\r\n extend(morphableTypes, {\r\n to (val) {\r\n return new Morphable()\r\n .type(this.constructor)\r\n .from(this.valueOf())\r\n .to(val)\r\n },\r\n fromArray (arr) {\r\n this.init(arr)\r\n return this\r\n }\r\n })\r\n}\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PathArray from '../types/PathArray.js'\r\nimport Shape from './Shape.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class Path extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('path', node), node)\r\n }\r\n\r\n // Get array\r\n array () {\r\n return this._array || (this._array = new PathArray(this.attr('d')))\r\n }\r\n\r\n // Plot new path\r\n plot (d) {\r\n return (d == null) ? this.array()\r\n : this.clear().attr('d', typeof d === 'string' ? d : (this._array = new PathArray(d)))\r\n }\r\n\r\n // Clear array cache\r\n clear () {\r\n delete this._array\r\n return this\r\n }\r\n\r\n // Move by left top corner\r\n move (x, y) {\r\n return this.attr('d', this.array().move(x, y))\r\n }\r\n\r\n // Move by left top corner over x-axis\r\n x (x) {\r\n return x == null ? this.bbox().x : this.move(x, this.bbox().y)\r\n }\r\n\r\n // Move by left top corner over y-axis\r\n y (y) {\r\n return y == null ? this.bbox().y : this.move(this.bbox().x, y)\r\n }\r\n\r\n // Set element size to given width and height\r\n size (width, height) {\r\n var p = proportionalSize(this, width, height)\r\n return this.attr('d', this.array().size(p.width, p.height))\r\n }\r\n\r\n // Set width of element\r\n width (width) {\r\n return width == null ? this.bbox().width : this.size(width, this.bbox().height)\r\n }\r\n\r\n // Set height of element\r\n height (height) {\r\n return height == null ? this.bbox().height : this.size(this.bbox().width, height)\r\n }\r\n\r\n targets () {\r\n return baseFind('svg textpath [href*=\"' + this.id() + '\"]')\r\n }\r\n}\r\n\r\n// Define morphable array\r\nPath.prototype.MorphArray = PathArray\r\n\r\n// Add parent method\r\nregisterMethods({\r\n Container: {\r\n // Create a wrapped path element\r\n path: wrapWithAttrCheck(function (d) {\r\n // make sure plot is called as a setter\r\n return this.put(new Path()).plot(d || new PathArray())\r\n })\r\n }\r\n})\r\n\r\nregister(Path, 'Path')\r\n","import { proportionalSize } from '../../utils/utils.js'\r\nimport PointArray from '../../types/PointArray.js'\r\n\r\n// Get array\r\nexport function array () {\r\n return this._array || (this._array = new PointArray(this.attr('points')))\r\n}\r\n\r\n// Plot new path\r\nexport function plot (p) {\r\n return (p == null) ? this.array()\r\n : this.clear().attr('points', typeof p === 'string' ? p\r\n : (this._array = new PointArray(p)))\r\n}\r\n\r\n// Clear array cache\r\nexport function clear () {\r\n delete this._array\r\n return this\r\n}\r\n\r\n// Move by left top corner\r\nexport function move (x, y) {\r\n return this.attr('points', this.array().move(x, y))\r\n}\r\n\r\n// Set element size to given width and height\r\nexport function size (width, height) {\r\n let p = proportionalSize(this, width, height)\r\n return this.attr('points', this.array().size(p.width, p.height))\r\n}\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PointArray from '../types/PointArray.js'\r\nimport Shape from './Shape.js'\r\nimport * as pointed from '../modules/core/pointed.js'\r\nimport * as poly from '../modules/core/poly.js'\r\n\r\nexport default class Polygon extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('polygon', node), node)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a wrapped polygon element\r\n polygon: wrapWithAttrCheck(function (p) {\r\n // make sure plot is called as a setter\r\n return this.put(new Polygon()).plot(p || new PointArray())\r\n })\r\n }\r\n})\r\n\r\nextend(Polygon, pointed)\r\nextend(Polygon, poly)\r\nregister(Polygon, '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 let w = globals.window\r\n return (w.performance || w.Date).now()\r\n}\r\n\r\nexport default class Timeline extends EventTarget {\r\n // Construct a new timeline on the given element\r\n constructor (timeSource = defaultSource) {\r\n super()\r\n\r\n this._timeSource = timeSource\r\n\r\n // Store the timing variables\r\n this._startTime = 0\r\n this._speed = 1.0\r\n\r\n // Determines how long a runner is hold in memory. Can be a dt or true/false\r\n this._persist = 0\r\n\r\n // Keep track of the running animations and their starting parameters\r\n this._nextFrame = null\r\n this._paused = true\r\n this._runners = []\r\n this._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 let runnerInfo = this._runners[runner.id]\r\n if (runnerInfo) {\r\n absoluteStartTime = runnerInfo.start + delay\r\n delay = 0\r\n }\r\n } else {\r\n throw new Error('Invalid value for the \"when\" parameter')\r\n }\r\n\r\n // Manage runner\r\n runner.unschedule()\r\n runner.timeline(this)\r\n\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 let runnerInfo = this._runners[i]\r\n var duration = runnerInfo ? runnerInfo.runner.duration() : 0\r\n var startTime = runnerInfo ? runnerInfo.start : 0\r\n let 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 let runnerInfo = this._runners[k]\r\n let 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 let 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 let runnerInfo = this._runners[i]\r\n let runner = runnerInfo.runner\r\n let dt = dtTime\r\n\r\n // Make sure that we give the actual difference\r\n // between runner start time and now\r\n let dtToStart = this._time - runnerInfo.start\r\n\r\n // Dont run runner if not started yet\r\n if (dtToStart <= 0) {\r\n runnersLeft = true\r\n 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'\nimport { extend, register } from '../utils/adopter.js'\nimport { from, to } from '../modules/core/gradiented.js'\nimport { getOrigin } from '../utils/utils.js'\nimport { noop, timeline } from '../modules/core/defaults.js'\nimport { registerMethods } from '../utils/methods.js'\nimport { rx, ry } from '../modules/core/circled.js'\nimport Animator from './Animator.js'\nimport Box from '../types/Box.js'\nimport EventTarget from '../types/EventTarget.js'\nimport Matrix from '../types/Matrix.js'\nimport Morphable, { TransformBag } from './Morphable.js'\nimport Point from '../types/Point.js'\nimport SVGNumber from '../types/SVGNumber.js'\nimport Timeline from './Timeline.js'\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(delay, when)\r\n }\r\n\r\n schedule (timeline, delay, when) {\r\n // The user doesn't need to pass a timeline if we already have one\r\n if (!(timeline instanceof Timeline)) {\r\n when = delay\r\n delay = timeline\r\n timeline = this.timeline()\r\n }\r\n\r\n // If there is no timeline, yell at the user...\r\n if (!timeline) {\r\n throw Error('Runner cannot be scheduled without timeline')\r\n }\r\n\r\n // Schedule the runner on the timeline provided\r\n timeline.schedule(this, delay, when)\r\n return this\r\n }\r\n\r\n unschedule () {\r\n var timeline = this.timeline()\r\n timeline && timeline.unschedule(this)\r\n return this\r\n }\r\n\r\n loop (times, swing, wait) {\r\n // Deal with the user passing in an object\r\n if (typeof times === 'object') {\r\n swing = times.swing\r\n wait = times.wait\r\n times = times.times\r\n }\r\n\r\n // Sanitise the values and store them\r\n this._times = times || Infinity\r\n this._swing = swing || false\r\n this._wait = wait || 0\r\n\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 let dt = time - this._time\r\n this.step(dt)\r\n return this\r\n }\r\n\r\n duration () {\r\n return this._times * (this._wait + this._duration) - this._wait\r\n }\r\n\r\n loops (p) {\r\n var loopDuration = this._duration + this._wait\r\n if (p == null) {\r\n var loopsDone = Math.floor(this._time / loopDuration)\r\n var relativeTime = (this._time - loopsDone * loopDuration)\r\n var position = relativeTime / this._duration\r\n return Math.min(loopsDone + position, this._times)\r\n }\r\n var whole = Math.floor(p)\r\n var partial = p % 1\r\n var time = loopDuration * whole + this._duration * partial\r\n return this.time(time)\r\n }\r\n\r\n 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 let index = this._queue.indexOf(this._history[method].caller)\r\n this._queue.splice(index, 1)\r\n return false\r\n }\r\n\r\n // for the case of transformations, we use the special retarget function\r\n // which has access to the outer scope\r\n if (this._history[method].caller.retarget) {\r\n this._history[method].caller.retarget(target, 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 let runners = this._transformationRunners.runners\r\n let netTransform = runners\r\n .map(getRunnerTransform)\r\n .reduce(lmultiply, new Matrix())\r\n\r\n this.transform(netTransform)\r\n\r\n this._transformationRunners.merge()\r\n\r\n if (this._transformationRunners.length() === 1) {\r\n this._frameId = null\r\n }\r\n}\r\n\r\nclass RunnerArray {\r\n constructor () {\r\n this.runners = []\r\n this.ids = []\r\n }\r\n\r\n add (runner) {\r\n if (this.runners.includes(runner)) return\r\n let 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 let index = this.ids.indexOf(id + 1)\r\n this.ids.splice(index, 1)\r\n this.runners.splice(index, 1)\r\n return this\r\n }\r\n\r\n merge () {\r\n let lastRunner = null\r\n this.runners.forEach((runner, i) => {\r\n\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 let 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 let deleteCnt = this.ids.indexOf(id + 1) || 1\r\n this.ids.splice(0, deleteCnt, 0)\r\n this.runners.splice(0, deleteCnt, new FakeRunner())\r\n .forEach((r) => r.clearTransformsFromQueue())\r\n return this\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Element: {\r\n animate (duration, delay, when) {\r\n var o = Runner.sanitise(duration, delay, when)\r\n var timeline = this.timeline()\r\n return new Runner(o.duration)\r\n .loop(o)\r\n .element(this)\r\n .timeline(timeline.play())\r\n .schedule(delay, when)\r\n },\r\n\r\n delay (by, when) {\r\n return this.animate(0, by, when)\r\n },\r\n\r\n // this function searches for all runners on the element and deletes the ones\r\n // which run before the current one. This is because absolute transformations\r\n // overwfrite anything anyway so there is no need to waste time computing\r\n // other runners\r\n _clearTransformRunnersBefore (currentRunner) {\r\n this._transformationRunners.clearBefore(currentRunner.id)\r\n },\r\n\r\n _currentTransform (current) {\r\n return this._transformationRunners.runners\r\n // we need the equal sign here to make sure, that also transformations\r\n // on the same runner which execute before the current transformation are\r\n // taken into account\r\n .filter((runner) => runner.id <= current.id)\r\n .map(getRunnerTransform)\r\n .reduce(lmultiply, new Matrix())\r\n },\r\n\r\n _addRunner (runner) {\r\n this._transformationRunners.add(runner)\r\n\r\n // 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 let { x, y } = new Point(origin).transform(element._currentTransform(this))\r\n\r\n let target = new Matrix({ ...transforms, origin: [ x, y ] })\r\n let start = this._isDeclarative && current\r\n ? current\r\n : startTransform\r\n\r\n if (affine) {\r\n target = target.decompose(x, y)\r\n start = start.decompose(x, y)\r\n\r\n // Get the current and target angle as it was set\r\n const rTarget = target.rotate\r\n const rCurrent = start.rotate\r\n\r\n // Figure out the shortest path to rotate directly\r\n const possibilities = [ rTarget - 360, rTarget, rTarget + 360 ]\r\n const distances = possibilities.map(a => Math.abs(a - rCurrent))\r\n const shortest = Math.min(...distances)\r\n const index = distances.indexOf(shortest)\r\n target.rotate = possibilities[index]\r\n }\r\n\r\n if (relative) {\r\n // we have to be careful here not to overwrite the rotation\r\n // with the rotate method of Matrix\r\n if (!isMatrix) {\r\n target.rotate = transforms.rotate || 0\r\n }\r\n if (this._isDeclarative && currentAngle) {\r\n start.rotate = currentAngle\r\n }\r\n }\r\n\r\n morpher.from(start)\r\n morpher.to(target)\r\n\r\n let affineParameters = morpher.at(pos)\r\n currentAngle = affineParameters.rotate\r\n current = new Matrix(affineParameters)\r\n\r\n this.addTransform(current)\r\n 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) {\r\n return this._queueNumberDelta('x', x)\r\n },\r\n\r\n dy (y) {\r\n return this._queueNumberDelta('y', y)\r\n },\r\n\r\n _queueNumberDelta (method, to) {\r\n to = new SVGNumber(to)\r\n\r\n // Try to change the target if we have this method already registerd\r\n if (this._tryRetarget(method, to)) return this\r\n\r\n // Make a morpher and queue the animation\r\n var morpher = new Morphable(this._stepper).to(to)\r\n var from = null\r\n this.queue(function () {\r\n from = this.element()[method]()\r\n morpher.from(from)\r\n morpher.to(from + to)\r\n }, function (pos) {\r\n this.element()[method](morpher.at(pos))\r\n return morpher.done()\r\n }, function (newTo) {\r\n morpher.to(from + new SVGNumber(newTo))\r\n })\r\n\r\n // Register the morpher so that if it is changed again, we can retarget it\r\n this._rememberMorpher(method, morpher)\r\n return this\r\n },\r\n\r\n _queueObject (method, to) {\r\n // Try to change the target if we have this method already registerd\r\n if (this._tryRetarget(method, to)) return this\r\n\r\n // Make a morpher and queue the animation\r\n var morpher = new Morphable(this._stepper).to(to)\r\n this.queue(function () {\r\n morpher.from(this.element()[method]())\r\n }, function (pos) {\r\n this.element()[method](morpher.at(pos))\r\n return morpher.done()\r\n })\r\n\r\n // Register the morpher so that if it is changed again, we can retarget it\r\n this._rememberMorpher(method, morpher)\r\n return this\r\n },\r\n\r\n _queueNumber (method, value) {\r\n return this._queueObject(method, new SVGNumber(value))\r\n },\r\n\r\n // Animatable center x-axis\r\n cx (x) {\r\n return this._queueNumber('cx', x)\r\n },\r\n\r\n // Animatable center y-axis\r\n cy (y) {\r\n return this._queueNumber('cy', y)\r\n },\r\n\r\n // Add animatable move\r\n move (x, y) {\r\n return this.x(x).y(y)\r\n },\r\n\r\n // Add animatable center\r\n center (x, y) {\r\n return this.cx(x).cy(y)\r\n },\r\n\r\n // Add animatable size\r\n size (width, height) {\r\n // animate bbox based size for all other elements\r\n var box\r\n\r\n if (!width || !height) {\r\n box = this._element.bbox()\r\n }\r\n\r\n if (!width) {\r\n width = box.width / box.height * height\r\n }\r\n\r\n if (!height) {\r\n height = box.height / box.width * width\r\n }\r\n\r\n return this\r\n .width(width)\r\n .height(height)\r\n },\r\n\r\n // Add animatable width\r\n width (width) {\r\n return this._queueNumber('width', width)\r\n },\r\n\r\n // Add animatable height\r\n height (height) {\r\n return this._queueNumber('height', height)\r\n },\r\n\r\n // Add animatable plot\r\n plot (a, b, c, d) {\r\n // Lines can be plotted with 4 arguments\r\n if (arguments.length === 4) {\r\n return this.plot([ a, b, c, d ])\r\n }\r\n\r\n 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 let clipper = element instanceof ClipPath\r\n ? element\r\n : this.parent().clip().add(element)\r\n\r\n // apply mask\r\n return this.attr('clip-path', 'url(\"#' + clipper.id() + '\")')\r\n },\r\n\r\n // Unclip element\r\n unclip () {\r\n return this.attr('clip-path', null)\r\n },\r\n\r\n clipper () {\r\n return this.reference('clip-path')\r\n }\r\n }\r\n})\r\n\r\nregister(ClipPath, 'ClipPath')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\nimport { registerMethods } from '../utils/methods.js'\nimport Element from './Element.js'\n\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","import * as svgMembers from './main.js'\r\nimport { makeInstance } from './utils/adopter.js'\r\n\r\n// The main wrapping element\r\nexport default function SVG (element) {\r\n return makeInstance(element)\r\n}\r\n\r\nObject.assign(SVG, svgMembers)\r\n"],"names":["global","module","window","Math","self","Function","__g","core","version","__e","it","isObject","TypeError","exec","e","require$$0","Object","defineProperty","get","a","document","is","createElement","require$$1","require$$2","S","fn","val","toString","call","valueOf","dP","O","P","Attributes","anObject","toPrimitive","IE8_DOM_DEFINE","value","bitmap","enumerable","configurable","writable","object","key","f","createDesc","hasOwnProperty","id","px","random","concat","undefined","SRC","TO_STRING","$toString","TPL","split","inspectSource","safe","isFunction","has","hide","join","String","prototype","this","that","length","aFunction","b","c","apply","arguments","PROTOTYPE","$export","type","name","source","own","out","exp","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","IS_PROTO","IS_BIND","B","target","exports","expProto","ctx","redefine","U","W","R","slice","propertyIsEnumerable","cof","IObject","defined","ceil","floor","isNaN","min","toInteger","max","IS_INCLUDES","$this","el","fromIndex","index","toIObject","toLength","SHARED","store","push","mode","copyright","shared","uid","arrayIndexOf","IE_PROTO","names","i","result","keys","$keys","enumBugKeys","getOwnPropertySymbols","$assign","assign","A","Symbol","K","forEach","k","T","toObject","aLen","getSymbols","gOPS","isEnum","pIE","getKeys","j","FProto","nameRE","_typeof2","obj","iterator","constructor","_typeof","match","USE_SYMBOL","UNSCOPABLES","ArrayProto","Array","done","defineProperties","Properties","documentElement","Empty","createDict","iframeDocument","iframe","style","display","appendChild","src","contentWindow","open","write","lt","close","create","dPs","def","TAG","tag","stat","IteratorPrototype","ObjectProto","getPrototypeOf","ITERATOR","BUGGY","VALUES","returnThis","Base","NAME","Constructor","next","DEFAULT","IS_SET","FORCED","descriptor","setToStringTag","methods","getMethod","kind","proto","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","entries","Iterators","values","iterated","_t","_i","_k","step","Arguments","$at","pos","s","l","charCodeAt","charAt","point","forbiddenField","ret","ARG","getIteratorMethod","tryGet","callee","BREAK","RETURN","iterable","iterFn","getIterFn","SPECIES","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","meta","KEY","NEED","fastKey","getWeak","onFreeze","TYPE","SIZE","DESCRIPTORS","getEntry","entry","_f","n","getConstructor","wrapper","IS_MAP","ADDER","C","anInstance","_l","forOf","redefineAll","clear","validate","data","r","p","delete","prev","callbackfn","v","setStrong","$iterDefine","SAFE_CLOSING","gOPD","getOwnPropertyDescriptor","check","setPrototypeOf","set","test","buggy","__proto__","common","IS_WEAK","fixMethod","fails","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","skipClosing","arr","iter","$iterDetect","BUGGY_ZERO","$instance","inheritIfRequired","add","strong","_toConsumableArray","isArray","arr2","arrayWithoutHoles","from","iterableToArray","nonIterableSpread","$Symbol","wksExt","arg","hiddenKeys","getOwnPropertyNames","gOPN","windowNames","getWindowNames","$GOPD","$DP","gOPNExt","$JSON","JSON","_stringify","stringify","HIDDEN","wks","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","USE_NATIVE","QObject","setter","findChild","setSymbolDesc","$fails","_create","D","protoDesc","wrap","sym","isSymbol","$defineProperty","$defineProperties","symbols","enumKeys","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","require$$3","es6Symbols","wellKnownSymbols","wksDefine","for","keyFor","useSetter","useSimple","replacer","$replacer","args","require$$5","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","$iterators","registerMethods","m","addMethodNames","_name","getMethodsFor","_names","$includes","includes","MATCH","isRegExp","INCLUDES","re","searchString","context","indexOf","SYMBOL","fns","strfn","rxfn","RegExp","string","map","array","block","il","radians","d","PI","camelCase","toLowerCase","replace","g","toUpperCase","unCamelCase","capitalize","proportionalSize","element","width","height","box","bbox","getOrigin","o","ox","oy","origin","trim","x","y","bx","by","REPLACE","$replace","searchValue","replaceValue","ns","xmlns","xlink","svgjs","globals","_classCallCheck","elements","root","createElementNS","makeInstance","adopter","querySelector","node","innerHTML","firstChild","nodeOrNew","Node","adopt","className","nodeName","register","asRoot","getClass","did","eid","assignNewId","children","extend","modules","attrCheck","method","wrapWithAttrCheck","attr","siblings","parent","position","forward","removeElement","isRoot","defs","backward","front","back","before","remove","after","insertBefore","insertAfter","SPLIT","$split","_split","$push","$SPLIT","LENGTH","LAST_INDEX","NPCG","separator","limit","separator2","lastIndex","lastLength","output","flags","ignoreCase","multiline","unicode","sticky","lastLastIndex","splitLimit","separatorCopy","numberAndUnit","hex","rgb","reference","transforms","whitespace","isHex","isRgb","isBlank","isNumber","isImage","delimiter","hyphen","pathLetters","isPathLetter","numbersWithDots","dots","classes","hasClass","addClass","removeClass","filter","toggleClass","css","cssText","t","cased","show","visible","parse","remember","memory","forget","_memory","listenerId","windowEvents","getEvents","getEventHolder","events","getEventTarget","on","listener","binding","options","bind","bag","_svgjsListenerId","event","ev","addEventListener","off","namespace","removeEventListener","dispatch","Event","CustomEvent","detail","cancelable","dispatchEvent","_slicedToArray","arrayWithHoles","_arr","_n","_d","_e","_s","err","iterableToArrayLimit","nonIterableRest","_defineProperties","props","_createClass","protoProps","staticProps","define","componentHex","component","integer","round","space","hueToRgb","q","$flags","Color","init","params","_a","_b","_c","z","h","noWhitespace","parseInt","Error","substring","components","dToR","cos","sin","yL","xL","zL","ct","mx","rU","gU","bU","pow","bd","xyz","rL","gL","bL","xU","yU","zU","lab","sqrt","atan2","isGrey","delta","_clamped","toHex","rV","gV","bV","pi","grey","color","_assertThisInitialized","ReferenceError","_possibleConstructorReturn","assertThisInitialized","_getPrototypeOf","_get","property","receiver","Reflect","base","superPropBase","desc","_setPrototypeOf","_inherits","subClass","superClass","$match","regexp","spaces","ltrim","rtrim","exporter","ALIAS","FORCE","$trim","NUMBER","$Number","BROKEN_COF","require$$4","TRIM","toNumber","argument","third","radix","maxCode","first","NaN","code","digits","require$$6","Point","clone","transformO","Matrix","isMatrixLike","closeEnough","threshold","abs","fromArray","Element","matrixify","parseFloat","transform","multiplyO","formatTransforms","transformer","translateO","rx","ry","lmultiplyO","scaleO","scaleX","scaleY","skewO","skewX","skewY","shearO","shear","rotateO","theta","isFinite","py","dx","dy","tx","ty","originX","originY","sx","sy","lam","rotate","translateX","translateY","cx","cy","determinant","ccw","thetaRad","st","matrix","matrixMultiply","det","na","nb","nc","nd","ne","nf","inverseO","axis","around","flipO","lx","tan","ly","skew","aroundO","other","comp","flipBoth","flip","flipX","flipY","scale","positionX","positionY","translate","relative","relativeX","relativeY","parser","nodes","svg","size","path","parentNode","body","addTo","isNulledBox","Box","left","top","x2","y2","xMin","Infinity","xMax","yMin","yMax","pageXOffset","pageYOffset","getBox","cb","retry","contains","viewbox","zoom","level","clientWidth","clientHeight","getComputedStyle","getPropertyValue","zoomX","zoomY","zoomAmount","Number","MIN_VALUE","subClassArray","baseClass","_constructor","Arr","List","each","fnOrMethodName","toArray","reserved","baseFind","query","querySelectorAll","reduce","attrs","EventTarget","defaultPrevented","noop","timeline","duration","ease","delay","fill","stroke","opacity","offset","SVGArray","toSet","Set","SVGNumber","unit","number","hooks","Dom","childNodes","put","hasChildNodes","removeChild","lastChild","writeDataToDom","cloneNode","deep","selector","matches","matchesSelector","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","oMatchesSelector","replaceChild","precision","factor","newAttrs","svgOrFn","outerHTML","well","len","fragment","current","_this","createDocumentFragment","firstElementChild","text","textContent","attributes","nodeValue","last","curr","removeAttribute","getAttribute","defaults","_val","hook","isColor","leading","setAttributeNS","setAttribute","rebuild","find","findOne","dom","hasAttribute","setData","plus","until","parents","getBBox","rbox","getBoundingClientRect","screenCTM","inverse","addOffset","ctm","getCTM","getScreenCTM","rect","sugar","prefix","_objectSpread","ownKeys","divide","extension","mat","angle","direction","directionString","radius","_element","getTotalLength","pointAt","getPointAtLength","font","ax","ay","amove","untransform","str","kv","reverse","lmultiply","toParent","pCtm","multiply","toRoot","decomposed","decompose","Shape","Circle","Container","circle","move","flatten","ungroup","Defs","Ellipse","circled","ellipse","Stop","fx","fy","x1","y1","to","Gradient","update","url","gradiented","gradient","Pattern","pattern","patternUnits","Image","callback","img","image","load","PointArray","toLine","at","destination","points","pop","maxX","maxY","minX","minY","Line","pointed","line","plot","Marker","marker","ref","$sort","sort","makeSetterGetter","comparefn","easing","bezier","steps","stepPosition","jumps","beforeFlag","jumping","Stepper","Ease","Controller","stepper","dt","recalculate","_duration","overshoot","_overshoot","os","log","zeta","wn","Spring","velocity","acceleration","newPosition","PID","windup","integral","error","I","PathArray","pathRegReplace","pathHandlers","M","p0","L","H","V","Q","Z","mlhvqtcsaz","jl","arrayToString","equalCommands","pathArray","morph","sourceArray","destinationArray","paramCnt","Morphable","_stepper","_from","_to","_type","_context","_morphObj","_set","NonMorphable","morphableTypes","ObjectBag","TransformBag","objOrArr","registerMorphableType","makeMorphable","Path","_array","MorphArray","Polygon","polygon","poly","Polyline","polyline","Rect","Queue","_first","_last","item","Animator","nextDraw","frames","timeouts","immediates","timer","performance","Date","frame","run","requestAnimationFrame","_draw","timeout","time","now","immediate","cancelFrame","clearTimeout","cancelImmediate","nextTimeout","lastTimeout","shift","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","when","absoluteStartTime","endTime","getEndTime","unschedule","persist","info","updateTime","_continue","splice","lastRunnerInfo","lastDuration","lastEndTime","active","pause","getEndTimeOfTimeline","speed","yes","currentSpeed","positive","dtOrForever","immediateStep","dtSource","dtTime","fire","reset","runnersLeft","dtToStart","_timeline","Runner","_queue","_isDeclarative","_history","enabled","_lastTime","_reseted","transformId","_haveReversed","_reverse","_loopsDone","_swing","_wait","_times","_frameId","_prepareRunner","sanitise","loop","schedule","times","swing","wait","animate","initFn","runFn","retargetFn","isTransform","initialiser","retarget","initialised","finished","queue","loopDuration","loopsDone","partial","swinging","backwards","uncliped","loops","swingForward","running","_lastPosition","justStarted","justFinished","declarative","_initialise","converged","_run","morpher","caller","play","extra","needsIt","positionOrDt","allfinished","FakeRunner","mergeWith","getRunnerTransform","RunnerArray","runners","ids","lastRunner","_this2","edit","newRunner","deleteCnt","clearTransformsFromQueue","_clearTransformRunnersBefore","currentRunner","_transformationRunners","clearBefore","_currentTransform","_addRunner","netTransform","merge","styleAttr","_tryRetarget","newLevel","newPoint","_rememberMorpher","affine","isMatrix","currentAngle","startTransform","clearTransform","rTarget","rCurrent","possibilities","distances","shortest","affineParameters","addTransform","newTransforms","_queueNumber","_queueNumberDelta","newTo","_queueObject","center","Svg","SVGElement","_defs","nested","symbol","_build","createTextNode","getComputedTextLength","Text","_rebuild","firstLine","nodeType","newLined","build","tspan","newLine","blankLineOffset","fontSize","textable","plain","Tspan","ClipPath","targets","unclip","clip","clipWith","clipper","ForeignObject","foreignObject","dmove","child","group","link","linkTo","Mask","unmask","mask","maskWith","masker","Style","rule","fontFamily","addText","cssRule","fontface","TextPath","track","textPath","importNodes","Use","file","use","SVG","win","doc","mock","config","initializer","inherit","construct","svgMembers"],"mappings":"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"}