aboutsummaryrefslogtreecommitdiffstats
path: root/dist/svg.min.js.map
diff options
context:
space:
mode:
Diffstat (limited to 'dist/svg.min.js.map')
-rw-r--r--dist/svg.min.js.map2
1 files changed, 1 insertions, 1 deletions
diff --git a/dist/svg.min.js.map b/dist/svg.min.js.map
index a73d278..5517688 100644
--- a/dist/svg.min.js.map
+++ b/dist/svg.min.js.map
@@ -1 +1 @@
-{"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/_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/web.dom.iterable.js","../node_modules/core-js/modules/_object-sap.js","../node_modules/core-js/modules/es6.object.keys.js","../node_modules/core-js/modules/es6.function.name.js","../node_modules/@babel/runtime/helpers/esm/typeof.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","../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/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/@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.regexp.match.js","../src/types/Point.js","../src/modules/core/parser.js","../src/types/Box.js","../src/types/Matrix.js","../src/types/ArrayPolyfill.js","../src/types/List.js","../src/modules/core/selector.js","../src/types/EventTarget.js","../src/modules/core/defaults.js","../src/types/SVGArray.js","../src/types/SVGNumber.js","../src/modules/core/attr.js","../src/elements/Dom.js","../src/elements/Element.js","../src/modules/optional/sugar.js","../node_modules/@babel/runtime/helpers/esm/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/G.js","../src/elements/A.js","../src/elements/Mask.js","../src/elements/Style.js","../node_modules/core-js/modules/_array-species-constructor.js","../node_modules/core-js/modules/_array-methods.js","../node_modules/core-js/modules/es6.array.find.js","../node_modules/core-js/modules/_array-species-create.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 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 $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","// 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","// 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","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 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","const methods = {}\r\nconst names = []\r\n\r\nexport function registerMethods (name, m) {\r\n if (Array.isArray(name)) {\r\n for (let _name of name) {\r\n registerMethods(_name, m)\r\n }\r\n return\r\n }\r\n\r\n if (typeof name === 'object') {\r\n for (let _name in name) {\r\n registerMethods(_name, name[_name])\r\n }\r\n return\r\n }\r\n\r\n addMethodNames(Object.keys(m))\r\n methods[name] = Object.assign(methods[name] || {}, m)\r\n}\r\n\r\nexport function getMethodsFor (name) {\r\n return methods[name] || {}\r\n}\r\n\r\nexport function getMethodNames () {\r\n return [...new Set(names)]\r\n}\r\n\r\nexport function addMethodNames (_names) {\r\n names.push(..._names)\r\n}\r\n","'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])) { result.push(array[i]) }\r\n }\r\n\r\n return result\r\n}\r\n\r\n// Degrees to radians\r\nexport function radians (d) {\r\n return d % 360 * Math.PI / 180\r\n}\r\n\r\n// Radians to degrees\r\nexport function degrees (r) {\r\n return r * 180 / Math.PI % 360\r\n}\r\n\r\n// Convert dash-separated-string to camelCase\r\nexport function camelCase (s) {\r\n return s.toLowerCase().replace(/-(.)/g, function (m, g) {\r\n return g.toUpperCase()\r\n })\r\n}\r\n\r\n// Convert camel cased string to string seperated\r\nexport function unCamelCase (s) {\r\n return s.replace(/([A-Z])/g, function (m, g) {\r\n return '-' + g.toLowerCase()\r\n })\r\n}\r\n\r\n// Capitalize first letter of a string\r\nexport function capitalize (s) {\r\n return s.charAt(0).toUpperCase() + s.slice(1)\r\n}\r\n\r\n// Calculate proportional width and height values when necessary\r\nexport function proportionalSize (element, width, height) {\r\n if (width == null || height == null) {\r\n var box = element.bbox()\r\n\r\n if (width == null) {\r\n width = box.width / box.height * height\r\n } else if (height == null) {\r\n height = box.height / box.width * width\r\n }\r\n }\r\n\r\n return {\r\n width: width,\r\n height: height\r\n }\r\n}\r\n\r\nexport function getOrigin (o, element) {\r\n // Allow origin or around as the names\r\n let origin = o.origin // o.around == null ? o.origin : o.around\r\n let ox, oy\r\n\r\n // Allow the user to pass a string to rotate around a given point\r\n if (typeof origin === 'string' || origin == null) {\r\n // Get the bounding box of the element with no transformations applied\r\n const string = (origin || 'center').toLowerCase().trim()\r\n const { height, width, x, y } = element.bbox()\r\n\r\n // Calculate the transformed x and y coordinates\r\n let bx = string.includes('left') ? x\r\n : string.includes('right') ? x + width\r\n : x + width / 2\r\n let by = string.includes('top') ? y\r\n : string.includes('bottom') ? y + height\r\n : y + height / 2\r\n\r\n // Set the bounds eg : \"bottom-left\", \"Top right\", \"middle\" etc...\r\n ox = o.ox != null ? o.ox : bx\r\n oy = o.oy != null ? o.oy : by\r\n } else {\r\n ox = origin[0]\r\n oy = origin[1]\r\n }\r\n\r\n // Return the origin as it is if it wasn't a string\r\n return [ ox, oy ]\r\n}\r\n","// @@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 makeNode (name) {\r\n // create element\r\n return globals.document.createElementNS(ns, name)\r\n}\r\n\r\nexport function makeInstance (element) {\r\n if (element instanceof Base) return element\r\n\r\n if (typeof element === 'object') {\r\n return 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 = makeNode('svg')\r\n node.innerHTML = element\r\n\r\n // We can use firstChild here because we know,\r\n // that the first char is < and thus an element\r\n element = 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 : makeNode(name)\r\n}\r\n\r\n// Adopt existing svg elements\r\nexport function adopt (node) {\r\n // check for presence of node\r\n if (!node) return null\r\n\r\n // make sure a node isn't already adopted\r\n if (node.instance instanceof Base) return node.instance\r\n\r\n // initialize variables\r\n var className = capitalize(node.nodeName)\r\n\r\n // Make sure that gradients are adopted correctly\r\n if (className === 'LinearGradient' || className === 'RadialGradient') {\r\n className = 'Gradient'\r\n\r\n // Fallback to Dom if element is not known\r\n } else if (!elements[className]) {\r\n className = 'Dom'\r\n }\r\n\r\n return new elements[className](node)\r\n}\r\n\r\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.keys(element.prototype))\r\n\r\n return element\r\n}\r\n\r\nexport function getClass (name) {\r\n return elements[name]\r\n}\r\n\r\n// Element id sequence\r\nlet did = 1000\r\n\r\n// Get next named element id\r\nexport function eid (name) {\r\n return 'Svgjs' + capitalize(name) + (did++)\r\n}\r\n\r\n// Deep new id assignment\r\nexport function assignNewId (node) {\r\n // do the same for SVG child nodes as well\r\n for (var i = node.children.length - 1; i >= 0; i--) {\r\n assignNewId(node.children[i])\r\n }\r\n\r\n if (node.id) {\r\n return adopt(node).id(eid(node.nodeName))\r\n }\r\n\r\n return adopt(node)\r\n}\r\n\r\n// Method for extending objects\r\nexport function extend (modules, methods, attrCheck) {\r\n var key, i\r\n\r\n modules = Array.isArray(modules) ? modules : [modules]\r\n\r\n for (i = modules.length - 1; i >= 0; i--) {\r\n for (key in methods) {\r\n let method = methods[key]\r\n if (attrCheck) {\r\n method = wrapWithAttrCheck(methods[key])\r\n }\r\n modules[i].prototype[key] = method\r\n }\r\n }\r\n}\r\n\r\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","import { makeInstance } from '../../utils/adopter.js'\r\nimport { registerMethods } from '../../utils/methods.js'\r\n\r\n// Get all siblings, including myself\r\nexport function siblings () {\r\n return this.parent().children()\r\n}\r\n\r\n// Get the curent position siblings\r\nexport function position () {\r\n return this.parent().index(this)\r\n}\r\n\r\n// Get the next element (will return null if there is none)\r\nexport function next () {\r\n return this.siblings()[this.position() + 1]\r\n}\r\n\r\n// Get the next element (will return null if there is none)\r\nexport function prev () {\r\n return this.siblings()[this.position() - 1]\r\n}\r\n\r\n// Send given element one step forward\r\nexport function forward () {\r\n var i = this.position() + 1\r\n var p = this.parent()\r\n\r\n // move node one step forward\r\n p.removeElement(this).add(this, i)\r\n\r\n // make sure defs node is always at the top\r\n if (typeof p.isRoot === 'function' && p.isRoot()) {\r\n p.node.appendChild(p.defs().node)\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Send given element one step backward\r\nexport function backward () {\r\n var i = this.position()\r\n\r\n if (i > 0) {\r\n this.parent().removeElement(this).add(this, i - 1)\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Send given element all the way to the front\r\nexport function front () {\r\n var p = this.parent()\r\n\r\n // Move node forward\r\n p.node.appendChild(this.node)\r\n\r\n // Make sure defs node is always at the top\r\n if (typeof p.isRoot === 'function' && p.isRoot()) {\r\n p.node.appendChild(p.defs().node)\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Send given element all the way to the back\r\nexport function back () {\r\n if (this.position() > 0) {\r\n this.parent().removeElement(this).add(this, 0)\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Inserts a given element before the targeted element\r\nexport function before (element) {\r\n element = makeInstance(element)\r\n element.remove()\r\n\r\n var i = this.position()\r\n\r\n this.parent().add(element, i)\r\n\r\n return this\r\n}\r\n\r\n// Inserts a given element after the targeted element\r\nexport function after (element) {\r\n element = makeInstance(element)\r\n element.remove()\r\n\r\n var i = this.position()\r\n\r\n this.parent().add(element, i + 1)\r\n\r\n return this\r\n}\r\n\r\nexport function insertBefore (element) {\r\n element = makeInstance(element)\r\n element.before(this)\r\n}\r\n\r\nexport function insertAfter (element) {\r\n element = makeInstance(element)\r\n element.after(this)\r\n}\r\n\r\nregisterMethods('Dom', {\r\n siblings,\r\n position,\r\n next,\r\n prev,\r\n forward,\r\n backward,\r\n front,\r\n back,\r\n before,\r\n after,\r\n insertBefore,\r\n insertAfter\r\n})\r\n","// @@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) { return !!el.length })\r\n .forEach(function (el) {\r\n let t = el.split(/\\s*:\\s*/)\r\n ret[t[0]] = t[1]\r\n })\r\n return ret\r\n }\r\n\r\n if (arguments.length < 2) {\r\n // get style properties in the array\r\n if (Array.isArray(style)) {\r\n for (let name of style) {\r\n let cased = camelCase(name)\r\n ret[cased] = this.node.style[cased]\r\n }\r\n return ret\r\n }\r\n\r\n // get style for property\r\n if (typeof style === 'string') {\r\n return this.node.style[camelCase(style)]\r\n }\r\n\r\n // set styles in object\r\n if (typeof style === 'object') {\r\n for (let name in style) {\r\n // set empty string if null/undefined/'' was given\r\n this.node.style[camelCase(name)] =\r\n (style[name] == null || isBlank.test(style[name])) ? '' : style[name]\r\n }\r\n }\r\n }\r\n\r\n // set style for property\r\n if (arguments.length === 2) {\r\n this.node.style[camelCase(style)] =\r\n (val == null || isBlank.test(val)) ? '' : val\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Show element\r\nexport function show () {\r\n return this.css('display', '')\r\n}\r\n\r\n// Hide element\r\nexport function hide () {\r\n return this.css('display', 'none')\r\n}\r\n\r\n// Is element visible?\r\nexport function visible () {\r\n return this.css('display') !== 'none'\r\n}\r\n\r\nregisterMethods('Dom', {\r\n css, show, hide, visible\r\n})\r\n","import { registerMethods } from '../../utils/methods.js'\r\n\r\n// Store data values on svg nodes\r\nexport function data (a, v, r) {\r\n if (typeof a === 'object') {\r\n for (v in a) {\r\n this.data(v, a[v])\r\n }\r\n } else if (arguments.length < 2) {\r\n try {\r\n return JSON.parse(this.attr('data-' + a))\r\n } catch (e) {\r\n return this.attr('data-' + a)\r\n }\r\n } else {\r\n this.attr('data-' + a,\r\n v === null ? null\r\n : r === true || typeof v === 'string' || typeof v === 'number' ? v\r\n : JSON.stringify(v)\r\n )\r\n }\r\n\r\n return this\r\n}\r\n\r\nregisterMethods('Dom', { data })\r\n","import { registerMethods } from '../../utils/methods.js'\r\n\r\n// Remember arbitrary data\r\nexport function remember (k, v) {\r\n // remember every item in an object individually\r\n if (typeof arguments[0] === 'object') {\r\n for (var key in k) {\r\n this.remember(key, k[key])\r\n }\r\n } else if (arguments.length === 1) {\r\n // retrieve memory\r\n return this.memory()[k]\r\n } else {\r\n // store memory\r\n this.memory()[k] = v\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Erase a given memory\r\nexport function forget () {\r\n if (arguments.length === 0) {\r\n this._memory = {}\r\n } else {\r\n for (var i = arguments.length - 1; i >= 0; i--) {\r\n delete this.memory()[arguments[i]]\r\n }\r\n }\r\n return this\r\n}\r\n\r\n// This triggers creation of a new hidden class which is not performant\r\n// However, this function is not rarely used so it will not happen frequently\r\n// Return local memory object\r\nexport function memory () {\r\n return (this._memory = this._memory || {})\r\n}\r\n\r\nregisterMethods('Dom', { remember, forget, memory })\r\n","import { delimiter } from './regex.js'\r\nimport { makeInstance } from '../../utils/adopter.js'\r\nimport { globals } from '../../utils/window.js'\r\n\r\nlet listenerId = 0\r\n\r\nfunction getEvents (node) {\r\n const n = makeInstance(node).getEventHolder()\r\n if (!n.events) n.events = {}\r\n return n.events\r\n}\r\n\r\nfunction getEventTarget (node) {\r\n return makeInstance(node).getEventTarget()\r\n}\r\n\r\nfunction clearEvents (node) {\r\n const n = makeInstance(node).getEventHolder()\r\n if (n.events) n.events = {}\r\n}\r\n\r\n// Add event binder in the SVG namespace\r\nexport function on (node, events, listener, binding, options) {\r\n var l = listener.bind(binding || node)\r\n var bag = getEvents(node)\r\n var n = getEventTarget(node)\r\n\r\n // events can be an array of events or a string of events\r\n events = Array.isArray(events) ? events : events.split(delimiter)\r\n\r\n // add id to listener\r\n if (!listener._svgjsListenerId) {\r\n listener._svgjsListenerId = ++listenerId\r\n }\r\n\r\n events.forEach(function (event) {\r\n var ev = event.split('.')[0]\r\n var ns = event.split('.')[1] || '*'\r\n\r\n // ensure valid object\r\n bag[ev] = bag[ev] || {}\r\n bag[ev][ns] = bag[ev][ns] || {}\r\n\r\n // reference listener\r\n bag[ev][ns][listener._svgjsListenerId] = l\r\n\r\n // add listener\r\n n.addEventListener(ev, l, options || false)\r\n })\r\n}\r\n\r\n// Add event unbinder in the SVG namespace\r\nexport function off (node, events, listener, options) {\r\n var bag = getEvents(node)\r\n var n = getEventTarget(node)\r\n\r\n // listener can be a function or a number\r\n if (typeof listener === 'function') {\r\n listener = listener._svgjsListenerId\r\n if (!listener) return\r\n }\r\n\r\n // events can be an array of events or a string or undefined\r\n events = Array.isArray(events) ? events : (events || '').split(delimiter)\r\n\r\n events.forEach(function (event) {\r\n var ev = event && event.split('.')[0]\r\n var ns = event && event.split('.')[1]\r\n var namespace, l\r\n\r\n if (listener) {\r\n // remove listener reference\r\n if (bag[ev] && bag[ev][ns || '*']) {\r\n // removeListener\r\n n.removeEventListener(ev, bag[ev][ns || '*'][listener], options || false)\r\n\r\n delete bag[ev][ns || '*'][listener]\r\n }\r\n } else if (ev && ns) {\r\n // remove all listeners for a namespaced event\r\n if (bag[ev] && bag[ev][ns]) {\r\n for (l in bag[ev][ns]) { off(n, [ev, ns].join('.'), l) }\r\n\r\n delete bag[ev][ns]\r\n }\r\n } else if (ns) {\r\n // remove all listeners for a specific namespace\r\n for (event in bag) {\r\n for (namespace in bag[event]) {\r\n if (ns === namespace) { off(n, [event, ns].join('.')) }\r\n }\r\n }\r\n } else if (ev) {\r\n // remove all listeners for the event\r\n if (bag[ev]) {\r\n for (namespace in bag[ev]) { off(n, [ev, namespace].join('.')) }\r\n\r\n delete bag[ev]\r\n }\r\n } else {\r\n // remove all listeners on a given node\r\n for (event in bag) { off(n, event) }\r\n\r\n clearEvents(node)\r\n }\r\n })\r\n}\r\n\r\nexport function dispatch (node, event, data) {\r\n var n = getEventTarget(node)\r\n\r\n // Dispatch event\r\n if (event instanceof globals.window.Event) {\r\n n.dispatchEvent(event)\r\n } else {\r\n event = new globals.window.CustomEvent(event, { detail: data, cancelable: true })\r\n n.dispatchEvent(event)\r\n }\r\n return event\r\n}\r\n","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\n\r\nColor {\r\n constructor (a, b, c, space) {\r\n space: 'hsl'\r\n a: 30\r\n b: 20\r\n c: 10\r\n },\r\n\r\n toRgb () { return new Color in rgb space }\r\n toHsl () { return new Color in hsl space }\r\n toLab () { return new Color in lab space }\r\n\r\n toArray () { [space, a, b, c] }\r\n fromArray () { convert it back }\r\n}\r\n\r\n// Conversions aren't always exact because of monitor profiles etc...\r\nnew Color(h, s, l, 'hsl') !== new Color(r, g, b).hsl()\r\nnew Color(100, 100, 100, [space])\r\nnew Color('hsl(30, 20, 10)')\r\n\r\n// Sugar\r\nSVG.rgb(30, 20, 50).lab()\r\nSVG.hsl()\r\nSVG.lab('rgb(100, 100, 100)')\r\n*/\r\n\r\nimport { hex, isHex, isRgb, rgb, whitespace } from '../modules/core/regex.js'\r\n\r\n// Ensure to six-based hex\r\nfunction fullHex (hex) {\r\n return hex.length === 4\r\n ? [ '#',\r\n hex.substring(1, 2), hex.substring(1, 2),\r\n hex.substring(2, 3), hex.substring(2, 3),\r\n hex.substring(3, 4), hex.substring(3, 4)\r\n ].join('')\r\n : hex\r\n}\r\n\r\n// Component to hex value\r\nfunction compToHex (comp) {\r\n var hex = comp.toString(16)\r\n return hex.length === 1 ? '0' + hex : hex\r\n}\r\n\r\nexport default class Color {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (color, g, b) {\r\n let match\r\n\r\n // initialize defaults\r\n this.r = 0\r\n this.g = 0\r\n this.b = 0\r\n\r\n if (!color) return\r\n\r\n // parse color\r\n if (typeof color === 'string') {\r\n if (isRgb.test(color)) {\r\n // get rgb values\r\n match = rgb.exec(color.replace(whitespace, ''))\r\n\r\n // parse numeric values\r\n this.r = parseInt(match[1])\r\n this.g = parseInt(match[2])\r\n this.b = parseInt(match[3])\r\n } else if (isHex.test(color)) {\r\n // get hex values\r\n match = hex.exec(fullHex(color))\r\n\r\n // parse numeric values\r\n this.r = parseInt(match[1], 16)\r\n this.g = parseInt(match[2], 16)\r\n this.b = parseInt(match[3], 16)\r\n }\r\n } else if (Array.isArray(color)) {\r\n this.r = color[0]\r\n this.g = color[1]\r\n this.b = color[2]\r\n } else if (typeof color === 'object') {\r\n this.r = color.r\r\n this.g = color.g\r\n this.b = color.b\r\n } else if (arguments.length === 3) {\r\n this.r = color\r\n this.g = g\r\n this.b = b\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Default to hex conversion\r\n toString () {\r\n return this.toHex()\r\n }\r\n\r\n toArray () {\r\n return [this.r, this.g, this.b]\r\n }\r\n\r\n // Build hex value\r\n toHex () {\r\n return '#' +\r\n compToHex(Math.round(this.r)) +\r\n compToHex(Math.round(this.g)) +\r\n compToHex(Math.round(this.b))\r\n }\r\n\r\n // Build rgb value\r\n toRgb () {\r\n return 'rgb(' + [this.r, this.g, this.b].join() + ')'\r\n }\r\n\r\n // Calculate true brightness\r\n brightness () {\r\n return (this.r / 255 * 0.30) +\r\n (this.g / 255 * 0.59) +\r\n (this.b / 255 * 0.11)\r\n }\r\n\r\n // Testers\r\n\r\n // Test if given value is a color string\r\n static test (color) {\r\n color += ''\r\n return isHex.test(color) || isRgb.test(color)\r\n }\r\n\r\n // Test if given value is a rgb object\r\n static isRgb (color) {\r\n return color && typeof color.r === 'number' &&\r\n typeof color.g === 'number' &&\r\n typeof color.b === 'number'\r\n }\r\n\r\n // Test if given value is a color\r\n static isColor (color) {\r\n return this.isRgb(color) || this.test(color)\r\n }\r\n}\r\n","export default 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}","// @@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","export default class Point {\r\n // Initialize\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (x, y) {\r\n let source\r\n let base = { x: 0, y: 0 }\r\n\r\n // ensure source as object\r\n source = Array.isArray(x) ? { x: x[0], y: x[1] }\r\n : typeof x === 'object' ? { x: x.x, y: x.y }\r\n : { x: x, y: y }\r\n\r\n // merge source\r\n this.x = source.x == null ? base.x : source.x\r\n this.y = source.y == null ? base.y : source.y\r\n\r\n return this\r\n }\r\n\r\n // Clone point\r\n clone () {\r\n return new Point(this)\r\n }\r\n\r\n // transform point with matrix\r\n transform (m) {\r\n // Perform the matrix multiplication\r\n var x = m.a * this.x + m.c * this.y + m.e\r\n var y = m.b * this.x + m.d * this.y + m.f\r\n\r\n // Return the required point\r\n return new Point(x, y)\r\n }\r\n\r\n toArray () {\r\n return [this.x, this.y]\r\n }\r\n}\r\n\r\nexport function point (x, y) {\r\n return new Point(x, y).transform(this.screenCTM().inverse())\r\n}\r\n","import { globals } from '../../utils/window.js'\r\nimport { makeInstance } from '../../utils/adopter.js'\r\n\r\nexport default function parser () {\r\n // Reuse cached element if possible\r\n if (!parser.nodes) {\r\n let svg = makeInstance().size(2, 0)\r\n svg.node.cssText = [\r\n 'opacity: 0',\r\n 'position: absolute',\r\n 'left: -100%',\r\n 'top: -100%',\r\n 'overflow: hidden'\r\n ].join(';')\r\n\r\n let path = svg.path().node\r\n\r\n parser.nodes = { svg, path }\r\n }\r\n\r\n if (!parser.nodes.svg.node.parentNode) {\r\n let b = globals.document.body || globals.document.documentElement\r\n parser.nodes.svg.addTo(b)\r\n }\r\n\r\n return parser.nodes\r\n}\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { globals } from '../utils/window.js'\r\nimport Point from './Point.js'\r\nimport parser from '../modules/core/parser.js'\r\n\r\nfunction isNulledBox (box) {\r\n return !box.w && !box.h && !box.x && !box.y\r\n}\r\n\r\nfunction domContains (node) {\r\n return (globals.document.documentElement.contains || function (node) {\r\n // This is IE - it does not support contains() for top-level SVGs\r\n while (node.parentNode) {\r\n node = node.parentNode\r\n }\r\n return node === document\r\n }).call(globals.document.documentElement, node)\r\n}\r\n\r\nexport default class Box {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (source) {\r\n var base = [0, 0, 0, 0]\r\n source = typeof source === 'string' ? source.split(delimiter).map(parseFloat)\r\n : Array.isArray(source) ? source\r\n : typeof source === 'object' ? [source.left != null ? source.left\r\n : source.x, source.top != null ? source.top : source.y, source.width, source.height]\r\n : arguments.length === 4 ? [].slice.call(arguments)\r\n : base\r\n\r\n this.x = source[0] || 0\r\n this.y = source[1] || 0\r\n this.width = this.w = source[2] || 0\r\n this.height = this.h = source[3] || 0\r\n\r\n // Add more bounding box properties\r\n this.x2 = this.x + this.w\r\n this.y2 = this.y + this.h\r\n this.cx = this.x + this.w / 2\r\n this.cy = this.y + this.h / 2\r\n\r\n return this\r\n }\r\n\r\n // Merge rect box with another, return a new instance\r\n merge (box) {\r\n let x = Math.min(this.x, box.x)\r\n let y = Math.min(this.y, box.y)\r\n let width = Math.max(this.x + this.width, box.x + box.width) - x\r\n let height = Math.max(this.y + this.height, box.y + box.height) - y\r\n\r\n return new Box(x, y, width, height)\r\n }\r\n\r\n transform (m) {\r\n let xMin = Infinity\r\n let xMax = -Infinity\r\n let yMin = Infinity\r\n let yMax = -Infinity\r\n\r\n let pts = [\r\n new Point(this.x, this.y),\r\n new Point(this.x2, this.y),\r\n new Point(this.x, this.y2),\r\n new Point(this.x2, this.y2)\r\n ]\r\n\r\n pts.forEach(function (p) {\r\n p = p.transform(m)\r\n xMin = Math.min(xMin, p.x)\r\n xMax = Math.max(xMax, p.x)\r\n yMin = Math.min(yMin, p.y)\r\n yMax = Math.max(yMax, p.y)\r\n })\r\n\r\n return new Box(\r\n xMin, yMin,\r\n xMax - xMin,\r\n yMax - yMin\r\n )\r\n }\r\n\r\n addOffset () {\r\n // offset by window scroll position, because getBoundingClientRect changes when window is scrolled\r\n this.x += globals.window.pageXOffset\r\n this.y += globals.window.pageYOffset\r\n return this\r\n }\r\n\r\n toString () {\r\n return this.x + ' ' + this.y + ' ' + this.width + ' ' + this.height\r\n }\r\n\r\n toArray () {\r\n return [this.x, this.y, this.width, this.height]\r\n }\r\n\r\n isNulled () {\r\n return isNulledBox(this)\r\n }\r\n}\r\n\r\nfunction getBox (cb, 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')\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})\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { radians } from '../utils/utils.js'\r\nimport Element from '../elements/Element.js'\r\nimport Point from './Point.js'\r\n\r\nfunction closeEnough (a, b, threshold) {\r\n return Math.abs(b - a) < (threshold || 1e-6)\r\n}\r\n\r\nexport default class Matrix {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n // Initialize\r\n init (source) {\r\n var base = Matrix.fromArray([1, 0, 0, 1, 0, 0])\r\n\r\n // ensure source as object\r\n source = source instanceof Element ? source.matrixify()\r\n : typeof source === 'string' ? Matrix.fromArray(source.split(delimiter).map(parseFloat))\r\n : Array.isArray(source) ? Matrix.fromArray(source)\r\n : (typeof source === 'object' && Matrix.isMatrixLike(source)) ? source\r\n : (typeof source === 'object') ? new Matrix().transform(source)\r\n : arguments.length === 6 ? Matrix.fromArray([].slice.call(arguments))\r\n : base\r\n\r\n // Merge the source matrix with the base matrix\r\n this.a = source.a != null ? source.a : base.a\r\n this.b = source.b != null ? source.b : base.b\r\n this.c = source.c != null ? source.c : base.c\r\n this.d = source.d != null ? source.d : base.d\r\n this.e = source.e != null ? source.e : base.e\r\n this.f = source.f != null ? source.f : base.f\r\n\r\n return this\r\n }\r\n\r\n // Clones this matrix\r\n clone () {\r\n return new Matrix(this)\r\n }\r\n\r\n // Transform a matrix into another matrix by manipulating the space\r\n transform (o) {\r\n // Check if o is a matrix and then left multiply it directly\r\n if (Matrix.isMatrixLike(o)) {\r\n var matrix = new Matrix(o)\r\n return matrix.multiplyO(this)\r\n }\r\n\r\n // Get the proposed transformations and the current transformations\r\n var t = Matrix.formatTransforms(o)\r\n var current = this\r\n let { x: ox, y: oy } = new Point(t.ox, t.oy).transform(current)\r\n\r\n // Construct the resulting matrix\r\n var transformer = new Matrix()\r\n .translateO(t.rx, t.ry)\r\n .lmultiplyO(current)\r\n .translateO(-ox, -oy)\r\n .scaleO(t.scaleX, t.scaleY)\r\n .skewO(t.skewX, t.skewY)\r\n .shearO(t.shear)\r\n .rotateO(t.theta)\r\n .translateO(ox, oy)\r\n\r\n // If we want the origin at a particular place, we force it there\r\n if (isFinite(t.px) || isFinite(t.py)) {\r\n const origin = new Point(ox, oy).transform(transformer)\r\n // TODO: Replace t.px with isFinite(t.px)\r\n const dx = t.px ? t.px - origin.x : 0\r\n const dy = t.py ? t.py - origin.y : 0\r\n transformer.translateO(dx, dy)\r\n }\r\n\r\n // Translate now after positioning\r\n transformer.translateO(t.tx, t.ty)\r\n return transformer\r\n }\r\n\r\n // Applies a matrix defined by its affine parameters\r\n compose (o) {\r\n if (o.origin) {\r\n o.originX = o.origin[0]\r\n o.originY = o.origin[1]\r\n }\r\n // Get the parameters\r\n var ox = o.originX || 0\r\n var oy = o.originY || 0\r\n var sx = o.scaleX || 1\r\n var sy = o.scaleY || 1\r\n var lam = o.shear || 0\r\n var theta = o.rotate || 0\r\n var tx = o.translateX || 0\r\n var ty = o.translateY || 0\r\n\r\n // Apply the standard matrix\r\n var result = new Matrix()\r\n .translateO(-ox, -oy)\r\n .scaleO(sx, sy)\r\n .shearO(lam)\r\n .rotateO(theta)\r\n .translateO(tx, ty)\r\n .lmultiplyO(this)\r\n .translateO(ox, oy)\r\n return result\r\n }\r\n\r\n // Decomposes this matrix into its affine parameters\r\n decompose (cx = 0, cy = 0) {\r\n // Get the parameters from the matrix\r\n var a = this.a\r\n var b = this.b\r\n var c = this.c\r\n var d = this.d\r\n var e = this.e\r\n var f = this.f\r\n\r\n // Figure out if the winding direction is clockwise or counterclockwise\r\n var determinant = a * d - b * c\r\n var ccw = determinant > 0 ? 1 : -1\r\n\r\n // Since we only shear in x, we can use the x basis to get the x scale\r\n // and the rotation of the resulting matrix\r\n var sx = ccw * Math.sqrt(a * a + b * b)\r\n var thetaRad = Math.atan2(ccw * b, ccw * a)\r\n var theta = 180 / Math.PI * thetaRad\r\n var ct = Math.cos(thetaRad)\r\n var st = Math.sin(thetaRad)\r\n\r\n // We can then solve the y basis vector simultaneously to get the other\r\n // two affine parameters directly from these parameters\r\n var lam = (a * c + b * d) / determinant\r\n var sy = ((c * sx) / (lam * a - b)) || ((d * sx) / (lam * b + a))\r\n\r\n // Use the translations\r\n let tx = e - cx + cx * ct * sx + cy * (lam * ct * sx - st * sy)\r\n let ty = f - cy + cx * st * sx + cy * (lam * st * sx + ct * sy)\r\n\r\n // Construct the decomposition and return it\r\n return {\r\n // Return the affine parameters\r\n scaleX: sx,\r\n scaleY: sy,\r\n shear: lam,\r\n rotate: theta,\r\n translateX: tx,\r\n translateY: ty,\r\n originX: cx,\r\n originY: cy,\r\n\r\n // Return the matrix parameters\r\n a: this.a,\r\n b: this.b,\r\n c: this.c,\r\n d: this.d,\r\n e: this.e,\r\n f: this.f\r\n }\r\n }\r\n\r\n // Left multiplies by the given matrix\r\n multiply (matrix) {\r\n return this.clone().multiplyO(matrix)\r\n }\r\n\r\n multiplyO (matrix) {\r\n // Get the matrices\r\n var l = this\r\n var r = matrix instanceof Matrix\r\n ? matrix\r\n : new Matrix(matrix)\r\n\r\n return Matrix.matrixMultiply(l, r, this)\r\n }\r\n\r\n lmultiply (matrix) {\r\n return this.clone().lmultiplyO(matrix)\r\n }\r\n\r\n lmultiplyO (matrix) {\r\n var r = this\r\n var l = matrix instanceof Matrix\r\n ? matrix\r\n : new Matrix(matrix)\r\n\r\n return Matrix.matrixMultiply(l, r, this)\r\n }\r\n\r\n // Inverses matrix\r\n inverseO () {\r\n // Get the current parameters out of the matrix\r\n var a = this.a\r\n var b = this.b\r\n var c = this.c\r\n var d = this.d\r\n var e = this.e\r\n var f = this.f\r\n\r\n // Invert the 2x2 matrix in the top left\r\n var det = a * d - b * c\r\n if (!det) throw new Error('Cannot invert ' + this)\r\n\r\n // Calculate the top 2x2 matrix\r\n var na = d / det\r\n var nb = -b / det\r\n var nc = -c / det\r\n var nd = a / det\r\n\r\n // Apply the inverted matrix to the top right\r\n var ne = -(na * e + nc * f)\r\n var nf = -(nb * e + nd * f)\r\n\r\n // Construct the inverted matrix\r\n this.a = na\r\n this.b = nb\r\n this.c = nc\r\n this.d = nd\r\n this.e = ne\r\n this.f = nf\r\n\r\n return this\r\n }\r\n\r\n inverse () {\r\n return this.clone().inverseO()\r\n }\r\n\r\n // Translate matrix\r\n translate (x, y) {\r\n return this.clone().translateO(x, y)\r\n }\r\n\r\n translateO (x, y) {\r\n this.e += x || 0\r\n this.f += y || 0\r\n return this\r\n }\r\n\r\n // Scale matrix\r\n scale (x, y, cx, cy) {\r\n return this.clone().scaleO(...arguments)\r\n }\r\n\r\n scaleO (x, y = x, cx = 0, cy = 0) {\r\n // Support uniform scaling\r\n if (arguments.length === 3) {\r\n cy = cx\r\n cx = y\r\n y = x\r\n }\r\n\r\n let { a, b, c, d, e, f } = this\r\n\r\n this.a = a * x\r\n this.b = b * y\r\n this.c = c * x\r\n this.d = d * y\r\n this.e = e * x - cx * x + cx\r\n this.f = f * y - cy * y + cy\r\n\r\n return this\r\n }\r\n\r\n // Rotate matrix\r\n rotate (r, cx, cy) {\r\n return this.clone().rotateO(r, cx, cy)\r\n }\r\n\r\n rotateO (r, cx = 0, cy = 0) {\r\n // Convert degrees to radians\r\n r = radians(r)\r\n\r\n let cos = Math.cos(r)\r\n let sin = Math.sin(r)\r\n\r\n let { a, b, c, d, e, f } = this\r\n\r\n this.a = a * cos - b * sin\r\n this.b = b * cos + a * sin\r\n this.c = c * cos - d * sin\r\n this.d = d * cos + c * sin\r\n this.e = e * cos - f * sin + cy * sin - cx * cos + cx\r\n this.f = f * cos + e * sin - cx * sin - cy * cos + cy\r\n\r\n return this\r\n }\r\n\r\n // Flip matrix on x or y, at a given offset\r\n flip (axis, around) {\r\n return this.clone().flipO(axis, around)\r\n }\r\n\r\n flipO (axis, around) {\r\n return axis === 'x' ? this.scaleO(-1, 1, around, 0)\r\n : axis === 'y' ? this.scaleO(1, -1, 0, around)\r\n : this.scaleO(-1, -1, axis, around || axis) // Define an x, y flip point\r\n }\r\n\r\n // Shear matrix\r\n shear (a, cx, cy) {\r\n return this.clone().shearO(a, cx, cy)\r\n }\r\n\r\n shearO (lx, cx = 0, cy = 0) {\r\n let { a, b, c, d, e, f } = this\r\n\r\n this.a = a + b * lx\r\n this.c = c + d * lx\r\n this.e = e + f * lx - cy * lx\r\n\r\n return this\r\n }\r\n\r\n // Skew Matrix\r\n skew (x, y, cx, cy) {\r\n return this.clone().skewO(...arguments)\r\n }\r\n\r\n skewO (x, y = x, cx = 0, cy = 0) {\r\n // support uniformal skew\r\n if (arguments.length === 3) {\r\n cy = cx\r\n cx = y\r\n y = x\r\n }\r\n\r\n // Convert degrees to radians\r\n x = radians(x)\r\n y = radians(y)\r\n\r\n let lx = Math.tan(x)\r\n let ly = Math.tan(y)\r\n\r\n let { a, b, c, d, e, f } = this\r\n\r\n this.a = a + b * lx\r\n this.b = b + a * ly\r\n this.c = c + d * lx\r\n this.d = d + c * ly\r\n this.e = e + f * lx - cy * lx\r\n this.f = f + e * ly - cx * ly\r\n\r\n return this\r\n }\r\n\r\n // SkewX\r\n skewX (x, cx, cy) {\r\n return this.skew(x, 0, cx, cy)\r\n }\r\n\r\n skewXO (x, cx, cy) {\r\n return this.skewO(x, 0, cx, cy)\r\n }\r\n\r\n // SkewY\r\n skewY (y, cx, cy) {\r\n return this.skew(0, y, cx, cy)\r\n }\r\n\r\n skewYO (y, cx, cy) {\r\n return this.skewO(0, y, cx, cy)\r\n }\r\n\r\n // Transform around a center point\r\n aroundO (cx, cy, matrix) {\r\n var dx = cx || 0\r\n var dy = cy || 0\r\n return this.translateO(-dx, -dy).lmultiplyO(matrix).translateO(dx, dy)\r\n }\r\n\r\n around (cx, cy, matrix) {\r\n return this.clone().aroundO(cx, cy, matrix)\r\n }\r\n\r\n // Check if two matrices are equal\r\n equals (other) {\r\n var comp = new Matrix(other)\r\n return closeEnough(this.a, comp.a) && closeEnough(this.b, comp.b) &&\r\n closeEnough(this.c, comp.c) && closeEnough(this.d, comp.d) &&\r\n closeEnough(this.e, comp.e) && closeEnough(this.f, comp.f)\r\n }\r\n\r\n // Convert matrix to string\r\n toString () {\r\n return 'matrix(' + this.a + ',' + this.b + ',' + this.c + ',' + this.d + ',' + this.e + ',' + this.f + ')'\r\n }\r\n\r\n toArray () {\r\n return [this.a, this.b, this.c, this.d, this.e, this.f]\r\n }\r\n\r\n valueOf () {\r\n return {\r\n a: this.a,\r\n b: this.b,\r\n c: this.c,\r\n d: this.d,\r\n e: this.e,\r\n f: this.f\r\n }\r\n }\r\n\r\n static fromArray (a) {\r\n return { a: a[0], b: a[1], c: a[2], d: a[3], e: a[4], f: a[5] }\r\n }\r\n\r\n static isMatrixLike (o) {\r\n return (\r\n o.a != null ||\r\n o.b != null ||\r\n o.c != null ||\r\n o.d != null ||\r\n o.e != null ||\r\n o.f != null\r\n )\r\n }\r\n\r\n static formatTransforms (o) {\r\n // Get all of the parameters required to form the matrix\r\n var flipBoth = o.flip === 'both' || o.flip === true\r\n var flipX = o.flip && (flipBoth || o.flip === 'x') ? -1 : 1\r\n var flipY = o.flip && (flipBoth || o.flip === 'y') ? -1 : 1\r\n var skewX = o.skew && o.skew.length ? o.skew[0]\r\n : isFinite(o.skew) ? o.skew\r\n : isFinite(o.skewX) ? o.skewX\r\n : 0\r\n var skewY = o.skew && o.skew.length ? o.skew[1]\r\n : isFinite(o.skew) ? o.skew\r\n : isFinite(o.skewY) ? o.skewY\r\n : 0\r\n var scaleX = o.scale && o.scale.length ? o.scale[0] * flipX\r\n : isFinite(o.scale) ? o.scale * flipX\r\n : isFinite(o.scaleX) ? o.scaleX * flipX\r\n : flipX\r\n var scaleY = o.scale && o.scale.length ? o.scale[1] * flipY\r\n : isFinite(o.scale) ? o.scale * flipY\r\n : isFinite(o.scaleY) ? o.scaleY * flipY\r\n : flipY\r\n var shear = o.shear || 0\r\n var theta = o.rotate || o.theta || 0\r\n var origin = new Point(o.origin || o.around || o.ox || o.originX, o.oy || o.originY)\r\n var ox = origin.x\r\n var oy = origin.y\r\n var position = new Point(o.position || o.px || o.positionX, o.py || o.positionY)\r\n var px = position.x\r\n var py = position.y\r\n var translate = new Point(o.translate || o.tx || o.translateX, o.ty || o.translateY)\r\n var tx = translate.x\r\n var ty = translate.y\r\n var relative = new Point(o.relative || o.rx || o.relativeX, o.ry || o.relativeY)\r\n var rx = relative.x\r\n var ry = relative.y\r\n\r\n // Populate all of the values\r\n return {\r\n scaleX, scaleY, skewX, skewY, shear, theta, rx, ry, tx, ty, ox, oy, px, py\r\n }\r\n }\r\n\r\n // left matrix, right matrix, target matrix which is overwritten\r\n static matrixMultiply (l, r, o) {\r\n // Work out the product directly\r\n var a = l.a * r.a + l.c * r.b\r\n var b = l.b * r.a + l.d * r.b\r\n var c = l.a * r.c + l.c * r.d\r\n var d = l.b * r.c + l.d * r.d\r\n var e = l.e + l.a * r.e + l.c * r.f\r\n var f = l.f + l.b * r.e + l.d * r.f\r\n\r\n // make sure to use local variables because l/r and o could be the same\r\n o.a = a\r\n o.b = b\r\n o.c = c\r\n o.d = d\r\n o.e = e\r\n o.f = f\r\n\r\n return o\r\n }\r\n}\r\n\r\nexport function ctm () {\r\n return new Matrix(this.node.getCTM())\r\n}\r\n\r\nexport function screenCTM () {\r\n /* https://bugzilla.mozilla.org/show_bug.cgi?id=1344537\r\n This is needed because FF does not return the transformation matrix\r\n for the inner coordinate system when getScreenCTM() is called on nested svgs.\r\n However all other Browsers do that */\r\n if (typeof this.isRoot === 'function' && !this.isRoot()) {\r\n var rect = this.rect(1, 1)\r\n var m = rect.node.getScreenCTM()\r\n rect.remove()\r\n return new Matrix(m)\r\n }\r\n return new Matrix(this.node.getScreenCTM())\r\n}\r\n","/* eslint no-new-func: \"off\" */\r\nexport const subClassArray = (function () {\r\n try {\r\n // try es6 subclassing\r\n return Function('name', 'baseClass', '_constructor', [\r\n 'baseClass = baseClass || Array',\r\n 'return {',\r\n ' [name]: class extends baseClass {',\r\n ' constructor (...args) {',\r\n ' super(...args)',\r\n ' _constructor && _constructor.apply(this, args)',\r\n ' }',\r\n ' }',\r\n '}[name]'\r\n ].join('\\n'))\r\n } catch (e) {\r\n // Use es5 approach\r\n return (name, baseClass = Array, _constructor) => {\r\n const Arr = function () {\r\n baseClass.apply(this, arguments)\r\n _constructor && _constructor.apply(this, arguments)\r\n }\r\n\r\n Arr.prototype = Object.create(baseClass.prototype)\r\n Arr.prototype.constructor = Arr\r\n\r\n Arr.prototype.map = function (fn) {\r\n const arr = new Arr()\r\n arr.push.apply(arr, Array.prototype.map.call(this, fn))\r\n return arr\r\n }\r\n\r\n return Arr\r\n }\r\n }\r\n})()\r\n","import { extend } from '../utils/adopter.js'\r\nimport { subClassArray } from './ArrayPolyfill.js'\r\n\r\nconst List = subClassArray('List', Array, function (arr = []) {\r\n // This catches the case, that native map tries to create an array with new Array(1)\r\n if (typeof arr === 'number') return this\r\n this.length = 0\r\n this.push(...arr)\r\n})\r\n\r\nexport default List\r\n\r\nextend(List, {\r\n each (fnOrMethodName, ...args) {\r\n if (typeof fnOrMethodName === 'function') {\r\n this.forEach((el) => { fnOrMethodName.call(el, el) })\r\n } else {\r\n return this.map(el => { return el[fnOrMethodName](...args) })\r\n }\r\n\r\n return this\r\n },\r\n\r\n toArray () {\r\n return Array.prototype.concat.apply([], this)\r\n }\r\n})\r\n\r\nList.extend = function (methods) {\r\n methods = methods.reduce((obj, name) => {\r\n obj[name] = function (...attrs) {\r\n return this.each(name, ...attrs)\r\n }\r\n return obj\r\n }, {})\r\n\r\n extend(List, methods)\r\n}\r\n","import { adopt } from '../../utils/adopter.js'\r\nimport { globals } from '../../utils/window.js'\r\nimport { map } from '../../utils/utils.js'\r\nimport List from '../../types/List.js'\r\n\r\nexport default function baseFind (query, parent) {\r\n return new List(map((parent || globals.document).querySelectorAll(query), function (node) {\r\n return adopt(node)\r\n }))\r\n}\r\n\r\n// Scoped find method\r\nexport function find (query) {\r\n return baseFind(query, this.node)\r\n}\r\n","import { dispatch, off, on } from '../modules/core/event.js'\r\nimport Base from './Base.js'\r\n\r\nexport default class EventTarget extends Base {\r\n constructor ({ events = {} } = {}) {\r\n super()\r\n this.events = events\r\n }\r\n\r\n addEventListener () {}\r\n\r\n dispatch (event, data) {\r\n return dispatch(this, event, data)\r\n }\r\n\r\n dispatchEvent (event) {\r\n const bag = this.getEventHolder().events\r\n if (!bag) return true\r\n\r\n const events = bag[event.type]\r\n\r\n for (let i in events) {\r\n for (let j in events[i]) {\r\n events[i][j](event)\r\n }\r\n }\r\n\r\n return !event.defaultPrevented\r\n }\r\n\r\n // Fire given event\r\n fire (event, data) {\r\n this.dispatch(event, data)\r\n return this\r\n }\r\n\r\n getEventHolder () {\r\n return this\r\n }\r\n\r\n getEventTarget () {\r\n return this\r\n }\r\n\r\n // Unbind event from listener\r\n off (event, listener) {\r\n off(this, event, listener)\r\n return this\r\n }\r\n\r\n // Bind given event to listener\r\n on (event, listener, binding, options) {\r\n on(this, event, listener, binding, options)\r\n return this\r\n }\r\n\r\n removeEventListener () {}\r\n}\r\n","\r\nexport function noop () {}\r\n\r\n// Default animation values\r\nexport let timeline = {\r\n duration: 400,\r\n ease: '>',\r\n delay: 0\r\n}\r\n\r\n// Default attribute values\r\nexport let attrs = {\r\n\r\n // fill and stroke\r\n 'fill-opacity': 1,\r\n 'stroke-opacity': 1,\r\n 'stroke-width': 0,\r\n 'stroke-linejoin': 'miter',\r\n 'stroke-linecap': 'butt',\r\n fill: '#000000',\r\n stroke: '#000000',\r\n opacity: 1,\r\n\r\n // position\r\n x: 0,\r\n y: 0,\r\n cx: 0,\r\n cy: 0,\r\n\r\n // size\r\n width: 0,\r\n height: 0,\r\n\r\n // radius\r\n r: 0,\r\n rx: 0,\r\n ry: 0,\r\n\r\n // gradient\r\n offset: 0,\r\n 'stop-opacity': 1,\r\n 'stop-color': '#000000',\r\n\r\n // text\r\n 'font-size': 16,\r\n 'font-family': 'Helvetica, Arial, sans-serif',\r\n 'text-anchor': 'start'\r\n}\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { extend } from '../utils/adopter.js'\r\nimport { subClassArray } from './ArrayPolyfill.js'\r\n\r\nconst SVGArray = subClassArray('SVGArray', Array, function (arr) {\r\n this.init(arr)\r\n})\r\n\r\nexport default SVGArray\r\n\r\nextend(SVGArray, {\r\n init (arr) {\r\n // This catches the case, that native map tries to create an array with new Array(1)\r\n if (typeof arr === 'number') return this\r\n this.length = 0\r\n this.push(...this.parse(arr))\r\n return this\r\n },\r\n\r\n toArray () {\r\n return Array.prototype.concat.apply([], this)\r\n },\r\n\r\n toString () {\r\n return this.join(' ')\r\n },\r\n\r\n // Flattens the array if needed\r\n valueOf () {\r\n const ret = []\r\n ret.push(...this)\r\n return ret\r\n },\r\n\r\n // Parse whitespace separated string\r\n parse (array = []) {\r\n // If already is an array, no need to parse it\r\n if (array instanceof Array) return array\r\n\r\n return array.trim().split(delimiter).map(parseFloat)\r\n },\r\n\r\n clone () {\r\n return new this.constructor(this)\r\n },\r\n\r\n toSet () {\r\n return new Set(this)\r\n }\r\n})\r\n","import { numberAndUnit } from '../modules/core/regex.js'\r\n\r\n// Module for unit convertions\r\nexport default class SVGNumber {\r\n // Initialize\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (value, unit) {\r\n unit = Array.isArray(value) ? value[1] : unit\r\n value = Array.isArray(value) ? value[0] : value\r\n\r\n // initialize defaults\r\n this.value = 0\r\n this.unit = unit || ''\r\n\r\n // parse value\r\n if (typeof value === 'number') {\r\n // ensure a valid numeric value\r\n this.value = isNaN(value) ? 0 : !isFinite(value) ? (value < 0 ? -3.4e+38 : +3.4e+38) : value\r\n } else if (typeof value === 'string') {\r\n unit = value.match(numberAndUnit)\r\n\r\n if (unit) {\r\n // make value numeric\r\n this.value = parseFloat(unit[1])\r\n\r\n // normalize\r\n if (unit[5] === '%') { this.value /= 100 } else if (unit[5] === 's') {\r\n this.value *= 1000\r\n }\r\n\r\n // store unit\r\n this.unit = unit[5]\r\n }\r\n } else {\r\n if (value instanceof SVGNumber) {\r\n this.value = value.valueOf()\r\n this.unit = value.unit\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n toString () {\r\n return (this.unit === '%' ? ~~(this.value * 1e8) / 1e6\r\n : this.unit === 's' ? this.value / 1e3\r\n : this.value\r\n ) + this.unit\r\n }\r\n\r\n toJSON () {\r\n return this.toString()\r\n }\r\n\r\n toArray () {\r\n return [this.value, this.unit]\r\n }\r\n\r\n valueOf () {\r\n return this.value\r\n }\r\n\r\n // Add number\r\n plus (number) {\r\n number = new SVGNumber(number)\r\n return new SVGNumber(this + number, this.unit || number.unit)\r\n }\r\n\r\n // Subtract number\r\n minus (number) {\r\n number = new SVGNumber(number)\r\n return new SVGNumber(this - number, this.unit || number.unit)\r\n }\r\n\r\n // Multiply number\r\n times (number) {\r\n number = new SVGNumber(number)\r\n return new SVGNumber(this * number, this.unit || number.unit)\r\n }\r\n\r\n // Divide number\r\n divide (number) {\r\n number = new SVGNumber(number)\r\n return new SVGNumber(this / number, this.unit || number.unit)\r\n }\r\n}\r\n","import { attrs as defaults } from './defaults.js'\r\nimport { isNumber } from './regex.js'\r\nimport Color from '../../types/Color.js'\r\nimport SVGArray from '../../types/SVGArray.js'\r\nimport SVGNumber from '../../types/SVGNumber.js'\r\n\r\nconst hooks = []\r\nexport function registerAttrHook (fn) {\r\n hooks.push(fn)\r\n}\r\n\r\n// Set svg element attribute\r\nexport default function attr (attr, val, ns) {\r\n // act as full getter\r\n if (attr == null) {\r\n // get an object of attributes\r\n attr = {}\r\n val = this.node.attributes\r\n\r\n for (let node of val) {\r\n attr[node.nodeName] = isNumber.test(node.nodeValue)\r\n ? parseFloat(node.nodeValue)\r\n : node.nodeValue\r\n }\r\n\r\n return attr\r\n } else if (attr instanceof Array) {\r\n // loop through array and get all values\r\n return attr.reduce((last, curr) => {\r\n last[curr] = this.attr(curr)\r\n return last\r\n }, {})\r\n } else if (typeof attr === 'object') {\r\n // apply every attribute individually if an object is passed\r\n for (val in attr) this.attr(val, attr[val])\r\n } else if (val === null) {\r\n // remove value\r\n this.node.removeAttribute(attr)\r\n } else if (val == null) {\r\n // act as a getter if the first and only argument is not an object\r\n val = this.node.getAttribute(attr)\r\n return val == null ? defaults[attr]\r\n : isNumber.test(val) ? parseFloat(val)\r\n : val\r\n } else {\r\n // Loop through hooks and execute them to convert value\r\n val = hooks.reduce((_val, hook) => {\r\n return hook(attr, _val, this)\r\n }, val)\r\n\r\n // ensure correct numeric values (also accepts NaN and Infinity)\r\n if (typeof val === 'number') {\r\n val = new SVGNumber(val)\r\n } else if (Color.isColor(val)) {\r\n // ensure full hex color\r\n val = new Color(val)\r\n } else if (val.constructor === Array) {\r\n // Check for plain arrays and parse array values\r\n val = new SVGArray(val)\r\n }\r\n\r\n // if the passed attribute is leading...\r\n if (attr === 'leading') {\r\n // ... call the leading method instead\r\n if (this.leading) {\r\n this.leading(val)\r\n }\r\n } else {\r\n // set given attribute on node\r\n typeof ns === 'string' ? this.node.setAttributeNS(ns, attr, val.toString())\r\n : this.node.setAttribute(attr, val.toString())\r\n }\r\n\r\n // rebuild if required\r\n if (this.rebuild && (attr === 'font-size' || attr === 'x')) {\r\n this.rebuild()\r\n }\r\n }\r\n\r\n return this\r\n}\r\n","import {\r\n adopt,\r\n assignNewId,\r\n eid,\r\n extend,\r\n makeInstance,\r\n makeNode,\r\n register\r\n} from '../utils/adopter.js'\r\nimport { find } from '../modules/core/selector.js'\r\nimport { globals } from '../utils/window.js'\r\nimport { map } from '../utils/utils.js'\r\nimport { ns } from '../modules/core/namespaces.js'\r\nimport EventTarget from '../types/EventTarget.js'\r\nimport List from '../types/List.js'\r\nimport attr from '../modules/core/attr.js'\r\n\r\nexport default class Dom extends EventTarget {\r\n constructor (node, attrs) {\r\n super(node)\r\n this.node = node\r\n this.type = node.nodeName\r\n\r\n if (attrs && node !== attrs) {\r\n this.attr(attrs)\r\n }\r\n }\r\n\r\n // Add given element at a position\r\n add (element, i) {\r\n element = makeInstance(element)\r\n\r\n if (i == null) {\r\n this.node.appendChild(element.node)\r\n } else if (element.node !== this.node.childNodes[i]) {\r\n this.node.insertBefore(element.node, this.node.childNodes[i])\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Add element to given container and return self\r\n addTo (parent) {\r\n return makeInstance(parent).put(this)\r\n }\r\n\r\n // Returns all child elements\r\n children () {\r\n return new List(map(this.node.children, function (node) {\r\n return adopt(node)\r\n }))\r\n }\r\n\r\n // Remove all elements in this container\r\n clear () {\r\n // remove children\r\n while (this.node.hasChildNodes()) {\r\n this.node.removeChild(this.node.lastChild)\r\n }\r\n\r\n // remove defs reference\r\n delete this._defs\r\n\r\n return this\r\n }\r\n\r\n // Clone element\r\n clone () {\r\n // write dom data to the dom so the clone can pickup the data\r\n this.writeDataToDom()\r\n\r\n // clone element and assign new id\r\n return assignNewId(this.node.cloneNode(true))\r\n }\r\n\r\n // Iterates over all children and invokes a given block\r\n each (block, deep) {\r\n var children = this.children()\r\n var i, il\r\n\r\n for (i = 0, il = children.length; i < il; i++) {\r\n block.apply(children[i], [i, children])\r\n\r\n if (deep) {\r\n children[i].each(block, deep)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n element (nodeName) {\r\n return this.put(new Dom(makeNode(nodeName)))\r\n }\r\n\r\n // Get first child\r\n first () {\r\n return adopt(this.node.firstChild)\r\n }\r\n\r\n // Get a element at the given index\r\n get (i) {\r\n return adopt(this.node.childNodes[i])\r\n }\r\n\r\n getEventHolder () {\r\n return this.node\r\n }\r\n\r\n getEventTarget () {\r\n return this.node\r\n }\r\n\r\n // Checks if the given element is a child\r\n has (element) {\r\n return this.index(element) >= 0\r\n }\r\n\r\n // Get / set id\r\n id (id) {\r\n // generate new id if no id set\r\n if (typeof id === 'undefined' && !this.node.id) {\r\n this.node.id = eid(this.type)\r\n }\r\n\r\n // dont't set directly width this.node.id to make `null` work correctly\r\n return this.attr('id', id)\r\n }\r\n\r\n // Gets index of given element\r\n index (element) {\r\n return [].slice.call(this.node.childNodes).indexOf(element.node)\r\n }\r\n\r\n // Get the last child\r\n last () {\r\n return adopt(this.node.lastChild)\r\n }\r\n\r\n // matches the element vs a css selector\r\n matches (selector) {\r\n const el = this.node\r\n return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector)\r\n }\r\n\r\n // Returns the parent element instance\r\n parent (type) {\r\n var parent = this\r\n\r\n // check for parent\r\n if (!parent.node.parentNode) return null\r\n\r\n // get parent element\r\n parent = adopt(parent.node.parentNode)\r\n\r\n if (!type) return parent\r\n\r\n // loop trough ancestors if type is given\r\n while (parent && parent.node instanceof globals.window.SVGElement) { // FIXME: That shouldnt be neccessary\r\n if (typeof type === 'string' ? parent.matches(type) : parent instanceof type) return parent\r\n parent = adopt(parent.node.parentNode)\r\n }\r\n }\r\n\r\n // Basically does the same as `add()` but returns the added element instead\r\n put (element, i) {\r\n this.add(element, i)\r\n return element\r\n }\r\n\r\n // Add element to given container and return container\r\n putIn (parent) {\r\n return makeInstance(parent).add(this)\r\n }\r\n\r\n // Remove element\r\n remove () {\r\n if (this.parent()) {\r\n this.parent().removeElement(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Remove a given child\r\n removeElement (element) {\r\n this.node.removeChild(element.node)\r\n\r\n return this\r\n }\r\n\r\n // Replace this with element\r\n replace (element) {\r\n element = makeInstance(element)\r\n this.node.parentNode.replaceChild(element.node, this.node)\r\n return element\r\n }\r\n\r\n round (precision = 2, map) {\r\n const factor = 10 ** precision\r\n const attrs = this.attr()\r\n\r\n // If we have no map, build one from attrs\r\n if (!map) {\r\n map = Object.keys(attrs)\r\n }\r\n\r\n // Holds rounded attributes\r\n const newAttrs = {}\r\n map.forEach((key) => {\r\n newAttrs[key] = Math.round(attrs[key] * factor) / factor\r\n })\r\n\r\n this.attr(newAttrs)\r\n return this\r\n }\r\n\r\n // Return id on string conversion\r\n toString () {\r\n return this.id()\r\n }\r\n\r\n // Import raw svg\r\n svg (svgOrFn, outerHTML) {\r\n var well, len, fragment\r\n\r\n if (svgOrFn === false) {\r\n outerHTML = false\r\n svgOrFn = null\r\n }\r\n\r\n // act as getter if no svg string is given\r\n if (svgOrFn == null || typeof svgOrFn === 'function') {\r\n // The default for exports is, that the outerNode is included\r\n outerHTML = outerHTML == null ? true : outerHTML\r\n\r\n // write svgjs data to the dom\r\n this.writeDataToDom()\r\n let current = this\r\n\r\n // An export modifier was passed\r\n if (svgOrFn != null) {\r\n current = adopt(current.node.cloneNode(true))\r\n\r\n // If the user wants outerHTML we need to process this node, too\r\n if (outerHTML) {\r\n let result = svgOrFn(current)\r\n current = result || current\r\n\r\n // The user does not want this node? Well, then he gets nothing\r\n if (result === false) return ''\r\n }\r\n\r\n // Deep loop through all children and apply modifier\r\n current.each(function () {\r\n let result = svgOrFn(this)\r\n let _this = result || this\r\n\r\n // If modifier returns false, discard node\r\n if (result === false) {\r\n this.remove()\r\n\r\n // If modifier returns new node, use it\r\n } else if (result && this !== _this) {\r\n this.replace(_this)\r\n }\r\n }, true)\r\n }\r\n\r\n // Return outer or inner content\r\n return outerHTML\r\n ? current.node.outerHTML\r\n : current.node.innerHTML\r\n }\r\n\r\n // Act as setter if we got a string\r\n\r\n // The default for import is, that the current node is not replaced\r\n outerHTML = outerHTML == null ? false : outerHTML\r\n\r\n // Create temporary holder\r\n well = globals.document.createElementNS(ns, 'svg')\r\n fragment = globals.document.createDocumentFragment()\r\n\r\n // Dump raw svg\r\n well.innerHTML = svgOrFn\r\n\r\n // Transplant nodes into the fragment\r\n for (len = well.children.length; len--;) {\r\n fragment.appendChild(well.firstElementChild)\r\n }\r\n\r\n let parent = this.parent()\r\n\r\n // Add the whole fragment at once\r\n return outerHTML\r\n ? this.replace(fragment) && parent\r\n : this.add(fragment)\r\n }\r\n\r\n words (text) {\r\n // This is faster than removing all children and adding a new one\r\n this.node.textContent = text\r\n return this\r\n }\r\n\r\n // write svgjs data to the dom\r\n writeDataToDom () {\r\n // dump variables recursively\r\n this.each(function () {\r\n this.writeDataToDom()\r\n })\r\n\r\n return this\r\n }\r\n}\r\n\r\nextend(Dom, { attr, find })\r\nregister(Dom)\r\n","import { bbox, rbox } from '../types/Box.js'\r\nimport { ctm, screenCTM } from '../types/Matrix.js'\r\nimport {\r\n extend,\r\n getClass,\r\n makeInstance,\r\n register,\r\n root\r\n} from '../utils/adopter.js'\r\nimport { globals } from '../utils/window.js'\r\nimport { point } from '../types/Point.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { reference } from '../modules/core/regex.js'\r\nimport Dom from './Dom.js'\r\nimport List from '../types/List.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\n\r\nconst Svg = getClass(root)\r\n\r\nexport default class Element extends Dom {\r\n constructor (node, attrs) {\r\n super(node, attrs)\r\n\r\n // initialize data object\r\n this.dom = {}\r\n\r\n // create circular reference\r\n this.node.instance = this\r\n\r\n if (node.hasAttribute('svgjs:data')) {\r\n // pull svgjs data from the dom (getAttributeNS doesn't work in html5)\r\n this.setData(JSON.parse(node.getAttribute('svgjs:data')) || {})\r\n }\r\n }\r\n\r\n // Move element by its center\r\n center (x, y) {\r\n return this.cx(x).cy(y)\r\n }\r\n\r\n // Move by center over x-axis\r\n cx (x) {\r\n return x == null ? this.x() + this.width() / 2 : this.x(x - this.width() / 2)\r\n }\r\n\r\n // Move by center over y-axis\r\n cy (y) {\r\n return y == null\r\n ? this.y() + this.height() / 2\r\n : this.y(y - this.height() / 2)\r\n }\r\n\r\n // Get defs\r\n defs () {\r\n return this.root().defs()\r\n }\r\n\r\n // Get parent document\r\n root () {\r\n let p = this.parent(Svg)\r\n return p && p.root()\r\n }\r\n\r\n getEventHolder () {\r\n return this\r\n }\r\n\r\n // Set height of element\r\n height (height) {\r\n return this.attr('height', height)\r\n }\r\n\r\n // Checks whether the given point inside the bounding box of the element\r\n inside (x, y) {\r\n let box = this.bbox()\r\n\r\n return x > box.x &&\r\n y > box.y &&\r\n x < box.x + box.width &&\r\n y < box.y + box.height\r\n }\r\n\r\n // Move element to given x and y values\r\n move (x, y) {\r\n return this.x(x).y(y)\r\n }\r\n\r\n // return array of all ancestors of given type up to the root svg\r\n parents (until = globals.document) {\r\n until = makeInstance(until)\r\n let parents = new List()\r\n let parent = this\r\n\r\n while (\r\n (parent = parent.parent()) &&\r\n parent.node !== until.node &&\r\n parent.node !== globals.document\r\n ) {\r\n parents.push(parent)\r\n }\r\n\r\n return parents\r\n }\r\n\r\n // Get referenced element form attribute value\r\n reference (attr) {\r\n attr = this.attr(attr)\r\n if (!attr) return null\r\n\r\n const m = attr.match(reference)\r\n return m ? makeInstance(m[1]) : null\r\n }\r\n\r\n // set given data to the elements data property\r\n setData (o) {\r\n this.dom = o\r\n return this\r\n }\r\n\r\n // Set element size to given width and height\r\n size (width, height) {\r\n let p = proportionalSize(this, width, height)\r\n\r\n return this\r\n .width(new SVGNumber(p.width))\r\n .height(new SVGNumber(p.height))\r\n }\r\n\r\n // Set width of element\r\n width (width) {\r\n return this.attr('width', width)\r\n }\r\n\r\n // write svgjs data to the dom\r\n writeDataToDom () {\r\n // remove previously set data\r\n this.node.removeAttribute('svgjs:data')\r\n\r\n if (Object.keys(this.dom).length) {\r\n this.node.setAttribute('svgjs:data', JSON.stringify(this.dom)) // see #428\r\n }\r\n\r\n return super.writeDataToDom()\r\n }\r\n\r\n // Move over x-axis\r\n x (x) {\r\n return this.attr('x', x)\r\n }\r\n\r\n // Move over y-axis\r\n y (y) {\r\n return this.attr('y', y)\r\n }\r\n}\r\n\r\nextend(Element, {\r\n bbox, rbox, point, ctm, screenCTM\r\n})\r\n\r\nregister(Element)\r\n","import { on, off } from '../core/event.js'\r\nimport { registerMethods } from '../../utils/methods.js'\r\nimport Color from '../../types/Color.js'\r\nimport Element from '../../elements/Element.js'\r\nimport Matrix from '../../types/Matrix.js'\r\nimport Point from '../../types/Point.js'\r\nimport SVGNumber from '../../types/SVGNumber.js'\r\n\r\n// Define list of available attributes for stroke and fill\r\nvar sugar = {\r\n stroke: ['color', 'width', 'opacity', 'linecap', 'linejoin', 'miterlimit', 'dasharray', 'dashoffset'],\r\n fill: ['color', 'opacity', 'rule'],\r\n prefix: function (t, a) {\r\n return a === 'color' ? t : t + '-' + a\r\n }\r\n}\r\n\r\n// Add sugar for fill and stroke\r\n;['fill', 'stroke'].forEach(function (m) {\r\n var extension = {}\r\n var i\r\n\r\n extension[m] = function (o) {\r\n if (typeof o === 'undefined') {\r\n return this.attr(m)\r\n }\r\n if (typeof o === 'string' || Color.isRgb(o) || (o instanceof Element)) {\r\n this.attr(m, o)\r\n } else {\r\n // set all attributes from sugar.fill and sugar.stroke list\r\n for (i = sugar[m].length - 1; i >= 0; i--) {\r\n if (o[sugar[m][i]] != null) {\r\n this.attr(sugar.prefix(m, sugar[m][i]), o[sugar[m][i]])\r\n }\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n registerMethods(['Shape', 'Runner'], extension)\r\n})\r\n\r\nregisterMethods(['Element', 'Runner'], {\r\n // Let the user set the matrix directly\r\n matrix: function (mat, b, c, d, e, f) {\r\n // Act as a getter\r\n if (mat == null) {\r\n return new Matrix(this)\r\n }\r\n\r\n // Act as a setter, the user can pass a matrix or a set of numbers\r\n return this.attr('transform', new Matrix(mat, b, c, d, e, f))\r\n },\r\n\r\n // Map rotation to transform\r\n rotate: function (angle, cx, cy) {\r\n return this.transform({ rotate: angle, ox: cx, oy: cy }, true)\r\n },\r\n\r\n // Map skew to transform\r\n skew: function (x, y, cx, cy) {\r\n return arguments.length === 1 || arguments.length === 3\r\n ? this.transform({ skew: x, ox: y, oy: cx }, true)\r\n : this.transform({ skew: [x, y], ox: cx, oy: cy }, true)\r\n },\r\n\r\n shear: function (lam, cx, cy) {\r\n return this.transform({ shear: lam, ox: cx, oy: cy }, true)\r\n },\r\n\r\n // Map scale to transform\r\n scale: function (x, y, cx, cy) {\r\n return arguments.length === 1 || arguments.length === 3\r\n ? this.transform({ scale: x, ox: y, oy: cx }, true)\r\n : this.transform({ scale: [x, y], ox: cx, oy: cy }, true)\r\n },\r\n\r\n // Map translate to transform\r\n translate: function (x, y) {\r\n return this.transform({ translate: [x, y] }, true)\r\n },\r\n\r\n // Map relative translations to transform\r\n relative: function (x, y) {\r\n return this.transform({ relative: [x, y] }, true)\r\n },\r\n\r\n // Map flip to transform\r\n flip: function (direction, around) {\r\n var directionString = typeof direction === 'string' ? direction\r\n : isFinite(direction) ? 'both'\r\n : 'both'\r\n var origin = (direction === 'both' && isFinite(around)) ? [around, around]\r\n : (direction === 'x') ? [around, 0]\r\n : (direction === 'y') ? [0, around]\r\n : isFinite(direction) ? [direction, direction]\r\n : [0, 0]\r\n this.transform({ flip: directionString, origin: origin }, true)\r\n },\r\n\r\n // Opacity\r\n opacity: function (value) {\r\n return this.attr('opacity', value)\r\n },\r\n\r\n // Relative move over x and y axes\r\n dmove: function (x, y) {\r\n return this.dx(x).dy(y)\r\n }\r\n})\r\n\r\nregisterMethods('Element', {\r\n // Relative move over x axis\r\n dx: function (x) {\r\n return this.x(new SVGNumber(x).plus(this.x()))\r\n },\r\n\r\n // Relative move over y axis\r\n dy: function (y) {\r\n return this.y(new SVGNumber(y).plus(this.y()))\r\n }\r\n})\r\n\r\nregisterMethods('radius', {\r\n // Add x and y radius\r\n radius: function (x, y) {\r\n var type = (this._element || this).type\r\n return type === 'radialGradient' || type === 'radialGradient'\r\n ? this.attr('r', new SVGNumber(x))\r\n : this.rx(x).ry(y == null ? x : y)\r\n }\r\n})\r\n\r\nregisterMethods('Path', {\r\n // Get path length\r\n length: function () {\r\n return this.node.getTotalLength()\r\n },\r\n // Get point at length\r\n pointAt: function (length) {\r\n return new Point(this.node.getPointAtLength(length))\r\n }\r\n})\r\n\r\nregisterMethods(['Element', 'Runner'], {\r\n // Set font\r\n font: function (a, v) {\r\n if (typeof a === 'object') {\r\n for (v in a) this.font(v, a[v])\r\n }\r\n\r\n return a === 'leading'\r\n ? this.leading(v)\r\n : a === 'anchor'\r\n ? this.attr('text-anchor', v)\r\n : a === 'size' || a === 'family' || a === 'weight' || a === 'stretch' || a === 'variant' || a === 'style'\r\n ? this.attr('font-' + a, v)\r\n : this.attr(a, v)\r\n }\r\n})\r\n\r\nregisterMethods('Text', {\r\n ax (x) {\r\n return this.attr('x', x)\r\n },\r\n ay (y) {\r\n return this.attr('y', y)\r\n },\r\n amove (x, y) {\r\n return this.ax(x).ay(y)\r\n }\r\n})\r\n\r\n// Add events to elements\r\nconst methods = [ 'click',\r\n 'dblclick',\r\n 'mousedown',\r\n 'mouseup',\r\n 'mouseover',\r\n 'mouseout',\r\n 'mousemove',\r\n 'mouseenter',\r\n 'mouseleave',\r\n 'touchstart',\r\n 'touchmove',\r\n 'touchleave',\r\n 'touchend',\r\n 'touchcancel' ].reduce(function (last, event) {\r\n // add event to Element\r\n const fn = function (f) {\r\n if (f === null) {\r\n off(this, event)\r\n } else {\r\n on(this, event, f)\r\n }\r\n return this\r\n }\r\n\r\n last[event] = fn\r\n return last\r\n}, {})\r\n\r\nregisterMethods('Element', methods)\r\n","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) { return parseFloat(str) })\r\n ]\r\n })\r\n .reverse()\r\n // merge every transformation into one matrix\r\n .reduce(function (matrix, transform) {\r\n if (transform[0] === 'matrix') {\r\n return matrix.lmultiply(Matrix.fromArray(transform[1]))\r\n }\r\n return matrix[transform[0]].apply(matrix, transform[1])\r\n }, new Matrix())\r\n\r\n return matrix\r\n}\r\n\r\n// add an element to another parent without changing the visual representation on the screen\r\nexport function toParent (parent) {\r\n if (this === parent) return this\r\n var ctm = this.screenCTM()\r\n var pCtm = parent.screenCTM().inverse()\r\n\r\n this.addTo(parent).untransform().transform(pCtm.multiply(ctm))\r\n\r\n return this\r\n}\r\n\r\n// same as above with parent equals root-svg\r\nexport function toRoot () {\r\n return this.toParent(this.root())\r\n}\r\n\r\n// Add transformations\r\nexport function transform (o, relative) {\r\n // Act as a getter if no object was passed\r\n if (o == null || typeof o === 'string') {\r\n var decomposed = new Matrix(this).decompose()\r\n return decomposed[o] || decomposed\r\n }\r\n\r\n if (!Matrix.isMatrixLike(o)) {\r\n // Set the origin according to the defined transform\r\n o = { ...o, origin: getOrigin(o, this) }\r\n }\r\n\r\n // The user can pass a boolean, an Element or an Matrix or nothing\r\n var cleanRelative = relative === true ? this : (relative || false)\r\n var result = new Matrix(cleanRelative).transform(o)\r\n return this.attr('transform', result)\r\n}\r\n\r\nregisterMethods('Element', {\r\n untransform, matrixify, toParent, toRoot, transform\r\n})\r\n","import { register } from '../utils/adopter.js'\r\nimport Element from './Element.js'\r\n\r\nexport default class Shape extends Element {}\r\n\r\nregister(Shape)\r\n","import { cx, cy, height, width, x, y } from '../modules/core/circled.js'\r\nimport {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Shape from './Shape.js'\r\n\r\nexport default class Circle extends Shape {\r\n constructor (node) {\r\n super(nodeOrNew('circle', node), node)\r\n }\r\n\r\n radius (r) {\r\n return this.attr('r', r)\r\n }\r\n\r\n // Radius x value\r\n rx (rx) {\r\n return this.attr('r', rx)\r\n }\r\n\r\n // Alias radius x value\r\n ry (ry) {\r\n return this.rx(ry)\r\n }\r\n\r\n size (size) {\r\n return this.radius(new SVGNumber(size).divide(2))\r\n }\r\n}\r\n\r\nextend(Circle, { x, y, cx, cy, width, height })\r\n\r\nregisterMethods({\r\n Element: {\r\n // Create circle element\r\n circle: wrapWithAttrCheck(function (size) {\r\n return this.put(new Circle())\r\n .size(size)\r\n .move(0, 0)\r\n })\r\n }\r\n})\r\n\r\nregister(Circle)\r\n","import { register } from '../utils/adopter.js'\r\nimport Element from './Element.js'\r\n\r\nexport default class Container extends Element {\r\n flatten (parent) {\r\n this.each(function () {\r\n if (this instanceof Container) return this.flatten(parent).ungroup(parent)\r\n return this.toParent(parent)\r\n })\r\n\r\n // we need this so that the root does not get removed\r\n this.node.firstElementChild || this.remove()\r\n\r\n return this\r\n }\r\n\r\n ungroup (parent) {\r\n parent = parent || this.parent()\r\n\r\n this.each(function () {\r\n return this.toParent(parent)\r\n })\r\n\r\n this.remove()\r\n\r\n return this\r\n }\r\n}\r\n\r\nregister(Container)\r\n","import { nodeOrNew, register } from '../utils/adopter.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class Defs extends Container {\r\n constructor (node) {\r\n super(nodeOrNew('defs', node), node)\r\n }\r\n\r\n flatten () { return this }\r\n ungroup () { return this }\r\n}\r\n\r\nregister(Defs)\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Shape from './Shape.js'\r\nimport * as circled from '../modules/core/circled.js'\r\n\r\nexport default class Ellipse extends Shape {\r\n constructor (node) {\r\n super(nodeOrNew('ellipse', node), node)\r\n }\r\n\r\n size (width, height) {\r\n var p = proportionalSize(this, width, height)\r\n\r\n return this\r\n .rx(new SVGNumber(p.width).divide(2))\r\n .ry(new SVGNumber(p.height).divide(2))\r\n }\r\n}\r\n\r\nextend(Ellipse, circled)\r\n\r\nregisterMethods('Container', {\r\n // Create an ellipse\r\n ellipse: wrapWithAttrCheck(function (width, height) {\r\n return this.put(new Ellipse()).size(width, height).move(0, 0)\r\n })\r\n})\r\n\r\nregister(Ellipse)\r\n","import { nodeOrNew, register } from '../utils/adopter.js'\r\nimport Element from './Element.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\n\r\nexport default class Stop extends Element {\r\n constructor (node) {\r\n super(nodeOrNew('stop', node), node)\r\n }\r\n\r\n // add color stops\r\n update (o) {\r\n if (typeof o === 'number' || o instanceof SVGNumber) {\r\n o = {\r\n offset: arguments[0],\r\n color: arguments[1],\r\n opacity: arguments[2]\r\n }\r\n }\r\n\r\n // set attributes\r\n if (o.opacity != null) this.attr('stop-opacity', o.opacity)\r\n if (o.color != null) this.attr('stop-color', o.color)\r\n if (o.offset != null) this.attr('offset', new SVGNumber(o.offset))\r\n\r\n return this\r\n }\r\n}\r\n\r\nregister(Stop)\r\n","import SVGNumber from '../../types/SVGNumber.js'\r\n\r\nexport function from (x, y) {\r\n return (this._element || this).type === 'radialGradient'\r\n ? this.attr({ fx: new SVGNumber(x), fy: new SVGNumber(y) })\r\n : this.attr({ x1: new SVGNumber(x), y1: new SVGNumber(y) })\r\n}\r\n\r\nexport function to (x, y) {\r\n return (this._element || this).type === 'radialGradient'\r\n ? this.attr({ cx: new SVGNumber(x), cy: new SVGNumber(y) })\r\n : this.attr({ x2: new SVGNumber(x), y2: new SVGNumber(y) })\r\n}\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Box from '../types/Box.js'\r\nimport Container from './Container.js'\r\nimport Stop from './Stop.js'\r\nimport baseFind from '../modules/core/selector.js'\r\nimport * as gradiented from '../modules/core/gradiented.js'\r\n\r\nexport default class Gradient extends Container {\r\n constructor (type, attrs) {\r\n super(\r\n nodeOrNew(type + 'Gradient', typeof type === 'string' ? null : type),\r\n attrs\r\n )\r\n }\r\n\r\n // Add a color stop\r\n stop (offset, color, opacity) {\r\n return this.put(new Stop()).update(offset, color, opacity)\r\n }\r\n\r\n // Update gradient\r\n update (block) {\r\n // remove all stops\r\n this.clear()\r\n\r\n // invoke passed block\r\n if (typeof block === 'function') {\r\n block.call(this, this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Return the fill id\r\n url () {\r\n return 'url(#' + this.id() + ')'\r\n }\r\n\r\n // Alias string convertion to fill\r\n toString () {\r\n return this.url()\r\n }\r\n\r\n // custom attr to handle transform\r\n attr (a, b, c) {\r\n if (a === 'transform') a = 'gradientTransform'\r\n return super.attr(a, b, c)\r\n }\r\n\r\n targets () {\r\n return baseFind('svg [fill*=\"' + this.id() + '\"]')\r\n }\r\n\r\n bbox () {\r\n return new Box()\r\n }\r\n}\r\n\r\nextend(Gradient, gradiented)\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create gradient element in defs\r\n gradient: wrapWithAttrCheck(function (type, block) {\r\n return this.defs().gradient(type, block)\r\n })\r\n },\r\n // define gradient\r\n Defs: {\r\n gradient: wrapWithAttrCheck(function (type, block) {\r\n return this.put(new Gradient(type)).update(block)\r\n })\r\n }\r\n})\r\n\r\nregister(Gradient)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Box from '../types/Box.js'\r\nimport Container from './Container.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class Pattern extends Container {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('pattern', node), node)\r\n }\r\n\r\n // Return the fill id\r\n url () {\r\n return 'url(#' + this.id() + ')'\r\n }\r\n\r\n // Update pattern by rebuilding\r\n update (block) {\r\n // remove content\r\n this.clear()\r\n\r\n // invoke passed block\r\n if (typeof block === 'function') {\r\n block.call(this, this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Alias string convertion to fill\r\n toString () {\r\n return this.url()\r\n }\r\n\r\n // custom attr to handle transform\r\n attr (a, b, c) {\r\n if (a === 'transform') a = 'patternTransform'\r\n return super.attr(a, b, c)\r\n }\r\n\r\n targets () {\r\n return baseFind('svg [fill*=\"' + this.id() + '\"]')\r\n }\r\n\r\n bbox () {\r\n return new Box()\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create pattern element in defs\r\n pattern (...args) {\r\n return this.defs().pattern(...args)\r\n }\r\n },\r\n Defs: {\r\n pattern: wrapWithAttrCheck(function (width, height, block) {\r\n return this.put(new Pattern()).update(block).attr({\r\n x: 0,\r\n y: 0,\r\n width: width,\r\n height: height,\r\n patternUnits: 'userSpaceOnUse'\r\n })\r\n })\r\n }\r\n})\r\n\r\nregister(Pattern)\r\n","import { isImage } from '../modules/core/regex.js'\r\nimport { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { off, on } from '../modules/core/event.js'\r\nimport { registerAttrHook } from '../modules/core/attr.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Pattern from './Pattern.js'\r\nimport Shape from './Shape.js'\r\nimport { globals } from '../utils/window.js'\r\n\r\nexport default class Image extends Shape {\r\n constructor (node) {\r\n super(nodeOrNew('image', node), node)\r\n }\r\n\r\n // (re)load image\r\n load (url, callback) {\r\n if (!url) return this\r\n\r\n var img = new globals.window.Image()\r\n\r\n on(img, 'load', function (e) {\r\n var p = this.parent(Pattern)\r\n\r\n // ensure image size\r\n if (this.width() === 0 && this.height() === 0) {\r\n this.size(img.width, img.height)\r\n }\r\n\r\n if (p instanceof Pattern) {\r\n // ensure pattern size if not set\r\n if (p.width() === 0 && p.height() === 0) {\r\n p.size(this.width(), this.height())\r\n }\r\n }\r\n\r\n if (typeof callback === 'function') {\r\n callback.call(this, e)\r\n }\r\n }, this)\r\n\r\n on(img, 'load error', function () {\r\n // dont forget to unbind memory leaking events\r\n off(img)\r\n })\r\n\r\n return this.attr('href', (img.src = url), xlink)\r\n }\r\n}\r\n\r\nregisterAttrHook(function (attr, val, _this) {\r\n // convert image fill and stroke to patterns\r\n if (attr === 'fill' || attr === 'stroke') {\r\n if (isImage.test(val)) {\r\n val = _this.root().defs().image(val)\r\n }\r\n }\r\n\r\n if (val instanceof Image) {\r\n val = _this.root().defs().pattern(0, 0, (pattern) => {\r\n pattern.add(val)\r\n })\r\n }\r\n\r\n return val\r\n})\r\n\r\nregisterMethods({\r\n Container: {\r\n // create image element, load image and set its size\r\n image: wrapWithAttrCheck(function (source, callback) {\r\n return this.put(new Image()).size(0, 0).load(source, callback)\r\n })\r\n }\r\n})\r\n\r\nregister(Image)\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { extend } from '../utils/adopter.js'\r\nimport { subClassArray } from './ArrayPolyfill.js'\r\nimport SVGArray from './SVGArray.js'\r\n\r\nconst PointArray = subClassArray('PointArray', SVGArray)\r\n\r\nexport default PointArray\r\n\r\nextend(PointArray, {\r\n // Convert array to string\r\n toString () {\r\n // convert to a poly point string\r\n for (var i = 0, il = this.length, array = []; i < il; i++) {\r\n array.push(this[i].join(','))\r\n }\r\n\r\n return array.join(' ')\r\n },\r\n\r\n // Convert array to line object\r\n toLine () {\r\n return {\r\n x1: this[0][0],\r\n y1: this[0][1],\r\n x2: this[1][0],\r\n y2: this[1][1]\r\n }\r\n },\r\n\r\n // Get morphed array at given position\r\n at (pos) {\r\n // make sure a destination is defined\r\n if (!this.destination) return this\r\n\r\n // generate morphed point string\r\n for (var i = 0, il = this.length, array = []; i < il; i++) {\r\n array.push([\r\n this[i][0] + (this.destination[i][0] - this[i][0]) * pos,\r\n this[i][1] + (this.destination[i][1] - this[i][1]) * pos\r\n ])\r\n }\r\n\r\n return new PointArray(array)\r\n },\r\n\r\n // Parse point string and flat array\r\n parse (array = [[0, 0]]) {\r\n var points = []\r\n\r\n // if it is an array\r\n if (array instanceof Array) {\r\n // and it is not flat, there is no need to parse it\r\n if (array[0] instanceof Array) {\r\n return array\r\n }\r\n } else { // Else, it is considered as a string\r\n // parse points\r\n array = array.trim().split(delimiter).map(parseFloat)\r\n }\r\n\r\n // validate points - https://svgwg.org/svg2-draft/shapes.html#DataTypePoints\r\n // Odd number of coordinates is an error. In such cases, drop the last odd coordinate.\r\n if (array.length % 2 !== 0) array.pop()\r\n\r\n // wrap points in two-tuples and parse points as floats\r\n for (var i = 0, len = array.length; i < len; i = i + 2) {\r\n points.push([ array[i], array[i + 1] ])\r\n }\r\n\r\n return points\r\n },\r\n\r\n // Move point string\r\n move (x, y) {\r\n var box = this.bbox()\r\n\r\n // get relative offset\r\n x -= box.x\r\n y -= box.y\r\n\r\n // move every point\r\n if (!isNaN(x) && !isNaN(y)) {\r\n for (var i = this.length - 1; i >= 0; i--) {\r\n this[i] = [this[i][0] + x, this[i][1] + y]\r\n }\r\n }\r\n\r\n return this\r\n },\r\n\r\n // Resize poly string\r\n size (width, height) {\r\n var i\r\n var box = this.bbox()\r\n\r\n // recalculate position of all points according to new size\r\n for (i = this.length - 1; i >= 0; i--) {\r\n if (box.width) this[i][0] = ((this[i][0] - box.x) * width) / box.width + box.x\r\n if (box.height) this[i][1] = ((this[i][1] - box.y) * height) / box.height + box.y\r\n }\r\n\r\n return this\r\n },\r\n\r\n // Get bounding box of points\r\n bbox () {\r\n var maxX = -Infinity\r\n var maxY = -Infinity\r\n var minX = Infinity\r\n var minY = Infinity\r\n this.forEach(function (el) {\r\n maxX = Math.max(el[0], maxX)\r\n maxY = Math.max(el[1], maxY)\r\n minX = Math.min(el[0], minX)\r\n minY = Math.min(el[1], minY)\r\n })\r\n return { x: minX, y: minY, width: maxX - minX, height: maxY - minY }\r\n }\r\n})\r\n","import PointArray from '../../types/PointArray.js'\r\n\r\nexport let MorphArray = PointArray\r\n\r\n// Move by left top corner over x-axis\r\nexport function x (x) {\r\n return x == null ? this.bbox().x : this.move(x, this.bbox().y)\r\n}\r\n\r\n// Move by left top corner over y-axis\r\nexport function y (y) {\r\n return y == null ? this.bbox().y : this.move(this.bbox().x, y)\r\n}\r\n\r\n// Set width of element\r\nexport function width (width) {\r\n let b = this.bbox()\r\n return width == null ? b.width : this.size(width, b.height)\r\n}\r\n\r\n// Set height of element\r\nexport function height (height) {\r\n let b = this.bbox()\r\n return height == null ? b.height : this.size(b.width, height)\r\n}\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PointArray from '../types/PointArray.js'\r\nimport Shape from './Shape.js'\r\nimport * as pointed from '../modules/core/pointed.js'\r\n\r\nexport default class Line extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('line', node), node)\r\n }\r\n\r\n // Get array\r\n array () {\r\n return new PointArray([\r\n [ this.attr('x1'), this.attr('y1') ],\r\n [ this.attr('x2'), this.attr('y2') ]\r\n ])\r\n }\r\n\r\n // Overwrite native plot() method\r\n plot (x1, y1, x2, y2) {\r\n if (x1 == null) {\r\n return this.array()\r\n } else if (typeof y1 !== 'undefined') {\r\n x1 = { x1: x1, y1: y1, x2: x2, y2: y2 }\r\n } else {\r\n x1 = new PointArray(x1).toLine()\r\n }\r\n\r\n return this.attr(x1)\r\n }\r\n\r\n // Move by left top corner\r\n move (x, y) {\r\n return this.attr(this.array().move(x, y).toLine())\r\n }\r\n\r\n // Set element size to given width and height\r\n size (width, height) {\r\n var p = proportionalSize(this, width, height)\r\n return this.attr(this.array().size(p.width, p.height).toLine())\r\n }\r\n}\r\n\r\nextend(Line, pointed)\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a line element\r\n line: wrapWithAttrCheck(function (...args) {\r\n // make sure plot is called as a setter\r\n // x1 is not necessarily a number, it can also be an array, a string and a PointArray\r\n return Line.prototype.plot.apply(\r\n this.put(new Line())\r\n , args[0] != null ? args : [0, 0, 0, 0]\r\n )\r\n })\r\n }\r\n})\r\n\r\nregister(Line)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class Marker extends Container {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('marker', node), node)\r\n }\r\n\r\n // Set width of element\r\n width (width) {\r\n return this.attr('markerWidth', width)\r\n }\r\n\r\n // Set height of element\r\n height (height) {\r\n return this.attr('markerHeight', height)\r\n }\r\n\r\n // Set marker refX and refY\r\n ref (x, y) {\r\n return this.attr('refX', x).attr('refY', y)\r\n }\r\n\r\n // Update marker\r\n update (block) {\r\n // remove all content\r\n this.clear()\r\n\r\n // invoke passed block\r\n if (typeof block === 'function') { block.call(this, this) }\r\n\r\n return this\r\n }\r\n\r\n // Return the fill id\r\n toString () {\r\n return 'url(#' + this.id() + ')'\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n marker (...args) {\r\n // Create marker element in defs\r\n return this.defs().marker(...args)\r\n }\r\n },\r\n Defs: {\r\n // Create marker\r\n marker: wrapWithAttrCheck(function (width, height, block) {\r\n // Set default viewbox to match the width and height, set ref to cx and cy and set orient to auto\r\n return this.put(new Marker())\r\n .size(width, height)\r\n .ref(width / 2, height / 2)\r\n .viewbox(0, 0, width, height)\r\n .attr('orient', 'auto')\r\n .update(block)\r\n })\r\n },\r\n marker: {\r\n // Create and attach markers\r\n marker (marker, width, height, block) {\r\n var attr = ['marker']\r\n\r\n // Build attribute name\r\n if (marker !== 'all') attr.push(marker)\r\n attr = attr.join('-')\r\n\r\n // Set marker attribute\r\n marker = arguments[1] instanceof Marker\r\n ? arguments[1]\r\n : this.defs().marker(width, height, block)\r\n\r\n return this.attr(attr, marker)\r\n }\r\n }\r\n})\r\n\r\nregister(Marker)\r\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","import { timeline } from '../modules/core/defaults.js'\r\nimport { extend } from '../utils/adopter.js'\r\n\r\n/***\r\nBase Class\r\n==========\r\nThe base stepper class that will be\r\n***/\r\n\r\nfunction makeSetterGetter (k, f) {\r\n return function (v) {\r\n if (v == null) return this[v]\r\n this[k] = v\r\n if (f) f.call(this)\r\n return this\r\n }\r\n}\r\n\r\nexport let easing = {\r\n '-': function (pos) { return pos },\r\n '<>': function (pos) { return -Math.cos(pos * Math.PI) / 2 + 0.5 },\r\n '>': function (pos) { return Math.sin(pos * Math.PI / 2) },\r\n '<': function (pos) { return -Math.cos(pos * Math.PI / 2) + 1 },\r\n bezier: function (x1, y1, x2, y2) {\r\n // see https://www.w3.org/TR/css-easing-1/#cubic-bezier-algo\r\n return function (t) {\r\n if (t < 0) {\r\n if (x1 > 0) {\r\n return y1 / x1 * t\r\n } else if (x2 > 0) {\r\n return y2 / x2 * t\r\n } else {\r\n return 0\r\n }\r\n } else if (t > 1) {\r\n if (x2 < 1) {\r\n return (1 - y2) / (1 - x2) * t + (y2 - x2) / (1 - x2)\r\n } else if (x1 < 1) {\r\n return (1 - y1) / (1 - x1) * t + (y1 - x1) / (1 - x1)\r\n } else {\r\n return 1\r\n }\r\n } else {\r\n return 3 * t * (1 - t) ** 2 * y1 + 3 * t ** 2 * (1 - t) * y2 + t ** 3\r\n }\r\n }\r\n },\r\n // see https://www.w3.org/TR/css-easing-1/#step-timing-function-algo\r\n steps: function (steps, stepPosition = 'end') {\r\n // deal with \"jump-\" prefix\r\n stepPosition = stepPosition.split('-').reverse()[0]\r\n\r\n let jumps = steps\r\n if (stepPosition === 'none') {\r\n --jumps\r\n } else if (stepPosition === 'both') {\r\n ++jumps\r\n }\r\n\r\n // The beforeFlag is essentially useless\r\n return (t, beforeFlag = false) => {\r\n // Step is called currentStep in referenced url\r\n let step = Math.floor(t * steps)\r\n const jumping = (t * step) % 1 === 0\r\n\r\n if (stepPosition === 'start' || stepPosition === 'both') {\r\n ++step\r\n }\r\n\r\n if (beforeFlag && jumping) {\r\n --step\r\n }\r\n\r\n if (t >= 0 && step < 0) {\r\n step = 0\r\n }\r\n\r\n if (t <= 1 && step > jumps) {\r\n step = jumps\r\n }\r\n\r\n return step / jumps\r\n }\r\n }\r\n}\r\n\r\nexport class Stepper {\r\n done () { return false }\r\n}\r\n\r\n/***\r\nEasing Functions\r\n================\r\n***/\r\n\r\nexport class Ease extends Stepper {\r\n constructor (fn) {\r\n super()\r\n this.ease = easing[fn || timeline.ease] || fn\r\n }\r\n\r\n step (from, to, pos) {\r\n if (typeof from !== 'number') {\r\n return pos < 1 ? from : to\r\n }\r\n return from + (to - from) * this.ease(pos)\r\n }\r\n}\r\n\r\n/***\r\nController Types\r\n================\r\n***/\r\n\r\nexport class Controller extends Stepper {\r\n constructor (fn) {\r\n super()\r\n this.stepper = fn\r\n }\r\n\r\n step (current, target, dt, c) {\r\n return this.stepper(current, target, dt, c)\r\n }\r\n\r\n done (c) {\r\n return c.done\r\n }\r\n}\r\n\r\nfunction recalculate () {\r\n // Apply the default parameters\r\n var duration = (this._duration || 500) / 1000\r\n var overshoot = this._overshoot || 0\r\n\r\n // Calculate the PID natural response\r\n var eps = 1e-10\r\n var pi = Math.PI\r\n var os = Math.log(overshoot / 100 + eps)\r\n var zeta = -os / Math.sqrt(pi * pi + os * os)\r\n var wn = 3.9 / (zeta * duration)\r\n\r\n // Calculate the Spring values\r\n this.d = 2 * zeta * wn\r\n this.k = wn * wn\r\n}\r\n\r\nexport class Spring extends Controller {\r\n constructor (duration, overshoot) {\r\n super()\r\n this.duration(duration || 500)\r\n .overshoot(overshoot || 0)\r\n }\r\n\r\n step (current, target, dt, c) {\r\n if (typeof current === 'string') return current\r\n c.done = dt === Infinity\r\n if (dt === Infinity) return target\r\n if (dt === 0) return current\r\n\r\n if (dt > 100) dt = 16\r\n\r\n dt /= 1000\r\n\r\n // Get the previous velocity\r\n var velocity = c.velocity || 0\r\n\r\n // Apply the control to get the new position and store it\r\n var acceleration = -this.d * velocity - this.k * (current - target)\r\n var newPosition = current +\r\n velocity * dt +\r\n acceleration * dt * dt / 2\r\n\r\n // Store the velocity\r\n c.velocity = velocity + acceleration * dt\r\n\r\n // Figure out if we have converged, and if so, pass the value\r\n c.done = Math.abs(target - newPosition) + Math.abs(velocity) < 0.002\r\n return c.done ? target : newPosition\r\n }\r\n}\r\n\r\nextend(Spring, {\r\n duration: makeSetterGetter('_duration', recalculate),\r\n overshoot: makeSetterGetter('_overshoot', recalculate)\r\n})\r\n\r\nexport class PID extends Controller {\r\n constructor (p, i, d, windup) {\r\n super()\r\n\r\n p = p == null ? 0.1 : p\r\n i = i == null ? 0.01 : i\r\n d = d == null ? 0 : d\r\n windup = windup == null ? 1000 : windup\r\n this.p(p).i(i).d(d).windup(windup)\r\n }\r\n\r\n step (current, target, dt, c) {\r\n if (typeof current === 'string') return current\r\n c.done = dt === Infinity\r\n\r\n if (dt === Infinity) return target\r\n if (dt === 0) return current\r\n\r\n var p = target - current\r\n var i = (c.integral || 0) + p * dt\r\n var d = (p - (c.error || 0)) / dt\r\n var windup = this.windup\r\n\r\n // antiwindup\r\n if (windup !== false) {\r\n i = Math.max(-windup, Math.min(i, windup))\r\n }\r\n\r\n c.error = p\r\n c.integral = i\r\n\r\n c.done = Math.abs(p) < 0.001\r\n\r\n return c.done ? target : current + (this.P * p + this.I * i + this.D * d)\r\n }\r\n}\r\n\r\nextend(PID, {\r\n windup: makeSetterGetter('windup'),\r\n p: makeSetterGetter('P'),\r\n i: makeSetterGetter('I'),\r\n d: makeSetterGetter('D')\r\n})\r\n","import {\r\n delimiter,\r\n dots,\r\n hyphen,\r\n isPathLetter,\r\n numbersWithDots,\r\n pathLetters\r\n} from '../modules/core/regex.js'\r\nimport { extend } from '../utils/adopter.js'\r\nimport { subClassArray } from './ArrayPolyfill.js'\r\nimport Point from './Point.js'\r\nimport SVGArray from './SVGArray.js'\r\nimport parser from '../modules/core/parser.js'\r\n\r\nconst PathArray = subClassArray('PathArray', SVGArray)\r\n\r\nexport default PathArray\r\n\r\nexport function pathRegReplace (a, b, c, d) {\r\n return c + d.replace(dots, ' .')\r\n}\r\n\r\nfunction arrayToString (a) {\r\n for (var i = 0, il = a.length, s = ''; i < il; i++) {\r\n s += a[i][0]\r\n\r\n if (a[i][1] != null) {\r\n s += a[i][1]\r\n\r\n if (a[i][2] != null) {\r\n s += ' '\r\n s += a[i][2]\r\n\r\n if (a[i][3] != null) {\r\n s += ' '\r\n s += a[i][3]\r\n s += ' '\r\n s += a[i][4]\r\n\r\n if (a[i][5] != null) {\r\n s += ' '\r\n s += a[i][5]\r\n s += ' '\r\n s += a[i][6]\r\n\r\n if (a[i][7] != null) {\r\n s += ' '\r\n s += a[i][7]\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return s + ' '\r\n}\r\n\r\nconst pathHandlers = {\r\n M: function (c, p, p0) {\r\n p.x = p0.x = c[0]\r\n p.y = p0.y = c[1]\r\n\r\n return ['M', p.x, p.y]\r\n },\r\n L: function (c, p) {\r\n p.x = c[0]\r\n p.y = c[1]\r\n return ['L', c[0], c[1]]\r\n },\r\n H: function (c, p) {\r\n p.x = c[0]\r\n return ['H', c[0]]\r\n },\r\n V: function (c, p) {\r\n p.y = c[0]\r\n return ['V', c[0]]\r\n },\r\n C: function (c, p) {\r\n p.x = c[4]\r\n p.y = c[5]\r\n return ['C', c[0], c[1], c[2], c[3], c[4], c[5]]\r\n },\r\n S: function (c, p) {\r\n p.x = c[2]\r\n p.y = c[3]\r\n return ['S', c[0], c[1], c[2], c[3]]\r\n },\r\n Q: function (c, p) {\r\n p.x = c[2]\r\n p.y = c[3]\r\n return ['Q', c[0], c[1], c[2], c[3]]\r\n },\r\n T: function (c, p) {\r\n p.x = c[0]\r\n p.y = c[1]\r\n return ['T', c[0], c[1]]\r\n },\r\n Z: function (c, p, p0) {\r\n p.x = p0.x\r\n p.y = p0.y\r\n return ['Z']\r\n },\r\n A: function (c, p) {\r\n p.x = c[5]\r\n p.y = c[6]\r\n return ['A', c[0], c[1], c[2], c[3], c[4], c[5], c[6]]\r\n }\r\n}\r\n\r\nlet mlhvqtcsaz = 'mlhvqtcsaz'.split('')\r\n\r\nfor (var i = 0, il = mlhvqtcsaz.length; i < il; ++i) {\r\n pathHandlers[mlhvqtcsaz[i]] = (function (i) {\r\n return function (c, p, p0) {\r\n if (i === 'H') c[0] = c[0] + p.x\r\n else if (i === 'V') c[0] = c[0] + p.y\r\n else if (i === 'A') {\r\n c[5] = c[5] + p.x\r\n c[6] = c[6] + p.y\r\n } else {\r\n for (var j = 0, jl = c.length; j < jl; ++j) {\r\n c[j] = c[j] + (j % 2 ? p.y : p.x)\r\n }\r\n }\r\n\r\n return pathHandlers[i](c, p, p0)\r\n }\r\n })(mlhvqtcsaz[i].toUpperCase())\r\n}\r\n\r\nextend(PathArray, {\r\n // Convert array to string\r\n toString () {\r\n return arrayToString(this)\r\n },\r\n\r\n // Move path string\r\n move (x, y) {\r\n // get bounding box of current situation\r\n var box = this.bbox()\r\n\r\n // get relative offset\r\n x -= box.x\r\n y -= box.y\r\n\r\n if (!isNaN(x) && !isNaN(y)) {\r\n // move every point\r\n for (var l, i = this.length - 1; i >= 0; i--) {\r\n l = this[i][0]\r\n\r\n if (l === 'M' || l === 'L' || l === 'T') {\r\n this[i][1] += x\r\n this[i][2] += y\r\n } else if (l === 'H') {\r\n this[i][1] += x\r\n } else if (l === 'V') {\r\n this[i][1] += y\r\n } else if (l === 'C' || l === 'S' || l === 'Q') {\r\n this[i][1] += x\r\n this[i][2] += y\r\n this[i][3] += x\r\n this[i][4] += y\r\n\r\n if (l === 'C') {\r\n this[i][5] += x\r\n this[i][6] += y\r\n }\r\n } else if (l === 'A') {\r\n this[i][6] += x\r\n this[i][7] += y\r\n }\r\n }\r\n }\r\n\r\n return this\r\n },\r\n\r\n // Resize path string\r\n size (width, height) {\r\n // get bounding box of current situation\r\n var box = this.bbox()\r\n var i, l\r\n\r\n // recalculate position of all points according to new size\r\n for (i = this.length - 1; i >= 0; i--) {\r\n l = this[i][0]\r\n\r\n if (l === 'M' || l === 'L' || l === 'T') {\r\n this[i][1] = ((this[i][1] - box.x) * width) / box.width + box.x\r\n this[i][2] = ((this[i][2] - box.y) * height) / box.height + box.y\r\n } else if (l === 'H') {\r\n this[i][1] = ((this[i][1] - box.x) * width) / box.width + box.x\r\n } else if (l === 'V') {\r\n this[i][1] = ((this[i][1] - box.y) * height) / box.height + box.y\r\n } else if (l === 'C' || l === 'S' || l === 'Q') {\r\n this[i][1] = ((this[i][1] - box.x) * width) / box.width + box.x\r\n this[i][2] = ((this[i][2] - box.y) * height) / box.height + box.y\r\n this[i][3] = ((this[i][3] - box.x) * width) / box.width + box.x\r\n this[i][4] = ((this[i][4] - box.y) * height) / box.height + box.y\r\n\r\n if (l === 'C') {\r\n this[i][5] = ((this[i][5] - box.x) * width) / box.width + box.x\r\n this[i][6] = ((this[i][6] - box.y) * height) / box.height + box.y\r\n }\r\n } else if (l === 'A') {\r\n // resize radii\r\n this[i][1] = (this[i][1] * width) / box.width\r\n this[i][2] = (this[i][2] * height) / box.height\r\n\r\n // move position values\r\n this[i][6] = ((this[i][6] - box.x) * width) / box.width + box.x\r\n this[i][7] = ((this[i][7] - box.y) * height) / box.height + box.y\r\n }\r\n }\r\n\r\n return this\r\n },\r\n\r\n // Test if the passed path array use the same path data commands as this path array\r\n equalCommands (pathArray) {\r\n var i, il, equalCommands\r\n\r\n pathArray = new PathArray(pathArray)\r\n\r\n equalCommands = this.length === pathArray.length\r\n for (i = 0, il = this.length; equalCommands && i < il; i++) {\r\n equalCommands = this[i][0] === pathArray[i][0]\r\n }\r\n\r\n return equalCommands\r\n },\r\n\r\n // Make path array morphable\r\n morph (pathArray) {\r\n pathArray = new PathArray(pathArray)\r\n\r\n if (this.equalCommands(pathArray)) {\r\n this.destination = pathArray\r\n } else {\r\n this.destination = null\r\n }\r\n\r\n return this\r\n },\r\n\r\n // Get morphed path array at given position\r\n at (pos) {\r\n // make sure a destination is defined\r\n if (!this.destination) return this\r\n\r\n var sourceArray = this\r\n var destinationArray = this.destination.value\r\n var array = []\r\n var pathArray = new PathArray()\r\n var i, il, j, jl\r\n\r\n // Animate has specified in the SVG spec\r\n // See: https://www.w3.org/TR/SVG11/paths.html#PathElement\r\n for (i = 0, il = sourceArray.length; i < il; i++) {\r\n array[i] = [sourceArray[i][0]]\r\n for (j = 1, jl = sourceArray[i].length; j < jl; j++) {\r\n array[i][j] = sourceArray[i][j] + (destinationArray[i][j] - sourceArray[i][j]) * pos\r\n }\r\n // For the two flags of the elliptical arc command, the SVG spec say:\r\n // Flags and booleans are interpolated as fractions between zero and one, with any non-zero value considered to be a value of one/true\r\n // Elliptical arc command as an array followed by corresponding indexes:\r\n // ['A', rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y]\r\n // 0 1 2 3 4 5 6 7\r\n if (array[i][0] === 'A') {\r\n array[i][4] = +(array[i][4] !== 0)\r\n array[i][5] = +(array[i][5] !== 0)\r\n }\r\n }\r\n\r\n // Directly modify the value of a path array, this is done this way for performance\r\n pathArray.value = array\r\n return pathArray\r\n },\r\n\r\n // Absolutize and parse path to array\r\n parse (array = [['M', 0, 0]]) {\r\n // if it's already a patharray, no need to parse it\r\n if (array instanceof PathArray) return array\r\n\r\n // prepare for parsing\r\n var s\r\n var paramCnt = { 'M': 2, 'L': 2, 'H': 1, 'V': 1, 'C': 6, 'S': 4, 'Q': 4, 'T': 2, 'A': 7, 'Z': 0 }\r\n\r\n if (typeof array === 'string') {\r\n array = array\r\n .replace(numbersWithDots, pathRegReplace) // convert 45.123.123 to 45.123 .123\r\n .replace(pathLetters, ' $& ') // put some room between letters and numbers\r\n .replace(hyphen, '$1 -') // add space before hyphen\r\n .trim() // trim\r\n .split(delimiter) // split into array\r\n } else {\r\n array = array.reduce(function (prev, curr) {\r\n return [].concat.call(prev, curr)\r\n }, [])\r\n }\r\n\r\n // array now is an array containing all parts of a path e.g. ['M', '0', '0', 'L', '30', '30' ...]\r\n var result = []\r\n var p = new Point()\r\n var p0 = new Point()\r\n var index = 0\r\n var len = array.length\r\n\r\n do {\r\n // Test if we have a path letter\r\n if (isPathLetter.test(array[index])) {\r\n s = array[index]\r\n ++index\r\n // If last letter was a move command and we got no new, it defaults to [L]ine\r\n } else if (s === 'M') {\r\n s = 'L'\r\n } else if (s === 'm') {\r\n s = 'l'\r\n }\r\n\r\n result.push(pathHandlers[s].call(null,\r\n array.slice(index, (index = index + paramCnt[s.toUpperCase()])).map(parseFloat),\r\n p, p0\r\n )\r\n )\r\n } while (len > index)\r\n\r\n return result\r\n },\r\n\r\n // Get bounding box of path\r\n bbox () {\r\n parser().path.setAttribute('d', this.toString())\r\n return parser.nodes.path.getBBox()\r\n }\r\n})\r\n","import { Ease } from './Controller.js'\r\nimport {\r\n delimiter,\r\n numberAndUnit,\r\n pathLetters\r\n} from '../modules/core/regex.js'\r\nimport { extend } from '../utils/adopter.js'\r\nimport Color from '../types/Color.js'\r\nimport PathArray from '../types/PathArray.js'\r\nimport SVGArray from '../types/SVGArray.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\n\r\nexport default class Morphable {\r\n constructor (stepper) {\r\n this._stepper = stepper || new Ease('-')\r\n\r\n this._from = null\r\n this._to = null\r\n this._type = null\r\n this._context = null\r\n this._morphObj = null\r\n }\r\n\r\n from (val) {\r\n if (val == null) {\r\n return this._from\r\n }\r\n\r\n this._from = this._set(val)\r\n return this\r\n }\r\n\r\n to (val) {\r\n if (val == null) {\r\n return this._to\r\n }\r\n\r\n this._to = this._set(val)\r\n return this\r\n }\r\n\r\n type (type) {\r\n // getter\r\n if (type == null) {\r\n return this._type\r\n }\r\n\r\n // setter\r\n this._type = type\r\n return this\r\n }\r\n\r\n _set (value) {\r\n if (!this._type) {\r\n var type = typeof value\r\n\r\n if (type === 'number') {\r\n this.type(SVGNumber)\r\n } else if (type === 'string') {\r\n if (Color.isColor(value)) {\r\n this.type(Color)\r\n } else if (delimiter.test(value)) {\r\n this.type(pathLetters.test(value)\r\n ? PathArray\r\n : SVGArray\r\n )\r\n } else if (numberAndUnit.test(value)) {\r\n this.type(SVGNumber)\r\n } else {\r\n this.type(NonMorphable)\r\n }\r\n } else if (morphableTypes.indexOf(value.constructor) > -1) {\r\n this.type(value.constructor)\r\n } else if (Array.isArray(value)) {\r\n this.type(SVGArray)\r\n } else if (type === 'object') {\r\n this.type(ObjectBag)\r\n } else {\r\n this.type(NonMorphable)\r\n }\r\n }\r\n\r\n var result = (new this._type(value)).toArray()\r\n this._morphObj = this._morphObj || new this._type()\r\n this._context = this._context ||\r\n Array.apply(null, Array(result.length)).map(Object)\r\n return result\r\n }\r\n\r\n stepper (stepper) {\r\n if (stepper == null) return this._stepper\r\n this._stepper = stepper\r\n return this\r\n }\r\n\r\n done () {\r\n var complete = this._context\r\n .map(this._stepper.done)\r\n .reduce(function (last, curr) {\r\n return last && curr\r\n }, true)\r\n return complete\r\n }\r\n\r\n at (pos) {\r\n var _this = this\r\n\r\n return this._morphObj.fromArray(\r\n this._from.map(function (i, index) {\r\n return _this._stepper.step(i, _this._to[index], pos, _this._context[index], _this._context)\r\n })\r\n )\r\n }\r\n}\r\n\r\nexport class NonMorphable {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (val) {\r\n val = Array.isArray(val) ? val[0] : val\r\n this.value = val\r\n return this\r\n }\r\n\r\n valueOf () {\r\n return this.value\r\n }\r\n\r\n toArray () {\r\n return [this.value]\r\n }\r\n}\r\n\r\nexport class TransformBag {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (obj) {\r\n if (Array.isArray(obj)) {\r\n obj = {\r\n scaleX: obj[0],\r\n scaleY: obj[1],\r\n shear: obj[2],\r\n rotate: obj[3],\r\n translateX: obj[4],\r\n translateY: obj[5],\r\n originX: obj[6],\r\n originY: obj[7]\r\n }\r\n }\r\n\r\n Object.assign(this, TransformBag.defaults, obj)\r\n return this\r\n }\r\n\r\n toArray () {\r\n var v = this\r\n\r\n return [\r\n v.scaleX,\r\n v.scaleY,\r\n v.shear,\r\n v.rotate,\r\n v.translateX,\r\n v.translateY,\r\n v.originX,\r\n v.originY\r\n ]\r\n }\r\n}\r\n\r\nTransformBag.defaults = {\r\n scaleX: 1,\r\n scaleY: 1,\r\n shear: 0,\r\n rotate: 0,\r\n translateX: 0,\r\n translateY: 0,\r\n originX: 0,\r\n originY: 0\r\n}\r\n\r\nexport class ObjectBag {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (objOrArr) {\r\n this.values = []\r\n\r\n if (Array.isArray(objOrArr)) {\r\n this.values = objOrArr\r\n return\r\n }\r\n\r\n objOrArr = objOrArr || {}\r\n var entries = []\r\n\r\n for (let i in objOrArr) {\r\n entries.push([i, objOrArr[i]])\r\n }\r\n\r\n entries.sort((a, b) => {\r\n return a[0] - b[0]\r\n })\r\n\r\n this.values = entries.reduce((last, curr) => last.concat(curr), [])\r\n return this\r\n }\r\n\r\n valueOf () {\r\n var obj = {}\r\n var arr = this.values\r\n\r\n for (var i = 0, len = arr.length; i < len; i += 2) {\r\n obj[arr[i]] = arr[i + 1]\r\n }\r\n\r\n return obj\r\n }\r\n\r\n toArray () {\r\n return this.values\r\n }\r\n}\r\n\r\nconst morphableTypes = [\r\n NonMorphable,\r\n TransformBag,\r\n ObjectBag\r\n]\r\n\r\nexport function registerMorphableType (type = []) {\r\n morphableTypes.push(...[].concat(type))\r\n}\r\n\r\nexport function makeMorphable () {\r\n extend(morphableTypes, {\r\n to (val) {\r\n return new Morphable()\r\n .type(this.constructor)\r\n .from(this.valueOf())\r\n .to(val)\r\n },\r\n fromArray (arr) {\r\n this.init(arr)\r\n return this\r\n }\r\n })\r\n}\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PathArray from '../types/PathArray.js'\r\nimport Shape from './Shape.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class Path extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('path', node), node)\r\n }\r\n\r\n // Get array\r\n array () {\r\n return this._array || (this._array = new PathArray(this.attr('d')))\r\n }\r\n\r\n // Plot new path\r\n plot (d) {\r\n return (d == null) ? this.array()\r\n : this.clear().attr('d', typeof d === 'string' ? d : (this._array = new PathArray(d)))\r\n }\r\n\r\n // Clear array cache\r\n clear () {\r\n delete this._array\r\n return this\r\n }\r\n\r\n // Move by left top corner\r\n move (x, y) {\r\n return this.attr('d', this.array().move(x, y))\r\n }\r\n\r\n // Move by left top corner over x-axis\r\n x (x) {\r\n return x == null ? this.bbox().x : this.move(x, this.bbox().y)\r\n }\r\n\r\n // Move by left top corner over y-axis\r\n y (y) {\r\n return y == null ? this.bbox().y : this.move(this.bbox().x, y)\r\n }\r\n\r\n // Set element size to given width and height\r\n size (width, height) {\r\n var p = proportionalSize(this, width, height)\r\n return this.attr('d', this.array().size(p.width, p.height))\r\n }\r\n\r\n // Set width of element\r\n width (width) {\r\n return width == null ? this.bbox().width : this.size(width, this.bbox().height)\r\n }\r\n\r\n // Set height of element\r\n height (height) {\r\n return height == null ? this.bbox().height : this.size(this.bbox().width, height)\r\n }\r\n\r\n targets () {\r\n return baseFind('svg textpath [href*=\"' + this.id() + '\"]')\r\n }\r\n}\r\n\r\n// Define morphable array\r\nPath.prototype.MorphArray = PathArray\r\n\r\n// Add parent method\r\nregisterMethods({\r\n Container: {\r\n // Create a wrapped path element\r\n path: wrapWithAttrCheck(function (d) {\r\n // make sure plot is called as a setter\r\n return this.put(new Path()).plot(d || new PathArray())\r\n })\r\n }\r\n})\r\n\r\nregister(Path)\r\n","import { proportionalSize } from '../../utils/utils.js'\r\nimport PointArray from '../../types/PointArray.js'\r\n\r\n// Get array\r\nexport function array () {\r\n return this._array || (this._array = new PointArray(this.attr('points')))\r\n}\r\n\r\n// Plot new path\r\nexport function plot (p) {\r\n return (p == null) ? this.array()\r\n : this.clear().attr('points', typeof p === 'string' ? p\r\n : (this._array = new PointArray(p)))\r\n}\r\n\r\n// Clear array cache\r\nexport function clear () {\r\n delete this._array\r\n return this\r\n}\r\n\r\n// Move by left top corner\r\nexport function move (x, y) {\r\n return this.attr('points', this.array().move(x, y))\r\n}\r\n\r\n// Set element size to given width and height\r\nexport function size (width, height) {\r\n let p = proportionalSize(this, width, height)\r\n return this.attr('points', this.array().size(p.width, p.height))\r\n}\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PointArray from '../types/PointArray.js'\r\nimport Shape from './Shape.js'\r\nimport * as pointed from '../modules/core/pointed.js'\r\nimport * as poly from '../modules/core/poly.js'\r\n\r\nexport default class Polygon extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('polygon', node), node)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a wrapped polygon element\r\n polygon: wrapWithAttrCheck(function (p) {\r\n // make sure plot is called as a setter\r\n return this.put(new Polygon()).plot(p || new PointArray())\r\n })\r\n }\r\n})\r\n\r\nextend(Polygon, pointed)\r\nextend(Polygon, poly)\r\nregister(Polygon)\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PointArray from '../types/PointArray.js'\r\nimport Shape from './Shape.js'\r\nimport * as pointed from '../modules/core/pointed.js'\r\nimport * as poly from '../modules/core/poly.js'\r\n\r\nexport default class Polyline extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('polyline', node), node)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a wrapped polygon element\r\n polyline: wrapWithAttrCheck(function (p) {\r\n // make sure plot is called as a setter\r\n return this.put(new Polyline()).plot(p || new PointArray())\r\n })\r\n }\r\n})\r\n\r\nextend(Polyline, pointed)\r\nextend(Polyline, poly)\r\nregister(Polyline)\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { rx, ry } from '../modules/core/circled.js'\r\nimport Shape from './Shape.js'\r\n\r\nexport default class Rect extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('rect', node), node)\r\n }\r\n}\r\n\r\nextend(Rect, { rx, ry })\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a rect element\r\n rect: wrapWithAttrCheck(function (width, height) {\r\n return this.put(new Rect()).size(width, height)\r\n })\r\n }\r\n})\r\n\r\nregister(Rect)\r\n","export default class Queue {\r\n constructor () {\r\n this._first = null\r\n this._last = null\r\n }\r\n\r\n push (value) {\r\n // An item stores an id and the provided value\r\n var item = value.next ? value : { value: value, next: null, prev: null }\r\n\r\n // Deal with the queue being empty or populated\r\n if (this._last) {\r\n item.prev = this._last\r\n this._last.next = item\r\n this._last = item\r\n } else {\r\n this._last = item\r\n this._first = item\r\n }\r\n\r\n // Update the length and return the current item\r\n return item\r\n }\r\n\r\n shift () {\r\n // Check if we have a value\r\n var remove = this._first\r\n if (!remove) return null\r\n\r\n // If we do, remove it and relink things\r\n this._first = remove.next\r\n if (this._first) this._first.prev = null\r\n this._last = this._first ? this._last : null\r\n return remove.value\r\n }\r\n\r\n // Shows us the first item in the list\r\n first () {\r\n return this._first && this._first.value\r\n }\r\n\r\n // Shows us the last item in the list\r\n last () {\r\n return this._last && this._last.value\r\n }\r\n\r\n // Removes the item that was returned from the push\r\n remove (item) {\r\n // Relink the previous item\r\n if (item.prev) item.prev.next = item.next\r\n if (item.next) item.next.prev = item.prev\r\n if (item === this._last) this._last = item.prev\r\n if (item === this._first) this._first = item.next\r\n\r\n // Invalidate item\r\n item.prev = null\r\n item.next = null\r\n }\r\n}\r\n","import { globals } from '../utils/window.js'\r\nimport Queue from './Queue.js'\r\n\r\nconst Animator = {\r\n nextDraw: null,\r\n frames: new Queue(),\r\n timeouts: new Queue(),\r\n timer: () => globals.window.performance || globals.window.Date,\r\n transforms: [],\r\n\r\n frame (fn) {\r\n // Store the node\r\n var node = Animator.frames.push({ run: fn })\r\n\r\n // Request an animation frame if we don't have one\r\n if (Animator.nextDraw === null) {\r\n Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw)\r\n }\r\n\r\n // Return the node so we can remove it easily\r\n return node\r\n },\r\n\r\n transform_frame (fn, id) {\r\n Animator.transforms[id] = fn\r\n },\r\n\r\n timeout (fn, delay) {\r\n delay = delay || 0\r\n\r\n // Work out when the event should fire\r\n var time = Animator.timer().now() + delay\r\n\r\n // Add the timeout to the end of the queue\r\n var node = Animator.timeouts.push({ run: fn, time: time })\r\n\r\n // Request another animation frame if we need one\r\n if (Animator.nextDraw === null) {\r\n Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw)\r\n }\r\n\r\n return node\r\n },\r\n\r\n cancelFrame (node) {\r\n node != null && Animator.frames.remove(node)\r\n },\r\n\r\n clearTimeout (node) {\r\n node != null && Animator.timeouts.remove(node)\r\n },\r\n\r\n _draw (now) {\r\n // Run all the timeouts we can run, if they are not ready yet, add them\r\n // to the end of the queue immediately! (bad timeouts!!! [sarcasm])\r\n var nextTimeout = null\r\n var lastTimeout = Animator.timeouts.last()\r\n while ((nextTimeout = Animator.timeouts.shift())) {\r\n // Run the timeout if its time, or push it to the end\r\n if (now >= nextTimeout.time) {\r\n nextTimeout.run()\r\n } else {\r\n Animator.timeouts.push(nextTimeout)\r\n }\r\n\r\n // If we hit the last item, we should stop shifting out more items\r\n if (nextTimeout === lastTimeout) break\r\n }\r\n\r\n // Run all of the animation frames\r\n var nextFrame = null\r\n var lastFrame = Animator.frames.last()\r\n while ((nextFrame !== lastFrame) && (nextFrame = Animator.frames.shift())) {\r\n nextFrame.run()\r\n }\r\n\r\n Animator.transforms.forEach(function (el) { el() })\r\n\r\n // If we have remaining timeouts or frames, draw until we don't anymore\r\n Animator.nextDraw = Animator.timeouts.first() || Animator.frames.first()\r\n ? globals.window.requestAnimationFrame(Animator._draw)\r\n : null\r\n }\r\n}\r\n\r\nexport default Animator\r\n","import { globals } from '../utils/window.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Animator from './Animator.js'\r\nimport EventTarget from '../types/EventTarget.js'\r\n\r\nvar makeSchedule = function (runnerInfo) {\r\n var start = runnerInfo.start\r\n var duration = runnerInfo.runner.duration()\r\n var end = start + duration\r\n return { start: start, duration: duration, end: end, runner: runnerInfo.runner }\r\n}\r\n\r\nconst defaultSource = function () {\r\n let w = globals.window\r\n return (w.performance || w.Date).now()\r\n}\r\n\r\nexport default class Timeline extends EventTarget {\r\n // Construct a new timeline on the given element\r\n constructor (timeSource = defaultSource) {\r\n super()\r\n\r\n this._timeSource = timeSource\r\n\r\n // Store the timing variables\r\n this._startTime = 0\r\n this._speed = 1.0\r\n\r\n // Determines how long a runner is hold in memory. Can be a dt or true/false\r\n this._persist = 0\r\n\r\n // Keep track of the running animations and their starting parameters\r\n this._nextFrame = null\r\n this._paused = true\r\n this._runners = []\r\n this._order = []\r\n this._time = 0\r\n this._lastSourceTime = 0\r\n this._lastStepTime = 0\r\n\r\n // Make sure that step is always called in class context\r\n this._step = this._step.bind(this)\r\n }\r\n\r\n // schedules a runner on the timeline\r\n schedule (runner, delay, when) {\r\n if (runner == null) {\r\n return this._runners.map(makeSchedule).sort(function (a, b) {\r\n return a.runner.id - b.runner.id\r\n })\r\n }\r\n\r\n // The start time for the next animation can either be given explicitly,\r\n // derived from the current timeline time or it can be relative to the\r\n // last start time to chain animations direclty\r\n\r\n var absoluteStartTime = 0\r\n var endTime = this.getEndTime()\r\n delay = delay || 0\r\n\r\n // Work out when to start the animation\r\n if (when == null || when === 'last' || when === 'after') {\r\n // Take the last time and increment\r\n absoluteStartTime = endTime\r\n } else if (when === 'absolute' || when === 'start') {\r\n absoluteStartTime = delay\r\n delay = 0\r\n } else if (when === 'now') {\r\n absoluteStartTime = this._time\r\n } else if (when === 'relative') {\r\n let runnerInfo = this._runners[runner.id]\r\n if (runnerInfo) {\r\n absoluteStartTime = runnerInfo.start + delay\r\n delay = 0\r\n }\r\n } else {\r\n throw new Error('Invalid value for the \"when\" parameter')\r\n }\r\n\r\n // Manage runner\r\n runner.unschedule()\r\n runner.timeline(this)\r\n // runner.time(-delay)\r\n\r\n // Save runnerInfo\r\n this._runners[runner.id] = {\r\n persist: this.persist(),\r\n runner: runner,\r\n start: absoluteStartTime + delay\r\n }\r\n\r\n // Save order, update Time if needed and continue\r\n this._order.push(runner.id)\r\n this.updateTime()._continue()\r\n return this\r\n }\r\n\r\n // Remove the runner from this timeline\r\n unschedule (runner) {\r\n var index = this._order.indexOf(runner.id)\r\n if (index < 0) return this\r\n\r\n delete this._runners[runner.id]\r\n this._order.splice(index, 1)\r\n runner.timeline(null)\r\n return this\r\n }\r\n\r\n // Calculates the end of the timeline\r\n getEndTime () {\r\n var lastRunnerInfo = this._runners[this._order[this._order.length - 1]]\r\n var lastDuration = lastRunnerInfo ? lastRunnerInfo.runner.duration() : 0\r\n var lastStartTime = lastRunnerInfo ? lastRunnerInfo.start : 0\r\n return lastStartTime + lastDuration\r\n }\r\n\r\n // Makes sure, that after pausing the time doesn't jump\r\n updateTime () {\r\n if (!this.active()) {\r\n this._lastSourceTime = this._timeSource()\r\n }\r\n return this\r\n }\r\n\r\n play () {\r\n // Now make sure we are not paused and continue the animation\r\n this._paused = false\r\n return this.updateTime()._continue()\r\n }\r\n\r\n pause () {\r\n this._paused = true\r\n return this._continue()\r\n }\r\n\r\n stop () {\r\n // Go to start and pause\r\n this.time(0)\r\n return this.pause()\r\n }\r\n\r\n finish () {\r\n // Go to end and pause\r\n this.time(this.getEndTime() + 1)\r\n return this.pause()\r\n }\r\n\r\n speed (speed) {\r\n if (speed == null) return this._speed\r\n this._speed = speed\r\n return this\r\n }\r\n\r\n reverse (yes) {\r\n var currentSpeed = this.speed()\r\n if (yes == null) return this.speed(-currentSpeed)\r\n\r\n var positive = Math.abs(currentSpeed)\r\n return this.speed(yes ? positive : -positive)\r\n }\r\n\r\n seek (dt) {\r\n return this.time(this._time + dt)\r\n }\r\n\r\n time (time) {\r\n if (time == null) return this._time\r\n this._time = time\r\n return this._continue(true)\r\n }\r\n\r\n persist (dtOrForever) {\r\n if (dtOrForever == null) return this._persist\r\n this._persist = dtOrForever\r\n return this\r\n }\r\n\r\n source (fn) {\r\n if (fn == null) return this._timeSource\r\n this._timeSource = fn\r\n return this\r\n }\r\n\r\n _step (immediateStep = false) {\r\n // Get the time delta from the last time and update the time\r\n var time = this._timeSource()\r\n var dtSource = time - this._lastSourceTime\r\n\r\n if (immediateStep) dtSource = 0\r\n\r\n var dtTime = this._speed * dtSource + (this._time - this._lastStepTime)\r\n this._lastSourceTime = time\r\n\r\n // Only update the time if we use the timeSource.\r\n // Otherwise use the current time\r\n if (!immediateStep) {\r\n // Update the time\r\n this._time += dtTime\r\n this._time = this._time < 0 ? 0 : this._time\r\n }\r\n this._lastStepTime = this._time\r\n this.fire('time', this._time)\r\n\r\n // Run all of the runners directly\r\n var runnersLeft = false\r\n for (var i = 0, len = this._order.length; i < len; i++) {\r\n // Get and run the current runner and ignore it if its inactive\r\n var runnerInfo = this._runners[this._order[i]]\r\n var runner = runnerInfo.runner\r\n let dt = dtTime\r\n\r\n // Make sure that we give the actual difference\r\n // between runner start time and now\r\n let dtToStart = this._time - runnerInfo.start\r\n\r\n // Dont run runner if not started yet\r\n if (dtToStart <= 0) {\r\n runnersLeft = true\r\n\r\n // This is for the case that teh timeline was seeked so that the time\r\n // is now before the startTime of the runner. Thats why we need to set\r\n // the runner to position 0\r\n runner.reset()\r\n continue\r\n } else if (dtToStart < dt) {\r\n // Adjust dt to make sure that animation is on point\r\n dt = dtToStart\r\n }\r\n\r\n if (!runner.active()) continue\r\n\r\n // If this runner is still going, signal that we need another animation\r\n // frame, otherwise, remove the completed runner\r\n var finished = runner.step(dt).done\r\n if (!finished) {\r\n runnersLeft = true\r\n // continue\r\n } else if (runnerInfo.persist !== true) {\r\n // runner is finished. And runner might get removed\r\n\r\n var endTime = runner.duration() - runner.time() + this._time\r\n\r\n if (endTime + this._persist < this._time) {\r\n // Delete runner and correct index\r\n delete this._runners[this._order[i]]\r\n this._order.splice(i--, 1) && --len\r\n runner.timeline(null)\r\n }\r\n }\r\n }\r\n\r\n // Basically: we continue when there are runners right from us in time\r\n // when -->, and when runners are left from us when <--\r\n if ((runnersLeft && !(this._speed < 0 && this._time === 0)) || (this._order.length && this._speed < 0 && this._time > 0)) {\r\n this._continue()\r\n } else {\r\n this.fire('finished')\r\n this.pause()\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Checks if we are running and continues the animation\r\n _continue (immediateStep = false) {\r\n Animator.cancelFrame(this._nextFrame)\r\n this._nextFrame = null\r\n\r\n if (immediateStep) return this._step(true)\r\n if (this._paused) return this\r\n\r\n this._nextFrame = Animator.frame(this._step)\r\n return this\r\n }\r\n\r\n active () {\r\n return !!this._nextFrame\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Element: {\r\n timeline: function () {\r\n this._timeline = (this._timeline || new Timeline())\r\n return this._timeline\r\n }\r\n }\r\n})\r\n","import { Controller, Ease, Stepper } from './Controller.js'\r\nimport { extend } from '../utils/adopter.js'\r\nimport { from, to } from '../modules/core/gradiented.js'\r\nimport { getOrigin } from '../utils/utils.js'\r\nimport { noop, timeline } from '../modules/core/defaults.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { rx, ry } from '../modules/core/circled.js'\r\nimport Animator from './Animator.js'\r\nimport Box from '../types/Box.js'\r\nimport EventTarget from '../types/EventTarget.js'\r\nimport Matrix from '../types/Matrix.js'\r\nimport Morphable, { TransformBag } from './Morphable.js'\r\nimport Point from '../types/Point.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Timeline from './Timeline.js'\r\n\r\nexport default class Runner extends EventTarget {\r\n constructor (options) {\r\n super()\r\n\r\n // Store a unique id on the runner, so that we can identify it later\r\n this.id = Runner.id++\r\n\r\n // Ensure a default value\r\n options = options == null\r\n ? timeline.duration\r\n : options\r\n\r\n // Ensure that we get a controller\r\n options = typeof options === 'function'\r\n ? new Controller(options)\r\n : options\r\n\r\n // Declare all of the variables\r\n this._element = null\r\n this._timeline = null\r\n this.done = false\r\n this._queue = []\r\n\r\n // Work out the stepper and the duration\r\n this._duration = typeof options === 'number' && options\r\n this._isDeclarative = options instanceof Controller\r\n this._stepper = this._isDeclarative ? options : new Ease()\r\n\r\n // We copy the current values from the timeline because they can change\r\n this._history = {}\r\n\r\n // Store the state of the runner\r\n this.enabled = true\r\n this._time = 0\r\n this._lastTime = 0\r\n\r\n // At creation, the runner is in reseted state\r\n this._reseted = true\r\n\r\n // Save transforms applied to this runner\r\n this.transforms = new Matrix()\r\n this.transformId = 1\r\n\r\n // Looping variables\r\n this._haveReversed = false\r\n this._reverse = false\r\n this._loopsDone = 0\r\n this._swing = false\r\n this._wait = 0\r\n this._times = 1\r\n }\r\n\r\n /*\r\n Runner Definitions\r\n ==================\r\n These methods help us define the runtime behaviour of the Runner or they\r\n help us make new runners from the current runner\r\n */\r\n\r\n element (element) {\r\n if (element == null) return this._element\r\n this._element = element\r\n element._prepareRunner()\r\n return this\r\n }\r\n\r\n timeline (timeline) {\r\n // check explicitly for undefined so we can set the timeline to null\r\n if (typeof timeline === 'undefined') return this._timeline\r\n this._timeline = timeline\r\n return this\r\n }\r\n\r\n animate (duration, delay, when) {\r\n var o = Runner.sanitise(duration, delay, when)\r\n var runner = new Runner(o.duration)\r\n if (this._timeline) runner.timeline(this._timeline)\r\n if (this._element) runner.element(this._element)\r\n return runner.loop(o).schedule(delay, when)\r\n }\r\n\r\n schedule (timeline, delay, when) {\r\n // The user doesn't need to pass a timeline if we already have one\r\n if (!(timeline instanceof Timeline)) {\r\n when = delay\r\n delay = timeline\r\n timeline = this.timeline()\r\n }\r\n\r\n // If there is no timeline, yell at the user...\r\n if (!timeline) {\r\n throw Error('Runner cannot be scheduled without timeline')\r\n }\r\n\r\n // Schedule the runner on the timeline provided\r\n timeline.schedule(this, delay, when)\r\n return this\r\n }\r\n\r\n unschedule () {\r\n var timeline = this.timeline()\r\n timeline && timeline.unschedule(this)\r\n return this\r\n }\r\n\r\n loop (times, swing, wait) {\r\n // Deal with the user passing in an object\r\n if (typeof times === 'object') {\r\n swing = times.swing\r\n wait = times.wait\r\n times = times.times\r\n }\r\n\r\n // Sanitise the values and store them\r\n this._times = times || Infinity\r\n this._swing = swing || false\r\n this._wait = wait || 0\r\n return this\r\n }\r\n\r\n delay (delay) {\r\n return this.animate(0, delay)\r\n }\r\n\r\n /*\r\n Basic Functionality\r\n ===================\r\n These methods allow us to attach basic functions to the runner directly\r\n */\r\n\r\n queue (initFn, runFn, retargetFn, isTransform) {\r\n this._queue.push({\r\n initialiser: initFn || noop,\r\n runner: runFn || noop,\r\n retarget: retargetFn,\r\n isTransform: isTransform,\r\n initialised: false,\r\n finished: false\r\n })\r\n var timeline = this.timeline()\r\n timeline && this.timeline()._continue()\r\n return this\r\n }\r\n\r\n during (fn) {\r\n return this.queue(null, fn)\r\n }\r\n\r\n after (fn) {\r\n return this.on('finish', fn)\r\n }\r\n\r\n /*\r\n Runner animation methods\r\n ========================\r\n Control how the animation plays\r\n */\r\n\r\n time (time) {\r\n if (time == null) {\r\n return this._time\r\n }\r\n let dt = time - this._time\r\n this.step(dt)\r\n return this\r\n }\r\n\r\n duration () {\r\n return this._times * (this._wait + this._duration) - this._wait\r\n }\r\n\r\n loops (p) {\r\n var loopDuration = this._duration + this._wait\r\n if (p == null) {\r\n var loopsDone = Math.floor(this._time / loopDuration)\r\n var relativeTime = (this._time - loopsDone * loopDuration)\r\n var position = relativeTime / this._duration\r\n return Math.min(loopsDone + position, this._times)\r\n }\r\n var whole = Math.floor(p)\r\n var partial = p % 1\r\n var time = loopDuration * whole + this._duration * partial\r\n return this.time(time)\r\n }\r\n\r\n position (p) {\r\n // Get all of the variables we need\r\n var x = this._time\r\n var d = this._duration\r\n var w = this._wait\r\n var t = this._times\r\n var s = this._swing\r\n var r = this._reverse\r\n var position\r\n\r\n if (p == null) {\r\n /*\r\n This function converts a time to a position in the range [0, 1]\r\n The full explanation can be found in this desmos demonstration\r\n https://www.desmos.com/calculator/u4fbavgche\r\n The logic is slightly simplified here because we can use booleans\r\n */\r\n\r\n // Figure out the value without thinking about the start or end time\r\n const f = function (x) {\r\n var swinging = s * Math.floor(x % (2 * (w + d)) / (w + d))\r\n var backwards = (swinging && !r) || (!swinging && r)\r\n var uncliped = Math.pow(-1, backwards) * (x % (w + d)) / d + backwards\r\n var clipped = Math.max(Math.min(uncliped, 1), 0)\r\n return clipped\r\n }\r\n\r\n // Figure out the value by incorporating the start time\r\n var endTime = t * (w + d) - w\r\n position = x <= 0 ? Math.round(f(1e-5))\r\n : x < endTime ? f(x)\r\n : Math.round(f(endTime - 1e-5))\r\n return position\r\n }\r\n\r\n // Work out the loops done and add the position to the loops done\r\n var loopsDone = Math.floor(this.loops())\r\n var swingForward = s && (loopsDone % 2 === 0)\r\n var forwards = (swingForward && !r) || (r && swingForward)\r\n position = loopsDone + (forwards ? p : 1 - p)\r\n return this.loops(position)\r\n }\r\n\r\n progress (p) {\r\n if (p == null) {\r\n return Math.min(1, this._time / this.duration())\r\n }\r\n return this.time(p * this.duration())\r\n }\r\n\r\n step (dt) {\r\n // If we are inactive, this stepper just gets skipped\r\n if (!this.enabled) return this\r\n\r\n // Update the time and get the new position\r\n dt = dt == null ? 16 : dt\r\n this._time += dt\r\n var position = this.position()\r\n\r\n // Figure out if we need to run the stepper in this frame\r\n var running = this._lastPosition !== position && this._time >= 0\r\n this._lastPosition = position\r\n\r\n // Figure out if we just started\r\n var duration = this.duration()\r\n var justStarted = this._lastTime <= 0 && this._time > 0\r\n var justFinished = this._lastTime < this._time && this.time > duration\r\n this._lastTime = this._time\r\n if (justStarted) {\r\n this.fire('start', this)\r\n }\r\n\r\n // Work out if the runner is finished set the done flag here so animations\r\n // know, that they are running in the last step (this is good for\r\n // transformations which can be merged)\r\n var declarative = this._isDeclarative\r\n this.done = !declarative && !justFinished && this._time >= duration\r\n\r\n // Runner is running. So its not in reseted state anymore\r\n this._reseted = false\r\n\r\n // Call initialise and the run function\r\n if (running || declarative) {\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 (this.done) {\r\n this.fire('finish', this)\r\n }\r\n return this\r\n }\r\n\r\n reset () {\r\n if (this._reseted) return this\r\n this.loops(0)\r\n this._reseted = true\r\n return this\r\n }\r\n\r\n finish () {\r\n return this.step(Infinity)\r\n }\r\n\r\n reverse (reverse) {\r\n this._reverse = reverse == null ? !this._reverse : reverse\r\n return this\r\n }\r\n\r\n ease (fn) {\r\n this._stepper = new Ease(fn)\r\n return this\r\n }\r\n\r\n active (enabled) {\r\n if (enabled == null) return this.enabled\r\n this.enabled = enabled\r\n return this\r\n }\r\n\r\n /*\r\n Private Methods\r\n ===============\r\n Methods that shouldn't be used externally\r\n */\r\n\r\n // Save a morpher to the morpher list so that we can retarget it later\r\n _rememberMorpher (method, morpher) {\r\n this._history[method] = {\r\n morpher: morpher,\r\n caller: this._queue[this._queue.length - 1]\r\n }\r\n }\r\n\r\n // Try to set the target for a morpher if the morpher exists, otherwise\r\n // do nothing and return false\r\n _tryRetarget (method, target) {\r\n if (this._history[method]) {\r\n // if the last method wasnt even initialised, throw it away\r\n if (!this._history[method].caller.initialised) {\r\n let index = this._queue.indexOf(this._history[method].caller)\r\n this._queue.splice(index, 1)\r\n return false\r\n }\r\n\r\n // for the case of transformations, we use the special retarget function\r\n // which has access to the outer scope\r\n if (this._history[method].caller.retarget) {\r\n this._history[method].caller.retarget(target)\r\n // for everything else a simple morpher change is sufficient\r\n } else {\r\n this._history[method].morpher.to(target)\r\n }\r\n\r\n this._history[method].caller.finished = false\r\n var timeline = this.timeline()\r\n timeline && timeline._continue()\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n // Run each initialise function in the runner if required\r\n _initialise (running) {\r\n // If we aren't running, we shouldn't initialise when not declarative\r\n if (!running && !this._isDeclarative) return\r\n\r\n // Loop through all of the initialisers\r\n for (var i = 0, len = this._queue.length; i < len; ++i) {\r\n // Get the current initialiser\r\n var current = this._queue[i]\r\n\r\n // Determine whether we need to initialise\r\n var needsIt = this._isDeclarative || (!current.initialised && running)\r\n running = !current.finished\r\n\r\n // Call the initialiser if we need to\r\n if (needsIt && running) {\r\n current.initialiser.call(this)\r\n current.initialised = true\r\n }\r\n }\r\n }\r\n\r\n // Run each run function for the position or dt given\r\n _run (positionOrDt) {\r\n // Run all of the _queue directly\r\n var allfinished = true\r\n for (var i = 0, len = this._queue.length; i < len; ++i) {\r\n // Get the current function to run\r\n var current = this._queue[i]\r\n\r\n // Run the function if its not finished, we keep track of the finished\r\n // flag for the sake of declarative _queue\r\n var converged = current.runner.call(this, positionOrDt)\r\n current.finished = current.finished || (converged === true)\r\n allfinished = allfinished && current.finished\r\n }\r\n\r\n // We report when all of the constructors are finished\r\n return allfinished\r\n }\r\n\r\n addTransform (transform, index) {\r\n this.transforms.lmultiplyO(transform)\r\n return this\r\n }\r\n\r\n clearTransform () {\r\n this.transforms = new Matrix()\r\n return this\r\n }\r\n\r\n // TODO: Keep track of all transformations so that deletion is faster\r\n clearTransformsFromQueue () {\r\n if (!this.done) {\r\n this._queue = this._queue.filter((item) => {\r\n return !item.isTransform\r\n })\r\n }\r\n }\r\n\r\n static sanitise (duration, delay, when) {\r\n // Initialise the default parameters\r\n var times = 1\r\n var swing = false\r\n var wait = 0\r\n duration = duration || timeline.duration\r\n delay = delay || timeline.delay\r\n when = when || 'last'\r\n\r\n // If we have an object, unpack the values\r\n if (typeof duration === 'object' && !(duration instanceof Stepper)) {\r\n delay = duration.delay || delay\r\n when = duration.when || when\r\n swing = duration.swing || swing\r\n times = duration.times || times\r\n wait = duration.wait || wait\r\n duration = duration.duration || timeline.duration\r\n }\r\n\r\n return {\r\n duration: duration,\r\n delay: delay,\r\n swing: swing,\r\n times: times,\r\n wait: wait,\r\n when: when\r\n }\r\n }\r\n}\r\n\r\nRunner.id = 0\r\n\r\nclass FakeRunner {\r\n constructor (transforms = new Matrix(), id = -1, done = true) {\r\n this.transforms = transforms\r\n this.id = id\r\n this.done = done\r\n }\r\n\r\n clearTransformsFromQueue () { }\r\n}\r\n\r\nextend([Runner, FakeRunner], {\r\n mergeWith (runner) {\r\n return new FakeRunner(\r\n runner.transforms.lmultiply(this.transforms),\r\n runner.id\r\n )\r\n }\r\n})\r\n\r\n// FakeRunner.emptyRunner = new FakeRunner()\r\n\r\nconst lmultiply = (last, curr) => last.lmultiplyO(curr)\r\nconst getRunnerTransform = (runner) => runner.transforms\r\n\r\nfunction mergeTransforms () {\r\n // Find the matrix to apply to the element and apply it\r\n let runners = this._transformationRunners.runners\r\n let netTransform = runners\r\n .map(getRunnerTransform)\r\n .reduce(lmultiply, new Matrix())\r\n\r\n this.transform(netTransform)\r\n\r\n this._transformationRunners.merge()\r\n\r\n if (this._transformationRunners.length() === 1) {\r\n this._frameId = null\r\n }\r\n}\r\n\r\nclass RunnerArray {\r\n constructor () {\r\n this.runners = []\r\n this.ids = []\r\n }\r\n\r\n add (runner) {\r\n if (this.runners.includes(runner)) return\r\n\r\n let id = runner.id + 1\r\n\r\n let leftSibling = this.ids.reduce((last, curr) => {\r\n if (curr > last && curr < id) return curr\r\n return last\r\n }, 0)\r\n\r\n let index = this.ids.indexOf(leftSibling) + 1\r\n\r\n this.ids.splice(index, 0, id)\r\n this.runners.splice(index, 0, runner)\r\n\r\n return this\r\n }\r\n\r\n getByID (id) {\r\n return this.runners[this.ids.indexOf(id + 1)]\r\n }\r\n\r\n remove (id) {\r\n let index = this.ids.indexOf(id + 1)\r\n this.ids.splice(index, 1)\r\n this.runners.splice(index, 1)\r\n return this\r\n }\r\n\r\n merge () {\r\n let lastRunner = null\r\n this.runners.forEach((runner, i) => {\r\n if (lastRunner && runner.done && lastRunner.done) {\r\n this.remove(runner.id)\r\n this.edit(lastRunner.id, runner.mergeWith(lastRunner))\r\n }\r\n\r\n lastRunner = runner\r\n })\r\n\r\n return this\r\n }\r\n\r\n edit (id, newRunner) {\r\n let index = this.ids.indexOf(id + 1)\r\n this.ids.splice(index, 1, id)\r\n this.runners.splice(index, 1, newRunner)\r\n return this\r\n }\r\n\r\n length () {\r\n return this.ids.length\r\n }\r\n\r\n clearBefore (id) {\r\n let deleteCnt = this.ids.indexOf(id + 1) || 1\r\n this.ids.splice(0, deleteCnt, 0)\r\n this.runners.splice(0, deleteCnt, new FakeRunner())\r\n .forEach((r) => r.clearTransformsFromQueue())\r\n return this\r\n }\r\n}\r\n\r\nlet frameId = 0\r\nregisterMethods({\r\n Element: {\r\n animate (duration, delay, when) {\r\n var o = Runner.sanitise(duration, delay, when)\r\n var timeline = this.timeline()\r\n return new Runner(o.duration)\r\n .loop(o)\r\n .element(this)\r\n .timeline(timeline.play())\r\n .schedule(delay, when)\r\n },\r\n\r\n delay (by, when) {\r\n return this.animate(0, by, when)\r\n },\r\n\r\n // this function searches for all runners on the element and deletes the ones\r\n // which run before the current one. This is because absolute transformations\r\n // overwfrite anything anyway so there is no need to waste time computing\r\n // other runners\r\n _clearTransformRunnersBefore (currentRunner) {\r\n this._transformationRunners.clearBefore(currentRunner.id)\r\n },\r\n\r\n _currentTransform (current) {\r\n return this._transformationRunners.runners\r\n // we need the equal sign here to make sure, that also transformations\r\n // on the same runner which execute before the current transformation are\r\n // taken into account\r\n .filter((runner) => runner.id <= current.id)\r\n .map(getRunnerTransform)\r\n .reduce(lmultiply, new Matrix())\r\n },\r\n\r\n addRunner (runner) {\r\n this._transformationRunners.add(runner)\r\n\r\n Animator.transform_frame(\r\n mergeTransforms.bind(this), this._frameId\r\n )\r\n },\r\n\r\n _prepareRunner () {\r\n if (this._frameId == null) {\r\n this._transformationRunners = new RunnerArray()\r\n .add(new FakeRunner(new Matrix(this)))\r\n\r\n this._frameId = frameId++\r\n }\r\n }\r\n }\r\n})\r\n\r\nextend(Runner, {\r\n attr (a, v) {\r\n return this.styleAttr('attr', a, v)\r\n },\r\n\r\n // Add animatable styles\r\n css (s, v) {\r\n return this.styleAttr('css', s, v)\r\n },\r\n\r\n styleAttr (type, name, val) {\r\n // apply attributes individually\r\n if (typeof name === 'object') {\r\n for (var key in val) {\r\n this.styleAttr(type, key, val[key])\r\n }\r\n }\r\n\r\n var morpher = new Morphable(this._stepper).to(val)\r\n\r\n this.queue(function () {\r\n morpher = morpher.from(this.element()[type](name))\r\n }, function (pos) {\r\n this.element()[type](name, morpher.at(pos))\r\n return morpher.done()\r\n })\r\n\r\n return this\r\n },\r\n\r\n zoom (level, point) {\r\n var morpher = new Morphable(this._stepper).to(new SVGNumber(level))\r\n\r\n this.queue(function () {\r\n morpher = morpher.from(this.zoom())\r\n }, function (pos) {\r\n this.element().zoom(morpher.at(pos), point)\r\n return morpher.done()\r\n })\r\n\r\n return this\r\n },\r\n\r\n /**\r\n ** absolute transformations\r\n **/\r\n\r\n //\r\n // M v -----|-----(D M v = F v)------|-----> T v\r\n //\r\n // 1. define the final state (T) and decompose it (once)\r\n // t = [tx, ty, the, lam, sy, sx]\r\n // 2. on every frame: pull the current state of all previous transforms\r\n // (M - m can change)\r\n // and then write this as m = [tx0, ty0, the0, lam0, sy0, sx0]\r\n // 3. Find the interpolated matrix F(pos) = m + pos * (t - m)\r\n // - Note F(0) = M\r\n // - Note F(1) = T\r\n // 4. Now you get the delta matrix as a result: D = F * inv(M)\r\n\r\n transform (transforms, relative, affine) {\r\n // If we have a declarative function, we should retarget it if possible\r\n relative = transforms.relative || relative\r\n if (this._isDeclarative && !relative && this._tryRetarget('transform', transforms)) {\r\n return this\r\n }\r\n\r\n // Parse the parameters\r\n var isMatrix = Matrix.isMatrixLike(transforms)\r\n affine = transforms.affine != null\r\n ? transforms.affine\r\n : (affine != null ? affine : !isMatrix)\r\n\r\n // Create a morepher and set its type\r\n const morpher = new Morphable(this._stepper)\r\n .type(affine ? TransformBag : Matrix)\r\n\r\n let origin\r\n let element\r\n let current\r\n let currentAngle\r\n let startTransform\r\n\r\n function setup () {\r\n // make sure element and origin is defined\r\n element = element || this.element()\r\n origin = origin || getOrigin(transforms, element)\r\n\r\n startTransform = new Matrix(relative ? undefined : element)\r\n\r\n // add the runner to the element so it can merge transformations\r\n element.addRunner(this)\r\n\r\n // Deactivate all transforms that have run so far if we are absolute\r\n if (!relative) {\r\n element._clearTransformRunnersBefore(this)\r\n }\r\n }\r\n\r\n function run (pos) {\r\n // clear all other transforms before this in case something is saved\r\n // on this runner. We are absolute. We dont need these!\r\n if (!relative) this.clearTransform()\r\n\r\n let { x, y } = new Point(origin).transform(element._currentTransform(this))\r\n\r\n let target = new Matrix({ ...transforms, origin: [x, y] })\r\n let start = this._isDeclarative && current\r\n ? current\r\n : startTransform\r\n\r\n if (affine) {\r\n target = target.decompose(x, y)\r\n start = start.decompose(x, y)\r\n\r\n // Get the current and target angle as it was set\r\n const rTarget = target.rotate\r\n const rCurrent = start.rotate\r\n\r\n // Figure out the shortest path to rotate directly\r\n const possibilities = [rTarget - 360, rTarget, rTarget + 360]\r\n const distances = possibilities.map(a => Math.abs(a - rCurrent))\r\n const shortest = Math.min(...distances)\r\n const index = distances.indexOf(shortest)\r\n target.rotate = possibilities[index]\r\n }\r\n\r\n if (relative) {\r\n // we have to be careful here not to overwrite the rotation\r\n // with the rotate method of Matrix\r\n if (!isMatrix) {\r\n target.rotate = transforms.rotate || 0\r\n }\r\n if (this._isDeclarative && currentAngle) {\r\n start.rotate = currentAngle\r\n }\r\n }\r\n\r\n morpher.from(start)\r\n morpher.to(target)\r\n\r\n let affineParameters = morpher.at(pos)\r\n currentAngle = affineParameters.rotate\r\n current = new Matrix(affineParameters)\r\n\r\n this.addTransform(current)\r\n return morpher.done()\r\n }\r\n\r\n function retarget (newTransforms) {\r\n // only get a new origin if it changed since the last call\r\n if (\r\n (newTransforms.origin || 'center').toString() !==\r\n (transforms.origin || 'center').toString()\r\n ) {\r\n origin = getOrigin(transforms, element)\r\n }\r\n\r\n // overwrite the old transformations with the new ones\r\n transforms = { ...newTransforms, origin }\r\n }\r\n\r\n this.queue(setup, run, retarget, true)\r\n this._isDeclarative && this._rememberMorpher('transform', morpher)\r\n return this\r\n },\r\n\r\n // Animatable x-axis\r\n x (x, relative) {\r\n return this._queueNumber('x', x)\r\n },\r\n\r\n // Animatable y-axis\r\n y (y) {\r\n return this._queueNumber('y', y)\r\n },\r\n\r\n dx (x) {\r\n return this._queueNumberDelta('x', x)\r\n },\r\n\r\n dy (y) {\r\n return this._queueNumberDelta('y', y)\r\n },\r\n\r\n _queueNumberDelta (method, to) {\r\n to = new SVGNumber(to)\r\n\r\n // Try to change the target if we have this method already registerd\r\n if (this._tryRetarget(method, to)) return this\r\n\r\n // Make a morpher and queue the animation\r\n var morpher = new Morphable(this._stepper).to(to)\r\n var from = null\r\n this.queue(function () {\r\n from = this.element()[method]()\r\n morpher.from(from)\r\n morpher.to(from + to)\r\n }, function (pos) {\r\n this.element()[method](morpher.at(pos))\r\n return morpher.done()\r\n }, function (newTo) {\r\n morpher.to(from + new SVGNumber(newTo))\r\n })\r\n\r\n // Register the morpher so that if it is changed again, we can retarget it\r\n this._rememberMorpher(method, morpher)\r\n return this\r\n },\r\n\r\n _queueObject (method, to) {\r\n // Try to change the target if we have this method already registerd\r\n if (this._tryRetarget(method, to)) return this\r\n\r\n // Make a morpher and queue the animation\r\n var morpher = new Morphable(this._stepper).to(to)\r\n this.queue(function () {\r\n morpher.from(this.element()[method]())\r\n }, function (pos) {\r\n this.element()[method](morpher.at(pos))\r\n return morpher.done()\r\n })\r\n\r\n // Register the morpher so that if it is changed again, we can retarget it\r\n this._rememberMorpher(method, morpher)\r\n return this\r\n },\r\n\r\n _queueNumber (method, value) {\r\n return this._queueObject(method, new SVGNumber(value))\r\n },\r\n\r\n // Animatable center x-axis\r\n cx (x) {\r\n return this._queueNumber('cx', x)\r\n },\r\n\r\n // Animatable center y-axis\r\n cy (y) {\r\n return this._queueNumber('cy', y)\r\n },\r\n\r\n // Add animatable move\r\n move (x, y) {\r\n return this.x(x).y(y)\r\n },\r\n\r\n // Add animatable center\r\n center (x, y) {\r\n return this.cx(x).cy(y)\r\n },\r\n\r\n // Add animatable size\r\n size (width, height) {\r\n // animate bbox based size for all other elements\r\n var box\r\n\r\n if (!width || !height) {\r\n box = this._element.bbox()\r\n }\r\n\r\n if (!width) {\r\n width = box.width / box.height * height\r\n }\r\n\r\n if (!height) {\r\n height = box.height / box.width * width\r\n }\r\n\r\n return this\r\n .width(width)\r\n .height(height)\r\n },\r\n\r\n // Add animatable width\r\n width (width) {\r\n return this._queueNumber('width', width)\r\n },\r\n\r\n // Add animatable height\r\n height (height) {\r\n return this._queueNumber('height', height)\r\n },\r\n\r\n // Add animatable plot\r\n plot (a, b, c, d) {\r\n // Lines can be plotted with 4 arguments\r\n if (arguments.length === 4) {\r\n return this.plot([a, b, c, d])\r\n }\r\n\r\n var morpher = this._element.MorphArray().to(a)\r\n\r\n this.queue(function () {\r\n morpher.from(this._element.array())\r\n }, function (pos) {\r\n this._element.plot(morpher.at(pos))\r\n })\r\n\r\n return this\r\n },\r\n\r\n // Add leading method\r\n leading (value) {\r\n return this._queueNumber('leading', value)\r\n },\r\n\r\n // Add animatable viewbox\r\n viewbox (x, y, width, height) {\r\n return this._queueObject('viewbox', new Box(x, y, width, height))\r\n },\r\n\r\n update (o) {\r\n if (typeof o !== 'object') {\r\n return this.update({\r\n offset: arguments[0],\r\n color: arguments[1],\r\n opacity: arguments[2]\r\n })\r\n }\r\n\r\n if (o.opacity != null) this.attr('stop-opacity', o.opacity)\r\n if (o.color != null) this.attr('stop-color', o.color)\r\n if (o.offset != null) this.attr('offset', o.offset)\r\n\r\n return this\r\n }\r\n})\r\n\r\nextend(Runner, { rx, ry, from, to })\r\n","import {\r\n adopt,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { ns, svgjs, xlink, xmlns } from '../modules/core/namespaces.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\nimport Defs from './Defs.js'\r\nimport { globals } from '../utils/window.js'\r\n\r\nexport default class Svg extends Container {\r\n constructor (node) {\r\n super(nodeOrNew('svg', node), node)\r\n this.namespace()\r\n }\r\n\r\n isRoot () {\r\n return !this.node.parentNode ||\r\n !(this.node.parentNode instanceof globals.window.SVGElement) ||\r\n this.node.parentNode.nodeName === '#document'\r\n }\r\n\r\n // Check if this is a root svg\r\n // If not, call docs from this element\r\n root () {\r\n if (this.isRoot()) return this\r\n return super.root()\r\n }\r\n\r\n // Add namespaces\r\n namespace () {\r\n if (!this.isRoot()) return this.root().namespace()\r\n return this\r\n .attr({ xmlns: ns, version: '1.1' })\r\n .attr('xmlns:xlink', xlink, xmlns)\r\n .attr('xmlns:svgjs', svgjs, xmlns)\r\n }\r\n\r\n // Creates and returns defs element\r\n defs () {\r\n if (!this.isRoot()) return this.root().defs()\r\n\r\n return adopt(this.node.getElementsByTagName('defs')[0]) ||\r\n this.put(new Defs())\r\n }\r\n\r\n // custom parent method\r\n parent (type) {\r\n if (this.isRoot()) {\r\n return this.node.parentNode.nodeName === '#document'\r\n ? null\r\n : adopt(this.node.parentNode)\r\n }\r\n\r\n return super.parent(type)\r\n }\r\n\r\n clear () {\r\n // remove children\r\n while (this.node.hasChildNodes()) {\r\n this.node.removeChild(this.node.lastChild)\r\n }\r\n return this\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create nested svg document\r\n nested: wrapWithAttrCheck(function () {\r\n return this.put(new Svg())\r\n })\r\n }\r\n})\r\n\r\nregister(Svg, 'Svg', true)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class Symbol extends Container {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('symbol', node), node)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n symbol: wrapWithAttrCheck(function () {\r\n return this.put(new Symbol())\r\n })\r\n }\r\n})\r\n\r\nregister(Symbol)\r\n","import { globals } from '../../utils/window.js'\r\n\r\n// Create plain text node\r\nexport function plain (text) {\r\n // clear if build mode is disabled\r\n if (this._build === false) {\r\n this.clear()\r\n }\r\n\r\n // create text node\r\n this.node.appendChild(globals.document.createTextNode(text))\r\n\r\n return this\r\n}\r\n\r\n// Get length of text element\r\nexport function length () {\r\n return this.node.getComputedTextLength()\r\n}\r\n","import {\r\n adopt,\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { attrs } from '../modules/core/defaults.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Shape from './Shape.js'\r\nimport { globals } from '../utils/window.js'\r\nimport * as textable from '../modules/core/textable.js'\r\n\r\nexport default class Text extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('text', node), node)\r\n\r\n this.dom.leading = new SVGNumber(1.3) // store leading value for rebuilding\r\n this._rebuild = true // enable automatic updating of dy values\r\n this._build = false // disable build mode for adding multiple lines\r\n\r\n // set default font\r\n this.attr('font-family', attrs['font-family'])\r\n }\r\n\r\n // Move over x-axis\r\n x (x) {\r\n // act as getter\r\n if (x == null) {\r\n return this.attr('x')\r\n }\r\n\r\n return this.attr('x', x)\r\n }\r\n\r\n // Move over y-axis\r\n y (y) {\r\n var oy = this.attr('y')\r\n var o = typeof oy === 'number' ? oy - this.bbox().y : 0\r\n\r\n // act as getter\r\n if (y == null) {\r\n return typeof oy === 'number' ? oy - o : oy\r\n }\r\n\r\n return this.attr('y', typeof y === 'number' ? y + o : y)\r\n }\r\n\r\n // Move center over x-axis\r\n cx (x) {\r\n return x == null ? this.bbox().cx : this.x(x - this.bbox().width / 2)\r\n }\r\n\r\n // Move center over y-axis\r\n cy (y) {\r\n return y == null ? this.bbox().cy : this.y(y - this.bbox().height / 2)\r\n }\r\n\r\n // Set the text content\r\n text (text) {\r\n // act as getter\r\n if (text === undefined) {\r\n var children = this.node.childNodes\r\n var firstLine = 0\r\n text = ''\r\n\r\n for (var i = 0, len = children.length; i < len; ++i) {\r\n // skip textPaths - they are no lines\r\n if (children[i].nodeName === 'textPath') {\r\n if (i === 0) firstLine = 1\r\n continue\r\n }\r\n\r\n // add newline if its not the first child and newLined is set to true\r\n if (i !== firstLine && children[i].nodeType !== 3 && adopt(children[i]).dom.newLined === true) {\r\n text += '\\n'\r\n }\r\n\r\n // add content of this node\r\n text += children[i].textContent\r\n }\r\n\r\n return text\r\n }\r\n\r\n // remove existing content\r\n this.clear().build(true)\r\n\r\n if (typeof text === 'function') {\r\n // call block\r\n text.call(this, this)\r\n } else {\r\n // store text and make sure text is not blank\r\n text = text.split('\\n')\r\n\r\n // build new lines\r\n for (var j = 0, jl = text.length; j < jl; j++) {\r\n this.tspan(text[j]).newLine()\r\n }\r\n }\r\n\r\n // disable build mode and rebuild lines\r\n return this.build(false).rebuild()\r\n }\r\n\r\n // Set / get leading\r\n leading (value) {\r\n // act as getter\r\n if (value == null) {\r\n return this.dom.leading\r\n }\r\n\r\n // act as setter\r\n this.dom.leading = new SVGNumber(value)\r\n\r\n return this.rebuild()\r\n }\r\n\r\n // Rebuild appearance type\r\n rebuild (rebuild) {\r\n // store new rebuild flag if given\r\n if (typeof rebuild === 'boolean') {\r\n this._rebuild = rebuild\r\n }\r\n\r\n // define position of all lines\r\n if (this._rebuild) {\r\n var self = this\r\n var blankLineOffset = 0\r\n var leading = this.dom.leading\r\n\r\n this.each(function () {\r\n var fontSize = globals.window.getComputedStyle(this.node)\r\n .getPropertyValue('font-size')\r\n var dy = leading * new SVGNumber(fontSize)\r\n\r\n if (this.dom.newLined) {\r\n this.attr('x', self.attr('x'))\r\n\r\n if (this.text() === '\\n') {\r\n blankLineOffset += dy\r\n } else {\r\n this.attr('dy', dy + blankLineOffset)\r\n blankLineOffset = 0\r\n }\r\n }\r\n })\r\n\r\n this.fire('rebuild')\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Enable / disable build mode\r\n build (build) {\r\n this._build = !!build\r\n return this\r\n }\r\n\r\n // overwrite method from parent to set data properly\r\n setData (o) {\r\n this.dom = o\r\n this.dom.leading = new SVGNumber(o.leading || 1.3)\r\n return this\r\n }\r\n}\r\n\r\nextend(Text, textable)\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create text element\r\n text: wrapWithAttrCheck(function (text) {\r\n return this.put(new Text()).text(text)\r\n }),\r\n\r\n // Create plain text element\r\n plain: wrapWithAttrCheck(function (text) {\r\n return this.put(new Text()).plain(text)\r\n })\r\n }\r\n})\r\n\r\nregister(Text)\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Text from './Text.js'\r\nimport * as textable from '../modules/core/textable.js'\r\n\r\nexport default class Tspan extends Text {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('tspan', node), node)\r\n }\r\n\r\n // Set text content\r\n text (text) {\r\n if (text == null) return this.node.textContent + (this.dom.newLined ? '\\n' : '')\r\n\r\n typeof text === 'function' ? text.call(this, this) : this.plain(text)\r\n\r\n return this\r\n }\r\n\r\n // Shortcut dx\r\n dx (dx) {\r\n return this.attr('dx', dx)\r\n }\r\n\r\n // Shortcut dy\r\n dy (dy) {\r\n return this.attr('dy', dy)\r\n }\r\n\r\n // Create new line\r\n newLine () {\r\n // fetch text parent\r\n var t = this.parent(Text)\r\n\r\n // mark new line\r\n this.dom.newLined = true\r\n\r\n // apply new position\r\n return this.dy(t.dom.leading * t.attr('font-size')).attr('x', t.x())\r\n }\r\n}\r\n\r\nextend(Tspan, textable)\r\n\r\nregisterMethods({\r\n Tspan: {\r\n tspan: wrapWithAttrCheck(function (text) {\r\n var tspan = new Tspan()\r\n\r\n // clear if build mode is disabled\r\n if (!this._build) {\r\n this.clear()\r\n }\r\n\r\n // add new tspan\r\n this.node.appendChild(tspan.node)\r\n\r\n return tspan.text(text)\r\n })\r\n }\r\n})\r\n\r\nregister(Tspan)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class ClipPath extends Container {\r\n constructor (node) {\r\n super(nodeOrNew('clipPath', node), node)\r\n }\r\n\r\n // Unclip all clipped elements and remove itself\r\n remove () {\r\n // unclip all targets\r\n this.targets().forEach(function (el) {\r\n el.unclip()\r\n })\r\n\r\n // remove clipPath from parent\r\n return super.remove()\r\n }\r\n\r\n targets () {\r\n return baseFind('svg [clip-path*=\"' + this.id() + '\"]')\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create clipping element\r\n clip: wrapWithAttrCheck(function () {\r\n return this.defs().put(new ClipPath())\r\n })\r\n },\r\n Element: {\r\n // Distribute clipPath to svg element\r\n clipWith (element) {\r\n // use given clip or create a new one\r\n let clipper = element instanceof ClipPath\r\n ? element\r\n : this.parent().clip().add(element)\r\n\r\n // apply mask\r\n return this.attr('clip-path', 'url(\"#' + clipper.id() + '\")')\r\n },\r\n\r\n // Unclip element\r\n unclip () {\r\n return this.attr('clip-path', null)\r\n },\r\n\r\n clipper () {\r\n return this.reference('clip-path')\r\n }\r\n }\r\n})\r\n\r\nregister(ClipPath)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class G extends Container {\r\n constructor (node) {\r\n super(nodeOrNew('g', node), node)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Element: {\r\n // Create a group element\r\n group: wrapWithAttrCheck(function () {\r\n return this.put(new G())\r\n })\r\n }\r\n})\r\n\r\nregister(G)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class A extends Container {\r\n constructor (node) {\r\n super(nodeOrNew('a', node), node)\r\n }\r\n\r\n // Link url\r\n to (url) {\r\n return this.attr('href', url, xlink)\r\n }\r\n\r\n // Link target attribute\r\n target (target) {\r\n return this.attr('target', target)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a hyperlink element\r\n link: wrapWithAttrCheck(function (url) {\r\n return this.put(new A()).to(url)\r\n })\r\n },\r\n Element: {\r\n // Create a hyperlink element\r\n linkTo: function (url) {\r\n var link = new A()\r\n\r\n if (typeof url === 'function') { url.call(link, link) } else {\r\n link.to(url)\r\n }\r\n\r\n return this.parent().put(link).put(this)\r\n }\r\n }\r\n})\r\n\r\nregister(A)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class Mask extends Container {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('mask', node), node)\r\n }\r\n\r\n // Unmask all masked elements and remove itself\r\n remove () {\r\n // unmask all targets\r\n this.targets().forEach(function (el) {\r\n el.unmask()\r\n })\r\n\r\n // remove mask from parent\r\n return super.remove()\r\n }\r\n\r\n targets () {\r\n return baseFind('svg [mask*=\"' + this.id() + '\"]')\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n mask: wrapWithAttrCheck(function () {\r\n return this.defs().put(new Mask())\r\n })\r\n },\r\n Element: {\r\n // Distribute mask to svg element\r\n maskWith (element) {\r\n // use given mask or create a new one\r\n var masker = element instanceof Mask\r\n ? element\r\n : this.parent().mask().add(element)\r\n\r\n // apply mask\r\n return this.attr('mask', 'url(\"#' + masker.id() + '\")')\r\n },\r\n\r\n // Unmask element\r\n unmask () {\r\n return this.attr('mask', null)\r\n },\r\n\r\n masker () {\r\n return this.reference('mask')\r\n }\r\n }\r\n})\r\n\r\nregister(Mask)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { unCamelCase } from '../utils/utils.js'\r\nimport Element from './Element.js'\r\n\r\nfunction cssRule (selector, rule) {\r\n if (!selector) return ''\r\n if (!rule) return selector\r\n\r\n var ret = selector + '{'\r\n\r\n for (var i in rule) {\r\n ret += unCamelCase(i) + ':' + rule[i] + ';'\r\n }\r\n\r\n ret += '}'\r\n\r\n return ret\r\n}\r\n\r\nexport default class Style extends Element {\r\n constructor (node) {\r\n super(nodeOrNew('style', node), node)\r\n }\r\n\r\n addText (w = '') {\r\n this.node.textContent += w\r\n return this\r\n }\r\n\r\n font (name, src, params = {}) {\r\n return this.rule('@font-face', {\r\n fontFamily: name,\r\n src: src,\r\n ...params\r\n })\r\n }\r\n\r\n rule (selector, obj) {\r\n return this.addText(cssRule(selector, obj))\r\n }\r\n}\r\n\r\nregisterMethods('Dom', {\r\n style: wrapWithAttrCheck(function (selector, obj) {\r\n return this.put(new Style()).rule(selector, obj)\r\n }),\r\n fontface: wrapWithAttrCheck(function (name, src, params) {\r\n return this.put(new Style()).font(name, src, params)\r\n })\r\n})\r\n\r\nregister(Style)\r\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Path from './Path.js'\r\nimport PathArray from '../types/PathArray.js'\r\nimport Text from './Text.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class TextPath extends Text {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('textPath', node), node)\r\n }\r\n\r\n // return the array of the path track element\r\n array () {\r\n var track = this.track()\r\n\r\n return track ? track.array() : null\r\n }\r\n\r\n // Plot path if any\r\n plot (d) {\r\n var track = this.track()\r\n var pathArray = null\r\n\r\n if (track) {\r\n pathArray = track.plot(d)\r\n }\r\n\r\n return (d == null) ? pathArray : this\r\n }\r\n\r\n // Get the path element\r\n track () {\r\n return this.reference('href')\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n textPath: wrapWithAttrCheck(function (text, path) {\r\n return this.defs().path(path).text(text).addTo(this)\r\n })\r\n },\r\n Text: {\r\n // Create path for text to run on\r\n path: wrapWithAttrCheck(function (track) {\r\n var path = new TextPath()\r\n\r\n // if track is a path, reuse it\r\n if (!(track instanceof Path)) {\r\n // create path element\r\n track = this.root().defs().path(track)\r\n }\r\n\r\n // link textPath to path and add content\r\n path.attr('href', '#' + track, xlink)\r\n\r\n // add textPath element as child node and return textPath\r\n return this.put(path)\r\n }),\r\n\r\n // Get the textPath children\r\n textPath () {\r\n return this.find('textPath')[0]\r\n }\r\n },\r\n Path: {\r\n // creates a textPath from this path\r\n text: wrapWithAttrCheck(function (text) {\r\n if (text instanceof Text) {\r\n var txt = text.text()\r\n return text.clear().path(this).text(txt)\r\n }\r\n return this.parent().put(new Text()).path(this).text(text)\r\n }),\r\n\r\n targets () {\r\n return baseFind('svg [href*=\"' + this.id() + '\"]')\r\n }\r\n }\r\n})\r\n\r\nTextPath.prototype.MorphArray = PathArray\r\nregister(TextPath)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Shape from './Shape.js'\r\n\r\nexport default class Use extends Shape {\r\n constructor (node) {\r\n super(nodeOrNew('use', node), node)\r\n }\r\n\r\n // Use element as a reference\r\n element (element, file) {\r\n // Set lined element\r\n return this.attr('href', (file || '') + '#' + element, xlink)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a use element\r\n use: wrapWithAttrCheck(function (element, file) {\r\n return this.put(new Use()).element(element, file)\r\n })\r\n }\r\n})\r\n\r\nregister(Use)\r\n","/* Optional Modules */\r\nimport './modules/optional/arrange.js'\r\nimport './modules/optional/class.js'\r\nimport './modules/optional/css.js'\r\nimport './modules/optional/data.js'\r\nimport './modules/optional/memory.js'\r\nimport './modules/optional/sugar.js'\r\nimport './modules/optional/transform.js'\r\n\r\nimport { extend, makeInstance } from './utils/adopter.js'\r\nimport { getMethodNames, getMethodsFor } from './utils/methods.js'\r\nimport Box from './types/Box.js'\r\nimport Circle from './elements/Circle.js'\r\nimport Color from './types/Color.js'\r\nimport Container from './elements/Container.js'\r\nimport Defs from './elements/Defs.js'\r\nimport Dom from './elements/Dom.js'\r\nimport Element from './elements/Element.js'\r\nimport Ellipse from './elements/Ellipse.js'\r\nimport EventTarget from './types/EventTarget.js'\r\nimport Gradient from './elements/Gradient.js'\r\nimport Image from './elements/Image.js'\r\nimport Line from './elements/Line.js'\r\nimport List from './types/List.js'\r\nimport Marker from './elements/Marker.js'\r\nimport Matrix from './types/Matrix.js'\r\nimport Morphable, {\r\n NonMorphable,\r\n ObjectBag,\r\n TransformBag,\r\n makeMorphable,\r\n registerMorphableType\r\n} from './animation/Morphable.js'\r\nimport Path from './elements/Path.js'\r\nimport PathArray from './types/PathArray.js'\r\nimport Pattern from './elements/Pattern.js'\r\nimport PointArray from './types/PointArray.js'\r\nimport Polygon from './elements/Polygon.js'\r\nimport Polyline from './elements/Polyline.js'\r\nimport Rect from './elements/Rect.js'\r\nimport Runner from './animation/Runner.js'\r\nimport SVGArray from './types/SVGArray.js'\r\nimport SVGNumber from './types/SVGNumber.js'\r\nimport Shape from './elements/Shape.js'\r\nimport Svg from './elements/Svg.js'\r\nimport Symbol from './elements/Symbol.js'\r\nimport Text from './elements/Text.js'\r\nimport Tspan from './elements/Tspan.js'\r\nimport * as defaults from './modules/core/defaults.js'\r\nimport * as utils from './utils/utils.js'\r\nimport * as namespaces from './modules/core/namespaces.js'\r\nimport * as regex from './modules/core/regex.js'\r\n\r\nexport {\r\n Morphable,\r\n registerMorphableType,\r\n makeMorphable,\r\n TransformBag,\r\n ObjectBag,\r\n NonMorphable\r\n}\r\n\r\nexport { defaults, utils, namespaces, regex }\r\nexport const SVG = makeInstance\r\nexport { default as parser } from './modules/core/parser.js'\r\nexport { default as find } from './modules/core/selector.js'\r\nexport * from './modules/core/event.js'\r\nexport * from './utils/adopter.js'\r\nexport { registerWindow } from './utils/window.js'\r\n\r\n/* Animation Modules */\r\nexport { default as Animator } from './animation/Animator.js'\r\nexport { Controller, Ease, PID, Spring, easing } from './animation/Controller.js'\r\nexport { default as Queue } from './animation/Queue.js'\r\nexport { default as Runner } from './animation/Runner.js'\r\nexport { default as Timeline } from './animation/Timeline.js'\r\n\r\n/* Types */\r\nexport { default as Array } from './types/SVGArray.js'\r\nexport { default as Box } from './types/Box.js'\r\nexport { default as Color } from './types/Color.js'\r\nexport { default as EventTarget } from './types/EventTarget.js'\r\nexport { default as Matrix } from './types/Matrix.js'\r\nexport { default as Number } from './types/SVGNumber.js'\r\nexport { default as PathArray } from './types/PathArray.js'\r\nexport { default as Point } from './types/Point.js'\r\nexport { default as PointArray } from './types/PointArray.js'\r\nexport { default as List } from './types/List.js'\r\n\r\n/* Elements */\r\nexport { default as Circle } from './elements/Circle.js'\r\nexport { default as ClipPath } from './elements/ClipPath.js'\r\nexport { default as Container } from './elements/Container.js'\r\nexport { default as Defs } from './elements/Defs.js'\r\nexport { default as Dom } from './elements/Dom.js'\r\nexport { default as Element } from './elements/Element.js'\r\nexport { default as Ellipse } from './elements/Ellipse.js'\r\nexport { default as Gradient } from './elements/Gradient.js'\r\nexport { default as G } from './elements/G.js'\r\nexport { default as A } from './elements/A.js'\r\nexport { default as Image } from './elements/Image.js'\r\nexport { default as Line } from './elements/Line.js'\r\nexport { default as Marker } from './elements/Marker.js'\r\nexport { default as Mask } from './elements/Mask.js'\r\nexport { default as Path } from './elements/Path.js'\r\nexport { default as Pattern } from './elements/Pattern.js'\r\nexport { default as Polygon } from './elements/Polygon.js'\r\nexport { default as Polyline } from './elements/Polyline.js'\r\nexport { default as Rect } from './elements/Rect.js'\r\nexport { default as Shape } from './elements/Shape.js'\r\nexport { default as Stop } from './elements/Stop.js'\r\nexport { default as Style } from './elements/Style.js'\r\nexport { default as Svg } from './elements/Svg.js'\r\nexport { default as Symbol } from './elements/Symbol.js'\r\nexport { default as Text } from './elements/Text.js'\r\nexport { default as TextPath } from './elements/TextPath.js'\r\nexport { default as Tspan } from './elements/Tspan.js'\r\nexport { default as Use } from './elements/Use.js'\r\n\r\nextend([\r\n Svg,\r\n Symbol,\r\n Image,\r\n Pattern,\r\n Marker\r\n], getMethodsFor('viewbox'))\r\n\r\nextend([\r\n Line,\r\n Polyline,\r\n Polygon,\r\n Path\r\n], getMethodsFor('marker'))\r\n\r\nextend(Text, getMethodsFor('Text'))\r\nextend(Path, getMethodsFor('Path'))\r\n\r\nextend(Defs, getMethodsFor('Defs'))\r\n\r\nextend([\r\n Text,\r\n Tspan\r\n], getMethodsFor('Tspan'))\r\n\r\nextend([\r\n Rect,\r\n Ellipse,\r\n Circle,\r\n Gradient\r\n], getMethodsFor('radius'))\r\n\r\nextend(EventTarget, getMethodsFor('EventTarget'))\r\nextend(Dom, getMethodsFor('Dom'))\r\nextend(Element, getMethodsFor('Element'))\r\nextend(Shape, getMethodsFor('Shape'))\r\n// extend(Element, getConstructor('Memory'))\r\nextend(Container, getMethodsFor('Container'))\r\n\r\nextend(Runner, getMethodsFor('Runner'))\r\n\r\nList.extend(getMethodNames())\r\n\r\nregisterMorphableType([\r\n SVGNumber,\r\n Color,\r\n Box,\r\n Matrix,\r\n SVGArray,\r\n PointArray,\r\n PathArray\r\n])\r\n\r\nmakeMorphable()\r\n","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","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","constructor","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","wks","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","KEY","fails","FProto","nameRE","_typeof2","obj","iterator","_typeof","match","$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","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","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","skipClosing","arr","iter","$iterDetect","BUGGY_ZERO","$instance","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","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","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","makeNode","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","getEvents","getEventHolder","events","getEventTarget","on","listener","binding","options","bind","bag","_svgjsListenerId","event","ev","addEventListener","off","namespace","removeEventListener","dispatch","Event","CustomEvent","detail","cancelable","dispatchEvent","_defineProperties","props","_createClass","protoProps","staticProps","define","compToHex","comp","$flags","Color","init","color","parseInt","substring","toHex","round","_assertThisInitialized","ReferenceError","_possibleConstructorReturn","assertThisInitialized","_getPrototypeOf","_get","property","receiver","Reflect","base","superPropBase","desc","_setPrototypeOf","_inherits","subClass","superClass","$match","regexp","Point","parser","nodes","svg","size","path","parentNode","body","addTo","isNulledBox","h","Box","parseFloat","left","top","x2","y2","cx","cy","xMin","Infinity","xMax","yMin","yMax","transform","pageXOffset","pageYOffset","getBox","cb","retry","contains","Error","closeEnough","threshold","abs","viewbox","Matrix","fromArray","Element","matrixify","isMatrixLike","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","determinant","ccw","sqrt","thetaRad","atan2","ct","cos","st","sin","matrix","clone","matrixMultiply","det","na","nb","nc","nd","ne","nf","inverseO","axis","around","flipO","lx","tan","ly","skew","aroundO","other","flipBoth","flip","flipX","flipY","scale","positionX","positionY","translate","relative","relativeX","relativeY","subClassArray","baseClass","_constructor","Arr","List","baseFind","query","querySelectorAll","each","fnOrMethodName","toArray","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","_defs","writeDataToDom","cloneNode","deep","selector","matches","matchesSelector","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","oMatchesSelector","SVGElement","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","Svg","dom","hasAttribute","setData","until","parents","getBBox","rbox","getBoundingClientRect","screenCTM","inverse","addOffset","ctm","getCTM","getScreenCTM","rect","sugar","prefix","_objectSpread","ownKeys","divide","extension","mat","angle","direction","directionString","dmove","plus","radius","_element","getTotalLength","pointAt","getPointAtLength","font","ax","ay","amove","untransform","str","kv","reverse","lmultiply","toParent","pCtm","multiply","toRoot","decomposed","decompose","Shape","Circle","circle","move","Container","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","MorphArray","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","pi","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","Polygon","polygon","poly","Polyline","polyline","Rect","Queue","_first","_last","item","Animator","nextDraw","frames","timeouts","timer","performance","Date","frame","run","requestAnimationFrame","_draw","transform_frame","timeout","time","now","cancelFrame","clearTimeout","nextTimeout","lastTimeout","shift","nextFrame","lastFrame","first","makeSchedule","runnerInfo","start","runner","end","defaultSource","Timeline","timeSource","_timeSource","_startTime","_speed","_persist","_nextFrame","_paused","_runners","_order","_time","_lastSourceTime","_lastStepTime","_step","when","absoluteStartTime","endTime","getEndTime","unschedule","persist","updateTime","_continue","splice","lastRunnerInfo","lastDuration","active","pause","speed","yes","currentSpeed","positive","dtOrForever","immediateStep","dtSource","dtTime","fire","runnersLeft","dtToStart","reset","_timeline","Runner","_queue","_isDeclarative","_history","enabled","_lastTime","_reseted","transformId","_haveReversed","_reverse","_loopsDone","_swing","_wait","_times","_prepareRunner","sanitise","loop","schedule","times","swing","wait","animate","initFn","runFn","retargetFn","isTransform","initialiser","retarget","initialised","finished","queue","loopDuration","loopsDone","partial","swinging","backwards","uncliped","pow","loops","swingForward","running","_lastPosition","justStarted","justFinished","declarative","_initialise","converged","_run","morpher","caller","needsIt","positionOrDt","allfinished","FakeRunner","mergeWith","getRunnerTransform","RunnerArray","runners","ids","leftSibling","lastRunner","_this2","edit","newRunner","deleteCnt","clearTransformsFromQueue","frameId","play","_clearTransformRunnersBefore","currentRunner","_transformationRunners","clearBefore","_currentTransform","addRunner","netTransform","merge","_frameId","styleAttr","zoom","level","affine","_tryRetarget","isMatrix","currentAngle","startTransform","clearTransform","rTarget","rCurrent","possibilities","distances","shortest","affineParameters","addTransform","newTransforms","_rememberMorpher","_queueNumber","_queueNumberDelta","newTo","_queueObject","center","getElementsByTagName","nested","symbol","_build","createTextNode","getComputedTextLength","Text","_rebuild","firstLine","nodeType","newLined","build","tspan","newLine","blankLineOffset","fontSize","getComputedStyle","getPropertyValue","textable","plain","Tspan","ClipPath","targets","unclip","clip","clipWith","clipper","group","link","linkTo","Mask","unmask","mask","maskWith","masker","Style","params","rule","fontFamily","addText","cssRule","fontface","$create","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$find","original","res","forced","TextPath","track","textPath","txt","Use","file","use","SVG","win","doc","mock","svgMembers"],"mappings":"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"} \ No newline at end of file
+{"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/_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/web.dom.iterable.js","../node_modules/core-js/modules/_object-sap.js","../node_modules/core-js/modules/es6.object.keys.js","../node_modules/core-js/modules/es6.function.name.js","../node_modules/@babel/runtime/helpers/esm/typeof.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","../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/@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.regexp.match.js","../src/types/Point.js","../src/modules/core/parser.js","../src/types/Box.js","../src/types/Matrix.js","../src/types/ArrayPolyfill.js","../src/types/List.js","../src/modules/core/selector.js","../src/types/EventTarget.js","../src/modules/core/defaults.js","../src/types/SVGArray.js","../src/types/SVGNumber.js","../src/modules/core/attr.js","../src/elements/Dom.js","../src/elements/Element.js","../src/modules/optional/sugar.js","../node_modules/@babel/runtime/helpers/esm/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/G.js","../src/elements/A.js","../src/elements/Mask.js","../src/elements/Style.js","../node_modules/core-js/modules/_array-species-constructor.js","../node_modules/core-js/modules/_array-methods.js","../node_modules/core-js/modules/es6.array.find.js","../node_modules/core-js/modules/_array-species-create.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 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 $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","// 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","// 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","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 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","const methods = {}\r\nconst names = []\r\n\r\nexport function registerMethods (name, m) {\r\n if (Array.isArray(name)) {\r\n for (let _name of name) {\r\n registerMethods(_name, m)\r\n }\r\n return\r\n }\r\n\r\n if (typeof name === 'object') {\r\n for (let _name in name) {\r\n registerMethods(_name, name[_name])\r\n }\r\n return\r\n }\r\n\r\n addMethodNames(Object.keys(m))\r\n methods[name] = Object.assign(methods[name] || {}, m)\r\n}\r\n\r\nexport function getMethodsFor (name) {\r\n return methods[name] || {}\r\n}\r\n\r\nexport function getMethodNames () {\r\n return [ ...new Set(names) ]\r\n}\r\n\r\nexport function addMethodNames (_names) {\r\n names.push(..._names)\r\n}\r\n","'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) {\r\n if (width == null || height == null) {\r\n var box = element.bbox()\r\n\r\n if (width == null) {\r\n width = box.width / box.height * height\r\n } else if (height == null) {\r\n height = box.height / box.width * width\r\n }\r\n }\r\n\r\n return {\r\n width: width,\r\n height: height\r\n }\r\n}\r\n\r\nexport function getOrigin (o, element) {\r\n // Allow origin or around as the names\r\n let origin = o.origin // o.around == null ? o.origin : o.around\r\n let ox, oy\r\n\r\n // Allow the user to pass a string to rotate around a given point\r\n if (typeof origin === 'string' || origin == null) {\r\n // Get the bounding box of the element with no transformations applied\r\n const string = (origin || 'center').toLowerCase().trim()\r\n const { height, width, x, y } = element.bbox()\r\n\r\n // Calculate the transformed x and y coordinates\r\n let bx = string.includes('left') ? x\r\n : string.includes('right') ? x + width\r\n : x + width / 2\r\n let by = string.includes('top') ? y\r\n : string.includes('bottom') ? y + height\r\n : y + height / 2\r\n\r\n // Set the bounds eg : \"bottom-left\", \"Top right\", \"middle\" etc...\r\n ox = o.ox != null ? o.ox : bx\r\n oy = o.oy != null ? o.oy : by\r\n } else {\r\n ox = origin[0]\r\n oy = origin[1]\r\n }\r\n\r\n // Return the origin as it is if it wasn't a string\r\n return [ ox, oy ]\r\n}\r\n","// @@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 makeNode (name) {\r\n // create element\r\n return globals.document.createElementNS(ns, name)\r\n}\r\n\r\nexport function makeInstance (element) {\r\n if (element instanceof Base) return element\r\n\r\n if (typeof element === 'object') {\r\n return 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 = makeNode('svg')\r\n node.innerHTML = element\r\n\r\n // We can use firstChild here because we know,\r\n // that the first char is < and thus an element\r\n element = 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 : makeNode(name)\r\n}\r\n\r\n// Adopt existing svg elements\r\nexport function adopt (node) {\r\n // check for presence of node\r\n if (!node) return null\r\n\r\n // make sure a node isn't already adopted\r\n if (node.instance instanceof Base) return node.instance\r\n\r\n // initialize variables\r\n var className = capitalize(node.nodeName)\r\n\r\n // Make sure that gradients are adopted correctly\r\n if (className === 'LinearGradient' || className === 'RadialGradient') {\r\n className = 'Gradient'\r\n\r\n // Fallback to Dom if element is not known\r\n } else if (!elements[className]) {\r\n className = 'Dom'\r\n }\r\n\r\n return new elements[className](node)\r\n}\r\n\r\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.keys(element.prototype))\r\n\r\n return element\r\n}\r\n\r\nexport function getClass (name) {\r\n return elements[name]\r\n}\r\n\r\n// Element id sequence\r\nlet did = 1000\r\n\r\n// Get next named element id\r\nexport function eid (name) {\r\n return 'Svgjs' + capitalize(name) + (did++)\r\n}\r\n\r\n// Deep new id assignment\r\nexport function assignNewId (node) {\r\n // do the same for SVG child nodes as well\r\n for (var i = node.children.length - 1; i >= 0; i--) {\r\n assignNewId(node.children[i])\r\n }\r\n\r\n if (node.id) {\r\n return adopt(node).id(eid(node.nodeName))\r\n }\r\n\r\n return adopt(node)\r\n}\r\n\r\n// Method for extending objects\r\nexport function extend (modules, methods, attrCheck) {\r\n var key, i\r\n\r\n modules = Array.isArray(modules) ? modules : [ modules ]\r\n\r\n for (i = modules.length - 1; i >= 0; i--) {\r\n for (key in methods) {\r\n let method = methods[key]\r\n if (attrCheck) {\r\n method = wrapWithAttrCheck(methods[key])\r\n }\r\n modules[i].prototype[key] = method\r\n }\r\n }\r\n}\r\n\r\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","import { makeInstance } from '../../utils/adopter.js'\r\nimport { registerMethods } from '../../utils/methods.js'\r\n\r\n// Get all siblings, including myself\r\nexport function siblings () {\r\n return this.parent().children()\r\n}\r\n\r\n// Get the curent position siblings\r\nexport function position () {\r\n return this.parent().index(this)\r\n}\r\n\r\n// Get the next element (will return null if there is none)\r\nexport function next () {\r\n return this.siblings()[this.position() + 1]\r\n}\r\n\r\n// Get the next element (will return null if there is none)\r\nexport function prev () {\r\n return this.siblings()[this.position() - 1]\r\n}\r\n\r\n// Send given element one step forward\r\nexport function forward () {\r\n var i = this.position() + 1\r\n var p = this.parent()\r\n\r\n // move node one step forward\r\n p.removeElement(this).add(this, i)\r\n\r\n // make sure defs node is always at the top\r\n if (typeof p.isRoot === 'function' && p.isRoot()) {\r\n p.node.appendChild(p.defs().node)\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Send given element one step backward\r\nexport function backward () {\r\n var i = this.position()\r\n\r\n if (i > 0) {\r\n this.parent().removeElement(this).add(this, i - 1)\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Send given element all the way to the front\r\nexport function front () {\r\n var p = this.parent()\r\n\r\n // Move node forward\r\n p.node.appendChild(this.node)\r\n\r\n // Make sure defs node is always at the top\r\n if (typeof p.isRoot === 'function' && p.isRoot()) {\r\n p.node.appendChild(p.defs().node)\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Send given element all the way to the back\r\nexport function back () {\r\n if (this.position() > 0) {\r\n this.parent().removeElement(this).add(this, 0)\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Inserts a given element before the targeted element\r\nexport function before (element) {\r\n element = makeInstance(element)\r\n element.remove()\r\n\r\n var i = this.position()\r\n\r\n this.parent().add(element, i)\r\n\r\n return this\r\n}\r\n\r\n// Inserts a given element after the targeted element\r\nexport function after (element) {\r\n element = makeInstance(element)\r\n element.remove()\r\n\r\n var i = this.position()\r\n\r\n this.parent().add(element, i + 1)\r\n\r\n return this\r\n}\r\n\r\nexport function insertBefore (element) {\r\n element = makeInstance(element)\r\n element.before(this)\r\n}\r\n\r\nexport function insertAfter (element) {\r\n element = makeInstance(element)\r\n element.after(this)\r\n}\r\n\r\nregisterMethods('Dom', {\r\n siblings,\r\n position,\r\n next,\r\n prev,\r\n forward,\r\n backward,\r\n front,\r\n back,\r\n before,\r\n after,\r\n insertBefore,\r\n insertAfter\r\n})\r\n","// @@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\n\r\nfunction getEvents (node) {\r\n const n = makeInstance(node).getEventHolder()\r\n if (!n.events) n.events = {}\r\n return n.events\r\n}\r\n\r\nfunction getEventTarget (node) {\r\n return makeInstance(node).getEventTarget()\r\n}\r\n\r\nfunction clearEvents (node) {\r\n const n = makeInstance(node).getEventHolder()\r\n if (n.events) n.events = {}\r\n}\r\n\r\n// Add event binder in the SVG namespace\r\nexport function on (node, events, listener, binding, options) {\r\n var l = listener.bind(binding || node)\r\n var bag = getEvents(node)\r\n var n = getEventTarget(node)\r\n\r\n // events can be an array of events or a string of events\r\n events = Array.isArray(events) ? events : events.split(delimiter)\r\n\r\n // add id to listener\r\n if (!listener._svgjsListenerId) {\r\n listener._svgjsListenerId = ++listenerId\r\n }\r\n\r\n events.forEach(function (event) {\r\n var ev = event.split('.')[0]\r\n var ns = event.split('.')[1] || '*'\r\n\r\n // ensure valid object\r\n bag[ev] = bag[ev] || {}\r\n bag[ev][ns] = bag[ev][ns] || {}\r\n\r\n // reference listener\r\n bag[ev][ns][listener._svgjsListenerId] = l\r\n\r\n // add listener\r\n n.addEventListener(ev, l, options || false)\r\n })\r\n}\r\n\r\n// Add event unbinder in the SVG namespace\r\nexport function off (node, events, listener, options) {\r\n var bag = getEvents(node)\r\n var n = getEventTarget(node)\r\n\r\n // listener can be a function or a number\r\n if (typeof listener === 'function') {\r\n listener = listener._svgjsListenerId\r\n if (!listener) return\r\n }\r\n\r\n // events can be an array of events or a string or undefined\r\n events = Array.isArray(events) ? events : (events || '').split(delimiter)\r\n\r\n events.forEach(function (event) {\r\n var ev = event && event.split('.')[0]\r\n var ns = event && event.split('.')[1]\r\n var namespace, l\r\n\r\n if (listener) {\r\n // remove listener reference\r\n if (bag[ev] && bag[ev][ns || '*']) {\r\n // removeListener\r\n n.removeEventListener(ev, bag[ev][ns || '*'][listener], options || false)\r\n\r\n delete bag[ev][ns || '*'][listener]\r\n }\r\n } else if (ev && ns) {\r\n // remove all listeners for a namespaced event\r\n if (bag[ev] && bag[ev][ns]) {\r\n for (l in bag[ev][ns]) {\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(node)\r\n }\r\n })\r\n}\r\n\r\nexport function dispatch (node, event, data) {\r\n var n = getEventTarget(node)\r\n\r\n // Dispatch event\r\n if (event instanceof globals.window.Event) {\r\n n.dispatchEvent(event)\r\n } else {\r\n event = new globals.window.CustomEvent(event, { detail: data, cancelable: true })\r\n n.dispatchEvent(event)\r\n }\r\n return event\r\n}\r\n","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 hex = integer.toString(16)\r\n return hex.length === 1 ? '0' + hex : hex\r\n}\r\n\r\nfunction is (object, space) {\r\n for (const key of space) {\r\n if (object[key] == 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 // 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 toHex () {\r\n let { _a, _b, _c } = this.rgb()\r\n let [ r, g, b ] = [ _a, _b, _c ].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 { r, g, b } = this.rgb()\r\n let { max, min, round } = Math\r\n let format = v => max(0, min(round(v), 255))\r\n let [ rV, gV, bV ] = [ r, g, b ].map(format)\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') {\r\n 'sine'\r\n 'pastel'\r\n 'vibrant'\r\n 'dark'\r\n 'rgb'\r\n 'lab'\r\n 'grey'\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 color += ''\r\n return isHex.test(color) || isRgb.test(color)\r\n }\r\n\r\n // Test if given value is a rgb object\r\n static isRgb (color) {\r\n return color && typeof color.r === 'number'\r\n && typeof color.g === 'number'\r\n && typeof color.b === 'number'\r\n }\r\n\r\n // Test if given value is a color\r\n static isColor (color) {\r\n return this.isRgb(color) || this.test(color)\r\n }\r\n}\r\n","export default 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}","// @@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","export default class Point {\r\n // Initialize\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (x, y) {\r\n let source\r\n let base = { x: 0, y: 0 }\r\n\r\n // ensure source as object\r\n source = Array.isArray(x) ? { x: x[0], y: x[1] }\r\n : typeof x === 'object' ? { x: x.x, y: x.y }\r\n : { x: x, y: y }\r\n\r\n // merge source\r\n this.x = source.x == null ? base.x : source.x\r\n this.y = source.y == null ? base.y : source.y\r\n\r\n return this\r\n }\r\n\r\n // Clone point\r\n clone () {\r\n return new Point(this)\r\n }\r\n\r\n // transform point with matrix\r\n transform (m) {\r\n // Perform the matrix multiplication\r\n var x = m.a * this.x + m.c * this.y + m.e\r\n var y = m.b * this.x + m.d * this.y + m.f\r\n\r\n // Return the required point\r\n return new Point(x, y)\r\n }\r\n\r\n toArray () {\r\n return [ this.x, this.y ]\r\n }\r\n}\r\n\r\nexport function point (x, y) {\r\n return new Point(x, y).transform(this.screenCTM().inverse())\r\n}\r\n","import { globals } from '../../utils/window.js'\r\nimport { makeInstance } from '../../utils/adopter.js'\r\n\r\nexport default function parser () {\r\n // Reuse cached element if possible\r\n if (!parser.nodes) {\r\n let svg = makeInstance().size(2, 0)\r\n svg.node.cssText = [\r\n 'opacity: 0',\r\n 'position: absolute',\r\n 'left: -100%',\r\n 'top: -100%',\r\n 'overflow: hidden'\r\n ].join(';')\r\n\r\n let path = svg.path().node\r\n\r\n parser.nodes = { svg, path }\r\n }\r\n\r\n if (!parser.nodes.svg.node.parentNode) {\r\n let b = globals.document.body || globals.document.documentElement\r\n parser.nodes.svg.addTo(b)\r\n }\r\n\r\n return parser.nodes\r\n}\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { globals } from '../utils/window.js'\r\nimport Point from './Point.js'\r\nimport parser from '../modules/core/parser.js'\r\n\r\nfunction isNulledBox (box) {\r\n return !box.w && !box.h && !box.x && !box.y\r\n}\r\n\r\nfunction domContains (node) {\r\n return (globals.document.documentElement.contains || function (node) {\r\n // This is IE - it does not support contains() for top-level SVGs\r\n while (node.parentNode) {\r\n node = node.parentNode\r\n }\r\n return node === document\r\n }).call(globals.document.documentElement, node)\r\n}\r\n\r\nexport default class Box {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (source) {\r\n var base = [ 0, 0, 0, 0 ]\r\n source = typeof source === 'string' ? source.split(delimiter).map(parseFloat)\r\n : Array.isArray(source) ? source\r\n : typeof source === 'object' ? [ source.left != null ? source.left\r\n : source.x, source.top != null ? source.top : source.y, source.width, source.height ]\r\n : arguments.length === 4 ? [].slice.call(arguments)\r\n : base\r\n\r\n this.x = source[0] || 0\r\n this.y = source[1] || 0\r\n this.width = this.w = source[2] || 0\r\n this.height = this.h = source[3] || 0\r\n\r\n // Add more bounding box properties\r\n this.x2 = this.x + this.w\r\n this.y2 = this.y + this.h\r\n this.cx = this.x + this.w / 2\r\n this.cy = this.y + this.h / 2\r\n\r\n return this\r\n }\r\n\r\n // Merge rect box with another, return a new instance\r\n merge (box) {\r\n let x = Math.min(this.x, box.x)\r\n let y = Math.min(this.y, box.y)\r\n let width = Math.max(this.x + this.width, box.x + box.width) - x\r\n let height = Math.max(this.y + this.height, box.y + box.height) - y\r\n\r\n return new Box(x, y, width, height)\r\n }\r\n\r\n transform (m) {\r\n let xMin = Infinity\r\n let xMax = -Infinity\r\n let yMin = Infinity\r\n let yMax = -Infinity\r\n\r\n let pts = [\r\n new Point(this.x, this.y),\r\n new Point(this.x2, this.y),\r\n new Point(this.x, this.y2),\r\n new Point(this.x2, this.y2)\r\n ]\r\n\r\n pts.forEach(function (p) {\r\n p = p.transform(m)\r\n xMin = Math.min(xMin, p.x)\r\n xMax = Math.max(xMax, p.x)\r\n yMin = Math.min(yMin, p.y)\r\n yMax = Math.max(yMax, p.y)\r\n })\r\n\r\n return new Box(\r\n xMin, yMin,\r\n xMax - xMin,\r\n yMax - yMin\r\n )\r\n }\r\n\r\n addOffset () {\r\n // offset by window scroll position, because getBoundingClientRect changes when window is scrolled\r\n this.x += globals.window.pageXOffset\r\n this.y += globals.window.pageYOffset\r\n return this\r\n }\r\n\r\n toString () {\r\n return this.x + ' ' + this.y + ' ' + this.width + ' ' + this.height\r\n }\r\n\r\n toArray () {\r\n return [ this.x, this.y, this.width, this.height ]\r\n }\r\n\r\n isNulled () {\r\n return isNulledBox(this)\r\n }\r\n}\r\n\r\nfunction getBox (cb, 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')\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})\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { radians } from '../utils/utils.js'\r\nimport Element from '../elements/Element.js'\r\nimport Point from './Point.js'\r\n\r\nfunction closeEnough (a, b, threshold) {\r\n return Math.abs(b - a) < (threshold || 1e-6)\r\n}\r\n\r\nexport default class Matrix {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n // Initialize\r\n init (source) {\r\n var base = Matrix.fromArray([ 1, 0, 0, 1, 0, 0 ])\r\n\r\n // ensure source as object\r\n source = source instanceof Element ? source.matrixify()\r\n : typeof source === 'string' ? Matrix.fromArray(source.split(delimiter).map(parseFloat))\r\n : Array.isArray(source) ? Matrix.fromArray(source)\r\n : (typeof source === 'object' && Matrix.isMatrixLike(source)) ? source\r\n : (typeof source === 'object') ? new Matrix().transform(source)\r\n : arguments.length === 6 ? Matrix.fromArray([].slice.call(arguments))\r\n : base\r\n\r\n // Merge the source matrix with the base matrix\r\n this.a = source.a != null ? source.a : base.a\r\n this.b = source.b != null ? source.b : base.b\r\n this.c = source.c != null ? source.c : base.c\r\n this.d = source.d != null ? source.d : base.d\r\n this.e = source.e != null ? source.e : base.e\r\n this.f = source.f != null ? source.f : base.f\r\n\r\n return this\r\n }\r\n\r\n // Clones this matrix\r\n clone () {\r\n return new Matrix(this)\r\n }\r\n\r\n // Transform a matrix into another matrix by manipulating the space\r\n transform (o) {\r\n // Check if o is a matrix and then left multiply it directly\r\n if (Matrix.isMatrixLike(o)) {\r\n var matrix = new Matrix(o)\r\n return matrix.multiplyO(this)\r\n }\r\n\r\n // Get the proposed transformations and the current transformations\r\n var t = Matrix.formatTransforms(o)\r\n var current = this\r\n let { x: ox, y: oy } = new Point(t.ox, t.oy).transform(current)\r\n\r\n // Construct the resulting matrix\r\n var transformer = new Matrix()\r\n .translateO(t.rx, t.ry)\r\n .lmultiplyO(current)\r\n .translateO(-ox, -oy)\r\n .scaleO(t.scaleX, t.scaleY)\r\n .skewO(t.skewX, t.skewY)\r\n .shearO(t.shear)\r\n .rotateO(t.theta)\r\n .translateO(ox, oy)\r\n\r\n // If we want the origin at a particular place, we force it there\r\n if (isFinite(t.px) || isFinite(t.py)) {\r\n const origin = new Point(ox, oy).transform(transformer)\r\n // TODO: Replace t.px with isFinite(t.px)\r\n const dx = t.px ? t.px - origin.x : 0\r\n const dy = t.py ? t.py - origin.y : 0\r\n transformer.translateO(dx, dy)\r\n }\r\n\r\n // Translate now after positioning\r\n transformer.translateO(t.tx, t.ty)\r\n return transformer\r\n }\r\n\r\n // Applies a matrix defined by its affine parameters\r\n compose (o) {\r\n if (o.origin) {\r\n o.originX = o.origin[0]\r\n o.originY = o.origin[1]\r\n }\r\n // Get the parameters\r\n var ox = o.originX || 0\r\n var oy = o.originY || 0\r\n var sx = o.scaleX || 1\r\n var sy = o.scaleY || 1\r\n var lam = o.shear || 0\r\n var theta = o.rotate || 0\r\n var tx = o.translateX || 0\r\n var ty = o.translateY || 0\r\n\r\n // Apply the standard matrix\r\n var result = new Matrix()\r\n .translateO(-ox, -oy)\r\n .scaleO(sx, sy)\r\n .shearO(lam)\r\n .rotateO(theta)\r\n .translateO(tx, ty)\r\n .lmultiplyO(this)\r\n .translateO(ox, oy)\r\n return result\r\n }\r\n\r\n // Decomposes this matrix into its affine parameters\r\n decompose (cx = 0, cy = 0) {\r\n // Get the parameters from the matrix\r\n var a = this.a\r\n var b = this.b\r\n var c = this.c\r\n var d = this.d\r\n var e = this.e\r\n var f = this.f\r\n\r\n // Figure out if the winding direction is clockwise or counterclockwise\r\n var determinant = a * d - b * c\r\n var ccw = determinant > 0 ? 1 : -1\r\n\r\n // Since we only shear in x, we can use the x basis to get the x scale\r\n // and the rotation of the resulting matrix\r\n var sx = ccw * Math.sqrt(a * a + b * b)\r\n var thetaRad = Math.atan2(ccw * b, ccw * a)\r\n var theta = 180 / Math.PI * thetaRad\r\n var ct = Math.cos(thetaRad)\r\n var st = Math.sin(thetaRad)\r\n\r\n // We can then solve the y basis vector simultaneously to get the other\r\n // two affine parameters directly from these parameters\r\n var lam = (a * c + b * d) / determinant\r\n var sy = ((c * sx) / (lam * a - b)) || ((d * sx) / (lam * b + a))\r\n\r\n // Use the translations\r\n let tx = e - cx + cx * ct * sx + cy * (lam * ct * sx - st * sy)\r\n let ty = f - cy + cx * st * sx + cy * (lam * st * sx + ct * sy)\r\n\r\n // Construct the decomposition and return it\r\n return {\r\n // Return the affine parameters\r\n scaleX: sx,\r\n scaleY: sy,\r\n shear: lam,\r\n rotate: theta,\r\n translateX: tx,\r\n translateY: ty,\r\n originX: cx,\r\n originY: cy,\r\n\r\n // Return the matrix parameters\r\n a: this.a,\r\n b: this.b,\r\n c: this.c,\r\n d: this.d,\r\n e: this.e,\r\n f: this.f\r\n }\r\n }\r\n\r\n // Left multiplies by the given matrix\r\n multiply (matrix) {\r\n return this.clone().multiplyO(matrix)\r\n }\r\n\r\n multiplyO (matrix) {\r\n // Get the matrices\r\n var l = this\r\n var r = matrix instanceof Matrix\r\n ? matrix\r\n : new Matrix(matrix)\r\n\r\n return Matrix.matrixMultiply(l, r, this)\r\n }\r\n\r\n lmultiply (matrix) {\r\n return this.clone().lmultiplyO(matrix)\r\n }\r\n\r\n lmultiplyO (matrix) {\r\n var r = this\r\n var l = matrix instanceof Matrix\r\n ? matrix\r\n : new Matrix(matrix)\r\n\r\n return Matrix.matrixMultiply(l, r, this)\r\n }\r\n\r\n // Inverses matrix\r\n inverseO () {\r\n // Get the current parameters out of the matrix\r\n var a = this.a\r\n var b = this.b\r\n var c = this.c\r\n var d = this.d\r\n var e = this.e\r\n var f = this.f\r\n\r\n // Invert the 2x2 matrix in the top left\r\n var det = a * d - b * c\r\n if (!det) throw new Error('Cannot invert ' + this)\r\n\r\n // Calculate the top 2x2 matrix\r\n var na = d / det\r\n var nb = -b / det\r\n var nc = -c / det\r\n var nd = a / det\r\n\r\n // Apply the inverted matrix to the top right\r\n var ne = -(na * e + nc * f)\r\n var nf = -(nb * e + nd * f)\r\n\r\n // Construct the inverted matrix\r\n this.a = na\r\n this.b = nb\r\n this.c = nc\r\n this.d = nd\r\n this.e = ne\r\n this.f = nf\r\n\r\n return this\r\n }\r\n\r\n inverse () {\r\n return this.clone().inverseO()\r\n }\r\n\r\n // Translate matrix\r\n translate (x, y) {\r\n return this.clone().translateO(x, y)\r\n }\r\n\r\n translateO (x, y) {\r\n this.e += x || 0\r\n this.f += y || 0\r\n return this\r\n }\r\n\r\n // Scale matrix\r\n scale (x, y, cx, cy) {\r\n return this.clone().scaleO(...arguments)\r\n }\r\n\r\n scaleO (x, y = x, cx = 0, cy = 0) {\r\n // Support uniform scaling\r\n if (arguments.length === 3) {\r\n cy = cx\r\n cx = y\r\n y = x\r\n }\r\n\r\n let { a, b, c, d, e, f } = this\r\n\r\n this.a = a * x\r\n this.b = b * y\r\n this.c = c * x\r\n this.d = d * y\r\n this.e = e * x - cx * x + cx\r\n this.f = f * y - cy * y + cy\r\n\r\n return this\r\n }\r\n\r\n // Rotate matrix\r\n rotate (r, cx, cy) {\r\n return this.clone().rotateO(r, cx, cy)\r\n }\r\n\r\n rotateO (r, cx = 0, cy = 0) {\r\n // Convert degrees to radians\r\n r = radians(r)\r\n\r\n let cos = Math.cos(r)\r\n let sin = Math.sin(r)\r\n\r\n let { a, b, c, d, e, f } = this\r\n\r\n this.a = a * cos - b * sin\r\n this.b = b * cos + a * sin\r\n this.c = c * cos - d * sin\r\n this.d = d * cos + c * sin\r\n this.e = e * cos - f * sin + cy * sin - cx * cos + cx\r\n this.f = f * cos + e * sin - cx * sin - cy * cos + cy\r\n\r\n return this\r\n }\r\n\r\n // Flip matrix on x or y, at a given offset\r\n flip (axis, around) {\r\n return this.clone().flipO(axis, around)\r\n }\r\n\r\n flipO (axis, around) {\r\n return axis === 'x' ? this.scaleO(-1, 1, around, 0)\r\n : axis === 'y' ? this.scaleO(1, -1, 0, around)\r\n : this.scaleO(-1, -1, axis, around || axis) // Define an x, y flip point\r\n }\r\n\r\n // Shear matrix\r\n shear (a, cx, cy) {\r\n return this.clone().shearO(a, cx, cy)\r\n }\r\n\r\n shearO (lx, cx = 0, cy = 0) {\r\n let { a, b, c, d, e, f } = this\r\n\r\n this.a = a + b * lx\r\n this.c = c + d * lx\r\n this.e = e + f * lx - cy * lx\r\n\r\n return this\r\n }\r\n\r\n // Skew Matrix\r\n skew (x, y, cx, cy) {\r\n return this.clone().skewO(...arguments)\r\n }\r\n\r\n skewO (x, y = x, cx = 0, cy = 0) {\r\n // support uniformal skew\r\n if (arguments.length === 3) {\r\n cy = cx\r\n cx = y\r\n y = x\r\n }\r\n\r\n // Convert degrees to radians\r\n x = radians(x)\r\n y = radians(y)\r\n\r\n let lx = Math.tan(x)\r\n let ly = Math.tan(y)\r\n\r\n let { a, b, c, d, e, f } = this\r\n\r\n this.a = a + b * lx\r\n this.b = b + a * ly\r\n this.c = c + d * lx\r\n this.d = d + c * ly\r\n this.e = e + f * lx - cy * lx\r\n this.f = f + e * ly - cx * ly\r\n\r\n return this\r\n }\r\n\r\n // SkewX\r\n skewX (x, cx, cy) {\r\n return this.skew(x, 0, cx, cy)\r\n }\r\n\r\n skewXO (x, cx, cy) {\r\n return this.skewO(x, 0, cx, cy)\r\n }\r\n\r\n // SkewY\r\n skewY (y, cx, cy) {\r\n return this.skew(0, y, cx, cy)\r\n }\r\n\r\n skewYO (y, cx, cy) {\r\n return this.skewO(0, y, cx, cy)\r\n }\r\n\r\n // Transform around a center point\r\n aroundO (cx, cy, matrix) {\r\n var dx = cx || 0\r\n var dy = cy || 0\r\n return this.translateO(-dx, -dy).lmultiplyO(matrix).translateO(dx, dy)\r\n }\r\n\r\n around (cx, cy, matrix) {\r\n return this.clone().aroundO(cx, cy, matrix)\r\n }\r\n\r\n // Check if two matrices are equal\r\n equals (other) {\r\n var comp = new Matrix(other)\r\n return closeEnough(this.a, comp.a) && closeEnough(this.b, comp.b)\r\n && closeEnough(this.c, comp.c) && closeEnough(this.d, comp.d)\r\n && closeEnough(this.e, comp.e) && closeEnough(this.f, comp.f)\r\n }\r\n\r\n // Convert matrix to string\r\n toString () {\r\n return 'matrix(' + this.a + ',' + this.b + ',' + this.c + ',' + this.d + ',' + this.e + ',' + this.f + ')'\r\n }\r\n\r\n toArray () {\r\n return [ this.a, this.b, this.c, this.d, this.e, this.f ]\r\n }\r\n\r\n valueOf () {\r\n return {\r\n a: this.a,\r\n b: this.b,\r\n c: this.c,\r\n d: this.d,\r\n e: this.e,\r\n f: this.f\r\n }\r\n }\r\n\r\n static fromArray (a) {\r\n return { a: a[0], b: a[1], c: a[2], d: a[3], e: a[4], f: a[5] }\r\n }\r\n\r\n static isMatrixLike (o) {\r\n return (\r\n o.a != null\r\n || o.b != null\r\n || o.c != null\r\n || o.d != null\r\n || o.e != null\r\n || o.f != null\r\n )\r\n }\r\n\r\n static formatTransforms (o) {\r\n // Get all of the parameters required to form the matrix\r\n var flipBoth = o.flip === 'both' || o.flip === true\r\n var flipX = o.flip && (flipBoth || o.flip === 'x') ? -1 : 1\r\n var flipY = o.flip && (flipBoth || o.flip === 'y') ? -1 : 1\r\n var skewX = o.skew && o.skew.length ? o.skew[0]\r\n : isFinite(o.skew) ? o.skew\r\n : isFinite(o.skewX) ? o.skewX\r\n : 0\r\n var skewY = o.skew && o.skew.length ? o.skew[1]\r\n : isFinite(o.skew) ? o.skew\r\n : isFinite(o.skewY) ? o.skewY\r\n : 0\r\n var scaleX = o.scale && o.scale.length ? o.scale[0] * flipX\r\n : isFinite(o.scale) ? o.scale * flipX\r\n : isFinite(o.scaleX) ? o.scaleX * flipX\r\n : flipX\r\n var scaleY = o.scale && o.scale.length ? o.scale[1] * flipY\r\n : isFinite(o.scale) ? o.scale * flipY\r\n : isFinite(o.scaleY) ? o.scaleY * flipY\r\n : flipY\r\n var shear = o.shear || 0\r\n var theta = o.rotate || o.theta || 0\r\n var origin = new Point(o.origin || o.around || o.ox || o.originX, o.oy || o.originY)\r\n var ox = origin.x\r\n var oy = origin.y\r\n var position = new Point(o.position || o.px || o.positionX, o.py || o.positionY)\r\n var px = position.x\r\n var py = position.y\r\n var translate = new Point(o.translate || o.tx || o.translateX, o.ty || o.translateY)\r\n var tx = translate.x\r\n var ty = translate.y\r\n var relative = new Point(o.relative || o.rx || o.relativeX, o.ry || o.relativeY)\r\n var rx = relative.x\r\n var ry = relative.y\r\n\r\n // Populate all of the values\r\n return {\r\n scaleX, scaleY, skewX, skewY, shear, theta, rx, ry, tx, ty, ox, oy, px, py\r\n }\r\n }\r\n\r\n // left matrix, right matrix, target matrix which is overwritten\r\n static matrixMultiply (l, r, o) {\r\n // Work out the product directly\r\n var a = l.a * r.a + l.c * r.b\r\n var b = l.b * r.a + l.d * r.b\r\n var c = l.a * r.c + l.c * r.d\r\n var d = l.b * r.c + l.d * r.d\r\n var e = l.e + l.a * r.e + l.c * r.f\r\n var f = l.f + l.b * r.e + l.d * r.f\r\n\r\n // make sure to use local variables because l/r and o could be the same\r\n o.a = a\r\n o.b = b\r\n o.c = c\r\n o.d = d\r\n o.e = e\r\n o.f = f\r\n\r\n return o\r\n }\r\n}\r\n\r\nexport function ctm () {\r\n return new Matrix(this.node.getCTM())\r\n}\r\n\r\nexport function screenCTM () {\r\n /* https://bugzilla.mozilla.org/show_bug.cgi?id=1344537\r\n This is needed because FF does not return the transformation matrix\r\n for the inner coordinate system when getScreenCTM() is called on nested svgs.\r\n However all other Browsers do that */\r\n if (typeof this.isRoot === 'function' && !this.isRoot()) {\r\n var rect = this.rect(1, 1)\r\n var m = rect.node.getScreenCTM()\r\n rect.remove()\r\n return new Matrix(m)\r\n }\r\n return new Matrix(this.node.getScreenCTM())\r\n}\r\n","/* eslint no-new-func: \"off\" */\r\nexport const subClassArray = (function () {\r\n try {\r\n // try es6 subclassing\r\n return Function('name', 'baseClass', '_constructor', [\r\n 'baseClass = baseClass || Array',\r\n 'return {',\r\n ' [name]: class extends baseClass {',\r\n ' constructor (...args) {',\r\n ' super(...args)',\r\n ' _constructor && _constructor.apply(this, args)',\r\n ' }',\r\n ' }',\r\n '}[name]'\r\n ].join('\\n'))\r\n } catch (e) {\r\n // Use es5 approach\r\n return (name, baseClass = Array, _constructor) => {\r\n const Arr = function () {\r\n baseClass.apply(this, arguments)\r\n _constructor && _constructor.apply(this, arguments)\r\n }\r\n\r\n Arr.prototype = Object.create(baseClass.prototype)\r\n Arr.prototype.constructor = Arr\r\n\r\n Arr.prototype.map = function (fn) {\r\n const arr = new Arr()\r\n arr.push.apply(arr, Array.prototype.map.call(this, fn))\r\n return arr\r\n }\r\n\r\n return Arr\r\n }\r\n }\r\n})()\r\n","import { extend } from '../utils/adopter.js'\r\nimport { subClassArray } from './ArrayPolyfill.js'\r\n\r\nconst List = subClassArray('List', Array, function (arr = []) {\r\n // This catches the case, that native map tries to create an array with new Array(1)\r\n if (typeof arr === 'number') return this\r\n this.length = 0\r\n this.push(...arr)\r\n})\r\n\r\nexport default List\r\n\r\nextend(List, {\r\n each (fnOrMethodName, ...args) {\r\n if (typeof fnOrMethodName === 'function') {\r\n this.forEach((el) => {\r\n 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 return this\r\n },\r\n\r\n toArray () {\r\n return Array.prototype.concat.apply([], this)\r\n }\r\n})\r\n\r\nList.extend = function (methods) {\r\n methods = methods.reduce((obj, name) => {\r\n obj[name] = function (...attrs) {\r\n return this.each(name, ...attrs)\r\n }\r\n return obj\r\n }, {})\r\n\r\n extend(List, methods)\r\n}\r\n","import { adopt } from '../../utils/adopter.js'\r\nimport { globals } from '../../utils/window.js'\r\nimport { map } from '../../utils/utils.js'\r\nimport List from '../../types/List.js'\r\n\r\nexport default function baseFind (query, parent) {\r\n return new List(map((parent || globals.document).querySelectorAll(query), function (node) {\r\n return adopt(node)\r\n }))\r\n}\r\n\r\n// Scoped find method\r\nexport function find (query) {\r\n return baseFind(query, this.node)\r\n}\r\n","import { dispatch, off, on } from '../modules/core/event.js'\r\nimport Base from './Base.js'\r\n\r\nexport default class EventTarget extends Base {\r\n constructor ({ events = {} } = {}) {\r\n super()\r\n this.events = events\r\n }\r\n\r\n addEventListener () {}\r\n\r\n dispatch (event, data) {\r\n return dispatch(this, event, data)\r\n }\r\n\r\n dispatchEvent (event) {\r\n const bag = this.getEventHolder().events\r\n if (!bag) return true\r\n\r\n const events = bag[event.type]\r\n\r\n for (let i in events) {\r\n for (let j in events[i]) {\r\n events[i][j](event)\r\n }\r\n }\r\n\r\n return !event.defaultPrevented\r\n }\r\n\r\n // Fire given event\r\n fire (event, data) {\r\n this.dispatch(event, data)\r\n return this\r\n }\r\n\r\n getEventHolder () {\r\n return this\r\n }\r\n\r\n getEventTarget () {\r\n return this\r\n }\r\n\r\n // Unbind event from listener\r\n off (event, listener) {\r\n off(this, event, listener)\r\n return this\r\n }\r\n\r\n // Bind given event to listener\r\n on (event, listener, binding, options) {\r\n on(this, event, listener, binding, options)\r\n return this\r\n }\r\n\r\n removeEventListener () {}\r\n}\r\n","\r\nexport function noop () {}\r\n\r\n// Default animation values\r\nexport let timeline = {\r\n duration: 400,\r\n ease: '>',\r\n delay: 0\r\n}\r\n\r\n// Default attribute values\r\nexport let attrs = {\r\n\r\n // fill and stroke\r\n 'fill-opacity': 1,\r\n 'stroke-opacity': 1,\r\n 'stroke-width': 0,\r\n 'stroke-linejoin': 'miter',\r\n 'stroke-linecap': 'butt',\r\n fill: '#000000',\r\n stroke: '#000000',\r\n opacity: 1,\r\n\r\n // position\r\n x: 0,\r\n y: 0,\r\n cx: 0,\r\n cy: 0,\r\n\r\n // size\r\n width: 0,\r\n height: 0,\r\n\r\n // radius\r\n r: 0,\r\n rx: 0,\r\n ry: 0,\r\n\r\n // gradient\r\n offset: 0,\r\n 'stop-opacity': 1,\r\n 'stop-color': '#000000',\r\n\r\n // text\r\n 'font-size': 16,\r\n 'font-family': 'Helvetica, Arial, sans-serif',\r\n 'text-anchor': 'start'\r\n}\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { extend } from '../utils/adopter.js'\r\nimport { subClassArray } from './ArrayPolyfill.js'\r\n\r\nconst SVGArray = subClassArray('SVGArray', Array, function (arr) {\r\n this.init(arr)\r\n})\r\n\r\nexport default SVGArray\r\n\r\nextend(SVGArray, {\r\n init (arr) {\r\n // This catches the case, that native map tries to create an array with new Array(1)\r\n if (typeof arr === 'number') return this\r\n this.length = 0\r\n this.push(...this.parse(arr))\r\n return this\r\n },\r\n\r\n toArray () {\r\n return Array.prototype.concat.apply([], this)\r\n },\r\n\r\n toString () {\r\n return this.join(' ')\r\n },\r\n\r\n // Flattens the array if needed\r\n valueOf () {\r\n const ret = []\r\n ret.push(...this)\r\n return ret\r\n },\r\n\r\n // Parse whitespace separated string\r\n parse (array = []) {\r\n // If already is an array, no need to parse it\r\n if (array instanceof Array) return array\r\n\r\n return array.trim().split(delimiter).map(parseFloat)\r\n },\r\n\r\n clone () {\r\n return new this.constructor(this)\r\n },\r\n\r\n toSet () {\r\n return new Set(this)\r\n }\r\n})\r\n","import { numberAndUnit } from '../modules/core/regex.js'\r\n\r\n// Module for unit convertions\r\nexport default class SVGNumber {\r\n // Initialize\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (value, unit) {\r\n unit = Array.isArray(value) ? value[1] : unit\r\n value = Array.isArray(value) ? value[0] : value\r\n\r\n // initialize defaults\r\n this.value = 0\r\n this.unit = unit || ''\r\n\r\n // parse value\r\n if (typeof value === 'number') {\r\n // ensure a valid numeric value\r\n this.value = isNaN(value) ? 0 : !isFinite(value) ? (value < 0 ? -3.4e+38 : +3.4e+38) : value\r\n } else if (typeof value === 'string') {\r\n unit = value.match(numberAndUnit)\r\n\r\n if (unit) {\r\n // make value numeric\r\n this.value = parseFloat(unit[1])\r\n\r\n // normalize\r\n if (unit[5] === '%') {\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","import { attrs as defaults } from './defaults.js'\r\nimport { isNumber } from './regex.js'\r\nimport Color from '../../types/Color.js'\r\nimport SVGArray from '../../types/SVGArray.js'\r\nimport SVGNumber from '../../types/SVGNumber.js'\r\n\r\nconst hooks = []\r\nexport function registerAttrHook (fn) {\r\n hooks.push(fn)\r\n}\r\n\r\n// Set svg element attribute\r\nexport default function attr (attr, val, ns) {\r\n // act as full getter\r\n if (attr == null) {\r\n // get an object of attributes\r\n attr = {}\r\n val = this.node.attributes\r\n\r\n for (let node of val) {\r\n attr[node.nodeName] = isNumber.test(node.nodeValue)\r\n ? parseFloat(node.nodeValue)\r\n : node.nodeValue\r\n }\r\n\r\n return attr\r\n } else if (attr instanceof Array) {\r\n // loop through array and get all values\r\n return attr.reduce((last, curr) => {\r\n last[curr] = this.attr(curr)\r\n return last\r\n }, {})\r\n } else if (typeof attr === 'object') {\r\n // apply every attribute individually if an object is passed\r\n for (val in attr) this.attr(val, attr[val])\r\n } else if (val === null) {\r\n // remove value\r\n this.node.removeAttribute(attr)\r\n } else if (val == null) {\r\n // act as a getter if the first and only argument is not an object\r\n val = this.node.getAttribute(attr)\r\n return val == null ? defaults[attr]\r\n : isNumber.test(val) ? parseFloat(val)\r\n : val\r\n } else {\r\n // Loop through hooks and execute them to convert value\r\n val = hooks.reduce((_val, hook) => {\r\n return hook(attr, _val, this)\r\n }, val)\r\n\r\n // ensure correct numeric values (also accepts NaN and Infinity)\r\n if (typeof val === 'number') {\r\n val = new SVGNumber(val)\r\n } else if (Color.isColor(val)) {\r\n // ensure full hex color\r\n val = new Color(val)\r\n } else if (val.constructor === Array) {\r\n // Check for plain arrays and parse array values\r\n val = new SVGArray(val)\r\n }\r\n\r\n // if the passed attribute is leading...\r\n if (attr === 'leading') {\r\n // ... call the leading method instead\r\n if (this.leading) {\r\n this.leading(val)\r\n }\r\n } else {\r\n // set given attribute on node\r\n typeof ns === 'string' ? this.node.setAttributeNS(ns, attr, val.toString())\r\n : this.node.setAttribute(attr, val.toString())\r\n }\r\n\r\n // rebuild if required\r\n if (this.rebuild && (attr === 'font-size' || attr === 'x')) {\r\n this.rebuild()\r\n }\r\n }\r\n\r\n return this\r\n}\r\n","import {\r\n adopt,\r\n assignNewId,\r\n eid,\r\n extend,\r\n makeInstance,\r\n makeNode,\r\n register\r\n} from '../utils/adopter.js'\r\nimport { find } from '../modules/core/selector.js'\r\nimport { globals } from '../utils/window.js'\r\nimport { map } from '../utils/utils.js'\r\nimport { ns } from '../modules/core/namespaces.js'\r\nimport EventTarget from '../types/EventTarget.js'\r\nimport List from '../types/List.js'\r\nimport attr from '../modules/core/attr.js'\r\n\r\nexport default class Dom extends EventTarget {\r\n constructor (node, attrs) {\r\n super(node)\r\n this.node = node\r\n this.type = node.nodeName\r\n\r\n if (attrs && node !== attrs) {\r\n this.attr(attrs)\r\n }\r\n }\r\n\r\n // Add given element at a position\r\n add (element, i) {\r\n element = makeInstance(element)\r\n\r\n if (i == null) {\r\n this.node.appendChild(element.node)\r\n } else if (element.node !== this.node.childNodes[i]) {\r\n this.node.insertBefore(element.node, this.node.childNodes[i])\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Add element to given container and return self\r\n addTo (parent) {\r\n return makeInstance(parent).put(this)\r\n }\r\n\r\n // Returns all child elements\r\n children () {\r\n return new List(map(this.node.children, function (node) {\r\n return adopt(node)\r\n }))\r\n }\r\n\r\n // Remove all elements in this container\r\n clear () {\r\n // remove children\r\n while (this.node.hasChildNodes()) {\r\n this.node.removeChild(this.node.lastChild)\r\n }\r\n\r\n // remove defs reference\r\n delete this._defs\r\n\r\n return this\r\n }\r\n\r\n // Clone element\r\n clone () {\r\n // write dom data to the dom so the clone can pickup the data\r\n this.writeDataToDom()\r\n\r\n // clone element and assign new id\r\n return assignNewId(this.node.cloneNode(true))\r\n }\r\n\r\n // Iterates over all children and invokes a given block\r\n each (block, deep) {\r\n var children = this.children()\r\n var i, il\r\n\r\n for (i = 0, il = children.length; i < il; i++) {\r\n block.apply(children[i], [ i, children ])\r\n\r\n if (deep) {\r\n children[i].each(block, deep)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n element (nodeName) {\r\n return this.put(new Dom(makeNode(nodeName)))\r\n }\r\n\r\n // Get first child\r\n first () {\r\n return adopt(this.node.firstChild)\r\n }\r\n\r\n // Get a element at the given index\r\n get (i) {\r\n return adopt(this.node.childNodes[i])\r\n }\r\n\r\n getEventHolder () {\r\n return this.node\r\n }\r\n\r\n getEventTarget () {\r\n return this.node\r\n }\r\n\r\n // Checks if the given element is a child\r\n has (element) {\r\n return this.index(element) >= 0\r\n }\r\n\r\n // Get / set id\r\n id (id) {\r\n // generate new id if no id set\r\n if (typeof id === 'undefined' && !this.node.id) {\r\n this.node.id = eid(this.type)\r\n }\r\n\r\n // dont't set directly width this.node.id to make `null` work correctly\r\n return this.attr('id', id)\r\n }\r\n\r\n // Gets index of given element\r\n index (element) {\r\n return [].slice.call(this.node.childNodes).indexOf(element.node)\r\n }\r\n\r\n // Get the last child\r\n last () {\r\n return adopt(this.node.lastChild)\r\n }\r\n\r\n // matches the element vs a css selector\r\n matches (selector) {\r\n const el = this.node\r\n return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector)\r\n }\r\n\r\n // Returns the parent element instance\r\n parent (type) {\r\n var parent = this\r\n\r\n // check for parent\r\n if (!parent.node.parentNode) return null\r\n\r\n // get parent element\r\n parent = adopt(parent.node.parentNode)\r\n\r\n if (!type) return parent\r\n\r\n // loop trough ancestors if type is given\r\n while (parent && parent.node instanceof globals.window.SVGElement) { // FIXME: That shouldnt be neccessary\r\n if (typeof type === 'string' ? parent.matches(type) : parent instanceof type) return parent\r\n parent = adopt(parent.node.parentNode)\r\n }\r\n }\r\n\r\n // Basically does the same as `add()` but returns the added element instead\r\n put (element, i) {\r\n this.add(element, i)\r\n return element\r\n }\r\n\r\n // Add element to given container and return container\r\n putIn (parent) {\r\n return makeInstance(parent).add(this)\r\n }\r\n\r\n // Remove element\r\n remove () {\r\n if (this.parent()) {\r\n this.parent().removeElement(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Remove a given child\r\n removeElement (element) {\r\n this.node.removeChild(element.node)\r\n\r\n return this\r\n }\r\n\r\n // Replace this with element\r\n replace (element) {\r\n element = makeInstance(element)\r\n this.node.parentNode.replaceChild(element.node, this.node)\r\n return element\r\n }\r\n\r\n round (precision = 2, map) {\r\n const factor = 10 ** precision\r\n const attrs = this.attr()\r\n\r\n // If we have no map, build one from attrs\r\n if (!map) {\r\n map = Object.keys(attrs)\r\n }\r\n\r\n // Holds rounded attributes\r\n const newAttrs = {}\r\n map.forEach((key) => {\r\n newAttrs[key] = Math.round(attrs[key] * factor) / factor\r\n })\r\n\r\n this.attr(newAttrs)\r\n return this\r\n }\r\n\r\n // Return id on string conversion\r\n toString () {\r\n return this.id()\r\n }\r\n\r\n // Import raw svg\r\n svg (svgOrFn, outerHTML) {\r\n var well, len, fragment\r\n\r\n if (svgOrFn === false) {\r\n outerHTML = false\r\n svgOrFn = null\r\n }\r\n\r\n // act as getter if no svg string is given\r\n if (svgOrFn == null || typeof svgOrFn === 'function') {\r\n // The default for exports is, that the outerNode is included\r\n outerHTML = outerHTML == null ? true : outerHTML\r\n\r\n // write svgjs data to the dom\r\n this.writeDataToDom()\r\n let current = this\r\n\r\n // An export modifier was passed\r\n if (svgOrFn != null) {\r\n current = adopt(current.node.cloneNode(true))\r\n\r\n // If the user wants outerHTML we need to process this node, too\r\n if (outerHTML) {\r\n let result = svgOrFn(current)\r\n current = result || current\r\n\r\n // The user does not want this node? Well, then he gets nothing\r\n if (result === false) return ''\r\n }\r\n\r\n // Deep loop through all children and apply modifier\r\n current.each(function () {\r\n let result = svgOrFn(this)\r\n let _this = result || this\r\n\r\n // If modifier returns false, discard node\r\n if (result === false) {\r\n this.remove()\r\n\r\n // If modifier returns new node, use it\r\n } else if (result && this !== _this) {\r\n this.replace(_this)\r\n }\r\n }, true)\r\n }\r\n\r\n // Return outer or inner content\r\n return outerHTML\r\n ? current.node.outerHTML\r\n : current.node.innerHTML\r\n }\r\n\r\n // Act as setter if we got a string\r\n\r\n // The default for import is, that the current node is not replaced\r\n outerHTML = outerHTML == null ? false : outerHTML\r\n\r\n // Create temporary holder\r\n well = globals.document.createElementNS(ns, 'svg')\r\n fragment = globals.document.createDocumentFragment()\r\n\r\n // Dump raw svg\r\n well.innerHTML = svgOrFn\r\n\r\n // Transplant nodes into the fragment\r\n for (len = well.children.length; len--;) {\r\n fragment.appendChild(well.firstElementChild)\r\n }\r\n\r\n let parent = this.parent()\r\n\r\n // Add the whole fragment at once\r\n return outerHTML\r\n ? this.replace(fragment) && parent\r\n : this.add(fragment)\r\n }\r\n\r\n words (text) {\r\n // This is faster than removing all children and adding a new one\r\n this.node.textContent = text\r\n return this\r\n }\r\n\r\n // write svgjs data to the dom\r\n writeDataToDom () {\r\n // dump variables recursively\r\n this.each(function () {\r\n this.writeDataToDom()\r\n })\r\n\r\n return this\r\n }\r\n}\r\n\r\nextend(Dom, { attr, find })\r\nregister(Dom)\r\n","import { bbox, rbox } from '../types/Box.js'\r\nimport { ctm, screenCTM } from '../types/Matrix.js'\r\nimport {\r\n extend,\r\n getClass,\r\n makeInstance,\r\n register,\r\n root\r\n} from '../utils/adopter.js'\r\nimport { globals } from '../utils/window.js'\r\nimport { point } from '../types/Point.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { reference } from '../modules/core/regex.js'\r\nimport Dom from './Dom.js'\r\nimport List from '../types/List.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\n\r\nconst Svg = getClass(root)\r\n\r\nexport default class Element extends Dom {\r\n constructor (node, attrs) {\r\n super(node, attrs)\r\n\r\n // initialize data object\r\n this.dom = {}\r\n\r\n // create circular reference\r\n this.node.instance = this\r\n\r\n if (node.hasAttribute('svgjs:data')) {\r\n // pull svgjs data from the dom (getAttributeNS doesn't work in html5)\r\n this.setData(JSON.parse(node.getAttribute('svgjs:data')) || {})\r\n }\r\n }\r\n\r\n // Move element by its center\r\n center (x, y) {\r\n return this.cx(x).cy(y)\r\n }\r\n\r\n // Move by center over x-axis\r\n cx (x) {\r\n return x == null ? this.x() + this.width() / 2 : this.x(x - this.width() / 2)\r\n }\r\n\r\n // Move by center over y-axis\r\n cy (y) {\r\n return y == null\r\n ? this.y() + this.height() / 2\r\n : this.y(y - this.height() / 2)\r\n }\r\n\r\n // Get defs\r\n defs () {\r\n return this.root().defs()\r\n }\r\n\r\n // Get parent document\r\n root () {\r\n let p = this.parent(Svg)\r\n return p && p.root()\r\n }\r\n\r\n getEventHolder () {\r\n return this\r\n }\r\n\r\n // Set height of element\r\n height (height) {\r\n return this.attr('height', height)\r\n }\r\n\r\n // Checks whether the given point inside the bounding box of the element\r\n inside (x, y) {\r\n let box = this.bbox()\r\n\r\n return x > box.x\r\n && y > box.y\r\n && x < box.x + box.width\r\n && y < box.y + box.height\r\n }\r\n\r\n // Move element to given x and y values\r\n move (x, y) {\r\n return this.x(x).y(y)\r\n }\r\n\r\n // return array of all ancestors of given type up to the root svg\r\n parents (until = globals.document) {\r\n until = makeInstance(until)\r\n let parents = new List()\r\n let parent = this\r\n\r\n while (\r\n (parent = parent.parent())\r\n && parent.node !== until.node\r\n && parent.node !== globals.document\r\n ) {\r\n parents.push(parent)\r\n }\r\n\r\n return parents\r\n }\r\n\r\n // Get referenced element form attribute value\r\n reference (attr) {\r\n attr = this.attr(attr)\r\n if (!attr) return null\r\n\r\n const m = attr.match(reference)\r\n return m ? makeInstance(m[1]) : null\r\n }\r\n\r\n // set given data to the elements data property\r\n setData (o) {\r\n this.dom = o\r\n return this\r\n }\r\n\r\n // Set element size to given width and height\r\n size (width, height) {\r\n let p = proportionalSize(this, width, height)\r\n\r\n return this\r\n .width(new SVGNumber(p.width))\r\n .height(new SVGNumber(p.height))\r\n }\r\n\r\n // Set width of element\r\n width (width) {\r\n return this.attr('width', width)\r\n }\r\n\r\n // write svgjs data to the dom\r\n writeDataToDom () {\r\n // remove previously set data\r\n this.node.removeAttribute('svgjs:data')\r\n\r\n if (Object.keys(this.dom).length) {\r\n this.node.setAttribute('svgjs:data', JSON.stringify(this.dom)) // see #428\r\n }\r\n\r\n return super.writeDataToDom()\r\n }\r\n\r\n // Move over x-axis\r\n x (x) {\r\n return this.attr('x', x)\r\n }\r\n\r\n // Move over y-axis\r\n y (y) {\r\n return this.attr('y', y)\r\n }\r\n}\r\n\r\nextend(Element, {\r\n bbox, rbox, point, ctm, screenCTM\r\n})\r\n\r\nregister(Element)\r\n","import { on, off } from '../core/event.js'\r\nimport { registerMethods } from '../../utils/methods.js'\r\nimport Color from '../../types/Color.js'\r\nimport Element from '../../elements/Element.js'\r\nimport Matrix from '../../types/Matrix.js'\r\nimport Point from '../../types/Point.js'\r\nimport SVGNumber from '../../types/SVGNumber.js'\r\n\r\n// Define list of available attributes for stroke and fill\r\nvar sugar = {\r\n stroke: [ 'color', 'width', 'opacity', 'linecap', 'linejoin', 'miterlimit', 'dasharray', 'dashoffset' ],\r\n fill: [ 'color', 'opacity', 'rule' ],\r\n prefix: function (t, a) {\r\n return a === 'color' ? t : t + '-' + a\r\n }\r\n}\r\n\r\n// Add sugar for fill and stroke\r\n;[ 'fill', 'stroke' ].forEach(function (m) {\r\n var extension = {}\r\n var i\r\n\r\n extension[m] = function (o) {\r\n if (typeof o === 'undefined') {\r\n return this.attr(m)\r\n }\r\n if (typeof o === 'string' || 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([ 'Shape', 'Runner' ], extension)\r\n})\r\n\r\nregisterMethods([ 'Element', 'Runner' ], {\r\n // Let the user set the matrix directly\r\n matrix: function (mat, b, c, d, e, f) {\r\n // Act as a getter\r\n if (mat == null) {\r\n return new Matrix(this)\r\n }\r\n\r\n // Act as a setter, the user can pass a matrix or a set of numbers\r\n return this.attr('transform', new Matrix(mat, b, c, d, e, f))\r\n },\r\n\r\n // Map rotation to transform\r\n rotate: function (angle, cx, cy) {\r\n return this.transform({ rotate: angle, ox: cx, oy: cy }, true)\r\n },\r\n\r\n // Map skew to transform\r\n skew: function (x, y, cx, cy) {\r\n return arguments.length === 1 || arguments.length === 3\r\n ? this.transform({ skew: x, ox: y, oy: cx }, true)\r\n : this.transform({ skew: [ x, y ], ox: cx, oy: cy }, true)\r\n },\r\n\r\n shear: function (lam, cx, cy) {\r\n return this.transform({ shear: lam, ox: cx, oy: cy }, true)\r\n },\r\n\r\n // Map scale to transform\r\n scale: function (x, y, cx, cy) {\r\n return arguments.length === 1 || arguments.length === 3\r\n ? this.transform({ scale: x, ox: y, oy: cx }, true)\r\n : this.transform({ scale: [ x, y ], ox: cx, oy: cy }, true)\r\n },\r\n\r\n // Map translate to transform\r\n translate: function (x, y) {\r\n return this.transform({ translate: [ x, y ] }, true)\r\n },\r\n\r\n // Map relative translations to transform\r\n relative: function (x, y) {\r\n return this.transform({ relative: [ x, y ] }, true)\r\n },\r\n\r\n // Map flip to transform\r\n flip: function (direction, around) {\r\n var directionString = typeof direction === 'string' ? direction\r\n : isFinite(direction) ? 'both'\r\n : 'both'\r\n var origin = (direction === 'both' && isFinite(around)) ? [ around, around ]\r\n : (direction === 'x') ? [ around, 0 ]\r\n : (direction === 'y') ? [ 0, around ]\r\n : isFinite(direction) ? [ direction, direction ]\r\n : [ 0, 0 ]\r\n this.transform({ flip: directionString, origin: origin }, true)\r\n },\r\n\r\n // Opacity\r\n opacity: function (value) {\r\n return this.attr('opacity', value)\r\n },\r\n\r\n // Relative move over x and y axes\r\n dmove: function (x, y) {\r\n return this.dx(x).dy(y)\r\n }\r\n})\r\n\r\nregisterMethods('Element', {\r\n // Relative move over x axis\r\n dx: function (x) {\r\n return this.x(new SVGNumber(x).plus(this.x()))\r\n },\r\n\r\n // Relative move over y axis\r\n dy: function (y) {\r\n return this.y(new SVGNumber(y).plus(this.y()))\r\n }\r\n})\r\n\r\nregisterMethods('radius', {\r\n // Add x and y radius\r\n radius: function (x, y) {\r\n var type = (this._element || this).type\r\n return type === 'radialGradient' || type === 'radialGradient'\r\n ? this.attr('r', new SVGNumber(x))\r\n : this.rx(x).ry(y == null ? x : y)\r\n }\r\n})\r\n\r\nregisterMethods('Path', {\r\n // Get path length\r\n length: function () {\r\n return this.node.getTotalLength()\r\n },\r\n // Get point at length\r\n pointAt: function (length) {\r\n return new Point(this.node.getPointAtLength(length))\r\n }\r\n})\r\n\r\nregisterMethods([ 'Element', 'Runner' ], {\r\n // Set font\r\n font: function (a, v) {\r\n if (typeof a === 'object') {\r\n for (v in a) this.font(v, a[v])\r\n }\r\n\r\n return a === 'leading'\r\n ? this.leading(v)\r\n : a === 'anchor'\r\n ? this.attr('text-anchor', v)\r\n : a === 'size' || a === 'family' || a === 'weight' || a === 'stretch' || a === 'variant' || a === 'style'\r\n ? this.attr('font-' + a, v)\r\n : this.attr(a, v)\r\n }\r\n})\r\n\r\nregisterMethods('Text', {\r\n ax (x) {\r\n return this.attr('x', x)\r\n },\r\n ay (y) {\r\n return this.attr('y', y)\r\n },\r\n amove (x, y) {\r\n return this.ax(x).ay(y)\r\n }\r\n})\r\n\r\n// Add events to elements\r\nconst methods = [ 'click',\r\n 'dblclick',\r\n 'mousedown',\r\n 'mouseup',\r\n 'mouseover',\r\n 'mouseout',\r\n 'mousemove',\r\n 'mouseenter',\r\n 'mouseleave',\r\n 'touchstart',\r\n 'touchmove',\r\n 'touchleave',\r\n 'touchend',\r\n 'touchcancel' ].reduce(function (last, event) {\r\n // add event to Element\r\n const fn = function (f) {\r\n if (f === null) {\r\n off(this, event)\r\n } else {\r\n on(this, event, f)\r\n }\r\n return this\r\n }\r\n\r\n last[event] = fn\r\n return last\r\n}, {})\r\n\r\nregisterMethods('Element', methods)\r\n","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 decomposed[o] || decomposed\r\n }\r\n\r\n if (!Matrix.isMatrixLike(o)) {\r\n // Set the origin according to the defined transform\r\n o = { ...o, origin: getOrigin(o, this) }\r\n }\r\n\r\n // The user can pass a boolean, an Element or an Matrix or nothing\r\n var cleanRelative = relative === true ? this : (relative || false)\r\n var result = new Matrix(cleanRelative).transform(o)\r\n return this.attr('transform', result)\r\n}\r\n\r\nregisterMethods('Element', {\r\n untransform, matrixify, toParent, toRoot, transform\r\n})\r\n","import { register } from '../utils/adopter.js'\r\nimport Element from './Element.js'\r\n\r\nexport default class Shape extends Element {}\r\n\r\nregister(Shape)\r\n","import { cx, cy, height, width, x, y } from '../modules/core/circled.js'\r\nimport {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Shape from './Shape.js'\r\n\r\nexport default class Circle extends Shape {\r\n constructor (node) {\r\n super(nodeOrNew('circle', node), node)\r\n }\r\n\r\n radius (r) {\r\n return this.attr('r', r)\r\n }\r\n\r\n // Radius x value\r\n rx (rx) {\r\n return this.attr('r', rx)\r\n }\r\n\r\n // Alias radius x value\r\n ry (ry) {\r\n return this.rx(ry)\r\n }\r\n\r\n size (size) {\r\n return this.radius(new SVGNumber(size).divide(2))\r\n }\r\n}\r\n\r\nextend(Circle, { x, y, cx, cy, width, height })\r\n\r\nregisterMethods({\r\n Element: {\r\n // Create circle element\r\n circle: wrapWithAttrCheck(function (size) {\r\n return this.put(new Circle())\r\n .size(size)\r\n .move(0, 0)\r\n })\r\n }\r\n})\r\n\r\nregister(Circle)\r\n","import { register } from '../utils/adopter.js'\r\nimport Element from './Element.js'\r\n\r\nexport default class Container extends Element {\r\n flatten (parent) {\r\n this.each(function () {\r\n if (this instanceof Container) return this.flatten(parent).ungroup(parent)\r\n return this.toParent(parent)\r\n })\r\n\r\n // we need this so that the root does not get removed\r\n this.node.firstElementChild || this.remove()\r\n\r\n return this\r\n }\r\n\r\n ungroup (parent) {\r\n parent = parent || this.parent()\r\n\r\n this.each(function () {\r\n return this.toParent(parent)\r\n })\r\n\r\n this.remove()\r\n\r\n return this\r\n }\r\n}\r\n\r\nregister(Container)\r\n","import { nodeOrNew, register } from '../utils/adopter.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class Defs extends Container {\r\n constructor (node) {\r\n super(nodeOrNew('defs', node), node)\r\n }\r\n\r\n flatten () {\r\n return this\r\n }\r\n ungroup () {\r\n return this\r\n }\r\n}\r\n\r\nregister(Defs)\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Shape from './Shape.js'\r\nimport * as circled from '../modules/core/circled.js'\r\n\r\nexport default class Ellipse extends Shape {\r\n constructor (node) {\r\n super(nodeOrNew('ellipse', node), node)\r\n }\r\n\r\n size (width, height) {\r\n var p = proportionalSize(this, width, height)\r\n\r\n return this\r\n .rx(new SVGNumber(p.width).divide(2))\r\n .ry(new SVGNumber(p.height).divide(2))\r\n }\r\n}\r\n\r\nextend(Ellipse, circled)\r\n\r\nregisterMethods('Container', {\r\n // Create an ellipse\r\n ellipse: wrapWithAttrCheck(function (width, height) {\r\n return this.put(new Ellipse()).size(width, height).move(0, 0)\r\n })\r\n})\r\n\r\nregister(Ellipse)\r\n","import { nodeOrNew, register } from '../utils/adopter.js'\r\nimport Element from './Element.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\n\r\nexport default class Stop extends Element {\r\n constructor (node) {\r\n super(nodeOrNew('stop', node), node)\r\n }\r\n\r\n // add color stops\r\n update (o) {\r\n if (typeof o === 'number' || o instanceof SVGNumber) {\r\n o = {\r\n offset: arguments[0],\r\n color: arguments[1],\r\n opacity: arguments[2]\r\n }\r\n }\r\n\r\n // set attributes\r\n if (o.opacity != null) this.attr('stop-opacity', o.opacity)\r\n if (o.color != null) this.attr('stop-color', o.color)\r\n if (o.offset != null) this.attr('offset', new SVGNumber(o.offset))\r\n\r\n return this\r\n }\r\n}\r\n\r\nregister(Stop)\r\n","import SVGNumber from '../../types/SVGNumber.js'\r\n\r\nexport function from (x, y) {\r\n return (this._element || this).type === 'radialGradient'\r\n ? this.attr({ fx: new SVGNumber(x), fy: new SVGNumber(y) })\r\n : this.attr({ x1: new SVGNumber(x), y1: new SVGNumber(y) })\r\n}\r\n\r\nexport function to (x, y) {\r\n return (this._element || this).type === 'radialGradient'\r\n ? this.attr({ cx: new SVGNumber(x), cy: new SVGNumber(y) })\r\n : this.attr({ x2: new SVGNumber(x), y2: new SVGNumber(y) })\r\n}\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Box from '../types/Box.js'\r\nimport Container from './Container.js'\r\nimport Stop from './Stop.js'\r\nimport baseFind from '../modules/core/selector.js'\r\nimport * as gradiented from '../modules/core/gradiented.js'\r\n\r\nexport default class Gradient extends Container {\r\n constructor (type, attrs) {\r\n super(\r\n nodeOrNew(type + 'Gradient', typeof type === 'string' ? null : type),\r\n attrs\r\n )\r\n }\r\n\r\n // Add a color stop\r\n stop (offset, color, opacity) {\r\n return this.put(new Stop()).update(offset, color, opacity)\r\n }\r\n\r\n // Update gradient\r\n update (block) {\r\n // remove all stops\r\n this.clear()\r\n\r\n // invoke passed block\r\n if (typeof block === 'function') {\r\n block.call(this, this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Return the fill id\r\n url () {\r\n return 'url(#' + this.id() + ')'\r\n }\r\n\r\n // Alias string convertion to fill\r\n toString () {\r\n return this.url()\r\n }\r\n\r\n // custom attr to handle transform\r\n attr (a, b, c) {\r\n if (a === 'transform') a = 'gradientTransform'\r\n return super.attr(a, b, c)\r\n }\r\n\r\n targets () {\r\n return baseFind('svg [fill*=\"' + this.id() + '\"]')\r\n }\r\n\r\n bbox () {\r\n return new Box()\r\n }\r\n}\r\n\r\nextend(Gradient, gradiented)\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create gradient element in defs\r\n gradient: wrapWithAttrCheck(function (type, block) {\r\n return this.defs().gradient(type, block)\r\n })\r\n },\r\n // define gradient\r\n Defs: {\r\n gradient: wrapWithAttrCheck(function (type, block) {\r\n return this.put(new Gradient(type)).update(block)\r\n })\r\n }\r\n})\r\n\r\nregister(Gradient)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Box from '../types/Box.js'\r\nimport Container from './Container.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class Pattern extends Container {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('pattern', node), node)\r\n }\r\n\r\n // Return the fill id\r\n url () {\r\n return 'url(#' + this.id() + ')'\r\n }\r\n\r\n // Update pattern by rebuilding\r\n update (block) {\r\n // remove content\r\n this.clear()\r\n\r\n // invoke passed block\r\n if (typeof block === 'function') {\r\n block.call(this, this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Alias string convertion to fill\r\n toString () {\r\n return this.url()\r\n }\r\n\r\n // custom attr to handle transform\r\n attr (a, b, c) {\r\n if (a === 'transform') a = 'patternTransform'\r\n return super.attr(a, b, c)\r\n }\r\n\r\n targets () {\r\n return baseFind('svg [fill*=\"' + this.id() + '\"]')\r\n }\r\n\r\n bbox () {\r\n return new Box()\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create pattern element in defs\r\n pattern (...args) {\r\n return this.defs().pattern(...args)\r\n }\r\n },\r\n Defs: {\r\n pattern: wrapWithAttrCheck(function (width, height, block) {\r\n return this.put(new Pattern()).update(block).attr({\r\n x: 0,\r\n y: 0,\r\n width: width,\r\n height: height,\r\n patternUnits: 'userSpaceOnUse'\r\n })\r\n })\r\n }\r\n})\r\n\r\nregister(Pattern)\r\n","import { isImage } from '../modules/core/regex.js'\r\nimport { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { off, on } from '../modules/core/event.js'\r\nimport { registerAttrHook } from '../modules/core/attr.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Pattern from './Pattern.js'\r\nimport Shape from './Shape.js'\r\nimport { globals } from '../utils/window.js'\r\n\r\nexport default class Image extends Shape {\r\n constructor (node) {\r\n super(nodeOrNew('image', node), node)\r\n }\r\n\r\n // (re)load image\r\n load (url, callback) {\r\n if (!url) return this\r\n\r\n var img = new globals.window.Image()\r\n\r\n on(img, 'load', function (e) {\r\n var p = this.parent(Pattern)\r\n\r\n // ensure image size\r\n if (this.width() === 0 && this.height() === 0) {\r\n this.size(img.width, img.height)\r\n }\r\n\r\n if (p instanceof Pattern) {\r\n // ensure pattern size if not set\r\n if (p.width() === 0 && p.height() === 0) {\r\n p.size(this.width(), this.height())\r\n }\r\n }\r\n\r\n if (typeof callback === 'function') {\r\n callback.call(this, e)\r\n }\r\n }, this)\r\n\r\n on(img, 'load error', function () {\r\n // dont forget to unbind memory leaking events\r\n off(img)\r\n })\r\n\r\n return this.attr('href', (img.src = url), xlink)\r\n }\r\n}\r\n\r\nregisterAttrHook(function (attr, val, _this) {\r\n // convert image fill and stroke to patterns\r\n if (attr === 'fill' || attr === 'stroke') {\r\n if (isImage.test(val)) {\r\n val = _this.root().defs().image(val)\r\n }\r\n }\r\n\r\n if (val instanceof Image) {\r\n val = _this.root().defs().pattern(0, 0, (pattern) => {\r\n pattern.add(val)\r\n })\r\n }\r\n\r\n return val\r\n})\r\n\r\nregisterMethods({\r\n Container: {\r\n // create image element, load image and set its size\r\n image: wrapWithAttrCheck(function (source, callback) {\r\n return this.put(new Image()).size(0, 0).load(source, callback)\r\n })\r\n }\r\n})\r\n\r\nregister(Image)\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { extend } from '../utils/adopter.js'\r\nimport { subClassArray } from './ArrayPolyfill.js'\r\nimport SVGArray from './SVGArray.js'\r\n\r\nconst PointArray = subClassArray('PointArray', SVGArray)\r\n\r\nexport default PointArray\r\n\r\nextend(PointArray, {\r\n // Convert array to string\r\n toString () {\r\n // convert to a poly point string\r\n for (var i = 0, il = this.length, array = []; i < il; i++) {\r\n array.push(this[i].join(','))\r\n }\r\n\r\n return array.join(' ')\r\n },\r\n\r\n // Convert array to line object\r\n toLine () {\r\n return {\r\n x1: this[0][0],\r\n y1: this[0][1],\r\n x2: this[1][0],\r\n y2: this[1][1]\r\n }\r\n },\r\n\r\n // Get morphed array at given position\r\n at (pos) {\r\n // make sure a destination is defined\r\n if (!this.destination) return this\r\n\r\n // generate morphed point string\r\n for (var i = 0, il = this.length, array = []; i < il; i++) {\r\n array.push([\r\n this[i][0] + (this.destination[i][0] - this[i][0]) * pos,\r\n this[i][1] + (this.destination[i][1] - this[i][1]) * pos\r\n ])\r\n }\r\n\r\n return new PointArray(array)\r\n },\r\n\r\n // Parse point string and flat array\r\n parse (array = [ [ 0, 0 ] ]) {\r\n var points = []\r\n\r\n // if it is an array\r\n if (array instanceof Array) {\r\n // and it is not flat, there is no need to parse it\r\n if (array[0] instanceof Array) {\r\n return array\r\n }\r\n } else { // Else, it is considered as a string\r\n // parse points\r\n array = array.trim().split(delimiter).map(parseFloat)\r\n }\r\n\r\n // validate points - https://svgwg.org/svg2-draft/shapes.html#DataTypePoints\r\n // Odd number of coordinates is an error. In such cases, drop the last odd coordinate.\r\n if (array.length % 2 !== 0) array.pop()\r\n\r\n // wrap points in two-tuples and parse points as floats\r\n for (var i = 0, len = array.length; i < len; i = i + 2) {\r\n points.push([ array[i], array[i + 1] ])\r\n }\r\n\r\n return points\r\n },\r\n\r\n // Move point string\r\n move (x, y) {\r\n var box = this.bbox()\r\n\r\n // get relative offset\r\n x -= box.x\r\n y -= box.y\r\n\r\n // move every point\r\n if (!isNaN(x) && !isNaN(y)) {\r\n for (var i = this.length - 1; i >= 0; i--) {\r\n this[i] = [ this[i][0] + x, this[i][1] + y ]\r\n }\r\n }\r\n\r\n return this\r\n },\r\n\r\n // Resize poly string\r\n size (width, height) {\r\n var i\r\n var box = this.bbox()\r\n\r\n // recalculate position of all points according to new size\r\n for (i = this.length - 1; i >= 0; i--) {\r\n if (box.width) this[i][0] = ((this[i][0] - box.x) * width) / box.width + box.x\r\n if (box.height) this[i][1] = ((this[i][1] - box.y) * height) / box.height + box.y\r\n }\r\n\r\n return this\r\n },\r\n\r\n // Get bounding box of points\r\n bbox () {\r\n var maxX = -Infinity\r\n var maxY = -Infinity\r\n var minX = Infinity\r\n var minY = Infinity\r\n this.forEach(function (el) {\r\n maxX = Math.max(el[0], maxX)\r\n maxY = Math.max(el[1], maxY)\r\n minX = Math.min(el[0], minX)\r\n minY = Math.min(el[1], minY)\r\n })\r\n return { x: minX, y: minY, width: maxX - minX, height: maxY - minY }\r\n }\r\n})\r\n","import PointArray from '../../types/PointArray.js'\r\n\r\nexport let MorphArray = PointArray\r\n\r\n// Move by left top corner over x-axis\r\nexport function x (x) {\r\n return x == null ? this.bbox().x : this.move(x, this.bbox().y)\r\n}\r\n\r\n// Move by left top corner over y-axis\r\nexport function y (y) {\r\n return y == null ? this.bbox().y : this.move(this.bbox().x, y)\r\n}\r\n\r\n// Set width of element\r\nexport function width (width) {\r\n let b = this.bbox()\r\n return width == null ? b.width : this.size(width, b.height)\r\n}\r\n\r\n// Set height of element\r\nexport function height (height) {\r\n let b = this.bbox()\r\n return height == null ? b.height : this.size(b.width, height)\r\n}\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PointArray from '../types/PointArray.js'\r\nimport Shape from './Shape.js'\r\nimport * as pointed from '../modules/core/pointed.js'\r\n\r\nexport default class Line extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('line', node), node)\r\n }\r\n\r\n // Get array\r\n array () {\r\n return new PointArray([\r\n [ this.attr('x1'), this.attr('y1') ],\r\n [ this.attr('x2'), this.attr('y2') ]\r\n ])\r\n }\r\n\r\n // Overwrite native plot() method\r\n plot (x1, y1, x2, y2) {\r\n if (x1 == null) {\r\n return this.array()\r\n } else if (typeof y1 !== 'undefined') {\r\n x1 = { x1: x1, y1: y1, x2: x2, y2: y2 }\r\n } else {\r\n x1 = new PointArray(x1).toLine()\r\n }\r\n\r\n return this.attr(x1)\r\n }\r\n\r\n // Move by left top corner\r\n move (x, y) {\r\n return this.attr(this.array().move(x, y).toLine())\r\n }\r\n\r\n // Set element size to given width and height\r\n size (width, height) {\r\n var p = proportionalSize(this, width, height)\r\n return this.attr(this.array().size(p.width, p.height).toLine())\r\n }\r\n}\r\n\r\nextend(Line, pointed)\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a line element\r\n line: wrapWithAttrCheck(function (...args) {\r\n // make sure plot is called as a setter\r\n // x1 is not necessarily a number, it can also be an array, a string and a PointArray\r\n return Line.prototype.plot.apply(\r\n this.put(new Line())\r\n , args[0] != null ? args : [ 0, 0, 0, 0 ]\r\n )\r\n })\r\n }\r\n})\r\n\r\nregister(Line)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class Marker extends Container {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('marker', node), node)\r\n }\r\n\r\n // Set width of element\r\n width (width) {\r\n return this.attr('markerWidth', width)\r\n }\r\n\r\n // Set height of element\r\n height (height) {\r\n return this.attr('markerHeight', height)\r\n }\r\n\r\n // Set marker refX and refY\r\n ref (x, y) {\r\n return this.attr('refX', x).attr('refY', y)\r\n }\r\n\r\n // Update marker\r\n update (block) {\r\n // remove all content\r\n this.clear()\r\n\r\n // invoke passed block\r\n if (typeof block === 'function') {\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)\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 // 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)).map(Object)\r\n return result\r\n }\r\n\r\n stepper (stepper) {\r\n if (stepper == null) return this._stepper\r\n this._stepper = stepper\r\n return this\r\n }\r\n\r\n done () {\r\n var complete = this._context\r\n .map(this._stepper.done)\r\n .reduce(function (last, curr) {\r\n return last && curr\r\n }, true)\r\n return complete\r\n }\r\n\r\n at (pos) {\r\n var _this = this\r\n\r\n return this._morphObj.fromArray(\r\n this._from.map(function (i, index) {\r\n return _this._stepper.step(i, _this._to[index], pos, _this._context[index], _this._context)\r\n })\r\n )\r\n }\r\n}\r\n\r\nexport class NonMorphable {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (val) {\r\n val = Array.isArray(val) ? val[0] : val\r\n this.value = val\r\n return this\r\n }\r\n\r\n valueOf () {\r\n return this.value\r\n }\r\n\r\n toArray () {\r\n return [ this.value ]\r\n }\r\n}\r\n\r\nexport class TransformBag {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (obj) {\r\n if (Array.isArray(obj)) {\r\n obj = {\r\n scaleX: obj[0],\r\n scaleY: obj[1],\r\n shear: obj[2],\r\n rotate: obj[3],\r\n translateX: obj[4],\r\n translateY: obj[5],\r\n originX: obj[6],\r\n originY: obj[7]\r\n }\r\n }\r\n\r\n Object.assign(this, TransformBag.defaults, obj)\r\n return this\r\n }\r\n\r\n toArray () {\r\n var v = this\r\n\r\n return [\r\n v.scaleX,\r\n v.scaleY,\r\n v.shear,\r\n v.rotate,\r\n v.translateX,\r\n v.translateY,\r\n v.originX,\r\n v.originY\r\n ]\r\n }\r\n}\r\n\r\nTransformBag.defaults = {\r\n scaleX: 1,\r\n scaleY: 1,\r\n shear: 0,\r\n rotate: 0,\r\n translateX: 0,\r\n translateY: 0,\r\n originX: 0,\r\n originY: 0\r\n}\r\n\r\nexport class ObjectBag {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (objOrArr) {\r\n this.values = []\r\n\r\n if (Array.isArray(objOrArr)) {\r\n this.values = objOrArr\r\n return\r\n }\r\n\r\n objOrArr = objOrArr || {}\r\n var entries = []\r\n\r\n for (let i in objOrArr) {\r\n entries.push([i, objOrArr[i]])\r\n }\r\n\r\n entries.sort((a, b) => {\r\n return a[0] - b[0]\r\n })\r\n\r\n this.values = entries.reduce((last, curr) => last.concat(curr), [])\r\n return this\r\n }\r\n\r\n valueOf () {\r\n var obj = {}\r\n var arr = this.values\r\n\r\n for (var i = 0, len = arr.length; i < len; i += 2) {\r\n obj[arr[i]] = arr[i + 1]\r\n }\r\n\r\n return obj\r\n }\r\n\r\n toArray () {\r\n return this.values\r\n }\r\n}\r\n\r\nconst morphableTypes = [\r\n NonMorphable,\r\n TransformBag,\r\n ObjectBag\r\n]\r\n\r\nexport function registerMorphableType (type = []) {\r\n morphableTypes.push(...[].concat(type))\r\n}\r\n\r\nexport function makeMorphable () {\r\n extend(morphableTypes, {\r\n to (val) {\r\n return new Morphable()\r\n .type(this.constructor)\r\n .from(this.valueOf())\r\n .to(val)\r\n },\r\n fromArray (arr) {\r\n this.init(arr)\r\n return this\r\n }\r\n })\r\n}\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PathArray from '../types/PathArray.js'\r\nimport Shape from './Shape.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class Path extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('path', node), node)\r\n }\r\n\r\n // Get array\r\n array () {\r\n return this._array || (this._array = new PathArray(this.attr('d')))\r\n }\r\n\r\n // Plot new path\r\n plot (d) {\r\n return (d == null) ? this.array()\r\n : this.clear().attr('d', typeof d === 'string' ? d : (this._array = new PathArray(d)))\r\n }\r\n\r\n // Clear array cache\r\n clear () {\r\n delete this._array\r\n return this\r\n }\r\n\r\n // Move by left top corner\r\n move (x, y) {\r\n return this.attr('d', this.array().move(x, y))\r\n }\r\n\r\n // Move by left top corner over x-axis\r\n x (x) {\r\n return x == null ? this.bbox().x : this.move(x, this.bbox().y)\r\n }\r\n\r\n // Move by left top corner over y-axis\r\n y (y) {\r\n return y == null ? this.bbox().y : this.move(this.bbox().x, y)\r\n }\r\n\r\n // Set element size to given width and height\r\n size (width, height) {\r\n var p = proportionalSize(this, width, height)\r\n return this.attr('d', this.array().size(p.width, p.height))\r\n }\r\n\r\n // Set width of element\r\n width (width) {\r\n return width == null ? this.bbox().width : this.size(width, this.bbox().height)\r\n }\r\n\r\n // Set height of element\r\n height (height) {\r\n return height == null ? this.bbox().height : this.size(this.bbox().width, height)\r\n }\r\n\r\n targets () {\r\n return baseFind('svg textpath [href*=\"' + this.id() + '\"]')\r\n }\r\n}\r\n\r\n// Define morphable array\r\nPath.prototype.MorphArray = PathArray\r\n\r\n// Add parent method\r\nregisterMethods({\r\n Container: {\r\n // Create a wrapped path element\r\n path: wrapWithAttrCheck(function (d) {\r\n // make sure plot is called as a setter\r\n return this.put(new Path()).plot(d || new PathArray())\r\n })\r\n }\r\n})\r\n\r\nregister(Path)\r\n","import { proportionalSize } from '../../utils/utils.js'\r\nimport PointArray from '../../types/PointArray.js'\r\n\r\n// Get array\r\nexport function array () {\r\n return this._array || (this._array = new PointArray(this.attr('points')))\r\n}\r\n\r\n// Plot new path\r\nexport function plot (p) {\r\n return (p == null) ? this.array()\r\n : this.clear().attr('points', typeof p === 'string' ? p\r\n : (this._array = new PointArray(p)))\r\n}\r\n\r\n// Clear array cache\r\nexport function clear () {\r\n delete this._array\r\n return this\r\n}\r\n\r\n// Move by left top corner\r\nexport function move (x, y) {\r\n return this.attr('points', this.array().move(x, y))\r\n}\r\n\r\n// Set element size to given width and height\r\nexport function size (width, height) {\r\n let p = proportionalSize(this, width, height)\r\n return this.attr('points', this.array().size(p.width, p.height))\r\n}\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PointArray from '../types/PointArray.js'\r\nimport Shape from './Shape.js'\r\nimport * as pointed from '../modules/core/pointed.js'\r\nimport * as poly from '../modules/core/poly.js'\r\n\r\nexport default class Polygon extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('polygon', node), node)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a wrapped polygon element\r\n polygon: wrapWithAttrCheck(function (p) {\r\n // make sure plot is called as a setter\r\n return this.put(new Polygon()).plot(p || new PointArray())\r\n })\r\n }\r\n})\r\n\r\nextend(Polygon, pointed)\r\nextend(Polygon, poly)\r\nregister(Polygon)\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PointArray from '../types/PointArray.js'\r\nimport Shape from './Shape.js'\r\nimport * as pointed from '../modules/core/pointed.js'\r\nimport * as poly from '../modules/core/poly.js'\r\n\r\nexport default class Polyline extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('polyline', node), node)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a wrapped polygon element\r\n polyline: wrapWithAttrCheck(function (p) {\r\n // make sure plot is called as a setter\r\n return this.put(new Polyline()).plot(p || new PointArray())\r\n })\r\n }\r\n})\r\n\r\nextend(Polyline, pointed)\r\nextend(Polyline, poly)\r\nregister(Polyline)\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { rx, ry } from '../modules/core/circled.js'\r\nimport Shape from './Shape.js'\r\n\r\nexport default class Rect extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('rect', node), node)\r\n }\r\n}\r\n\r\nextend(Rect, { rx, ry })\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a rect element\r\n rect: wrapWithAttrCheck(function (width, height) {\r\n return this.put(new Rect()).size(width, height)\r\n })\r\n }\r\n})\r\n\r\nregister(Rect)\r\n","export default class Queue {\r\n constructor () {\r\n this._first = null\r\n this._last = null\r\n }\r\n\r\n push (value) {\r\n // An item stores an id and the provided value\r\n var item = value.next ? value : { value: value, next: null, prev: null }\r\n\r\n // Deal with the queue being empty or populated\r\n if (this._last) {\r\n item.prev = this._last\r\n this._last.next = item\r\n this._last = item\r\n } else {\r\n this._last = item\r\n this._first = item\r\n }\r\n\r\n // Update the length and return the current item\r\n return item\r\n }\r\n\r\n shift () {\r\n // Check if we have a value\r\n var remove = this._first\r\n if (!remove) return null\r\n\r\n // If we do, remove it and relink things\r\n this._first = remove.next\r\n if (this._first) this._first.prev = null\r\n this._last = this._first ? this._last : null\r\n return remove.value\r\n }\r\n\r\n // Shows us the first item in the list\r\n first () {\r\n return this._first && this._first.value\r\n }\r\n\r\n // Shows us the last item in the list\r\n last () {\r\n return this._last && this._last.value\r\n }\r\n\r\n // Removes the item that was returned from the push\r\n remove (item) {\r\n // Relink the previous item\r\n if (item.prev) item.prev.next = item.next\r\n if (item.next) item.next.prev = item.prev\r\n if (item === this._last) this._last = item.prev\r\n if (item === this._first) this._first = item.next\r\n\r\n // Invalidate item\r\n item.prev = null\r\n item.next = null\r\n }\r\n}\r\n","import { globals } from '../utils/window.js'\r\nimport Queue from './Queue.js'\r\n\r\nconst Animator = {\r\n nextDraw: null,\r\n frames: new Queue(),\r\n timeouts: new Queue(),\r\n timer: () => globals.window.performance || globals.window.Date,\r\n transforms: [],\r\n\r\n frame (fn) {\r\n // Store the node\r\n var node = Animator.frames.push({ run: fn })\r\n\r\n // Request an animation frame if we don't have one\r\n if (Animator.nextDraw === null) {\r\n Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw)\r\n }\r\n\r\n // Return the node so we can remove it easily\r\n return node\r\n },\r\n\r\n transform_frame (fn, id) {\r\n Animator.transforms[id] = fn\r\n },\r\n\r\n timeout (fn, delay) {\r\n delay = delay || 0\r\n\r\n // Work out when the event should fire\r\n var time = Animator.timer().now() + delay\r\n\r\n // Add the timeout to the end of the queue\r\n var node = Animator.timeouts.push({ run: fn, time: time })\r\n\r\n // Request another animation frame if we need one\r\n if (Animator.nextDraw === null) {\r\n Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw)\r\n }\r\n\r\n return node\r\n },\r\n\r\n cancelFrame (node) {\r\n node != null && Animator.frames.remove(node)\r\n },\r\n\r\n clearTimeout (node) {\r\n node != null && Animator.timeouts.remove(node)\r\n },\r\n\r\n _draw (now) {\r\n // Run all the timeouts we can run, if they are not ready yet, add them\r\n // to the end of the queue immediately! (bad timeouts!!! [sarcasm])\r\n var nextTimeout = null\r\n var lastTimeout = Animator.timeouts.last()\r\n while ((nextTimeout = Animator.timeouts.shift())) {\r\n // Run the timeout if its time, or push it to the end\r\n if (now >= nextTimeout.time) {\r\n nextTimeout.run()\r\n } else {\r\n Animator.timeouts.push(nextTimeout)\r\n }\r\n\r\n // If we hit the last item, we should stop shifting out more items\r\n if (nextTimeout === lastTimeout) break\r\n }\r\n\r\n // Run all of the animation frames\r\n var nextFrame = null\r\n var lastFrame = Animator.frames.last()\r\n while ((nextFrame !== lastFrame) && (nextFrame = Animator.frames.shift())) {\r\n nextFrame.run()\r\n }\r\n\r\n Animator.transforms.forEach(function (el) {\r\n el()\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._order = []\r\n this._time = 0\r\n this._lastSourceTime = 0\r\n this._lastStepTime = 0\r\n\r\n // Make sure that step is always called in class context\r\n this._step = this._step.bind(this)\r\n }\r\n\r\n // schedules a runner on the timeline\r\n schedule (runner, delay, when) {\r\n if (runner == null) {\r\n return this._runners.map(makeSchedule).sort(function (a, b) {\r\n return a.runner.id - b.runner.id\r\n })\r\n }\r\n\r\n // The start time for the next animation can either be given explicitly,\r\n // derived from the current timeline time or it can be relative to the\r\n // last start time to chain animations direclty\r\n\r\n var absoluteStartTime = 0\r\n var endTime = this.getEndTime()\r\n delay = delay || 0\r\n\r\n // Work out when to start the animation\r\n if (when == null || when === 'last' || when === 'after') {\r\n // Take the last time and increment\r\n absoluteStartTime = endTime\r\n } else if (when === 'absolute' || when === 'start') {\r\n absoluteStartTime = delay\r\n delay = 0\r\n } else if (when === 'now') {\r\n absoluteStartTime = this._time\r\n } else if (when === 'relative') {\r\n let runnerInfo = this._runners[runner.id]\r\n if (runnerInfo) {\r\n absoluteStartTime = runnerInfo.start + delay\r\n delay = 0\r\n }\r\n } else {\r\n throw new Error('Invalid value for the \"when\" parameter')\r\n }\r\n\r\n // Manage runner\r\n runner.unschedule()\r\n runner.timeline(this)\r\n // runner.time(-delay)\r\n\r\n // Save runnerInfo\r\n this._runners[runner.id] = {\r\n persist: this.persist(),\r\n runner: runner,\r\n start: absoluteStartTime + delay\r\n }\r\n\r\n // Save order, update Time if needed and continue\r\n this._order.push(runner.id)\r\n this.updateTime()._continue()\r\n return this\r\n }\r\n\r\n // Remove the runner from this timeline\r\n unschedule (runner) {\r\n var index = this._order.indexOf(runner.id)\r\n if (index < 0) return this\r\n\r\n delete this._runners[runner.id]\r\n this._order.splice(index, 1)\r\n runner.timeline(null)\r\n return this\r\n }\r\n\r\n // Calculates the end of the timeline\r\n getEndTime () {\r\n var lastRunnerInfo = this._runners[this._order[this._order.length - 1]]\r\n var lastDuration = lastRunnerInfo ? lastRunnerInfo.runner.duration() : 0\r\n var lastStartTime = lastRunnerInfo ? lastRunnerInfo.start : 0\r\n return lastStartTime + lastDuration\r\n }\r\n\r\n // Makes sure, that after pausing the time doesn't jump\r\n updateTime () {\r\n if (!this.active()) {\r\n this._lastSourceTime = this._timeSource()\r\n }\r\n return this\r\n }\r\n\r\n play () {\r\n // Now make sure we are not paused and continue the animation\r\n this._paused = false\r\n return this.updateTime()._continue()\r\n }\r\n\r\n pause () {\r\n this._paused = true\r\n return this._continue()\r\n }\r\n\r\n stop () {\r\n // Go to start and pause\r\n this.time(0)\r\n return this.pause()\r\n }\r\n\r\n finish () {\r\n // Go to end and pause\r\n this.time(this.getEndTime() + 1)\r\n return this.pause()\r\n }\r\n\r\n speed (speed) {\r\n if (speed == null) return this._speed\r\n this._speed = speed\r\n return this\r\n }\r\n\r\n reverse (yes) {\r\n var currentSpeed = this.speed()\r\n if (yes == null) return this.speed(-currentSpeed)\r\n\r\n var positive = Math.abs(currentSpeed)\r\n return this.speed(yes ? positive : -positive)\r\n }\r\n\r\n seek (dt) {\r\n return this.time(this._time + dt)\r\n }\r\n\r\n time (time) {\r\n if (time == null) return this._time\r\n this._time = time\r\n return this._continue(true)\r\n }\r\n\r\n persist (dtOrForever) {\r\n if (dtOrForever == null) return this._persist\r\n this._persist = dtOrForever\r\n return this\r\n }\r\n\r\n source (fn) {\r\n if (fn == null) return this._timeSource\r\n this._timeSource = fn\r\n return this\r\n }\r\n\r\n _step (immediateStep = false) {\r\n // Get the time delta from the last time and update the time\r\n var time = this._timeSource()\r\n var dtSource = time - this._lastSourceTime\r\n\r\n if (immediateStep) dtSource = 0\r\n\r\n var dtTime = this._speed * dtSource + (this._time - this._lastStepTime)\r\n this._lastSourceTime = time\r\n\r\n // Only update the time if we use the timeSource.\r\n // Otherwise use the current time\r\n if (!immediateStep) {\r\n // Update the time\r\n this._time += dtTime\r\n this._time = this._time < 0 ? 0 : this._time\r\n }\r\n this._lastStepTime = this._time\r\n this.fire('time', this._time)\r\n\r\n // Run all of the runners directly\r\n var runnersLeft = false\r\n for (var i = 0, len = this._order.length; i < len; i++) {\r\n // Get and run the current runner and ignore it if its inactive\r\n var runnerInfo = this._runners[this._order[i]]\r\n var runner = runnerInfo.runner\r\n let dt = dtTime\r\n\r\n // Make sure that we give the actual difference\r\n // between runner start time and now\r\n let dtToStart = this._time - runnerInfo.start\r\n\r\n // Dont run runner if not started yet\r\n if (dtToStart <= 0) {\r\n runnersLeft = true\r\n\r\n // This is for the case that teh timeline was seeked so that the time\r\n // is now before the startTime of the runner. Thats why we need to set\r\n // the runner to position 0\r\n runner.reset()\r\n continue\r\n } else if (dtToStart < dt) {\r\n // Adjust dt to make sure that animation is on point\r\n dt = dtToStart\r\n }\r\n\r\n if (!runner.active()) continue\r\n\r\n // If this runner is still going, signal that we need another animation\r\n // frame, otherwise, remove the completed runner\r\n var finished = runner.step(dt).done\r\n if (!finished) {\r\n runnersLeft = true\r\n // continue\r\n } else if (runnerInfo.persist !== true) {\r\n // runner is finished. And runner might get removed\r\n\r\n var endTime = runner.duration() - runner.time() + this._time\r\n\r\n if (endTime + this._persist < this._time) {\r\n // Delete runner and correct index\r\n delete this._runners[this._order[i]]\r\n this._order.splice(i--, 1) && --len\r\n runner.timeline(null)\r\n }\r\n }\r\n }\r\n\r\n // Basically: we continue when there are runners right from us in time\r\n // when -->, and when runners are left from us when <--\r\n if ((runnersLeft && !(this._speed < 0 && this._time === 0)) || (this._order.length && this._speed < 0 && this._time > 0)) {\r\n this._continue()\r\n } else {\r\n this.fire('finished')\r\n this.pause()\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Checks if we are running and continues the animation\r\n _continue (immediateStep = false) {\r\n Animator.cancelFrame(this._nextFrame)\r\n this._nextFrame = null\r\n\r\n if (immediateStep) return this._step(true)\r\n if (this._paused) return this\r\n\r\n this._nextFrame = Animator.frame(this._step)\r\n return this\r\n }\r\n\r\n active () {\r\n return !!this._nextFrame\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Element: {\r\n timeline: function () {\r\n this._timeline = (this._timeline || new Timeline())\r\n return this._timeline\r\n }\r\n }\r\n})\r\n","import { Controller, Ease, Stepper } from './Controller.js'\r\nimport { extend } from '../utils/adopter.js'\r\nimport { from, to } from '../modules/core/gradiented.js'\r\nimport { getOrigin } from '../utils/utils.js'\r\nimport { noop, timeline } from '../modules/core/defaults.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { rx, ry } from '../modules/core/circled.js'\r\nimport Animator from './Animator.js'\r\nimport Box from '../types/Box.js'\r\nimport EventTarget from '../types/EventTarget.js'\r\nimport Matrix from '../types/Matrix.js'\r\nimport Morphable, { TransformBag } from './Morphable.js'\r\nimport Point from '../types/Point.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Timeline from './Timeline.js'\r\n\r\nexport default class Runner extends EventTarget {\r\n constructor (options) {\r\n super()\r\n\r\n // Store a unique id on the runner, so that we can identify it later\r\n this.id = Runner.id++\r\n\r\n // Ensure a default value\r\n options = options == null\r\n ? timeline.duration\r\n : options\r\n\r\n // Ensure that we get a controller\r\n options = typeof options === 'function'\r\n ? new Controller(options)\r\n : options\r\n\r\n // Declare all of the variables\r\n this._element = null\r\n this._timeline = null\r\n this.done = false\r\n this._queue = []\r\n\r\n // Work out the stepper and the duration\r\n this._duration = typeof options === 'number' && options\r\n this._isDeclarative = options instanceof Controller\r\n this._stepper = this._isDeclarative ? options : new Ease()\r\n\r\n // We copy the current values from the timeline because they can change\r\n this._history = {}\r\n\r\n // Store the state of the runner\r\n this.enabled = true\r\n this._time = 0\r\n this._lastTime = 0\r\n\r\n // At creation, the runner is in reseted state\r\n this._reseted = true\r\n\r\n // Save transforms applied to this runner\r\n this.transforms = new Matrix()\r\n this.transformId = 1\r\n\r\n // Looping variables\r\n this._haveReversed = false\r\n this._reverse = false\r\n this._loopsDone = 0\r\n this._swing = false\r\n this._wait = 0\r\n this._times = 1\r\n }\r\n\r\n /*\r\n Runner Definitions\r\n ==================\r\n These methods help us define the runtime behaviour of the Runner or they\r\n help us make new runners from the current runner\r\n */\r\n\r\n element (element) {\r\n if (element == null) return this._element\r\n this._element = element\r\n element._prepareRunner()\r\n return this\r\n }\r\n\r\n timeline (timeline) {\r\n // check explicitly for undefined so we can set the timeline to null\r\n if (typeof timeline === 'undefined') return this._timeline\r\n this._timeline = timeline\r\n return this\r\n }\r\n\r\n animate (duration, delay, when) {\r\n var o = Runner.sanitise(duration, delay, when)\r\n var runner = new Runner(o.duration)\r\n if (this._timeline) runner.timeline(this._timeline)\r\n if (this._element) runner.element(this._element)\r\n return runner.loop(o).schedule(delay, when)\r\n }\r\n\r\n schedule (timeline, delay, when) {\r\n // The user doesn't need to pass a timeline if we already have one\r\n if (!(timeline instanceof Timeline)) {\r\n when = delay\r\n delay = timeline\r\n timeline = this.timeline()\r\n }\r\n\r\n // If there is no timeline, yell at the user...\r\n if (!timeline) {\r\n throw Error('Runner cannot be scheduled without timeline')\r\n }\r\n\r\n // Schedule the runner on the timeline provided\r\n timeline.schedule(this, delay, when)\r\n return this\r\n }\r\n\r\n unschedule () {\r\n var timeline = this.timeline()\r\n timeline && timeline.unschedule(this)\r\n return this\r\n }\r\n\r\n loop (times, swing, wait) {\r\n // Deal with the user passing in an object\r\n if (typeof times === 'object') {\r\n swing = times.swing\r\n wait = times.wait\r\n times = times.times\r\n }\r\n\r\n // Sanitise the values and store them\r\n this._times = times || Infinity\r\n this._swing = swing || false\r\n this._wait = wait || 0\r\n return this\r\n }\r\n\r\n delay (delay) {\r\n return this.animate(0, delay)\r\n }\r\n\r\n /*\r\n Basic Functionality\r\n ===================\r\n These methods allow us to attach basic functions to the runner directly\r\n */\r\n\r\n queue (initFn, runFn, retargetFn, isTransform) {\r\n this._queue.push({\r\n initialiser: initFn || noop,\r\n runner: runFn || noop,\r\n retarget: retargetFn,\r\n isTransform: isTransform,\r\n initialised: false,\r\n finished: false\r\n })\r\n var timeline = this.timeline()\r\n timeline && this.timeline()._continue()\r\n return this\r\n }\r\n\r\n during (fn) {\r\n return this.queue(null, fn)\r\n }\r\n\r\n after (fn) {\r\n return this.on('finish', fn)\r\n }\r\n\r\n /*\r\n Runner animation methods\r\n ========================\r\n Control how the animation plays\r\n */\r\n\r\n time (time) {\r\n if (time == null) {\r\n return this._time\r\n }\r\n let dt = time - this._time\r\n this.step(dt)\r\n return this\r\n }\r\n\r\n duration () {\r\n return this._times * (this._wait + this._duration) - this._wait\r\n }\r\n\r\n loops (p) {\r\n var loopDuration = this._duration + this._wait\r\n if (p == null) {\r\n var loopsDone = Math.floor(this._time / loopDuration)\r\n var relativeTime = (this._time - loopsDone * loopDuration)\r\n var position = relativeTime / this._duration\r\n return Math.min(loopsDone + position, this._times)\r\n }\r\n var whole = Math.floor(p)\r\n var partial = p % 1\r\n var time = loopDuration * whole + this._duration * partial\r\n return this.time(time)\r\n }\r\n\r\n position (p) {\r\n // Get all of the variables we need\r\n var x = this._time\r\n var d = this._duration\r\n var w = this._wait\r\n var t = this._times\r\n var s = this._swing\r\n var r = this._reverse\r\n var position\r\n\r\n if (p == null) {\r\n /*\r\n This function converts a time to a position in the range [0, 1]\r\n The full explanation can be found in this desmos demonstration\r\n https://www.desmos.com/calculator/u4fbavgche\r\n The logic is slightly simplified here because we can use booleans\r\n */\r\n\r\n // Figure out the value without thinking about the start or end time\r\n const f = function (x) {\r\n var swinging = s * Math.floor(x % (2 * (w + d)) / (w + d))\r\n var backwards = (swinging && !r) || (!swinging && r)\r\n var uncliped = Math.pow(-1, backwards) * (x % (w + d)) / d + backwards\r\n var clipped = Math.max(Math.min(uncliped, 1), 0)\r\n return clipped\r\n }\r\n\r\n // Figure out the value by incorporating the start time\r\n var endTime = t * (w + d) - w\r\n position = x <= 0 ? Math.round(f(1e-5))\r\n : x < endTime ? f(x)\r\n : Math.round(f(endTime - 1e-5))\r\n return position\r\n }\r\n\r\n // Work out the loops done and add the position to the loops done\r\n var loopsDone = Math.floor(this.loops())\r\n var swingForward = s && (loopsDone % 2 === 0)\r\n var forwards = (swingForward && !r) || (r && swingForward)\r\n position = loopsDone + (forwards ? p : 1 - p)\r\n return this.loops(position)\r\n }\r\n\r\n progress (p) {\r\n if (p == null) {\r\n return Math.min(1, this._time / this.duration())\r\n }\r\n return this.time(p * this.duration())\r\n }\r\n\r\n step (dt) {\r\n // If we are inactive, this stepper just gets skipped\r\n if (!this.enabled) return this\r\n\r\n // Update the time and get the new position\r\n dt = dt == null ? 16 : dt\r\n this._time += dt\r\n var position = this.position()\r\n\r\n // Figure out if we need to run the stepper in this frame\r\n var running = this._lastPosition !== position && this._time >= 0\r\n this._lastPosition = position\r\n\r\n // Figure out if we just started\r\n var duration = this.duration()\r\n var justStarted = this._lastTime <= 0 && this._time > 0\r\n var justFinished = this._lastTime < this._time && this.time > duration\r\n this._lastTime = this._time\r\n if (justStarted) {\r\n this.fire('start', this)\r\n }\r\n\r\n // Work out if the runner is finished set the done flag here so animations\r\n // know, that they are running in the last step (this is good for\r\n // transformations which can be merged)\r\n var declarative = this._isDeclarative\r\n this.done = !declarative && !justFinished && this._time >= duration\r\n\r\n // Runner is running. So its not in reseted state anymore\r\n this._reseted = false\r\n\r\n // Call initialise and the run function\r\n if (running || declarative) {\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 (this.done) {\r\n this.fire('finish', this)\r\n }\r\n return this\r\n }\r\n\r\n reset () {\r\n if (this._reseted) return this\r\n this.loops(0)\r\n this._reseted = true\r\n return this\r\n }\r\n\r\n finish () {\r\n return this.step(Infinity)\r\n }\r\n\r\n reverse (reverse) {\r\n this._reverse = reverse == null ? !this._reverse : reverse\r\n return this\r\n }\r\n\r\n ease (fn) {\r\n this._stepper = new Ease(fn)\r\n return this\r\n }\r\n\r\n active (enabled) {\r\n if (enabled == null) return this.enabled\r\n this.enabled = enabled\r\n return this\r\n }\r\n\r\n /*\r\n Private Methods\r\n ===============\r\n Methods that shouldn't be used externally\r\n */\r\n\r\n // Save a morpher to the morpher list so that we can retarget it later\r\n _rememberMorpher (method, morpher) {\r\n this._history[method] = {\r\n morpher: morpher,\r\n caller: this._queue[this._queue.length - 1]\r\n }\r\n }\r\n\r\n // Try to set the target for a morpher if the morpher exists, otherwise\r\n // do nothing and return false\r\n _tryRetarget (method, target) {\r\n if (this._history[method]) {\r\n // if the last method wasnt even initialised, throw it away\r\n if (!this._history[method].caller.initialised) {\r\n let index = this._queue.indexOf(this._history[method].caller)\r\n this._queue.splice(index, 1)\r\n return false\r\n }\r\n\r\n // for the case of transformations, we use the special retarget function\r\n // which has access to the outer scope\r\n if (this._history[method].caller.retarget) {\r\n this._history[method].caller.retarget(target)\r\n // for everything else a simple morpher change is sufficient\r\n } else {\r\n this._history[method].morpher.to(target)\r\n }\r\n\r\n this._history[method].caller.finished = false\r\n var timeline = this.timeline()\r\n timeline && timeline._continue()\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n // Run each initialise function in the runner if required\r\n _initialise (running) {\r\n // If we aren't running, we shouldn't initialise when not declarative\r\n if (!running && !this._isDeclarative) return\r\n\r\n // Loop through all of the initialisers\r\n for (var i = 0, len = this._queue.length; i < len; ++i) {\r\n // Get the current initialiser\r\n var current = this._queue[i]\r\n\r\n // Determine whether we need to initialise\r\n var needsIt = this._isDeclarative || (!current.initialised && running)\r\n running = !current.finished\r\n\r\n // Call the initialiser if we need to\r\n if (needsIt && running) {\r\n current.initialiser.call(this)\r\n current.initialised = true\r\n }\r\n }\r\n }\r\n\r\n // Run each run function for the position or dt given\r\n _run (positionOrDt) {\r\n // Run all of the _queue directly\r\n var allfinished = true\r\n for (var i = 0, len = this._queue.length; i < len; ++i) {\r\n // Get the current function to run\r\n var current = this._queue[i]\r\n\r\n // Run the function if its not finished, we keep track of the finished\r\n // flag for the sake of declarative _queue\r\n var converged = current.runner.call(this, positionOrDt)\r\n current.finished = current.finished || (converged === true)\r\n allfinished = allfinished && current.finished\r\n }\r\n\r\n // We report when all of the constructors are finished\r\n return allfinished\r\n }\r\n\r\n addTransform (transform, index) {\r\n this.transforms.lmultiplyO(transform)\r\n return this\r\n }\r\n\r\n clearTransform () {\r\n this.transforms = new Matrix()\r\n return this\r\n }\r\n\r\n // TODO: Keep track of all transformations so that deletion is faster\r\n clearTransformsFromQueue () {\r\n if (!this.done) {\r\n this._queue = this._queue.filter((item) => {\r\n return !item.isTransform\r\n })\r\n }\r\n }\r\n\r\n static sanitise (duration, delay, when) {\r\n // Initialise the default parameters\r\n var times = 1\r\n var swing = false\r\n var wait = 0\r\n duration = duration || timeline.duration\r\n delay = delay || timeline.delay\r\n when = when || 'last'\r\n\r\n // If we have an object, unpack the values\r\n if (typeof duration === 'object' && !(duration instanceof Stepper)) {\r\n delay = duration.delay || delay\r\n when = duration.when || when\r\n swing = duration.swing || swing\r\n times = duration.times || times\r\n wait = duration.wait || wait\r\n duration = duration.duration || timeline.duration\r\n }\r\n\r\n return {\r\n duration: duration,\r\n delay: delay,\r\n swing: swing,\r\n times: times,\r\n wait: wait,\r\n when: when\r\n }\r\n }\r\n}\r\n\r\nRunner.id = 0\r\n\r\nclass FakeRunner {\r\n constructor (transforms = new Matrix(), id = -1, done = true) {\r\n this.transforms = transforms\r\n this.id = id\r\n this.done = done\r\n }\r\n\r\n clearTransformsFromQueue () { }\r\n}\r\n\r\nextend([ Runner, FakeRunner ], {\r\n mergeWith (runner) {\r\n return new FakeRunner(\r\n runner.transforms.lmultiply(this.transforms),\r\n runner.id\r\n )\r\n }\r\n})\r\n\r\n// FakeRunner.emptyRunner = new FakeRunner()\r\n\r\nconst lmultiply = (last, curr) => last.lmultiplyO(curr)\r\nconst getRunnerTransform = (runner) => runner.transforms\r\n\r\nfunction mergeTransforms () {\r\n // Find the matrix to apply to the element and apply it\r\n let runners = this._transformationRunners.runners\r\n let netTransform = runners\r\n .map(getRunnerTransform)\r\n .reduce(lmultiply, new Matrix())\r\n\r\n this.transform(netTransform)\r\n\r\n this._transformationRunners.merge()\r\n\r\n if (this._transformationRunners.length() === 1) {\r\n this._frameId = null\r\n }\r\n}\r\n\r\nclass RunnerArray {\r\n constructor () {\r\n this.runners = []\r\n this.ids = []\r\n }\r\n\r\n add (runner) {\r\n if (this.runners.includes(runner)) return\r\n\r\n let id = runner.id + 1\r\n\r\n let leftSibling = this.ids.reduce((last, curr) => {\r\n if (curr > last && curr < id) return curr\r\n return last\r\n }, 0)\r\n\r\n let index = this.ids.indexOf(leftSibling) + 1\r\n\r\n this.ids.splice(index, 0, id)\r\n this.runners.splice(index, 0, runner)\r\n\r\n return this\r\n }\r\n\r\n getByID (id) {\r\n return this.runners[this.ids.indexOf(id + 1)]\r\n }\r\n\r\n remove (id) {\r\n let index = this.ids.indexOf(id + 1)\r\n this.ids.splice(index, 1)\r\n this.runners.splice(index, 1)\r\n return this\r\n }\r\n\r\n merge () {\r\n let lastRunner = null\r\n this.runners.forEach((runner, i) => {\r\n if (lastRunner && runner.done && lastRunner.done) {\r\n this.remove(runner.id)\r\n this.edit(lastRunner.id, runner.mergeWith(lastRunner))\r\n }\r\n\r\n lastRunner = runner\r\n })\r\n\r\n return this\r\n }\r\n\r\n edit (id, newRunner) {\r\n let index = this.ids.indexOf(id + 1)\r\n this.ids.splice(index, 1, id)\r\n this.runners.splice(index, 1, newRunner)\r\n return this\r\n }\r\n\r\n length () {\r\n return this.ids.length\r\n }\r\n\r\n clearBefore (id) {\r\n let deleteCnt = this.ids.indexOf(id + 1) || 1\r\n this.ids.splice(0, deleteCnt, 0)\r\n this.runners.splice(0, deleteCnt, new FakeRunner())\r\n .forEach((r) => r.clearTransformsFromQueue())\r\n return this\r\n }\r\n}\r\n\r\nlet frameId = 0\r\nregisterMethods({\r\n Element: {\r\n animate (duration, delay, when) {\r\n var o = Runner.sanitise(duration, delay, when)\r\n var timeline = this.timeline()\r\n return new Runner(o.duration)\r\n .loop(o)\r\n .element(this)\r\n .timeline(timeline.play())\r\n .schedule(delay, when)\r\n },\r\n\r\n delay (by, when) {\r\n return this.animate(0, by, when)\r\n },\r\n\r\n // this function searches for all runners on the element and deletes the ones\r\n // which run before the current one. This is because absolute transformations\r\n // overwfrite anything anyway so there is no need to waste time computing\r\n // other runners\r\n _clearTransformRunnersBefore (currentRunner) {\r\n this._transformationRunners.clearBefore(currentRunner.id)\r\n },\r\n\r\n _currentTransform (current) {\r\n return this._transformationRunners.runners\r\n // we need the equal sign here to make sure, that also transformations\r\n // on the same runner which execute before the current transformation are\r\n // taken into account\r\n .filter((runner) => runner.id <= current.id)\r\n .map(getRunnerTransform)\r\n .reduce(lmultiply, new Matrix())\r\n },\r\n\r\n addRunner (runner) {\r\n this._transformationRunners.add(runner)\r\n\r\n Animator.transform_frame(\r\n mergeTransforms.bind(this), this._frameId\r\n )\r\n },\r\n\r\n _prepareRunner () {\r\n if (this._frameId == null) {\r\n this._transformationRunners = new RunnerArray()\r\n .add(new FakeRunner(new Matrix(this)))\r\n\r\n this._frameId = frameId++\r\n }\r\n }\r\n }\r\n})\r\n\r\nextend(Runner, {\r\n attr (a, v) {\r\n return this.styleAttr('attr', a, v)\r\n },\r\n\r\n // Add animatable styles\r\n css (s, v) {\r\n return this.styleAttr('css', s, v)\r\n },\r\n\r\n styleAttr (type, name, val) {\r\n // apply attributes individually\r\n if (typeof name === 'object') {\r\n for (var key in val) {\r\n this.styleAttr(type, key, val[key])\r\n }\r\n }\r\n\r\n var morpher = new Morphable(this._stepper).to(val)\r\n\r\n this.queue(function () {\r\n morpher = morpher.from(this.element()[type](name))\r\n }, function (pos) {\r\n this.element()[type](name, morpher.at(pos))\r\n return morpher.done()\r\n })\r\n\r\n return this\r\n },\r\n\r\n zoom (level, point) {\r\n var morpher = new Morphable(this._stepper).to(new SVGNumber(level))\r\n\r\n this.queue(function () {\r\n morpher = morpher.from(this.zoom())\r\n }, function (pos) {\r\n this.element().zoom(morpher.at(pos), point)\r\n return morpher.done()\r\n })\r\n\r\n return this\r\n },\r\n\r\n /**\r\n ** absolute transformations\r\n **/\r\n\r\n //\r\n // M v -----|-----(D M v = F v)------|-----> T v\r\n //\r\n // 1. define the final state (T) and decompose it (once)\r\n // t = [tx, ty, the, lam, sy, sx]\r\n // 2. on every frame: pull the current state of all previous transforms\r\n // (M - m can change)\r\n // and then write this as m = [tx0, ty0, the0, lam0, sy0, sx0]\r\n // 3. Find the interpolated matrix F(pos) = m + pos * (t - m)\r\n // - Note F(0) = M\r\n // - Note F(1) = T\r\n // 4. Now you get the delta matrix as a result: D = F * inv(M)\r\n\r\n transform (transforms, relative, affine) {\r\n // If we have a declarative function, we should retarget it if possible\r\n relative = transforms.relative || relative\r\n if (this._isDeclarative && !relative && this._tryRetarget('transform', transforms)) {\r\n return this\r\n }\r\n\r\n // Parse the parameters\r\n var isMatrix = Matrix.isMatrixLike(transforms)\r\n affine = transforms.affine != null\r\n ? transforms.affine\r\n : (affine != null ? affine : !isMatrix)\r\n\r\n // Create a morepher and set its type\r\n const morpher = new Morphable(this._stepper)\r\n .type(affine ? TransformBag : Matrix)\r\n\r\n let origin\r\n let element\r\n let current\r\n let currentAngle\r\n let startTransform\r\n\r\n function setup () {\r\n // make sure element and origin is defined\r\n element = element || this.element()\r\n origin = origin || getOrigin(transforms, element)\r\n\r\n startTransform = new Matrix(relative ? undefined : element)\r\n\r\n // add the runner to the element so it can merge transformations\r\n element.addRunner(this)\r\n\r\n // Deactivate all transforms that have run so far if we are absolute\r\n if (!relative) {\r\n element._clearTransformRunnersBefore(this)\r\n }\r\n }\r\n\r\n function run (pos) {\r\n // clear all other transforms before this in case something is saved\r\n // on this runner. We are absolute. We dont need these!\r\n if (!relative) this.clearTransform()\r\n\r\n let { x, y } = new Point(origin).transform(element._currentTransform(this))\r\n\r\n let target = new Matrix({ ...transforms, origin: [ x, y ] })\r\n let start = this._isDeclarative && current\r\n ? current\r\n : startTransform\r\n\r\n if (affine) {\r\n target = target.decompose(x, y)\r\n start = start.decompose(x, y)\r\n\r\n // Get the current and target angle as it was set\r\n const rTarget = target.rotate\r\n const rCurrent = start.rotate\r\n\r\n // Figure out the shortest path to rotate directly\r\n const possibilities = [ rTarget - 360, rTarget, rTarget + 360 ]\r\n const distances = possibilities.map(a => Math.abs(a - rCurrent))\r\n const shortest = Math.min(...distances)\r\n const index = distances.indexOf(shortest)\r\n target.rotate = possibilities[index]\r\n }\r\n\r\n if (relative) {\r\n // we have to be careful here not to overwrite the rotation\r\n // with the rotate method of Matrix\r\n if (!isMatrix) {\r\n target.rotate = transforms.rotate || 0\r\n }\r\n if (this._isDeclarative && currentAngle) {\r\n start.rotate = currentAngle\r\n }\r\n }\r\n\r\n morpher.from(start)\r\n morpher.to(target)\r\n\r\n let affineParameters = morpher.at(pos)\r\n currentAngle = affineParameters.rotate\r\n current = new Matrix(affineParameters)\r\n\r\n this.addTransform(current)\r\n return morpher.done()\r\n }\r\n\r\n function retarget (newTransforms) {\r\n // only get a new origin if it changed since the last call\r\n if (\r\n (newTransforms.origin || 'center').toString()\r\n !== (transforms.origin || 'center').toString()\r\n ) {\r\n origin = getOrigin(transforms, element)\r\n }\r\n\r\n // overwrite the old transformations with the new ones\r\n transforms = { ...newTransforms, origin }\r\n }\r\n\r\n this.queue(setup, run, retarget, true)\r\n this._isDeclarative && this._rememberMorpher('transform', morpher)\r\n return this\r\n },\r\n\r\n // Animatable x-axis\r\n x (x, relative) {\r\n return this._queueNumber('x', x)\r\n },\r\n\r\n // Animatable y-axis\r\n y (y) {\r\n return this._queueNumber('y', y)\r\n },\r\n\r\n dx (x) {\r\n return this._queueNumberDelta('x', x)\r\n },\r\n\r\n dy (y) {\r\n return this._queueNumberDelta('y', y)\r\n },\r\n\r\n _queueNumberDelta (method, to) {\r\n to = new SVGNumber(to)\r\n\r\n // Try to change the target if we have this method already registerd\r\n if (this._tryRetarget(method, to)) return this\r\n\r\n // Make a morpher and queue the animation\r\n var morpher = new Morphable(this._stepper).to(to)\r\n var from = null\r\n this.queue(function () {\r\n from = this.element()[method]()\r\n morpher.from(from)\r\n morpher.to(from + to)\r\n }, function (pos) {\r\n this.element()[method](morpher.at(pos))\r\n return morpher.done()\r\n }, function (newTo) {\r\n morpher.to(from + new SVGNumber(newTo))\r\n })\r\n\r\n // Register the morpher so that if it is changed again, we can retarget it\r\n this._rememberMorpher(method, morpher)\r\n return this\r\n },\r\n\r\n _queueObject (method, to) {\r\n // Try to change the target if we have this method already registerd\r\n if (this._tryRetarget(method, to)) return this\r\n\r\n // Make a morpher and queue the animation\r\n var morpher = new Morphable(this._stepper).to(to)\r\n this.queue(function () {\r\n morpher.from(this.element()[method]())\r\n }, function (pos) {\r\n this.element()[method](morpher.at(pos))\r\n return morpher.done()\r\n })\r\n\r\n // Register the morpher so that if it is changed again, we can retarget it\r\n this._rememberMorpher(method, morpher)\r\n return this\r\n },\r\n\r\n _queueNumber (method, value) {\r\n return this._queueObject(method, new SVGNumber(value))\r\n },\r\n\r\n // Animatable center x-axis\r\n cx (x) {\r\n return this._queueNumber('cx', x)\r\n },\r\n\r\n // Animatable center y-axis\r\n cy (y) {\r\n return this._queueNumber('cy', y)\r\n },\r\n\r\n // Add animatable move\r\n move (x, y) {\r\n return this.x(x).y(y)\r\n },\r\n\r\n // Add animatable center\r\n center (x, y) {\r\n return this.cx(x).cy(y)\r\n },\r\n\r\n // Add animatable size\r\n size (width, height) {\r\n // animate bbox based size for all other elements\r\n var box\r\n\r\n if (!width || !height) {\r\n box = this._element.bbox()\r\n }\r\n\r\n if (!width) {\r\n width = box.width / box.height * height\r\n }\r\n\r\n if (!height) {\r\n height = box.height / box.width * width\r\n }\r\n\r\n return this\r\n .width(width)\r\n .height(height)\r\n },\r\n\r\n // Add animatable width\r\n width (width) {\r\n return this._queueNumber('width', width)\r\n },\r\n\r\n // Add animatable height\r\n height (height) {\r\n return this._queueNumber('height', height)\r\n },\r\n\r\n // Add animatable plot\r\n plot (a, b, c, d) {\r\n // Lines can be plotted with 4 arguments\r\n if (arguments.length === 4) {\r\n return this.plot([ a, b, c, d ])\r\n }\r\n\r\n var morpher = this._element.MorphArray().to(a)\r\n\r\n this.queue(function () {\r\n morpher.from(this._element.array())\r\n }, function (pos) {\r\n this._element.plot(morpher.at(pos))\r\n })\r\n\r\n return this\r\n },\r\n\r\n // Add leading method\r\n leading (value) {\r\n return this._queueNumber('leading', value)\r\n },\r\n\r\n // Add animatable viewbox\r\n viewbox (x, y, width, height) {\r\n return this._queueObject('viewbox', new Box(x, y, width, height))\r\n },\r\n\r\n update (o) {\r\n if (typeof o !== 'object') {\r\n return this.update({\r\n offset: arguments[0],\r\n color: arguments[1],\r\n opacity: arguments[2]\r\n })\r\n }\r\n\r\n if (o.opacity != null) this.attr('stop-opacity', o.opacity)\r\n if (o.color != null) this.attr('stop-color', o.color)\r\n if (o.offset != null) this.attr('offset', o.offset)\r\n\r\n return this\r\n }\r\n})\r\n\r\nextend(Runner, { rx, ry, from, to })\r\n","import {\r\n adopt,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { ns, svgjs, xlink, xmlns } from '../modules/core/namespaces.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\nimport Defs from './Defs.js'\r\nimport { globals } from '../utils/window.js'\r\n\r\nexport default class Svg extends Container {\r\n constructor (node) {\r\n super(nodeOrNew('svg', node), node)\r\n this.namespace()\r\n }\r\n\r\n isRoot () {\r\n return !this.node.parentNode\r\n || !(this.node.parentNode instanceof globals.window.SVGElement)\r\n || this.node.parentNode.nodeName === '#document'\r\n }\r\n\r\n // Check if this is a root svg\r\n // If not, call docs from this element\r\n root () {\r\n if (this.isRoot()) return this\r\n return super.root()\r\n }\r\n\r\n // Add namespaces\r\n namespace () {\r\n if (!this.isRoot()) return this.root().namespace()\r\n return this\r\n .attr({ xmlns: ns, version: '1.1' })\r\n .attr('xmlns:xlink', xlink, xmlns)\r\n .attr('xmlns:svgjs', svgjs, xmlns)\r\n }\r\n\r\n // Creates and returns defs element\r\n defs () {\r\n if (!this.isRoot()) return this.root().defs()\r\n\r\n return adopt(this.node.getElementsByTagName('defs')[0])\r\n || this.put(new Defs())\r\n }\r\n\r\n // custom parent method\r\n parent (type) {\r\n if (this.isRoot()) {\r\n return this.node.parentNode.nodeName === '#document'\r\n ? null\r\n : adopt(this.node.parentNode)\r\n }\r\n\r\n return super.parent(type)\r\n }\r\n\r\n clear () {\r\n // remove children\r\n while (this.node.hasChildNodes()) {\r\n this.node.removeChild(this.node.lastChild)\r\n }\r\n return this\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create nested svg document\r\n nested: wrapWithAttrCheck(function () {\r\n return this.put(new Svg())\r\n })\r\n }\r\n})\r\n\r\nregister(Svg, 'Svg', true)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class Symbol extends Container {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('symbol', node), node)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n symbol: wrapWithAttrCheck(function () {\r\n return this.put(new Symbol())\r\n })\r\n }\r\n})\r\n\r\nregister(Symbol)\r\n","import { globals } from '../../utils/window.js'\r\n\r\n// Create plain text node\r\nexport function plain (text) {\r\n // clear if build mode is disabled\r\n if (this._build === false) {\r\n this.clear()\r\n }\r\n\r\n // create text node\r\n this.node.appendChild(globals.document.createTextNode(text))\r\n\r\n return this\r\n}\r\n\r\n// Get length of text element\r\nexport function length () {\r\n return this.node.getComputedTextLength()\r\n}\r\n","import {\r\n adopt,\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { attrs } from '../modules/core/defaults.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Shape from './Shape.js'\r\nimport { globals } from '../utils/window.js'\r\nimport * as textable from '../modules/core/textable.js'\r\n\r\nexport default class Text extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('text', node), node)\r\n\r\n this.dom.leading = new SVGNumber(1.3) // store leading value for rebuilding\r\n this._rebuild = true // enable automatic updating of dy values\r\n this._build = false // disable build mode for adding multiple lines\r\n\r\n // set default font\r\n this.attr('font-family', attrs['font-family'])\r\n }\r\n\r\n // Move over x-axis\r\n x (x) {\r\n // act as getter\r\n if (x == null) {\r\n return this.attr('x')\r\n }\r\n\r\n return this.attr('x', x)\r\n }\r\n\r\n // Move over y-axis\r\n y (y) {\r\n var oy = this.attr('y')\r\n var o = typeof oy === 'number' ? oy - this.bbox().y : 0\r\n\r\n // act as getter\r\n if (y == null) {\r\n return typeof oy === 'number' ? oy - o : oy\r\n }\r\n\r\n return this.attr('y', typeof y === 'number' ? y + o : y)\r\n }\r\n\r\n // Move center over x-axis\r\n cx (x) {\r\n return x == null ? this.bbox().cx : this.x(x - this.bbox().width / 2)\r\n }\r\n\r\n // Move center over y-axis\r\n cy (y) {\r\n return y == null ? this.bbox().cy : this.y(y - this.bbox().height / 2)\r\n }\r\n\r\n // Set the text content\r\n text (text) {\r\n // act as getter\r\n if (text === undefined) {\r\n var children = this.node.childNodes\r\n var firstLine = 0\r\n text = ''\r\n\r\n for (var i = 0, len = children.length; i < len; ++i) {\r\n // skip textPaths - they are no lines\r\n if (children[i].nodeName === 'textPath') {\r\n if (i === 0) firstLine = 1\r\n continue\r\n }\r\n\r\n // add newline if its not the first child and newLined is set to true\r\n if (i !== firstLine && children[i].nodeType !== 3 && adopt(children[i]).dom.newLined === true) {\r\n text += '\\n'\r\n }\r\n\r\n // add content of this node\r\n text += children[i].textContent\r\n }\r\n\r\n return text\r\n }\r\n\r\n // remove existing content\r\n this.clear().build(true)\r\n\r\n if (typeof text === 'function') {\r\n // call block\r\n text.call(this, this)\r\n } else {\r\n // store text and make sure text is not blank\r\n text = text.split('\\n')\r\n\r\n // build new lines\r\n for (var j = 0, jl = text.length; j < jl; j++) {\r\n this.tspan(text[j]).newLine()\r\n }\r\n }\r\n\r\n // disable build mode and rebuild lines\r\n return this.build(false).rebuild()\r\n }\r\n\r\n // Set / get leading\r\n leading (value) {\r\n // act as getter\r\n if (value == null) {\r\n return this.dom.leading\r\n }\r\n\r\n // act as setter\r\n this.dom.leading = new SVGNumber(value)\r\n\r\n return this.rebuild()\r\n }\r\n\r\n // Rebuild appearance type\r\n rebuild (rebuild) {\r\n // store new rebuild flag if given\r\n if (typeof rebuild === 'boolean') {\r\n this._rebuild = rebuild\r\n }\r\n\r\n // define position of all lines\r\n if (this._rebuild) {\r\n var self = this\r\n var blankLineOffset = 0\r\n var leading = this.dom.leading\r\n\r\n this.each(function () {\r\n var fontSize = globals.window.getComputedStyle(this.node)\r\n .getPropertyValue('font-size')\r\n var dy = leading * new SVGNumber(fontSize)\r\n\r\n if (this.dom.newLined) {\r\n this.attr('x', self.attr('x'))\r\n\r\n if (this.text() === '\\n') {\r\n blankLineOffset += dy\r\n } else {\r\n this.attr('dy', dy + blankLineOffset)\r\n blankLineOffset = 0\r\n }\r\n }\r\n })\r\n\r\n this.fire('rebuild')\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Enable / disable build mode\r\n build (build) {\r\n this._build = !!build\r\n return this\r\n }\r\n\r\n // overwrite method from parent to set data properly\r\n setData (o) {\r\n this.dom = o\r\n this.dom.leading = new SVGNumber(o.leading || 1.3)\r\n return this\r\n }\r\n}\r\n\r\nextend(Text, textable)\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create text element\r\n text: wrapWithAttrCheck(function (text) {\r\n return this.put(new Text()).text(text)\r\n }),\r\n\r\n // Create plain text element\r\n plain: wrapWithAttrCheck(function (text) {\r\n return this.put(new Text()).plain(text)\r\n })\r\n }\r\n})\r\n\r\nregister(Text)\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Text from './Text.js'\r\nimport * as textable from '../modules/core/textable.js'\r\n\r\nexport default class Tspan extends Text {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('tspan', node), node)\r\n }\r\n\r\n // Set text content\r\n text (text) {\r\n if (text == null) return this.node.textContent + (this.dom.newLined ? '\\n' : '')\r\n\r\n typeof text === 'function' ? text.call(this, this) : this.plain(text)\r\n\r\n return this\r\n }\r\n\r\n // Shortcut dx\r\n dx (dx) {\r\n return this.attr('dx', dx)\r\n }\r\n\r\n // Shortcut dy\r\n dy (dy) {\r\n return this.attr('dy', dy)\r\n }\r\n\r\n // Create new line\r\n newLine () {\r\n // fetch text parent\r\n var t = this.parent(Text)\r\n\r\n // mark new line\r\n this.dom.newLined = true\r\n\r\n // apply new position\r\n return this.dy(t.dom.leading * t.attr('font-size')).attr('x', t.x())\r\n }\r\n}\r\n\r\nextend(Tspan, textable)\r\n\r\nregisterMethods({\r\n Tspan: {\r\n tspan: wrapWithAttrCheck(function (text) {\r\n var tspan = new Tspan()\r\n\r\n // clear if build mode is disabled\r\n if (!this._build) {\r\n this.clear()\r\n }\r\n\r\n // add new tspan\r\n this.node.appendChild(tspan.node)\r\n\r\n return tspan.text(text)\r\n })\r\n }\r\n})\r\n\r\nregister(Tspan)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class ClipPath extends Container {\r\n constructor (node) {\r\n super(nodeOrNew('clipPath', node), node)\r\n }\r\n\r\n // Unclip all clipped elements and remove itself\r\n remove () {\r\n // unclip all targets\r\n this.targets().forEach(function (el) {\r\n el.unclip()\r\n })\r\n\r\n // remove clipPath from parent\r\n return super.remove()\r\n }\r\n\r\n targets () {\r\n return baseFind('svg [clip-path*=\"' + this.id() + '\"]')\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create clipping element\r\n clip: wrapWithAttrCheck(function () {\r\n return this.defs().put(new ClipPath())\r\n })\r\n },\r\n Element: {\r\n // Distribute clipPath to svg element\r\n clipWith (element) {\r\n // use given clip or create a new one\r\n let clipper = element instanceof ClipPath\r\n ? element\r\n : this.parent().clip().add(element)\r\n\r\n // apply mask\r\n return this.attr('clip-path', 'url(\"#' + clipper.id() + '\")')\r\n },\r\n\r\n // Unclip element\r\n unclip () {\r\n return this.attr('clip-path', null)\r\n },\r\n\r\n clipper () {\r\n return this.reference('clip-path')\r\n }\r\n }\r\n})\r\n\r\nregister(ClipPath)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class G extends Container {\r\n constructor (node) {\r\n super(nodeOrNew('g', node), node)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Element: {\r\n // Create a group element\r\n group: wrapWithAttrCheck(function () {\r\n return this.put(new G())\r\n })\r\n }\r\n})\r\n\r\nregister(G)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class A extends Container {\r\n constructor (node) {\r\n super(nodeOrNew('a', node), node)\r\n }\r\n\r\n // Link url\r\n to (url) {\r\n return this.attr('href', url, xlink)\r\n }\r\n\r\n // Link target attribute\r\n target (target) {\r\n return this.attr('target', target)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a hyperlink element\r\n link: wrapWithAttrCheck(function (url) {\r\n return this.put(new A()).to(url)\r\n })\r\n },\r\n Element: {\r\n // Create a hyperlink element\r\n linkTo: function (url) {\r\n var link = new A()\r\n\r\n if (typeof url === 'function') {\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)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class Mask extends Container {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('mask', node), node)\r\n }\r\n\r\n // Unmask all masked elements and remove itself\r\n remove () {\r\n // unmask all targets\r\n this.targets().forEach(function (el) {\r\n el.unmask()\r\n })\r\n\r\n // remove mask from parent\r\n return super.remove()\r\n }\r\n\r\n targets () {\r\n return baseFind('svg [mask*=\"' + this.id() + '\"]')\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n mask: wrapWithAttrCheck(function () {\r\n return this.defs().put(new Mask())\r\n })\r\n },\r\n Element: {\r\n // Distribute mask to svg element\r\n maskWith (element) {\r\n // use given mask or create a new one\r\n var masker = element instanceof Mask\r\n ? element\r\n : this.parent().mask().add(element)\r\n\r\n // apply mask\r\n return this.attr('mask', 'url(\"#' + masker.id() + '\")')\r\n },\r\n\r\n // Unmask element\r\n unmask () {\r\n return this.attr('mask', null)\r\n },\r\n\r\n masker () {\r\n return this.reference('mask')\r\n }\r\n }\r\n})\r\n\r\nregister(Mask)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { unCamelCase } from '../utils/utils.js'\r\nimport Element from './Element.js'\r\n\r\nfunction cssRule (selector, rule) {\r\n if (!selector) return ''\r\n if (!rule) return selector\r\n\r\n var ret = selector + '{'\r\n\r\n for (var i in rule) {\r\n ret += unCamelCase(i) + ':' + rule[i] + ';'\r\n }\r\n\r\n ret += '}'\r\n\r\n return ret\r\n}\r\n\r\nexport default class Style extends Element {\r\n constructor (node) {\r\n super(nodeOrNew('style', node), node)\r\n }\r\n\r\n addText (w = '') {\r\n this.node.textContent += w\r\n return this\r\n }\r\n\r\n font (name, src, params = {}) {\r\n return this.rule('@font-face', {\r\n fontFamily: name,\r\n src: src,\r\n ...params\r\n })\r\n }\r\n\r\n rule (selector, obj) {\r\n return this.addText(cssRule(selector, obj))\r\n }\r\n}\r\n\r\nregisterMethods('Dom', {\r\n style: wrapWithAttrCheck(function (selector, obj) {\r\n return this.put(new Style()).rule(selector, obj)\r\n }),\r\n fontface: wrapWithAttrCheck(function (name, src, params) {\r\n return this.put(new Style()).font(name, src, params)\r\n })\r\n})\r\n\r\nregister(Style)\r\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Path from './Path.js'\r\nimport PathArray from '../types/PathArray.js'\r\nimport Text from './Text.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class TextPath extends Text {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('textPath', node), node)\r\n }\r\n\r\n // return the array of the path track element\r\n array () {\r\n var track = this.track()\r\n\r\n return track ? track.array() : null\r\n }\r\n\r\n // Plot path if any\r\n plot (d) {\r\n var track = this.track()\r\n var pathArray = null\r\n\r\n if (track) {\r\n pathArray = track.plot(d)\r\n }\r\n\r\n return (d == null) ? pathArray : this\r\n }\r\n\r\n // Get the path element\r\n track () {\r\n return this.reference('href')\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n textPath: wrapWithAttrCheck(function (text, path) {\r\n return this.defs().path(path).text(text).addTo(this)\r\n })\r\n },\r\n Text: {\r\n // Create path for text to run on\r\n path: wrapWithAttrCheck(function (track) {\r\n var path = new TextPath()\r\n\r\n // if track is a path, reuse it\r\n if (!(track instanceof Path)) {\r\n // create path element\r\n track = this.root().defs().path(track)\r\n }\r\n\r\n // link textPath to path and add content\r\n path.attr('href', '#' + track, xlink)\r\n\r\n // add textPath element as child node and return textPath\r\n return this.put(path)\r\n }),\r\n\r\n // Get the textPath children\r\n textPath () {\r\n return this.find('textPath')[0]\r\n }\r\n },\r\n Path: {\r\n // creates a textPath from this path\r\n text: wrapWithAttrCheck(function (text) {\r\n if (text instanceof Text) {\r\n var txt = text.text()\r\n return text.clear().path(this).text(txt)\r\n }\r\n return this.parent().put(new Text()).path(this).text(text)\r\n }),\r\n\r\n targets () {\r\n return baseFind('svg [href*=\"' + this.id() + '\"]')\r\n }\r\n }\r\n})\r\n\r\nTextPath.prototype.MorphArray = PathArray\r\nregister(TextPath)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Shape from './Shape.js'\r\n\r\nexport default class Use extends Shape {\r\n constructor (node) {\r\n super(nodeOrNew('use', node), node)\r\n }\r\n\r\n // Use element as a reference\r\n element (element, file) {\r\n // Set lined element\r\n return this.attr('href', (file || '') + '#' + element, xlink)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a use element\r\n use: wrapWithAttrCheck(function (element, file) {\r\n return this.put(new Use()).element(element, file)\r\n })\r\n }\r\n})\r\n\r\nregister(Use)\r\n","/* Optional Modules */\r\nimport './modules/optional/arrange.js'\r\nimport './modules/optional/class.js'\r\nimport './modules/optional/css.js'\r\nimport './modules/optional/data.js'\r\nimport './modules/optional/memory.js'\r\nimport './modules/optional/sugar.js'\r\nimport './modules/optional/transform.js'\r\n\r\nimport { extend, makeInstance } from './utils/adopter.js'\r\nimport { getMethodNames, getMethodsFor } from './utils/methods.js'\r\nimport Box from './types/Box.js'\r\nimport Circle from './elements/Circle.js'\r\nimport Color from './types/Color.js'\r\nimport Container from './elements/Container.js'\r\nimport Defs from './elements/Defs.js'\r\nimport Dom from './elements/Dom.js'\r\nimport Element from './elements/Element.js'\r\nimport Ellipse from './elements/Ellipse.js'\r\nimport EventTarget from './types/EventTarget.js'\r\nimport Gradient from './elements/Gradient.js'\r\nimport Image from './elements/Image.js'\r\nimport Line from './elements/Line.js'\r\nimport List from './types/List.js'\r\nimport Marker from './elements/Marker.js'\r\nimport Matrix from './types/Matrix.js'\r\nimport Morphable, {\r\n NonMorphable,\r\n ObjectBag,\r\n TransformBag,\r\n makeMorphable,\r\n registerMorphableType\r\n} from './animation/Morphable.js'\r\nimport Path from './elements/Path.js'\r\nimport PathArray from './types/PathArray.js'\r\nimport Pattern from './elements/Pattern.js'\r\nimport PointArray from './types/PointArray.js'\r\nimport Polygon from './elements/Polygon.js'\r\nimport Polyline from './elements/Polyline.js'\r\nimport Rect from './elements/Rect.js'\r\nimport Runner from './animation/Runner.js'\r\nimport SVGArray from './types/SVGArray.js'\r\nimport SVGNumber from './types/SVGNumber.js'\r\nimport Shape from './elements/Shape.js'\r\nimport Svg from './elements/Svg.js'\r\nimport Symbol from './elements/Symbol.js'\r\nimport Text from './elements/Text.js'\r\nimport Tspan from './elements/Tspan.js'\r\nimport * as defaults from './modules/core/defaults.js'\r\nimport * as utils from './utils/utils.js'\r\nimport * as namespaces from './modules/core/namespaces.js'\r\nimport * as regex from './modules/core/regex.js'\r\n\r\nexport {\r\n Morphable,\r\n registerMorphableType,\r\n makeMorphable,\r\n TransformBag,\r\n ObjectBag,\r\n NonMorphable\r\n}\r\n\r\nexport { defaults, utils, namespaces, regex }\r\nexport const SVG = makeInstance\r\nexport { default as parser } from './modules/core/parser.js'\r\nexport { default as find } from './modules/core/selector.js'\r\nexport * from './modules/core/event.js'\r\nexport * from './utils/adopter.js'\r\nexport { registerWindow } from './utils/window.js'\r\n\r\n/* Animation Modules */\r\nexport { default as Animator } from './animation/Animator.js'\r\nexport { Controller, Ease, PID, Spring, easing } from './animation/Controller.js'\r\nexport { default as Queue } from './animation/Queue.js'\r\nexport { default as Runner } from './animation/Runner.js'\r\nexport { default as Timeline } from './animation/Timeline.js'\r\n\r\n/* Types */\r\nexport { default as Array } from './types/SVGArray.js'\r\nexport { default as Box } from './types/Box.js'\r\nexport { default as Color } from './types/Color.js'\r\nexport { default as EventTarget } from './types/EventTarget.js'\r\nexport { default as Matrix } from './types/Matrix.js'\r\nexport { default as Number } from './types/SVGNumber.js'\r\nexport { default as PathArray } from './types/PathArray.js'\r\nexport { default as Point } from './types/Point.js'\r\nexport { default as PointArray } from './types/PointArray.js'\r\nexport { default as List } from './types/List.js'\r\n\r\n/* Elements */\r\nexport { default as Circle } from './elements/Circle.js'\r\nexport { default as ClipPath } from './elements/ClipPath.js'\r\nexport { default as Container } from './elements/Container.js'\r\nexport { default as Defs } from './elements/Defs.js'\r\nexport { default as Dom } from './elements/Dom.js'\r\nexport { default as Element } from './elements/Element.js'\r\nexport { default as Ellipse } from './elements/Ellipse.js'\r\nexport { default as Gradient } from './elements/Gradient.js'\r\nexport { default as G } from './elements/G.js'\r\nexport { default as A } from './elements/A.js'\r\nexport { default as Image } from './elements/Image.js'\r\nexport { default as Line } from './elements/Line.js'\r\nexport { default as Marker } from './elements/Marker.js'\r\nexport { default as Mask } from './elements/Mask.js'\r\nexport { default as Path } from './elements/Path.js'\r\nexport { default as Pattern } from './elements/Pattern.js'\r\nexport { default as Polygon } from './elements/Polygon.js'\r\nexport { default as Polyline } from './elements/Polyline.js'\r\nexport { default as Rect } from './elements/Rect.js'\r\nexport { default as Shape } from './elements/Shape.js'\r\nexport { default as Stop } from './elements/Stop.js'\r\nexport { default as Style } from './elements/Style.js'\r\nexport { default as Svg } from './elements/Svg.js'\r\nexport { default as Symbol } from './elements/Symbol.js'\r\nexport { default as Text } from './elements/Text.js'\r\nexport { default as TextPath } from './elements/TextPath.js'\r\nexport { default as Tspan } from './elements/Tspan.js'\r\nexport { default as Use } from './elements/Use.js'\r\n\r\nextend([\r\n Svg,\r\n Symbol,\r\n Image,\r\n Pattern,\r\n Marker\r\n], getMethodsFor('viewbox'))\r\n\r\nextend([\r\n Line,\r\n Polyline,\r\n Polygon,\r\n Path\r\n], getMethodsFor('marker'))\r\n\r\nextend(Text, getMethodsFor('Text'))\r\nextend(Path, getMethodsFor('Path'))\r\n\r\nextend(Defs, getMethodsFor('Defs'))\r\n\r\nextend([\r\n Text,\r\n Tspan\r\n], getMethodsFor('Tspan'))\r\n\r\nextend([\r\n Rect,\r\n Ellipse,\r\n Circle,\r\n Gradient\r\n], getMethodsFor('radius'))\r\n\r\nextend(EventTarget, getMethodsFor('EventTarget'))\r\nextend(Dom, getMethodsFor('Dom'))\r\nextend(Element, getMethodsFor('Element'))\r\nextend(Shape, getMethodsFor('Shape'))\r\n// extend(Element, getConstructor('Memory'))\r\nextend(Container, getMethodsFor('Container'))\r\n\r\nextend(Runner, getMethodsFor('Runner'))\r\n\r\nList.extend(getMethodNames())\r\n\r\nregisterMorphableType([\r\n SVGNumber,\r\n Color,\r\n Box,\r\n Matrix,\r\n SVGArray,\r\n PointArray,\r\n PathArray\r\n])\r\n\r\nmakeMorphable()\r\n","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","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","constructor","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","wks","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","KEY","fails","FProto","nameRE","_typeof2","obj","iterator","_typeof","match","$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","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","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","skipClosing","arr","iter","$iterDetect","BUGGY_ZERO","$instance","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","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","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","makeNode","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","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","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","toHex","rV","gV","bV","color","_assertThisInitialized","ReferenceError","_possibleConstructorReturn","assertThisInitialized","_getPrototypeOf","_get","property","receiver","Reflect","base","superPropBase","desc","_setPrototypeOf","_inherits","subClass","superClass","$match","regexp","Point","parser","nodes","svg","size","path","parentNode","body","addTo","isNulledBox","Box","parseFloat","left","top","x2","y2","cx","cy","xMin","Infinity","xMax","yMin","yMax","transform","pageXOffset","pageYOffset","getBox","cb","retry","contains","closeEnough","threshold","abs","viewbox","Matrix","fromArray","Element","matrixify","isMatrixLike","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","determinant","ccw","thetaRad","st","matrix","clone","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","subClassArray","baseClass","_constructor","Arr","List","baseFind","query","querySelectorAll","each","fnOrMethodName","toArray","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","_defs","writeDataToDom","cloneNode","deep","selector","matches","matchesSelector","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","oMatchesSelector","SVGElement","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","Svg","dom","hasAttribute","setData","until","parents","getBBox","rbox","getBoundingClientRect","screenCTM","inverse","addOffset","ctm","getCTM","getScreenCTM","rect","sugar","prefix","_objectSpread","ownKeys","divide","extension","mat","angle","direction","directionString","dmove","plus","radius","_element","getTotalLength","pointAt","getPointAtLength","font","ax","ay","amove","untransform","str","kv","reverse","lmultiply","toParent","pCtm","multiply","toRoot","decomposed","decompose","Shape","Circle","circle","move","Container","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","MorphArray","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","pi","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","Polygon","polygon","poly","Polyline","polyline","Rect","Queue","_first","_last","item","Animator","nextDraw","frames","timeouts","timer","performance","Date","frame","run","requestAnimationFrame","_draw","transform_frame","timeout","time","now","cancelFrame","clearTimeout","nextTimeout","lastTimeout","shift","nextFrame","lastFrame","first","makeSchedule","runnerInfo","start","runner","end","defaultSource","Timeline","timeSource","_timeSource","_startTime","_speed","_persist","_nextFrame","_paused","_runners","_order","_time","_lastSourceTime","_lastStepTime","_step","when","absoluteStartTime","endTime","getEndTime","unschedule","persist","updateTime","_continue","splice","lastRunnerInfo","lastDuration","active","pause","speed","yes","currentSpeed","positive","dtOrForever","immediateStep","dtSource","dtTime","fire","runnersLeft","dtToStart","reset","_timeline","Runner","_queue","_isDeclarative","_history","enabled","_lastTime","_reseted","transformId","_haveReversed","_reverse","_loopsDone","_swing","_wait","_times","_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","needsIt","positionOrDt","allfinished","FakeRunner","mergeWith","getRunnerTransform","RunnerArray","runners","ids","leftSibling","lastRunner","_this2","edit","newRunner","deleteCnt","clearTransformsFromQueue","frameId","play","_clearTransformRunnersBefore","currentRunner","_transformationRunners","clearBefore","_currentTransform","addRunner","netTransform","merge","_frameId","styleAttr","zoom","level","affine","_tryRetarget","isMatrix","currentAngle","startTransform","clearTransform","rTarget","rCurrent","possibilities","distances","shortest","affineParameters","addTransform","newTransforms","_rememberMorpher","_queueNumber","_queueNumberDelta","newTo","_queueObject","center","getElementsByTagName","nested","symbol","_build","createTextNode","getComputedTextLength","Text","_rebuild","firstLine","nodeType","newLined","build","tspan","newLine","blankLineOffset","fontSize","getComputedStyle","getPropertyValue","textable","plain","Tspan","ClipPath","targets","unclip","clip","clipWith","clipper","group","link","linkTo","Mask","unmask","mask","maskWith","masker","Style","rule","fontFamily","addText","cssRule","fontface","$create","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$find","original","res","forced","TextPath","track","textPath","txt","Use","file","use","SVG","win","doc","mock","svgMembers"],"mappings":"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"} \ No newline at end of file