{"version":3,"file":"svg.min.js","sources":["../node_modules/core-js/internals/global.js","../node_modules/core-js/internals/internal-state.js","../node_modules/core-js/internals/fails.js","../node_modules/core-js/internals/descriptors.js","../node_modules/core-js/internals/object-property-is-enumerable.js","../node_modules/core-js/internals/create-property-descriptor.js","../node_modules/core-js/internals/classof-raw.js","../node_modules/core-js/internals/indexed-object.js","../node_modules/core-js/internals/require-object-coercible.js","../node_modules/core-js/internals/to-indexed-object.js","../node_modules/core-js/internals/is-object.js","../node_modules/core-js/internals/to-primitive.js","../node_modules/core-js/internals/has.js","../node_modules/core-js/internals/document-create-element.js","../node_modules/core-js/internals/ie8-dom-define.js","../node_modules/core-js/internals/object-get-own-property-descriptor.js","../node_modules/core-js/internals/an-object.js","../node_modules/core-js/internals/object-define-property.js","../node_modules/core-js/internals/create-non-enumerable-property.js","../node_modules/core-js/internals/set-global.js","../node_modules/core-js/internals/shared-store.js","../node_modules/core-js/internals/shared.js","../node_modules/core-js/internals/function-to-string.js","../node_modules/core-js/internals/native-weak-map.js","../node_modules/core-js/internals/uid.js","../node_modules/core-js/internals/shared-key.js","../node_modules/core-js/internals/hidden-keys.js","../node_modules/core-js/internals/redefine.js","../node_modules/core-js/internals/path.js","../node_modules/core-js/internals/get-built-in.js","../node_modules/core-js/internals/to-integer.js","../node_modules/core-js/internals/to-length.js","../node_modules/core-js/internals/to-absolute-index.js","../node_modules/core-js/internals/array-includes.js","../node_modules/core-js/internals/object-keys-internal.js","../node_modules/core-js/internals/enum-bug-keys.js","../node_modules/core-js/internals/object-get-own-property-names.js","../node_modules/core-js/internals/object-get-own-property-symbols.js","../node_modules/core-js/internals/own-keys.js","../node_modules/core-js/internals/copy-constructor-properties.js","../node_modules/core-js/internals/is-forced.js","../node_modules/core-js/internals/export.js","../node_modules/core-js/internals/object-keys.js","../node_modules/core-js/internals/to-object.js","../node_modules/core-js/internals/object-assign.js","../node_modules/core-js/modules/es.object.assign.js","../node_modules/core-js/internals/is-array.js","../node_modules/core-js/internals/v8-version.js","../node_modules/core-js/internals/create-property.js","../node_modules/core-js/internals/native-symbol.js","../node_modules/core-js/internals/well-known-symbol.js","../node_modules/core-js/internals/user-agent.js","../node_modules/core-js/internals/array-method-has-species-support.js","../node_modules/core-js/modules/es.array.slice.js","../node_modules/core-js/modules/es.function.name.js","../node_modules/core-js/internals/object-get-own-property-names-external.js","../node_modules/core-js/modules/es.object.get-own-property-names.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/core-js/internals/object-define-properties.js","../node_modules/core-js/internals/html.js","../node_modules/core-js/internals/object-create.js","../node_modules/core-js/internals/wrapped-well-known-symbol.js","../node_modules/core-js/internals/define-well-known-symbol.js","../node_modules/core-js/internals/set-to-string-tag.js","../node_modules/core-js/internals/a-function.js","../node_modules/core-js/internals/bind-context.js","../node_modules/core-js/internals/array-species-create.js","../node_modules/core-js/internals/array-iteration.js","../node_modules/core-js/modules/es.symbol.js","../node_modules/core-js/modules/es.symbol.description.js","../node_modules/core-js/modules/es.symbol.iterator.js","../node_modules/core-js/internals/add-to-unscopables.js","../node_modules/core-js/internals/iterators-core.js","../node_modules/core-js/internals/iterators.js","../node_modules/core-js/internals/correct-prototype-getter.js","../node_modules/core-js/internals/object-get-prototype-of.js","../node_modules/core-js/internals/create-iterator-constructor.js","../node_modules/core-js/internals/object-set-prototype-of.js","../node_modules/core-js/internals/a-possible-prototype.js","../node_modules/core-js/internals/define-iterator.js","../node_modules/core-js/modules/es.array.iterator.js","../node_modules/core-js/internals/classof.js","../node_modules/core-js/internals/object-to-string.js","../node_modules/core-js/modules/es.object.to-string.js","../node_modules/core-js/internals/freezing.js","../node_modules/core-js/internals/internal-metadata.js","../node_modules/core-js/internals/is-array-iterator-method.js","../node_modules/core-js/internals/get-iterator-method.js","../node_modules/core-js/internals/call-with-safe-iteration-closing.js","../node_modules/core-js/internals/iterate.js","../node_modules/core-js/internals/an-instance.js","../node_modules/core-js/internals/check-correctness-of-iteration.js","../node_modules/core-js/internals/inherit-if-required.js","../node_modules/core-js/internals/redefine-all.js","../node_modules/core-js/internals/set-species.js","../node_modules/core-js/internals/collection-strong.js","../node_modules/core-js/internals/string-multibyte.js","../node_modules/core-js/internals/collection.js","../node_modules/core-js/modules/es.set.js","../node_modules/core-js/modules/es.string.iterator.js","../node_modules/core-js/internals/dom-iterables.js","../node_modules/core-js/modules/web.dom-collections.iterator.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../src/utils/methods.js","../node_modules/core-js/modules/es.array.includes.js","../node_modules/core-js/internals/regexp-flags.js","../node_modules/core-js/internals/regexp-exec.js","../node_modules/core-js/modules/es.regexp.exec.js","../node_modules/core-js/internals/is-regexp.js","../node_modules/core-js/internals/correct-is-regexp-logic.js","../node_modules/core-js/modules/es.string.includes.js","../node_modules/core-js/internals/not-a-regexp.js","../node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","../node_modules/core-js/internals/advance-string-index.js","../node_modules/core-js/internals/regexp-exec-abstract.js","../node_modules/core-js/modules/es.string.replace.js","../node_modules/core-js/internals/whitespaces.js","../node_modules/core-js/internals/forced-string-trim-method.js","../node_modules/core-js/internals/string-trim.js","../node_modules/core-js/modules/es.string.trim.js","../src/utils/utils.js","../src/modules/core/namespaces.js","../src/utils/window.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../src/types/Base.js","../src/utils/adopter.js","../src/modules/optional/arrange.js","../node_modules/core-js/modules/es.array.filter.js","../node_modules/core-js/internals/sloppy-array-method.js","../node_modules/core-js/modules/es.array.index-of.js","../node_modules/core-js/modules/es.array.join.js","../node_modules/core-js/internals/species-constructor.js","../node_modules/core-js/modules/es.string.split.js","../src/modules/core/regex.js","../src/modules/optional/class.js","../node_modules/core-js/internals/array-for-each.js","../node_modules/core-js/modules/web.dom-collections.for-each.js","../node_modules/core-js/modules/es.array.for-each.js","../src/modules/optional/css.js","../src/modules/optional/data.js","../src/modules/optional/memory.js","../node_modules/core-js/internals/array-reduce.js","../node_modules/core-js/modules/es.array.reduce.js","../src/modules/core/event.js","../node_modules/core-js/modules/es.array.concat.js","../node_modules/core-js/modules/es.array.map.js","../node_modules/core-js/modules/es.date.to-string.js","../node_modules/core-js/internals/parse-int.js","../node_modules/core-js/modules/es.parse-int.js","../node_modules/core-js/modules/es.regexp.to-string.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../src/types/Color.js","../node_modules/core-js/modules/es.object.keys.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/core-js/modules/es.string.match.js","../node_modules/core-js/modules/es.number.constructor.js","../node_modules/core-js/internals/parse-float.js","../node_modules/core-js/modules/es.parse-float.js","../src/types/Point.js","../src/types/Matrix.js","../src/modules/core/parser.js","../src/types/Box.js","../src/types/ArrayPolyfill.js","../src/types/List.js","../src/modules/core/selector.js","../src/types/EventTarget.js","../src/modules/core/defaults.js","../src/types/SVGArray.js","../src/types/SVGNumber.js","../src/modules/core/attr.js","../src/elements/Dom.js","../src/elements/Element.js","../src/modules/optional/sugar.js","../node_modules/core-js/modules/es.array.reverse.js","../node_modules/core-js/modules/es.object.define-properties.js","../node_modules/core-js/modules/es.object.define-property.js","../node_modules/core-js/modules/es.object.get-own-property-descriptor.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../src/modules/core/circled.js","../node_modules/core-js/modules/es.object.get-own-property-descriptors.js","../src/modules/optional/transform.js","../src/elements/Shape.js","../src/elements/Circle.js","../src/elements/Container.js","../src/elements/Defs.js","../src/elements/Ellipse.js","../src/elements/Stop.js","../src/modules/core/gradiented.js","../src/elements/Gradient.js","../src/elements/Pattern.js","../src/elements/Image.js","../src/types/PointArray.js","../src/modules/core/pointed.js","../src/elements/Line.js","../src/elements/Marker.js","../node_modules/core-js/modules/es.array.sort.js","../src/animation/Controller.js","../src/types/PathArray.js","../src/animation/Morphable.js","../src/elements/Path.js","../src/modules/core/poly.js","../src/elements/Polygon.js","../src/elements/Polyline.js","../src/elements/Rect.js","../node_modules/core-js/modules/es.array.splice.js","../src/animation/Queue.js","../src/animation/Animator.js","../src/animation/Timeline.js","../src/animation/Runner.js","../src/elements/Svg.js","../src/elements/Symbol.js","../src/modules/core/textable.js","../src/elements/Text.js","../src/elements/Tspan.js","../src/elements/ClipPath.js","../src/elements/ForeignObject.js","../src/elements/G.js","../src/elements/A.js","../src/elements/Mask.js","../src/elements/Style.js","../src/elements/TextPath.js","../src/elements/Use.js","../src/main.js","../src/svg.js"],"sourcesContent":["var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","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 toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.3.6',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","var shared = require('../internals/shared');\n\nmodule.exports = shared('native-function-to-string', Function.toString);\n","var global = require('../internals/global');\nvar nativeFunctionToString = require('../internals/function-to-string');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar nativeFunctionToString = require('../internals/function-to-string');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(nativeFunctionToString).split('toString');\n\nshared('inspectSource', function (it) {\n return nativeFunctionToString.call(it);\n});\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);\n});\n","module.exports = require('../internals/global');\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !nativeAssign || fails(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nvar Symbol = global.Symbol;\nvar store = shared('wks');\n\nmodule.exports = function (name) {\n return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]\n || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('slice') }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names-external').f;\n\nvar FAILS_ON_PRIMITIVES = fails(function () { return !Object.getOwnPropertyNames(1); });\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n getOwnPropertyNames: nativeGetOwnPropertyNames\n});\n","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nexport default function _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar PROTOTYPE = 'prototype';\nvar Empty = function () { /* empty */ };\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var length = enumBugKeys.length;\n var lt = '<';\n var script = 'script';\n var gt = '>';\n var js = 'java' + script + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n iframe.src = String(js);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];\n return createDict();\n};\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\nhiddenKeys[IE_PROTO] = true;\n","exports.f = require('../internals/well-known-symbol');\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/wrapped-well-known-symbol');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\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 isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var bind = require('../internals/bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/wrapped-well-known-symbol');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar JSON = global.JSON;\nvar nativeJSONStringify = JSON && JSON.stringify;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = NATIVE_SYMBOL && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.github.io/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nJSON && $({ target: 'JSON', stat: true, forced: !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return nativeJSONStringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || nativeJSONStringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || nativeJSONStringify(Object(symbol)) != '{}';\n}) }, {\n stringify: function stringify(it) {\n var args = [it];\n var index = 1;\n var replacer, $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return nativeJSONStringify.apply(JSON, args);\n }\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n createNonEnumerableProperty(ArrayPrototype, UNSCOPABLES, create(null));\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","'use strict';\nvar classof = require('../internals/classof');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = String(test) !== '[object z]' ? function toString() {\n return '[object ' + classof(this) + ']';\n} : test.toString;\n","var redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\nvar ObjectPrototype = Object.prototype;\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (toString !== ObjectPrototype.toString) {\n redefine(ObjectPrototype, 'toString', toString, { unsafe: true });\n}\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","var hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar defineProperty = require('../internals/object-define-property').f;\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + ++id, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var anObject = require('../internals/an-object');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n throw error;\n }\n};\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1);\n var iterator, iterFn, index, length, result, next, step;\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = AS_ENTRIES\n ? boundFunction(anObject(step = iterable[index])[0], step[1])\n : boundFunction(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n\niterate.stop = function (result) {\n return new Result(true, result);\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common, IS_MAP, IS_WEAK) {\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var ADDER = IS_MAP ? 'set' : 'add';\n var exported = {};\n\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n // eslint-disable-next-line max-len\n if (isForced(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n })))) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.REQUIRED = true;\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.github.io/ecma262/#sec-set-objects\nmodule.exports = collection('Set', function (get) {\n return function Set() { return get(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","const methods = {}\r\nconst names = []\r\n\r\nexport function registerMethods (name, m) {\r\n if (Array.isArray(name)) {\r\n for (const _name of name) {\r\n registerMethods(_name, m)\r\n }\r\n return\r\n }\r\n\r\n if (typeof name === 'object') {\r\n for (const _name in name) {\r\n registerMethods(_name, name[_name])\r\n }\r\n return\r\n }\r\n\r\n addMethodNames(Object.getOwnPropertyNames(m))\r\n methods[name] = Object.assign(methods[name] || {}, m)\r\n}\r\n\r\nexport function getMethodsFor (name) {\r\n return methods[name] || {}\r\n}\r\n\r\nexport function getMethodNames () {\r\n return [ ...new Set(names) ]\r\n}\r\n\r\nexport function addMethodNames (_names) {\r\n names.push(..._names)\r\n}\r\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (e) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (f) { /* empty */ }\n } return false;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n }\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/forced-string-trim-method');\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","// Map function\r\nexport function map (array, block) {\r\n var i\r\n var il = array.length\r\n var result = []\r\n\r\n for (i = 0; i < il; i++) {\r\n result.push(block(array[i]))\r\n }\r\n\r\n return result\r\n}\r\n\r\n// Filter function\r\nexport function filter (array, block) {\r\n var i\r\n var il = array.length\r\n var result = []\r\n\r\n for (i = 0; i < il; i++) {\r\n if (block(array[i])) {\r\n result.push(array[i])\r\n }\r\n }\r\n\r\n return result\r\n}\r\n\r\n// Degrees to radians\r\nexport function radians (d) {\r\n return d % 360 * Math.PI / 180\r\n}\r\n\r\n// Radians to degrees\r\nexport function degrees (r) {\r\n return r * 180 / Math.PI % 360\r\n}\r\n\r\n// Convert dash-separated-string to camelCase\r\nexport function camelCase (s) {\r\n return s.toLowerCase().replace(/-(.)/g, function (m, g) {\r\n return g.toUpperCase()\r\n })\r\n}\r\n\r\n// Convert camel cased string to string seperated\r\nexport function unCamelCase (s) {\r\n return s.replace(/([A-Z])/g, function (m, g) {\r\n return '-' + g.toLowerCase()\r\n })\r\n}\r\n\r\n// Capitalize first letter of a string\r\nexport function capitalize (s) {\r\n return s.charAt(0).toUpperCase() + s.slice(1)\r\n}\r\n\r\n// Calculate proportional width and height values when necessary\r\nexport function proportionalSize (element, width, height, box) {\r\n if (width == null || height == null) {\r\n box = box || element.bbox()\r\n\r\n if (width == null) {\r\n width = box.width / box.height * height\r\n } else if (height == null) {\r\n height = box.height / box.width * width\r\n }\r\n }\r\n\r\n return {\r\n width: width,\r\n height: height\r\n }\r\n}\r\n\r\nexport function getOrigin (o, element) {\r\n // Allow origin or around as the names\r\n const origin = o.origin // o.around == null ? o.origin : o.around\r\n let ox, oy\r\n\r\n // Allow the user to pass a string to rotate around a given point\r\n if (typeof origin === 'string' || origin == null) {\r\n // Get the bounding box of the element with no transformations applied\r\n const string = (origin || 'center').toLowerCase().trim()\r\n const { height, width, x, y } = element.bbox()\r\n\r\n // Calculate the transformed x and y coordinates\r\n const bx = string.includes('left') ? x\r\n : string.includes('right') ? x + width\r\n : x + width / 2\r\n const by = string.includes('top') ? y\r\n : string.includes('bottom') ? y + height\r\n : y + height / 2\r\n\r\n // Set the bounds eg : \"bottom-left\", \"Top right\", \"middle\" etc...\r\n ox = o.ox != null ? o.ox : bx\r\n oy = o.oy != null ? o.oy : by\r\n } else {\r\n ox = origin[0]\r\n oy = origin[1]\r\n }\r\n\r\n // Return the origin as it is if it wasn't a string\r\n return [ ox, oy ]\r\n}\r\n","// Default namespaces\r\nexport const ns = 'http://www.w3.org/2000/svg'\r\nexport const xmlns = 'http://www.w3.org/2000/xmlns/'\r\nexport const xlink = 'http://www.w3.org/1999/xlink'\r\nexport const svgjs = 'http://svgjs.com/svgjs'\r\n","export const globals = {\r\n window: typeof window === 'undefined' ? null : window,\r\n document: typeof document === 'undefined' ? null : document\r\n}\r\n\r\nexport function registerWindow (win = null, doc = null) {\r\n globals.window = win\r\n globals.document = doc\r\n}\r\n\r\nconst save = {}\r\n\r\nexport function saveWindow () {\r\n save.window = globals.window\r\n save.document = globals.document\r\n}\r\n\r\nexport function restoreWindow () {\r\n globals.window = save.window\r\n globals.document = save.document\r\n}\r\n\r\nexport function withWindow (win, fn) {\r\n saveWindow()\r\n registerWindow(win, win.document)\r\n fn(win, win.document)\r\n restoreWindow()\r\n}\r\n\r\nexport function getWindow () {\r\n return globals.window\r\n}\r\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default class Base {\r\n // constructor (node/*, {extensions = []} */) {\r\n // // this.tags = []\r\n // //\r\n // // for (let extension of extensions) {\r\n // // extension.setup.call(this, node)\r\n // // this.tags.push(extension.name)\r\n // // }\r\n // }\r\n}\r\n","import { addMethodNames } from './methods.js'\r\nimport { capitalize } from './utils.js'\r\nimport { ns } from '../modules/core/namespaces.js'\r\nimport { globals } from '../utils/window.js'\r\nimport Base from '../types/Base.js'\r\n\r\nconst elements = {}\r\nexport const root = '___SYMBOL___ROOT___'\r\n\r\n// Method for element creation\r\nexport function create (name) {\r\n // create element\r\n return globals.document.createElementNS(ns, name)\r\n}\r\n\r\nexport function makeInstance (element) {\r\n if (element instanceof Base) return element\r\n\r\n if (typeof element === 'object') {\r\n return adopter(element)\r\n }\r\n\r\n if (element == null) {\r\n return new elements[root]()\r\n }\r\n\r\n if (typeof element === 'string' && element.charAt(0) !== '<') {\r\n return adopter(globals.document.querySelector(element))\r\n }\r\n\r\n var node = create('svg')\r\n node.innerHTML = element\r\n\r\n // We can use firstChild here because we know,\r\n // that the first char is < and thus an element\r\n element = adopter(node.firstChild)\r\n\r\n return element\r\n}\r\n\r\nexport function nodeOrNew (name, node) {\r\n return node instanceof globals.window.Node ? node : create(name)\r\n}\r\n\r\n// Adopt existing svg elements\r\nexport function adopt (node) {\r\n // check for presence of node\r\n if (!node) return null\r\n\r\n // make sure a node isn't already adopted\r\n if (node.instance instanceof Base) return node.instance\r\n\r\n // initialize variables\r\n var className = capitalize(node.nodeName || 'Dom')\r\n\r\n // Make sure that gradients are adopted correctly\r\n if (className === 'LinearGradient' || className === 'RadialGradient') {\r\n className = 'Gradient'\r\n\r\n // Fallback to Dom if element is not known\r\n } else if (!elements[className]) {\r\n className = 'Dom'\r\n }\r\n\r\n return new elements[className](node)\r\n}\r\n\r\nlet adopter = adopt\r\n\r\nexport function mockAdopt (mock = adopt) {\r\n adopter = mock\r\n}\r\n\r\nexport function register (element, name = element.name, asRoot = false) {\r\n elements[name] = element\r\n if (asRoot) elements[root] = element\r\n\r\n addMethodNames(Object.getOwnPropertyNames(element.prototype))\r\n\r\n return element\r\n}\r\n\r\nexport function getClass (name) {\r\n return elements[name]\r\n}\r\n\r\n// Element id sequence\r\nlet did = 1000\r\n\r\n// Get next named element id\r\nexport function eid (name) {\r\n return 'Svgjs' + capitalize(name) + (did++)\r\n}\r\n\r\n// Deep new id assignment\r\nexport function assignNewId (node) {\r\n // do the same for SVG child nodes as well\r\n for (var i = node.children.length - 1; i >= 0; i--) {\r\n assignNewId(node.children[i])\r\n }\r\n\r\n if (node.id) {\r\n return adopt(node).id(eid(node.nodeName))\r\n }\r\n\r\n return adopt(node)\r\n}\r\n\r\n// Method for extending objects\r\nexport function extend (modules, methods, attrCheck) {\r\n var key, i\r\n\r\n modules = Array.isArray(modules) ? modules : [ modules ]\r\n\r\n for (i = modules.length - 1; i >= 0; i--) {\r\n for (key in methods) {\r\n let method = methods[key]\r\n if (attrCheck) {\r\n method = wrapWithAttrCheck(methods[key])\r\n }\r\n modules[i].prototype[key] = method\r\n }\r\n }\r\n}\r\n\r\n// export function extendWithAttrCheck (...args) {\r\n// extend(...args, true)\r\n// }\r\n\r\nexport function wrapWithAttrCheck (fn) {\r\n return function (...args) {\r\n const o = args[args.length - 1]\r\n\r\n if (o && o.constructor === Object && !(o instanceof Array)) {\r\n return fn.apply(this, args.slice(0, -1)).attr(o)\r\n } else {\r\n return fn.apply(this, args)\r\n }\r\n }\r\n}\r\n\r\nexport function invent (config) {\r\n // Create element initializer\r\n var initializer = typeof config.create === 'function'\r\n ? config.create\r\n : function (node) {\r\n this.constructor(node || create(config.create))\r\n }\r\n\r\n // Inherit prototype\r\n if (config.inherit) {\r\n /* eslint new-cap: off */\r\n initializer.prototype = new config.inherit()\r\n initializer.prototype.constructor = initializer\r\n }\r\n\r\n // Extend with methods\r\n if (config.extend) { extend(initializer, config.extend) }\r\n\r\n // Attach construct method to parent\r\n if (config.construct) { extend(config.parent || elements.Container, config.construct) }\r\n\r\n return initializer\r\n}\r\n","import { makeInstance } from '../../utils/adopter.js'\r\nimport { registerMethods } from '../../utils/methods.js'\r\n\r\n// Get all siblings, including myself\r\nexport function siblings () {\r\n return this.parent().children()\r\n}\r\n\r\n// Get the curent position siblings\r\nexport function position () {\r\n return this.parent().index(this)\r\n}\r\n\r\n// Get the next element (will return null if there is none)\r\nexport function next () {\r\n return this.siblings()[this.position() + 1]\r\n}\r\n\r\n// Get the next element (will return null if there is none)\r\nexport function prev () {\r\n return this.siblings()[this.position() - 1]\r\n}\r\n\r\n// Send given element one step forward\r\nexport function forward () {\r\n var i = this.position() + 1\r\n var p = this.parent()\r\n\r\n // move node one step forward\r\n p.removeElement(this).add(this, i)\r\n\r\n // make sure defs node is always at the top\r\n if (typeof p.isRoot === 'function' && p.isRoot()) {\r\n p.node.appendChild(p.defs().node)\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Send given element one step backward\r\nexport function backward () {\r\n var i = this.position()\r\n\r\n if (i > 0) {\r\n this.parent().removeElement(this).add(this, i - 1)\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Send given element all the way to the front\r\nexport function front () {\r\n var p = this.parent()\r\n\r\n // Move node forward\r\n p.node.appendChild(this.node)\r\n\r\n // Make sure defs node is always at the top\r\n if (typeof p.isRoot === 'function' && p.isRoot()) {\r\n p.node.appendChild(p.defs().node)\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Send given element all the way to the back\r\nexport function back () {\r\n if (this.position() > 0) {\r\n this.parent().removeElement(this).add(this, 0)\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Inserts a given element before the targeted element\r\nexport function before (element) {\r\n element = makeInstance(element)\r\n element.remove()\r\n\r\n var i = this.position()\r\n\r\n this.parent().add(element, i)\r\n\r\n return this\r\n}\r\n\r\n// Inserts a given element after the targeted element\r\nexport function after (element) {\r\n element = makeInstance(element)\r\n element.remove()\r\n\r\n var i = this.position()\r\n\r\n this.parent().add(element, i + 1)\r\n\r\n return this\r\n}\r\n\r\nexport function insertBefore (element) {\r\n element = makeInstance(element)\r\n element.before(this)\r\n return this\r\n}\r\n\r\nexport function insertAfter (element) {\r\n element = makeInstance(element)\r\n element.after(this)\r\n return this\r\n}\r\n\r\nregisterMethods('Dom', {\r\n siblings,\r\n position,\r\n next,\r\n prev,\r\n forward,\r\n backward,\r\n front,\r\n back,\r\n before,\r\n after,\r\n insertBefore,\r\n insertAfter\r\n})\r\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('filter') }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !method || !fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar SLOPPY_METHOD = sloppyArrayMethod('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || SLOPPY_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar SLOPPY_METHOD = sloppyArrayMethod('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || SLOPPY_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\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 // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\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 // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // 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 > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n","// Parse unit value\r\nexport const numberAndUnit = /^([+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?)([a-z%]*)$/i\r\n\r\n// Parse hex value\r\nexport const hex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i\r\n\r\n// Parse rgb value\r\nexport const rgb = /rgb\\((\\d+),(\\d+),(\\d+)\\)/\r\n\r\n// Parse reference id\r\nexport const reference = /(#[a-z0-9\\-_]+)/i\r\n\r\n// splits a transformation chain\r\nexport const transforms = /\\)\\s*,?\\s*/\r\n\r\n// Whitespace\r\nexport const whitespace = /\\s/g\r\n\r\n// Test hex value\r\nexport const isHex = /^#[a-f0-9]{3,6}$/i\r\n\r\n// Test rgb value\r\nexport const isRgb = /^rgb\\(/\r\n\r\n// Test css declaration\r\nexport const isCss = /[^:]+:[^;]+;?/\r\n\r\n// Test for blank string\r\nexport const isBlank = /^(\\s+)?$/\r\n\r\n// Test for numeric string\r\nexport const isNumber = /^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i\r\n\r\n// Test for percent value\r\nexport const isPercent = /^-?[\\d.]+%$/\r\n\r\n// Test for image url\r\nexport const isImage = /\\.(jpg|jpeg|png|gif|svg)(\\?[^=]+.*)?/i\r\n\r\n// split at whitespace and comma\r\nexport const delimiter = /[\\s,]+/\r\n\r\n// The following regex are used to parse the d attribute of a path\r\n\r\n// Matches all hyphens which are not after an exponent\r\nexport const hyphen = /([^e])-/gi\r\n\r\n// Replaces and tests for all path letters\r\nexport const pathLetters = /[MLHVCSQTAZ]/gi\r\n\r\n// yes we need this one, too\r\nexport const isPathLetter = /[MLHVCSQTAZ]/i\r\n\r\n// matches 0.154.23.45\r\nexport const numbersWithDots = /((\\d?\\.\\d+(?:e[+-]?\\d+)?)((?:\\.\\d+(?:e[+-]?\\d+)?)+))+/gi\r\n\r\n// matches .\r\nexport const dots = /\\./g\r\n","import { delimiter } from '../core/regex.js'\r\nimport { registerMethods } from '../../utils/methods.js'\r\n\r\n// Return array of classes on the node\r\nexport function classes () {\r\n var attr = this.attr('class')\r\n return attr == null ? [] : attr.trim().split(delimiter)\r\n}\r\n\r\n// Return true if class exists on the node, false otherwise\r\nexport function hasClass (name) {\r\n return this.classes().indexOf(name) !== -1\r\n}\r\n\r\n// Add class to the node\r\nexport function addClass (name) {\r\n if (!this.hasClass(name)) {\r\n var array = this.classes()\r\n array.push(name)\r\n this.attr('class', array.join(' '))\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Remove class from the node\r\nexport function removeClass (name) {\r\n if (this.hasClass(name)) {\r\n this.attr('class', this.classes().filter(function (c) {\r\n return c !== name\r\n }).join(' '))\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Toggle the presence of a class on the node\r\nexport function toggleClass (name) {\r\n return this.hasClass(name) ? this.removeClass(name) : this.addClass(name)\r\n}\r\n\r\nregisterMethods('Dom', {\r\n classes, hasClass, addClass, removeClass, toggleClass\r\n})\r\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = sloppyArrayMethod('forEach') ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","import { camelCase } from '../../utils/utils.js'\r\nimport { isBlank } from '../core/regex.js'\r\nimport { registerMethods } from '../../utils/methods.js'\r\n\r\n// Dynamic style generator\r\nexport function css (style, val) {\r\n const ret = {}\r\n if (arguments.length === 0) {\r\n // get full style as object\r\n this.node.style.cssText.split(/\\s*;\\s*/)\r\n .filter(function (el) {\r\n return !!el.length\r\n })\r\n .forEach(function (el) {\r\n const t = el.split(/\\s*:\\s*/)\r\n ret[t[0]] = t[1]\r\n })\r\n return ret\r\n }\r\n\r\n if (arguments.length < 2) {\r\n // get style properties in the array\r\n if (Array.isArray(style)) {\r\n for (const name of style) {\r\n const cased = camelCase(name)\r\n ret[cased] = this.node.style[cased]\r\n }\r\n return ret\r\n }\r\n\r\n // get style for property\r\n if (typeof style === 'string') {\r\n return this.node.style[camelCase(style)]\r\n }\r\n\r\n // set styles in object\r\n if (typeof style === 'object') {\r\n for (const name in style) {\r\n // set empty string if null/undefined/'' was given\r\n this.node.style[camelCase(name)]\r\n = (style[name] == null || isBlank.test(style[name])) ? '' : style[name]\r\n }\r\n }\r\n }\r\n\r\n // set style for property\r\n if (arguments.length === 2) {\r\n this.node.style[camelCase(style)]\r\n = (val == null || isBlank.test(val)) ? '' : val\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Show element\r\nexport function show () {\r\n return this.css('display', '')\r\n}\r\n\r\n// Hide element\r\nexport function hide () {\r\n return this.css('display', 'none')\r\n}\r\n\r\n// Is element visible?\r\nexport function visible () {\r\n return this.css('display') !== 'none'\r\n}\r\n\r\nregisterMethods('Dom', {\r\n css, show, hide, visible\r\n})\r\n","import { registerMethods } from '../../utils/methods.js'\r\n\r\n// Store data values on svg nodes\r\nexport function data (a, v, r) {\r\n if (typeof a === 'object') {\r\n for (v in a) {\r\n this.data(v, a[v])\r\n }\r\n } else if (arguments.length < 2) {\r\n try {\r\n return JSON.parse(this.attr('data-' + a))\r\n } catch (e) {\r\n return this.attr('data-' + a)\r\n }\r\n } else {\r\n this.attr('data-' + a,\r\n v === null ? null\r\n : r === true || typeof v === 'string' || typeof v === 'number' ? v\r\n : JSON.stringify(v)\r\n )\r\n }\r\n\r\n return this\r\n}\r\n\r\nregisterMethods('Dom', { data })\r\n","import { registerMethods } from '../../utils/methods.js'\r\n\r\n// Remember arbitrary data\r\nexport function remember (k, v) {\r\n // remember every item in an object individually\r\n if (typeof arguments[0] === 'object') {\r\n for (var key in k) {\r\n this.remember(key, k[key])\r\n }\r\n } else if (arguments.length === 1) {\r\n // retrieve memory\r\n return this.memory()[k]\r\n } else {\r\n // store memory\r\n this.memory()[k] = v\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Erase a given memory\r\nexport function forget () {\r\n if (arguments.length === 0) {\r\n this._memory = {}\r\n } else {\r\n for (var i = arguments.length - 1; i >= 0; i--) {\r\n delete this.memory()[arguments[i]]\r\n }\r\n }\r\n return this\r\n}\r\n\r\n// This triggers creation of a new hidden class which is not performant\r\n// However, this function is not rarely used so it will not happen frequently\r\n// Return local memory object\r\nexport function memory () {\r\n return (this._memory = this._memory || {})\r\n}\r\n\r\nregisterMethods('Dom', { remember, forget, memory })\r\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: sloppyArrayMethod('reduce') }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","import { delimiter } from './regex.js'\r\nimport { makeInstance } from '../../utils/adopter.js'\r\nimport { globals } from '../../utils/window.js'\r\n\r\nlet listenerId = 0\r\nconst windowEvents = {}\r\n\r\nfunction getEvents (instance) {\r\n let n = instance.getEventHolder()\r\n\r\n // We dont want to save events in global space\r\n if (n === globals.window) n = windowEvents\r\n if (!n.events) n.events = {}\r\n return n.events\r\n}\r\n\r\nfunction getEventTarget (instance) {\r\n return instance.getEventTarget()\r\n}\r\n\r\nfunction clearEvents (instance) {\r\n const n = instance.getEventHolder()\r\n if (n.events) n.events = {}\r\n}\r\n\r\n// Add event binder in the SVG namespace\r\nexport function on (node, events, listener, binding, options) {\r\n var l = listener.bind(binding || node)\r\n var instance = makeInstance(node)\r\n var bag = getEvents(instance)\r\n var n = getEventTarget(instance)\r\n\r\n // events can be an array of events or a string of events\r\n events = Array.isArray(events) ? events : events.split(delimiter)\r\n\r\n // add id to listener\r\n if (!listener._svgjsListenerId) {\r\n listener._svgjsListenerId = ++listenerId\r\n }\r\n\r\n events.forEach(function (event) {\r\n var ev = event.split('.')[0]\r\n var ns = event.split('.')[1] || '*'\r\n\r\n // ensure valid object\r\n bag[ev] = bag[ev] || {}\r\n bag[ev][ns] = bag[ev][ns] || {}\r\n\r\n // reference listener\r\n bag[ev][ns][listener._svgjsListenerId] = l\r\n\r\n // add listener\r\n n.addEventListener(ev, l, options || false)\r\n })\r\n}\r\n\r\n// Add event unbinder in the SVG namespace\r\nexport function off (node, events, listener, options) {\r\n var instance = makeInstance(node)\r\n var bag = getEvents(instance)\r\n var n = getEventTarget(instance)\r\n\r\n // listener can be a function or a number\r\n if (typeof listener === 'function') {\r\n listener = listener._svgjsListenerId\r\n if (!listener) return\r\n }\r\n\r\n // events can be an array of events or a string or undefined\r\n events = Array.isArray(events) ? events : (events || '').split(delimiter)\r\n\r\n events.forEach(function (event) {\r\n var ev = event && event.split('.')[0]\r\n var ns = event && event.split('.')[1]\r\n var namespace, l\r\n\r\n if (listener) {\r\n // remove listener reference\r\n if (bag[ev] && bag[ev][ns || '*']) {\r\n // removeListener\r\n n.removeEventListener(ev, bag[ev][ns || '*'][listener], options || false)\r\n\r\n delete bag[ev][ns || '*'][listener]\r\n }\r\n } else if (ev && ns) {\r\n // remove all listeners for a namespaced event\r\n if (bag[ev] && bag[ev][ns]) {\r\n for (l in bag[ev][ns]) {\r\n off(n, [ ev, ns ].join('.'), l)\r\n }\r\n\r\n delete bag[ev][ns]\r\n }\r\n } else if (ns) {\r\n // remove all listeners for a specific namespace\r\n for (event in bag) {\r\n for (namespace in bag[event]) {\r\n if (ns === namespace) {\r\n off(n, [ event, ns ].join('.'))\r\n }\r\n }\r\n }\r\n } else if (ev) {\r\n // remove all listeners for the event\r\n if (bag[ev]) {\r\n for (namespace in bag[ev]) {\r\n off(n, [ ev, namespace ].join('.'))\r\n }\r\n\r\n delete bag[ev]\r\n }\r\n } else {\r\n // remove all listeners on a given node\r\n for (event in bag) {\r\n off(n, event)\r\n }\r\n\r\n clearEvents(instance)\r\n }\r\n })\r\n}\r\n\r\nexport function dispatch (node, event, data) {\r\n var n = getEventTarget(node)\r\n\r\n // Dispatch event\r\n if (event instanceof globals.window.Event) {\r\n n.dispatchEvent(event)\r\n } else {\r\n event = new globals.window.CustomEvent(event, { detail: data, cancelable: true })\r\n n.dispatchEvent(event)\r\n }\r\n return event\r\n}\r\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n concat: function concat(arg) { // eslint-disable-line no-unused-vars\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('map') }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var redefine = require('../internals/redefine');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar nativeDateToString = DatePrototype[TO_STRING];\nvar getTime = DatePrototype.getTime;\n\n// `Date.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-date.prototype.tostring\nif (new Date(NaN) + '' != INVALID_DATE) {\n redefine(DatePrototype, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? nativeDateToString.call(this) : INVALID_DATE;\n });\n}\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar nativeParseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = nativeParseInt(whitespaces + '08') !== 8 || nativeParseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(String(string));\n return nativeParseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : nativeParseInt;\n","var $ = require('../internals/export');\nvar parseIntImplementation = require('../internals/parse-int');\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != parseIntImplementation }, {\n parseInt: parseIntImplementation\n});\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","\r\nimport { hex, isHex, isRgb, rgb, whitespace } from '../modules/core/regex.js'\r\n\r\nfunction sixDigitHex (hex) {\r\n return hex.length === 4\r\n ? [ '#',\r\n hex.substring(1, 2), hex.substring(1, 2),\r\n hex.substring(2, 3), hex.substring(2, 3),\r\n hex.substring(3, 4), hex.substring(3, 4)\r\n ].join('')\r\n : hex\r\n}\r\n\r\nfunction componentHex (component) {\r\n const integer = Math.round(component)\r\n const bounded = Math.max(0, Math.min(255, integer))\r\n const hex = bounded.toString(16)\r\n return hex.length === 1 ? '0' + hex : hex\r\n}\r\n\r\nfunction is (object, space) {\r\n for (let i = space.length; i--;) {\r\n if (object[space[i]] == null) {\r\n return false\r\n }\r\n }\r\n return true\r\n}\r\n\r\nfunction getParameters (a, b) {\r\n const params = is(a, 'rgb') ? { _a: a.r, _b: a.g, _c: a.b, space: 'rgb' }\r\n : is(a, 'xyz') ? { _a: a.x, _b: a.y, _c: a.z, _d: 0, space: 'xyz' }\r\n : is(a, 'hsl') ? { _a: a.h, _b: a.s, _c: a.l, _d: 0, space: 'hsl' }\r\n : is(a, 'lab') ? { _a: a.l, _b: a.a, _c: a.b, _d: 0, space: 'lab' }\r\n : is(a, 'lch') ? { _a: a.l, _b: a.c, _c: a.h, _d: 0, space: 'lch' }\r\n : is(a, 'cmyk') ? { _a: a.c, _b: a.m, _c: a.y, _d: a.k, space: 'cmyk' }\r\n : { _a: 0, _b: 0, _c: 0, space: 'rgb' }\r\n\r\n params.space = b || params.space\r\n return params\r\n}\r\n\r\nfunction cieSpace (space) {\r\n if (space === 'lab' || space === 'xyz' || space === 'lch') {\r\n return true\r\n } else {\r\n return false\r\n }\r\n}\r\n\r\nfunction hueToRgb (p, q, t) {\r\n if (t < 0) t += 1\r\n if (t > 1) t -= 1\r\n if (t < 1 / 6) return p + (q - p) * 6 * t\r\n if (t < 1 / 2) return q\r\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6\r\n return p\r\n}\r\n\r\nexport default class Color {\r\n constructor (...inputs) {\r\n this.init(...inputs)\r\n }\r\n\r\n init (a = 0, b = 0, c = 0, d = 0, space = 'rgb') {\r\n // This catches the case when a falsy value is passed like ''\r\n a = !a ? 0 : a\r\n\r\n // Reset all values in case the init function is rerun with new color space\r\n if (this.space) {\r\n for (const component in this.space) {\r\n delete this[this.space[component]]\r\n }\r\n }\r\n\r\n if (typeof a === 'number') {\r\n // Allow for the case that we don't need d...\r\n space = typeof d === 'string' ? d : space\r\n d = typeof d === 'string' ? 0 : d\r\n\r\n // Assign the values straight to the color\r\n Object.assign(this, { _a: a, _b: b, _c: c, _d: d, space })\r\n // If the user gave us an array, make the color from it\r\n } else if (a instanceof Array) {\r\n this.space = b || (typeof a[3] === 'string' ? a[3] : a[4]) || 'rgb'\r\n Object.assign(this, { _a: a[0], _b: a[1], _c: a[2], _d: a[3] || 0 })\r\n } else if (a instanceof Object) {\r\n // Set the object up and assign its values directly\r\n const values = getParameters(a, b)\r\n Object.assign(this, values)\r\n } else if (typeof a === 'string') {\r\n if (isRgb.test(a)) {\r\n const noWhitespace = a.replace(whitespace, '')\r\n const [ _a, _b, _c ] = rgb.exec(noWhitespace)\r\n .slice(1, 4).map(v => parseInt(v))\r\n Object.assign(this, { _a, _b, _c, _d: 0, space: 'rgb' })\r\n } else if (isHex.test(a)) {\r\n const hexParse = v => parseInt(v, 16)\r\n const [ , _a, _b, _c ] = hex.exec(sixDigitHex(a)).map(hexParse)\r\n Object.assign(this, { _a, _b, _c, _d: 0, space: 'rgb' })\r\n } else throw Error('Unsupported string format, can\\'t construct Color')\r\n }\r\n\r\n // Now add the components as a convenience\r\n const { _a, _b, _c, _d } = this\r\n const components = this.space === 'rgb' ? { r: _a, g: _b, b: _c }\r\n : this.space === 'xyz' ? { x: _a, y: _b, z: _c }\r\n : this.space === 'hsl' ? { h: _a, s: _b, l: _c }\r\n : this.space === 'lab' ? { l: _a, a: _b, b: _c }\r\n : this.space === 'lch' ? { l: _a, c: _b, h: _c }\r\n : this.space === 'cmyk' ? { c: _a, m: _b, y: _c, k: _d }\r\n : {}\r\n Object.assign(this, components)\r\n }\r\n\r\n /*\r\n Conversion Methods\r\n */\r\n\r\n rgb () {\r\n if (this.space === 'rgb') {\r\n return this\r\n } else if (cieSpace(this.space)) {\r\n // Convert to the xyz color space\r\n let { x, y, z } = this\r\n if (this.space === 'lab' || this.space === 'lch') {\r\n // Get the values in the lab space\r\n let { l, a, b } = this\r\n if (this.space === 'lch') {\r\n const { c, h } = this\r\n const dToR = Math.PI / 180\r\n a = c * Math.cos(dToR * h)\r\n b = c * Math.sin(dToR * h)\r\n }\r\n\r\n // Undo the nonlinear function\r\n const yL = (l + 16) / 116\r\n const xL = a / 500 + yL\r\n const zL = yL - b / 200\r\n\r\n // Get the xyz values\r\n const ct = 16 / 116\r\n const mx = 0.008856\r\n const nm = 7.787\r\n x = 0.95047 * ((xL ** 3 > mx) ? xL ** 3 : (xL - ct) / nm)\r\n y = 1.00000 * ((yL ** 3 > mx) ? yL ** 3 : (yL - ct) / nm)\r\n z = 1.08883 * ((zL ** 3 > mx) ? zL ** 3 : (zL - ct) / nm)\r\n }\r\n\r\n // Convert xyz to unbounded rgb values\r\n const rU = x * 3.2406 + y * -1.5372 + z * -0.4986\r\n const gU = x * -0.9689 + y * 1.8758 + z * 0.0415\r\n const bU = x * 0.0557 + y * -0.2040 + z * 1.0570\r\n\r\n // Convert the values to true rgb values\r\n const pow = Math.pow\r\n const bd = 0.0031308\r\n const r = (rU > bd) ? (1.055 * pow(rU, 1 / 2.4) - 0.055) : 12.92 * rU\r\n const g = (gU > bd) ? (1.055 * pow(gU, 1 / 2.4) - 0.055) : 12.92 * gU\r\n const b = (bU > bd) ? (1.055 * pow(bU, 1 / 2.4) - 0.055) : 12.92 * bU\r\n\r\n // Make and return the color\r\n const color = new Color(255 * r, 255 * g, 255 * b)\r\n return color\r\n } else if (this.space === 'hsl') {\r\n // https://bgrins.github.io/TinyColor/docs/tinycolor.html\r\n // Get the current hsl values\r\n let { h, s, l } = this\r\n h /= 360\r\n s /= 100\r\n l /= 100\r\n\r\n // If we are grey, then just make the color directly\r\n if (s === 0) {\r\n l *= 255\r\n const color = new Color(l, l, l)\r\n return color\r\n }\r\n\r\n // TODO I have no idea what this does :D If you figure it out, tell me!\r\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s\r\n const p = 2 * l - q\r\n\r\n // Get the rgb values\r\n const r = 255 * hueToRgb(p, q, h + 1 / 3)\r\n const g = 255 * hueToRgb(p, q, h)\r\n const b = 255 * hueToRgb(p, q, h - 1 / 3)\r\n\r\n // Make a new color\r\n const color = new Color(r, g, b)\r\n return color\r\n } else if (this.space === 'cmyk') {\r\n // https://gist.github.com/felipesabino/5066336\r\n // Get the normalised cmyk values\r\n const { c, m, y, k } = this\r\n\r\n // Get the rgb values\r\n const r = 255 * (1 - Math.min(1, c * (1 - k) + k))\r\n const g = 255 * (1 - Math.min(1, m * (1 - k) + k))\r\n const b = 255 * (1 - Math.min(1, y * (1 - k) + k))\r\n\r\n // Form the color and return it\r\n const color = new Color(r, g, b)\r\n return color\r\n } else {\r\n return this\r\n }\r\n }\r\n\r\n lab () {\r\n // Get the xyz color\r\n const { x, y, z } = this.xyz()\r\n\r\n // Get the lab components\r\n const l = (116 * y) - 16\r\n const a = 500 * (x - y)\r\n const b = 200 * (y - z)\r\n\r\n // Construct and return a new color\r\n const color = new Color(l, a, b, 'lab')\r\n return color\r\n }\r\n\r\n xyz () {\r\n\r\n // Normalise the red, green and blue values\r\n const { _a: r255, _b: g255, _c: b255 } = this.rgb()\r\n const [ r, g, b ] = [ r255, g255, b255 ].map(v => v / 255)\r\n\r\n // Convert to the lab rgb space\r\n const rL = (r > 0.04045) ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92\r\n const gL = (g > 0.04045) ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92\r\n const bL = (b > 0.04045) ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92\r\n\r\n // Convert to the xyz color space without bounding the values\r\n const xU = (rL * 0.4124 + gL * 0.3576 + bL * 0.1805) / 0.95047\r\n const yU = (rL * 0.2126 + gL * 0.7152 + bL * 0.0722) / 1.00000\r\n const zU = (rL * 0.0193 + gL * 0.1192 + bL * 0.9505) / 1.08883\r\n\r\n // Get the proper xyz values by applying the bounding\r\n const x = (xU > 0.008856) ? Math.pow(xU, 1 / 3) : (7.787 * xU) + 16 / 116\r\n const y = (yU > 0.008856) ? Math.pow(yU, 1 / 3) : (7.787 * yU) + 16 / 116\r\n const z = (zU > 0.008856) ? Math.pow(zU, 1 / 3) : (7.787 * zU) + 16 / 116\r\n\r\n // Make and return the color\r\n const color = new Color(x, y, z, 'xyz')\r\n return color\r\n }\r\n\r\n lch () {\r\n\r\n // Get the lab color directly\r\n const { l, a, b } = this.lab()\r\n\r\n // Get the chromaticity and the hue using polar coordinates\r\n const c = Math.sqrt(a ** 2 + b ** 2)\r\n let h = 180 * Math.atan2(b, a) / Math.PI\r\n if (h < 0) {\r\n h *= -1\r\n h = 360 - h\r\n }\r\n\r\n // Make a new color and return it\r\n const color = new Color(l, c, h, 'lch')\r\n return color\r\n }\r\n\r\n hsl () {\r\n\r\n // Get the rgb values\r\n const { _a, _b, _c } = this.rgb()\r\n const [ r, g, b ] = [ _a, _b, _c ].map(v => v / 255)\r\n\r\n // Find the maximum and minimum values to get the lightness\r\n const max = Math.max(r, g, b)\r\n const min = Math.min(r, g, b)\r\n const l = (max + min) / 2\r\n\r\n // If the r, g, v values are identical then we are grey\r\n const isGrey = max === min\r\n\r\n // Calculate the hue and saturation\r\n const delta = max - min\r\n const s = isGrey ? 0\r\n : l > 0.5 ? delta / (2 - max - min)\r\n : delta / (max + min)\r\n const h = isGrey ? 0\r\n : max === r ? ((g - b) / delta + (g < b ? 6 : 0)) / 6\r\n : max === g ? ((b - r) / delta + 2) / 6\r\n : max === b ? ((r - g) / delta + 4) / 6\r\n : 0\r\n\r\n // Construct and return the new color\r\n const color = new Color(360 * h, 100 * s, 100 * l, 'hsl')\r\n return color\r\n }\r\n\r\n cmyk () {\r\n\r\n // Get the rgb values for the current color\r\n const { _a, _b, _c } = this.rgb()\r\n const [ r, g, b ] = [ _a, _b, _c ].map(v => v / 255)\r\n\r\n // Get the cmyk values in an unbounded format\r\n const k = Math.min(1 - r, 1 - g, 1 - b)\r\n\r\n if (k === 1) {\r\n // Catch the black case\r\n return new Color(0, 0, 0, 1, 'cmyk')\r\n }\r\n\r\n const c = (1 - r - k) / (1 - k)\r\n const m = (1 - g - k) / (1 - k)\r\n const y = (1 - b - k) / (1 - k)\r\n\r\n // Construct the new color\r\n const color = new Color(c, m, y, k, 'cmyk')\r\n return color\r\n }\r\n\r\n /*\r\n Input and Output methods\r\n */\r\n\r\n _clamped () {\r\n const { _a, _b, _c } = this.rgb()\r\n const { max, min, round } = Math\r\n const format = v => max(0, min(round(v), 255))\r\n return [ _a, _b, _c ].map(format)\r\n }\r\n\r\n toHex () {\r\n const [ r, g, b ] = this._clamped().map(componentHex)\r\n return `#${r}${g}${b}`\r\n }\r\n\r\n toString () {\r\n return this.toHex()\r\n }\r\n\r\n toRgb () {\r\n const [ rV, gV, bV ] = this._clamped()\r\n const string = `rgb(${rV},${gV},${bV})`\r\n return string\r\n }\r\n\r\n toArray () {\r\n const { _a, _b, _c, _d, space } = this\r\n return [ _a, _b, _c, _d, space ]\r\n }\r\n\r\n /*\r\n Generating random colors\r\n */\r\n\r\n static random (mode = 'vibrant', t, u) {\r\n\r\n // Get the math modules\r\n const { random, round, sin, PI: pi } = Math\r\n\r\n // Run the correct generator\r\n if (mode === 'vibrant') {\r\n\r\n const l = (81 - 57) * random() + 57\r\n const c = (83 - 45) * random() + 45\r\n const h = 360 * random()\r\n const color = new Color(l, c, h, 'lch')\r\n return color\r\n\r\n } else if (mode === 'sine') {\r\n\r\n t = t == null ? random() : t\r\n const r = round(80 * sin(2 * pi * t / 0.5 + 0.01) + 150)\r\n const g = round(50 * sin(2 * pi * t / 0.5 + 4.6) + 200)\r\n const b = round(100 * sin(2 * pi * t / 0.5 + 2.3) + 150)\r\n const color = new Color(r, g, b)\r\n return color\r\n\r\n } else if (mode === 'pastel') {\r\n\r\n const l = (94 - 86) * random() + 86\r\n const c = (26 - 9) * random() + 9\r\n const h = 360 * random()\r\n const color = new Color(l, c, h, 'lch')\r\n return color\r\n\r\n } else if (mode === 'dark') {\r\n\r\n const l = 10 + 10 * random()\r\n const c = (125 - 75) * random() + 86\r\n const h = 360 * random()\r\n const color = new Color(l, c, h, 'lch')\r\n return color\r\n\r\n } else if (mode === 'rgb') {\r\n\r\n const r = 255 * random()\r\n const g = 255 * random()\r\n const b = 255 * random()\r\n const color = new Color(r, g, b)\r\n return color\r\n\r\n } else if (mode === 'lab') {\r\n\r\n const l = 100 * random()\r\n const a = 256 * random() - 128\r\n const b = 256 * random() - 128\r\n const color = new Color(l, a, b, 'lab')\r\n return color\r\n\r\n } else if (mode === 'grey') {\r\n\r\n const grey = 255 * random()\r\n const color = new Color(grey, grey, grey)\r\n return color\r\n\r\n }\r\n }\r\n\r\n /*\r\n Constructing colors\r\n */\r\n\r\n // Test if given value is a color string\r\n static test (color) {\r\n return (typeof color === 'string')\r\n && (isHex.test(color) || isRgb.test(color))\r\n }\r\n\r\n // Test if given value is an rgb object\r\n static isRgb (color) {\r\n return color && typeof color.r === 'number'\r\n && typeof color.g === 'number'\r\n && typeof color.b === 'number'\r\n }\r\n\r\n // Test if given value is a color\r\n static isColor (color) {\r\n return color && (\r\n color instanceof Color\r\n || this.isRgb(color)\r\n || this.test(color)\r\n )\r\n }\r\n}\r\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import superPropBase from \"./superPropBase\";\nexport default function _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}","import getPrototypeOf from \"./getPrototypeOf\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar nativeParseFloat = global.parseFloat;\nvar FORCED = 1 / nativeParseFloat(whitespaces + '-0') !== -Infinity;\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(String(string));\n var result = nativeParseFloat(trimmedString);\n return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : nativeParseFloat;\n","var $ = require('../internals/export');\nvar parseFloatImplementation = require('../internals/parse-float');\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != parseFloatImplementation }, {\n parseFloat: parseFloatImplementation\n});\n","import Matrix from './Matrix.js'\r\n\r\nexport default class Point {\r\n // Initialize\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (x, y) {\r\n const base = { x: 0, y: 0 }\r\n\r\n // ensure source as object\r\n const source = Array.isArray(x) ? { x: x[0], y: x[1] }\r\n : typeof x === 'object' ? { x: x.x, y: x.y }\r\n : { x: x, y: y }\r\n\r\n // merge source\r\n this.x = source.x == null ? base.x : source.x\r\n this.y = source.y == null ? base.y : source.y\r\n\r\n return this\r\n }\r\n\r\n // Clone point\r\n clone () {\r\n return new Point(this)\r\n }\r\n\r\n transform (m) {\r\n return this.clone().transformO(m)\r\n }\r\n\r\n // Transform point with matrix\r\n transformO (m) {\r\n if (!Matrix.isMatrixLike(m)) {\r\n m = new Matrix(m)\r\n }\r\n\r\n const { x, y } = this\r\n\r\n // Perform the matrix multiplication\r\n this.x = m.a * x + m.c * y + m.e\r\n this.y = m.b * x + m.d * y + m.f\r\n\r\n return this\r\n }\r\n\r\n toArray () {\r\n return [ this.x, this.y ]\r\n }\r\n}\r\n\r\nexport function point (x, y) {\r\n return new Point(x, y).transform(this.screenCTM().inverse())\r\n}\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { radians } from '../utils/utils.js'\r\nimport { register } from '../utils/adopter.js'\r\nimport Element from '../elements/Element.js'\r\nimport Point from './Point.js'\r\n\r\nfunction closeEnough (a, b, threshold) {\r\n return Math.abs(b - a) < (threshold || 1e-6)\r\n}\r\n\r\nexport default class Matrix {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n // Initialize\r\n init (source) {\r\n var base = Matrix.fromArray([ 1, 0, 0, 1, 0, 0 ])\r\n\r\n // ensure source as object\r\n source = source instanceof Element ? source.matrixify()\r\n : typeof source === 'string' ? Matrix.fromArray(source.split(delimiter).map(parseFloat))\r\n : Array.isArray(source) ? Matrix.fromArray(source)\r\n : (typeof source === 'object' && Matrix.isMatrixLike(source)) ? source\r\n : (typeof source === 'object') ? new Matrix().transform(source)\r\n : arguments.length === 6 ? Matrix.fromArray([].slice.call(arguments))\r\n : base\r\n\r\n // Merge the source matrix with the base matrix\r\n this.a = source.a != null ? source.a : base.a\r\n this.b = source.b != null ? source.b : base.b\r\n this.c = source.c != null ? source.c : base.c\r\n this.d = source.d != null ? source.d : base.d\r\n this.e = source.e != null ? source.e : base.e\r\n this.f = source.f != null ? source.f : base.f\r\n\r\n return this\r\n }\r\n\r\n // Clones this matrix\r\n clone () {\r\n return new Matrix(this)\r\n }\r\n\r\n // Transform a matrix into another matrix by manipulating the space\r\n transform (o) {\r\n // Check if o is a matrix and then left multiply it directly\r\n if (Matrix.isMatrixLike(o)) {\r\n var matrix = new Matrix(o)\r\n return matrix.multiplyO(this)\r\n }\r\n\r\n // Get the proposed transformations and the current transformations\r\n var t = Matrix.formatTransforms(o)\r\n var current = this\r\n const { x: ox, y: oy } = new Point(t.ox, t.oy).transform(current)\r\n\r\n // Construct the resulting matrix\r\n var transformer = new Matrix()\r\n .translateO(t.rx, t.ry)\r\n .lmultiplyO(current)\r\n .translateO(-ox, -oy)\r\n .scaleO(t.scaleX, t.scaleY)\r\n .skewO(t.skewX, t.skewY)\r\n .shearO(t.shear)\r\n .rotateO(t.theta)\r\n .translateO(ox, oy)\r\n\r\n // If we want the origin at a particular place, we force it there\r\n if (isFinite(t.px) || isFinite(t.py)) {\r\n const origin = new Point(ox, oy).transform(transformer)\r\n // TODO: Replace t.px with isFinite(t.px)\r\n const dx = t.px ? t.px - origin.x : 0\r\n const dy = t.py ? t.py - origin.y : 0\r\n transformer.translateO(dx, dy)\r\n }\r\n\r\n // Translate now after positioning\r\n transformer.translateO(t.tx, t.ty)\r\n return transformer\r\n }\r\n\r\n // Applies a matrix defined by its affine parameters\r\n compose (o) {\r\n if (o.origin) {\r\n o.originX = o.origin[0]\r\n o.originY = o.origin[1]\r\n }\r\n // Get the parameters\r\n var ox = o.originX || 0\r\n var oy = o.originY || 0\r\n var sx = o.scaleX || 1\r\n var sy = o.scaleY || 1\r\n var lam = o.shear || 0\r\n var theta = o.rotate || 0\r\n var tx = o.translateX || 0\r\n var ty = o.translateY || 0\r\n\r\n // Apply the standard matrix\r\n var result = new Matrix()\r\n .translateO(-ox, -oy)\r\n .scaleO(sx, sy)\r\n .shearO(lam)\r\n .rotateO(theta)\r\n .translateO(tx, ty)\r\n .lmultiplyO(this)\r\n .translateO(ox, oy)\r\n return result\r\n }\r\n\r\n // Decomposes this matrix into its affine parameters\r\n decompose (cx = 0, cy = 0) {\r\n // Get the parameters from the matrix\r\n var a = this.a\r\n var b = this.b\r\n var c = this.c\r\n var d = this.d\r\n var e = this.e\r\n var f = this.f\r\n\r\n // Figure out if the winding direction is clockwise or counterclockwise\r\n var determinant = a * d - b * c\r\n var ccw = determinant > 0 ? 1 : -1\r\n\r\n // Since we only shear in x, we can use the x basis to get the x scale\r\n // and the rotation of the resulting matrix\r\n var sx = ccw * Math.sqrt(a * a + b * b)\r\n var thetaRad = Math.atan2(ccw * b, ccw * a)\r\n var theta = 180 / Math.PI * thetaRad\r\n var ct = Math.cos(thetaRad)\r\n var st = Math.sin(thetaRad)\r\n\r\n // We can then solve the y basis vector simultaneously to get the other\r\n // two affine parameters directly from these parameters\r\n var lam = (a * c + b * d) / determinant\r\n var sy = ((c * sx) / (lam * a - b)) || ((d * sx) / (lam * b + a))\r\n\r\n // Use the translations\r\n const tx = e - cx + cx * ct * sx + cy * (lam * ct * sx - st * sy)\r\n const ty = f - cy + cx * st * sx + cy * (lam * st * sx + ct * sy)\r\n\r\n // Construct the decomposition and return it\r\n return {\r\n // Return the affine parameters\r\n scaleX: sx,\r\n scaleY: sy,\r\n shear: lam,\r\n rotate: theta,\r\n translateX: tx,\r\n translateY: ty,\r\n originX: cx,\r\n originY: cy,\r\n\r\n // Return the matrix parameters\r\n a: this.a,\r\n b: this.b,\r\n c: this.c,\r\n d: this.d,\r\n e: this.e,\r\n f: this.f\r\n }\r\n }\r\n\r\n // Left multiplies by the given matrix\r\n multiply (matrix) {\r\n return this.clone().multiplyO(matrix)\r\n }\r\n\r\n multiplyO (matrix) {\r\n // Get the matrices\r\n var l = this\r\n var r = matrix instanceof Matrix\r\n ? matrix\r\n : new Matrix(matrix)\r\n\r\n return Matrix.matrixMultiply(l, r, this)\r\n }\r\n\r\n lmultiply (matrix) {\r\n return this.clone().lmultiplyO(matrix)\r\n }\r\n\r\n lmultiplyO (matrix) {\r\n var r = this\r\n var l = matrix instanceof Matrix\r\n ? matrix\r\n : new Matrix(matrix)\r\n\r\n return Matrix.matrixMultiply(l, r, this)\r\n }\r\n\r\n // Inverses matrix\r\n inverseO () {\r\n // Get the current parameters out of the matrix\r\n var a = this.a\r\n var b = this.b\r\n var c = this.c\r\n var d = this.d\r\n var e = this.e\r\n var f = this.f\r\n\r\n // Invert the 2x2 matrix in the top left\r\n var det = a * d - b * c\r\n if (!det) throw new Error('Cannot invert ' + this)\r\n\r\n // Calculate the top 2x2 matrix\r\n var na = d / det\r\n var nb = -b / det\r\n var nc = -c / det\r\n var nd = a / det\r\n\r\n // Apply the inverted matrix to the top right\r\n var ne = -(na * e + nc * f)\r\n var nf = -(nb * e + nd * f)\r\n\r\n // Construct the inverted matrix\r\n this.a = na\r\n this.b = nb\r\n this.c = nc\r\n this.d = nd\r\n this.e = ne\r\n this.f = nf\r\n\r\n return this\r\n }\r\n\r\n inverse () {\r\n return this.clone().inverseO()\r\n }\r\n\r\n // Translate matrix\r\n translate (x, y) {\r\n return this.clone().translateO(x, y)\r\n }\r\n\r\n translateO (x, y) {\r\n this.e += x || 0\r\n this.f += y || 0\r\n return this\r\n }\r\n\r\n // Scale matrix\r\n scale (x, y, cx, cy) {\r\n return this.clone().scaleO(...arguments)\r\n }\r\n\r\n scaleO (x, y = x, cx = 0, cy = 0) {\r\n // Support uniform scaling\r\n if (arguments.length === 3) {\r\n cy = cx\r\n cx = y\r\n y = x\r\n }\r\n\r\n const { a, b, c, d, e, f } = this\r\n\r\n this.a = a * x\r\n this.b = b * y\r\n this.c = c * x\r\n this.d = d * y\r\n this.e = e * x - cx * x + cx\r\n this.f = f * y - cy * y + cy\r\n\r\n return this\r\n }\r\n\r\n // Rotate matrix\r\n rotate (r, cx, cy) {\r\n return this.clone().rotateO(r, cx, cy)\r\n }\r\n\r\n rotateO (r, cx = 0, cy = 0) {\r\n // Convert degrees to radians\r\n r = radians(r)\r\n\r\n const cos = Math.cos(r)\r\n const sin = Math.sin(r)\r\n\r\n const { a, b, c, d, e, f } = this\r\n\r\n this.a = a * cos - b * sin\r\n this.b = b * cos + a * sin\r\n this.c = c * cos - d * sin\r\n this.d = d * cos + c * sin\r\n this.e = e * cos - f * sin + cy * sin - cx * cos + cx\r\n this.f = f * cos + e * sin - cx * sin - cy * cos + cy\r\n\r\n return this\r\n }\r\n\r\n // Flip matrix on x or y, at a given offset\r\n flip (axis, around) {\r\n return this.clone().flipO(axis, around)\r\n }\r\n\r\n flipO (axis, around) {\r\n return axis === 'x' ? this.scaleO(-1, 1, around, 0)\r\n : axis === 'y' ? this.scaleO(1, -1, 0, around)\r\n : this.scaleO(-1, -1, axis, around || axis) // Define an x, y flip point\r\n }\r\n\r\n // Shear matrix\r\n shear (a, cx, cy) {\r\n return this.clone().shearO(a, cx, cy)\r\n }\r\n\r\n shearO (lx, cx = 0, cy = 0) {\r\n const { a, b, c, d, e, f } = this\r\n\r\n this.a = a + b * lx\r\n this.c = c + d * lx\r\n this.e = e + f * lx - cy * lx\r\n\r\n return this\r\n }\r\n\r\n // Skew Matrix\r\n skew (x, y, cx, cy) {\r\n return this.clone().skewO(...arguments)\r\n }\r\n\r\n skewO (x, y = x, cx = 0, cy = 0) {\r\n // support uniformal skew\r\n if (arguments.length === 3) {\r\n cy = cx\r\n cx = y\r\n y = x\r\n }\r\n\r\n // Convert degrees to radians\r\n x = radians(x)\r\n y = radians(y)\r\n\r\n const lx = Math.tan(x)\r\n const ly = Math.tan(y)\r\n\r\n const { a, b, c, d, e, f } = this\r\n\r\n this.a = a + b * lx\r\n this.b = b + a * ly\r\n this.c = c + d * lx\r\n this.d = d + c * ly\r\n this.e = e + f * lx - cy * lx\r\n this.f = f + e * ly - cx * ly\r\n\r\n return this\r\n }\r\n\r\n // SkewX\r\n skewX (x, cx, cy) {\r\n return this.skew(x, 0, cx, cy)\r\n }\r\n\r\n skewXO (x, cx, cy) {\r\n return this.skewO(x, 0, cx, cy)\r\n }\r\n\r\n // SkewY\r\n skewY (y, cx, cy) {\r\n return this.skew(0, y, cx, cy)\r\n }\r\n\r\n skewYO (y, cx, cy) {\r\n return this.skewO(0, y, cx, cy)\r\n }\r\n\r\n // Transform around a center point\r\n aroundO (cx, cy, matrix) {\r\n var dx = cx || 0\r\n var dy = cy || 0\r\n return this.translateO(-dx, -dy).lmultiplyO(matrix).translateO(dx, dy)\r\n }\r\n\r\n around (cx, cy, matrix) {\r\n return this.clone().aroundO(cx, cy, matrix)\r\n }\r\n\r\n // Check if two matrices are equal\r\n equals (other) {\r\n var comp = new Matrix(other)\r\n return closeEnough(this.a, comp.a) && closeEnough(this.b, comp.b)\r\n && closeEnough(this.c, comp.c) && closeEnough(this.d, comp.d)\r\n && closeEnough(this.e, comp.e) && closeEnough(this.f, comp.f)\r\n }\r\n\r\n // Convert matrix to string\r\n toString () {\r\n return 'matrix(' + this.a + ',' + this.b + ',' + this.c + ',' + this.d + ',' + this.e + ',' + this.f + ')'\r\n }\r\n\r\n toArray () {\r\n return [ this.a, this.b, this.c, this.d, this.e, this.f ]\r\n }\r\n\r\n valueOf () {\r\n return {\r\n a: this.a,\r\n b: this.b,\r\n c: this.c,\r\n d: this.d,\r\n e: this.e,\r\n f: this.f\r\n }\r\n }\r\n\r\n static fromArray (a) {\r\n return { a: a[0], b: a[1], c: a[2], d: a[3], e: a[4], f: a[5] }\r\n }\r\n\r\n static isMatrixLike (o) {\r\n return (\r\n o.a != null\r\n || o.b != null\r\n || o.c != null\r\n || o.d != null\r\n || o.e != null\r\n || o.f != null\r\n )\r\n }\r\n\r\n static formatTransforms (o) {\r\n // Get all of the parameters required to form the matrix\r\n var flipBoth = o.flip === 'both' || o.flip === true\r\n var flipX = o.flip && (flipBoth || o.flip === 'x') ? -1 : 1\r\n var flipY = o.flip && (flipBoth || o.flip === 'y') ? -1 : 1\r\n var skewX = o.skew && o.skew.length ? o.skew[0]\r\n : isFinite(o.skew) ? o.skew\r\n : isFinite(o.skewX) ? o.skewX\r\n : 0\r\n var skewY = o.skew && o.skew.length ? o.skew[1]\r\n : isFinite(o.skew) ? o.skew\r\n : isFinite(o.skewY) ? o.skewY\r\n : 0\r\n var scaleX = o.scale && o.scale.length ? o.scale[0] * flipX\r\n : isFinite(o.scale) ? o.scale * flipX\r\n : isFinite(o.scaleX) ? o.scaleX * flipX\r\n : flipX\r\n var scaleY = o.scale && o.scale.length ? o.scale[1] * flipY\r\n : isFinite(o.scale) ? o.scale * flipY\r\n : isFinite(o.scaleY) ? o.scaleY * flipY\r\n : flipY\r\n var shear = o.shear || 0\r\n var theta = o.rotate || o.theta || 0\r\n var origin = new Point(o.origin || o.around || o.ox || o.originX, o.oy || o.originY)\r\n var ox = origin.x\r\n var oy = origin.y\r\n var position = new Point(o.position || o.px || o.positionX, o.py || o.positionY)\r\n var px = position.x\r\n var py = position.y\r\n var translate = new Point(o.translate || o.tx || o.translateX, o.ty || o.translateY)\r\n var tx = translate.x\r\n var ty = translate.y\r\n var relative = new Point(o.relative || o.rx || o.relativeX, o.ry || o.relativeY)\r\n var rx = relative.x\r\n var ry = relative.y\r\n\r\n // Populate all of the values\r\n return {\r\n scaleX, scaleY, skewX, skewY, shear, theta, rx, ry, tx, ty, ox, oy, px, py\r\n }\r\n }\r\n\r\n // left matrix, right matrix, target matrix which is overwritten\r\n static matrixMultiply (l, r, o) {\r\n // Work out the product directly\r\n var a = l.a * r.a + l.c * r.b\r\n var b = l.b * r.a + l.d * r.b\r\n var c = l.a * r.c + l.c * r.d\r\n var d = l.b * r.c + l.d * r.d\r\n var e = l.e + l.a * r.e + l.c * r.f\r\n var f = l.f + l.b * r.e + l.d * r.f\r\n\r\n // make sure to use local variables because l/r and o could be the same\r\n o.a = a\r\n o.b = b\r\n o.c = c\r\n o.d = d\r\n o.e = e\r\n o.f = f\r\n\r\n return o\r\n }\r\n}\r\n\r\nexport function ctm () {\r\n return new Matrix(this.node.getCTM())\r\n}\r\n\r\nexport function screenCTM () {\r\n /* https://bugzilla.mozilla.org/show_bug.cgi?id=1344537\r\n This is needed because FF does not return the transformation matrix\r\n for the inner coordinate system when getScreenCTM() is called on nested svgs.\r\n However all other Browsers do that */\r\n if (typeof this.isRoot === 'function' && !this.isRoot()) {\r\n var rect = this.rect(1, 1)\r\n var m = rect.node.getScreenCTM()\r\n rect.remove()\r\n return new Matrix(m)\r\n }\r\n return new Matrix(this.node.getScreenCTM())\r\n}\r\n\r\nregister(Matrix, 'Matrix')\r\n","import { globals } from '../../utils/window.js'\r\nimport { makeInstance } from '../../utils/adopter.js'\r\n\r\nexport default function parser () {\r\n // Reuse cached element if possible\r\n if (!parser.nodes) {\r\n const svg = makeInstance().size(2, 0)\r\n svg.node.style.cssText = [\r\n 'opacity: 0',\r\n 'position: absolute',\r\n 'left: -100%',\r\n 'top: -100%',\r\n 'overflow: hidden'\r\n ].join(';')\r\n\r\n svg.attr('focusable', 'false')\r\n svg.attr('aria-hidden', 'true')\r\n\r\n const path = svg.path().node\r\n\r\n parser.nodes = { svg, path }\r\n }\r\n\r\n if (!parser.nodes.svg.node.parentNode) {\r\n const b = globals.document.body || globals.document.documentElement\r\n parser.nodes.svg.addTo(b)\r\n }\r\n\r\n return parser.nodes\r\n}\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { globals } from '../utils/window.js'\r\nimport { register } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Matrix from './Matrix.js'\r\nimport Point from './Point.js'\r\nimport parser from '../modules/core/parser.js'\r\n\r\nfunction isNulledBox (box) {\r\n return !box.width && !box.height && !box.x && !box.y\r\n}\r\n\r\nfunction domContains (node) {\r\n return node === globals.document\r\n || (globals.document.documentElement.contains || function (node) {\r\n // This is IE - it does not support contains() for top-level SVGs\r\n while (node.parentNode) {\r\n node = node.parentNode\r\n }\r\n return node === globals.document\r\n }).call(globals.document.documentElement, node)\r\n}\r\n\r\nexport default class Box {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (source) {\r\n var base = [ 0, 0, 0, 0 ]\r\n source = typeof source === 'string' ? source.split(delimiter).map(parseFloat)\r\n : Array.isArray(source) ? source\r\n : typeof source === 'object' ? [ source.left != null ? source.left\r\n : source.x, source.top != null ? source.top : source.y, source.width, source.height ]\r\n : arguments.length === 4 ? [].slice.call(arguments)\r\n : base\r\n\r\n this.x = source[0] || 0\r\n this.y = source[1] || 0\r\n this.width = this.w = source[2] || 0\r\n this.height = this.h = source[3] || 0\r\n\r\n // Add more bounding box properties\r\n this.x2 = this.x + this.w\r\n this.y2 = this.y + this.h\r\n this.cx = this.x + this.w / 2\r\n this.cy = this.y + this.h / 2\r\n\r\n return this\r\n }\r\n\r\n // Merge rect box with another, return a new instance\r\n merge (box) {\r\n const x = Math.min(this.x, box.x)\r\n const y = Math.min(this.y, box.y)\r\n const width = Math.max(this.x + this.width, box.x + box.width) - x\r\n const height = Math.max(this.y + this.height, box.y + box.height) - y\r\n\r\n return new Box(x, y, width, height)\r\n }\r\n\r\n transform (m) {\r\n if (!(m instanceof Matrix)) {\r\n m = new Matrix(m)\r\n }\r\n\r\n let xMin = Infinity\r\n let xMax = -Infinity\r\n let yMin = Infinity\r\n let yMax = -Infinity\r\n\r\n const pts = [\r\n new Point(this.x, this.y),\r\n new Point(this.x2, this.y),\r\n new Point(this.x, this.y2),\r\n new Point(this.x2, this.y2)\r\n ]\r\n\r\n pts.forEach(function (p) {\r\n p = p.transform(m)\r\n xMin = Math.min(xMin, p.x)\r\n xMax = Math.max(xMax, p.x)\r\n yMin = Math.min(yMin, p.y)\r\n yMax = Math.max(yMax, p.y)\r\n })\r\n\r\n return new Box(\r\n xMin, yMin,\r\n xMax - xMin,\r\n yMax - yMin\r\n )\r\n }\r\n\r\n addOffset () {\r\n // offset by window scroll position, because getBoundingClientRect changes when window is scrolled\r\n this.x += globals.window.pageXOffset\r\n this.y += globals.window.pageYOffset\r\n return this\r\n }\r\n\r\n toString () {\r\n return this.x + ' ' + this.y + ' ' + this.width + ' ' + this.height\r\n }\r\n\r\n toArray () {\r\n return [ this.x, this.y, this.width, this.height ]\r\n }\r\n\r\n isNulled () {\r\n return isNulledBox(this)\r\n }\r\n}\r\n\r\nfunction getBox (cb, retry) {\r\n let box\r\n\r\n try {\r\n box = cb(this.node)\r\n\r\n if (isNulledBox(box) && !domContains(this.node)) {\r\n throw new Error('Element not in the dom')\r\n }\r\n } catch (e) {\r\n box = retry(this)\r\n }\r\n\r\n return box\r\n}\r\n\r\nexport function bbox () {\r\n return new Box(getBox.call(this, (node) => node.getBBox(), (el) => {\r\n try {\r\n const clone = el.clone().addTo(parser().svg).show()\r\n const box = clone.node.getBBox()\r\n clone.remove()\r\n return box\r\n } catch (e) {\r\n throw new Error('Getting bbox of element \"' + el.node.nodeName + '\" is not possible. ' + e.toString())\r\n }\r\n }))\r\n}\r\n\r\nexport function rbox (el) {\r\n const box = new Box(getBox.call(this, (node) => node.getBoundingClientRect(), (el) => {\r\n throw new Error('Getting rbox of element \"' + el.node.nodeName + '\" is not possible')\r\n }))\r\n if (el) return box.transform(el.screenCTM().inverse())\r\n return box.addOffset()\r\n}\r\n\r\nregisterMethods({\r\n viewbox: {\r\n viewbox (x, y, width, height) {\r\n // act as getter\r\n if (x == null) return new Box(this.attr('viewBox'))\r\n\r\n // act as setter\r\n return this.attr('viewBox', new Box(x, y, width, height))\r\n },\r\n\r\n zoom (level, point) {\r\n let width = this.node.clientWidth\r\n let height = this.node.clientHeight\r\n const v = this.viewbox()\r\n\r\n // Firefox does not support clientHeight and returns 0\r\n // https://bugzilla.mozilla.org/show_bug.cgi?id=874811\r\n if (!width && !height) {\r\n var style = window.getComputedStyle(this.node)\r\n width = parseFloat(style.getPropertyValue('width'))\r\n height = parseFloat(style.getPropertyValue('height'))\r\n }\r\n\r\n const zoomX = width / v.width\r\n const zoomY = height / v.height\r\n const zoom = Math.min(zoomX, zoomY)\r\n\r\n if (level == null) {\r\n return zoom\r\n }\r\n\r\n let zoomAmount = zoom / level\r\n if (zoomAmount === Infinity) zoomAmount = Number.MIN_VALUE\r\n\r\n point = point || new Point(width / 2 / zoomX + v.x, height / 2 / zoomY + v.y)\r\n\r\n const box = new Box(v).transform(\r\n new Matrix({ scale: zoomAmount, origin: point })\r\n )\r\n\r\n return this.viewbox(box)\r\n }\r\n }\r\n})\r\n\r\nregister(Box, 'Box')\r\n","/* eslint no-new-func: \"off\" */\r\nexport const subClassArray = (function () {\r\n try {\r\n // try es6 subclassing\r\n return Function('name', 'baseClass', '_constructor', [\r\n 'baseClass = baseClass || Array',\r\n 'return {',\r\n ' [name]: class extends baseClass {',\r\n ' constructor (...args) {',\r\n ' super(...args)',\r\n ' _constructor && _constructor.apply(this, args)',\r\n ' }',\r\n ' }',\r\n '}[name]'\r\n ].join('\\n'))\r\n } catch (e) {\r\n // Use es5 approach\r\n return (name, baseClass = Array, _constructor) => {\r\n const Arr = function () {\r\n baseClass.apply(this, arguments)\r\n _constructor && _constructor.apply(this, arguments)\r\n }\r\n\r\n Arr.prototype = Object.create(baseClass.prototype)\r\n Arr.prototype.constructor = Arr\r\n\r\n Arr.prototype.map = function (fn) {\r\n const arr = new Arr()\r\n arr.push.apply(arr, Array.prototype.map.call(this, fn))\r\n return arr\r\n }\r\n\r\n return Arr\r\n }\r\n }\r\n})()\r\n","import { extend } from '../utils/adopter.js'\r\nimport { subClassArray } from './ArrayPolyfill.js'\r\n\r\nconst List = subClassArray('List', Array, function (arr = []) {\r\n // This catches the case, that native map tries to create an array with new Array(1)\r\n if (typeof arr === 'number') return this\r\n this.length = 0\r\n this.push(...arr)\r\n})\r\n\r\nexport default List\r\n\r\nextend(List, {\r\n each (fnOrMethodName, ...args) {\r\n if (typeof fnOrMethodName === 'function') {\r\n return this.map((el) => {\r\n return fnOrMethodName.call(el, el)\r\n })\r\n } else {\r\n return this.map(el => {\r\n return el[fnOrMethodName](...args)\r\n })\r\n }\r\n },\r\n\r\n toArray () {\r\n return Array.prototype.concat.apply([], this)\r\n }\r\n})\r\n\r\nconst reserved = [ 'toArray', 'constructor', 'each' ]\r\n\r\nList.extend = function (methods) {\r\n methods = methods.reduce((obj, name) => {\r\n // Don't overwrite own methods\r\n if (reserved.includes(name)) return obj\r\n\r\n // Don't add private methods\r\n if (name[0] === '_') return obj\r\n\r\n // Relay every call to each()\r\n obj[name] = function (...attrs) {\r\n return this.each(name, ...attrs)\r\n }\r\n return obj\r\n }, {})\r\n\r\n extend(List, methods)\r\n}\r\n","import { adopt } from '../../utils/adopter.js'\r\nimport { globals } from '../../utils/window.js'\r\nimport { map } from '../../utils/utils.js'\r\nimport List from '../../types/List.js'\r\n\r\nexport default function baseFind (query, parent) {\r\n return new List(map((parent || globals.document).querySelectorAll(query), function (node) {\r\n return adopt(node)\r\n }))\r\n}\r\n\r\n// Scoped find method\r\nexport function find (query) {\r\n return baseFind(query, this.node)\r\n}\r\n\r\nexport function findOne (query) {\r\n return adopt(this.node.querySelector(query))\r\n}\r\n","import { dispatch, off, on } from '../modules/core/event.js'\r\nimport { register } from '../utils/adopter.js'\r\nimport Base from './Base.js'\r\n\r\nexport default class EventTarget extends Base {\r\n constructor ({ events = {} } = {}) {\r\n super()\r\n this.events = events\r\n }\r\n\r\n addEventListener () {}\r\n\r\n dispatch (event, data) {\r\n return dispatch(this, event, data)\r\n }\r\n\r\n dispatchEvent (event) {\r\n const bag = this.getEventHolder().events\r\n if (!bag) return true\r\n\r\n const events = bag[event.type]\r\n\r\n for (const i in events) {\r\n for (const j in events[i]) {\r\n events[i][j](event)\r\n }\r\n }\r\n\r\n return !event.defaultPrevented\r\n }\r\n\r\n // Fire given event\r\n fire (event, data) {\r\n this.dispatch(event, data)\r\n return this\r\n }\r\n\r\n getEventHolder () {\r\n return this\r\n }\r\n\r\n getEventTarget () {\r\n return this\r\n }\r\n\r\n // Unbind event from listener\r\n off (event, listener) {\r\n off(this, event, listener)\r\n return this\r\n }\r\n\r\n // Bind given event to listener\r\n on (event, listener, binding, options) {\r\n on(this, event, listener, binding, options)\r\n return this\r\n }\r\n\r\n removeEventListener () {}\r\n}\r\n\r\nregister(EventTarget, 'EventTarget')\r\n","\r\nexport function noop () {}\r\n\r\n// Default animation values\r\nexport const timeline = {\r\n duration: 400,\r\n ease: '>',\r\n delay: 0\r\n}\r\n\r\n// Default attribute values\r\nexport const attrs = {\r\n\r\n // fill and stroke\r\n 'fill-opacity': 1,\r\n 'stroke-opacity': 1,\r\n 'stroke-width': 0,\r\n 'stroke-linejoin': 'miter',\r\n 'stroke-linecap': 'butt',\r\n fill: '#000000',\r\n stroke: '#000000',\r\n opacity: 1,\r\n\r\n // position\r\n x: 0,\r\n y: 0,\r\n cx: 0,\r\n cy: 0,\r\n\r\n // size\r\n width: 0,\r\n height: 0,\r\n\r\n // radius\r\n r: 0,\r\n rx: 0,\r\n ry: 0,\r\n\r\n // gradient\r\n offset: 0,\r\n 'stop-opacity': 1,\r\n 'stop-color': '#000000',\r\n\r\n // text\r\n 'text-anchor': 'start'\r\n}\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { extend } from '../utils/adopter.js'\r\nimport { subClassArray } from './ArrayPolyfill.js'\r\n\r\nconst SVGArray = subClassArray('SVGArray', Array, function (arr) {\r\n this.init(arr)\r\n})\r\n\r\nexport default SVGArray\r\n\r\nextend(SVGArray, {\r\n init (arr) {\r\n // This catches the case, that native map tries to create an array with new Array(1)\r\n if (typeof arr === 'number') return this\r\n this.length = 0\r\n this.push(...this.parse(arr))\r\n return this\r\n },\r\n\r\n toArray () {\r\n return Array.prototype.concat.apply([], this)\r\n },\r\n\r\n toString () {\r\n return this.join(' ')\r\n },\r\n\r\n // Flattens the array if needed\r\n valueOf () {\r\n const ret = []\r\n ret.push(...this)\r\n return ret\r\n },\r\n\r\n // Parse whitespace separated string\r\n parse (array = []) {\r\n // If already is an array, no need to parse it\r\n if (array instanceof Array) return array\r\n\r\n return array.trim().split(delimiter).map(parseFloat)\r\n },\r\n\r\n clone () {\r\n return new this.constructor(this)\r\n },\r\n\r\n toSet () {\r\n return new Set(this)\r\n }\r\n})\r\n","import { numberAndUnit } from '../modules/core/regex.js'\r\n\r\n// Module for unit convertions\r\nexport default class SVGNumber {\r\n // Initialize\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (value, unit) {\r\n unit = Array.isArray(value) ? value[1] : unit\r\n value = Array.isArray(value) ? value[0] : value\r\n\r\n // initialize defaults\r\n this.value = 0\r\n this.unit = unit || ''\r\n\r\n // parse value\r\n if (typeof value === 'number') {\r\n // ensure a valid numeric value\r\n this.value = isNaN(value) ? 0 : !isFinite(value) ? (value < 0 ? -3.4e+38 : +3.4e+38) : value\r\n } else if (typeof value === 'string') {\r\n unit = value.match(numberAndUnit)\r\n\r\n if (unit) {\r\n // make value numeric\r\n this.value = parseFloat(unit[1])\r\n\r\n // normalize\r\n if (unit[5] === '%') {\r\n this.value /= 100\r\n } else if (unit[5] === 's') {\r\n this.value *= 1000\r\n }\r\n\r\n // store unit\r\n this.unit = unit[5]\r\n }\r\n } else {\r\n if (value instanceof SVGNumber) {\r\n this.value = value.valueOf()\r\n this.unit = value.unit\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n toString () {\r\n return (this.unit === '%' ? ~~(this.value * 1e8) / 1e6\r\n : this.unit === 's' ? this.value / 1e3\r\n : this.value\r\n ) + this.unit\r\n }\r\n\r\n toJSON () {\r\n return this.toString()\r\n }\r\n\r\n toArray () {\r\n return [ this.value, this.unit ]\r\n }\r\n\r\n valueOf () {\r\n return this.value\r\n }\r\n\r\n // Add number\r\n plus (number) {\r\n number = new SVGNumber(number)\r\n return new SVGNumber(this + number, this.unit || number.unit)\r\n }\r\n\r\n // Subtract number\r\n minus (number) {\r\n number = new SVGNumber(number)\r\n return new SVGNumber(this - number, this.unit || number.unit)\r\n }\r\n\r\n // Multiply number\r\n times (number) {\r\n number = new SVGNumber(number)\r\n return new SVGNumber(this * number, this.unit || number.unit)\r\n }\r\n\r\n // Divide number\r\n divide (number) {\r\n number = new SVGNumber(number)\r\n return new SVGNumber(this / number, this.unit || number.unit)\r\n }\r\n\r\n convert (unit) {\r\n return new SVGNumber(this.value, unit)\r\n }\r\n}\r\n","import { attrs as defaults } from './defaults.js'\r\nimport { isNumber } from './regex.js'\r\nimport Color from '../../types/Color.js'\r\nimport SVGArray from '../../types/SVGArray.js'\r\nimport SVGNumber from '../../types/SVGNumber.js'\r\n\r\nconst hooks = []\r\nexport function registerAttrHook (fn) {\r\n hooks.push(fn)\r\n}\r\n\r\n// Set svg element attribute\r\nexport default function attr (attr, val, ns) {\r\n // act as full getter\r\n if (attr == null) {\r\n // get an object of attributes\r\n attr = {}\r\n val = this.node.attributes\r\n\r\n for (const node of val) {\r\n attr[node.nodeName] = isNumber.test(node.nodeValue)\r\n ? parseFloat(node.nodeValue)\r\n : node.nodeValue\r\n }\r\n\r\n return attr\r\n } else if (attr instanceof Array) {\r\n // loop through array and get all values\r\n return attr.reduce((last, curr) => {\r\n last[curr] = this.attr(curr)\r\n return last\r\n }, {})\r\n } else if (typeof attr === 'object' && attr.constructor === Object) {\r\n // apply every attribute individually if an object is passed\r\n for (val in attr) this.attr(val, attr[val])\r\n } else if (val === null) {\r\n // remove value\r\n this.node.removeAttribute(attr)\r\n } else if (val == null) {\r\n // act as a getter if the first and only argument is not an object\r\n val = this.node.getAttribute(attr)\r\n return val == null ? defaults[attr]\r\n : isNumber.test(val) ? parseFloat(val)\r\n : val\r\n } else {\r\n // Loop through hooks and execute them to convert value\r\n val = hooks.reduce((_val, hook) => {\r\n return hook(attr, _val, this)\r\n }, val)\r\n\r\n // ensure correct numeric values (also accepts NaN and Infinity)\r\n if (typeof val === 'number') {\r\n val = new SVGNumber(val)\r\n } else if (Color.isColor(val)) {\r\n // ensure full hex color\r\n val = new Color(val)\r\n } else if (val.constructor === Array) {\r\n // Check for plain arrays and parse array values\r\n val = new SVGArray(val)\r\n }\r\n\r\n // if the passed attribute is leading...\r\n if (attr === 'leading') {\r\n // ... call the leading method instead\r\n if (this.leading) {\r\n this.leading(val)\r\n }\r\n } else {\r\n // set given attribute on node\r\n typeof ns === 'string' ? this.node.setAttributeNS(ns, attr, val.toString())\r\n : this.node.setAttribute(attr, val.toString())\r\n }\r\n\r\n // rebuild if required\r\n if (this.rebuild && (attr === 'font-size' || attr === 'x')) {\r\n this.rebuild()\r\n }\r\n }\r\n\r\n return this\r\n}\r\n","import {\r\n adopt,\r\n assignNewId,\r\n eid,\r\n extend,\r\n makeInstance,\r\n create,\r\n register\r\n} from '../utils/adopter.js'\r\nimport { find, findOne } from '../modules/core/selector.js'\r\nimport { globals } from '../utils/window.js'\r\nimport { map } from '../utils/utils.js'\r\nimport { ns } from '../modules/core/namespaces.js'\r\nimport EventTarget from '../types/EventTarget.js'\r\nimport List from '../types/List.js'\r\nimport attr from '../modules/core/attr.js'\r\n\r\nexport default class Dom extends EventTarget {\r\n constructor (node, attrs) {\r\n super(node)\r\n this.node = node\r\n this.type = node.nodeName\r\n\r\n if (attrs && node !== attrs) {\r\n this.attr(attrs)\r\n }\r\n }\r\n\r\n // Add given element at a position\r\n add (element, i) {\r\n element = makeInstance(element)\r\n\r\n if (i == null) {\r\n this.node.appendChild(element.node)\r\n } else if (element.node !== this.node.childNodes[i]) {\r\n this.node.insertBefore(element.node, this.node.childNodes[i])\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Add element to given container and return self\r\n addTo (parent) {\r\n return makeInstance(parent).put(this)\r\n }\r\n\r\n // Returns all child elements\r\n children () {\r\n return new List(map(this.node.children, function (node) {\r\n return adopt(node)\r\n }))\r\n }\r\n\r\n // Remove all elements in this container\r\n clear () {\r\n // remove children\r\n while (this.node.hasChildNodes()) {\r\n this.node.removeChild(this.node.lastChild)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Clone element\r\n clone () {\r\n // write dom data to the dom so the clone can pickup the data\r\n this.writeDataToDom()\r\n\r\n // clone element and assign new id\r\n return assignNewId(this.node.cloneNode(true))\r\n }\r\n\r\n // Iterates over all children and invokes a given block\r\n each (block, deep) {\r\n var children = this.children()\r\n var i, il\r\n\r\n for (i = 0, il = children.length; i < il; i++) {\r\n block.apply(children[i], [ i, children ])\r\n\r\n if (deep) {\r\n children[i].each(block, deep)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n element (nodeName) {\r\n return this.put(new Dom(create(nodeName)))\r\n }\r\n\r\n // Get first child\r\n first () {\r\n return adopt(this.node.firstChild)\r\n }\r\n\r\n // Get a element at the given index\r\n get (i) {\r\n return adopt(this.node.childNodes[i])\r\n }\r\n\r\n getEventHolder () {\r\n return this.node\r\n }\r\n\r\n getEventTarget () {\r\n return this.node\r\n }\r\n\r\n // Checks if the given element is a child\r\n has (element) {\r\n return this.index(element) >= 0\r\n }\r\n\r\n // Get / set id\r\n id (id) {\r\n // generate new id if no id set\r\n if (typeof id === 'undefined' && !this.node.id) {\r\n this.node.id = eid(this.type)\r\n }\r\n\r\n // dont't set directly width this.node.id to make `null` work correctly\r\n return this.attr('id', id)\r\n }\r\n\r\n // Gets index of given element\r\n index (element) {\r\n return [].slice.call(this.node.childNodes).indexOf(element.node)\r\n }\r\n\r\n // Get the last child\r\n last () {\r\n return adopt(this.node.lastChild)\r\n }\r\n\r\n // matches the element vs a css selector\r\n matches (selector) {\r\n const el = this.node\r\n return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector)\r\n }\r\n\r\n // Returns the parent element instance\r\n parent (type) {\r\n var parent = this\r\n\r\n // check for parent\r\n if (!parent.node.parentNode) return null\r\n\r\n // get parent element\r\n parent = adopt(parent.node.parentNode)\r\n\r\n if (!type) return parent\r\n\r\n // loop trough ancestors if type is given\r\n while (parent) {\r\n if (typeof type === 'string' ? parent.matches(type) : parent instanceof type) return parent\r\n if (!parent.node.parentNode || parent.node.parentNode.nodeName === '#document' || parent.node.parentNode.nodeName === '#document-fragment') return null // #759, #720\r\n parent = adopt(parent.node.parentNode)\r\n }\r\n }\r\n\r\n // Basically does the same as `add()` but returns the added element instead\r\n put (element, i) {\r\n this.add(element, i)\r\n return element\r\n }\r\n\r\n // Add element to given container and return container\r\n putIn (parent) {\r\n return makeInstance(parent).add(this)\r\n }\r\n\r\n // Remove element\r\n remove () {\r\n if (this.parent()) {\r\n this.parent().removeElement(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Remove a given child\r\n removeElement (element) {\r\n this.node.removeChild(element.node)\r\n\r\n return this\r\n }\r\n\r\n // Replace this with element\r\n replace (element) {\r\n element = makeInstance(element)\r\n this.node.parentNode.replaceChild(element.node, this.node)\r\n return element\r\n }\r\n\r\n round (precision = 2, map) {\r\n const factor = 10 ** precision\r\n const attrs = this.attr()\r\n\r\n // If we have no map, build one from attrs\r\n if (!map) {\r\n map = Object.keys(attrs)\r\n }\r\n\r\n // Holds rounded attributes\r\n const newAttrs = {}\r\n map.forEach((key) => {\r\n newAttrs[key] = Math.round(attrs[key] * factor) / factor\r\n })\r\n\r\n this.attr(newAttrs)\r\n return this\r\n }\r\n\r\n // Return id on string conversion\r\n toString () {\r\n return this.id()\r\n }\r\n\r\n // Import raw svg\r\n svg (svgOrFn, outerHTML) {\r\n var well, len, fragment\r\n\r\n if (svgOrFn === false) {\r\n outerHTML = false\r\n svgOrFn = null\r\n }\r\n\r\n // act as getter if no svg string is given\r\n if (svgOrFn == null || typeof svgOrFn === 'function') {\r\n // The default for exports is, that the outerNode is included\r\n outerHTML = outerHTML == null ? true : outerHTML\r\n\r\n // write svgjs data to the dom\r\n this.writeDataToDom()\r\n let current = this\r\n\r\n // An export modifier was passed\r\n if (svgOrFn != null) {\r\n current = adopt(current.node.cloneNode(true))\r\n\r\n // If the user wants outerHTML we need to process this node, too\r\n if (outerHTML) {\r\n const result = svgOrFn(current)\r\n current = result || current\r\n\r\n // The user does not want this node? Well, then he gets nothing\r\n if (result === false) return ''\r\n }\r\n\r\n // Deep loop through all children and apply modifier\r\n current.each(function () {\r\n const result = svgOrFn(this)\r\n const _this = result || this\r\n\r\n // If modifier returns false, discard node\r\n if (result === false) {\r\n this.remove()\r\n\r\n // If modifier returns new node, use it\r\n } else if (result && this !== _this) {\r\n this.replace(_this)\r\n }\r\n }, true)\r\n }\r\n\r\n // Return outer or inner content\r\n return outerHTML\r\n ? current.node.outerHTML\r\n : current.node.innerHTML\r\n }\r\n\r\n // Act as setter if we got a string\r\n\r\n // The default for import is, that the current node is not replaced\r\n outerHTML = outerHTML == null ? false : outerHTML\r\n\r\n // Create temporary holder\r\n well = globals.document.createElementNS(ns, 'svg')\r\n fragment = globals.document.createDocumentFragment()\r\n\r\n // Dump raw svg\r\n well.innerHTML = svgOrFn\r\n\r\n // Transplant nodes into the fragment\r\n for (len = well.children.length; len--;) {\r\n fragment.appendChild(well.firstElementChild)\r\n }\r\n\r\n const parent = this.parent()\r\n\r\n // Add the whole fragment at once\r\n return outerHTML\r\n ? this.replace(fragment) && parent\r\n : this.add(fragment)\r\n }\r\n\r\n words (text) {\r\n // This is faster than removing all children and adding a new one\r\n this.node.textContent = text\r\n return this\r\n }\r\n\r\n // write svgjs data to the dom\r\n writeDataToDom () {\r\n // dump variables recursively\r\n this.each(function () {\r\n this.writeDataToDom()\r\n })\r\n\r\n return this\r\n }\r\n}\r\n\r\nextend(Dom, { attr, find, findOne })\r\nregister(Dom, 'Dom')\r\n","import { bbox, rbox } from '../types/Box.js'\r\nimport { ctm, screenCTM } from '../types/Matrix.js'\r\nimport {\r\n extend,\r\n getClass,\r\n makeInstance,\r\n register,\r\n root\r\n} from '../utils/adopter.js'\r\nimport { globals } from '../utils/window.js'\r\nimport { point } from '../types/Point.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { reference } from '../modules/core/regex.js'\r\nimport Dom from './Dom.js'\r\nimport List from '../types/List.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\n\r\nexport default class Element extends Dom {\r\n constructor (node, attrs) {\r\n super(node, attrs)\r\n\r\n // initialize data object\r\n this.dom = {}\r\n\r\n // create circular reference\r\n this.node.instance = this\r\n\r\n if (node.hasAttribute('svgjs:data')) {\r\n // pull svgjs data from the dom (getAttributeNS doesn't work in html5)\r\n this.setData(JSON.parse(node.getAttribute('svgjs:data')) || {})\r\n }\r\n }\r\n\r\n // Move element by its center\r\n center (x, y) {\r\n return this.cx(x).cy(y)\r\n }\r\n\r\n // Move by center over x-axis\r\n cx (x) {\r\n return x == null ? this.x() + this.width() / 2 : this.x(x - this.width() / 2)\r\n }\r\n\r\n // Move by center over y-axis\r\n cy (y) {\r\n return y == null\r\n ? this.y() + this.height() / 2\r\n : this.y(y - this.height() / 2)\r\n }\r\n\r\n // Get defs\r\n defs () {\r\n return this.root().defs()\r\n }\r\n\r\n // Relative move over x and y axes\r\n dmove (x, y) {\r\n return this.dx(x).dy(y)\r\n }\r\n\r\n // Relative move over x axis\r\n dx (x = 0) {\r\n return this.x(new SVGNumber(x).plus(this.x()))\r\n }\r\n\r\n // Relative move over y axis\r\n dy (y = 0) {\r\n return this.y(new SVGNumber(y).plus(this.y()))\r\n }\r\n\r\n // Get parent document\r\n root () {\r\n const p = this.parent(getClass(root))\r\n return p && p.root()\r\n }\r\n\r\n getEventHolder () {\r\n return this\r\n }\r\n\r\n // Set height of element\r\n height (height) {\r\n return this.attr('height', height)\r\n }\r\n\r\n // Checks whether the given point inside the bounding box of the element\r\n inside (x, y) {\r\n const box = this.bbox()\r\n\r\n return x > box.x\r\n && y > box.y\r\n && x < box.x + box.width\r\n && y < box.y + box.height\r\n }\r\n\r\n // Move element to given x and y values\r\n move (x, y) {\r\n return this.x(x).y(y)\r\n }\r\n\r\n // return array of all ancestors of given type up to the root svg\r\n parents (until = globals.document) {\r\n until = makeInstance(until)\r\n const parents = new List()\r\n let parent = this\r\n\r\n while (\r\n (parent = parent.parent())\r\n && parent.node !== until.node\r\n && parent.node !== globals.document\r\n ) {\r\n parents.push(parent)\r\n }\r\n\r\n return parents\r\n }\r\n\r\n // Get referenced element form attribute value\r\n reference (attr) {\r\n attr = this.attr(attr)\r\n if (!attr) return null\r\n\r\n const m = attr.match(reference)\r\n return m ? makeInstance(m[1]) : null\r\n }\r\n\r\n // set given data to the elements data property\r\n setData (o) {\r\n this.dom = o\r\n return this\r\n }\r\n\r\n // Set element size to given width and height\r\n size (width, height) {\r\n const p = proportionalSize(this, width, height)\r\n\r\n return this\r\n .width(new SVGNumber(p.width))\r\n .height(new SVGNumber(p.height))\r\n }\r\n\r\n // Set width of element\r\n width (width) {\r\n return this.attr('width', width)\r\n }\r\n\r\n // write svgjs data to the dom\r\n writeDataToDom () {\r\n // remove previously set data\r\n this.node.removeAttribute('svgjs:data')\r\n\r\n if (Object.keys(this.dom).length) {\r\n this.node.setAttribute('svgjs:data', JSON.stringify(this.dom)) // see #428\r\n }\r\n\r\n return super.writeDataToDom()\r\n }\r\n\r\n // Move over x-axis\r\n x (x) {\r\n return this.attr('x', x)\r\n }\r\n\r\n // Move over y-axis\r\n y (y) {\r\n return this.attr('y', y)\r\n }\r\n}\r\n\r\nextend(Element, {\r\n bbox, rbox, point, ctm, screenCTM\r\n})\r\n\r\nregister(Element, 'Element')\r\n","import { on, off } from '../core/event.js'\r\nimport { registerMethods } from '../../utils/methods.js'\r\nimport Color from '../../types/Color.js'\r\nimport Element from '../../elements/Element.js'\r\nimport Matrix from '../../types/Matrix.js'\r\nimport Point from '../../types/Point.js'\r\nimport SVGNumber from '../../types/SVGNumber.js'\r\n\r\n// Define list of available attributes for stroke and fill\r\nvar sugar = {\r\n stroke: [ 'color', 'width', 'opacity', 'linecap', 'linejoin', 'miterlimit', 'dasharray', 'dashoffset' ],\r\n fill: [ 'color', 'opacity', 'rule' ],\r\n prefix: function (t, a) {\r\n return a === 'color' ? t : t + '-' + a\r\n }\r\n}\r\n\r\n// Add sugar for fill and stroke\r\n;[ 'fill', 'stroke' ].forEach(function (m) {\r\n var extension = {}\r\n var i\r\n\r\n extension[m] = function (o) {\r\n if (typeof o === 'undefined') {\r\n return this.attr(m)\r\n }\r\n if (typeof o === 'string' || o instanceof Color || Color.isRgb(o) || (o instanceof Element)) {\r\n this.attr(m, o)\r\n } else {\r\n // set all attributes from sugar.fill and sugar.stroke list\r\n for (i = sugar[m].length - 1; i >= 0; i--) {\r\n if (o[sugar[m][i]] != null) {\r\n this.attr(sugar.prefix(m, sugar[m][i]), o[sugar[m][i]])\r\n }\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n registerMethods([ 'Element', 'Runner' ], extension)\r\n})\r\n\r\nregisterMethods([ 'Element', 'Runner' ], {\r\n // Let the user set the matrix directly\r\n matrix: function (mat, b, c, d, e, f) {\r\n // Act as a getter\r\n if (mat == null) {\r\n return new Matrix(this)\r\n }\r\n\r\n // Act as a setter, the user can pass a matrix or a set of numbers\r\n return this.attr('transform', new Matrix(mat, b, c, d, e, f))\r\n },\r\n\r\n // Map rotation to transform\r\n rotate: function (angle, cx, cy) {\r\n return this.transform({ rotate: angle, ox: cx, oy: cy }, true)\r\n },\r\n\r\n // Map skew to transform\r\n skew: function (x, y, cx, cy) {\r\n return arguments.length === 1 || arguments.length === 3\r\n ? this.transform({ skew: x, ox: y, oy: cx }, true)\r\n : this.transform({ skew: [ x, y ], ox: cx, oy: cy }, true)\r\n },\r\n\r\n shear: function (lam, cx, cy) {\r\n return this.transform({ shear: lam, ox: cx, oy: cy }, true)\r\n },\r\n\r\n // Map scale to transform\r\n scale: function (x, y, cx, cy) {\r\n return arguments.length === 1 || arguments.length === 3\r\n ? this.transform({ scale: x, ox: y, oy: cx }, true)\r\n : this.transform({ scale: [ x, y ], ox: cx, oy: cy }, true)\r\n },\r\n\r\n // Map translate to transform\r\n translate: function (x, y) {\r\n return this.transform({ translate: [ x, y ] }, true)\r\n },\r\n\r\n // Map relative translations to transform\r\n relative: function (x, y) {\r\n return this.transform({ relative: [ x, y ] }, true)\r\n },\r\n\r\n // Map flip to transform\r\n flip: function (direction, around) {\r\n var directionString = typeof direction === 'string' ? direction\r\n : isFinite(direction) ? 'both'\r\n : 'both'\r\n var origin = (direction === 'both' && isFinite(around)) ? [ around, around ]\r\n : (direction === 'x') ? [ around, 0 ]\r\n : (direction === 'y') ? [ 0, around ]\r\n : isFinite(direction) ? [ direction, direction ]\r\n : [ 0, 0 ]\r\n return this.transform({ flip: directionString, origin: origin }, true)\r\n },\r\n\r\n // Opacity\r\n opacity: function (value) {\r\n return this.attr('opacity', value)\r\n }\r\n})\r\n\r\nregisterMethods('radius', {\r\n // Add x and y radius\r\n radius: function (x, y) {\r\n var type = (this._element || this).type\r\n return type === 'radialGradient' || type === 'radialGradient'\r\n ? this.attr('r', new SVGNumber(x))\r\n : this.rx(x).ry(y == null ? x : y)\r\n }\r\n})\r\n\r\nregisterMethods('Path', {\r\n // Get path length\r\n length: function () {\r\n return this.node.getTotalLength()\r\n },\r\n // Get point at length\r\n pointAt: function (length) {\r\n return new Point(this.node.getPointAtLength(length))\r\n }\r\n})\r\n\r\nregisterMethods([ 'Element', 'Runner' ], {\r\n // Set font\r\n font: function (a, v) {\r\n if (typeof a === 'object') {\r\n for (v in a) this.font(v, a[v])\r\n return this\r\n }\r\n\r\n return a === 'leading'\r\n ? this.leading(v)\r\n : a === 'anchor'\r\n ? this.attr('text-anchor', v)\r\n : a === 'size' || a === 'family' || a === 'weight' || a === 'stretch' || a === 'variant' || a === 'style'\r\n ? this.attr('font-' + a, v)\r\n : this.attr(a, v)\r\n }\r\n})\r\n\r\nregisterMethods('Text', {\r\n ax (x) {\r\n return this.attr('x', x)\r\n },\r\n ay (y) {\r\n return this.attr('y', y)\r\n },\r\n amove (x, y) {\r\n return this.ax(x).ay(y)\r\n }\r\n})\r\n\r\n// Add events to elements\r\nconst methods = [ 'click',\r\n 'dblclick',\r\n 'mousedown',\r\n 'mouseup',\r\n 'mouseover',\r\n 'mouseout',\r\n 'mousemove',\r\n 'mouseenter',\r\n 'mouseleave',\r\n 'touchstart',\r\n 'touchmove',\r\n 'touchleave',\r\n 'touchend',\r\n 'touchcancel' ].reduce(function (last, event) {\r\n // add event to Element\r\n const fn = function (f) {\r\n if (f === null) {\r\n off(this, event)\r\n } else {\r\n on(this, event, f)\r\n }\r\n return this\r\n }\r\n\r\n last[event] = fn\r\n return last\r\n}, {})\r\n\r\nregisterMethods('Element', methods)\r\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = [].reverse;\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n reverse: function reverse() {\n // eslint-disable-next-line no-self-assign\n if (isArray(this)) this.length = this.length;\n return nativeReverse.call(this);\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperties = require('../internals/object-define-properties');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n defineProperties: defineProperties\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar objectDefinePropertyModile = require('../internals/object-define-property');\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n defineProperty: objectDefinePropertyModile.f\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import SVGNumber from '../../types/SVGNumber.js'\r\n\r\n// Radius x value\r\nexport function rx (rx) {\r\n return this.attr('rx', rx)\r\n}\r\n\r\n// Radius y value\r\nexport function ry (ry) {\r\n return this.attr('ry', ry)\r\n}\r\n\r\n// Move over x-axis\r\nexport function x (x) {\r\n return x == null\r\n ? this.cx() - this.rx()\r\n : this.cx(x + this.rx())\r\n}\r\n\r\n// Move over y-axis\r\nexport function y (y) {\r\n return y == null\r\n ? this.cy() - this.ry()\r\n : this.cy(y + this.ry())\r\n}\r\n\r\n// Move by center over x-axis\r\nexport function cx (x) {\r\n return x == null\r\n ? this.attr('cx')\r\n : this.attr('cx', x)\r\n}\r\n\r\n// Move by center over y-axis\r\nexport function cy (y) {\r\n return y == null\r\n ? this.attr('cy')\r\n : this.attr('cy', y)\r\n}\r\n\r\n// Set width of element\r\nexport function width (width) {\r\n return width == null\r\n ? this.rx() * 2\r\n : this.rx(new SVGNumber(width).divide(2))\r\n}\r\n\r\n// Set height of element\r\nexport function height (height) {\r\n return height == null\r\n ? this.ry() * 2\r\n : this.ry(new SVGNumber(height).divide(2))\r\n}\r\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","import { getOrigin } from '../../utils/utils.js'\r\nimport { delimiter, transforms } from '../core/regex.js'\r\nimport { registerMethods } from '../../utils/methods.js'\r\nimport Matrix from '../../types/Matrix.js'\r\n\r\n// Reset all transformations\r\nexport function untransform () {\r\n return this.attr('transform', null)\r\n}\r\n\r\n// merge the whole transformation chain into one matrix and returns it\r\nexport function matrixify () {\r\n var matrix = (this.attr('transform') || '')\r\n // split transformations\r\n .split(transforms).slice(0, -1).map(function (str) {\r\n // generate key => value pairs\r\n var kv = str.trim().split('(')\r\n return [ kv[0],\r\n kv[1].split(delimiter)\r\n .map(function (str) {\r\n return parseFloat(str)\r\n })\r\n ]\r\n })\r\n .reverse()\r\n // merge every transformation into one matrix\r\n .reduce(function (matrix, transform) {\r\n if (transform[0] === 'matrix') {\r\n return matrix.lmultiply(Matrix.fromArray(transform[1]))\r\n }\r\n return matrix[transform[0]].apply(matrix, transform[1])\r\n }, new Matrix())\r\n\r\n return matrix\r\n}\r\n\r\n// add an element to another parent without changing the visual representation on the screen\r\nexport function toParent (parent) {\r\n if (this === parent) return this\r\n var ctm = this.screenCTM()\r\n var pCtm = parent.screenCTM().inverse()\r\n\r\n this.addTo(parent).untransform().transform(pCtm.multiply(ctm))\r\n\r\n return this\r\n}\r\n\r\n// same as above with parent equals root-svg\r\nexport function toRoot () {\r\n return this.toParent(this.root())\r\n}\r\n\r\n// Add transformations\r\nexport function transform (o, relative) {\r\n // Act as a getter if no object was passed\r\n if (o == null || typeof o === 'string') {\r\n var decomposed = new Matrix(this).decompose()\r\n return o == null ? decomposed : decomposed[o]\r\n }\r\n\r\n if (!Matrix.isMatrixLike(o)) {\r\n // Set the origin according to the defined transform\r\n o = { ...o, origin: getOrigin(o, this) }\r\n }\r\n\r\n // The user can pass a boolean, an Element or an Matrix or nothing\r\n var cleanRelative = relative === true ? this : (relative || false)\r\n var result = new Matrix(cleanRelative).transform(o)\r\n return this.attr('transform', result)\r\n}\r\n\r\nregisterMethods('Element', {\r\n untransform, matrixify, toParent, toRoot, transform\r\n})\r\n","import { register } from '../utils/adopter.js'\r\nimport Element from './Element.js'\r\n\r\nexport default class Shape extends Element {}\r\n\r\nregister(Shape, 'Shape')\r\n","import { cx, cy, height, width, x, y } from '../modules/core/circled.js'\r\nimport {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Shape from './Shape.js'\r\n\r\nexport default class Circle extends Shape {\r\n constructor (node) {\r\n super(nodeOrNew('circle', node), node)\r\n }\r\n\r\n radius (r) {\r\n return this.attr('r', r)\r\n }\r\n\r\n // Radius x value\r\n rx (rx) {\r\n return this.attr('r', rx)\r\n }\r\n\r\n // Alias radius x value\r\n ry (ry) {\r\n return this.rx(ry)\r\n }\r\n\r\n size (size) {\r\n return this.radius(new SVGNumber(size).divide(2))\r\n }\r\n}\r\n\r\nextend(Circle, { x, y, cx, cy, width, height })\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create circle element\r\n circle: wrapWithAttrCheck(function (size) {\r\n return this.put(new Circle())\r\n .size(size)\r\n .move(0, 0)\r\n })\r\n }\r\n})\r\n\r\nregister(Circle, 'Circle')\r\n","import { register } from '../utils/adopter.js'\r\nimport Element from './Element.js'\r\n\r\nexport default class Container extends Element {\r\n flatten (parent) {\r\n this.each(function () {\r\n if (this instanceof Container) return this.flatten(parent).ungroup(parent)\r\n return this.toParent(parent)\r\n })\r\n\r\n // we need this so that the root does not get removed\r\n this.node.firstElementChild || this.remove()\r\n\r\n return this\r\n }\r\n\r\n ungroup (parent) {\r\n parent = parent || this.parent()\r\n\r\n this.each(function () {\r\n return this.toParent(parent)\r\n })\r\n\r\n this.remove()\r\n\r\n return this\r\n }\r\n}\r\n\r\nregister(Container, 'Container')\r\n","import { nodeOrNew, register } from '../utils/adopter.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class Defs extends Container {\r\n constructor (node) {\r\n super(nodeOrNew('defs', node), node)\r\n }\r\n\r\n flatten () {\r\n return this\r\n }\n\r\n ungroup () {\r\n return this\r\n }\r\n}\r\n\r\nregister(Defs, 'Defs')\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Shape from './Shape.js'\r\nimport * as circled from '../modules/core/circled.js'\r\n\r\nexport default class Ellipse extends Shape {\r\n constructor (node) {\r\n super(nodeOrNew('ellipse', node), node)\r\n }\r\n\r\n size (width, height) {\r\n var p = proportionalSize(this, width, height)\r\n\r\n return this\r\n .rx(new SVGNumber(p.width).divide(2))\r\n .ry(new SVGNumber(p.height).divide(2))\r\n }\r\n}\r\n\r\nextend(Ellipse, circled)\r\n\r\nregisterMethods('Container', {\r\n // Create an ellipse\r\n ellipse: wrapWithAttrCheck(function (width = 0, height = width) {\r\n return this.put(new Ellipse()).size(width, height).move(0, 0)\r\n })\r\n})\r\n\r\nregister(Ellipse, 'Ellipse')\r\n","import { nodeOrNew, register } from '../utils/adopter.js'\r\nimport Element from './Element.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\n\r\nexport default class Stop extends Element {\r\n constructor (node) {\r\n super(nodeOrNew('stop', node), node)\r\n }\r\n\r\n // add color stops\r\n update (o) {\r\n if (typeof o === 'number' || o instanceof SVGNumber) {\r\n o = {\r\n offset: arguments[0],\r\n color: arguments[1],\r\n opacity: arguments[2]\r\n }\r\n }\r\n\r\n // set attributes\r\n if (o.opacity != null) this.attr('stop-opacity', o.opacity)\r\n if (o.color != null) this.attr('stop-color', o.color)\r\n if (o.offset != null) this.attr('offset', new SVGNumber(o.offset))\r\n\r\n return this\r\n }\r\n}\r\n\r\nregister(Stop, 'Stop')\r\n","import SVGNumber from '../../types/SVGNumber.js'\r\n\r\nexport function from (x, y) {\r\n return (this._element || this).type === 'radialGradient'\r\n ? this.attr({ fx: new SVGNumber(x), fy: new SVGNumber(y) })\r\n : this.attr({ x1: new SVGNumber(x), y1: new SVGNumber(y) })\r\n}\r\n\r\nexport function to (x, y) {\r\n return (this._element || this).type === 'radialGradient'\r\n ? this.attr({ cx: new SVGNumber(x), cy: new SVGNumber(y) })\r\n : this.attr({ x2: new SVGNumber(x), y2: new SVGNumber(y) })\r\n}\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Box from '../types/Box.js'\r\nimport Container from './Container.js'\r\nimport Stop from './Stop.js'\r\nimport baseFind from '../modules/core/selector.js'\r\nimport * as gradiented from '../modules/core/gradiented.js'\r\n\r\nexport default class Gradient extends Container {\r\n constructor (type, attrs) {\r\n super(\r\n nodeOrNew(type + 'Gradient', typeof type === 'string' ? null : type),\r\n attrs\r\n )\r\n }\r\n\r\n // Add a color stop\r\n stop (offset, color, opacity) {\r\n return this.put(new Stop()).update(offset, color, opacity)\r\n }\r\n\r\n // Update gradient\r\n update (block) {\r\n // remove all stops\r\n this.clear()\r\n\r\n // invoke passed block\r\n if (typeof block === 'function') {\r\n block.call(this, this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Return the fill id\r\n url () {\r\n return 'url(#' + this.id() + ')'\r\n }\r\n\r\n // Alias string convertion to fill\r\n toString () {\r\n return this.url()\r\n }\r\n\r\n // custom attr to handle transform\r\n attr (a, b, c) {\r\n if (a === 'transform') a = 'gradientTransform'\r\n return super.attr(a, b, c)\r\n }\r\n\r\n targets () {\r\n return baseFind('svg [fill*=\"' + this.id() + '\"]')\r\n }\r\n\r\n bbox () {\r\n return new Box()\r\n }\r\n}\r\n\r\nextend(Gradient, gradiented)\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create gradient element in defs\r\n gradient: wrapWithAttrCheck(function (type, block) {\r\n return this.defs().gradient(type, block)\r\n })\r\n },\r\n // define gradient\r\n Defs: {\r\n gradient: wrapWithAttrCheck(function (type, block) {\r\n return this.put(new Gradient(type)).update(block)\r\n })\r\n }\r\n})\r\n\r\nregister(Gradient, 'Gradient')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Box from '../types/Box.js'\r\nimport Container from './Container.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class Pattern extends Container {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('pattern', node), node)\r\n }\r\n\r\n // Return the fill id\r\n url () {\r\n return 'url(#' + this.id() + ')'\r\n }\r\n\r\n // Update pattern by rebuilding\r\n update (block) {\r\n // remove content\r\n this.clear()\r\n\r\n // invoke passed block\r\n if (typeof block === 'function') {\r\n block.call(this, this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Alias string convertion to fill\r\n toString () {\r\n return this.url()\r\n }\r\n\r\n // custom attr to handle transform\r\n attr (a, b, c) {\r\n if (a === 'transform') a = 'patternTransform'\r\n return super.attr(a, b, c)\r\n }\r\n\r\n targets () {\r\n return baseFind('svg [fill*=\"' + this.id() + '\"]')\r\n }\r\n\r\n bbox () {\r\n return new Box()\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create pattern element in defs\r\n pattern (...args) {\r\n return this.defs().pattern(...args)\r\n }\r\n },\r\n Defs: {\r\n pattern: wrapWithAttrCheck(function (width, height, block) {\r\n return this.put(new Pattern()).update(block).attr({\r\n x: 0,\r\n y: 0,\r\n width: width,\r\n height: height,\r\n patternUnits: 'userSpaceOnUse'\r\n })\r\n })\r\n }\r\n})\r\n\r\nregister(Pattern, 'Pattern')\r\n","import { isImage } from '../modules/core/regex.js'\r\nimport { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { off, on } from '../modules/core/event.js'\r\nimport { registerAttrHook } from '../modules/core/attr.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Pattern from './Pattern.js'\r\nimport Shape from './Shape.js'\r\nimport { globals } from '../utils/window.js'\r\n\r\nexport default class Image extends Shape {\r\n constructor (node) {\r\n super(nodeOrNew('image', node), node)\r\n }\r\n\r\n // (re)load image\r\n load (url, callback) {\r\n if (!url) return this\r\n\r\n var img = new globals.window.Image()\r\n\r\n on(img, 'load', function (e) {\r\n var p = this.parent(Pattern)\r\n\r\n // ensure image size\r\n if (this.width() === 0 && this.height() === 0) {\r\n this.size(img.width, img.height)\r\n }\r\n\r\n if (p instanceof Pattern) {\r\n // ensure pattern size if not set\r\n if (p.width() === 0 && p.height() === 0) {\r\n p.size(this.width(), this.height())\r\n }\r\n }\r\n\r\n if (typeof callback === 'function') {\r\n callback.call(this, e)\r\n }\r\n }, this)\r\n\r\n on(img, 'load error', function () {\r\n // dont forget to unbind memory leaking events\r\n off(img)\r\n })\r\n\r\n return this.attr('href', (img.src = url), xlink)\r\n }\r\n}\r\n\r\nregisterAttrHook(function (attr, val, _this) {\r\n // convert image fill and stroke to patterns\r\n if (attr === 'fill' || attr === 'stroke') {\r\n if (isImage.test(val)) {\r\n val = _this.root().defs().image(val)\r\n }\r\n }\r\n\r\n if (val instanceof Image) {\r\n val = _this.root().defs().pattern(0, 0, (pattern) => {\r\n pattern.add(val)\r\n })\r\n }\r\n\r\n return val\r\n})\r\n\r\nregisterMethods({\r\n Container: {\r\n // create image element, load image and set its size\r\n image: wrapWithAttrCheck(function (source, callback) {\r\n return this.put(new Image()).size(0, 0).load(source, callback)\r\n })\r\n }\r\n})\r\n\r\nregister(Image, 'Image')\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { extend } from '../utils/adopter.js'\r\nimport { subClassArray } from './ArrayPolyfill.js'\r\nimport SVGArray from './SVGArray.js'\r\n\r\nconst PointArray = subClassArray('PointArray', SVGArray)\r\n\r\nexport default PointArray\r\n\r\nextend(PointArray, {\r\n // Convert array to string\r\n toString () {\r\n // convert to a poly point string\r\n for (var i = 0, il = this.length, array = []; i < il; i++) {\r\n array.push(this[i].join(','))\r\n }\r\n\r\n return array.join(' ')\r\n },\r\n\r\n // Convert array to line object\r\n toLine () {\r\n return {\r\n x1: this[0][0],\r\n y1: this[0][1],\r\n x2: this[1][0],\r\n y2: this[1][1]\r\n }\r\n },\r\n\r\n // Get morphed array at given position\r\n at (pos) {\r\n // make sure a destination is defined\r\n if (!this.destination) return this\r\n\r\n // generate morphed point string\r\n for (var i = 0, il = this.length, array = []; i < il; i++) {\r\n array.push([\r\n this[i][0] + (this.destination[i][0] - this[i][0]) * pos,\r\n this[i][1] + (this.destination[i][1] - this[i][1]) * pos\r\n ])\r\n }\r\n\r\n return new PointArray(array)\r\n },\r\n\r\n // Parse point string and flat array\r\n parse (array = [ [ 0, 0 ] ]) {\r\n var points = []\r\n\r\n // if it is an array\r\n if (array instanceof Array) {\r\n // and it is not flat, there is no need to parse it\r\n if (array[0] instanceof Array) {\r\n return array\r\n }\r\n } else { // Else, it is considered as a string\r\n // parse points\r\n array = array.trim().split(delimiter).map(parseFloat)\r\n }\r\n\r\n // validate points - https://svgwg.org/svg2-draft/shapes.html#DataTypePoints\r\n // Odd number of coordinates is an error. In such cases, drop the last odd coordinate.\r\n if (array.length % 2 !== 0) array.pop()\r\n\r\n // wrap points in two-tuples\r\n for (var i = 0, len = array.length; i < len; i = i + 2) {\r\n points.push([ array[i], array[i + 1] ])\r\n }\r\n\r\n return points\r\n },\r\n\r\n // transform points with matrix (similar to Point.transform)\r\n transform (m) {\r\n const points = []\r\n\r\n for (let i = 0; i < this.length; i++) {\r\n const point = this[i]\r\n // Perform the matrix multiplication\r\n points.push([\r\n m.a * point[0] + m.c * point[1] + m.e,\r\n m.b * point[0] + m.d * point[1] + m.f\r\n ])\r\n }\r\n\r\n // Return the required point\r\n return new PointArray(points)\r\n },\r\n\r\n // Move point string\r\n move (x, y) {\r\n var box = this.bbox()\r\n\r\n // get relative offset\r\n x -= box.x\r\n y -= box.y\r\n\r\n // move every point\r\n if (!isNaN(x) && !isNaN(y)) {\r\n for (var i = this.length - 1; i >= 0; i--) {\r\n this[i] = [ this[i][0] + x, this[i][1] + y ]\r\n }\r\n }\r\n\r\n return this\r\n },\r\n\r\n // Resize poly string\r\n size (width, height) {\r\n var i\r\n var box = this.bbox()\r\n\r\n // recalculate position of all points according to new size\r\n for (i = this.length - 1; i >= 0; i--) {\r\n if (box.width) this[i][0] = ((this[i][0] - box.x) * width) / box.width + box.x\r\n if (box.height) this[i][1] = ((this[i][1] - box.y) * height) / box.height + box.y\r\n }\r\n\r\n return this\r\n },\r\n\r\n // Get bounding box of points\r\n bbox () {\r\n var maxX = -Infinity\r\n var maxY = -Infinity\r\n var minX = Infinity\r\n var minY = Infinity\r\n this.forEach(function (el) {\r\n maxX = Math.max(el[0], maxX)\r\n maxY = Math.max(el[1], maxY)\r\n minX = Math.min(el[0], minX)\r\n minY = Math.min(el[1], minY)\r\n })\r\n return { x: minX, y: minY, width: maxX - minX, height: maxY - minY }\r\n }\r\n})\r\n","import PointArray from '../../types/PointArray.js'\r\n\r\nexport const MorphArray = PointArray\r\n\r\n// Move by left top corner over x-axis\r\nexport function x (x) {\r\n return x == null ? this.bbox().x : this.move(x, this.bbox().y)\r\n}\r\n\r\n// Move by left top corner over y-axis\r\nexport function y (y) {\r\n return y == null ? this.bbox().y : this.move(this.bbox().x, y)\r\n}\r\n\r\n// Set width of element\r\nexport function width (width) {\r\n const b = this.bbox()\r\n return width == null ? b.width : this.size(width, b.height)\r\n}\r\n\r\n// Set height of element\r\nexport function height (height) {\r\n const b = this.bbox()\r\n return height == null ? b.height : this.size(b.width, height)\r\n}\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PointArray from '../types/PointArray.js'\r\nimport Shape from './Shape.js'\r\nimport * as pointed from '../modules/core/pointed.js'\r\n\r\nexport default class Line extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('line', node), node)\r\n }\r\n\r\n // Get array\r\n array () {\r\n return new PointArray([\r\n [ this.attr('x1'), this.attr('y1') ],\r\n [ this.attr('x2'), this.attr('y2') ]\r\n ])\r\n }\r\n\r\n // Overwrite native plot() method\r\n plot (x1, y1, x2, y2) {\r\n if (x1 == null) {\r\n return this.array()\r\n } else if (typeof y1 !== 'undefined') {\r\n x1 = { x1: x1, y1: y1, x2: x2, y2: y2 }\r\n } else {\r\n x1 = new PointArray(x1).toLine()\r\n }\r\n\r\n return this.attr(x1)\r\n }\r\n\r\n // Move by left top corner\r\n move (x, y) {\r\n return this.attr(this.array().move(x, y).toLine())\r\n }\r\n\r\n // Set element size to given width and height\r\n size (width, height) {\r\n var p = proportionalSize(this, width, height)\r\n return this.attr(this.array().size(p.width, p.height).toLine())\r\n }\r\n}\r\n\r\nextend(Line, pointed)\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a line element\r\n line: wrapWithAttrCheck(function (...args) {\r\n // make sure plot is called as a setter\r\n // x1 is not necessarily a number, it can also be an array, a string and a PointArray\r\n return Line.prototype.plot.apply(\r\n this.put(new Line())\r\n , args[0] != null ? args : [ 0, 0, 0, 0 ]\r\n )\r\n })\r\n }\r\n})\r\n\r\nregister(Line, 'Line')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class Marker extends Container {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('marker', node), node)\r\n }\r\n\r\n // Set width of element\r\n width (width) {\r\n return this.attr('markerWidth', width)\r\n }\r\n\r\n // Set height of element\r\n height (height) {\r\n return this.attr('markerHeight', height)\r\n }\r\n\r\n // Set marker refX and refY\r\n ref (x, y) {\r\n return this.attr('refX', x).attr('refY', y)\r\n }\r\n\r\n // Update marker\r\n update (block) {\r\n // remove all content\r\n this.clear()\r\n\r\n // invoke passed block\r\n if (typeof block === 'function') {\r\n block.call(this, this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Return the fill id\r\n toString () {\r\n return 'url(#' + this.id() + ')'\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n marker (...args) {\r\n // Create marker element in defs\r\n return this.defs().marker(...args)\r\n }\r\n },\r\n Defs: {\r\n // Create marker\r\n marker: wrapWithAttrCheck(function (width, height, block) {\r\n // Set default viewbox to match the width and height, set ref to cx and cy and set orient to auto\r\n return this.put(new Marker())\r\n .size(width, height)\r\n .ref(width / 2, height / 2)\r\n .viewbox(0, 0, width, height)\r\n .attr('orient', 'auto')\r\n .update(block)\r\n })\r\n },\r\n marker: {\r\n // Create and attach markers\r\n marker (marker, width, height, block) {\r\n var attr = [ 'marker' ]\r\n\r\n // Build attribute name\r\n if (marker !== 'all') attr.push(marker)\r\n attr = attr.join('-')\r\n\r\n // Set marker attribute\r\n marker = arguments[1] instanceof Marker\r\n ? arguments[1]\r\n : this.defs().marker(width, height, block)\r\n\r\n return this.attr(attr, marker)\r\n }\r\n }\r\n})\r\n\r\nregister(Marker, 'Marker')\r\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeSort = [].sort;\nvar test = [1, 2, 3];\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar SLOPPY_METHOD = sloppyArrayMethod('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? nativeSort.call(toObject(this))\n : nativeSort.call(toObject(this), aFunction(comparefn));\n }\n});\n","import { timeline } from '../modules/core/defaults.js'\r\nimport { extend } from '../utils/adopter.js'\r\n\r\n/***\r\nBase Class\r\n==========\r\nThe base stepper class that will be\r\n***/\r\n\r\nfunction makeSetterGetter (k, f) {\r\n return function (v) {\r\n if (v == null) return this[v]\r\n this[k] = v\r\n if (f) f.call(this)\r\n return this\r\n }\r\n}\r\n\r\nexport const easing = {\r\n '-': function (pos) {\r\n return pos\r\n },\r\n '<>': function (pos) {\r\n return -Math.cos(pos * Math.PI) / 2 + 0.5\r\n },\r\n '>': function (pos) {\r\n return Math.sin(pos * Math.PI / 2)\r\n },\r\n '<': function (pos) {\r\n return -Math.cos(pos * Math.PI / 2) + 1\r\n },\r\n bezier: function (x1, y1, x2, y2) {\r\n // see https://www.w3.org/TR/css-easing-1/#cubic-bezier-algo\r\n return function (t) {\r\n if (t < 0) {\r\n if (x1 > 0) {\r\n return y1 / x1 * t\r\n } else if (x2 > 0) {\r\n return y2 / x2 * t\r\n } else {\r\n return 0\r\n }\r\n } else if (t > 1) {\r\n if (x2 < 1) {\r\n return (1 - y2) / (1 - x2) * t + (y2 - x2) / (1 - x2)\r\n } else if (x1 < 1) {\r\n return (1 - y1) / (1 - x1) * t + (y1 - x1) / (1 - x1)\r\n } else {\r\n return 1\r\n }\r\n } else {\r\n return 3 * t * (1 - t) ** 2 * y1 + 3 * t ** 2 * (1 - t) * y2 + t ** 3\r\n }\r\n }\r\n },\r\n // see https://www.w3.org/TR/css-easing-1/#step-timing-function-algo\r\n steps: function (steps, stepPosition = 'end') {\r\n // deal with \"jump-\" prefix\r\n stepPosition = stepPosition.split('-').reverse()[0]\r\n\r\n let jumps = steps\r\n if (stepPosition === 'none') {\r\n --jumps\r\n } else if (stepPosition === 'both') {\r\n ++jumps\r\n }\r\n\r\n // The beforeFlag is essentially useless\r\n return (t, beforeFlag = false) => {\r\n // Step is called currentStep in referenced url\r\n let step = Math.floor(t * steps)\r\n const jumping = (t * step) % 1 === 0\r\n\r\n if (stepPosition === 'start' || stepPosition === 'both') {\r\n ++step\r\n }\r\n\r\n if (beforeFlag && jumping) {\r\n --step\r\n }\r\n\r\n if (t >= 0 && step < 0) {\r\n step = 0\r\n }\r\n\r\n if (t <= 1 && step > jumps) {\r\n step = jumps\r\n }\r\n\r\n return step / jumps\r\n }\r\n }\r\n}\r\n\r\nexport class Stepper {\r\n done () {\r\n return false\r\n }\r\n}\r\n\r\n/***\r\nEasing Functions\r\n================\r\n***/\r\n\r\nexport class Ease extends Stepper {\r\n constructor (fn) {\r\n super()\r\n this.ease = easing[fn || timeline.ease] || fn\r\n }\r\n\r\n step (from, to, pos) {\r\n if (typeof from !== 'number') {\r\n return pos < 1 ? from : to\r\n }\r\n return from + (to - from) * this.ease(pos)\r\n }\r\n}\r\n\r\n/***\r\nController Types\r\n================\r\n***/\r\n\r\nexport class Controller extends Stepper {\r\n constructor (fn) {\r\n super()\r\n this.stepper = fn\r\n }\r\n\r\n step (current, target, dt, c) {\r\n return this.stepper(current, target, dt, c)\r\n }\r\n\r\n done (c) {\r\n return c.done\r\n }\r\n}\r\n\r\nfunction recalculate () {\r\n // Apply the default parameters\r\n var duration = (this._duration || 500) / 1000\r\n var overshoot = this._overshoot || 0\r\n\r\n // Calculate the PID natural response\r\n var eps = 1e-10\r\n var pi = Math.PI\r\n var os = Math.log(overshoot / 100 + eps)\r\n var zeta = -os / Math.sqrt(pi * pi + os * os)\r\n var wn = 3.9 / (zeta * duration)\r\n\r\n // Calculate the Spring values\r\n this.d = 2 * zeta * wn\r\n this.k = wn * wn\r\n}\r\n\r\nexport class Spring extends Controller {\r\n constructor (duration, overshoot) {\r\n super()\r\n this.duration(duration || 500)\r\n .overshoot(overshoot || 0)\r\n }\r\n\r\n step (current, target, dt, c) {\r\n if (typeof current === 'string') return current\r\n c.done = dt === Infinity\r\n if (dt === Infinity) return target\r\n if (dt === 0) return current\r\n\r\n if (dt > 100) dt = 16\r\n\r\n dt /= 1000\r\n\r\n // Get the previous velocity\r\n var velocity = c.velocity || 0\r\n\r\n // Apply the control to get the new position and store it\r\n var acceleration = -this.d * velocity - this.k * (current - target)\r\n var newPosition = current\r\n + velocity * dt\r\n + acceleration * dt * dt / 2\r\n\r\n // Store the velocity\r\n c.velocity = velocity + acceleration * dt\r\n\r\n // Figure out if we have converged, and if so, pass the value\r\n c.done = Math.abs(target - newPosition) + Math.abs(velocity) < 0.002\r\n return c.done ? target : newPosition\r\n }\r\n}\r\n\r\nextend(Spring, {\r\n duration: makeSetterGetter('_duration', recalculate),\r\n overshoot: makeSetterGetter('_overshoot', recalculate)\r\n})\r\n\r\nexport class PID extends Controller {\r\n constructor (p, i, d, windup) {\r\n super()\r\n\r\n p = p == null ? 0.1 : p\r\n i = i == null ? 0.01 : i\r\n d = d == null ? 0 : d\r\n windup = windup == null ? 1000 : windup\r\n this.p(p).i(i).d(d).windup(windup)\r\n }\r\n\r\n step (current, target, dt, c) {\r\n if (typeof current === 'string') return current\r\n c.done = dt === Infinity\r\n\r\n if (dt === Infinity) return target\r\n if (dt === 0) return current\r\n\r\n var p = target - current\r\n var i = (c.integral || 0) + p * dt\r\n var d = (p - (c.error || 0)) / dt\r\n var windup = this.windup\r\n\r\n // antiwindup\r\n if (windup !== false) {\r\n i = Math.max(-windup, Math.min(i, windup))\r\n }\r\n\r\n c.error = p\r\n c.integral = i\r\n\r\n c.done = Math.abs(p) < 0.001\r\n\r\n return c.done ? target : current + (this.P * p + this.I * i + this.D * d)\r\n }\r\n}\r\n\r\nextend(PID, {\r\n windup: makeSetterGetter('windup'),\r\n p: makeSetterGetter('P'),\r\n i: makeSetterGetter('I'),\r\n d: makeSetterGetter('D')\r\n})\r\n","import {\r\n delimiter,\r\n dots,\r\n hyphen,\r\n isPathLetter,\r\n numbersWithDots,\r\n pathLetters\r\n} from '../modules/core/regex.js'\r\nimport { extend } from '../utils/adopter.js'\r\nimport { subClassArray } from './ArrayPolyfill.js'\r\nimport Point from './Point.js'\r\nimport SVGArray from './SVGArray.js'\r\nimport parser from '../modules/core/parser.js'\r\n\r\nconst PathArray = subClassArray('PathArray', SVGArray)\r\n\r\nexport default PathArray\r\n\r\nexport function pathRegReplace (a, b, c, d) {\r\n return c + d.replace(dots, ' .')\r\n}\r\n\r\nfunction arrayToString (a) {\r\n for (var i = 0, il = a.length, s = ''; i < il; i++) {\r\n s += a[i][0]\r\n\r\n if (a[i][1] != null) {\r\n s += a[i][1]\r\n\r\n if (a[i][2] != null) {\r\n s += ' '\r\n s += a[i][2]\r\n\r\n if (a[i][3] != null) {\r\n s += ' '\r\n s += a[i][3]\r\n s += ' '\r\n s += a[i][4]\r\n\r\n if (a[i][5] != null) {\r\n s += ' '\r\n s += a[i][5]\r\n s += ' '\r\n s += a[i][6]\r\n\r\n if (a[i][7] != null) {\r\n s += ' '\r\n s += a[i][7]\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return s + ' '\r\n}\r\n\r\nconst pathHandlers = {\r\n M: function (c, p, p0) {\r\n p.x = p0.x = c[0]\r\n p.y = p0.y = c[1]\r\n\r\n return [ 'M', p.x, p.y ]\r\n },\r\n L: function (c, p) {\r\n p.x = c[0]\r\n p.y = c[1]\r\n return [ 'L', c[0], c[1] ]\r\n },\r\n H: function (c, p) {\r\n p.x = c[0]\r\n return [ 'H', c[0] ]\r\n },\r\n V: function (c, p) {\r\n p.y = c[0]\r\n return [ 'V', c[0] ]\r\n },\r\n C: function (c, p) {\r\n p.x = c[4]\r\n p.y = c[5]\r\n return [ 'C', c[0], c[1], c[2], c[3], c[4], c[5] ]\r\n },\r\n S: function (c, p) {\r\n p.x = c[2]\r\n p.y = c[3]\r\n return [ 'S', c[0], c[1], c[2], c[3] ]\r\n },\r\n Q: function (c, p) {\r\n p.x = c[2]\r\n p.y = c[3]\r\n return [ 'Q', c[0], c[1], c[2], c[3] ]\r\n },\r\n T: function (c, p) {\r\n p.x = c[0]\r\n p.y = c[1]\r\n return [ 'T', c[0], c[1] ]\r\n },\r\n Z: function (c, p, p0) {\r\n p.x = p0.x\r\n p.y = p0.y\r\n return [ 'Z' ]\r\n },\r\n A: function (c, p) {\r\n p.x = c[5]\r\n p.y = c[6]\r\n return [ 'A', c[0], c[1], c[2], c[3], c[4], c[5], c[6] ]\r\n }\r\n}\r\n\r\nconst mlhvqtcsaz = 'mlhvqtcsaz'.split('')\r\n\r\nfor (var i = 0, il = mlhvqtcsaz.length; i < il; ++i) {\r\n pathHandlers[mlhvqtcsaz[i]] = (function (i) {\r\n return function (c, p, p0) {\r\n if (i === 'H') c[0] = c[0] + p.x\r\n else if (i === 'V') c[0] = c[0] + p.y\r\n else if (i === 'A') {\r\n c[5] = c[5] + p.x\r\n c[6] = c[6] + p.y\r\n } else {\r\n for (var j = 0, jl = c.length; j < jl; ++j) {\r\n c[j] = c[j] + (j % 2 ? p.y : p.x)\r\n }\r\n }\r\n\r\n return pathHandlers[i](c, p, p0)\r\n }\r\n })(mlhvqtcsaz[i].toUpperCase())\r\n}\r\n\r\nextend(PathArray, {\r\n // Convert array to string\r\n toString () {\r\n return arrayToString(this)\r\n },\r\n\r\n // Move path string\r\n move (x, y) {\r\n // get bounding box of current situation\r\n var box = this.bbox()\r\n\r\n // get relative offset\r\n x -= box.x\r\n y -= box.y\r\n\r\n if (!isNaN(x) && !isNaN(y)) {\r\n // move every point\r\n for (var l, i = this.length - 1; i >= 0; i--) {\r\n l = this[i][0]\r\n\r\n if (l === 'M' || l === 'L' || l === 'T') {\r\n this[i][1] += x\r\n this[i][2] += y\r\n } else if (l === 'H') {\r\n this[i][1] += x\r\n } else if (l === 'V') {\r\n this[i][1] += y\r\n } else if (l === 'C' || l === 'S' || l === 'Q') {\r\n this[i][1] += x\r\n this[i][2] += y\r\n this[i][3] += x\r\n this[i][4] += y\r\n\r\n if (l === 'C') {\r\n this[i][5] += x\r\n this[i][6] += y\r\n }\r\n } else if (l === 'A') {\r\n this[i][6] += x\r\n this[i][7] += y\r\n }\r\n }\r\n }\r\n\r\n return this\r\n },\r\n\r\n // Resize path string\r\n size (width, height) {\r\n // get bounding box of current situation\r\n var box = this.bbox()\r\n var i, l\r\n\r\n // If the box width or height is 0 then we ignore\r\n // transformations on the respective axis\r\n box.width = box.width === 0 ? 1 : box.width\r\n box.height = box.height === 0 ? 1 : box.height\r\n\r\n // recalculate position of all points according to new size\r\n for (i = this.length - 1; i >= 0; i--) {\r\n l = this[i][0]\r\n\r\n if (l === 'M' || l === 'L' || l === 'T') {\r\n this[i][1] = ((this[i][1] - box.x) * width) / box.width + box.x\r\n this[i][2] = ((this[i][2] - box.y) * height) / box.height + box.y\r\n } else if (l === 'H') {\r\n this[i][1] = ((this[i][1] - box.x) * width) / box.width + box.x\r\n } else if (l === 'V') {\r\n this[i][1] = ((this[i][1] - box.y) * height) / box.height + box.y\r\n } else if (l === 'C' || l === 'S' || l === 'Q') {\r\n this[i][1] = ((this[i][1] - box.x) * width) / box.width + box.x\r\n this[i][2] = ((this[i][2] - box.y) * height) / box.height + box.y\r\n this[i][3] = ((this[i][3] - box.x) * width) / box.width + box.x\r\n this[i][4] = ((this[i][4] - box.y) * height) / box.height + box.y\r\n\r\n if (l === 'C') {\r\n this[i][5] = ((this[i][5] - box.x) * width) / box.width + box.x\r\n this[i][6] = ((this[i][6] - box.y) * height) / box.height + box.y\r\n }\r\n } else if (l === 'A') {\r\n // resize radii\r\n this[i][1] = (this[i][1] * width) / box.width\r\n this[i][2] = (this[i][2] * height) / box.height\r\n\r\n // move position values\r\n this[i][6] = ((this[i][6] - box.x) * width) / box.width + box.x\r\n this[i][7] = ((this[i][7] - box.y) * height) / box.height + box.y\r\n }\r\n }\r\n\r\n return this\r\n },\r\n\r\n // Test if the passed path array use the same path data commands as this path array\r\n equalCommands (pathArray) {\r\n var i, il, equalCommands\r\n\r\n pathArray = new PathArray(pathArray)\r\n\r\n equalCommands = this.length === pathArray.length\r\n for (i = 0, il = this.length; equalCommands && i < il; i++) {\r\n equalCommands = this[i][0] === pathArray[i][0]\r\n }\r\n\r\n return equalCommands\r\n },\r\n\r\n // Make path array morphable\r\n morph (pathArray) {\r\n pathArray = new PathArray(pathArray)\r\n\r\n if (this.equalCommands(pathArray)) {\r\n this.destination = pathArray\r\n } else {\r\n this.destination = null\r\n }\r\n\r\n return this\r\n },\r\n\r\n // Get morphed path array at given position\r\n at (pos) {\r\n // make sure a destination is defined\r\n if (!this.destination) return this\r\n\r\n var sourceArray = this\r\n var destinationArray = this.destination.value\r\n var array = []\r\n var pathArray = new PathArray()\r\n var i, il, j, jl\r\n\r\n // Animate has specified in the SVG spec\r\n // See: https://www.w3.org/TR/SVG11/paths.html#PathElement\r\n for (i = 0, il = sourceArray.length; i < il; i++) {\r\n array[i] = [ sourceArray[i][0] ]\r\n for (j = 1, jl = sourceArray[i].length; j < jl; j++) {\r\n array[i][j] = sourceArray[i][j] + (destinationArray[i][j] - sourceArray[i][j]) * pos\r\n }\r\n // For the two flags of the elliptical arc command, the SVG spec say:\r\n // Flags and booleans are interpolated as fractions between zero and one, with any non-zero value considered to be a value of one/true\r\n // Elliptical arc command as an array followed by corresponding indexes:\r\n // ['A', rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y]\r\n // 0 1 2 3 4 5 6 7\r\n if (array[i][0] === 'A') {\r\n array[i][4] = +(array[i][4] !== 0)\r\n array[i][5] = +(array[i][5] !== 0)\r\n }\r\n }\r\n\r\n // Directly modify the value of a path array, this is done this way for performance\r\n pathArray.value = array\r\n return pathArray\r\n },\r\n\r\n // Absolutize and parse path to array\r\n parse (array = [ [ 'M', 0, 0 ] ]) {\r\n // if it's already a patharray, no need to parse it\r\n if (array instanceof PathArray) return array\r\n\r\n // prepare for parsing\r\n var s\r\n var paramCnt = { M: 2, L: 2, H: 1, V: 1, C: 6, S: 4, Q: 4, T: 2, A: 7, Z: 0 }\r\n\r\n if (typeof array === 'string') {\r\n array = array\r\n .replace(numbersWithDots, pathRegReplace) // convert 45.123.123 to 45.123 .123\r\n .replace(pathLetters, ' $& ') // put some room between letters and numbers\r\n .replace(hyphen, '$1 -') // add space before hyphen\r\n .trim() // trim\r\n .split(delimiter) // split into array\r\n } else {\r\n array = array.reduce(function (prev, curr) {\r\n return [].concat.call(prev, curr)\r\n }, [])\r\n }\r\n\r\n // array now is an array containing all parts of a path e.g. ['M', '0', '0', 'L', '30', '30' ...]\r\n var result = []\r\n var p = new Point()\r\n var p0 = new Point()\r\n var index = 0\r\n var len = array.length\r\n\r\n do {\r\n // Test if we have a path letter\r\n if (isPathLetter.test(array[index])) {\r\n s = array[index]\r\n ++index\r\n // If last letter was a move command and we got no new, it defaults to [L]ine\r\n } else if (s === 'M') {\r\n s = 'L'\r\n } else if (s === 'm') {\r\n s = 'l'\r\n }\r\n\r\n result.push(pathHandlers[s].call(null,\r\n array.slice(index, (index = index + paramCnt[s.toUpperCase()])).map(parseFloat),\r\n p, p0\r\n )\r\n )\r\n } while (len > index)\r\n\r\n return result\r\n },\r\n\r\n // Get bounding box of path\r\n bbox () {\r\n parser().path.setAttribute('d', this.toString())\r\n return parser.nodes.path.getBBox()\r\n }\r\n})\r\n","import { Ease } from './Controller.js'\r\nimport {\r\n delimiter,\r\n numberAndUnit,\r\n pathLetters\r\n} from '../modules/core/regex.js'\r\nimport { extend } from '../utils/adopter.js'\r\nimport Color from '../types/Color.js'\r\nimport PathArray from '../types/PathArray.js'\r\nimport SVGArray from '../types/SVGArray.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\n\r\nexport default class Morphable {\r\n constructor (stepper) {\r\n this._stepper = stepper || new Ease('-')\r\n\r\n this._from = null\r\n this._to = null\r\n this._type = null\r\n this._context = null\r\n this._morphObj = null\r\n }\r\n\r\n from (val) {\r\n if (val == null) {\r\n return this._from\r\n }\r\n\r\n this._from = this._set(val)\r\n return this\r\n }\r\n\r\n to (val) {\r\n if (val == null) {\r\n return this._to\r\n }\r\n\r\n this._to = this._set(val)\r\n return this\r\n }\r\n\r\n type (type) {\r\n // getter\r\n if (type == null) {\r\n return this._type\r\n }\r\n\r\n // setter\r\n this._type = type\r\n return this\r\n }\r\n\r\n _set (value) {\r\n if (!this._type) {\r\n var type = typeof value\r\n\r\n if (type === 'number') {\r\n this.type(SVGNumber)\r\n } else if (type === 'string') {\r\n if (Color.isColor(value)) {\r\n this.type(Color)\r\n } else if (delimiter.test(value)) {\r\n this.type(pathLetters.test(value)\r\n ? PathArray\r\n : SVGArray\r\n )\r\n } else if (numberAndUnit.test(value)) {\r\n this.type(SVGNumber)\r\n } else {\r\n this.type(NonMorphable)\r\n }\r\n } else if (morphableTypes.indexOf(value.constructor) > -1) {\r\n this.type(value.constructor)\r\n } else if (Array.isArray(value)) {\r\n this.type(SVGArray)\r\n } else if (type === 'object') {\r\n this.type(ObjectBag)\r\n } else {\r\n this.type(NonMorphable)\r\n }\r\n }\r\n\r\n var result = (new this._type(value))\r\n if (this._type === Color) {\r\n result = this._to ? result[this._to[4]]()\r\n : this._from ? result[this._from[4]]()\r\n : result\r\n }\r\n result = result.toArray()\r\n\r\n this._morphObj = this._morphObj || new this._type()\r\n this._context = this._context\r\n || Array.apply(null, Array(result.length))\r\n .map(Object)\r\n .map(function (o) {\r\n o.done = true\r\n return o\r\n })\r\n return result\r\n }\r\n\r\n stepper (stepper) {\r\n if (stepper == null) return this._stepper\r\n this._stepper = stepper\r\n return this\r\n }\r\n\r\n done () {\r\n var complete = this._context\r\n .map(this._stepper.done)\r\n .reduce(function (last, curr) {\r\n return last && curr\r\n }, true)\r\n return complete\r\n }\r\n\r\n at (pos) {\r\n var _this = this\r\n\r\n return this._morphObj.fromArray(\r\n this._from.map(function (i, index) {\r\n return _this._stepper.step(i, _this._to[index], pos, _this._context[index], _this._context)\r\n })\r\n )\r\n }\r\n}\r\n\r\nexport class NonMorphable {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (val) {\r\n val = Array.isArray(val) ? val[0] : val\r\n this.value = val\r\n return this\r\n }\r\n\r\n valueOf () {\r\n return this.value\r\n }\r\n\r\n toArray () {\r\n return [ this.value ]\r\n }\r\n}\r\n\r\nexport class TransformBag {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (obj) {\r\n if (Array.isArray(obj)) {\r\n obj = {\r\n scaleX: obj[0],\r\n scaleY: obj[1],\r\n shear: obj[2],\r\n rotate: obj[3],\r\n translateX: obj[4],\r\n translateY: obj[5],\r\n originX: obj[6],\r\n originY: obj[7]\r\n }\r\n }\r\n\r\n Object.assign(this, TransformBag.defaults, obj)\r\n return this\r\n }\r\n\r\n toArray () {\r\n var v = this\r\n\r\n return [\r\n v.scaleX,\r\n v.scaleY,\r\n v.shear,\r\n v.rotate,\r\n v.translateX,\r\n v.translateY,\r\n v.originX,\r\n v.originY\r\n ]\r\n }\r\n}\r\n\r\nTransformBag.defaults = {\r\n scaleX: 1,\r\n scaleY: 1,\r\n shear: 0,\r\n rotate: 0,\r\n translateX: 0,\r\n translateY: 0,\r\n originX: 0,\r\n originY: 0\r\n}\r\n\r\nexport class ObjectBag {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (objOrArr) {\r\n this.values = []\r\n\r\n if (Array.isArray(objOrArr)) {\r\n this.values = objOrArr\r\n return\r\n }\r\n\r\n objOrArr = objOrArr || {}\r\n var entries = []\r\n\r\n for (const i in objOrArr) {\r\n entries.push([ i, objOrArr[i] ])\r\n }\r\n\r\n entries.sort((a, b) => {\r\n return a[0] - b[0]\r\n })\r\n\r\n this.values = entries.reduce((last, curr) => last.concat(curr), [])\r\n return this\r\n }\r\n\r\n valueOf () {\r\n var obj = {}\r\n var arr = this.values\r\n\r\n for (var i = 0, len = arr.length; i < len; i += 2) {\r\n obj[arr[i]] = arr[i + 1]\r\n }\r\n\r\n return obj\r\n }\r\n\r\n toArray () {\r\n return this.values\r\n }\r\n}\r\n\r\nconst morphableTypes = [\r\n NonMorphable,\r\n TransformBag,\r\n ObjectBag\r\n]\r\n\r\nexport function registerMorphableType (type = []) {\r\n morphableTypes.push(...[].concat(type))\r\n}\r\n\r\nexport function makeMorphable () {\r\n extend(morphableTypes, {\r\n to (val) {\r\n return new Morphable()\r\n .type(this.constructor)\r\n .from(this.valueOf())\r\n .to(val)\r\n },\r\n fromArray (arr) {\r\n this.init(arr)\r\n return this\r\n }\r\n })\r\n}\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PathArray from '../types/PathArray.js'\r\nimport Shape from './Shape.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class Path extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('path', node), node)\r\n }\r\n\r\n // Get array\r\n array () {\r\n return this._array || (this._array = new PathArray(this.attr('d')))\r\n }\r\n\r\n // Plot new path\r\n plot (d) {\r\n return (d == null) ? this.array()\r\n : this.clear().attr('d', typeof d === 'string' ? d : (this._array = new PathArray(d)))\r\n }\r\n\r\n // Clear array cache\r\n clear () {\r\n delete this._array\r\n return this\r\n }\r\n\r\n // Move by left top corner\r\n move (x, y) {\r\n return this.attr('d', this.array().move(x, y))\r\n }\r\n\r\n // Move by left top corner over x-axis\r\n x (x) {\r\n return x == null ? this.bbox().x : this.move(x, this.bbox().y)\r\n }\r\n\r\n // Move by left top corner over y-axis\r\n y (y) {\r\n return y == null ? this.bbox().y : this.move(this.bbox().x, y)\r\n }\r\n\r\n // Set element size to given width and height\r\n size (width, height) {\r\n var p = proportionalSize(this, width, height)\r\n return this.attr('d', this.array().size(p.width, p.height))\r\n }\r\n\r\n // Set width of element\r\n width (width) {\r\n return width == null ? this.bbox().width : this.size(width, this.bbox().height)\r\n }\r\n\r\n // Set height of element\r\n height (height) {\r\n return height == null ? this.bbox().height : this.size(this.bbox().width, height)\r\n }\r\n\r\n targets () {\r\n return baseFind('svg textpath [href*=\"' + this.id() + '\"]')\r\n }\r\n}\r\n\r\n// Define morphable array\r\nPath.prototype.MorphArray = PathArray\r\n\r\n// Add parent method\r\nregisterMethods({\r\n Container: {\r\n // Create a wrapped path element\r\n path: wrapWithAttrCheck(function (d) {\r\n // make sure plot is called as a setter\r\n return this.put(new Path()).plot(d || new PathArray())\r\n })\r\n }\r\n})\r\n\r\nregister(Path, 'Path')\r\n","import { proportionalSize } from '../../utils/utils.js'\r\nimport PointArray from '../../types/PointArray.js'\r\n\r\n// Get array\r\nexport function array () {\r\n return this._array || (this._array = new PointArray(this.attr('points')))\r\n}\r\n\r\n// Plot new path\r\nexport function plot (p) {\r\n return (p == null) ? this.array()\r\n : this.clear().attr('points', typeof p === 'string' ? p\r\n : (this._array = new PointArray(p)))\r\n}\r\n\r\n// Clear array cache\r\nexport function clear () {\r\n delete this._array\r\n return this\r\n}\r\n\r\n// Move by left top corner\r\nexport function move (x, y) {\r\n return this.attr('points', this.array().move(x, y))\r\n}\r\n\r\n// Set element size to given width and height\r\nexport function size (width, height) {\r\n const p = proportionalSize(this, width, height)\r\n return this.attr('points', this.array().size(p.width, p.height))\r\n}\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PointArray from '../types/PointArray.js'\r\nimport Shape from './Shape.js'\r\nimport * as pointed from '../modules/core/pointed.js'\r\nimport * as poly from '../modules/core/poly.js'\r\n\r\nexport default class Polygon extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('polygon', node), node)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a wrapped polygon element\r\n polygon: wrapWithAttrCheck(function (p) {\r\n // make sure plot is called as a setter\r\n return this.put(new Polygon()).plot(p || new PointArray())\r\n })\r\n }\r\n})\r\n\r\nextend(Polygon, pointed)\r\nextend(Polygon, poly)\r\nregister(Polygon, 'Polygon')\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PointArray from '../types/PointArray.js'\r\nimport Shape from './Shape.js'\r\nimport * as pointed from '../modules/core/pointed.js'\r\nimport * as poly from '../modules/core/poly.js'\r\n\r\nexport default class Polyline extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('polyline', node), node)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a wrapped polygon element\r\n polyline: wrapWithAttrCheck(function (p) {\r\n // make sure plot is called as a setter\r\n return this.put(new Polyline()).plot(p || new PointArray())\r\n })\r\n }\r\n})\r\n\r\nextend(Polyline, pointed)\r\nextend(Polyline, poly)\r\nregister(Polyline, 'Polyline')\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { rx, ry } from '../modules/core/circled.js'\r\nimport Shape from './Shape.js'\r\n\r\nexport default class Rect extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('rect', node), node)\r\n }\r\n}\r\n\r\nextend(Rect, { rx, ry })\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a rect element\r\n rect: wrapWithAttrCheck(function (width, height) {\r\n return this.put(new Rect()).size(width, height)\r\n })\r\n }\r\n})\r\n\r\nregister(Rect, 'Rect')\r\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('splice') }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","export default class Queue {\r\n constructor () {\r\n this._first = null\r\n this._last = null\r\n }\r\n\r\n push (value) {\r\n // An item stores an id and the provided value\r\n var item = value.next ? value : { value: value, next: null, prev: null }\r\n\r\n // Deal with the queue being empty or populated\r\n if (this._last) {\r\n item.prev = this._last\r\n this._last.next = item\r\n this._last = item\r\n } else {\r\n this._last = item\r\n this._first = item\r\n }\r\n\r\n // Return the current item\r\n return item\r\n }\r\n\r\n shift () {\r\n // Check if we have a value\r\n var remove = this._first\r\n if (!remove) return null\r\n\r\n // If we do, remove it and relink things\r\n this._first = remove.next\r\n if (this._first) this._first.prev = null\r\n this._last = this._first ? this._last : null\r\n return remove.value\r\n }\r\n\r\n // Shows us the first item in the list\r\n first () {\r\n return this._first && this._first.value\r\n }\r\n\r\n // Shows us the last item in the list\r\n last () {\r\n return this._last && this._last.value\r\n }\r\n\r\n // Removes the item that was returned from the push\r\n remove (item) {\r\n // Relink the previous item\r\n if (item.prev) item.prev.next = item.next\r\n if (item.next) item.next.prev = item.prev\r\n if (item === this._last) this._last = item.prev\r\n if (item === this._first) this._first = item.next\r\n\r\n // Invalidate item\r\n item.prev = null\r\n item.next = null\r\n }\r\n}\r\n","import { globals } from '../utils/window.js'\r\nimport Queue from './Queue.js'\r\n\r\nconst Animator = {\r\n nextDraw: null,\r\n frames: new Queue(),\r\n timeouts: new Queue(),\r\n immediates: new Queue(),\r\n timer: () => globals.window.performance || globals.window.Date,\r\n transforms: [],\r\n\r\n frame (fn) {\r\n // Store the node\r\n var node = Animator.frames.push({ run: fn })\r\n\r\n // Request an animation frame if we don't have one\r\n if (Animator.nextDraw === null) {\r\n Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw)\r\n }\r\n\r\n // Return the node so we can remove it easily\r\n return node\r\n },\r\n\r\n timeout (fn, delay) {\r\n delay = delay || 0\r\n\r\n // Work out when the event should fire\r\n var time = Animator.timer().now() + delay\r\n\r\n // Add the timeout to the end of the queue\r\n var node = Animator.timeouts.push({ run: fn, time: time })\r\n\r\n // Request another animation frame if we need one\r\n if (Animator.nextDraw === null) {\r\n Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw)\r\n }\r\n\r\n return node\r\n },\r\n\r\n immediate (fn) {\r\n // Add the immediate fn to the end of the queue\r\n var node = Animator.immediates.push(fn)\r\n // Request another animation frame if we need one\r\n if (Animator.nextDraw === null) {\r\n Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw)\r\n }\r\n\r\n return node\r\n },\r\n\r\n cancelFrame (node) {\r\n node != null && Animator.frames.remove(node)\r\n },\r\n\r\n clearTimeout (node) {\r\n node != null && Animator.timeouts.remove(node)\r\n },\r\n\r\n cancelImmediate (node) {\r\n node != null && Animator.immediates.remove(node)\r\n },\r\n\r\n _draw (now) {\r\n // Run all the timeouts we can run, if they are not ready yet, add them\r\n // to the end of the queue immediately! (bad timeouts!!! [sarcasm])\r\n var nextTimeout = null\r\n var lastTimeout = Animator.timeouts.last()\r\n while ((nextTimeout = Animator.timeouts.shift())) {\r\n // Run the timeout if its time, or push it to the end\r\n if (now >= nextTimeout.time) {\r\n nextTimeout.run()\r\n } else {\r\n Animator.timeouts.push(nextTimeout)\r\n }\r\n\r\n // If we hit the last item, we should stop shifting out more items\r\n if (nextTimeout === lastTimeout) break\r\n }\r\n\r\n // Run all of the animation frames\r\n var nextFrame = null\r\n var lastFrame = Animator.frames.last()\r\n while ((nextFrame !== lastFrame) && (nextFrame = Animator.frames.shift())) {\r\n nextFrame.run(now)\r\n }\r\n\r\n var nextImmediate = null\r\n while ((nextImmediate = Animator.immediates.shift())) {\r\n nextImmediate()\r\n }\r\n\r\n // If we have remaining timeouts or frames, draw until we don't anymore\r\n Animator.nextDraw = Animator.timeouts.first() || Animator.frames.first()\r\n ? globals.window.requestAnimationFrame(Animator._draw)\r\n : null\r\n }\r\n}\r\n\r\nexport default Animator\r\n","import { globals } from '../utils/window.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Animator from './Animator.js'\r\nimport EventTarget from '../types/EventTarget.js'\r\n\r\nvar makeSchedule = function (runnerInfo) {\r\n var start = runnerInfo.start\r\n var duration = runnerInfo.runner.duration()\r\n var end = start + duration\r\n return { start: start, duration: duration, end: end, runner: runnerInfo.runner }\r\n}\r\n\r\nconst defaultSource = function () {\r\n const w = globals.window\r\n return (w.performance || w.Date).now()\r\n}\r\n\r\nexport default class Timeline extends EventTarget {\r\n // Construct a new timeline on the given element\r\n constructor (timeSource = defaultSource) {\r\n super()\r\n\r\n this._timeSource = timeSource\r\n\r\n // Store the timing variables\r\n this._startTime = 0\r\n this._speed = 1.0\r\n\r\n // Determines how long a runner is hold in memory. Can be a dt or true/false\r\n this._persist = 0\r\n\r\n // Keep track of the running animations and their starting parameters\r\n this._nextFrame = null\r\n this._paused = true\r\n this._runners = []\r\n this._runnerIds = []\r\n this._lastRunnerId = -1\r\n this._time = 0\r\n this._lastSourceTime = 0\r\n this._lastStepTime = 0\r\n\r\n // Make sure that step is always called in class context\r\n this._step = this._stepFn.bind(this, false)\r\n this._stepImmediate = this._stepFn.bind(this, true)\r\n }\r\n\r\n // schedules a runner on the timeline\r\n schedule (runner, delay, when) {\r\n if (runner == null) {\r\n return this._runners.map(makeSchedule)\r\n }\r\n\r\n // The start time for the next animation can either be given explicitly,\r\n // derived from the current timeline time or it can be relative to the\r\n // last start time to chain animations direclty\r\n\r\n var absoluteStartTime = 0\r\n var endTime = this.getEndTime()\r\n delay = delay || 0\r\n\r\n // Work out when to start the animation\r\n if (when == null || when === 'last' || when === 'after') {\r\n // Take the last time and increment\r\n absoluteStartTime = endTime\r\n } else if (when === 'absolute' || when === 'start') {\r\n absoluteStartTime = delay\r\n delay = 0\r\n } else if (when === 'now') {\r\n absoluteStartTime = this._time\r\n } else if (when === 'relative') {\r\n const runnerInfo = this._runners[runner.id]\r\n if (runnerInfo) {\r\n absoluteStartTime = runnerInfo.start + delay\r\n delay = 0\r\n }\r\n } else {\r\n throw new Error('Invalid value for the \"when\" parameter')\r\n }\r\n\r\n // Manage runner\r\n runner.unschedule()\r\n runner.timeline(this)\r\n\r\n const persist = runner.persist()\r\n const runnerInfo = {\r\n persist: persist === null ? this._persist : persist,\r\n start: absoluteStartTime + delay,\r\n runner\r\n }\r\n\r\n this._lastRunnerId = runner.id\r\n\r\n this._runners.push(runnerInfo)\r\n this._runners.sort((a, b) => a.start - b.start)\r\n this._runnerIds = this._runners.map(info => info.runner.id)\r\n\r\n this.updateTime()._continue()\r\n return this\r\n }\r\n\r\n // Remove the runner from this timeline\r\n unschedule (runner) {\r\n var index = this._runnerIds.indexOf(runner.id)\r\n if (index < 0) return this\r\n\r\n this._runners.splice(index, 1)\r\n this._runnerIds.splice(index, 1)\r\n\r\n runner.timeline(null)\r\n return this\r\n }\r\n\r\n // Calculates the end of the timeline\r\n getEndTime () {\r\n var lastRunnerInfo = this._runners[this._runnerIds.indexOf(this._lastRunnerId)]\r\n var lastDuration = lastRunnerInfo ? lastRunnerInfo.runner.duration() : 0\r\n var lastStartTime = lastRunnerInfo ? lastRunnerInfo.start : 0\r\n return lastStartTime + lastDuration\r\n }\r\n\r\n getEndTimeOfTimeline () {\r\n let lastEndTime = 0\r\n for (var i = 0; i < this._runners.length; i++) {\r\n const runnerInfo = this._runners[i]\r\n var duration = runnerInfo ? runnerInfo.runner.duration() : 0\r\n var startTime = runnerInfo ? runnerInfo.start : 0\r\n const endTime = startTime + duration\r\n if (endTime > lastEndTime) {\r\n lastEndTime = endTime\r\n }\r\n }\r\n return lastEndTime\r\n }\r\n\r\n // Makes sure, that after pausing the time doesn't jump\r\n updateTime () {\r\n if (!this.active()) {\r\n this._lastSourceTime = this._timeSource()\r\n }\r\n return this\r\n }\r\n\r\n play () {\r\n // Now make sure we are not paused and continue the animation\r\n this._paused = false\r\n return this.updateTime()._continue()\r\n }\r\n\r\n pause () {\r\n this._paused = true\r\n return this._continue()\r\n }\r\n\r\n stop () {\r\n // Go to start and pause\r\n this.time(0)\r\n return this.pause()\r\n }\r\n\r\n finish () {\r\n // Go to end and pause\r\n this.time(this.getEndTimeOfTimeline() + 1)\r\n return this.pause()\r\n }\r\n\r\n speed (speed) {\r\n if (speed == null) return this._speed\r\n this._speed = speed\r\n return this\r\n }\r\n\r\n reverse (yes) {\r\n var currentSpeed = this.speed()\r\n if (yes == null) return this.speed(-currentSpeed)\r\n\r\n var positive = Math.abs(currentSpeed)\r\n return this.speed(yes ? positive : -positive)\r\n }\r\n\r\n seek (dt) {\r\n return this.time(this._time + dt)\r\n }\r\n\r\n time (time) {\r\n if (time == null) return this._time\r\n this._time = time\r\n return this._continue(true)\r\n }\r\n\r\n persist (dtOrForever) {\r\n if (dtOrForever == null) return this._persist\r\n this._persist = dtOrForever\r\n return this\r\n }\r\n\r\n source (fn) {\r\n if (fn == null) return this._timeSource\r\n this._timeSource = fn\r\n return this\r\n }\r\n\r\n _stepFn (immediateStep = false) {\r\n // Get the time delta from the last time and update the time\r\n var time = this._timeSource()\r\n var dtSource = time - this._lastSourceTime\r\n\r\n if (immediateStep) dtSource = 0\r\n\r\n var dtTime = this._speed * dtSource + (this._time - this._lastStepTime)\r\n this._lastSourceTime = time\r\n\r\n // Only update the time if we use the timeSource.\r\n // Otherwise use the current time\r\n if (!immediateStep) {\r\n // Update the time\r\n this._time += dtTime\r\n this._time = this._time < 0 ? 0 : this._time\r\n }\r\n this._lastStepTime = this._time\r\n this.fire('time', this._time)\r\n\r\n // This is for the case that the timeline was seeked so that the time\r\n // is now before the startTime of the runner. Thats why we need to set\r\n // the runner to position 0\r\n\r\n // FIXME:\r\n // However, reseting in insertion order leads to bugs. Considering the case,\r\n // where 2 runners change the same attriute but in different times,\r\n // reseting both of them will lead to the case where the later defined\r\n // runner always wins the reset even if the other runner started earlier\r\n // and therefore should win the attribute battle\r\n // this can be solved by reseting them backwards\r\n for (var k = this._runners.length; k--;) {\r\n // Get and run the current runner and ignore it if its inactive\r\n const runnerInfo = this._runners[k]\r\n const runner = runnerInfo.runner\r\n\r\n // Make sure that we give the actual difference\r\n // between runner start time and now\r\n const dtToStart = this._time - runnerInfo.start\r\n\r\n // Dont run runner if not started yet\r\n // and try to reset it\r\n if (dtToStart <= 0) {\r\n runner.reset()\r\n }\r\n }\r\n\r\n // Run all of the runners directly\r\n var runnersLeft = false\r\n for (var i = 0, len = this._runners.length; i < len; i++) {\r\n // Get and run the current runner and ignore it if its inactive\r\n const runnerInfo = this._runners[i]\r\n const runner = runnerInfo.runner\r\n let dt = dtTime\r\n\r\n // Make sure that we give the actual difference\r\n // between runner start time and now\r\n const dtToStart = this._time - runnerInfo.start\r\n\r\n // Dont run runner if not started yet\r\n if (dtToStart <= 0) {\r\n runnersLeft = true\r\n continue\r\n } else if (dtToStart < dt) {\r\n // Adjust dt to make sure that animation is on point\r\n dt = dtToStart\r\n }\r\n\r\n if (!runner.active()) continue\r\n\r\n // If this runner is still going, signal that we need another animation\r\n // frame, otherwise, remove the completed runner\r\n var finished = runner.step(dt).done\r\n if (!finished) {\r\n runnersLeft = true\r\n // continue\r\n } else if (runnerInfo.persist !== true) {\r\n // runner is finished. And runner might get removed\r\n var endTime = runner.duration() - runner.time() + this._time\r\n\r\n if (endTime + runnerInfo.persist < this._time) {\r\n // Delete runner and correct index\r\n runner.unschedule()\r\n --i\r\n --len\r\n }\r\n }\r\n }\r\n\r\n // Basically: we continue when there are runners right from us in time\r\n // when -->, and when runners are left from us when <--\r\n if ((runnersLeft && !(this._speed < 0 && this._time === 0)) || (this._runnerIds.length && this._speed < 0 && this._time > 0)) {\r\n this._continue()\r\n } else {\r\n this.pause()\r\n this.fire('finished')\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Checks if we are running and continues the animation\r\n _continue (immediateStep = false) {\r\n Animator.cancelFrame(this._nextFrame)\r\n this._nextFrame = null\r\n\r\n if (immediateStep) return this._stepImmediate()\r\n if (this._paused) return this\r\n\r\n this._nextFrame = Animator.frame(this._step)\r\n return this\r\n }\r\n\r\n active () {\r\n return !!this._nextFrame\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Element: {\r\n timeline: function (timeline) {\r\n if (timeline == null) {\r\n this._timeline = (this._timeline || new Timeline())\r\n return this._timeline\r\n } else {\r\n this._timeline = timeline\r\n return this\r\n }\r\n }\r\n }\r\n})\r\n","import { Controller, Ease, Stepper } from './Controller.js'\r\nimport { extend, register } from '../utils/adopter.js'\r\nimport { from, to } from '../modules/core/gradiented.js'\r\nimport { getOrigin } from '../utils/utils.js'\r\nimport { noop, timeline } from '../modules/core/defaults.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { rx, ry } from '../modules/core/circled.js'\r\nimport Animator from './Animator.js'\r\nimport Box from '../types/Box.js'\r\nimport EventTarget from '../types/EventTarget.js'\r\nimport Matrix from '../types/Matrix.js'\r\nimport Morphable, { TransformBag } from './Morphable.js'\r\nimport Point from '../types/Point.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Timeline from './Timeline.js'\r\n\r\nexport default class Runner extends EventTarget {\r\n constructor (options) {\r\n super()\r\n\r\n // Store a unique id on the runner, so that we can identify it later\r\n this.id = Runner.id++\r\n\r\n // Ensure a default value\r\n options = options == null\r\n ? timeline.duration\r\n : options\r\n\r\n // Ensure that we get a controller\r\n options = typeof options === 'function'\r\n ? new Controller(options)\r\n : options\r\n\r\n // Declare all of the variables\r\n this._element = null\r\n this._timeline = null\r\n this.done = false\r\n this._queue = []\r\n\r\n // Work out the stepper and the duration\r\n this._duration = typeof options === 'number' && options\r\n this._isDeclarative = options instanceof Controller\r\n this._stepper = this._isDeclarative ? options : new Ease()\r\n\r\n // We copy the current values from the timeline because they can change\r\n this._history = {}\r\n\r\n // Store the state of the runner\r\n this.enabled = true\r\n this._time = 0\r\n this._lastTime = 0\r\n\r\n // At creation, the runner is in reseted state\r\n this._reseted = true\r\n\r\n // Save transforms applied to this runner\r\n this.transforms = new Matrix()\r\n this.transformId = 1\r\n\r\n // Looping variables\r\n this._haveReversed = false\r\n this._reverse = false\r\n this._loopsDone = 0\r\n this._swing = false\r\n this._wait = 0\r\n this._times = 1\r\n\r\n this._frameId = null\r\n\r\n // Stores how long a runner is stored after beeing done\r\n this._persist = this._isDeclarative ? true : null\r\n }\r\n\r\n /*\r\n Runner Definitions\r\n ==================\r\n These methods help us define the runtime behaviour of the Runner or they\r\n help us make new runners from the current runner\r\n */\r\n\r\n element (element) {\r\n if (element == null) return this._element\r\n this._element = element\r\n element._prepareRunner()\r\n return this\r\n }\r\n\r\n timeline (timeline) {\r\n // check explicitly for undefined so we can set the timeline to null\r\n if (typeof timeline === 'undefined') return this._timeline\r\n this._timeline = timeline\r\n return this\r\n }\r\n\r\n animate (duration, delay, when) {\r\n var o = Runner.sanitise(duration, delay, when)\r\n var runner = new Runner(o.duration)\r\n if (this._timeline) runner.timeline(this._timeline)\r\n if (this._element) runner.element(this._element)\r\n return runner.loop(o).schedule(o.delay, o.when)\r\n }\r\n\r\n schedule (timeline, delay, when) {\r\n // The user doesn't need to pass a timeline if we already have one\r\n if (!(timeline instanceof Timeline)) {\r\n when = delay\r\n delay = timeline\r\n timeline = this.timeline()\r\n }\r\n\r\n // If there is no timeline, yell at the user...\r\n if (!timeline) {\r\n throw Error('Runner cannot be scheduled without timeline')\r\n }\r\n\r\n // Schedule the runner on the timeline provided\r\n timeline.schedule(this, delay, when)\r\n return this\r\n }\r\n\r\n unschedule () {\r\n var timeline = this.timeline()\r\n timeline && timeline.unschedule(this)\r\n return this\r\n }\r\n\r\n loop (times, swing, wait) {\r\n // Deal with the user passing in an object\r\n if (typeof times === 'object') {\r\n swing = times.swing\r\n wait = times.wait\r\n times = times.times\r\n }\r\n\r\n // Sanitise the values and store them\r\n this._times = times || Infinity\r\n this._swing = swing || false\r\n this._wait = wait || 0\r\n\r\n // Allow true to be passed\r\n if (this._times === true) { this._times = Infinity }\r\n\r\n return this\r\n }\r\n\r\n delay (delay) {\r\n return this.animate(0, delay)\r\n }\r\n\r\n /*\r\n Basic Functionality\r\n ===================\r\n These methods allow us to attach basic functions to the runner directly\r\n */\r\n\r\n queue (initFn, runFn, retargetFn, isTransform) {\r\n this._queue.push({\r\n initialiser: initFn || noop,\r\n runner: runFn || noop,\r\n retarget: retargetFn,\r\n isTransform: isTransform,\r\n initialised: false,\r\n finished: false\r\n })\r\n var timeline = this.timeline()\r\n timeline && this.timeline()._continue()\r\n return this\r\n }\r\n\r\n during (fn) {\r\n return this.queue(null, fn)\r\n }\r\n\r\n after (fn) {\r\n return this.on('finished', fn)\r\n }\r\n\r\n /*\r\n Runner animation methods\r\n ========================\r\n Control how the animation plays\r\n */\r\n\r\n time (time) {\r\n if (time == null) {\r\n return this._time\r\n }\r\n const dt = time - this._time\r\n this.step(dt)\r\n return this\r\n }\r\n\r\n duration () {\r\n return this._times * (this._wait + this._duration) - this._wait\r\n }\r\n\r\n loops (p) {\r\n var loopDuration = this._duration + this._wait\r\n if (p == null) {\r\n var loopsDone = Math.floor(this._time / loopDuration)\r\n var relativeTime = (this._time - loopsDone * loopDuration)\r\n var position = relativeTime / this._duration\r\n return Math.min(loopsDone + position, this._times)\r\n }\r\n var whole = Math.floor(p)\r\n var partial = p % 1\r\n var time = loopDuration * whole + this._duration * partial\r\n return this.time(time)\r\n }\r\n\r\n persist (dtOrForever) {\r\n if (dtOrForever == null) return this._persist\r\n this._persist = dtOrForever\r\n return this\r\n }\r\n\r\n position (p) {\r\n // Get all of the variables we need\r\n var x = this._time\r\n var d = this._duration\r\n var w = this._wait\r\n var t = this._times\r\n var s = this._swing\r\n var r = this._reverse\r\n var position\r\n\r\n if (p == null) {\r\n /*\r\n This function converts a time to a position in the range [0, 1]\r\n The full explanation can be found in this desmos demonstration\r\n https://www.desmos.com/calculator/u4fbavgche\r\n The logic is slightly simplified here because we can use booleans\r\n */\r\n\r\n // Figure out the value without thinking about the start or end time\r\n const f = function (x) {\r\n var swinging = s * Math.floor(x % (2 * (w + d)) / (w + d))\r\n var backwards = (swinging && !r) || (!swinging && r)\r\n var uncliped = Math.pow(-1, backwards) * (x % (w + d)) / d + backwards\r\n var clipped = Math.max(Math.min(uncliped, 1), 0)\r\n return clipped\r\n }\r\n\r\n // Figure out the value by incorporating the start time\r\n var endTime = t * (w + d) - w\r\n position = x <= 0 ? Math.round(f(1e-5))\r\n : x < endTime ? f(x)\r\n : Math.round(f(endTime - 1e-5))\r\n return position\r\n }\r\n\r\n // Work out the loops done and add the position to the loops done\r\n var loopsDone = Math.floor(this.loops())\r\n var swingForward = s && (loopsDone % 2 === 0)\r\n var forwards = (swingForward && !r) || (r && swingForward)\r\n position = loopsDone + (forwards ? p : 1 - p)\r\n return this.loops(position)\r\n }\r\n\r\n progress (p) {\r\n if (p == null) {\r\n return Math.min(1, this._time / this.duration())\r\n }\r\n return this.time(p * this.duration())\r\n }\r\n\r\n step (dt) {\r\n // If we are inactive, this stepper just gets skipped\r\n if (!this.enabled) return this\r\n\r\n // Update the time and get the new position\r\n dt = dt == null ? 16 : dt\r\n this._time += dt\r\n var position = this.position()\r\n\r\n // Figure out if we need to run the stepper in this frame\r\n var running = this._lastPosition !== position && this._time >= 0\r\n this._lastPosition = position\r\n\r\n // Figure out if we just started\r\n var duration = this.duration()\r\n var justStarted = this._lastTime <= 0 && this._time > 0\r\n var justFinished = this._lastTime < duration && this._time >= duration\r\n\r\n this._lastTime = this._time\r\n if (justStarted) {\r\n this.fire('start', this)\r\n }\r\n\r\n // Work out if the runner is finished set the done flag here so animations\r\n // know, that they are running in the last step (this is good for\r\n // transformations which can be merged)\r\n var declarative = this._isDeclarative\r\n this.done = !declarative && !justFinished && this._time >= duration\r\n\r\n // Runner is running. So its not in reseted state anymore\r\n this._reseted = false\r\n\r\n // Call initialise and the run function\r\n if (running || declarative) {\r\n this._initialise(running)\r\n\r\n // clear the transforms on this runner so they dont get added again and again\r\n this.transforms = new Matrix()\r\n var converged = this._run(declarative ? dt : position)\r\n\r\n this.fire('step', this)\r\n }\r\n // correct the done flag here\r\n // declaritive animations itself know when they converged\r\n this.done = this.done || (converged && declarative)\r\n if (justFinished) {\r\n this.fire('finished', this)\r\n }\r\n return this\r\n }\r\n\r\n reset () {\r\n if (this._reseted) return this\r\n this.time(0)\r\n this._reseted = true\r\n return this\r\n }\r\n\r\n finish () {\r\n return this.step(Infinity)\r\n }\r\n\r\n reverse (reverse) {\r\n this._reverse = reverse == null ? !this._reverse : reverse\r\n return this\r\n }\r\n\r\n ease (fn) {\r\n this._stepper = new Ease(fn)\r\n return this\r\n }\r\n\r\n active (enabled) {\r\n if (enabled == null) return this.enabled\r\n this.enabled = enabled\r\n return this\r\n }\r\n\r\n /*\r\n Private Methods\r\n ===============\r\n Methods that shouldn't be used externally\r\n */\r\n\r\n // Save a morpher to the morpher list so that we can retarget it later\r\n _rememberMorpher (method, morpher) {\r\n this._history[method] = {\r\n morpher: morpher,\r\n caller: this._queue[this._queue.length - 1]\r\n }\r\n\r\n // We have to resume the timeline in case a controller\r\n // is already done without beeing ever run\r\n // This can happen when e.g. this is done:\r\n // anim = el.animate(new SVG.Spring)\r\n // and later\r\n // anim.move(...)\r\n if (this._isDeclarative) {\r\n var timeline = this.timeline()\r\n timeline && timeline.play()\r\n }\r\n }\r\n\r\n // Try to set the target for a morpher if the morpher exists, otherwise\r\n // do nothing and return false\r\n _tryRetarget (method, target, extra) {\r\n if (this._history[method]) {\r\n // if the last method wasnt even initialised, throw it away\r\n if (!this._history[method].caller.initialised) {\r\n const index = this._queue.indexOf(this._history[method].caller)\r\n this._queue.splice(index, 1)\r\n return false\r\n }\r\n\r\n // for the case of transformations, we use the special retarget function\r\n // which has access to the outer scope\r\n if (this._history[method].caller.retarget) {\r\n this._history[method].caller.retarget(target, extra)\r\n // for everything else a simple morpher change is sufficient\r\n } else {\r\n this._history[method].morpher.to(target)\r\n }\r\n\r\n this._history[method].caller.finished = false\r\n var timeline = this.timeline()\r\n timeline && timeline.play()\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n // Run each initialise function in the runner if required\r\n _initialise (running) {\r\n // If we aren't running, we shouldn't initialise when not declarative\r\n if (!running && !this._isDeclarative) return\r\n\r\n // Loop through all of the initialisers\r\n for (var i = 0, len = this._queue.length; i < len; ++i) {\r\n // Get the current initialiser\r\n var current = this._queue[i]\r\n\r\n // Determine whether we need to initialise\r\n var needsIt = this._isDeclarative || (!current.initialised && running)\r\n running = !current.finished\r\n\r\n // Call the initialiser if we need to\r\n if (needsIt && running) {\r\n current.initialiser.call(this)\r\n current.initialised = true\r\n }\r\n }\r\n }\r\n\r\n // Run each run function for the position or dt given\r\n _run (positionOrDt) {\r\n // Run all of the _queue directly\r\n var allfinished = true\r\n for (var i = 0, len = this._queue.length; i < len; ++i) {\r\n // Get the current function to run\r\n var current = this._queue[i]\r\n\r\n // Run the function if its not finished, we keep track of the finished\r\n // flag for the sake of declarative _queue\r\n var converged = current.runner.call(this, positionOrDt)\r\n current.finished = current.finished || (converged === true)\r\n allfinished = allfinished && current.finished\r\n }\r\n\r\n // We report when all of the constructors are finished\r\n return allfinished\r\n }\r\n\r\n addTransform (transform, index) {\r\n this.transforms.lmultiplyO(transform)\r\n return this\r\n }\r\n\r\n clearTransform () {\r\n this.transforms = new Matrix()\r\n return this\r\n }\r\n\r\n // TODO: Keep track of all transformations so that deletion is faster\r\n clearTransformsFromQueue () {\r\n if (!this.done || !this._timeline || !this._timeline._runnerIds.includes(this.id)) {\r\n this._queue = this._queue.filter((item) => {\r\n return !item.isTransform\r\n })\r\n }\r\n }\r\n\r\n static sanitise (duration, delay, when) {\r\n // Initialise the default parameters\r\n var times = 1\r\n var swing = false\r\n var wait = 0\r\n duration = duration || timeline.duration\r\n delay = delay || timeline.delay\r\n when = when || 'last'\r\n\r\n // If we have an object, unpack the values\r\n if (typeof duration === 'object' && !(duration instanceof Stepper)) {\r\n delay = duration.delay || delay\r\n when = duration.when || when\r\n swing = duration.swing || swing\r\n times = duration.times || times\r\n wait = duration.wait || wait\r\n duration = duration.duration || timeline.duration\r\n }\r\n\r\n return {\r\n duration: duration,\r\n delay: delay,\r\n swing: swing,\r\n times: times,\r\n wait: wait,\r\n when: when\r\n }\r\n }\r\n}\r\n\r\nRunner.id = 0\r\n\r\nclass FakeRunner {\r\n constructor (transforms = new Matrix(), id = -1, done = true) {\r\n this.transforms = transforms\r\n this.id = id\r\n this.done = done\r\n }\r\n\r\n clearTransformsFromQueue () { }\r\n}\r\n\r\nextend([ Runner, FakeRunner ], {\r\n mergeWith (runner) {\r\n return new FakeRunner(\r\n runner.transforms.lmultiply(this.transforms),\r\n runner.id\r\n )\r\n }\r\n})\r\n\r\n// FakeRunner.emptyRunner = new FakeRunner()\r\n\r\nconst lmultiply = (last, curr) => last.lmultiplyO(curr)\r\nconst getRunnerTransform = (runner) => runner.transforms\r\n\r\nfunction mergeTransforms () {\r\n // Find the matrix to apply to the element and apply it\r\n const runners = this._transformationRunners.runners\r\n const netTransform = runners\r\n .map(getRunnerTransform)\r\n .reduce(lmultiply, new Matrix())\r\n\r\n this.transform(netTransform)\r\n\r\n this._transformationRunners.merge()\r\n\r\n if (this._transformationRunners.length() === 1) {\r\n this._frameId = null\r\n }\r\n}\r\n\r\nclass RunnerArray {\r\n constructor () {\r\n this.runners = []\r\n this.ids = []\r\n }\r\n\r\n add (runner) {\r\n if (this.runners.includes(runner)) return\r\n const id = runner.id + 1\r\n\r\n this.runners.push(runner)\r\n this.ids.push(id)\r\n\r\n return this\r\n }\r\n\r\n getByID (id) {\r\n return this.runners[this.ids.indexOf(id + 1)]\r\n }\r\n\r\n remove (id) {\r\n const index = this.ids.indexOf(id + 1)\r\n this.ids.splice(index, 1)\r\n this.runners.splice(index, 1)\r\n return this\r\n }\r\n\r\n merge () {\r\n let lastRunner = null\r\n this.runners.forEach((runner, i) => {\r\n\r\n const condition = lastRunner\r\n && runner.done && lastRunner.done\r\n // don't merge runner when persisted on timeline\r\n && (!runner._timeline || !runner._timeline._runnerIds.includes(runner.id))\r\n && (!lastRunner._timeline || !lastRunner._timeline._runnerIds.includes(lastRunner.id))\r\n\r\n if (condition) {\r\n // the +1 happens in the function\r\n this.remove(runner.id)\r\n this.edit(lastRunner.id, runner.mergeWith(lastRunner))\r\n }\r\n\r\n lastRunner = runner\r\n })\r\n\r\n return this\r\n }\r\n\r\n edit (id, newRunner) {\r\n const index = this.ids.indexOf(id + 1)\r\n this.ids.splice(index, 1, id + 1)\r\n this.runners.splice(index, 1, newRunner)\r\n return this\r\n }\r\n\r\n length () {\r\n return this.ids.length\r\n }\r\n\r\n clearBefore (id) {\r\n const deleteCnt = this.ids.indexOf(id + 1) || 1\r\n this.ids.splice(0, deleteCnt, 0)\r\n this.runners.splice(0, deleteCnt, new FakeRunner())\r\n .forEach((r) => r.clearTransformsFromQueue())\r\n return this\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Element: {\r\n animate (duration, delay, when) {\r\n var o = Runner.sanitise(duration, delay, when)\r\n var timeline = this.timeline()\r\n return new Runner(o.duration)\r\n .loop(o)\r\n .element(this)\r\n .timeline(timeline.play())\r\n .schedule(o.delay, o.when)\r\n },\r\n\r\n delay (by, when) {\r\n return this.animate(0, by, when)\r\n },\r\n\r\n // this function searches for all runners on the element and deletes the ones\r\n // which run before the current one. This is because absolute transformations\r\n // overwfrite anything anyway so there is no need to waste time computing\r\n // other runners\r\n _clearTransformRunnersBefore (currentRunner) {\r\n this._transformationRunners.clearBefore(currentRunner.id)\r\n },\r\n\r\n _currentTransform (current) {\r\n return this._transformationRunners.runners\r\n // we need the equal sign here to make sure, that also transformations\r\n // on the same runner which execute before the current transformation are\r\n // taken into account\r\n .filter((runner) => runner.id <= current.id)\r\n .map(getRunnerTransform)\r\n .reduce(lmultiply, new Matrix())\r\n },\r\n\r\n _addRunner (runner) {\r\n this._transformationRunners.add(runner)\r\n\r\n // Make sure that the runner merge is executed at the very end of\r\n // all Animator functions. Thats why we use immediate here to execute\r\n // the merge right after all frames are run\r\n Animator.cancelImmediate(this._frameId)\r\n this._frameId = Animator.immediate(mergeTransforms.bind(this))\r\n },\r\n\r\n _prepareRunner () {\r\n if (this._frameId == null) {\r\n this._transformationRunners = new RunnerArray()\r\n .add(new FakeRunner(new Matrix(this)))\r\n }\r\n }\r\n }\r\n})\r\n\r\nextend(Runner, {\r\n attr (a, v) {\r\n return this.styleAttr('attr', a, v)\r\n },\r\n\r\n // Add animatable styles\r\n css (s, v) {\r\n return this.styleAttr('css', s, v)\r\n },\r\n\r\n styleAttr (type, name, val) {\r\n // apply attributes individually\r\n if (typeof name === 'object') {\r\n for (var key in name) {\r\n this.styleAttr(type, key, name[key])\r\n }\r\n return this\r\n }\r\n\r\n var morpher = new Morphable(this._stepper).to(val)\r\n\r\n this.queue(function () {\r\n morpher = morpher.from(this.element()[type](name))\r\n }, function (pos) {\r\n this.element()[type](name, morpher.at(pos))\r\n return morpher.done()\r\n })\r\n\r\n return this\r\n },\r\n\r\n zoom (level, point) {\r\n if (this._tryRetarget('zoom', to, point)) return this\r\n\r\n var morpher = new Morphable(this._stepper).to(new SVGNumber(level))\r\n\r\n this.queue(function () {\r\n morpher = morpher.from(this.element().zoom())\r\n }, function (pos) {\r\n this.element().zoom(morpher.at(pos), point)\r\n return morpher.done()\r\n }, function (newLevel, newPoint) {\r\n point = newPoint\r\n morpher.to(newLevel)\r\n })\r\n\r\n this._rememberMorpher('zoom', morpher)\r\n return this\r\n },\r\n\r\n /**\r\n ** absolute transformations\r\n **/\r\n\r\n //\r\n // M v -----|-----(D M v = F v)------|-----> T v\r\n //\r\n // 1. define the final state (T) and decompose it (once)\r\n // t = [tx, ty, the, lam, sy, sx]\r\n // 2. on every frame: pull the current state of all previous transforms\r\n // (M - m can change)\r\n // and then write this as m = [tx0, ty0, the0, lam0, sy0, sx0]\r\n // 3. Find the interpolated matrix F(pos) = m + pos * (t - m)\r\n // - Note F(0) = M\r\n // - Note F(1) = T\r\n // 4. Now you get the delta matrix as a result: D = F * inv(M)\r\n\r\n transform (transforms, relative, affine) {\r\n // If we have a declarative function, we should retarget it if possible\r\n relative = transforms.relative || relative\r\n if (this._isDeclarative && !relative && this._tryRetarget('transform', transforms)) {\r\n return this\r\n }\r\n\r\n // Parse the parameters\r\n var isMatrix = Matrix.isMatrixLike(transforms)\r\n affine = transforms.affine != null\r\n ? transforms.affine\r\n : (affine != null ? affine : !isMatrix)\r\n\r\n // Create a morepher and set its type\r\n const morpher = new Morphable(this._stepper)\r\n .type(affine ? TransformBag : Matrix)\r\n\r\n let origin\r\n let element\r\n let current\r\n let currentAngle\r\n let startTransform\r\n\r\n function setup () {\r\n // make sure element and origin is defined\r\n element = element || this.element()\r\n origin = origin || getOrigin(transforms, element)\r\n\r\n startTransform = new Matrix(relative ? undefined : element)\r\n\r\n // add the runner to the element so it can merge transformations\r\n element._addRunner(this)\r\n\r\n // Deactivate all transforms that have run so far if we are absolute\r\n if (!relative) {\r\n element._clearTransformRunnersBefore(this)\r\n }\r\n }\r\n\r\n function run (pos) {\r\n // clear all other transforms before this in case something is saved\r\n // on this runner. We are absolute. We dont need these!\r\n if (!relative) this.clearTransform()\r\n\r\n const { x, y } = new Point(origin).transform(element._currentTransform(this))\r\n\r\n let target = new Matrix({ ...transforms, origin: [ x, y ] })\r\n let start = this._isDeclarative && current\r\n ? current\r\n : startTransform\r\n\r\n if (affine) {\r\n target = target.decompose(x, y)\r\n start = start.decompose(x, y)\r\n\r\n // Get the current and target angle as it was set\r\n const rTarget = target.rotate\r\n const rCurrent = start.rotate\r\n\r\n // Figure out the shortest path to rotate directly\r\n const possibilities = [ rTarget - 360, rTarget, rTarget + 360 ]\r\n const distances = possibilities.map(a => Math.abs(a - rCurrent))\r\n const shortest = Math.min(...distances)\r\n const index = distances.indexOf(shortest)\r\n target.rotate = possibilities[index]\r\n }\r\n\r\n if (relative) {\r\n // we have to be careful here not to overwrite the rotation\r\n // with the rotate method of Matrix\r\n if (!isMatrix) {\r\n target.rotate = transforms.rotate || 0\r\n }\r\n if (this._isDeclarative && currentAngle) {\r\n start.rotate = currentAngle\r\n }\r\n }\r\n\r\n morpher.from(start)\r\n morpher.to(target)\r\n\r\n const affineParameters = morpher.at(pos)\r\n currentAngle = affineParameters.rotate\r\n current = new Matrix(affineParameters)\r\n\r\n this.addTransform(current)\r\n element._addRunner(this)\r\n return morpher.done()\r\n }\r\n\r\n function retarget (newTransforms) {\r\n // only get a new origin if it changed since the last call\r\n if (\r\n (newTransforms.origin || 'center').toString()\r\n !== (transforms.origin || 'center').toString()\r\n ) {\r\n origin = getOrigin(transforms, element)\r\n }\r\n\r\n // overwrite the old transformations with the new ones\r\n transforms = { ...newTransforms, origin }\r\n }\r\n\r\n this.queue(setup, run, retarget, true)\r\n this._isDeclarative && this._rememberMorpher('transform', morpher)\r\n return this\r\n },\r\n\r\n // Animatable x-axis\r\n x (x, relative) {\r\n return this._queueNumber('x', x)\r\n },\r\n\r\n // Animatable y-axis\r\n y (y) {\r\n return this._queueNumber('y', y)\r\n },\r\n\r\n dx (x = 0) {\r\n return this._queueNumberDelta('x', x)\r\n },\r\n\r\n dy (y = 0) {\r\n return this._queueNumberDelta('y', y)\r\n },\r\n\r\n dmove (x, y) {\r\n return this.dx(x).dy(y)\r\n },\r\n\r\n _queueNumberDelta (method, to) {\r\n to = new SVGNumber(to)\r\n\r\n // Try to change the target if we have this method already registerd\r\n if (this._tryRetarget(method, to)) return this\r\n\r\n // Make a morpher and queue the animation\r\n var morpher = new Morphable(this._stepper).to(to)\r\n var from = null\r\n this.queue(function () {\r\n from = this.element()[method]()\r\n morpher.from(from)\r\n morpher.to(from + to)\r\n }, function (pos) {\r\n this.element()[method](morpher.at(pos))\r\n return morpher.done()\r\n }, function (newTo) {\r\n morpher.to(from + new SVGNumber(newTo))\r\n })\r\n\r\n // Register the morpher so that if it is changed again, we can retarget it\r\n this._rememberMorpher(method, morpher)\r\n return this\r\n },\r\n\r\n _queueObject (method, to) {\r\n // Try to change the target if we have this method already registerd\r\n if (this._tryRetarget(method, to)) return this\r\n\r\n // Make a morpher and queue the animation\r\n var morpher = new Morphable(this._stepper).to(to)\r\n this.queue(function () {\r\n morpher.from(this.element()[method]())\r\n }, function (pos) {\r\n this.element()[method](morpher.at(pos))\r\n return morpher.done()\r\n })\r\n\r\n // Register the morpher so that if it is changed again, we can retarget it\r\n this._rememberMorpher(method, morpher)\r\n return this\r\n },\r\n\r\n _queueNumber (method, value) {\r\n return this._queueObject(method, new SVGNumber(value))\r\n },\r\n\r\n // Animatable center x-axis\r\n cx (x) {\r\n return this._queueNumber('cx', x)\r\n },\r\n\r\n // Animatable center y-axis\r\n cy (y) {\r\n return this._queueNumber('cy', y)\r\n },\r\n\r\n // Add animatable move\r\n move (x, y) {\r\n return this.x(x).y(y)\r\n },\r\n\r\n // Add animatable center\r\n center (x, y) {\r\n return this.cx(x).cy(y)\r\n },\r\n\r\n // Add animatable size\r\n size (width, height) {\r\n // animate bbox based size for all other elements\r\n var box\r\n\r\n if (!width || !height) {\r\n box = this._element.bbox()\r\n }\r\n\r\n if (!width) {\r\n width = box.width / box.height * height\r\n }\r\n\r\n if (!height) {\r\n height = box.height / box.width * width\r\n }\r\n\r\n return this\r\n .width(width)\r\n .height(height)\r\n },\r\n\r\n // Add animatable width\r\n width (width) {\r\n return this._queueNumber('width', width)\r\n },\r\n\r\n // Add animatable height\r\n height (height) {\r\n return this._queueNumber('height', height)\r\n },\r\n\r\n // Add animatable plot\r\n plot (a, b, c, d) {\r\n // Lines can be plotted with 4 arguments\r\n if (arguments.length === 4) {\r\n return this.plot([ a, b, c, d ])\r\n }\r\n\r\n if (this._tryRetarget('plot', a)) return this\r\n\r\n var morpher = new Morphable(this._stepper)\r\n .type(this._element.MorphArray).to(a)\r\n\r\n this.queue(function () {\r\n morpher.from(this._element.array())\r\n }, function (pos) {\r\n this._element.plot(morpher.at(pos))\r\n return morpher.done()\r\n })\r\n\r\n this._rememberMorpher('plot', morpher)\r\n return this\r\n },\r\n\r\n // Add leading method\r\n leading (value) {\r\n return this._queueNumber('leading', value)\r\n },\r\n\r\n // Add animatable viewbox\r\n viewbox (x, y, width, height) {\r\n return this._queueObject('viewbox', new Box(x, y, width, height))\r\n },\r\n\r\n update (o) {\r\n if (typeof o !== 'object') {\r\n return this.update({\r\n offset: arguments[0],\r\n color: arguments[1],\r\n opacity: arguments[2]\r\n })\r\n }\r\n\r\n if (o.opacity != null) this.attr('stop-opacity', o.opacity)\r\n if (o.color != null) this.attr('stop-color', o.color)\r\n if (o.offset != null) this.attr('offset', o.offset)\r\n\r\n return this\r\n }\r\n})\r\n\r\nextend(Runner, { rx, ry, from, to })\r\nregister(Runner, 'Runner')\r\n","import {\r\n adopt,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { ns, svgjs, xlink, xmlns } from '../modules/core/namespaces.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\nimport Defs from './Defs.js'\r\nimport { globals } from '../utils/window.js'\r\n\r\nexport default class Svg extends Container {\r\n constructor (node) {\r\n super(nodeOrNew('svg', node), node)\r\n this.namespace()\r\n }\r\n\r\n isRoot () {\r\n return !this.node.parentNode\r\n || !(this.node.parentNode instanceof globals.window.SVGElement)\r\n || this.node.parentNode.nodeName === '#document'\r\n }\r\n\r\n // Check if this is a root svg\r\n // If not, call docs from this element\r\n root () {\r\n if (this.isRoot()) return this\r\n return super.root()\r\n }\r\n\r\n // Add namespaces\r\n namespace () {\r\n if (!this.isRoot()) return this.root().namespace()\r\n return this\r\n .attr({ xmlns: ns, version: '1.1' })\r\n .attr('xmlns:xlink', xlink, xmlns)\r\n .attr('xmlns:svgjs', svgjs, xmlns)\r\n }\r\n\r\n // Creates and returns defs element\r\n defs () {\r\n if (!this.isRoot()) return this.root().defs()\r\n\r\n return adopt(this.node.querySelector('defs'))\r\n || this.put(new Defs())\r\n }\r\n\r\n // custom parent method\r\n parent (type) {\r\n if (this.isRoot()) {\r\n return this.node.parentNode.nodeName === '#document'\r\n ? null\r\n : adopt(this.node.parentNode)\r\n }\r\n\r\n return super.parent(type)\r\n }\r\n\r\n clear () {\r\n // remove children\r\n while (this.node.hasChildNodes()) {\r\n this.node.removeChild(this.node.lastChild)\r\n }\r\n\r\n // remove defs reference\r\n delete this._defs\r\n\r\n return this\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create nested svg document\r\n nested: wrapWithAttrCheck(function () {\r\n return this.put(new Svg())\r\n })\r\n }\r\n})\r\n\r\nregister(Svg, 'Svg', true)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class Symbol extends Container {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('symbol', node), node)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n symbol: wrapWithAttrCheck(function () {\r\n return this.put(new Symbol())\r\n })\r\n }\r\n})\r\n\r\nregister(Symbol, 'Symbol')\r\n","import { globals } from '../../utils/window.js'\r\n\r\n// Create plain text node\r\nexport function plain (text) {\r\n // clear if build mode is disabled\r\n if (this._build === false) {\r\n this.clear()\r\n }\r\n\r\n // create text node\r\n this.node.appendChild(globals.document.createTextNode(text))\r\n\r\n return this\r\n}\r\n\r\n// Get length of text element\r\nexport function length () {\r\n return this.node.getComputedTextLength()\r\n}\r\n","import {\r\n adopt,\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Shape from './Shape.js'\r\nimport { globals } from '../utils/window.js'\r\nimport * as textable from '../modules/core/textable.js'\r\n\r\nexport default class Text extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('text', node), node)\r\n\r\n this.dom.leading = new SVGNumber(1.3) // store leading value for rebuilding\r\n this._rebuild = true // enable automatic updating of dy values\r\n this._build = false // disable build mode for adding multiple lines\r\n }\r\n\r\n // Move over x-axis\r\n // Text is moved its bounding box\r\n // text-anchor does NOT matter\r\n x (x, box = this.bbox()) {\r\n if (x == null) {\r\n return box.x\r\n }\r\n\r\n return this.attr('x', this.attr('x') + x - box.x)\r\n }\r\n\r\n // Move over y-axis\r\n y (y, box = this.bbox()) {\r\n if (y == null) {\r\n return box.y\r\n }\r\n\r\n return this.attr('y', this.attr('y') + y - box.y)\r\n }\r\n\r\n move (x, y, box = this.bbox()) {\r\n return this.x(x, box).y(y, box)\r\n }\r\n\r\n // Move center over x-axis\r\n cx (x, box = this.bbox()) {\r\n if (x == null) {\r\n return box.cx\r\n }\r\n\r\n return this.attr('x', this.attr('x') + x - box.cx)\r\n }\r\n\r\n // Move center over y-axis\r\n cy (y, box = this.bbox()) {\r\n if (y == null) {\r\n return box.cy\r\n }\r\n\r\n return this.attr('y', this.attr('y') + y - box.cy)\r\n }\r\n\r\n center (x, y, box = this.bbox()) {\r\n return this.cx(x, box).cy(y, box)\r\n }\r\n\r\n // Set the text content\r\n text (text) {\r\n // act as getter\r\n if (text === undefined) {\r\n var children = this.node.childNodes\r\n var firstLine = 0\r\n text = ''\r\n\r\n for (var i = 0, len = children.length; i < len; ++i) {\r\n // skip textPaths - they are no lines\r\n if (children[i].nodeName === 'textPath') {\r\n if (i === 0) firstLine = 1\r\n continue\r\n }\r\n\r\n // add newline if its not the first child and newLined is set to true\r\n if (i !== firstLine && children[i].nodeType !== 3 && adopt(children[i]).dom.newLined === true) {\r\n text += '\\n'\r\n }\r\n\r\n // add content of this node\r\n text += children[i].textContent\r\n }\r\n\r\n return text\r\n }\r\n\r\n // remove existing content\r\n this.clear().build(true)\r\n\r\n if (typeof text === 'function') {\r\n // call block\r\n text.call(this, this)\r\n } else {\r\n // store text and make sure text is not blank\r\n text = text.split('\\n')\r\n\r\n // build new lines\r\n for (var j = 0, jl = text.length; j < jl; j++) {\r\n this.tspan(text[j]).newLine()\r\n }\r\n }\r\n\r\n // disable build mode and rebuild lines\r\n return this.build(false).rebuild()\r\n }\r\n\r\n // Set / get leading\r\n leading (value) {\r\n // act as getter\r\n if (value == null) {\r\n return this.dom.leading\r\n }\r\n\r\n // act as setter\r\n this.dom.leading = new SVGNumber(value)\r\n\r\n return this.rebuild()\r\n }\r\n\r\n // Rebuild appearance type\r\n rebuild (rebuild) {\r\n // store new rebuild flag if given\r\n if (typeof rebuild === 'boolean') {\r\n this._rebuild = rebuild\r\n }\r\n\r\n // define position of all lines\r\n if (this._rebuild) {\r\n var self = this\r\n var blankLineOffset = 0\r\n var leading = this.dom.leading\r\n\r\n this.each(function () {\r\n var fontSize = globals.window.getComputedStyle(this.node)\r\n .getPropertyValue('font-size')\r\n var dy = leading * new SVGNumber(fontSize)\r\n\r\n if (this.dom.newLined) {\r\n this.attr('x', self.attr('x'))\r\n\r\n if (this.text() === '\\n') {\r\n blankLineOffset += dy\r\n } else {\r\n this.attr('dy', dy + blankLineOffset)\r\n blankLineOffset = 0\r\n }\r\n }\r\n })\r\n\r\n this.fire('rebuild')\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Enable / disable build mode\r\n build (build) {\r\n this._build = !!build\r\n return this\r\n }\r\n\r\n // overwrite method from parent to set data properly\r\n setData (o) {\r\n this.dom = o\r\n this.dom.leading = new SVGNumber(o.leading || 1.3)\r\n return this\r\n }\r\n}\r\n\r\nextend(Text, textable)\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create text element\r\n text: wrapWithAttrCheck(function (text) {\r\n return this.put(new Text()).text(text)\r\n }),\r\n\r\n // Create plain text element\r\n plain: wrapWithAttrCheck(function (text) {\r\n return this.put(new Text()).plain(text)\r\n })\r\n }\r\n})\r\n\r\nregister(Text, 'Text')\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { globals } from '../utils/window.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Text from './Text.js'\r\nimport * as textable from '../modules/core/textable.js'\r\n\r\nexport default class Tspan extends Text {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('tspan', node), node)\r\n }\r\n\r\n // Set text content\r\n text (text) {\r\n if (text == null) return this.node.textContent + (this.dom.newLined ? '\\n' : '')\r\n\r\n typeof text === 'function' ? text.call(this, this) : this.plain(text)\r\n\r\n return this\r\n }\r\n\r\n // Shortcut dx\r\n dx (dx) {\r\n return this.attr('dx', dx)\r\n }\r\n\r\n // Shortcut dy\r\n dy (dy) {\r\n return this.attr('dy', dy)\r\n }\r\n\r\n x (x) {\r\n return this.attr('x', x)\r\n }\r\n\r\n y (y) {\r\n return this.attr('x', y)\r\n }\r\n\r\n move (x, y) {\r\n return this.x(x).y(y)\r\n }\r\n\r\n // Create new line\r\n newLine () {\r\n // fetch text parent\r\n var t = this.parent(Text)\r\n\r\n // mark new line\r\n this.dom.newLined = true\r\n\r\n var fontSize = globals.window.getComputedStyle(this.node)\r\n .getPropertyValue('font-size')\r\n var dy = t.dom.leading * new SVGNumber(fontSize)\r\n\r\n // apply new position\r\n return this.dy(dy).attr('x', t.x())\r\n }\r\n}\r\n\r\nextend(Tspan, textable)\r\n\r\nregisterMethods({\r\n Tspan: {\r\n tspan: wrapWithAttrCheck(function (text) {\r\n var tspan = new Tspan()\r\n\r\n // clear if build mode is disabled\r\n if (!this._build) {\r\n this.clear()\r\n }\r\n\r\n // add new tspan\r\n this.node.appendChild(tspan.node)\r\n\r\n return tspan.text(text)\r\n })\r\n }\r\n})\r\n\r\nregister(Tspan, 'Tspan')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class ClipPath extends Container {\r\n constructor (node) {\r\n super(nodeOrNew('clipPath', node), node)\r\n }\r\n\r\n // Unclip all clipped elements and remove itself\r\n remove () {\r\n // unclip all targets\r\n this.targets().forEach(function (el) {\r\n el.unclip()\r\n })\r\n\r\n // remove clipPath from parent\r\n return super.remove()\r\n }\r\n\r\n targets () {\r\n return baseFind('svg [clip-path*=\"' + this.id() + '\"]')\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create clipping element\r\n clip: wrapWithAttrCheck(function () {\r\n return this.defs().put(new ClipPath())\r\n })\r\n },\r\n Element: {\r\n // Distribute clipPath to svg element\r\n clipWith (element) {\r\n // use given clip or create a new one\r\n const clipper = element instanceof ClipPath\r\n ? element\r\n : this.parent().clip().add(element)\r\n\r\n // apply mask\r\n return this.attr('clip-path', 'url(\"#' + clipper.id() + '\")')\r\n },\r\n\r\n // Unclip element\r\n unclip () {\r\n return this.attr('clip-path', null)\r\n },\r\n\r\n clipper () {\r\n return this.reference('clip-path')\r\n }\r\n }\r\n})\r\n\r\nregister(ClipPath, 'ClipPath')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Element from './Element.js'\r\n\r\nexport default class ForeignObject extends Element {\r\n constructor (node) {\r\n super(nodeOrNew('foreignObject', node), node)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n foreignObject: wrapWithAttrCheck(function (width, height) {\r\n return this.put(new ForeignObject()).size(width, height)\r\n })\r\n }\r\n})\r\n\r\nregister(ForeignObject, 'ForeignObject')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\nimport Matrix from '../types/Matrix.js'\r\nimport Point from '../types/Point.js'\r\n\r\nexport default class G extends Container {\r\n constructor (node) {\r\n super(nodeOrNew('g', node), node)\r\n }\r\n\r\n x (x, box = this.bbox()) {\r\n if (x == null) return box.x\r\n return this.move(x, box.y, box)\r\n }\r\n\r\n y (y, box = this.bbox()) {\r\n if (y == null) return box.y\r\n return this.move(box.x, y, box)\r\n }\r\n\r\n move (x = 0, y = 0, box = this.bbox()) {\r\n const dx = x - box.x\r\n const dy = y - box.y\r\n\r\n return this.dmove(dx, dy)\r\n }\r\n\r\n dx (dx) {\r\n return this.dmove(dx, 0)\r\n }\r\n\r\n dy (dy) {\r\n return this.dmove(0, dy)\r\n }\r\n\r\n dmove (dx, dy) {\r\n this.children().forEach((child, i) => {\r\n // Get the childs bbox\r\n const bbox = child.bbox()\r\n // Get childs matrix\r\n const m = new Matrix(child)\r\n // Translate childs matrix by amount and\r\n // transform it back into parents space\r\n const matrix = m.translate(dx, dy).transform(m.inverse())\r\n // Calculate new x and y from old box\r\n const p = new Point(bbox.x, bbox.y).transform(matrix)\r\n // Move element\r\n child.move(p.x, p.y)\r\n })\r\n\r\n return this\r\n }\r\n\r\n width (width, box = this.bbox()) {\r\n if (width == null) return box.width\r\n return this.size(width, box.height, box)\r\n }\r\n\r\n height (height, box = this.bbox()) {\r\n if (height == null) return box.height\r\n return this.size(box.width, height, box)\r\n }\r\n\r\n size (width, height, box = this.bbox()) {\r\n const p = proportionalSize(this, width, height, box)\r\n const scaleX = p.width / box.width\r\n const scaleY = p.height / box.height\r\n\r\n this.children().forEach((child, i) => {\r\n const o = new Point(box).transform(new Matrix(child).inverse())\r\n child.scale(scaleX, scaleY, o.x, o.y)\r\n })\r\n\r\n return this\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a group element\r\n group: wrapWithAttrCheck(function () {\r\n return this.put(new G())\r\n })\r\n }\r\n})\r\n\r\nregister(G, 'G')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class A extends Container {\r\n constructor (node) {\r\n super(nodeOrNew('a', node), node)\r\n }\r\n\r\n // Link url\r\n to (url) {\r\n return this.attr('href', url, xlink)\r\n }\r\n\r\n // Link target attribute\r\n target (target) {\r\n return this.attr('target', target)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a hyperlink element\r\n link: wrapWithAttrCheck(function (url) {\r\n return this.put(new A()).to(url)\r\n })\r\n },\r\n Element: {\r\n // Create a hyperlink element\r\n linkTo: function (url) {\r\n var link = new A()\r\n\r\n if (typeof url === 'function') {\r\n url.call(link, link)\r\n } else {\r\n link.to(url)\r\n }\r\n\r\n return this.parent().put(link).put(this)\r\n }\r\n }\r\n})\r\n\r\nregister(A, 'A')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class Mask extends Container {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('mask', node), node)\r\n }\r\n\r\n // Unmask all masked elements and remove itself\r\n remove () {\r\n // unmask all targets\r\n this.targets().forEach(function (el) {\r\n el.unmask()\r\n })\r\n\r\n // remove mask from parent\r\n return super.remove()\r\n }\r\n\r\n targets () {\r\n return baseFind('svg [mask*=\"' + this.id() + '\"]')\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n mask: wrapWithAttrCheck(function () {\r\n return this.defs().put(new Mask())\r\n })\r\n },\r\n Element: {\r\n // Distribute mask to svg element\r\n maskWith (element) {\r\n // use given mask or create a new one\r\n var masker = element instanceof Mask\r\n ? element\r\n : this.parent().mask().add(element)\r\n\r\n // apply mask\r\n return this.attr('mask', 'url(\"#' + masker.id() + '\")')\r\n },\r\n\r\n // Unmask element\r\n unmask () {\r\n return this.attr('mask', null)\r\n },\r\n\r\n masker () {\r\n return this.reference('mask')\r\n }\r\n }\r\n})\r\n\r\nregister(Mask, 'Mask')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { unCamelCase } from '../utils/utils.js'\r\nimport Element from './Element.js'\r\n\r\nfunction cssRule (selector, rule) {\r\n if (!selector) return ''\r\n if (!rule) return selector\r\n\r\n var ret = selector + '{'\r\n\r\n for (var i in rule) {\r\n ret += unCamelCase(i) + ':' + rule[i] + ';'\r\n }\r\n\r\n ret += '}'\r\n\r\n return ret\r\n}\r\n\r\nexport default class Style extends Element {\r\n constructor (node) {\r\n super(nodeOrNew('style', node), node)\r\n }\r\n\r\n addText (w = '') {\r\n this.node.textContent += w\r\n return this\r\n }\r\n\r\n font (name, src, params = {}) {\r\n return this.rule('@font-face', {\r\n fontFamily: name,\r\n src: src,\r\n ...params\r\n })\r\n }\r\n\r\n rule (selector, obj) {\r\n return this.addText(cssRule(selector, obj))\r\n }\r\n}\r\n\r\nregisterMethods('Dom', {\r\n style: wrapWithAttrCheck(function (selector, obj) {\r\n return this.put(new Style()).rule(selector, obj)\r\n }),\r\n fontface: wrapWithAttrCheck(function (name, src, params) {\r\n return this.put(new Style()).font(name, src, params)\r\n })\r\n})\r\n\r\nregister(Style, 'Style')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Path from './Path.js'\r\nimport PathArray from '../types/PathArray.js'\r\nimport Text from './Text.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class TextPath extends Text {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('textPath', node), node)\r\n }\r\n\r\n // return the array of the path track element\r\n array () {\r\n var track = this.track()\r\n\r\n return track ? track.array() : null\r\n }\r\n\r\n // Plot path if any\r\n plot (d) {\r\n var track = this.track()\r\n var pathArray = null\r\n\r\n if (track) {\r\n pathArray = track.plot(d)\r\n }\r\n\r\n return (d == null) ? pathArray : this\r\n }\r\n\r\n // Get the path element\r\n track () {\r\n return this.reference('href')\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n textPath: wrapWithAttrCheck(function (text, path) {\r\n // Convert text to instance if needed\r\n if (!(text instanceof Text)) {\r\n text = this.text(text)\r\n }\r\n\r\n return text.path(path)\r\n })\r\n },\r\n Text: {\r\n // Create path for text to run on\r\n path: wrapWithAttrCheck(function (track, importNodes = true) {\r\n var textPath = new TextPath()\r\n\r\n // if track is a path, reuse it\r\n if (!(track instanceof Path)) {\r\n // create path element\r\n track = this.defs().path(track)\r\n }\r\n\r\n // link textPath to path and add content\r\n textPath.attr('href', '#' + track, xlink)\r\n\r\n // Transplant all nodes from text to textPath\r\n let node\r\n if (importNodes) {\r\n while ((node = this.node.firstChild)) {\r\n textPath.node.appendChild(node)\r\n }\r\n }\r\n\r\n // add textPath element as child node and return textPath\r\n return this.put(textPath)\r\n }),\r\n\r\n // Get the textPath children\r\n textPath () {\r\n return this.findOne('textPath')\r\n }\r\n },\r\n Path: {\r\n // creates a textPath from this path\r\n text: wrapWithAttrCheck(function (text) {\r\n // Convert text to instance if needed\r\n if (!(text instanceof Text)) {\r\n text = new Text().addTo(this.parent()).text(text)\r\n }\r\n\r\n // Create textPath from text and path and return\r\n return text.path(this)\r\n }),\r\n\r\n targets () {\r\n return baseFind('svg [href*=\"' + this.id() + '\"]')\r\n }\r\n }\r\n})\r\n\r\nTextPath.prototype.MorphArray = PathArray\r\nregister(TextPath, 'TextPath')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Shape from './Shape.js'\r\n\r\nexport default class Use extends Shape {\r\n constructor (node) {\r\n super(nodeOrNew('use', node), node)\r\n }\r\n\r\n // Use element as a reference\r\n element (element, file) {\r\n // Set lined element\r\n return this.attr('href', (file || '') + '#' + element, xlink)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a use element\r\n use: wrapWithAttrCheck(function (element, file) {\r\n return this.put(new Use()).element(element, file)\r\n })\r\n }\r\n})\r\n\r\nregister(Use, 'Use')\r\n","/* Optional Modules */\r\nimport './modules/optional/arrange.js'\r\nimport './modules/optional/class.js'\r\nimport './modules/optional/css.js'\r\nimport './modules/optional/data.js'\r\nimport './modules/optional/memory.js'\r\nimport './modules/optional/sugar.js'\r\nimport './modules/optional/transform.js'\r\n\r\nimport { extend, makeInstance } from './utils/adopter.js'\r\nimport { getMethodNames, getMethodsFor } from './utils/methods.js'\r\nimport Box from './types/Box.js'\r\nimport Circle from './elements/Circle.js'\r\nimport Color from './types/Color.js'\r\nimport Container from './elements/Container.js'\r\nimport Defs from './elements/Defs.js'\r\nimport Dom from './elements/Dom.js'\r\nimport Element from './elements/Element.js'\r\nimport Ellipse from './elements/Ellipse.js'\r\nimport EventTarget from './types/EventTarget.js'\r\nimport Gradient from './elements/Gradient.js'\r\nimport Image from './elements/Image.js'\r\nimport Line from './elements/Line.js'\r\nimport List from './types/List.js'\r\nimport Marker from './elements/Marker.js'\r\nimport Matrix from './types/Matrix.js'\r\nimport Morphable, {\r\n NonMorphable,\r\n ObjectBag,\r\n TransformBag,\r\n makeMorphable,\r\n registerMorphableType\r\n} from './animation/Morphable.js'\r\nimport Path from './elements/Path.js'\r\nimport PathArray from './types/PathArray.js'\r\nimport Pattern from './elements/Pattern.js'\r\nimport PointArray from './types/PointArray.js'\r\nimport Polygon from './elements/Polygon.js'\r\nimport Polyline from './elements/Polyline.js'\r\nimport Rect from './elements/Rect.js'\r\nimport Runner from './animation/Runner.js'\r\nimport SVGArray from './types/SVGArray.js'\r\nimport SVGNumber from './types/SVGNumber.js'\r\nimport Shape from './elements/Shape.js'\r\nimport Svg from './elements/Svg.js'\r\nimport Symbol from './elements/Symbol.js'\r\nimport Text from './elements/Text.js'\r\nimport Tspan from './elements/Tspan.js'\r\nimport * as defaults from './modules/core/defaults.js'\r\nimport * as utils from './utils/utils.js'\r\nimport * as namespaces from './modules/core/namespaces.js'\r\nimport * as regex from './modules/core/regex.js'\r\n\r\nexport {\r\n Morphable,\r\n registerMorphableType,\r\n makeMorphable,\r\n TransformBag,\r\n ObjectBag,\r\n NonMorphable\r\n}\r\n\r\nexport { defaults, utils, namespaces, regex }\r\nexport const SVG = makeInstance\r\nexport { default as parser } from './modules/core/parser.js'\r\nexport { default as find } from './modules/core/selector.js'\r\nexport * from './modules/core/event.js'\r\nexport * from './utils/adopter.js'\r\nexport { registerWindow } from './utils/window.js'\r\n\r\n/* Animation Modules */\r\nexport { default as Animator } from './animation/Animator.js'\r\nexport { Controller, Ease, PID, Spring, easing } from './animation/Controller.js'\r\nexport { default as Queue } from './animation/Queue.js'\r\nexport { default as Runner } from './animation/Runner.js'\r\nexport { default as Timeline } from './animation/Timeline.js'\r\n\r\n/* Types */\r\nexport { default as Array } from './types/SVGArray.js'\r\nexport { default as Box } from './types/Box.js'\r\nexport { default as Color } from './types/Color.js'\r\nexport { default as EventTarget } from './types/EventTarget.js'\r\nexport { default as Matrix } from './types/Matrix.js'\r\nexport { default as Number } from './types/SVGNumber.js'\r\nexport { default as PathArray } from './types/PathArray.js'\r\nexport { default as Point } from './types/Point.js'\r\nexport { default as PointArray } from './types/PointArray.js'\r\nexport { default as List } from './types/List.js'\r\n\r\n/* Elements */\r\nexport { default as Circle } from './elements/Circle.js'\r\nexport { default as ClipPath } from './elements/ClipPath.js'\r\nexport { default as Container } from './elements/Container.js'\r\nexport { default as Defs } from './elements/Defs.js'\r\nexport { default as Dom } from './elements/Dom.js'\r\nexport { default as Element } from './elements/Element.js'\r\nexport { default as Ellipse } from './elements/Ellipse.js'\r\nexport { default as ForeignObject } from './elements/ForeignObject.js'\r\nexport { default as Gradient } from './elements/Gradient.js'\r\nexport { default as G } from './elements/G.js'\r\nexport { default as A } from './elements/A.js'\r\nexport { default as Image } from './elements/Image.js'\r\nexport { default as Line } from './elements/Line.js'\r\nexport { default as Marker } from './elements/Marker.js'\r\nexport { default as Mask } from './elements/Mask.js'\r\nexport { default as Path } from './elements/Path.js'\r\nexport { default as Pattern } from './elements/Pattern.js'\r\nexport { default as Polygon } from './elements/Polygon.js'\r\nexport { default as Polyline } from './elements/Polyline.js'\r\nexport { default as Rect } from './elements/Rect.js'\r\nexport { default as Shape } from './elements/Shape.js'\r\nexport { default as Stop } from './elements/Stop.js'\r\nexport { default as Style } from './elements/Style.js'\r\nexport { default as Svg } from './elements/Svg.js'\r\nexport { default as Symbol } from './elements/Symbol.js'\r\nexport { default as Text } from './elements/Text.js'\r\nexport { default as TextPath } from './elements/TextPath.js'\r\nexport { default as Tspan } from './elements/Tspan.js'\r\nexport { default as Use } from './elements/Use.js'\r\n\r\nextend([\r\n Svg,\r\n Symbol,\r\n Image,\r\n Pattern,\r\n Marker\r\n], getMethodsFor('viewbox'))\r\n\r\nextend([\r\n Line,\r\n Polyline,\r\n Polygon,\r\n Path\r\n], getMethodsFor('marker'))\r\n\r\nextend(Text, getMethodsFor('Text'))\r\nextend(Path, getMethodsFor('Path'))\r\n\r\nextend(Defs, getMethodsFor('Defs'))\r\n\r\nextend([\r\n Text,\r\n Tspan\r\n], getMethodsFor('Tspan'))\r\n\r\nextend([\r\n Rect,\r\n Ellipse,\r\n Circle,\r\n Gradient\r\n], getMethodsFor('radius'))\r\n\r\nextend(EventTarget, getMethodsFor('EventTarget'))\r\nextend(Dom, getMethodsFor('Dom'))\r\nextend(Element, getMethodsFor('Element'))\r\nextend(Shape, getMethodsFor('Shape'))\r\n// extend(Element, getConstructor('Memory'))\r\nextend(Container, getMethodsFor('Container'))\r\n\r\nextend(Runner, getMethodsFor('Runner'))\r\n\r\nList.extend(getMethodNames())\r\n\r\nregisterMorphableType([\r\n SVGNumber,\r\n Color,\r\n Box,\r\n Matrix,\r\n SVGArray,\r\n PointArray,\r\n PathArray\r\n])\r\n\r\nmakeMorphable()\r\n","import * as svgMembers from './main.js'\r\nimport { makeInstance } from './utils/adopter.js'\r\n\r\n// The main wrapping element\r\nexport default function SVG (element) {\r\n return makeInstance(element)\r\n}\r\n\r\nObject.assign(SVG, svgMembers)\r\n"],"names":["set","get","has","check","it","Math","globalThis","window","self","global","Function","exec","error","fails","Object","defineProperty","a","nativePropertyIsEnumerable","propertyIsEnumerable","getOwnPropertyDescriptor","call","1","V","descriptor","this","enumerable","bitmap","value","configurable","writable","toString","slice","split","classof","undefined","TypeError","IndexedObject","requireObjectCoercible","input","PREFERRED_STRING","isObject","fn","val","valueOf","hasOwnProperty","key","document","EXISTS","createElement","DESCRIPTORS","nativeGetOwnPropertyDescriptor","O","P","toIndexedObject","toPrimitive","IE8_DOM_DEFINE","createPropertyDescriptor","propertyIsEnumerableModule","f","String","nativeDefineProperty","Attributes","anObject","object","definePropertyModule","createNonEnumerableProperty","SHARED","setGlobal","module","store","push","version","mode","copyright","shared","WeakMap","test","nativeFunctionToString","id","postfix","random","keys","uid","NATIVE_WEAK_MAP","wmget","wmhas","wmset","metadata","STATE","sharedKey","hiddenKeys","objectHas","enforce","getterFor","TYPE","state","type","getInternalState","InternalStateModule","enforceInternalState","TEMPLATE","options","unsafe","simple","noTargetGet","source","join","prototype","require$$0","aFunction","variable","namespace","method","arguments","length","path","ceil","floor","argument","isNaN","min","toInteger","max","index","integer","createMethod","IS_INCLUDES","$this","el","fromIndex","toLength","toAbsoluteIndex","includes","indexOf","names","i","result","enumBugKeys","concat","getOwnPropertyNames","internalObjectKeys","getOwnPropertySymbols","getBuiltIn","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","target","ownKeys","getOwnPropertyDescriptorModule","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","string","replace","toLowerCase","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","forced","copyConstructorProperties","sham","redefine","nativeAssign","assign","A","B","symbol","Symbol","alphabet","forEach","chr","objectKeys","T","toObject","argumentsLength","S","j","match","Array","isArray","arg","propertyKey","name","NATIVE_SYMBOL","process","versions","v8","userAgent","SPECIES","wellKnownSymbol","METHOD_NAME","V8_VERSION","array","constructor","foo","Boolean","nativeSlice","proto","arrayMethodHasSpeciesSupport","start","end","Constructor","n","k","fin","createProperty","FunctionPrototype","FunctionPrototypeToString","nameRE","nativeGetOwnPropertyNames","windowNames","getWindowNames","FAILS_ON_PRIMITIVES","_typeof2","obj","iterator","_typeof","defineProperties","Properties","IE_PROTO","PROTOTYPE","Empty","createDict","iframeDocument","iframe","documentCreateElement","script","style","display","html","appendChild","src","contentWindow","open","write","lt","close","F","create","NAME","wrappedWellKnownSymbolModule","TO_STRING_TAG","TAG","that","b","c","apply","originalArray","C","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","callbackfn","specificCreate","boundFunction","bind","arraySpeciesCreate","map","filter","some","every","find","findIndex","$forEach","HIDDEN","SYMBOL","TO_PRIMITIVE","setInternalState","ObjectPrototype","$Symbol","JSON","nativeJSONStringify","stringify","getOwnPropertyNamesExternal","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","WellKnownSymbolsStore","QObject","USE_SETTER","findChild","setSymbolDescriptor","nativeObjectCreate","ObjectPrototypeDescriptor","wrap","tag","description","isSymbol","$defineProperty","$defineProperties","properties","$getOwnPropertySymbols","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","setter","defineWellKnownSymbol","for","keyFor","sym","useSetter","useSimple","$","replacer","$replacer","args","setToStringTag","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","regexp","desc","UNSCOPABLES","ArrayPrototype","IteratorPrototype","PrototypeOfArrayIteratorPrototype","arrayIterator","getPrototypeOf","CORRECT_PROTOTYPE_GETTER","ITERATOR","BUGGY_SAFARI_ITERATORS","returnThis","setPrototypeOf","CORRECT_SETTER","aPossiblePrototype","__proto__","IteratorsCore","VALUES","ENTRIES","Iterable","IteratorConstructor","next","DEFAULT","IS_SET","FORCED","Iterators","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","values","ARRAY_ITERATOR","defineIterator","iterated","kind","done","Arguments","addToUnscopables","CORRECT_ARGUMENTS","classofRaw","tryGet","callee","isExtensible","preventExtensions","METADATA","setMetadata","objectID","weakData","meta","REQUIRED","fastKey","getWeakData","onFreeze","FREEZING","returnMethod","Result","stopped","iterable","AS_ENTRIES","IS_ITERATOR","iterFn","step","getIteratorMethod","callWithSafeIterationClosing","stop","SAFE_CLOSING","called","iteratorWithReturn","return","from","dummy","Wrapper","NewTarget","NewTargetPrototype","require$$1","internalStateGetterFor","CONSTRUCTOR_NAME","wrapper","common","IS_WEAK","NativeConstructor","NativePrototype","ADDER","exported","fixMethod","nativeMethod","getConstructor","InternalMetadataModule","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","SKIP_CLOSING","ITERATION_SUPPORT","checkCorrectnessOfIteration","BUGGY_ZERO","$instance","anInstance","inheritIfRequired","iterate","clear","setStrong","collection","first","last","size","define","previous","entry","getEntry","removed","redefineAll","delete","prev","add","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","CONVERT_TO_STRING","pos","second","position","charCodeAt","charAt","codeAt","STRING_ITERATOR","point","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","ArrayValues","ArrayIteratorMethods","COLLECTION_NAME","DOMIterables","Collection","CollectionPrototype","_toConsumableArray","arr","arr2","arrayWithoutHoles","iter","iterableToArray","nonIterableSpread","registerMethods","m","addMethodNames","_name","getMethodsFor","_names","$includes","re1","re2","ignoreCase","multiline","dotAll","unicode","sticky","nativeExec","RegExp","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","lastIndex","NPCG_INCLUDED","str","reCopy","re","regexpFlags","MATCH","isRegExp","e","correctIsRegExpLogic","searchString","notARegExp","REPLACE_SUPPORTS_NAMED_GROUPS","groups","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","flags","nativeRegExpMethod","arg2","forceStringMethod","regexpExec","stringMethod","regexMethod","R","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","maybeCallNative","searchValue","replaceValue","res","rx","functionalReplace","fullUnicode","results","regExpExec","advanceStringIndex","accumulatedResult","nextSourcePosition","matched","captures","namedCaptures","replacerArgs","getSubstitution","tailPos","symbols","ch","capture","whitespace","whitespaces","ltrim","rtrim","trim","$trim","block","il","radians","d","PI","camelCase","s","g","toUpperCase","unCamelCase","capitalize","proportionalSize","element","width","height","box","bbox","getOrigin","o","ox","oy","origin","x","y","bx","by","r","ns","xmlns","xlink","svgjs","globals","_classCallCheck","Base","elements","root","createElementNS","makeInstance","adopter","querySelector","node","innerHTML","firstChild","nodeOrNew","Node","adopt","className","nodeName","register","asRoot","getClass","did","eid","assignNewId","children","extend","modules","attrCheck","wrapWithAttrCheck","attr","siblings","parent","forward","p","removeElement","isRoot","defs","backward","front","back","before","remove","after","insertBefore","insertAfter","$filter","$indexOf","nativeIndexOf","NEGATIVE_ZERO","SLOPPY_METHOD","sloppyArrayMethod","searchElement","nativeJoin","ES3_STRINGS","separator","arrayPush","MAX_UINT32","SUPPORTS_Y","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","output","lastLastIndex","separatorCopy","splitter","defaultConstructor","unicodeMatching","callRegExpExec","q","z","numberAndUnit","hex","rgb","reference","transforms","isHex","isRgb","isBlank","isNumber","isImage","delimiter","hyphen","pathLetters","isPathLetter","numbersWithDots","dots","classes","hasClass","addClass","removeClass","toggleClass","css","ret","cssText","t","cased","show","hide","visible","v","parse","remember","memory","forget","_memory","IS_RIGHT","memo","$reduce","left","right","reduce","listenerId","windowEvents","getEvents","getEventHolder","events","getEventTarget","on","listener","binding","l","bag","_svgjsListenerId","event","ev","addEventListener","off","removeEventListener","dispatch","Event","CustomEvent","detail","cancelable","dispatchEvent","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","len","E","$map","DatePrototype","Date","INVALID_DATE","TO_STRING","nativeDateToString","getTime","NaN","nativeParseInt","parseInt","radix","parseIntImplementation","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","_slicedToArray","arrayWithHoles","_arr","_n","_d","_e","_s","_i","err","iterableToArrayLimit","nonIterableRest","_defineProperties","props","_createClass","protoProps","staticProps","componentHex","component","round","is","space","hueToRgb","rf","Color","init","params","_a","_b","_c","h","noWhitespace","Error","substring","components","dToR","cos","sin","yL","xL","zL","ct","mx","rU","gU","bU","pow","bd","xyz","rL","gL","bL","xU","yU","zU","lab","sqrt","atan2","isGrey","delta","_clamped","toHex","rV","gV","bV","pi","grey","color","nativeKeys","_assertThisInitialized","ReferenceError","_possibleConstructorReturn","assertThisInitialized","_getPrototypeOf","_get","property","receiver","Reflect","base","superPropBase","_setPrototypeOf","_inherits","subClass","superClass","nativeMatch","matcher","matchStr","require$$2","require$$3","NUMBER","NativeNumber","NumberPrototype","BROKEN_CLASSOF","toNumber","third","maxCode","digits","code","NumberWrapper","nativeParseFloat","parseFloat","Infinity","trimmedString","parseFloatImplementation","Point","clone","transformO","Matrix","isMatrixLike","closeEnough","threshold","abs","fromArray","Element","matrixify","transform","multiplyO","formatTransforms","transformer","translateO","ry","lmultiplyO","scaleO","scaleX","scaleY","skewO","skewX","skewY","shearO","shear","rotateO","theta","isFinite","px","py","dx","dy","tx","ty","originX","originY","sx","sy","lam","rotate","translateX","translateY","cx","cy","determinant","ccw","thetaRad","st","matrix","matrixMultiply","det","na","nb","nc","nd","ne","nf","inverseO","axis","around","flipO","lx","tan","ly","skew","aroundO","other","comp","flipBoth","flip","flipX","flipY","scale","positionX","positionY","translate","relative","relativeX","relativeY","parser","nodes","svg","parentNode","body","documentElement","addTo","isNulledBox","Box","top","w","x2","y2","xMin","xMax","yMin","yMax","pageXOffset","pageYOffset","getBox","cb","retry","contains","viewbox","zoom","level","clientWidth","clientHeight","getComputedStyle","getPropertyValue","zoomX","zoomY","zoomAmount","Number","MIN_VALUE","subClassArray","baseClass","_constructor","Arr","List","each","fnOrMethodName","toArray","reserved","baseFind","query","querySelectorAll","attrs","EventTarget","defaultPrevented","noop","timeline","duration","ease","delay","fill","stroke","opacity","offset","SVGArray","toSet","Set","SVGNumber","unit","number","hooks","Dom","childNodes","put","hasChildNodes","removeChild","lastChild","writeDataToDom","cloneNode","deep","selector","matches","matchesSelector","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","oMatchesSelector","replaceChild","precision","factor","newAttrs","svgOrFn","outerHTML","well","fragment","current","_this","createDocumentFragment","firstElementChild","text","textContent","attributes","nodeValue","curr","removeAttribute","getAttribute","defaults","_val","hook","isColor","leading","setAttributeNS","setAttribute","rebuild","findOne","dom","hasAttribute","setData","plus","until","parents","getBBox","rbox","getBoundingClientRect","screenCTM","inverse","addOffset","ctm","getCTM","getScreenCTM","rect","sugar","prefix","extension","mat","angle","direction","directionString","radius","_element","getTotalLength","pointAt","getPointAtLength","font","ax","ay","amove","nativeReverse","reverse","objectDefinePropertyModile","_defineProperty","divide","getOwnPropertyDescriptors","untransform","kv","lmultiply","toParent","pCtm","multiply","toRoot","decomposed","decompose","Shape","Circle","Container","circle","move","flatten","ungroup","Defs","Ellipse","circled","ellipse","Stop","fx","fy","x1","y1","to","Gradient","update","url","gradiented","gradient","Pattern","pattern","patternUnits","Image","callback","img","image","load","PointArray","toLine","at","destination","points","pop","maxX","maxY","minX","minY","Line","pointed","line","plot","Marker","marker","ref","nativeSort","sort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","makeSetterGetter","comparefn","easing","bezier","steps","stepPosition","jumps","beforeFlag","jumping","Stepper","Ease","Controller","stepper","dt","recalculate","_duration","overshoot","_overshoot","os","log","zeta","wn","Spring","velocity","acceleration","newPosition","PID","windup","integral","I","D","PathArray","pathRegReplace","pathHandlers","M","p0","L","H","Q","Z","mlhvqtcsaz","jl","arrayToString","equalCommands","pathArray","morph","sourceArray","destinationArray","paramCnt","Morphable","_stepper","_from","_to","_type","_context","_morphObj","_set","NonMorphable","morphableTypes","ObjectBag","TransformBag","objOrArr","registerMorphableType","makeMorphable","Path","_array","MorphArray","Polygon","polygon","poly","Polyline","polyline","Rect","splice","deleteCount","insertCount","actualDeleteCount","actualStart","Queue","_first","_last","item","Animator","nextDraw","frames","timeouts","immediates","timer","performance","frame","run","requestAnimationFrame","_draw","timeout","time","now","immediate","cancelFrame","clearTimeout","cancelImmediate","nextTimeout","lastTimeout","shift","nextFrame","lastFrame","nextImmediate","makeSchedule","runnerInfo","runner","defaultSource","Timeline","timeSource","_timeSource","_startTime","_speed","_persist","_nextFrame","_paused","_runners","_runnerIds","_lastRunnerId","_time","_lastSourceTime","_lastStepTime","_step","_stepFn","_stepImmediate","when","absoluteStartTime","endTime","getEndTime","unschedule","persist","info","updateTime","_continue","lastRunnerInfo","lastDuration","lastEndTime","active","pause","getEndTimeOfTimeline","speed","yes","currentSpeed","positive","dtOrForever","immediateStep","dtSource","dtTime","fire","reset","runnersLeft","dtToStart","_timeline","Runner","_queue","_isDeclarative","_history","enabled","_lastTime","_reseted","transformId","_haveReversed","_reverse","_loopsDone","_swing","_wait","_times","_frameId","_prepareRunner","sanitise","loop","schedule","times","swing","wait","animate","initFn","runFn","retargetFn","isTransform","initialiser","retarget","initialised","finished","queue","loopDuration","loopsDone","partial","swinging","backwards","uncliped","loops","swingForward","running","_lastPosition","justStarted","justFinished","declarative","_initialise","converged","_run","morpher","caller","play","extra","needsIt","positionOrDt","allfinished","FakeRunner","mergeWith","getRunnerTransform","RunnerArray","runners","ids","lastRunner","_this2","edit","newRunner","deleteCnt","clearTransformsFromQueue","_clearTransformRunnersBefore","currentRunner","_transformationRunners","clearBefore","_currentTransform","_addRunner","netTransform","merge","styleAttr","_tryRetarget","newLevel","newPoint","_rememberMorpher","affine","isMatrix","currentAngle","startTransform","clearTransform","rTarget","rCurrent","possibilities","distances","shortest","affineParameters","addTransform","newTransforms","_queueNumber","_queueNumberDelta","dmove","newTo","_queueObject","center","Svg","SVGElement","_defs","nested","_build","createTextNode","getComputedTextLength","Text","_rebuild","firstLine","nodeType","newLined","build","tspan","newLine","blankLineOffset","fontSize","textable","plain","Tspan","ClipPath","targets","unclip","clip","clipWith","clipper","ForeignObject","foreignObject","G","child","group","link","linkTo","Mask","unmask","mask","maskWith","masker","Style","rule","fontFamily","addText","cssRule","fontface","TextPath","track","textPath","importNodes","Use","file","use","SVG","win","doc","mock","config","initializer","inherit","construct","svgMembers"],"mappings":"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"}