diff options
Diffstat (limited to 'dist/svg.js.map')
-rw-r--r-- | dist/svg.js.map | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/dist/svg.js.map b/dist/svg.js.map index a67c588..e805009 100644 --- a/dist/svg.js.map +++ b/dist/svg.js.map @@ -1 +1 @@ -{"version":3,"file":"svg.js","sources":["../node_modules/core-js/modules/_core.js","../node_modules/core-js/modules/_global.js","../node_modules/core-js/modules/_library.js","../node_modules/core-js/modules/_shared.js","../node_modules/core-js/modules/_uid.js","../node_modules/core-js/modules/_wks.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/_add-to-unscopables.js","../node_modules/core-js/modules/_iter-step.js","../node_modules/core-js/modules/_iterators.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/_has.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/_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-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-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/_to-object.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","../src/utils/methods.js","../node_modules/core-js/modules/_fix-re-wks.js","../node_modules/core-js/modules/es6.regexp.replace.js","../src/utils/utils.js","../src/modules/core/namespaces.js","../src/utils/window.js","../src/types/Base.js","../src/utils/adopter.js","../src/modules/optional/arrange.js","../node_modules/core-js/modules/_is-regexp.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/core-js/modules/_flags.js","../node_modules/core-js/modules/es6.regexp.flags.js","../node_modules/core-js/modules/es6.regexp.to-string.js","../src/types/Color.js","../node_modules/core-js/modules/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/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread.js","../src/modules/optional/transform.js","../src/modules/core/circled.js","../src/elements/Shape.js","../src/elements/Circle.js","../src/elements/Container.js","../src/elements/Defs.js","../src/elements/Ellipse.js","../src/elements/Stop.js","../src/modules/core/gradiented.js","../src/elements/Gradient.js","../src/elements/Pattern.js","../src/elements/Image.js","../src/types/PointArray.js","../src/modules/core/pointed.js","../src/elements/Line.js","../src/elements/Marker.js","../node_modules/core-js/modules/_strict-method.js","../node_modules/core-js/modules/es6.array.sort.js","../src/animation/Controller.js","../src/types/PathArray.js","../src/animation/Morphable.js","../src/elements/Path.js","../src/modules/core/poly.js","../src/elements/Polygon.js","../src/elements/Polyline.js","../src/elements/Rect.js","../src/animation/Queue.js","../src/animation/Animator.js","../src/animation/Timeline.js","../src/animation/Runner.js","../src/elements/Svg.js","../src/elements/Symbol.js","../src/modules/core/textable.js","../src/elements/Text.js","../src/elements/Tspan.js","../src/elements/ClipPath.js","../src/elements/G.js","../src/elements/A.js","../src/elements/Mask.js","../src/elements/Style.js","../src/elements/TextPath.js","../src/elements/Use.js","../src/main.js"],"sourcesContent":["var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = false;\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 id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\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","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","// 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 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","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// 7.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 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","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","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\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","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';\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","// @@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","// Map function\r\nexport function map (array, block) {\r\n var i\r\n var il = array.length\r\n var result = []\r\n\r\n for (i = 0; i < il; i++) {\r\n result.push(block(array[i]))\r\n }\r\n\r\n return result\r\n}\r\n\r\n// Filter function\r\nexport function filter (array, block) {\r\n var i\r\n var il = array.length\r\n var result = []\r\n\r\n for (i = 0; i < il; i++) {\r\n if (block(array[i])) { result.push(array[i]) }\r\n }\r\n\r\n return result\r\n}\r\n\r\n// Degrees to radians\r\nexport function radians (d) {\r\n return d % 360 * Math.PI / 180\r\n}\r\n\r\n// Radians to degrees\r\nexport function degrees (r) {\r\n return r * 180 / Math.PI % 360\r\n}\r\n\r\n// Convert dash-separated-string to camelCase\r\nexport function camelCase (s) {\r\n return s.toLowerCase().replace(/-(.)/g, function (m, g) {\r\n return g.toUpperCase()\r\n })\r\n}\r\n\r\n// Convert camel cased string to string seperated\r\nexport function unCamelCase (s) {\r\n return s.replace(/([A-Z])/g, function (m, g) {\r\n return '-' + g.toLowerCase()\r\n })\r\n}\r\n\r\n// Capitalize first letter of a string\r\nexport function capitalize (s) {\r\n return s.charAt(0).toUpperCase() + s.slice(1)\r\n}\r\n\r\n// Calculate proportional width and height values when necessary\r\nexport function proportionalSize (element, width, height) {\r\n if (width == null || height == null) {\r\n var box = element.bbox()\r\n\r\n if (width == null) {\r\n width = box.width / box.height * height\r\n } else if (height == null) {\r\n height = box.height / box.width * width\r\n }\r\n }\r\n\r\n return {\r\n width: width,\r\n height: height\r\n }\r\n}\r\n\r\nexport function getOrigin (o, element) {\r\n // Allow origin or around as the names\r\n let origin = o.origin // o.around == null ? o.origin : o.around\r\n let ox, oy\r\n\r\n // Allow the user to pass a string to rotate around a given point\r\n if (typeof origin === 'string' || origin == null) {\r\n // Get the bounding box of the element with no transformations applied\r\n const string = (origin || 'center').toLowerCase().trim()\r\n const { height, width, x, y } = element.bbox()\r\n\r\n // Calculate the transformed x and y coordinates\r\n let bx = string.includes('left') ? x\r\n : string.includes('right') ? x + width\r\n : x + width / 2\r\n let by = string.includes('top') ? y\r\n : string.includes('bottom') ? y + height\r\n : y + height / 2\r\n\r\n // Set the bounds eg : \"bottom-left\", \"Top right\", \"middle\" etc...\r\n ox = o.ox != null ? o.ox : bx\r\n oy = o.oy != null ? o.oy : by\r\n } else {\r\n ox = origin[0]\r\n oy = origin[1]\r\n }\r\n\r\n // Return the origin as it is if it wasn't a string\r\n return [ ox, oy ]\r\n}\r\n","// Default namespaces\r\nexport let ns = 'http://www.w3.org/2000/svg'\r\nexport let xmlns = 'http://www.w3.org/2000/xmlns/'\r\nexport let xlink = 'http://www.w3.org/1999/xlink'\r\nexport let svgjs = 'http://svgjs.com/svgjs'\r\n","export const globals = {\r\n window: typeof window === 'undefined' ? null : window,\r\n document: typeof document === 'undefined' ? null : document\r\n}\r\n\r\nexport function registerWindow (win = null, doc = null) {\r\n globals.window = win\r\n globals.document = doc\r\n}\r\n\r\nconst save = {}\r\n\r\nexport function saveWindow () {\r\n save.window = globals.window\r\n save.document = globals.document\r\n}\r\n\r\nexport function restoreWindow () {\r\n globals.window = save.window\r\n globals.document = save.document\r\n}\r\n\r\nexport function withWindow (win, fn) {\r\n saveWindow()\r\n registerWindow(win, win.document)\r\n fn(win, win.document)\r\n restoreWindow()\r\n}\r\n\r\nexport function getWindow () {\r\n return globals.window\r\n}\r\n","export default class Base {\r\n // constructor (node/*, {extensions = []} */) {\r\n // // this.tags = []\r\n // //\r\n // // for (let extension of extensions) {\r\n // // extension.setup.call(this, node)\r\n // // this.tags.push(extension.name)\r\n // // }\r\n // }\r\n}\r\n","import { addMethodNames } from './methods.js'\r\nimport { capitalize } from './utils.js'\r\nimport { ns } from '../modules/core/namespaces.js'\r\nimport { globals } from '../utils/window.js'\r\nimport Base from '../types/Base.js'\r\n\r\nconst elements = {}\r\nexport const root = '___SYMBOL___ROOT___'\r\n\r\n// Method for element creation\r\nexport function 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","// 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","// @@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","'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","// @@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","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import defineProperty from \"./defineProperty\";\nexport default function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}","import { getOrigin } from '../../utils/utils.js'\r\nimport { delimiter, transforms } from '../core/regex.js'\r\nimport { registerMethods } from '../../utils/methods.js'\r\nimport Matrix from '../../types/Matrix.js'\r\n\r\n// Reset all transformations\r\nexport function untransform () {\r\n return this.attr('transform', null)\r\n}\r\n\r\n// merge the whole transformation chain into one matrix and returns it\r\nexport function matrixify () {\r\n var matrix = (this.attr('transform') || '')\r\n // split transformations\r\n .split(transforms).slice(0, -1).map(function (str) {\r\n // generate key => value pairs\r\n var kv = str.trim().split('(')\r\n return [kv[0],\r\n kv[1].split(delimiter)\r\n .map(function (str) { return parseFloat(str) })\r\n ]\r\n })\r\n .reverse()\r\n // merge every transformation into one matrix\r\n .reduce(function (matrix, transform) {\r\n if (transform[0] === 'matrix') {\r\n return matrix.lmultiply(Matrix.fromArray(transform[1]))\r\n }\r\n return matrix[transform[0]].apply(matrix, transform[1])\r\n }, new Matrix())\r\n\r\n return matrix\r\n}\r\n\r\n// add an element to another parent without changing the visual representation on the screen\r\nexport function toParent (parent) {\r\n if (this === parent) return this\r\n var ctm = this.screenCTM()\r\n var pCtm = parent.screenCTM().inverse()\r\n\r\n this.addTo(parent).untransform().transform(pCtm.multiply(ctm))\r\n\r\n return this\r\n}\r\n\r\n// same as above with parent equals root-svg\r\nexport function toRoot () {\r\n return this.toParent(this.root())\r\n}\r\n\r\n// Add transformations\r\nexport function transform (o, relative) {\r\n // Act as a getter if no object was passed\r\n if (o == null || typeof o === 'string') {\r\n var decomposed = new Matrix(this).decompose()\r\n return decomposed[o] || decomposed\r\n }\r\n\r\n if (!Matrix.isMatrixLike(o)) {\r\n // Set the origin according to the defined transform\r\n o = { ...o, origin: getOrigin(o, this) }\r\n }\r\n\r\n // The user can pass a boolean, an Element or an Matrix or nothing\r\n var cleanRelative = relative === true ? this : (relative || false)\r\n var result = new Matrix(cleanRelative).transform(o)\r\n return this.attr('transform', result)\r\n}\r\n\r\nregisterMethods('Element', {\r\n untransform, matrixify, toParent, toRoot, transform\r\n})\r\n","import SVGNumber from '../../types/SVGNumber.js'\r\n\r\n// Radius x value\r\nexport function rx (rx) {\r\n return this.attr('rx', rx)\r\n}\r\n\r\n// Radius y value\r\nexport function ry (ry) {\r\n return this.attr('ry', ry)\r\n}\r\n\r\n// Move over x-axis\r\nexport function x (x) {\r\n return x == null\r\n ? this.cx() - this.rx()\r\n : this.cx(x + this.rx())\r\n}\r\n\r\n// Move over y-axis\r\nexport function y (y) {\r\n return y == null\r\n ? this.cy() - this.ry()\r\n : this.cy(y + this.ry())\r\n}\r\n\r\n// Move by center over x-axis\r\nexport function cx (x) {\r\n return x == null\r\n ? this.attr('cx')\r\n : this.attr('cx', x)\r\n}\r\n\r\n// Move by center over y-axis\r\nexport function cy (y) {\r\n return y == null\r\n ? this.attr('cy')\r\n : this.attr('cy', y)\r\n}\r\n\r\n// Set width of element\r\nexport function width (width) {\r\n return width == null\r\n ? this.rx() * 2\r\n : this.rx(new SVGNumber(width).divide(2))\r\n}\r\n\r\n// Set height of element\r\nexport function height (height) {\r\n return height == null\r\n ? this.ry() * 2\r\n : this.ry(new SVGNumber(height).divide(2))\r\n}\r\n","import { register } from '../utils/adopter.js'\r\nimport Element from './Element.js'\r\n\r\nexport default class Shape extends Element {}\r\n\r\nregister(Shape)\r\n","import { cx, cy, height, width, x, y } from '../modules/core/circled.js'\r\nimport {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Shape from './Shape.js'\r\n\r\nexport default class Circle extends Shape {\r\n constructor (node) {\r\n super(nodeOrNew('circle', node), node)\r\n }\r\n\r\n radius (r) {\r\n return this.attr('r', r)\r\n }\r\n\r\n // Radius x value\r\n rx (rx) {\r\n return this.attr('r', rx)\r\n }\r\n\r\n // Alias radius x value\r\n ry (ry) {\r\n return this.rx(ry)\r\n }\r\n\r\n size (size) {\r\n return this.radius(new SVGNumber(size).divide(2))\r\n }\r\n}\r\n\r\nextend(Circle, { x, y, cx, cy, width, height })\r\n\r\nregisterMethods({\r\n Element: {\r\n // Create circle element\r\n circle: wrapWithAttrCheck(function (size) {\r\n return this.put(new Circle())\r\n .size(size)\r\n .move(0, 0)\r\n })\r\n }\r\n})\r\n\r\nregister(Circle)\r\n","import { register } from '../utils/adopter.js'\r\nimport Element from './Element.js'\r\n\r\nexport default class Container extends Element {\r\n flatten (parent) {\r\n this.each(function () {\r\n if (this instanceof Container) return this.flatten(parent).ungroup(parent)\r\n return this.toParent(parent)\r\n })\r\n\r\n // we need this so that the root does not get removed\r\n this.node.firstElementChild || this.remove()\r\n\r\n return this\r\n }\r\n\r\n ungroup (parent) {\r\n parent = parent || this.parent()\r\n\r\n this.each(function () {\r\n return this.toParent(parent)\r\n })\r\n\r\n this.remove()\r\n\r\n return this\r\n }\r\n}\r\n\r\nregister(Container)\r\n","import { nodeOrNew, register } from '../utils/adopter.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class Defs extends Container {\r\n constructor (node) {\r\n super(nodeOrNew('defs', node), node)\r\n }\r\n\r\n flatten () { return this }\r\n ungroup () { return this }\r\n}\r\n\r\nregister(Defs)\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Shape from './Shape.js'\r\nimport * as circled from '../modules/core/circled.js'\r\n\r\nexport default class Ellipse extends Shape {\r\n constructor (node) {\r\n super(nodeOrNew('ellipse', node), node)\r\n }\r\n\r\n size (width, height) {\r\n var p = proportionalSize(this, width, height)\r\n\r\n return this\r\n .rx(new SVGNumber(p.width).divide(2))\r\n .ry(new SVGNumber(p.height).divide(2))\r\n }\r\n}\r\n\r\nextend(Ellipse, circled)\r\n\r\nregisterMethods('Container', {\r\n // Create an ellipse\r\n ellipse: wrapWithAttrCheck(function (width, height) {\r\n return this.put(new Ellipse()).size(width, height).move(0, 0)\r\n })\r\n})\r\n\r\nregister(Ellipse)\r\n","import { nodeOrNew, register } from '../utils/adopter.js'\r\nimport Element from './Element.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\n\r\nexport default class Stop extends Element {\r\n constructor (node) {\r\n super(nodeOrNew('stop', node), node)\r\n }\r\n\r\n // add color stops\r\n update (o) {\r\n if (typeof o === 'number' || o instanceof SVGNumber) {\r\n o = {\r\n offset: arguments[0],\r\n color: arguments[1],\r\n opacity: arguments[2]\r\n }\r\n }\r\n\r\n // set attributes\r\n if (o.opacity != null) this.attr('stop-opacity', o.opacity)\r\n if (o.color != null) this.attr('stop-color', o.color)\r\n if (o.offset != null) this.attr('offset', new SVGNumber(o.offset))\r\n\r\n return this\r\n }\r\n}\r\n\r\nregister(Stop)\r\n","import SVGNumber from '../../types/SVGNumber.js'\r\n\r\nexport function from (x, y) {\r\n return (this._element || this).type === 'radialGradient'\r\n ? this.attr({ fx: new SVGNumber(x), fy: new SVGNumber(y) })\r\n : this.attr({ x1: new SVGNumber(x), y1: new SVGNumber(y) })\r\n}\r\n\r\nexport function to (x, y) {\r\n return (this._element || this).type === 'radialGradient'\r\n ? this.attr({ cx: new SVGNumber(x), cy: new SVGNumber(y) })\r\n : this.attr({ x2: new SVGNumber(x), y2: new SVGNumber(y) })\r\n}\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Box from '../types/Box.js'\r\nimport Container from './Container.js'\r\nimport Stop from './Stop.js'\r\nimport baseFind from '../modules/core/selector.js'\r\nimport * as gradiented from '../modules/core/gradiented.js'\r\n\r\nexport default class Gradient extends Container {\r\n constructor (type, attrs) {\r\n super(\r\n nodeOrNew(type + 'Gradient', typeof type === 'string' ? null : type),\r\n attrs\r\n )\r\n }\r\n\r\n // Add a color stop\r\n stop (offset, color, opacity) {\r\n return this.put(new Stop()).update(offset, color, opacity)\r\n }\r\n\r\n // Update gradient\r\n update (block) {\r\n // remove all stops\r\n this.clear()\r\n\r\n // invoke passed block\r\n if (typeof block === 'function') {\r\n block.call(this, this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Return the fill id\r\n url () {\r\n return 'url(#' + this.id() + ')'\r\n }\r\n\r\n // Alias string convertion to fill\r\n toString () {\r\n return this.url()\r\n }\r\n\r\n // custom attr to handle transform\r\n attr (a, b, c) {\r\n if (a === 'transform') a = 'gradientTransform'\r\n return super.attr(a, b, c)\r\n }\r\n\r\n targets () {\r\n return baseFind('svg [fill*=\"' + this.id() + '\"]')\r\n }\r\n\r\n bbox () {\r\n return new Box()\r\n }\r\n}\r\n\r\nextend(Gradient, gradiented)\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create gradient element in defs\r\n gradient: wrapWithAttrCheck(function (type, block) {\r\n return this.defs().gradient(type, block)\r\n })\r\n },\r\n // define gradient\r\n Defs: {\r\n gradient: wrapWithAttrCheck(function (type, block) {\r\n return this.put(new Gradient(type)).update(block)\r\n })\r\n }\r\n})\r\n\r\nregister(Gradient)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Box from '../types/Box.js'\r\nimport Container from './Container.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class Pattern extends Container {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('pattern', node), node)\r\n }\r\n\r\n // Return the fill id\r\n url () {\r\n return 'url(#' + this.id() + ')'\r\n }\r\n\r\n // Update pattern by rebuilding\r\n update (block) {\r\n // remove content\r\n this.clear()\r\n\r\n // invoke passed block\r\n if (typeof block === 'function') {\r\n block.call(this, this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Alias string convertion to fill\r\n toString () {\r\n return this.url()\r\n }\r\n\r\n // custom attr to handle transform\r\n attr (a, b, c) {\r\n if (a === 'transform') a = 'patternTransform'\r\n return super.attr(a, b, c)\r\n }\r\n\r\n targets () {\r\n return baseFind('svg [fill*=\"' + this.id() + '\"]')\r\n }\r\n\r\n bbox () {\r\n return new Box()\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create pattern element in defs\r\n pattern (...args) {\r\n return this.defs().pattern(...args)\r\n }\r\n },\r\n Defs: {\r\n pattern: wrapWithAttrCheck(function (width, height, block) {\r\n return this.put(new Pattern()).update(block).attr({\r\n x: 0,\r\n y: 0,\r\n width: width,\r\n height: height,\r\n patternUnits: 'userSpaceOnUse'\r\n })\r\n })\r\n }\r\n})\r\n\r\nregister(Pattern)\r\n","import { isImage } from '../modules/core/regex.js'\r\nimport { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { off, on } from '../modules/core/event.js'\r\nimport { registerAttrHook } from '../modules/core/attr.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Pattern from './Pattern.js'\r\nimport Shape from './Shape.js'\r\nimport { globals } from '../utils/window.js'\r\n\r\nexport default class Image extends Shape {\r\n constructor (node) {\r\n super(nodeOrNew('image', node), node)\r\n }\r\n\r\n // (re)load image\r\n load (url, callback) {\r\n if (!url) return this\r\n\r\n var img = new globals.window.Image()\r\n\r\n on(img, 'load', function (e) {\r\n var p = this.parent(Pattern)\r\n\r\n // ensure image size\r\n if (this.width() === 0 && this.height() === 0) {\r\n this.size(img.width, img.height)\r\n }\r\n\r\n if (p instanceof Pattern) {\r\n // ensure pattern size if not set\r\n if (p.width() === 0 && p.height() === 0) {\r\n p.size(this.width(), this.height())\r\n }\r\n }\r\n\r\n if (typeof callback === 'function') {\r\n callback.call(this, e)\r\n }\r\n }, this)\r\n\r\n on(img, 'load error', function () {\r\n // dont forget to unbind memory leaking events\r\n off(img)\r\n })\r\n\r\n return this.attr('href', (img.src = url), xlink)\r\n }\r\n}\r\n\r\nregisterAttrHook(function (attr, val, _this) {\r\n // convert image fill and stroke to patterns\r\n if (attr === 'fill' || attr === 'stroke') {\r\n if (isImage.test(val)) {\r\n val = _this.root().defs().image(val)\r\n }\r\n }\r\n\r\n if (val instanceof Image) {\r\n val = _this.root().defs().pattern(0, 0, (pattern) => {\r\n pattern.add(val)\r\n })\r\n }\r\n\r\n return val\r\n})\r\n\r\nregisterMethods({\r\n Container: {\r\n // create image element, load image and set its size\r\n image: wrapWithAttrCheck(function (source, callback) {\r\n return this.put(new Image()).size(0, 0).load(source, callback)\r\n })\r\n }\r\n})\r\n\r\nregister(Image)\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { extend } from '../utils/adopter.js'\r\nimport { subClassArray } from './ArrayPolyfill.js'\r\nimport SVGArray from './SVGArray.js'\r\n\r\nconst PointArray = subClassArray('PointArray', SVGArray)\r\n\r\nexport default PointArray\r\n\r\nextend(PointArray, {\r\n // Convert array to string\r\n toString () {\r\n // convert to a poly point string\r\n for (var i = 0, il = this.length, array = []; i < il; i++) {\r\n array.push(this[i].join(','))\r\n }\r\n\r\n return array.join(' ')\r\n },\r\n\r\n // Convert array to line object\r\n toLine () {\r\n return {\r\n x1: this[0][0],\r\n y1: this[0][1],\r\n x2: this[1][0],\r\n y2: this[1][1]\r\n }\r\n },\r\n\r\n // Get morphed array at given position\r\n at (pos) {\r\n // make sure a destination is defined\r\n if (!this.destination) return this\r\n\r\n // generate morphed point string\r\n for (var i = 0, il = this.length, array = []; i < il; i++) {\r\n array.push([\r\n this[i][0] + (this.destination[i][0] - this[i][0]) * pos,\r\n this[i][1] + (this.destination[i][1] - this[i][1]) * pos\r\n ])\r\n }\r\n\r\n return new PointArray(array)\r\n },\r\n\r\n // Parse point string and flat array\r\n parse (array = [[0, 0]]) {\r\n var points = []\r\n\r\n // if it is an array\r\n if (array instanceof Array) {\r\n // and it is not flat, there is no need to parse it\r\n if (array[0] instanceof Array) {\r\n return array\r\n }\r\n } else { // Else, it is considered as a string\r\n // parse points\r\n array = array.trim().split(delimiter).map(parseFloat)\r\n }\r\n\r\n // validate points - https://svgwg.org/svg2-draft/shapes.html#DataTypePoints\r\n // Odd number of coordinates is an error. In such cases, drop the last odd coordinate.\r\n if (array.length % 2 !== 0) array.pop()\r\n\r\n // wrap points in two-tuples and parse points as floats\r\n for (var i = 0, len = array.length; i < len; i = i + 2) {\r\n points.push([ array[i], array[i + 1] ])\r\n }\r\n\r\n return points\r\n },\r\n\r\n // Move point string\r\n move (x, y) {\r\n var box = this.bbox()\r\n\r\n // get relative offset\r\n x -= box.x\r\n y -= box.y\r\n\r\n // move every point\r\n if (!isNaN(x) && !isNaN(y)) {\r\n for (var i = this.length - 1; i >= 0; i--) {\r\n this[i] = [this[i][0] + x, this[i][1] + y]\r\n }\r\n }\r\n\r\n return this\r\n },\r\n\r\n // Resize poly string\r\n size (width, height) {\r\n var i\r\n var box = this.bbox()\r\n\r\n // recalculate position of all points according to new size\r\n for (i = this.length - 1; i >= 0; i--) {\r\n if (box.width) this[i][0] = ((this[i][0] - box.x) * width) / box.width + box.x\r\n if (box.height) this[i][1] = ((this[i][1] - box.y) * height) / box.height + box.y\r\n }\r\n\r\n return this\r\n },\r\n\r\n // Get bounding box of points\r\n bbox () {\r\n var maxX = -Infinity\r\n var maxY = -Infinity\r\n var minX = Infinity\r\n var minY = Infinity\r\n this.forEach(function (el) {\r\n maxX = Math.max(el[0], maxX)\r\n maxY = Math.max(el[1], maxY)\r\n minX = Math.min(el[0], minX)\r\n minY = Math.min(el[1], minY)\r\n })\r\n return { x: minX, y: minY, width: maxX - minX, height: maxY - minY }\r\n }\r\n})\r\n","import PointArray from '../../types/PointArray.js'\r\n\r\nexport let MorphArray = PointArray\r\n\r\n// Move by left top corner over x-axis\r\nexport function x (x) {\r\n return x == null ? this.bbox().x : this.move(x, this.bbox().y)\r\n}\r\n\r\n// Move by left top corner over y-axis\r\nexport function y (y) {\r\n return y == null ? this.bbox().y : this.move(this.bbox().x, y)\r\n}\r\n\r\n// Set width of element\r\nexport function width (width) {\r\n let b = this.bbox()\r\n return width == null ? b.width : this.size(width, b.height)\r\n}\r\n\r\n// Set height of element\r\nexport function height (height) {\r\n let b = this.bbox()\r\n return height == null ? b.height : this.size(b.width, height)\r\n}\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PointArray from '../types/PointArray.js'\r\nimport Shape from './Shape.js'\r\nimport * as pointed from '../modules/core/pointed.js'\r\n\r\nexport default class Line extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('line', node), node)\r\n }\r\n\r\n // Get array\r\n array () {\r\n return new PointArray([\r\n [ this.attr('x1'), this.attr('y1') ],\r\n [ this.attr('x2'), this.attr('y2') ]\r\n ])\r\n }\r\n\r\n // Overwrite native plot() method\r\n plot (x1, y1, x2, y2) {\r\n if (x1 == null) {\r\n return this.array()\r\n } else if (typeof y1 !== 'undefined') {\r\n x1 = { x1: x1, y1: y1, x2: x2, y2: y2 }\r\n } else {\r\n x1 = new PointArray(x1).toLine()\r\n }\r\n\r\n return this.attr(x1)\r\n }\r\n\r\n // Move by left top corner\r\n move (x, y) {\r\n return this.attr(this.array().move(x, y).toLine())\r\n }\r\n\r\n // Set element size to given width and height\r\n size (width, height) {\r\n var p = proportionalSize(this, width, height)\r\n return this.attr(this.array().size(p.width, p.height).toLine())\r\n }\r\n}\r\n\r\nextend(Line, pointed)\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a line element\r\n line: wrapWithAttrCheck(function (...args) {\r\n // make sure plot is called as a setter\r\n // x1 is not necessarily a number, it can also be an array, a string and a PointArray\r\n return Line.prototype.plot.apply(\r\n this.put(new Line())\r\n , args[0] != null ? args : [0, 0, 0, 0]\r\n )\r\n })\r\n }\r\n})\r\n\r\nregister(Line)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class Marker extends Container {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('marker', node), node)\r\n }\r\n\r\n // Set width of element\r\n width (width) {\r\n return this.attr('markerWidth', width)\r\n }\r\n\r\n // Set height of element\r\n height (height) {\r\n return this.attr('markerHeight', height)\r\n }\r\n\r\n // Set marker refX and refY\r\n ref (x, y) {\r\n return this.attr('refX', x).attr('refY', y)\r\n }\r\n\r\n // Update marker\r\n update (block) {\r\n // remove all content\r\n this.clear()\r\n\r\n // invoke passed block\r\n if (typeof block === 'function') { block.call(this, this) }\r\n\r\n return this\r\n }\r\n\r\n // Return the fill id\r\n toString () {\r\n return 'url(#' + this.id() + ')'\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n marker (...args) {\r\n // Create marker element in defs\r\n return this.defs().marker(...args)\r\n }\r\n },\r\n Defs: {\r\n // Create marker\r\n marker: wrapWithAttrCheck(function (width, height, block) {\r\n // Set default viewbox to match the width and height, set ref to cx and cy and set orient to auto\r\n return this.put(new Marker())\r\n .size(width, height)\r\n .ref(width / 2, height / 2)\r\n .viewbox(0, 0, width, height)\r\n .attr('orient', 'auto')\r\n .update(block)\r\n })\r\n },\r\n marker: {\r\n // Create and attach markers\r\n marker (marker, width, height, block) {\r\n var attr = ['marker']\r\n\r\n // Build attribute name\r\n if (marker !== 'all') attr.push(marker)\r\n attr = attr.join('-')\r\n\r\n // Set marker attribute\r\n marker = arguments[1] instanceof Marker\r\n ? arguments[1]\r\n : this.defs().marker(width, height, block)\r\n\r\n return this.attr(attr, marker)\r\n }\r\n }\r\n})\r\n\r\nregister(Marker)\r\n","'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","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Path from './Path.js'\r\nimport PathArray from '../types/PathArray.js'\r\nimport Text from './Text.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class TextPath extends Text {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('textPath', node), node)\r\n }\r\n\r\n // return the array of the path track element\r\n array () {\r\n var track = this.track()\r\n\r\n return track ? track.array() : null\r\n }\r\n\r\n // Plot path if any\r\n plot (d) {\r\n var track = this.track()\r\n var pathArray = null\r\n\r\n if (track) {\r\n pathArray = track.plot(d)\r\n }\r\n\r\n return (d == null) ? pathArray : this\r\n }\r\n\r\n // Get the path element\r\n track () {\r\n return this.reference('href')\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n textPath: wrapWithAttrCheck(function (text, path) {\r\n return this.defs().path(path).text(text).addTo(this)\r\n })\r\n },\r\n Text: {\r\n // Create path for text to run on\r\n path: wrapWithAttrCheck(function (track) {\r\n var path = new TextPath()\r\n\r\n // if track is a path, reuse it\r\n if (!(track instanceof Path)) {\r\n // create path element\r\n track = this.root().defs().path(track)\r\n }\r\n\r\n // link textPath to path and add content\r\n path.attr('href', '#' + track, xlink)\r\n\r\n // add textPath element as child node and return textPath\r\n return this.put(path)\r\n }),\r\n\r\n // Get the textPath children\r\n textPath () {\r\n return this.find('textPath')[0]\r\n }\r\n },\r\n Path: {\r\n // creates a textPath from this path\r\n text: wrapWithAttrCheck(function (text) {\r\n if (text instanceof Text) {\r\n var txt = text.text()\r\n return text.clear().path(this).text(txt)\r\n }\r\n return this.parent().put(new Text()).path(this).text(text)\r\n }),\r\n\r\n targets () {\r\n return baseFind('svg [href*=\"' + this.id() + '\"]')\r\n }\r\n }\r\n})\r\n\r\nTextPath.prototype.MorphArray = PathArray\r\nregister(TextPath)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Shape from './Shape.js'\r\n\r\nexport default class Use extends Shape {\r\n constructor (node) {\r\n super(nodeOrNew('use', node), node)\r\n }\r\n\r\n // Use element as a reference\r\n element (element, file) {\r\n // Set lined element\r\n return this.attr('href', (file || '') + '#' + element, xlink)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a use element\r\n use: wrapWithAttrCheck(function (element, file) {\r\n return this.put(new Use()).element(element, file)\r\n })\r\n }\r\n})\r\n\r\nregister(Use)\r\n","/* Optional Modules */\r\nimport './modules/optional/arrange.js'\r\nimport './modules/optional/class.js'\r\nimport './modules/optional/css.js'\r\nimport './modules/optional/data.js'\r\nimport './modules/optional/memory.js'\r\nimport './modules/optional/sugar.js'\r\nimport './modules/optional/transform.js'\r\n\r\nimport { extend, makeInstance } from './utils/adopter.js'\r\nimport { getMethodNames, getMethodsFor } from './utils/methods.js'\r\nimport Box from './types/Box.js'\r\nimport Circle from './elements/Circle.js'\r\nimport Color from './types/Color.js'\r\nimport Container from './elements/Container.js'\r\nimport Defs from './elements/Defs.js'\r\nimport Dom from './elements/Dom.js'\r\nimport Element from './elements/Element.js'\r\nimport Ellipse from './elements/Ellipse.js'\r\nimport EventTarget from './types/EventTarget.js'\r\nimport Gradient from './elements/Gradient.js'\r\nimport Image from './elements/Image.js'\r\nimport Line from './elements/Line.js'\r\nimport List from './types/List.js'\r\nimport Marker from './elements/Marker.js'\r\nimport Matrix from './types/Matrix.js'\r\nimport Morphable, {\r\n NonMorphable,\r\n ObjectBag,\r\n TransformBag,\r\n makeMorphable,\r\n registerMorphableType\r\n} from './animation/Morphable.js'\r\nimport Path from './elements/Path.js'\r\nimport PathArray from './types/PathArray.js'\r\nimport Pattern from './elements/Pattern.js'\r\nimport PointArray from './types/PointArray.js'\r\nimport Polygon from './elements/Polygon.js'\r\nimport Polyline from './elements/Polyline.js'\r\nimport Rect from './elements/Rect.js'\r\nimport Runner from './animation/Runner.js'\r\nimport SVGArray from './types/SVGArray.js'\r\nimport SVGNumber from './types/SVGNumber.js'\r\nimport Shape from './elements/Shape.js'\r\nimport Svg from './elements/Svg.js'\r\nimport Symbol from './elements/Symbol.js'\r\nimport Text from './elements/Text.js'\r\nimport Tspan from './elements/Tspan.js'\r\nimport * as defaults from './modules/core/defaults.js'\r\nimport * as utils from './utils/utils.js'\r\nimport * as namespaces from './modules/core/namespaces.js'\r\nimport * as regex from './modules/core/regex.js'\r\n\r\nexport {\r\n Morphable,\r\n registerMorphableType,\r\n makeMorphable,\r\n TransformBag,\r\n ObjectBag,\r\n NonMorphable\r\n}\r\n\r\nexport { defaults, utils, namespaces, regex }\r\nexport const SVG = makeInstance\r\nexport { default as parser } from './modules/core/parser.js'\r\nexport { default as find } from './modules/core/selector.js'\r\nexport * from './modules/core/event.js'\r\nexport * from './utils/adopter.js'\r\nexport { registerWindow } from './utils/window.js'\r\n\r\n/* Animation Modules */\r\nexport { default as Animator } from './animation/Animator.js'\r\nexport { Controller, Ease, PID, Spring, easing } from './animation/Controller.js'\r\nexport { default as Queue } from './animation/Queue.js'\r\nexport { default as Runner } from './animation/Runner.js'\r\nexport { default as Timeline } from './animation/Timeline.js'\r\n\r\n/* Types */\r\nexport { default as Array } from './types/SVGArray.js'\r\nexport { default as Box } from './types/Box.js'\r\nexport { default as Color } from './types/Color.js'\r\nexport { default as EventTarget } from './types/EventTarget.js'\r\nexport { default as Matrix } from './types/Matrix.js'\r\nexport { default as Number } from './types/SVGNumber.js'\r\nexport { default as PathArray } from './types/PathArray.js'\r\nexport { default as Point } from './types/Point.js'\r\nexport { default as PointArray } from './types/PointArray.js'\r\nexport { default as List } from './types/List.js'\r\n\r\n/* Elements */\r\nexport { default as Circle } from './elements/Circle.js'\r\nexport { default as ClipPath } from './elements/ClipPath.js'\r\nexport { default as Container } from './elements/Container.js'\r\nexport { default as Defs } from './elements/Defs.js'\r\nexport { default as Dom } from './elements/Dom.js'\r\nexport { default as Element } from './elements/Element.js'\r\nexport { default as Ellipse } from './elements/Ellipse.js'\r\nexport { default as Gradient } from './elements/Gradient.js'\r\nexport { default as G } from './elements/G.js'\r\nexport { default as A } from './elements/A.js'\r\nexport { default as Image } from './elements/Image.js'\r\nexport { default as Line } from './elements/Line.js'\r\nexport { default as Marker } from './elements/Marker.js'\r\nexport { default as Mask } from './elements/Mask.js'\r\nexport { default as Path } from './elements/Path.js'\r\nexport { default as Pattern } from './elements/Pattern.js'\r\nexport { default as Polygon } from './elements/Polygon.js'\r\nexport { default as Polyline } from './elements/Polyline.js'\r\nexport { default as Rect } from './elements/Rect.js'\r\nexport { default as Shape } from './elements/Shape.js'\r\nexport { default as Stop } from './elements/Stop.js'\r\nexport { default as Style } from './elements/Style.js'\r\nexport { default as Svg } from './elements/Svg.js'\r\nexport { default as Symbol } from './elements/Symbol.js'\r\nexport { default as Text } from './elements/Text.js'\r\nexport { default as TextPath } from './elements/TextPath.js'\r\nexport { default as Tspan } from './elements/Tspan.js'\r\nexport { default as Use } from './elements/Use.js'\r\n\r\nextend([\r\n Svg,\r\n Symbol,\r\n Image,\r\n Pattern,\r\n Marker\r\n], getMethodsFor('viewbox'))\r\n\r\nextend([\r\n Line,\r\n Polyline,\r\n Polygon,\r\n Path\r\n], getMethodsFor('marker'))\r\n\r\nextend(Text, getMethodsFor('Text'))\r\nextend(Path, getMethodsFor('Path'))\r\n\r\nextend(Defs, getMethodsFor('Defs'))\r\n\r\nextend([\r\n Text,\r\n Tspan\r\n], getMethodsFor('Tspan'))\r\n\r\nextend([\r\n Rect,\r\n Ellipse,\r\n Circle,\r\n Gradient\r\n], getMethodsFor('radius'))\r\n\r\nextend(EventTarget, getMethodsFor('EventTarget'))\r\nextend(Dom, getMethodsFor('Dom'))\r\nextend(Element, getMethodsFor('Element'))\r\nextend(Shape, getMethodsFor('Shape'))\r\n// extend(Element, getConstructor('Memory'))\r\nextend(Container, getMethodsFor('Container'))\r\n\r\nextend(Runner, getMethodsFor('Runner'))\r\n\r\nList.extend(getMethodNames())\r\n\r\nregisterMorphableType([\r\n SVGNumber,\r\n Color,\r\n Box,\r\n Matrix,\r\n SVGArray,\r\n PointArray,\r\n PathArray\r\n])\r\n\r\nmakeMorphable()\r\n"],"names":["global","core","require$$0","require$$1","uid","isObject","document","require$$2","anObject","toPrimitive","IE8_DOM_DEFINE","dP","createDesc","cof","IObject","defined","has","hide","aFunction","ctx","redefine","toInteger","min","toIObject","toLength","toAbsoluteIndex","$keys","enumBugKeys","getKeys","IE_PROTO","PROTOTYPE","dPs","create","descriptor","setToStringTag","toObject","$iterCreate","getPrototypeOf","LIBRARY","Iterators","$export","step","addToUnscopables","ITERATOR","wks","$iterators","methods","names","registerMethods","name","m","Array","isArray","_name","addMethodNames","Object","keys","assign","getMethodsFor","getMethodNames","Set","_names","push","fails","map","array","block","i","il","length","result","filter","radians","d","Math","PI","degrees","r","camelCase","s","toLowerCase","replace","g","toUpperCase","unCamelCase","capitalize","charAt","slice","proportionalSize","element","width","height","box","bbox","getOrigin","o","origin","ox","oy","string","trim","x","y","bx","includes","by","ns","xmlns","xlink","svgjs","globals","window","registerWindow","win","doc","Base","elements","root","makeNode","createElementNS","makeInstance","adopter","querySelector","node","innerHTML","firstChild","nodeOrNew","Node","adopt","instance","className","nodeName","mockAdopt","mock","register","asRoot","prototype","getClass","did","eid","assignNewId","children","id","extend","modules","attrCheck","key","method","wrapWithAttrCheck","fn","args","constructor","apply","attr","siblings","parent","position","index","next","prev","forward","p","removeElement","add","isRoot","appendChild","defs","backward","front","back","before","remove","after","insertBefore","insertAfter","numberAndUnit","hex","rgb","reference","transforms","whitespace","isHex","isRgb","isCss","isBlank","isNumber","isPercent","isImage","delimiter","hyphen","pathLetters","isPathLetter","numbersWithDots","dots","classes","split","hasClass","indexOf","addClass","join","removeClass","c","toggleClass","css","style","val","ret","arguments","cssText","el","forEach","t","cased","test","show","visible","data","a","v","JSON","parse","e","stringify","remember","k","memory","forget","_memory","listenerId","getEvents","n","getEventHolder","events","getEventTarget","clearEvents","on","listener","binding","options","l","bind","bag","_svgjsListenerId","event","ev","addEventListener","off","namespace","removeEventListener","dispatch","Event","dispatchEvent","CustomEvent","detail","cancelable","DESCRIPTORS","$flags","fullHex","substring","compToHex","comp","toString","Color","init","color","b","match","exec","parseInt","toHex","toArray","round","toRgb","brightness","isColor","Point","source","base","clone","transform","f","point","screenCTM","inverse","parser","nodes","svg","size","path","parentNode","body","documentElement","addTo","isNulledBox","w","h","domContains","contains","call","Box","parseFloat","left","top","x2","y2","cx","cy","merge","max","xMin","Infinity","xMax","yMin","yMax","pts","addOffset","pageXOffset","pageYOffset","isNulled","getBox","cb","retry","Error","getBBox","rbox","getBoundingClientRect","viewbox","closeEnough","threshold","abs","Matrix","fromArray","Element","matrixify","isMatrixLike","matrix","multiplyO","formatTransforms","current","transformer","translateO","rx","ry","lmultiplyO","scaleO","scaleX","scaleY","skewO","skewX","skewY","shearO","shear","rotateO","theta","isFinite","px","py","dx","dy","tx","ty","compose","originX","originY","sx","sy","lam","rotate","translateX","translateY","decompose","determinant","ccw","sqrt","thetaRad","atan2","ct","cos","st","sin","multiply","matrixMultiply","lmultiply","inverseO","det","na","nb","nc","nd","ne","nf","translate","scale","flip","axis","around","flipO","lx","skew","tan","ly","skewXO","skewYO","aroundO","equals","other","valueOf","flipBoth","flipX","flipY","positionX","positionY","relative","relativeX","relativeY","ctm","getCTM","rect","getScreenCTM","subClassArray","Function","baseClass","_constructor","Arr","arr","List","each","fnOrMethodName","concat","reduce","obj","attrs","baseFind","query","querySelectorAll","find","EventTarget","type","j","defaultPrevented","fire","noop","timeline","duration","ease","delay","fill","stroke","opacity","offset","SVGArray","toSet","SVGNumber","value","unit","isNaN","toJSON","plus","number","minus","times","divide","hooks","registerAttrHook","attributes","nodeValue","last","curr","removeAttribute","getAttribute","defaults","_val","hook","leading","setAttributeNS","setAttribute","rebuild","Dom","childNodes","put","clear","hasChildNodes","removeChild","lastChild","_defs","writeDataToDom","cloneNode","deep","first","get","matches","selector","matchesSelector","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","oMatchesSelector","SVGElement","putIn","replaceChild","precision","factor","newAttrs","svgOrFn","outerHTML","well","len","fragment","_this","createDocumentFragment","firstElementChild","words","text","textContent","Svg","dom","hasAttribute","setData","center","inside","move","parents","until","sugar","prefix","extension","mat","angle","direction","directionString","dmove","radius","_element","getTotalLength","pointAt","getPointAtLength","font","ax","ay","amove","defineProperty","untransform","str","kv","reverse","toParent","pCtm","toRoot","decomposed","cleanRelative","Shape","Circle","circle","Container","flatten","ungroup","Defs","Ellipse","circled","ellipse","Stop","update","from","fx","fy","x1","y1","to","Gradient","stop","url","targets","gradiented","gradient","Pattern","pattern","patternUnits","Image","load","callback","img","src","image","PointArray","toLine","at","pos","destination","points","pop","maxX","maxY","minX","minY","MorphArray","Line","plot","pointed","line","Marker","ref","marker","makeSetterGetter","easing","bezier","steps","stepPosition","jumps","beforeFlag","floor","jumping","Stepper","done","Ease","Controller","stepper","target","dt","recalculate","_duration","overshoot","_overshoot","eps","pi","os","log","zeta","wn","Spring","velocity","acceleration","newPosition","PID","windup","integral","error","P","I","D","PathArray","pathRegReplace","arrayToString","pathHandlers","M","p0","L","H","V","C","S","Q","T","Z","A","mlhvqtcsaz","jl","equalCommands","pathArray","morph","sourceArray","destinationArray","paramCnt","Morphable","_stepper","_from","_to","_type","_context","_morphObj","_set","NonMorphable","morphableTypes","ObjectBag","complete","TransformBag","objOrArr","values","entries","sort","registerMorphableType","makeMorphable","Path","_array","Polygon","polygon","poly","Polyline","polyline","Rect","Queue","_first","_last","item","shift","Animator","nextDraw","frames","timeouts","timer","performance","Date","frame","run","requestAnimationFrame","_draw","transform_frame","timeout","time","now","cancelFrame","clearTimeout","nextTimeout","lastTimeout","nextFrame","lastFrame","makeSchedule","runnerInfo","start","runner","end","defaultSource","Timeline","timeSource","_timeSource","_startTime","_speed","_persist","_nextFrame","_paused","_runners","_order","_time","_lastSourceTime","_lastStepTime","_step","schedule","when","absoluteStartTime","endTime","getEndTime","unschedule","persist","updateTime","_continue","splice","lastRunnerInfo","lastDuration","lastStartTime","active","play","pause","finish","speed","yes","currentSpeed","positive","seek","dtOrForever","immediateStep","dtSource","dtTime","runnersLeft","dtToStart","reset","finished","_timeline","Runner","_queue","_isDeclarative","_history","enabled","_lastTime","_reseted","transformId","_haveReversed","_reverse","_loopsDone","_swing","_wait","_times","_prepareRunner","animate","sanitise","loop","swing","wait","queue","initFn","runFn","retargetFn","isTransform","initialiser","retarget","initialised","during","loops","loopDuration","loopsDone","relativeTime","whole","partial","swinging","backwards","uncliped","pow","clipped","swingForward","forwards","progress","running","_lastPosition","justStarted","justFinished","declarative","_initialise","converged","_run","_rememberMorpher","morpher","caller","_tryRetarget","needsIt","positionOrDt","allfinished","addTransform","clearTransform","clearTransformsFromQueue","FakeRunner","mergeWith","getRunnerTransform","mergeTransforms","runners","_transformationRunners","netTransform","_frameId","RunnerArray","ids","leftSibling","getByID","lastRunner","edit","newRunner","clearBefore","deleteCnt","frameId","_clearTransformRunnersBefore","currentRunner","_currentTransform","addRunner","styleAttr","zoom","level","affine","isMatrix","currentAngle","startTransform","setup","undefined","rTarget","rCurrent","possibilities","distances","shortest","affineParameters","newTransforms","_queueNumber","_queueNumberDelta","newTo","_queueObject","version","getElementsByTagName","nested","Symbol","symbol","plain","_build","createTextNode","getComputedTextLength","Text","_rebuild","firstLine","nodeType","newLined","build","tspan","newLine","self","blankLineOffset","fontSize","getComputedStyle","getPropertyValue","textable","Tspan","ClipPath","unclip","clip","clipWith","clipper","G","group","link","linkTo","Mask","unmask","mask","maskWith","masker","cssRule","rule","Style","addText","params","fontFamily","fontface","TextPath","track","textPath","txt","Use","file","use","SVG"],"mappings":"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"}
\ No newline at end of file +{"version":3,"file":"svg.js","sources":["../node_modules/core-js/modules/_core.js","../node_modules/core-js/modules/_global.js","../node_modules/core-js/modules/_library.js","../node_modules/core-js/modules/_shared.js","../node_modules/core-js/modules/_uid.js","../node_modules/core-js/modules/_wks.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/_add-to-unscopables.js","../node_modules/core-js/modules/_iter-step.js","../node_modules/core-js/modules/_iterators.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/_has.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/_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-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-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/_to-object.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","../src/utils/methods.js","../node_modules/core-js/modules/_fix-re-wks.js","../node_modules/core-js/modules/es6.regexp.replace.js","../src/utils/utils.js","../src/modules/core/namespaces.js","../src/utils/window.js","../src/types/Base.js","../src/utils/adopter.js","../src/modules/optional/arrange.js","../node_modules/core-js/modules/_is-regexp.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/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/core-js/modules/_flags.js","../node_modules/core-js/modules/es6.regexp.flags.js","../node_modules/core-js/modules/es6.regexp.to-string.js","../src/types/Color.js","../node_modules/core-js/modules/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/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread.js","../src/modules/optional/transform.js","../src/modules/core/circled.js","../src/elements/Shape.js","../src/elements/Circle.js","../src/elements/Container.js","../src/elements/Defs.js","../src/elements/Ellipse.js","../src/elements/Stop.js","../src/modules/core/gradiented.js","../src/elements/Gradient.js","../src/elements/Pattern.js","../src/elements/Image.js","../src/types/PointArray.js","../src/modules/core/pointed.js","../src/elements/Line.js","../src/elements/Marker.js","../node_modules/core-js/modules/_strict-method.js","../node_modules/core-js/modules/es6.array.sort.js","../src/animation/Controller.js","../src/types/PathArray.js","../src/animation/Morphable.js","../src/elements/Path.js","../src/modules/core/poly.js","../src/elements/Polygon.js","../src/elements/Polyline.js","../src/elements/Rect.js","../src/animation/Queue.js","../src/animation/Animator.js","../src/animation/Timeline.js","../src/animation/Runner.js","../src/elements/Svg.js","../src/elements/Symbol.js","../src/modules/core/textable.js","../src/elements/Text.js","../src/elements/Tspan.js","../src/elements/ClipPath.js","../src/elements/G.js","../src/elements/A.js","../src/elements/Mask.js","../src/elements/Style.js","../src/elements/TextPath.js","../src/elements/Use.js","../src/main.js"],"sourcesContent":["var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = false;\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 id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\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","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","// 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 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","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// 7.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 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","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","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\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","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';\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","// @@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","// 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","// 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 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","// 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","// @@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","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}","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}","'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","// @@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","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import defineProperty from \"./defineProperty\";\nexport default function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}","import { getOrigin } from '../../utils/utils.js'\r\nimport { delimiter, transforms } from '../core/regex.js'\r\nimport { registerMethods } from '../../utils/methods.js'\r\nimport Matrix from '../../types/Matrix.js'\r\n\r\n// Reset all transformations\r\nexport function untransform () {\r\n return this.attr('transform', null)\r\n}\r\n\r\n// merge the whole transformation chain into one matrix and returns it\r\nexport function matrixify () {\r\n var matrix = (this.attr('transform') || '')\r\n // split transformations\r\n .split(transforms).slice(0, -1).map(function (str) {\r\n // generate key => value pairs\r\n var kv = str.trim().split('(')\r\n return [ kv[0],\r\n kv[1].split(delimiter)\r\n .map(function (str) {\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 SVGNumber from '../../types/SVGNumber.js'\r\n\r\n// Radius x value\r\nexport function rx (rx) {\r\n return this.attr('rx', rx)\r\n}\r\n\r\n// Radius y value\r\nexport function ry (ry) {\r\n return this.attr('ry', ry)\r\n}\r\n\r\n// Move over x-axis\r\nexport function x (x) {\r\n return x == null\r\n ? this.cx() - this.rx()\r\n : this.cx(x + this.rx())\r\n}\r\n\r\n// Move over y-axis\r\nexport function y (y) {\r\n return y == null\r\n ? this.cy() - this.ry()\r\n : this.cy(y + this.ry())\r\n}\r\n\r\n// Move by center over x-axis\r\nexport function cx (x) {\r\n return x == null\r\n ? this.attr('cx')\r\n : this.attr('cx', x)\r\n}\r\n\r\n// Move by center over y-axis\r\nexport function cy (y) {\r\n return y == null\r\n ? this.attr('cy')\r\n : this.attr('cy', y)\r\n}\r\n\r\n// Set width of element\r\nexport function width (width) {\r\n return width == null\r\n ? this.rx() * 2\r\n : this.rx(new SVGNumber(width).divide(2))\r\n}\r\n\r\n// Set height of element\r\nexport function height (height) {\r\n return height == null\r\n ? this.ry() * 2\r\n : this.ry(new SVGNumber(height).divide(2))\r\n}\r\n","import { register } from '../utils/adopter.js'\r\nimport Element from './Element.js'\r\n\r\nexport default class Shape extends Element {}\r\n\r\nregister(Shape)\r\n","import { cx, cy, height, width, x, y } from '../modules/core/circled.js'\r\nimport {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Shape from './Shape.js'\r\n\r\nexport default class Circle extends Shape {\r\n constructor (node) {\r\n super(nodeOrNew('circle', node), node)\r\n }\r\n\r\n radius (r) {\r\n return this.attr('r', r)\r\n }\r\n\r\n // Radius x value\r\n rx (rx) {\r\n return this.attr('r', rx)\r\n }\r\n\r\n // Alias radius x value\r\n ry (ry) {\r\n return this.rx(ry)\r\n }\r\n\r\n size (size) {\r\n return this.radius(new SVGNumber(size).divide(2))\r\n }\r\n}\r\n\r\nextend(Circle, { x, y, cx, cy, width, height })\r\n\r\nregisterMethods({\r\n Element: {\r\n // Create circle element\r\n circle: wrapWithAttrCheck(function (size) {\r\n return this.put(new Circle())\r\n .size(size)\r\n .move(0, 0)\r\n })\r\n }\r\n})\r\n\r\nregister(Circle)\r\n","import { register } from '../utils/adopter.js'\r\nimport Element from './Element.js'\r\n\r\nexport default class Container extends Element {\r\n flatten (parent) {\r\n this.each(function () {\r\n if (this instanceof Container) return this.flatten(parent).ungroup(parent)\r\n return this.toParent(parent)\r\n })\r\n\r\n // we need this so that the root does not get removed\r\n this.node.firstElementChild || this.remove()\r\n\r\n return this\r\n }\r\n\r\n ungroup (parent) {\r\n parent = parent || this.parent()\r\n\r\n this.each(function () {\r\n return this.toParent(parent)\r\n })\r\n\r\n this.remove()\r\n\r\n return this\r\n }\r\n}\r\n\r\nregister(Container)\r\n","import { nodeOrNew, register } from '../utils/adopter.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class Defs extends Container {\r\n constructor (node) {\r\n super(nodeOrNew('defs', node), node)\r\n }\r\n\r\n flatten () {\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","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Path from './Path.js'\r\nimport PathArray from '../types/PathArray.js'\r\nimport Text from './Text.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class TextPath extends Text {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('textPath', node), node)\r\n }\r\n\r\n // return the array of the path track element\r\n array () {\r\n var track = this.track()\r\n\r\n return track ? track.array() : null\r\n }\r\n\r\n // Plot path if any\r\n plot (d) {\r\n var track = this.track()\r\n var pathArray = null\r\n\r\n if (track) {\r\n pathArray = track.plot(d)\r\n }\r\n\r\n return (d == null) ? pathArray : this\r\n }\r\n\r\n // Get the path element\r\n track () {\r\n return this.reference('href')\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n textPath: wrapWithAttrCheck(function (text, path) {\r\n return this.defs().path(path).text(text).addTo(this)\r\n })\r\n },\r\n Text: {\r\n // Create path for text to run on\r\n path: wrapWithAttrCheck(function (track) {\r\n var path = new TextPath()\r\n\r\n // if track is a path, reuse it\r\n if (!(track instanceof Path)) {\r\n // create path element\r\n track = this.root().defs().path(track)\r\n }\r\n\r\n // link textPath to path and add content\r\n path.attr('href', '#' + track, xlink)\r\n\r\n // add textPath element as child node and return textPath\r\n return this.put(path)\r\n }),\r\n\r\n // Get the textPath children\r\n textPath () {\r\n return this.find('textPath')[0]\r\n }\r\n },\r\n Path: {\r\n // creates a textPath from this path\r\n text: wrapWithAttrCheck(function (text) {\r\n if (text instanceof Text) {\r\n var txt = text.text()\r\n return text.clear().path(this).text(txt)\r\n }\r\n return this.parent().put(new Text()).path(this).text(text)\r\n }),\r\n\r\n targets () {\r\n return baseFind('svg [href*=\"' + this.id() + '\"]')\r\n }\r\n }\r\n})\r\n\r\nTextPath.prototype.MorphArray = PathArray\r\nregister(TextPath)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Shape from './Shape.js'\r\n\r\nexport default class Use extends Shape {\r\n constructor (node) {\r\n super(nodeOrNew('use', node), node)\r\n }\r\n\r\n // Use element as a reference\r\n element (element, file) {\r\n // Set lined element\r\n return this.attr('href', (file || '') + '#' + element, xlink)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a use element\r\n use: wrapWithAttrCheck(function (element, file) {\r\n return this.put(new Use()).element(element, file)\r\n })\r\n }\r\n})\r\n\r\nregister(Use)\r\n","/* Optional Modules */\r\nimport './modules/optional/arrange.js'\r\nimport './modules/optional/class.js'\r\nimport './modules/optional/css.js'\r\nimport './modules/optional/data.js'\r\nimport './modules/optional/memory.js'\r\nimport './modules/optional/sugar.js'\r\nimport './modules/optional/transform.js'\r\n\r\nimport { extend, makeInstance } from './utils/adopter.js'\r\nimport { getMethodNames, getMethodsFor } from './utils/methods.js'\r\nimport Box from './types/Box.js'\r\nimport Circle from './elements/Circle.js'\r\nimport Color from './types/Color.js'\r\nimport Container from './elements/Container.js'\r\nimport Defs from './elements/Defs.js'\r\nimport Dom from './elements/Dom.js'\r\nimport Element from './elements/Element.js'\r\nimport Ellipse from './elements/Ellipse.js'\r\nimport EventTarget from './types/EventTarget.js'\r\nimport Gradient from './elements/Gradient.js'\r\nimport Image from './elements/Image.js'\r\nimport Line from './elements/Line.js'\r\nimport List from './types/List.js'\r\nimport Marker from './elements/Marker.js'\r\nimport Matrix from './types/Matrix.js'\r\nimport Morphable, {\r\n NonMorphable,\r\n ObjectBag,\r\n TransformBag,\r\n makeMorphable,\r\n registerMorphableType\r\n} from './animation/Morphable.js'\r\nimport Path from './elements/Path.js'\r\nimport PathArray from './types/PathArray.js'\r\nimport Pattern from './elements/Pattern.js'\r\nimport PointArray from './types/PointArray.js'\r\nimport Polygon from './elements/Polygon.js'\r\nimport Polyline from './elements/Polyline.js'\r\nimport Rect from './elements/Rect.js'\r\nimport Runner from './animation/Runner.js'\r\nimport SVGArray from './types/SVGArray.js'\r\nimport SVGNumber from './types/SVGNumber.js'\r\nimport Shape from './elements/Shape.js'\r\nimport Svg from './elements/Svg.js'\r\nimport Symbol from './elements/Symbol.js'\r\nimport Text from './elements/Text.js'\r\nimport Tspan from './elements/Tspan.js'\r\nimport * as defaults from './modules/core/defaults.js'\r\nimport * as utils from './utils/utils.js'\r\nimport * as namespaces from './modules/core/namespaces.js'\r\nimport * as regex from './modules/core/regex.js'\r\n\r\nexport {\r\n Morphable,\r\n registerMorphableType,\r\n makeMorphable,\r\n TransformBag,\r\n ObjectBag,\r\n NonMorphable\r\n}\r\n\r\nexport { defaults, utils, namespaces, regex }\r\nexport const SVG = makeInstance\r\nexport { default as parser } from './modules/core/parser.js'\r\nexport { default as find } from './modules/core/selector.js'\r\nexport * from './modules/core/event.js'\r\nexport * from './utils/adopter.js'\r\nexport { registerWindow } from './utils/window.js'\r\n\r\n/* Animation Modules */\r\nexport { default as Animator } from './animation/Animator.js'\r\nexport { Controller, Ease, PID, Spring, easing } from './animation/Controller.js'\r\nexport { default as Queue } from './animation/Queue.js'\r\nexport { default as Runner } from './animation/Runner.js'\r\nexport { default as Timeline } from './animation/Timeline.js'\r\n\r\n/* Types */\r\nexport { default as Array } from './types/SVGArray.js'\r\nexport { default as Box } from './types/Box.js'\r\nexport { default as Color } from './types/Color.js'\r\nexport { default as EventTarget } from './types/EventTarget.js'\r\nexport { default as Matrix } from './types/Matrix.js'\r\nexport { default as Number } from './types/SVGNumber.js'\r\nexport { default as PathArray } from './types/PathArray.js'\r\nexport { default as Point } from './types/Point.js'\r\nexport { default as PointArray } from './types/PointArray.js'\r\nexport { default as List } from './types/List.js'\r\n\r\n/* Elements */\r\nexport { default as Circle } from './elements/Circle.js'\r\nexport { default as ClipPath } from './elements/ClipPath.js'\r\nexport { default as Container } from './elements/Container.js'\r\nexport { default as Defs } from './elements/Defs.js'\r\nexport { default as Dom } from './elements/Dom.js'\r\nexport { default as Element } from './elements/Element.js'\r\nexport { default as Ellipse } from './elements/Ellipse.js'\r\nexport { default as Gradient } from './elements/Gradient.js'\r\nexport { default as G } from './elements/G.js'\r\nexport { default as A } from './elements/A.js'\r\nexport { default as Image } from './elements/Image.js'\r\nexport { default as Line } from './elements/Line.js'\r\nexport { default as Marker } from './elements/Marker.js'\r\nexport { default as Mask } from './elements/Mask.js'\r\nexport { default as Path } from './elements/Path.js'\r\nexport { default as Pattern } from './elements/Pattern.js'\r\nexport { default as Polygon } from './elements/Polygon.js'\r\nexport { default as Polyline } from './elements/Polyline.js'\r\nexport { default as Rect } from './elements/Rect.js'\r\nexport { default as Shape } from './elements/Shape.js'\r\nexport { default as Stop } from './elements/Stop.js'\r\nexport { default as Style } from './elements/Style.js'\r\nexport { default as Svg } from './elements/Svg.js'\r\nexport { default as Symbol } from './elements/Symbol.js'\r\nexport { default as Text } from './elements/Text.js'\r\nexport { default as TextPath } from './elements/TextPath.js'\r\nexport { default as Tspan } from './elements/Tspan.js'\r\nexport { default as Use } from './elements/Use.js'\r\n\r\nextend([\r\n Svg,\r\n Symbol,\r\n Image,\r\n Pattern,\r\n Marker\r\n], getMethodsFor('viewbox'))\r\n\r\nextend([\r\n Line,\r\n Polyline,\r\n Polygon,\r\n Path\r\n], getMethodsFor('marker'))\r\n\r\nextend(Text, getMethodsFor('Text'))\r\nextend(Path, getMethodsFor('Path'))\r\n\r\nextend(Defs, getMethodsFor('Defs'))\r\n\r\nextend([\r\n Text,\r\n Tspan\r\n], getMethodsFor('Tspan'))\r\n\r\nextend([\r\n Rect,\r\n Ellipse,\r\n Circle,\r\n Gradient\r\n], getMethodsFor('radius'))\r\n\r\nextend(EventTarget, getMethodsFor('EventTarget'))\r\nextend(Dom, getMethodsFor('Dom'))\r\nextend(Element, getMethodsFor('Element'))\r\nextend(Shape, getMethodsFor('Shape'))\r\n// extend(Element, getConstructor('Memory'))\r\nextend(Container, getMethodsFor('Container'))\r\n\r\nextend(Runner, getMethodsFor('Runner'))\r\n\r\nList.extend(getMethodNames())\r\n\r\nregisterMorphableType([\r\n SVGNumber,\r\n Color,\r\n Box,\r\n Matrix,\r\n SVGArray,\r\n PointArray,\r\n PathArray\r\n])\r\n\r\nmakeMorphable()\r\n"],"names":["global","core","require$$0","require$$1","uid","isObject","document","require$$2","anObject","toPrimitive","IE8_DOM_DEFINE","dP","createDesc","cof","IObject","defined","has","hide","aFunction","ctx","redefine","toInteger","min","toIObject","toLength","toAbsoluteIndex","$keys","enumBugKeys","getKeys","IE_PROTO","PROTOTYPE","dPs","create","descriptor","setToStringTag","toObject","$iterCreate","getPrototypeOf","LIBRARY","Iterators","$export","step","addToUnscopables","ITERATOR","wks","$iterators","methods","names","registerMethods","name","m","Array","isArray","_name","addMethodNames","Object","keys","assign","getMethodsFor","getMethodNames","Set","_names","push","fails","map","array","block","i","il","length","result","filter","radians","d","Math","PI","degrees","r","camelCase","s","toLowerCase","replace","g","toUpperCase","unCamelCase","capitalize","charAt","slice","proportionalSize","element","width","height","box","bbox","getOrigin","o","origin","ox","oy","string","trim","x","y","bx","includes","by","ns","xmlns","xlink","svgjs","globals","window","registerWindow","win","doc","Base","elements","root","makeNode","createElementNS","makeInstance","adopter","querySelector","node","innerHTML","firstChild","nodeOrNew","Node","adopt","instance","className","nodeName","mockAdopt","mock","register","asRoot","prototype","getClass","did","eid","assignNewId","children","id","extend","modules","attrCheck","key","method","wrapWithAttrCheck","fn","args","constructor","apply","attr","siblings","parent","position","index","next","prev","forward","p","removeElement","add","isRoot","appendChild","defs","backward","front","back","before","remove","after","insertBefore","insertAfter","numberAndUnit","hex","rgb","reference","transforms","whitespace","isHex","isRgb","isCss","isBlank","isNumber","isPercent","isImage","delimiter","hyphen","pathLetters","isPathLetter","numbersWithDots","dots","classes","split","hasClass","indexOf","addClass","join","removeClass","c","toggleClass","css","style","val","ret","arguments","cssText","el","forEach","t","cased","test","show","visible","data","a","v","JSON","parse","e","stringify","remember","k","memory","forget","_memory","listenerId","getEvents","n","getEventHolder","events","getEventTarget","clearEvents","on","listener","binding","options","l","bind","bag","_svgjsListenerId","event","ev","addEventListener","off","namespace","removeEventListener","dispatch","Event","dispatchEvent","CustomEvent","detail","cancelable","arrayWithHoles","iterableToArrayLimit","nonIterableRest","DESCRIPTORS","$flags","sixDigitHex","substring","componentHex","component","integer","round","toString","is","object","space","getParameters","b","params","_a","_b","_c","z","_d","h","cieSpace","hueToRgb","q","Color","inputs","init","values","noWhitespace","exec","parseInt","hexParse","Error","components","dToR","cos","sin","yL","xL","zL","ct","mx","nm","rU","gU","bU","pow","bd","color","lab","xyz","r255","g255","b255","rL","gL","bL","xU","yU","zU","lch","sqrt","atan2","hsl","max","isGrey","delta","cmyk","toHex","toRgb","format","rV","gV","bV","toArray","random","mode","isColor","Point","source","base","clone","transform","f","point","screenCTM","inverse","parser","nodes","svg","size","path","parentNode","body","documentElement","addTo","isNulledBox","w","domContains","contains","call","Box","parseFloat","left","top","x2","y2","cx","cy","merge","xMin","Infinity","xMax","yMin","yMax","pts","addOffset","pageXOffset","pageYOffset","isNulled","getBox","cb","retry","getBBox","rbox","getBoundingClientRect","viewbox","closeEnough","threshold","abs","Matrix","fromArray","Element","matrixify","isMatrixLike","matrix","multiplyO","formatTransforms","current","transformer","translateO","rx","ry","lmultiplyO","scaleO","scaleX","scaleY","skewO","skewX","skewY","shearO","shear","rotateO","theta","isFinite","px","py","dx","dy","tx","ty","compose","originX","originY","sx","sy","lam","rotate","translateX","translateY","decompose","determinant","ccw","thetaRad","st","multiply","matrixMultiply","lmultiply","inverseO","det","na","nb","nc","nd","ne","nf","translate","scale","flip","axis","around","flipO","lx","skew","tan","ly","skewXO","skewYO","aroundO","equals","other","comp","valueOf","flipBoth","flipX","flipY","positionX","positionY","relative","relativeX","relativeY","ctm","getCTM","rect","getScreenCTM","subClassArray","Function","baseClass","_constructor","Arr","arr","List","each","fnOrMethodName","concat","reduce","obj","attrs","baseFind","query","querySelectorAll","find","EventTarget","type","j","defaultPrevented","fire","noop","timeline","duration","ease","delay","fill","stroke","opacity","offset","SVGArray","toSet","SVGNumber","value","unit","isNaN","match","toJSON","plus","number","minus","times","divide","hooks","registerAttrHook","attributes","nodeValue","last","curr","removeAttribute","getAttribute","defaults","_val","hook","leading","setAttributeNS","setAttribute","rebuild","Dom","childNodes","put","clear","hasChildNodes","removeChild","lastChild","_defs","writeDataToDom","cloneNode","deep","first","get","matches","selector","matchesSelector","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","oMatchesSelector","SVGElement","putIn","replaceChild","precision","factor","newAttrs","svgOrFn","outerHTML","well","len","fragment","_this","createDocumentFragment","firstElementChild","words","text","textContent","Svg","dom","hasAttribute","setData","center","inside","move","parents","until","sugar","prefix","extension","mat","angle","direction","directionString","dmove","radius","_element","getTotalLength","pointAt","getPointAtLength","font","ax","ay","amove","defineProperty","untransform","str","kv","reverse","toParent","pCtm","toRoot","decomposed","cleanRelative","Shape","Circle","circle","Container","flatten","ungroup","Defs","Ellipse","circled","ellipse","Stop","update","from","fx","fy","x1","y1","to","Gradient","stop","url","targets","gradiented","gradient","Pattern","pattern","patternUnits","Image","load","callback","img","src","image","PointArray","toLine","at","pos","destination","points","pop","maxX","maxY","minX","minY","MorphArray","Line","plot","pointed","line","Marker","ref","marker","makeSetterGetter","easing","bezier","steps","stepPosition","jumps","beforeFlag","floor","jumping","Stepper","done","Ease","Controller","stepper","target","dt","recalculate","_duration","overshoot","_overshoot","eps","pi","os","log","zeta","wn","Spring","velocity","acceleration","newPosition","PID","windup","integral","error","P","I","D","PathArray","pathRegReplace","arrayToString","pathHandlers","M","p0","L","H","V","C","S","Q","T","Z","A","mlhvqtcsaz","jl","equalCommands","pathArray","morph","sourceArray","destinationArray","paramCnt","Morphable","_stepper","_from","_to","_type","_context","_morphObj","_set","NonMorphable","morphableTypes","ObjectBag","complete","TransformBag","objOrArr","entries","sort","registerMorphableType","makeMorphable","Path","_array","Polygon","polygon","poly","Polyline","polyline","Rect","Queue","_first","_last","item","shift","Animator","nextDraw","frames","timeouts","timer","performance","Date","frame","run","requestAnimationFrame","_draw","transform_frame","timeout","time","now","cancelFrame","clearTimeout","nextTimeout","lastTimeout","nextFrame","lastFrame","makeSchedule","runnerInfo","start","runner","end","defaultSource","Timeline","timeSource","_timeSource","_startTime","_speed","_persist","_nextFrame","_paused","_runners","_order","_time","_lastSourceTime","_lastStepTime","_step","schedule","when","absoluteStartTime","endTime","getEndTime","unschedule","persist","updateTime","_continue","splice","lastRunnerInfo","lastDuration","lastStartTime","active","play","pause","finish","speed","yes","currentSpeed","positive","seek","dtOrForever","immediateStep","dtSource","dtTime","runnersLeft","dtToStart","reset","finished","_timeline","Runner","_queue","_isDeclarative","_history","enabled","_lastTime","_reseted","transformId","_haveReversed","_reverse","_loopsDone","_swing","_wait","_times","_prepareRunner","animate","sanitise","loop","swing","wait","queue","initFn","runFn","retargetFn","isTransform","initialiser","retarget","initialised","during","loops","loopDuration","loopsDone","relativeTime","whole","partial","swinging","backwards","uncliped","clipped","swingForward","forwards","progress","running","_lastPosition","justStarted","justFinished","declarative","_initialise","converged","_run","_rememberMorpher","morpher","caller","_tryRetarget","needsIt","positionOrDt","allfinished","addTransform","clearTransform","clearTransformsFromQueue","FakeRunner","mergeWith","getRunnerTransform","mergeTransforms","runners","_transformationRunners","netTransform","_frameId","RunnerArray","ids","leftSibling","getByID","lastRunner","edit","newRunner","clearBefore","deleteCnt","frameId","_clearTransformRunnersBefore","currentRunner","_currentTransform","addRunner","styleAttr","zoom","level","affine","isMatrix","currentAngle","startTransform","setup","undefined","rTarget","rCurrent","possibilities","distances","shortest","affineParameters","newTransforms","_queueNumber","_queueNumberDelta","newTo","_queueObject","version","getElementsByTagName","nested","Symbol","symbol","plain","_build","createTextNode","getComputedTextLength","Text","_rebuild","firstLine","nodeType","newLined","build","tspan","newLine","self","blankLineOffset","fontSize","getComputedStyle","getPropertyValue","textable","Tspan","ClipPath","unclip","clip","clipWith","clipper","G","group","link","linkTo","Mask","unmask","mask","maskWith","masker","cssRule","rule","Style","addText","fontFamily","fontface","TextPath","track","textPath","txt","Use","file","use","SVG"],"mappings":"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"}
\ No newline at end of file |