{"version":3,"file":"js/323-c57850e0d473b5c1f9e8.js","mappings":"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","sources":["webpack://phoenix/./node_modules/@stimulus/webpack-helpers/dist/index.js","webpack://phoenix/./node_modules/clipboard/dist/clipboard.js","webpack://phoenix/./node_modules/core-js/fn/array/find-index.js","webpack://phoenix/./node_modules/core-js/fn/array/find.js","webpack://phoenix/./node_modules/core-js/fn/array/from.js","webpack://phoenix/./node_modules/core-js/fn/map.js","webpack://phoenix/./node_modules/core-js/fn/object/assign.js","webpack://phoenix/./node_modules/core-js/fn/promise.js","webpack://phoenix/./node_modules/core-js/fn/set.js","webpack://phoenix/./node_modules/core-js/modules/_a-function.js","webpack://phoenix/./node_modules/core-js/modules/_add-to-unscopables.js","webpack://phoenix/./node_modules/core-js/modules/_an-instance.js","webpack://phoenix/./node_modules/core-js/modules/_an-object.js","webpack://phoenix/./node_modules/core-js/modules/_array-from-iterable.js","webpack://phoenix/./node_modules/core-js/modules/_array-includes.js","webpack://phoenix/./node_modules/core-js/modules/_array-methods.js","webpack://phoenix/./node_modules/core-js/modules/_array-species-constructor.js","webpack://phoenix/./node_modules/core-js/modules/_array-species-create.js","webpack://phoenix/./node_modules/core-js/modules/_classof.js","webpack://phoenix/./node_modules/core-js/modules/_cof.js","webpack://phoenix/./node_modules/core-js/modules/_collection-strong.js","webpack://phoenix/./node_modules/core-js/modules/_collection-to-json.js","webpack://phoenix/./node_modules/core-js/modules/_collection.js","webpack://phoenix/./node_modules/core-js/modules/_core.js","webpack://phoenix/./node_modules/core-js/modules/_create-property.js","webpack://phoenix/./node_modules/core-js/modules/_ctx.js","webpack://phoenix/./node_modules/core-js/modules/_defined.js","webpack://phoenix/./node_modules/core-js/modules/_descriptors.js","webpack://phoenix/./node_modules/core-js/modules/_dom-create.js","webpack://phoenix/./node_modules/core-js/modules/_enum-bug-keys.js","webpack://phoenix/./node_modules/core-js/modules/_export.js","webpack://phoenix/./node_modules/core-js/modules/_fails.js","webpack://phoenix/./node_modules/core-js/modules/_for-of.js","webpack://phoenix/./node_modules/core-js/modules/_function-to-string.js","webpack://phoenix/./node_modules/core-js/modules/_global.js","webpack://phoenix/./node_modules/core-js/modules/_has.js","webpack://phoenix/./node_modules/core-js/modules/_hide.js","webpack://phoenix/./node_modules/core-js/modules/_html.js","webpack://phoenix/./node_modules/core-js/modules/_ie8-dom-define.js","webpack://phoenix/./node_modules/core-js/modules/_inherit-if-required.js","webpack://phoenix/./node_modules/core-js/modules/_invoke.js","webpack://phoenix/./node_modules/core-js/modules/_iobject.js","webpack://phoenix/./node_modules/core-js/modules/_is-array-iter.js","webpack://phoenix/./node_modules/core-js/modules/_is-array.js","webpack://phoenix/./node_modules/core-js/modules/_is-object.js","webpack://phoenix/./node_modules/core-js/modules/_iter-call.js","webpack://phoenix/./node_modules/core-js/modules/_iter-create.js","webpack://phoenix/./node_modules/core-js/modules/_iter-define.js","webpack://phoenix/./node_modules/core-js/modules/_iter-detect.js","webpack://phoenix/./node_modules/core-js/modules/_iter-step.js","webpack://phoenix/./node_modules/core-js/modules/_iterators.js","webpack://phoenix/./node_modules/core-js/modules/_library.js","webpack://phoenix/./node_modules/core-js/modules/_meta.js","webpack://phoenix/./node_modules/core-js/modules/_microtask.js","webpack://phoenix/./node_modules/core-js/modules/_new-promise-capability.js","webpack://phoenix/./node_modules/core-js/modules/_object-assign.js","webpack://phoenix/./node_modules/core-js/modules/_object-create.js","webpack://phoenix/./node_modules/core-js/modules/_object-dp.js","webpack://phoenix/./node_modules/core-js/modules/_object-dps.js","webpack://phoenix/./node_modules/core-js/modules/_object-gopd.js","webpack://phoenix/./node_modules/core-js/modules/_object-gops.js","webpack://phoenix/./node_modules/core-js/modules/_object-gpo.js","webpack://phoenix/./node_modules/core-js/modules/_object-keys-internal.js","webpack://phoenix/./node_modules/core-js/modules/_object-keys.js","webpack://phoenix/./node_modules/core-js/modules/_object-pie.js","webpack://phoenix/./node_modules/core-js/modules/_perform.js","webpack://phoenix/./node_modules/core-js/modules/_promise-resolve.js","webpack://phoenix/./node_modules/core-js/modules/_property-desc.js","webpack://phoenix/./node_modules/core-js/modules/_redefine-all.js","webpack://phoenix/./node_modules/core-js/modules/_redefine.js","webpack://phoenix/./node_modules/core-js/modules/_set-collection-from.js","webpack://phoenix/./node_modules/core-js/modules/_set-collection-of.js","webpack://phoenix/./node_modules/core-js/modules/_set-proto.js","webpack://phoenix/./node_modules/core-js/modules/_set-species.js","webpack://phoenix/./node_modules/core-js/modules/_set-to-string-tag.js","webpack://phoenix/./node_modules/core-js/modules/_shared-key.js","webpack://phoenix/./node_modules/core-js/modules/_shared.js","webpack://phoenix/./node_modules/core-js/modules/_species-constructor.js","webpack://phoenix/./node_modules/core-js/modules/_string-at.js","webpack://phoenix/./node_modules/core-js/modules/_task.js","webpack://phoenix/./node_modules/core-js/modules/_to-absolute-index.js","webpack://phoenix/./node_modules/core-js/modules/_to-integer.js","webpack://phoenix/./node_modules/core-js/modules/_to-iobject.js","webpack://phoenix/./node_modules/core-js/modules/_to-length.js","webpack://phoenix/./node_modules/core-js/modules/_to-object.js","webpack://phoenix/./node_modules/core-js/modules/_to-primitive.js","webpack://phoenix/./node_modules/core-js/modules/_uid.js","webpack://phoenix/./node_modules/core-js/modules/_user-agent.js","webpack://phoenix/./node_modules/core-js/modules/_validate-collection.js","webpack://phoenix/./node_modules/core-js/modules/_wks.js","webpack://phoenix/./node_modules/core-js/modules/core.get-iterator-method.js","webpack://phoenix/./node_modules/core-js/modules/es6.array.find-index.js","webpack://phoenix/./node_modules/core-js/modules/es6.array.find.js","webpack://phoenix/./node_modules/core-js/modules/es6.array.from.js","webpack://phoenix/./node_modules/core-js/modules/es6.array.iterator.js","webpack://phoenix/./node_modules/core-js/modules/es6.map.js","webpack://phoenix/./node_modules/core-js/modules/es6.object.assign.js","webpack://phoenix/./node_modules/core-js/modules/es6.object.to-string.js","webpack://phoenix/./node_modules/core-js/modules/es6.promise.js","webpack://phoenix/./node_modules/core-js/modules/es6.set.js","webpack://phoenix/./node_modules/core-js/modules/es6.string.iterator.js","webpack://phoenix/./node_modules/core-js/modules/es7.map.from.js","webpack://phoenix/./node_modules/core-js/modules/es7.map.of.js","webpack://phoenix/./node_modules/core-js/modules/es7.map.to-json.js","webpack://phoenix/./node_modules/core-js/modules/es7.promise.finally.js","webpack://phoenix/./node_modules/core-js/modules/es7.promise.try.js","webpack://phoenix/./node_modules/core-js/modules/es7.set.from.js","webpack://phoenix/./node_modules/core-js/modules/es7.set.of.js","webpack://phoenix/./node_modules/core-js/modules/es7.set.to-json.js","webpack://phoenix/./node_modules/core-js/modules/web.dom.iterable.js","webpack://phoenix/./node_modules/custom-event-polyfill/polyfill.js","webpack://phoenix/./node_modules/element-closest/element-closest.js","webpack://phoenix/./node_modules/iframe-resizer/js/iframeResizer.js","webpack://phoenix/./node_modules/lodash/_Symbol.js","webpack://phoenix/./node_modules/lodash/_baseGetTag.js","webpack://phoenix/./node_modules/lodash/_baseTrim.js","webpack://phoenix/./node_modules/lodash/_freeGlobal.js","webpack://phoenix/./node_modules/lodash/_getRawTag.js","webpack://phoenix/./node_modules/lodash/_objectToString.js","webpack://phoenix/./node_modules/lodash/_root.js","webpack://phoenix/./node_modules/lodash/_trimmedEndIndex.js","webpack://phoenix/./node_modules/lodash/debounce.js","webpack://phoenix/./node_modules/lodash/isObject.js","webpack://phoenix/./node_modules/lodash/isObjectLike.js","webpack://phoenix/./node_modules/lodash/isSymbol.js","webpack://phoenix/./node_modules/lodash/now.js","webpack://phoenix/./node_modules/lodash/toNumber.js","webpack://phoenix/./node_modules/lottie-web/build/player/lottie.js","webpack://phoenix/./node_modules/mutation-observer-inner-html-shim/mutation-observer-inner-html-shim.js","webpack://phoenix/./node_modules/@stimulus/core/dist/event_listener.js","webpack://phoenix/./node_modules/@stimulus/core/dist/dispatcher.js","webpack://phoenix/./node_modules/@stimulus/core/dist/action_descriptor.js","webpack://phoenix/./node_modules/@stimulus/core/dist/action.js","webpack://phoenix/./node_modules/@stimulus/core/dist/binding.js","webpack://phoenix/./node_modules/@stimulus/mutation-observers/dist/element_observer.js","webpack://phoenix/./node_modules/@stimulus/mutation-observers/dist/attribute_observer.js","webpack://phoenix/./node_modules/@stimulus/mutation-observers/dist/string_map_observer.js","webpack://phoenix/./node_modules/@stimulus/multimap/dist/set_operations.js","webpack://phoenix/./node_modules/@stimulus/multimap/dist/multimap.js","webpack://phoenix/./node_modules/@stimulus/multimap/dist/indexed_multimap.js","webpack://phoenix/./node_modules/@stimulus/mutation-observers/dist/token_list_observer.js","webpack://phoenix/./node_modules/@stimulus/mutation-observers/dist/value_list_observer.js","webpack://phoenix/./node_modules/@stimulus/core/dist/binding_observer.js","webpack://phoenix/./node_modules/@stimulus/core/dist/value_observer.js","webpack://phoenix/./node_modules/@stimulus/core/dist/context.js","webpack://phoenix/./node_modules/@stimulus/core/dist/inheritable_statics.js","webpack://phoenix/./node_modules/@stimulus/core/dist/blessing.js","webpack://phoenix/./node_modules/@stimulus/core/dist/module.js","webpack://phoenix/./node_modules/@stimulus/core/dist/definition.js","webpack://phoenix/./node_modules/@stimulus/core/dist/class_map.js","webpack://phoenix/./node_modules/@stimulus/core/dist/string_helpers.js","webpack://phoenix/./node_modules/@stimulus/core/dist/data_map.js","webpack://phoenix/./node_modules/@stimulus/core/dist/guide.js","webpack://phoenix/./node_modules/@stimulus/core/dist/selectors.js","webpack://phoenix/./node_modules/@stimulus/core/dist/target_set.js","webpack://phoenix/./node_modules/@stimulus/core/dist/scope.js","webpack://phoenix/./node_modules/@stimulus/core/dist/scope_observer.js","webpack://phoenix/./node_modules/@stimulus/core/dist/router.js","webpack://phoenix/./node_modules/@stimulus/core/dist/schema.js","webpack://phoenix/./node_modules/@stimulus/core/dist/application.js","webpack://phoenix/./node_modules/@stimulus/core/dist/class_properties.js","webpack://phoenix/./node_modules/@stimulus/core/dist/target_properties.js","webpack://phoenix/./node_modules/@stimulus/core/dist/value_properties.js","webpack://phoenix/./node_modules/@stimulus/core/dist/controller.js"],"sourcesContent":["export function definitionsFromContext(context) {\n return context.keys()\n .map(function (key) { return definitionForModuleWithContextAndKey(context, key); })\n .filter(function (value) { return value; });\n}\nfunction definitionForModuleWithContextAndKey(context, key) {\n var identifier = identifierForContextKey(key);\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\nfunction definitionForModuleAndIdentifier(module, identifier) {\n var controllerConstructor = module.default;\n if (typeof controllerConstructor == \"function\") {\n return { identifier: identifier, controllerConstructor: controllerConstructor };\n }\n}\nexport function identifierForContextKey(key) {\n var logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}\n//# sourceMappingURL=index.js.map","/*!\n * clipboard.js v2.0.8\n * https://clipboardjs.com/\n *\n * Licensed MIT © Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 134:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/clipboard-action.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n/**\n * Inner class which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n */\n\nvar ClipboardAction = /*#__PURE__*/function () {\n /**\n * @param {Object} options\n */\n function ClipboardAction(options) {\n _classCallCheck(this, ClipboardAction);\n\n this.resolveOptions(options);\n this.initSelection();\n }\n /**\n * Defines base properties passed from constructor.\n * @param {Object} options\n */\n\n\n _createClass(ClipboardAction, [{\n key: \"resolveOptions\",\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.action = options.action;\n this.container = options.container;\n this.emitter = options.emitter;\n this.target = options.target;\n this.text = options.text;\n this.trigger = options.trigger;\n this.selectedText = '';\n }\n /**\n * Decides which selection strategy is going to be applied based\n * on the existence of `text` and `target` properties.\n */\n\n }, {\n key: \"initSelection\",\n value: function initSelection() {\n if (this.text) {\n this.selectFake();\n } else if (this.target) {\n this.selectTarget();\n }\n }\n /**\n * Creates a fake textarea element, sets its value from `text` property,\n */\n\n }, {\n key: \"createFakeElement\",\n value: function createFakeElement() {\n var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n this.fakeElem = document.createElement('textarea'); // Prevent zooming on iOS\n\n this.fakeElem.style.fontSize = '12pt'; // Reset box model\n\n this.fakeElem.style.border = '0';\n this.fakeElem.style.padding = '0';\n this.fakeElem.style.margin = '0'; // Move element out of screen horizontally\n\n this.fakeElem.style.position = 'absolute';\n this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n this.fakeElem.style.top = \"\".concat(yPosition, \"px\");\n this.fakeElem.setAttribute('readonly', '');\n this.fakeElem.value = this.text;\n return this.fakeElem;\n }\n /**\n * Get's the value of fakeElem,\n * and makes a selection on it.\n */\n\n }, {\n key: \"selectFake\",\n value: function selectFake() {\n var _this = this;\n\n var fakeElem = this.createFakeElement();\n\n this.fakeHandlerCallback = function () {\n return _this.removeFake();\n };\n\n this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true;\n this.container.appendChild(fakeElem);\n this.selectedText = select_default()(fakeElem);\n this.copyText();\n this.removeFake();\n }\n /**\n * Only removes the fake element after another click event, that way\n * a user can hit `Ctrl+C` to copy because selection still exists.\n */\n\n }, {\n key: \"removeFake\",\n value: function removeFake() {\n if (this.fakeHandler) {\n this.container.removeEventListener('click', this.fakeHandlerCallback);\n this.fakeHandler = null;\n this.fakeHandlerCallback = null;\n }\n\n if (this.fakeElem) {\n this.container.removeChild(this.fakeElem);\n this.fakeElem = null;\n }\n }\n /**\n * Selects the content from element passed on `target` property.\n */\n\n }, {\n key: \"selectTarget\",\n value: function selectTarget() {\n this.selectedText = select_default()(this.target);\n this.copyText();\n }\n /**\n * Executes the copy operation based on the current selection.\n */\n\n }, {\n key: \"copyText\",\n value: function copyText() {\n var succeeded;\n\n try {\n succeeded = document.execCommand(this.action);\n } catch (err) {\n succeeded = false;\n }\n\n this.handleResult(succeeded);\n }\n /**\n * Fires an event based on the copy operation result.\n * @param {Boolean} succeeded\n */\n\n }, {\n key: \"handleResult\",\n value: function handleResult(succeeded) {\n this.emitter.emit(succeeded ? 'success' : 'error', {\n action: this.action,\n text: this.selectedText,\n trigger: this.trigger,\n clearSelection: this.clearSelection.bind(this)\n });\n }\n /**\n * Moves focus away from `target` and back to the trigger, removes current selection.\n */\n\n }, {\n key: \"clearSelection\",\n value: function clearSelection() {\n if (this.trigger) {\n this.trigger.focus();\n }\n\n document.activeElement.blur();\n window.getSelection().removeAllRanges();\n }\n /**\n * Sets the `action` to be performed which can be either 'copy' or 'cut'.\n * @param {String} action\n */\n\n }, {\n key: \"destroy\",\n\n /**\n * Destroy lifecycle.\n */\n value: function destroy() {\n this.removeFake();\n }\n }, {\n key: \"action\",\n set: function set() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';\n this._action = action;\n\n if (this._action !== 'copy' && this._action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n }\n }\n /**\n * Gets the `action` property.\n * @return {String}\n */\n ,\n get: function get() {\n return this._action;\n }\n /**\n * Sets the `target` property using an element\n * that will be have its content copied.\n * @param {Element} target\n */\n\n }, {\n key: \"target\",\n set: function set(target) {\n if (target !== undefined) {\n if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n if (this.action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n\n this._target = target;\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n }\n }\n /**\n * Gets the `target` property.\n * @return {String|HTMLElement}\n */\n ,\n get: function get() {\n return this._target;\n }\n }]);\n\n return ClipboardAction;\n}();\n\n/* harmony default export */ var clipboard_action = (ClipboardAction);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\n\nfunction clipboard_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction clipboard_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction clipboard_createClass(Constructor, protoProps, staticProps) { if (protoProps) clipboard_defineProperties(Constructor.prototype, protoProps); if (staticProps) clipboard_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n var attribute = \"data-clipboard-\".concat(suffix);\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n var _super = _createSuper(Clipboard);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n var _this;\n\n clipboard_classCallCheck(this, Clipboard);\n\n _this = _super.call(this);\n\n _this.resolveOptions(options);\n\n _this.listenClick(trigger);\n\n return _this;\n }\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n clipboard_createClass(Clipboard, [{\n key: \"resolveOptions\",\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n }\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: \"listenClick\",\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = listen_default()(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: \"onClick\",\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n\n if (this.clipboardAction) {\n this.clipboardAction = null;\n }\n\n this.clipboardAction = new clipboard_action({\n action: this.action(trigger),\n target: this.target(trigger),\n text: this.text(trigger),\n container: this.container,\n trigger: trigger,\n emitter: this\n });\n }\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultAction\",\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultTarget\",\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: \"defaultText\",\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.listener.destroy();\n\n if (this.clipboardAction) {\n this.clipboardAction.destroy();\n this.clipboardAction = null;\n }\n }\n }], [{\n key: \"isSupported\",\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n return support;\n }\n }]);\n\n return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(134);\n/******/ })()\n.default;\n});","require('../../modules/es6.array.find-index');\nmodule.exports = require('../../modules/_core').Array.findIndex;\n","require('../../modules/es6.array.find');\nmodule.exports = require('../../modules/_core').Array.find;\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.map');\nrequire('../modules/es7.map.to-json');\nrequire('../modules/es7.map.of');\nrequire('../modules/es7.map.from');\nmodule.exports = require('../modules/_core').Map;\n","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.set');\nrequire('../modules/es7.set.to-json');\nrequire('../modules/es7.set.of');\nrequire('../modules/es7.set.from');\nmodule.exports = require('../modules/_core').Set;\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = require('./_classof');\nvar from = require('./_array-from-iterable');\nmodule.exports = function (NAME) {\n return function toJSON() {\n if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n return from(this);\n };\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","module.exports = false;\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = {}.propertyIsEnumerable;\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar ctx = require('./_ctx');\nvar forOf = require('./_for-of');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n var mapFn = arguments[1];\n var mapping, A, n, cb;\n aFunction(this);\n mapping = mapFn !== undefined;\n if (mapping) aFunction(mapFn);\n if (source == undefined) return new this();\n A = [];\n if (mapping) {\n n = 0;\n cb = ctx(mapFn, arguments[2], 2);\n forOf(source, false, function (nextItem) {\n A.push(cb(nextItem, n++));\n });\n } else {\n forOf(source, false, A.push, A);\n }\n return new this(A);\n } });\n};\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { of: function of() {\n var length = arguments.length;\n var A = new Array(length);\n while (length--) A[length] = arguments[length];\n return new this(A);\n } });\n};\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n require('./_redefine')(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\nrequire('./_set-collection-from')('Map');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\nrequire('./_set-collection-of')('Map');\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Map', { toJSON: require('./_collection-to-json')('Map') });\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from\nrequire('./_set-collection-from')('Set');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of\nrequire('./_set-collection-of')('Set');\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Set', { toJSON: require('./_collection-to-json')('Set') });\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","// Polyfill for creating CustomEvents on IE9/10/11\n\n// code pulled from:\n// https://github.com/d4tocchini/customevent-polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill\n\n(function() {\n if (typeof window === 'undefined') {\n return;\n }\n\n try {\n var ce = new window.CustomEvent('test', { cancelable: true });\n ce.preventDefault();\n if (ce.defaultPrevented !== true) {\n // IE has problems with .preventDefault() on custom events\n // http://stackoverflow.com/questions/23349191\n throw new Error('Could not prevent default');\n }\n } catch (e) {\n var CustomEvent = function(event, params) {\n var evt, origPrevent;\n params = params || {};\n params.bubbles = !!params.bubbles;\n params.cancelable = !!params.cancelable;\n\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(\n event,\n params.bubbles,\n params.cancelable,\n params.detail\n );\n origPrevent = evt.preventDefault;\n evt.preventDefault = function() {\n origPrevent.call(this);\n try {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function() {\n return true;\n }\n });\n } catch (e) {\n this.defaultPrevented = true;\n }\n };\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n window.CustomEvent = CustomEvent; // expose definition to window\n }\n})();\n","// element-closest | CC0-1.0 | github.com/jonathantneal/closest\n\n(function (ElementProto) {\n\tif (typeof ElementProto.matches !== 'function') {\n\t\tElementProto.matches = ElementProto.msMatchesSelector || ElementProto.mozMatchesSelector || ElementProto.webkitMatchesSelector || function matches(selector) {\n\t\t\tvar element = this;\n\t\t\tvar elements = (element.document || element.ownerDocument).querySelectorAll(selector);\n\t\t\tvar index = 0;\n\n\t\t\twhile (elements[index] && elements[index] !== element) {\n\t\t\t\t++index;\n\t\t\t}\n\n\t\t\treturn Boolean(elements[index]);\n\t\t};\n\t}\n\n\tif (typeof ElementProto.closest !== 'function') {\n\t\tElementProto.closest = function closest(selector) {\n\t\t\tvar element = this;\n\n\t\t\twhile (element && element.nodeType === 1) {\n\t\t\t\tif (element.matches(selector)) {\n\t\t\t\t\treturn element;\n\t\t\t\t}\n\n\t\t\t\telement = element.parentNode;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t};\n\t}\n})(window.Element.prototype);\n","/*\n * File: iframeResizer.js\n * Desc: Force iframes to size to content.\n * Requires: iframeResizer.contentWindow.js to be loaded into the target frame.\n * Doc: https://github.com/davidjbradshaw/iframe-resizer\n * Author: David J. Bradshaw - dave@bradshaw.net\n * Contributor: Jure Mav - jure.mav@gmail.com\n * Contributor: Reed Dadoune - reed@dadoune.com\n */\n\n// eslint-disable-next-line sonarjs/cognitive-complexity, no-shadow-restricted-names\n;(function (undefined) {\n if (typeof window === 'undefined') return // don't run for server side render\n\n var count = 0,\n logEnabled = false,\n hiddenCheckEnabled = false,\n msgHeader = 'message',\n msgHeaderLen = msgHeader.length,\n msgId = '[iFrameSizer]', // Must match iframe msg ID\n msgIdLen = msgId.length,\n pagePosition = null,\n requestAnimationFrame = window.requestAnimationFrame,\n resetRequiredMethods = {\n max: 1,\n scroll: 1,\n bodyScroll: 1,\n documentElementScroll: 1\n },\n settings = {},\n timer = null,\n defaults = {\n autoResize: true,\n bodyBackground: null,\n bodyMargin: null,\n bodyMarginV1: 8,\n bodyPadding: null,\n checkOrigin: true,\n inPageLinks: false,\n enablePublicMethods: true,\n heightCalculationMethod: 'bodyOffset',\n id: 'iFrameResizer',\n interval: 32,\n log: false,\n maxHeight: Infinity,\n maxWidth: Infinity,\n minHeight: 0,\n minWidth: 0,\n mouseEvents: true,\n resizeFrom: 'parent',\n scrolling: false,\n sizeHeight: true,\n sizeWidth: false,\n warningTimeout: 5000,\n tolerance: 0,\n widthCalculationMethod: 'scroll',\n onClose: function () {\n return true\n },\n onClosed: function () {},\n onInit: function () {},\n onMessage: function () {\n warn('onMessage function not defined')\n },\n onMouseEnter: function () {},\n onMouseLeave: function () {},\n onResized: function () {},\n onScroll: function () {\n return true\n }\n }\n\n function getMutationObserver() {\n return (\n window.MutationObserver ||\n window.WebKitMutationObserver ||\n window.MozMutationObserver\n )\n }\n\n function addEventListener(el, evt, func) {\n el.addEventListener(evt, func, false)\n }\n\n function removeEventListener(el, evt, func) {\n el.removeEventListener(evt, func, false)\n }\n\n function setupRequestAnimationFrame() {\n var vendors = ['moz', 'webkit', 'o', 'ms']\n var x\n\n // Remove vendor prefixing if prefixed and break early if not\n for (x = 0; x < vendors.length && !requestAnimationFrame; x += 1) {\n requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame']\n }\n\n if (!requestAnimationFrame) {\n log('setup', 'RequestAnimationFrame not supported')\n } else {\n // Firefox extension content-scripts have a globalThis object that is not the same as window.\n // Binding `requestAnimationFrame` to window allows the function to work and prevents errors\n // being thrown when run in that context, and should be a no-op in every other context.\n requestAnimationFrame = requestAnimationFrame.bind(window)\n }\n }\n\n function getMyID(iframeId) {\n var retStr = 'Host page: ' + iframeId\n\n if (window.top !== window.self) {\n retStr =\n window.parentIFrame && window.parentIFrame.getId\n ? window.parentIFrame.getId() + ': ' + iframeId\n : 'Nested host page: ' + iframeId\n }\n\n return retStr\n }\n\n function formatLogHeader(iframeId) {\n return msgId + '[' + getMyID(iframeId) + ']'\n }\n\n function isLogEnabled(iframeId) {\n return settings[iframeId] ? settings[iframeId].log : logEnabled\n }\n\n function log(iframeId, msg) {\n output('log', iframeId, msg, isLogEnabled(iframeId))\n }\n\n function info(iframeId, msg) {\n output('info', iframeId, msg, isLogEnabled(iframeId))\n }\n\n function warn(iframeId, msg) {\n output('warn', iframeId, msg, true)\n }\n\n function output(type, iframeId, msg, enabled) {\n if (true === enabled && 'object' === typeof window.console) {\n // eslint-disable-next-line no-console\n console[type](formatLogHeader(iframeId), msg)\n }\n }\n\n function iFrameListener(event) {\n function resizeIFrame() {\n function resize() {\n setSize(messageData)\n setPagePosition(iframeId)\n on('onResized', messageData)\n }\n\n ensureInRange('Height')\n ensureInRange('Width')\n\n syncResize(resize, messageData, 'init')\n }\n\n function processMsg() {\n var data = msg.substr(msgIdLen).split(':')\n var height = data[1] ? parseInt(data[1], 10) : 0\n var iframe = settings[data[0]] && settings[data[0]].iframe\n var compStyle = getComputedStyle(iframe)\n\n return {\n iframe: iframe,\n id: data[0],\n height: height + getPaddingEnds(compStyle) + getBorderEnds(compStyle),\n width: data[2],\n type: data[3]\n }\n }\n\n function getPaddingEnds(compStyle) {\n if (compStyle.boxSizing !== 'border-box') {\n return 0\n }\n var top = compStyle.paddingTop ? parseInt(compStyle.paddingTop, 10) : 0\n var bot = compStyle.paddingBottom\n ? parseInt(compStyle.paddingBottom, 10)\n : 0\n return top + bot\n }\n\n function getBorderEnds(compStyle) {\n if (compStyle.boxSizing !== 'border-box') {\n return 0\n }\n var top = compStyle.borderTopWidth\n ? parseInt(compStyle.borderTopWidth, 10)\n : 0\n var bot = compStyle.borderBottomWidth\n ? parseInt(compStyle.borderBottomWidth, 10)\n : 0\n return top + bot\n }\n\n function ensureInRange(Dimension) {\n var max = Number(settings[iframeId]['max' + Dimension]),\n min = Number(settings[iframeId]['min' + Dimension]),\n dimension = Dimension.toLowerCase(),\n size = Number(messageData[dimension])\n\n log(iframeId, 'Checking ' + dimension + ' is in range ' + min + '-' + max)\n\n if (size < min) {\n size = min\n log(iframeId, 'Set ' + dimension + ' to min value')\n }\n\n if (size > max) {\n size = max\n log(iframeId, 'Set ' + dimension + ' to max value')\n }\n\n messageData[dimension] = '' + size\n }\n\n function isMessageFromIFrame() {\n function checkAllowedOrigin() {\n function checkList() {\n var i = 0,\n retCode = false\n\n log(\n iframeId,\n 'Checking connection is from allowed list of origins: ' +\n checkOrigin\n )\n\n for (; i < checkOrigin.length; i++) {\n if (checkOrigin[i] === origin) {\n retCode = true\n break\n }\n }\n return retCode\n }\n\n function checkSingle() {\n var remoteHost = settings[iframeId] && settings[iframeId].remoteHost\n log(iframeId, 'Checking connection is from: ' + remoteHost)\n return origin === remoteHost\n }\n\n return checkOrigin.constructor === Array ? checkList() : checkSingle()\n }\n\n var origin = event.origin,\n checkOrigin = settings[iframeId] && settings[iframeId].checkOrigin\n\n if (checkOrigin && '' + origin !== 'null' && !checkAllowedOrigin()) {\n throw new Error(\n 'Unexpected message received from: ' +\n origin +\n ' for ' +\n messageData.iframe.id +\n '. Message was: ' +\n event.data +\n '. This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.'\n )\n }\n\n return true\n }\n\n function isMessageForUs() {\n return (\n msgId === ('' + msg).substr(0, msgIdLen) &&\n msg.substr(msgIdLen).split(':')[0] in settings\n ) // ''+Protects against non-string msg\n }\n\n function isMessageFromMetaParent() {\n // Test if this message is from a parent above us. This is an ugly test, however, updating\n // the message format would break backwards compatibity.\n var retCode = messageData.type in { true: 1, false: 1, undefined: 1 }\n\n if (retCode) {\n log(iframeId, 'Ignoring init message from meta parent page')\n }\n\n return retCode\n }\n\n function getMsgBody(offset) {\n return msg.substr(msg.indexOf(':') + msgHeaderLen + offset)\n }\n\n function forwardMsgFromIFrame(msgBody) {\n log(\n iframeId,\n 'onMessage passed: {iframe: ' +\n messageData.iframe.id +\n ', message: ' +\n msgBody +\n '}'\n )\n\n on('onMessage', {\n iframe: messageData.iframe,\n message: JSON.parse(msgBody)\n })\n\n log(iframeId, '--')\n }\n\n function getPageInfo() {\n var bodyPosition = document.body.getBoundingClientRect(),\n iFramePosition = messageData.iframe.getBoundingClientRect()\n\n return JSON.stringify({\n iframeHeight: iFramePosition.height,\n iframeWidth: iFramePosition.width,\n clientHeight: Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n ),\n clientWidth: Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n ),\n offsetTop: parseInt(iFramePosition.top - bodyPosition.top, 10),\n offsetLeft: parseInt(iFramePosition.left - bodyPosition.left, 10),\n scrollTop: window.pageYOffset,\n scrollLeft: window.pageXOffset,\n documentHeight: document.documentElement.clientHeight,\n documentWidth: document.documentElement.clientWidth,\n windowHeight: window.innerHeight,\n windowWidth: window.innerWidth\n })\n }\n\n function sendPageInfoToIframe(iframe, iframeId) {\n function debouncedTrigger() {\n trigger('Send Page Info', 'pageInfo:' + getPageInfo(), iframe, iframeId)\n }\n debounceFrameEvents(debouncedTrigger, 32, iframeId)\n }\n\n function startPageInfoMonitor() {\n function setListener(type, func) {\n function sendPageInfo() {\n if (settings[id]) {\n sendPageInfoToIframe(settings[id].iframe, id)\n } else {\n stop()\n }\n }\n\n ;['scroll', 'resize'].forEach(function (evt) {\n log(id, type + evt + ' listener for sendPageInfo')\n func(window, evt, sendPageInfo)\n })\n }\n\n function stop() {\n setListener('Remove ', removeEventListener)\n }\n\n function start() {\n setListener('Add ', addEventListener)\n }\n\n var id = iframeId // Create locally scoped copy of iFrame ID\n\n start()\n\n if (settings[id]) {\n settings[id].stopPageInfo = stop\n }\n }\n\n function stopPageInfoMonitor() {\n if (settings[iframeId] && settings[iframeId].stopPageInfo) {\n settings[iframeId].stopPageInfo()\n delete settings[iframeId].stopPageInfo\n }\n }\n\n function checkIFrameExists() {\n var retBool = true\n\n if (null === messageData.iframe) {\n warn(iframeId, 'IFrame (' + messageData.id + ') not found')\n retBool = false\n }\n return retBool\n }\n\n function getElementPosition(target) {\n var iFramePosition = target.getBoundingClientRect()\n\n getPagePosition(iframeId)\n\n return {\n x: Math.floor(Number(iFramePosition.left) + Number(pagePosition.x)),\n y: Math.floor(Number(iFramePosition.top) + Number(pagePosition.y))\n }\n }\n\n function scrollRequestFromChild(addOffset) {\n /* istanbul ignore next */ // Not testable in Karma\n function reposition() {\n pagePosition = newPosition\n scrollTo()\n log(iframeId, '--')\n }\n\n function calcOffset() {\n return {\n x: Number(messageData.width) + offset.x,\n y: Number(messageData.height) + offset.y\n }\n }\n\n function scrollParent() {\n if (window.parentIFrame) {\n window.parentIFrame['scrollTo' + (addOffset ? 'Offset' : '')](\n newPosition.x,\n newPosition.y\n )\n } else {\n warn(\n iframeId,\n 'Unable to scroll to requested position, window.parentIFrame not found'\n )\n }\n }\n\n var offset = addOffset\n ? getElementPosition(messageData.iframe)\n : { x: 0, y: 0 },\n newPosition = calcOffset()\n\n log(\n iframeId,\n 'Reposition requested from iFrame (offset x:' +\n offset.x +\n ' y:' +\n offset.y +\n ')'\n )\n\n if (window.top !== window.self) {\n scrollParent()\n } else {\n reposition()\n }\n }\n\n function scrollTo() {\n if (false !== on('onScroll', pagePosition)) {\n setPagePosition(iframeId)\n } else {\n unsetPagePosition()\n }\n }\n\n function findTarget(location) {\n function jumpToTarget() {\n var jumpPosition = getElementPosition(target)\n\n log(\n iframeId,\n 'Moving to in page link (#' +\n hash +\n ') at x: ' +\n jumpPosition.x +\n ' y: ' +\n jumpPosition.y\n )\n pagePosition = {\n x: jumpPosition.x,\n y: jumpPosition.y\n }\n\n scrollTo()\n log(iframeId, '--')\n }\n\n function jumpToParent() {\n if (window.parentIFrame) {\n window.parentIFrame.moveToAnchor(hash)\n } else {\n log(\n iframeId,\n 'In page link #' +\n hash +\n ' not found and window.parentIFrame not found'\n )\n }\n }\n\n var hash = location.split('#')[1] || '',\n hashData = decodeURIComponent(hash),\n target =\n document.getElementById(hashData) ||\n document.getElementsByName(hashData)[0]\n\n if (target) {\n jumpToTarget()\n } else if (window.top !== window.self) {\n jumpToParent()\n } else {\n log(iframeId, 'In page link #' + hash + ' not found')\n }\n }\n\n function onMouse(event) {\n var mousePos = {}\n\n if (Number(messageData.width) === 0 && Number(messageData.height) === 0) {\n var data = getMsgBody(9).split(':')\n mousePos = {\n x: data[1],\n y: data[0]\n }\n } else {\n mousePos = {\n x: messageData.width,\n y: messageData.height\n }\n }\n\n on(event, {\n iframe: messageData.iframe,\n screenX: Number(mousePos.x),\n screenY: Number(mousePos.y),\n type: messageData.type\n })\n }\n\n function on(funcName, val) {\n return chkEvent(iframeId, funcName, val)\n }\n\n function actionMsg() {\n if (settings[iframeId] && settings[iframeId].firstRun) firstRun()\n\n switch (messageData.type) {\n case 'close':\n closeIFrame(messageData.iframe)\n break\n\n case 'message':\n forwardMsgFromIFrame(getMsgBody(6))\n break\n\n case 'mouseenter':\n onMouse('onMouseEnter')\n break\n\n case 'mouseleave':\n onMouse('onMouseLeave')\n break\n\n case 'autoResize':\n settings[iframeId].autoResize = JSON.parse(getMsgBody(9))\n break\n\n case 'scrollTo':\n scrollRequestFromChild(false)\n break\n\n case 'scrollToOffset':\n scrollRequestFromChild(true)\n break\n\n case 'pageInfo':\n sendPageInfoToIframe(\n settings[iframeId] && settings[iframeId].iframe,\n iframeId\n )\n startPageInfoMonitor()\n break\n\n case 'pageInfoStop':\n stopPageInfoMonitor()\n break\n\n case 'inPageLink':\n findTarget(getMsgBody(9))\n break\n\n case 'reset':\n resetIFrame(messageData)\n break\n\n case 'init':\n resizeIFrame()\n on('onInit', messageData.iframe)\n break\n\n default:\n if (\n Number(messageData.width) === 0 &&\n Number(messageData.height) === 0\n ) {\n warn(\n 'Unsupported message received (' +\n messageData.type +\n '), this is likely due to the iframe containing a later ' +\n 'version of iframe-resizer than the parent page'\n )\n } else {\n resizeIFrame()\n }\n }\n }\n\n function hasSettings(iframeId) {\n var retBool = true\n\n if (!settings[iframeId]) {\n retBool = false\n warn(\n messageData.type +\n ' No settings for ' +\n iframeId +\n '. Message was: ' +\n msg\n )\n }\n\n return retBool\n }\n\n function iFrameReadyMsgReceived() {\n // eslint-disable-next-line no-restricted-syntax, guard-for-in\n for (var iframeId in settings) {\n trigger(\n 'iFrame requested init',\n createOutgoingMsg(iframeId),\n settings[iframeId].iframe,\n iframeId\n )\n }\n }\n\n function firstRun() {\n if (settings[iframeId]) {\n settings[iframeId].firstRun = false\n }\n }\n\n var msg = event.data,\n messageData = {},\n iframeId = null\n\n if ('[iFrameResizerChild]Ready' === msg) {\n iFrameReadyMsgReceived()\n } else if (isMessageForUs()) {\n messageData = processMsg()\n iframeId = messageData.id\n if (settings[iframeId]) {\n settings[iframeId].loaded = true\n }\n\n if (!isMessageFromMetaParent() && hasSettings(iframeId)) {\n log(iframeId, 'Received: ' + msg)\n\n if (checkIFrameExists() && isMessageFromIFrame()) {\n actionMsg()\n }\n }\n } else {\n info(iframeId, 'Ignored: ' + msg)\n }\n }\n\n function chkEvent(iframeId, funcName, val) {\n var func = null,\n retVal = null\n\n if (settings[iframeId]) {\n func = settings[iframeId][funcName]\n\n if ('function' === typeof func) {\n retVal = func(val)\n } else {\n throw new TypeError(\n funcName + ' on iFrame[' + iframeId + '] is not a function'\n )\n }\n }\n\n return retVal\n }\n\n function removeIframeListeners(iframe) {\n var iframeId = iframe.id\n delete settings[iframeId]\n }\n\n function closeIFrame(iframe) {\n var iframeId = iframe.id\n if (chkEvent(iframeId, 'onClose', iframeId) === false) {\n log(iframeId, 'Close iframe cancelled by onClose event')\n return\n }\n log(iframeId, 'Removing iFrame: ' + iframeId)\n\n try {\n // Catch race condition error with React\n if (iframe.parentNode) {\n iframe.parentNode.removeChild(iframe)\n }\n } catch (error) {\n warn(error)\n }\n\n chkEvent(iframeId, 'onClosed', iframeId)\n log(iframeId, '--')\n removeIframeListeners(iframe)\n }\n\n function getPagePosition(iframeId) {\n if (null === pagePosition) {\n pagePosition = {\n x:\n window.pageXOffset !== undefined\n ? window.pageXOffset\n : document.documentElement.scrollLeft,\n y:\n window.pageYOffset !== undefined\n ? window.pageYOffset\n : document.documentElement.scrollTop\n }\n log(\n iframeId,\n 'Get page position: ' + pagePosition.x + ',' + pagePosition.y\n )\n }\n }\n\n function setPagePosition(iframeId) {\n if (null !== pagePosition) {\n window.scrollTo(pagePosition.x, pagePosition.y)\n log(\n iframeId,\n 'Set page position: ' + pagePosition.x + ',' + pagePosition.y\n )\n unsetPagePosition()\n }\n }\n\n function unsetPagePosition() {\n pagePosition = null\n }\n\n function resetIFrame(messageData) {\n function reset() {\n setSize(messageData)\n trigger('reset', 'reset', messageData.iframe, messageData.id)\n }\n\n log(\n messageData.id,\n 'Size reset requested by ' +\n ('init' === messageData.type ? 'host page' : 'iFrame')\n )\n getPagePosition(messageData.id)\n syncResize(reset, messageData, 'reset')\n }\n\n function setSize(messageData) {\n function setDimension(dimension) {\n if (!messageData.id) {\n log('undefined', 'messageData id not set')\n return\n }\n messageData.iframe.style[dimension] = messageData[dimension] + 'px'\n log(\n messageData.id,\n 'IFrame (' +\n iframeId +\n ') ' +\n dimension +\n ' set to ' +\n messageData[dimension] +\n 'px'\n )\n }\n\n function chkZero(dimension) {\n // FireFox sets dimension of hidden iFrames to zero.\n // So if we detect that set up an event to check for\n // when iFrame becomes visible.\n\n /* istanbul ignore next */ // Not testable in PhantomJS\n if (!hiddenCheckEnabled && '0' === messageData[dimension]) {\n hiddenCheckEnabled = true\n log(iframeId, 'Hidden iFrame detected, creating visibility listener')\n fixHiddenIFrames()\n }\n }\n\n function processDimension(dimension) {\n setDimension(dimension)\n chkZero(dimension)\n }\n\n var iframeId = messageData.iframe.id\n\n if (settings[iframeId]) {\n if (settings[iframeId].sizeHeight) {\n processDimension('height')\n }\n if (settings[iframeId].sizeWidth) {\n processDimension('width')\n }\n }\n }\n\n function syncResize(func, messageData, doNotSync) {\n /* istanbul ignore if */ // Not testable in PhantomJS\n if (\n doNotSync !== messageData.type &&\n requestAnimationFrame &&\n // including check for jasmine because had trouble getting spy to work in unit test using requestAnimationFrame\n !window.jasmine\n ) {\n log(messageData.id, 'Requesting animation frame')\n requestAnimationFrame(func)\n } else {\n func()\n }\n }\n\n function trigger(calleeMsg, msg, iframe, id, noResponseWarning) {\n function postMessageToIFrame() {\n var target = settings[id] && settings[id].targetOrigin\n log(\n id,\n '[' +\n calleeMsg +\n '] Sending msg to iframe[' +\n id +\n '] (' +\n msg +\n ') targetOrigin: ' +\n target\n )\n iframe.contentWindow.postMessage(msgId + msg, target)\n }\n\n function iFrameNotFound() {\n warn(id, '[' + calleeMsg + '] IFrame(' + id + ') not found')\n }\n\n function chkAndSend() {\n if (\n iframe &&\n 'contentWindow' in iframe &&\n null !== iframe.contentWindow\n ) {\n // Null test for PhantomJS\n postMessageToIFrame()\n } else {\n iFrameNotFound()\n }\n }\n\n function warnOnNoResponse() {\n function warning() {\n if (settings[id] && !settings[id].loaded && !errorShown) {\n errorShown = true\n warn(\n id,\n 'IFrame has not responded within ' +\n settings[id].warningTimeout / 1000 +\n ' seconds. Check iFrameResizer.contentWindow.js has been loaded in iFrame. This message can be ignored if everything is working, or you can set the warningTimeout option to a higher value or zero to suppress this warning.'\n )\n }\n }\n\n if (\n !!noResponseWarning &&\n settings[id] &&\n !!settings[id].warningTimeout\n ) {\n settings[id].msgTimeout = setTimeout(\n warning,\n settings[id].warningTimeout\n )\n }\n }\n\n var errorShown = false\n\n id = id || iframe.id\n\n if (settings[id]) {\n chkAndSend()\n warnOnNoResponse()\n }\n }\n\n function createOutgoingMsg(iframeId) {\n return (\n iframeId +\n ':' +\n settings[iframeId].bodyMarginV1 +\n ':' +\n settings[iframeId].sizeWidth +\n ':' +\n settings[iframeId].log +\n ':' +\n settings[iframeId].interval +\n ':' +\n settings[iframeId].enablePublicMethods +\n ':' +\n settings[iframeId].autoResize +\n ':' +\n settings[iframeId].bodyMargin +\n ':' +\n settings[iframeId].heightCalculationMethod +\n ':' +\n settings[iframeId].bodyBackground +\n ':' +\n settings[iframeId].bodyPadding +\n ':' +\n settings[iframeId].tolerance +\n ':' +\n settings[iframeId].inPageLinks +\n ':' +\n settings[iframeId].resizeFrom +\n ':' +\n settings[iframeId].widthCalculationMethod +\n ':' +\n settings[iframeId].mouseEvents\n )\n }\n\n function isNumber(value) {\n return typeof value === 'number'\n }\n\n function setupIFrame(iframe, options) {\n function setLimits() {\n function addStyle(style) {\n var styleValue = settings[iframeId][style]\n if (Infinity !== styleValue && 0 !== styleValue) {\n iframe.style[style] = isNumber(styleValue)\n ? styleValue + 'px'\n : styleValue\n log(iframeId, 'Set ' + style + ' = ' + iframe.style[style])\n }\n }\n\n function chkMinMax(dimension) {\n if (\n settings[iframeId]['min' + dimension] >\n settings[iframeId]['max' + dimension]\n ) {\n throw new Error(\n 'Value for min' +\n dimension +\n ' can not be greater than max' +\n dimension\n )\n }\n }\n\n chkMinMax('Height')\n chkMinMax('Width')\n\n addStyle('maxHeight')\n addStyle('minHeight')\n addStyle('maxWidth')\n addStyle('minWidth')\n }\n\n function newId() {\n var id = (options && options.id) || defaults.id + count++\n if (null !== document.getElementById(id)) {\n id += count++\n }\n return id\n }\n\n function ensureHasId(iframeId) {\n if ('' === iframeId) {\n // eslint-disable-next-line no-multi-assign\n iframe.id = iframeId = newId()\n logEnabled = (options || {}).log\n log(\n iframeId,\n 'Added missing iframe ID: ' + iframeId + ' (' + iframe.src + ')'\n )\n }\n\n return iframeId\n }\n\n function setScrolling() {\n log(\n iframeId,\n 'IFrame scrolling ' +\n (settings[iframeId] && settings[iframeId].scrolling\n ? 'enabled'\n : 'disabled') +\n ' for ' +\n iframeId\n )\n iframe.style.overflow =\n false === (settings[iframeId] && settings[iframeId].scrolling)\n ? 'hidden'\n : 'auto'\n switch (settings[iframeId] && settings[iframeId].scrolling) {\n case 'omit':\n break\n\n case true:\n iframe.scrolling = 'yes'\n break\n\n case false:\n iframe.scrolling = 'no'\n break\n\n default:\n iframe.scrolling = settings[iframeId]\n ? settings[iframeId].scrolling\n : 'no'\n }\n }\n\n // The V1 iFrame script expects an int, where as in V2 expects a CSS\n // string value such as '1px 3em', so if we have an int for V2, set V1=V2\n // and then convert V2 to a string PX value.\n function setupBodyMarginValues() {\n if (\n 'number' ===\n typeof (settings[iframeId] && settings[iframeId].bodyMargin) ||\n '0' === (settings[iframeId] && settings[iframeId].bodyMargin)\n ) {\n settings[iframeId].bodyMarginV1 = settings[iframeId].bodyMargin\n settings[iframeId].bodyMargin =\n '' + settings[iframeId].bodyMargin + 'px'\n }\n }\n\n function checkReset() {\n // Reduce scope of firstRun to function, because IE8's JS execution\n // context stack is borked and this value gets externally\n // changed midway through running this function!!!\n var firstRun = settings[iframeId] && settings[iframeId].firstRun,\n resetRequertMethod =\n settings[iframeId] &&\n settings[iframeId].heightCalculationMethod in resetRequiredMethods\n\n if (!firstRun && resetRequertMethod) {\n resetIFrame({ iframe: iframe, height: 0, width: 0, type: 'init' })\n }\n }\n\n function setupIFrameObject() {\n if (settings[iframeId]) {\n settings[iframeId].iframe.iFrameResizer = {\n close: closeIFrame.bind(null, settings[iframeId].iframe),\n\n removeListeners: removeIframeListeners.bind(\n null,\n settings[iframeId].iframe\n ),\n\n resize: trigger.bind(\n null,\n 'Window resize',\n 'resize',\n settings[iframeId].iframe\n ),\n\n moveToAnchor: function (anchor) {\n trigger(\n 'Move to anchor',\n 'moveToAnchor:' + anchor,\n settings[iframeId].iframe,\n iframeId\n )\n },\n\n sendMessage: function (message) {\n message = JSON.stringify(message)\n trigger(\n 'Send Message',\n 'message:' + message,\n settings[iframeId].iframe,\n iframeId\n )\n }\n }\n }\n }\n\n // We have to call trigger twice, as we can not be sure if all\n // iframes have completed loading when this code runs. The\n // event listener also catches the page changing in the iFrame.\n function init(msg) {\n function iFrameLoaded() {\n trigger('iFrame.onload', msg, iframe, undefined, true)\n checkReset()\n }\n\n function createDestroyObserver(MutationObserver) {\n if (!iframe.parentNode) {\n return\n }\n\n var destroyObserver = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n var removedNodes = Array.prototype.slice.call(mutation.removedNodes) // Transform NodeList into an Array\n removedNodes.forEach(function (removedNode) {\n if (removedNode === iframe) {\n closeIFrame(iframe)\n }\n })\n })\n })\n destroyObserver.observe(iframe.parentNode, {\n childList: true\n })\n }\n\n var MutationObserver = getMutationObserver()\n if (MutationObserver) {\n createDestroyObserver(MutationObserver)\n }\n\n addEventListener(iframe, 'load', iFrameLoaded)\n trigger('init', msg, iframe, undefined, true)\n }\n\n function checkOptions(options) {\n if ('object' !== typeof options) {\n throw new TypeError('Options is not an object')\n }\n }\n\n function copyOptions(options) {\n // eslint-disable-next-line no-restricted-syntax\n for (var option in defaults) {\n if (Object.prototype.hasOwnProperty.call(defaults, option)) {\n settings[iframeId][option] = Object.prototype.hasOwnProperty.call(\n options,\n option\n )\n ? options[option]\n : defaults[option]\n }\n }\n }\n\n function getTargetOrigin(remoteHost) {\n return '' === remoteHost ||\n null !== remoteHost.match(/^(about:blank|javascript:|file:\\/\\/)/)\n ? '*'\n : remoteHost\n }\n\n function depricate(key) {\n var splitName = key.split('Callback')\n\n if (splitName.length === 2) {\n var name =\n 'on' + splitName[0].charAt(0).toUpperCase() + splitName[0].slice(1)\n this[name] = this[key]\n delete this[key]\n warn(\n iframeId,\n \"Deprecated: '\" +\n key +\n \"' has been renamed '\" +\n name +\n \"'. The old method will be removed in the next major version.\"\n )\n }\n }\n\n function processOptions(options) {\n options = options || {}\n settings[iframeId] = {\n firstRun: true,\n iframe: iframe,\n remoteHost: iframe.src && iframe.src.split('/').slice(0, 3).join('/')\n }\n\n checkOptions(options)\n Object.keys(options).forEach(depricate, options)\n copyOptions(options)\n\n if (settings[iframeId]) {\n settings[iframeId].targetOrigin =\n true === settings[iframeId].checkOrigin\n ? getTargetOrigin(settings[iframeId].remoteHost)\n : '*'\n }\n }\n\n function beenHere() {\n return iframeId in settings && 'iFrameResizer' in iframe\n }\n\n var iframeId = ensureHasId(iframe.id)\n\n if (!beenHere()) {\n processOptions(options)\n setScrolling()\n setLimits()\n setupBodyMarginValues()\n init(createOutgoingMsg(iframeId))\n setupIFrameObject()\n } else {\n warn(iframeId, 'Ignored iFrame, already setup.')\n }\n }\n\n function debouce(fn, time) {\n if (null === timer) {\n timer = setTimeout(function () {\n timer = null\n fn()\n }, time)\n }\n }\n\n var frameTimer = {}\n function debounceFrameEvents(fn, time, frameId) {\n if (!frameTimer[frameId]) {\n frameTimer[frameId] = setTimeout(function () {\n frameTimer[frameId] = null\n fn()\n }, time)\n }\n }\n\n // Not testable in PhantomJS\n /* istanbul ignore next */\n\n function fixHiddenIFrames() {\n function checkIFrames() {\n function checkIFrame(settingId) {\n function chkDimension(dimension) {\n return (\n '0px' ===\n (settings[settingId] && settings[settingId].iframe.style[dimension])\n )\n }\n\n function isVisible(el) {\n return null !== el.offsetParent\n }\n\n if (\n settings[settingId] &&\n isVisible(settings[settingId].iframe) &&\n (chkDimension('height') || chkDimension('width'))\n ) {\n trigger(\n 'Visibility change',\n 'resize',\n settings[settingId].iframe,\n settingId\n )\n }\n }\n\n Object.keys(settings).forEach(function (key) {\n checkIFrame(key)\n })\n }\n\n function mutationObserved(mutations) {\n log(\n 'window',\n 'Mutation observed: ' + mutations[0].target + ' ' + mutations[0].type\n )\n debouce(checkIFrames, 16)\n }\n\n function createMutationObserver() {\n var target = document.querySelector('body'),\n config = {\n attributes: true,\n attributeOldValue: false,\n characterData: true,\n characterDataOldValue: false,\n childList: true,\n subtree: true\n },\n observer = new MutationObserver(mutationObserved)\n\n observer.observe(target, config)\n }\n\n var MutationObserver = getMutationObserver()\n if (MutationObserver) {\n createMutationObserver()\n }\n }\n\n function resizeIFrames(event) {\n function resize() {\n sendTriggerMsg('Window ' + event, 'resize')\n }\n\n log('window', 'Trigger event: ' + event)\n debouce(resize, 16)\n }\n\n // Not testable in PhantomJS\n /* istanbul ignore next */\n function tabVisible() {\n function resize() {\n sendTriggerMsg('Tab Visable', 'resize')\n }\n\n if ('hidden' !== document.visibilityState) {\n log('document', 'Trigger event: Visiblity change')\n debouce(resize, 16)\n }\n }\n\n function sendTriggerMsg(eventName, event) {\n function isIFrameResizeEnabled(iframeId) {\n return (\n settings[iframeId] &&\n 'parent' === settings[iframeId].resizeFrom &&\n settings[iframeId].autoResize &&\n !settings[iframeId].firstRun\n )\n }\n\n Object.keys(settings).forEach(function (iframeId) {\n if (isIFrameResizeEnabled(iframeId)) {\n trigger(eventName, event, settings[iframeId].iframe, iframeId)\n }\n })\n }\n\n function setupEventListeners() {\n addEventListener(window, 'message', iFrameListener)\n\n addEventListener(window, 'resize', function () {\n resizeIFrames('resize')\n })\n\n addEventListener(document, 'visibilitychange', tabVisible)\n\n addEventListener(document, '-webkit-visibilitychange', tabVisible)\n }\n\n function factory() {\n function init(options, element) {\n function chkType() {\n if (!element.tagName) {\n throw new TypeError('Object is not a valid DOM element')\n } else if ('IFRAME' !== element.tagName.toUpperCase()) {\n throw new TypeError(\n 'Expected <IFRAME> tag, found <' + element.tagName + '>'\n )\n }\n }\n\n if (element) {\n chkType()\n setupIFrame(element, options)\n iFrames.push(element)\n }\n }\n\n function warnDeprecatedOptions(options) {\n if (options && options.enablePublicMethods) {\n warn(\n 'enablePublicMethods option has been removed, public methods are now always available in the iFrame'\n )\n }\n }\n\n var iFrames\n\n setupRequestAnimationFrame()\n setupEventListeners()\n\n return function iFrameResizeF(options, target) {\n iFrames = [] // Only return iFrames past in on this call\n\n warnDeprecatedOptions(options)\n\n switch (typeof target) {\n case 'undefined':\n case 'string':\n Array.prototype.forEach.call(\n document.querySelectorAll(target || 'iframe'),\n init.bind(undefined, options)\n )\n break\n\n case 'object':\n init(options, target)\n break\n\n default:\n throw new TypeError('Unexpected data type (' + typeof target + ')')\n }\n\n return iFrames\n }\n }\n\n function createJQueryPublicMethod($) {\n if (!$.fn) {\n info('', 'Unable to bind to jQuery, it is not fully loaded.')\n } else if (!$.fn.iFrameResize) {\n $.fn.iFrameResize = function $iFrameResizeF(options) {\n function init(index, element) {\n setupIFrame(element, options)\n }\n\n return this.filter('iframe').each(init).end()\n }\n }\n }\n\n if (window.jQuery) {\n createJQueryPublicMethod(window.jQuery)\n }\n\n if (typeof define === 'function' && define.amd) {\n define([], factory)\n } else if (typeof module === 'object' && typeof module.exports === 'object') {\n // Node for browserfy\n module.exports = factory()\n }\n window.iFrameResize = window.iFrameResize || factory()\n})()\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","(typeof navigator !== \"undefined\") && (function(root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(function() {\n return factory(root);\n });\n } else if (typeof module === \"object\" && module.exports) {\n module.exports = factory(root);\n } else {\n root.lottie = factory(root);\n root.bodymovin = root.lottie;\n }\n}((window || {}), function(window) {\n\t/* global locationHref:writable, animationManager, subframeEnabled:writable, defaultCurveSegments:writable, roundValues,\r\nexpressionsPlugin:writable, PropertyFactory, ShapePropertyFactory, Matrix, idPrefix:writable, _useWebWorker:writable */\r\n/* exported locationHref, subframeEnabled, expressionsPlugin, idPrefix, _useWebWorker */\r\n\r\n'use strict';\r\n\r\n/* exported svgNS, locationHref, initialDefaultFrame, _useWebWorker */\r\n\r\nvar svgNS = 'http://www.w3.org/2000/svg';\r\n\r\nvar locationHref = '';\r\n\r\nvar initialDefaultFrame = -999999;\r\n\r\nvar _useWebWorker = false;\r\n\r\n/* global createSizedArray */\r\n/* exported subframeEnabled, expressionsPlugin, isSafari, cachedColors, bmPow, bmSqrt, bmFloor, bmMax, bmMin, ProjectInterface,\r\ndefaultCurveSegments, degToRads, roundCorner, bmRnd, styleDiv, BMEnterFrameEvent, BMCompleteEvent, BMCompleteLoopEvent,\r\nBMSegmentStartEvent, BMDestroyEvent, BMRenderFrameErrorEvent, BMConfigErrorEvent, BMAnimationConfigErrorEvent, createElementID,\r\naddSaturationToRGB, addBrightnessToRGB, addHueToRGB, rgbToHex */\r\n\r\nvar subframeEnabled = true;\r\nvar idPrefix = '';\r\nvar expressionsPlugin;\r\nvar isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\r\nvar cachedColors = {};\r\nvar bmRnd;\r\nvar bmPow = Math.pow;\r\nvar bmSqrt = Math.sqrt;\r\nvar bmFloor = Math.floor;\r\nvar bmMax = Math.max;\r\nvar bmMin = Math.min;\r\n\r\nvar BMMath = {};\r\n(function () {\r\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\r\n var i;\r\n var len = propertyNames.length;\r\n for (i = 0; i < len; i += 1) {\r\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\r\n }\r\n}());\r\n\r\nfunction ProjectInterface() { return {}; }\r\n\r\nBMMath.random = Math.random;\r\nBMMath.abs = function (val) {\r\n var tOfVal = typeof val;\r\n if (tOfVal === 'object' && val.length) {\r\n var absArr = createSizedArray(val.length);\r\n var i;\r\n var len = val.length;\r\n for (i = 0; i < len; i += 1) {\r\n absArr[i] = Math.abs(val[i]);\r\n }\r\n return absArr;\r\n }\r\n return Math.abs(val);\r\n};\r\nvar defaultCurveSegments = 150;\r\nvar degToRads = Math.PI / 180;\r\nvar roundCorner = 0.5519;\r\n\r\nfunction roundValues(flag) {\r\n if (flag) {\r\n bmRnd = Math.round;\r\n } else {\r\n bmRnd = function (val) {\r\n return val;\r\n };\r\n }\r\n}\r\nroundValues(false);\r\n\r\nfunction styleDiv(element) {\r\n element.style.position = 'absolute';\r\n element.style.top = 0;\r\n element.style.left = 0;\r\n element.style.display = 'block';\r\n element.style.transformOrigin = '0 0';\r\n element.style.webkitTransformOrigin = '0 0';\r\n element.style.backfaceVisibility = 'visible';\r\n element.style.webkitBackfaceVisibility = 'visible';\r\n element.style.transformStyle = 'preserve-3d';\r\n element.style.webkitTransformStyle = 'preserve-3d';\r\n element.style.mozTransformStyle = 'preserve-3d';\r\n}\r\n\r\nfunction BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\r\n this.type = type;\r\n this.currentTime = currentTime;\r\n this.totalTime = totalTime;\r\n this.direction = frameMultiplier < 0 ? -1 : 1;\r\n}\r\n\r\nfunction BMCompleteEvent(type, frameMultiplier) {\r\n this.type = type;\r\n this.direction = frameMultiplier < 0 ? -1 : 1;\r\n}\r\n\r\nfunction BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\r\n this.type = type;\r\n this.currentLoop = currentLoop;\r\n this.totalLoops = totalLoops;\r\n this.direction = frameMultiplier < 0 ? -1 : 1;\r\n}\r\n\r\nfunction BMSegmentStartEvent(type, firstFrame, totalFrames) {\r\n this.type = type;\r\n this.firstFrame = firstFrame;\r\n this.totalFrames = totalFrames;\r\n}\r\n\r\nfunction BMDestroyEvent(type, target) {\r\n this.type = type;\r\n this.target = target;\r\n}\r\n\r\nfunction BMRenderFrameErrorEvent(nativeError, currentTime) {\r\n this.type = 'renderFrameError';\r\n this.nativeError = nativeError;\r\n this.currentTime = currentTime;\r\n}\r\n\r\nfunction BMConfigErrorEvent(nativeError) {\r\n this.type = 'configError';\r\n this.nativeError = nativeError;\r\n}\r\n\r\nfunction BMAnimationConfigErrorEvent(type, nativeError) {\r\n this.type = type;\r\n this.nativeError = nativeError;\r\n}\r\n\r\nvar createElementID = (function () {\r\n var _count = 0;\r\n return function createID() {\r\n _count += 1;\r\n return idPrefix + '__lottie_element_' + _count;\r\n };\r\n}());\r\n\r\nfunction HSVtoRGB(h, s, v) {\r\n var r;\r\n var g;\r\n var b;\r\n var i;\r\n var f;\r\n var p;\r\n var q;\r\n var t;\r\n i = Math.floor(h * 6);\r\n f = h * 6 - i;\r\n p = v * (1 - s);\r\n q = v * (1 - f * s);\r\n t = v * (1 - (1 - f) * s);\r\n switch (i % 6) {\r\n case 0: r = v; g = t; b = p; break;\r\n case 1: r = q; g = v; b = p; break;\r\n case 2: r = p; g = v; b = t; break;\r\n case 3: r = p; g = q; b = v; break;\r\n case 4: r = t; g = p; b = v; break;\r\n case 5: r = v; g = p; b = q; break;\r\n default: break;\r\n }\r\n return [r,\r\n g,\r\n b];\r\n}\r\n\r\nfunction RGBtoHSV(r, g, b) {\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var d = max - min;\r\n var h;\r\n var s = (max === 0 ? 0 : d / max);\r\n var v = max / 255;\r\n\r\n switch (max) {\r\n case min: h = 0; break;\r\n case r: h = (g - b) + d * (g < b ? 6 : 0); h /= 6 * d; break;\r\n case g: h = (b - r) + d * 2; h /= 6 * d; break;\r\n case b: h = (r - g) + d * 4; h /= 6 * d; break;\r\n default: break;\r\n }\r\n\r\n return [\r\n h,\r\n s,\r\n v,\r\n ];\r\n}\r\n\r\nfunction addSaturationToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[1] += offset;\r\n if (hsv[1] > 1) {\r\n hsv[1] = 1;\r\n } else if (hsv[1] <= 0) {\r\n hsv[1] = 0;\r\n }\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n}\r\n\r\nfunction addBrightnessToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[2] += offset;\r\n if (hsv[2] > 1) {\r\n hsv[2] = 1;\r\n } else if (hsv[2] < 0) {\r\n hsv[2] = 0;\r\n }\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n}\r\n\r\nfunction addHueToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[0] += offset / 360;\r\n if (hsv[0] > 1) {\r\n hsv[0] -= 1;\r\n } else if (hsv[0] < 0) {\r\n hsv[0] += 1;\r\n }\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n}\r\n\r\nvar rgbToHex = (function () {\r\n var colorMap = [];\r\n var i;\r\n var hex;\r\n for (i = 0; i < 256; i += 1) {\r\n hex = i.toString(16);\r\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\r\n }\r\n\r\n return function (r, g, b) {\r\n if (r < 0) {\r\n r = 0;\r\n }\r\n if (g < 0) {\r\n g = 0;\r\n }\r\n if (b < 0) {\r\n b = 0;\r\n }\r\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\r\n };\r\n}());\r\n\r\nfunction BaseEvent() {}\r\nBaseEvent.prototype = {\r\n triggerEvent: function (eventName, args) {\r\n if (this._cbs[eventName]) {\r\n var callbacks = this._cbs[eventName];\r\n for (var i = 0; i < callbacks.length; i += 1) {\r\n callbacks[i](args);\r\n }\r\n }\r\n },\r\n addEventListener: function (eventName, callback) {\r\n if (!this._cbs[eventName]) {\r\n this._cbs[eventName] = [];\r\n }\r\n this._cbs[eventName].push(callback);\r\n\r\n return function () {\r\n this.removeEventListener(eventName, callback);\r\n }.bind(this);\r\n },\r\n removeEventListener: function (eventName, callback) {\r\n if (!callback) {\r\n this._cbs[eventName] = null;\r\n } else if (this._cbs[eventName]) {\r\n var i = 0;\r\n var len = this._cbs[eventName].length;\r\n while (i < len) {\r\n if (this._cbs[eventName][i] === callback) {\r\n this._cbs[eventName].splice(i, 1);\r\n i -= 1;\r\n len -= 1;\r\n }\r\n i += 1;\r\n }\r\n if (!this._cbs[eventName].length) {\r\n this._cbs[eventName] = null;\r\n }\r\n }\r\n },\r\n};\r\n\r\n/* exported createTypedArray, createSizedArray */\r\n\r\nvar createTypedArray = (function () {\r\n function createRegularArray(type, len) {\r\n var i = 0;\r\n var arr = [];\r\n var value;\r\n switch (type) {\r\n case 'int16':\r\n case 'uint8c':\r\n value = 1;\r\n break;\r\n default:\r\n value = 1.1;\r\n break;\r\n }\r\n for (i = 0; i < len; i += 1) {\r\n arr.push(value);\r\n }\r\n return arr;\r\n }\r\n function createTypedArrayFactory(type, len) {\r\n if (type === 'float32') {\r\n return new Float32Array(len);\r\n } if (type === 'int16') {\r\n return new Int16Array(len);\r\n } if (type === 'uint8c') {\r\n return new Uint8ClampedArray(len);\r\n }\r\n return createRegularArray(type, len);\r\n }\r\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\r\n return createTypedArrayFactory;\r\n }\r\n return createRegularArray;\r\n}());\r\n\r\nfunction createSizedArray(len) {\r\n return Array.apply(null, { length: len });\r\n}\r\n\r\n/* global svgNS */\r\n/* exported createNS */\r\n\r\nfunction createNS(type) {\r\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\r\n return document.createElementNS(svgNS, type);\r\n}\r\n\r\n/* exported createTag */\r\n\r\nfunction createTag(type) {\r\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\r\n return document.createElement(type);\r\n}\r\n\r\nfunction DynamicPropertyContainer() {}\r\nDynamicPropertyContainer.prototype = {\r\n addDynamicProperty: function (prop) {\r\n if (this.dynamicProperties.indexOf(prop) === -1) {\r\n this.dynamicProperties.push(prop);\r\n this.container.addDynamicProperty(this);\r\n this._isAnimated = true;\r\n }\r\n },\r\n iterateDynamicProperties: function () {\r\n this._mdf = false;\r\n var i;\r\n var len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n if (this.dynamicProperties[i]._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n },\r\n initDynamicPropertyContainer: function (container) {\r\n this.container = container;\r\n this.dynamicProperties = [];\r\n this._mdf = false;\r\n this._isAnimated = false;\r\n },\r\n};\r\n\r\n/* exported getBlendMode */\r\n\r\nvar getBlendMode = (function () {\r\n var blendModeEnums = {\r\n 0: 'source-over',\r\n 1: 'multiply',\r\n 2: 'screen',\r\n 3: 'overlay',\r\n 4: 'darken',\r\n 5: 'lighten',\r\n 6: 'color-dodge',\r\n 7: 'color-burn',\r\n 8: 'hard-light',\r\n 9: 'soft-light',\r\n 10: 'difference',\r\n 11: 'exclusion',\r\n 12: 'hue',\r\n 13: 'saturation',\r\n 14: 'color',\r\n 15: 'luminosity',\r\n };\r\n\r\n return function (mode) {\r\n return blendModeEnums[mode] || '';\r\n };\r\n}());\r\n\r\n/* exported lineCapEnum, lineJoinEnum */\r\n\r\nvar lineCapEnum = {\r\n 1: 'butt',\r\n 2: 'round',\r\n 3: 'square',\r\n};\r\n\r\nvar lineJoinEnum = {\r\n 1: 'miter',\r\n 2: 'round',\r\n 3: 'bevel',\r\n};\r\n\r\n/* global createTypedArray */\r\n\r\n/*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\r\n\r\n/**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\r\n\r\nvar Matrix = (function () {\r\n var _cos = Math.cos;\r\n var _sin = Math.sin;\r\n var _tan = Math.tan;\r\n var _rnd = Math.round;\r\n\r\n function reset() {\r\n this.props[0] = 1;\r\n this.props[1] = 0;\r\n this.props[2] = 0;\r\n this.props[3] = 0;\r\n this.props[4] = 0;\r\n this.props[5] = 1;\r\n this.props[6] = 0;\r\n this.props[7] = 0;\r\n this.props[8] = 0;\r\n this.props[9] = 0;\r\n this.props[10] = 1;\r\n this.props[11] = 0;\r\n this.props[12] = 0;\r\n this.props[13] = 0;\r\n this.props[14] = 0;\r\n this.props[15] = 1;\r\n return this;\r\n }\r\n\r\n function rotate(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateX(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateY(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateZ(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function shear(sx, sy) {\r\n return this._t(1, sy, sx, 1, 0, 0);\r\n }\r\n\r\n function skew(ax, ay) {\r\n return this.shear(_tan(ax), _tan(ay));\r\n }\r\n\r\n function skewFromAxis(ax, angle) {\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\r\n ._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\r\n ._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\r\n }\r\n\r\n function scale(sx, sy, sz) {\r\n if (!sz && sz !== 0) {\r\n sz = 1;\r\n }\r\n if (sx === 1 && sy === 1 && sz === 1) {\r\n return this;\r\n }\r\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\r\n this.props[0] = a;\r\n this.props[1] = b;\r\n this.props[2] = c;\r\n this.props[3] = d;\r\n this.props[4] = e;\r\n this.props[5] = f;\r\n this.props[6] = g;\r\n this.props[7] = h;\r\n this.props[8] = i;\r\n this.props[9] = j;\r\n this.props[10] = k;\r\n this.props[11] = l;\r\n this.props[12] = m;\r\n this.props[13] = n;\r\n this.props[14] = o;\r\n this.props[15] = p;\r\n return this;\r\n }\r\n\r\n function translate(tx, ty, tz) {\r\n tz = tz || 0;\r\n if (tx !== 0 || ty !== 0 || tz !== 0) {\r\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\r\n }\r\n return this;\r\n }\r\n\r\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\r\n var _p = this.props;\r\n\r\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\r\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\r\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\r\n _p[12] = _p[12] * a2 + _p[15] * m2;\r\n _p[13] = _p[13] * f2 + _p[15] * n2;\r\n _p[14] = _p[14] * k2 + _p[15] * o2;\r\n _p[15] *= p2;\r\n // }\r\n this._identityCalculated = false;\r\n return this;\r\n }\r\n\r\n var a1 = _p[0];\r\n var b1 = _p[1];\r\n var c1 = _p[2];\r\n var d1 = _p[3];\r\n var e1 = _p[4];\r\n var f1 = _p[5];\r\n var g1 = _p[6];\r\n var h1 = _p[7];\r\n var i1 = _p[8];\r\n var j1 = _p[9];\r\n var k1 = _p[10];\r\n var l1 = _p[11];\r\n var m1 = _p[12];\r\n var n1 = _p[13];\r\n var o1 = _p[14];\r\n var p1 = _p[15];\r\n\r\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\r\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\r\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\r\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\r\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\r\n\r\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\r\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\r\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\r\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\r\n\r\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\r\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\r\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\r\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\r\n\r\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\r\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\r\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\r\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\r\n\r\n this._identityCalculated = false;\r\n return this;\r\n }\r\n\r\n function isIdentity() {\r\n if (!this._identityCalculated) {\r\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\r\n this._identityCalculated = true;\r\n }\r\n return this._identity;\r\n }\r\n\r\n function equals(matr) {\r\n var i = 0;\r\n while (i < 16) {\r\n if (matr.props[i] !== this.props[i]) {\r\n return false;\r\n }\r\n i += 1;\r\n }\r\n return true;\r\n }\r\n\r\n function clone(matr) {\r\n var i;\r\n for (i = 0; i < 16; i += 1) {\r\n matr.props[i] = this.props[i];\r\n }\r\n return matr;\r\n }\r\n\r\n function cloneFromProps(props) {\r\n var i;\r\n for (i = 0; i < 16; i += 1) {\r\n this.props[i] = props[i];\r\n }\r\n }\r\n\r\n function applyToPoint(x, y, z) {\r\n return {\r\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\r\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\r\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14],\r\n };\r\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\r\n }\r\n function applyToX(x, y, z) {\r\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\r\n }\r\n function applyToY(x, y, z) {\r\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\r\n }\r\n function applyToZ(x, y, z) {\r\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\r\n }\r\n\r\n function getInverseMatrix() {\r\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\r\n var a = this.props[5] / determinant;\r\n var b = -this.props[1] / determinant;\r\n var c = -this.props[4] / determinant;\r\n var d = this.props[0] / determinant;\r\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\r\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\r\n var inverseMatrix = new Matrix();\r\n inverseMatrix.props[0] = a;\r\n inverseMatrix.props[1] = b;\r\n inverseMatrix.props[4] = c;\r\n inverseMatrix.props[5] = d;\r\n inverseMatrix.props[12] = e;\r\n inverseMatrix.props[13] = f;\r\n return inverseMatrix;\r\n }\r\n\r\n function inversePoint(pt) {\r\n var inverseMatrix = this.getInverseMatrix();\r\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\r\n }\r\n\r\n function inversePoints(pts) {\r\n var i;\r\n var len = pts.length;\r\n var retPts = [];\r\n for (i = 0; i < len; i += 1) {\r\n retPts[i] = inversePoint(pts[i]);\r\n }\r\n return retPts;\r\n }\r\n\r\n function applyToTriplePoints(pt1, pt2, pt3) {\r\n var arr = createTypedArray('float32', 6);\r\n if (this.isIdentity()) {\r\n arr[0] = pt1[0];\r\n arr[1] = pt1[1];\r\n arr[2] = pt2[0];\r\n arr[3] = pt2[1];\r\n arr[4] = pt3[0];\r\n arr[5] = pt3[1];\r\n } else {\r\n var p0 = this.props[0];\r\n var p1 = this.props[1];\r\n var p4 = this.props[4];\r\n var p5 = this.props[5];\r\n var p12 = this.props[12];\r\n var p13 = this.props[13];\r\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\r\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\r\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\r\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\r\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\r\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\r\n }\r\n return arr;\r\n }\r\n\r\n function applyToPointArray(x, y, z) {\r\n var arr;\r\n if (this.isIdentity()) {\r\n arr = [x, y, z];\r\n } else {\r\n arr = [\r\n x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\r\n x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\r\n x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14],\r\n ];\r\n }\r\n return arr;\r\n }\r\n\r\n function applyToPointStringified(x, y) {\r\n if (this.isIdentity()) {\r\n return x + ',' + y;\r\n }\r\n var _p = this.props;\r\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\r\n }\r\n\r\n function toCSS() {\r\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\r\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\r\n var i = 0;\r\n var props = this.props;\r\n var cssValue = 'matrix3d(';\r\n var v = 10000;\r\n while (i < 16) {\r\n cssValue += _rnd(props[i] * v) / v;\r\n cssValue += i === 15 ? ')' : ',';\r\n i += 1;\r\n }\r\n return cssValue;\r\n }\r\n\r\n function roundMatrixProperty(val) {\r\n var v = 10000;\r\n if ((val < 0.000001 && val > 0) || (val > -0.000001 && val < 0)) {\r\n return _rnd(val * v) / v;\r\n }\r\n return val;\r\n }\r\n\r\n function to2dCSS() {\r\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\r\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\r\n var props = this.props;\r\n var _a = roundMatrixProperty(props[0]);\r\n var _b = roundMatrixProperty(props[1]);\r\n var _c = roundMatrixProperty(props[4]);\r\n var _d = roundMatrixProperty(props[5]);\r\n var _e = roundMatrixProperty(props[12]);\r\n var _f = roundMatrixProperty(props[13]);\r\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\r\n }\r\n\r\n return function () {\r\n this.reset = reset;\r\n this.rotate = rotate;\r\n this.rotateX = rotateX;\r\n this.rotateY = rotateY;\r\n this.rotateZ = rotateZ;\r\n this.skew = skew;\r\n this.skewFromAxis = skewFromAxis;\r\n this.shear = shear;\r\n this.scale = scale;\r\n this.setTransform = setTransform;\r\n this.translate = translate;\r\n this.transform = transform;\r\n this.applyToPoint = applyToPoint;\r\n this.applyToX = applyToX;\r\n this.applyToY = applyToY;\r\n this.applyToZ = applyToZ;\r\n this.applyToPointArray = applyToPointArray;\r\n this.applyToTriplePoints = applyToTriplePoints;\r\n this.applyToPointStringified = applyToPointStringified;\r\n this.toCSS = toCSS;\r\n this.to2dCSS = to2dCSS;\r\n this.clone = clone;\r\n this.cloneFromProps = cloneFromProps;\r\n this.equals = equals;\r\n this.inversePoints = inversePoints;\r\n this.inversePoint = inversePoint;\r\n this.getInverseMatrix = getInverseMatrix;\r\n this._t = this.transform;\r\n this.isIdentity = isIdentity;\r\n this._identity = true;\r\n this._identityCalculated = false;\r\n\r\n this.props = createTypedArray('float32', 16);\r\n this.reset();\r\n };\r\n}());\r\n\r\n/* eslint-disable */\r\n/*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\r\n\r\n(function (pool, math) {\r\n//\r\n// The following constants are related to IEEE 754 limits.\r\n//\r\n var global = this,\r\n width = 256, // each RC4 output is 0 <= x < 256\r\n chunks = 6, // at least six RC4 outputs for each double\r\n digits = 52, // there are 52 significant digits in a double\r\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\r\n startdenom = math.pow(width, chunks),\r\n significance = math.pow(2, digits),\r\n overflow = significance * 2,\r\n mask = width - 1,\r\n nodecrypto; // node.js crypto module, initialized at the bottom.\r\n\r\n//\r\n// seedrandom()\r\n// This is the seedrandom function described above.\r\n//\r\n function seedrandom(seed, options, callback) {\r\n var key = [];\r\n options = (options === true) ? { entropy: true } : (options || {});\r\n\r\n // Flatten the seed string or build one from local entropy if needed.\r\n var shortseed = mixkey(flatten(\r\n options.entropy ? [seed, tostring(pool)] :\r\n (seed === null) ? autoseed() : seed, 3), key);\r\n\r\n // Use the seed to initialize an ARC4 generator.\r\n var arc4 = new ARC4(key);\r\n\r\n // This function returns a random double in [0, 1) that contains\r\n // randomness in every bit of the mantissa of the IEEE 754 value.\r\n var prng = function() {\r\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\r\n d = startdenom, // and denominator d = 2 ^ 48.\r\n x = 0; // and no 'extra last byte'.\r\n while (n < significance) { // Fill up all significant digits by\r\n n = (n + x) * width; // shifting numerator and\r\n d *= width; // denominator and generating a\r\n x = arc4.g(1); // new least-significant-byte.\r\n }\r\n while (n >= overflow) { // To avoid rounding up, before adding\r\n n /= 2; // last byte, shift everything\r\n d /= 2; // right using integer math until\r\n x >>>= 1; // we have exactly the desired bits.\r\n }\r\n return (n + x) / d; // Form the number within [0, 1).\r\n };\r\n\r\n prng.int32 = function() { return arc4.g(4) | 0; };\r\n prng.quick = function() { return arc4.g(4) / 0x100000000; };\r\n prng.double = prng;\r\n\r\n // Mix the randomness into accumulated entropy.\r\n mixkey(tostring(arc4.S), pool);\r\n\r\n // Calling convention: what to return as a function of prng, seed, is_math.\r\n return (options.pass || callback ||\r\n function(prng, seed, is_math_call, state) {\r\n if (state) {\r\n // Load the arc4 state from the given state if it has an S array.\r\n if (state.S) { copy(state, arc4); }\r\n // Only provide the .state method if requested via options.state.\r\n prng.state = function() { return copy(arc4, {}); };\r\n }\r\n\r\n // If called as a method of Math (Math.seedrandom()), mutate\r\n // Math.random because that is how seedrandom.js has worked since v1.0.\r\n if (is_math_call) { math[rngname] = prng; return seed; }\r\n\r\n // Otherwise, it is a newer calling convention, so return the\r\n // prng directly.\r\n else return prng;\r\n })(\r\n prng,\r\n shortseed,\r\n 'global' in options ? options.global : (this == math),\r\n options.state);\r\n }\r\n math['seed' + rngname] = seedrandom;\r\n\r\n//\r\n// ARC4\r\n//\r\n// An ARC4 implementation. The constructor takes a key in the form of\r\n// an array of at most (width) integers that should be 0 <= x < (width).\r\n//\r\n// The g(count) method returns a pseudorandom integer that concatenates\r\n// the next (count) outputs from ARC4. Its return value is a number x\r\n// that is in the range 0 <= x < (width ^ count).\r\n//\r\n function ARC4(key) {\r\n var t, keylen = key.length,\r\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\r\n\r\n // The empty key [] is treated as [0].\r\n if (!keylen) { key = [keylen++]; }\r\n\r\n // Set up S using the standard key scheduling algorithm.\r\n while (i < width) {\r\n s[i] = i++;\r\n }\r\n for (i = 0; i < width; i++) {\r\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\r\n s[j] = t;\r\n }\r\n\r\n // The \"g\" method returns the next (count) outputs as one number.\r\n me.g = function(count) {\r\n // Using instance members instead of closure state nearly doubles speed.\r\n var t, r = 0,\r\n i = me.i, j = me.j, s = me.S;\r\n while (count--) {\r\n t = s[i = mask & (i + 1)];\r\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\r\n }\r\n me.i = i; me.j = j;\r\n return r;\r\n // For robust unpredictability, the function call below automatically\r\n // discards an initial batch of values. This is called RC4-drop[256].\r\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\r\n };\r\n }\r\n\r\n//\r\n// copy()\r\n// Copies internal state of ARC4 to or from a plain object.\r\n//\r\n function copy(f, t) {\r\n t.i = f.i;\r\n t.j = f.j;\r\n t.S = f.S.slice();\r\n return t;\r\n }\r\n\r\n//\r\n// flatten()\r\n// Converts an object tree to nested arrays of strings.\r\n//\r\n function flatten(obj, depth) {\r\n var result = [], typ = (typeof obj), prop;\r\n if (depth && typ == 'object') {\r\n for (prop in obj) {\r\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\r\n }\r\n }\r\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\r\n }\r\n\r\n//\r\n// mixkey()\r\n// Mixes a string seed into a key that is an array of integers, and\r\n// returns a shortened string seed that is equivalent to the result key.\r\n//\r\n function mixkey(seed, key) {\r\n var stringseed = seed + '', smear, j = 0;\r\n while (j < stringseed.length) {\r\n key[mask & j] =\r\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\r\n }\r\n return tostring(key);\r\n }\r\n\r\n//\r\n// autoseed()\r\n// Returns an object for autoseeding, using window.crypto and Node crypto\r\n// module if available.\r\n//\r\n function autoseed() {\r\n try {\r\n if (nodecrypto) { return tostring(nodecrypto.randomBytes(width)); }\r\n var out = new Uint8Array(width);\r\n (global.crypto || global.msCrypto).getRandomValues(out);\r\n return tostring(out);\r\n } catch (e) {\r\n var browser = global.navigator,\r\n plugins = browser && browser.plugins;\r\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\r\n }\r\n }\r\n\r\n//\r\n// tostring()\r\n// Converts an array of charcodes to a string\r\n//\r\n function tostring(a) {\r\n return String.fromCharCode.apply(0, a);\r\n }\r\n\r\n//\r\n// When seedrandom.js is loaded, we immediately mix a few bits\r\n// from the built-in RNG into the entropy pool. Because we do\r\n// not want to interfere with deterministic PRNG state later,\r\n// seedrandom will not call math.random on its own again after\r\n// initialization.\r\n//\r\n mixkey(math.random(), pool);\r\n\r\n//\r\n// Nodejs and AMD support: export the implementation as a module using\r\n// either convention.\r\n//\r\n\r\n// End anonymous scope, and pass initial values.\r\n})(\r\n [], // pool: entropy pool starts empty\r\n BMMath // math: package containing random, pow, and seedrandom\r\n);\r\n/* eslint-disable */\r\nvar BezierFactory = (function () {\r\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\r\n\r\n var ob = {};\r\n ob.getBezierEasing = getBezierEasing;\r\n var beziers = {};\r\n\r\n function getBezierEasing(a, b, c, d, nm) {\r\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\r\n if (beziers[str]) {\r\n return beziers[str];\r\n }\r\n var bezEasing = new BezierEasing([a, b, c, d]);\r\n beziers[str] = bezEasing;\r\n return bezEasing;\r\n }\r\n\r\n // These values are established by empiricism with tests (tradeoff: performance VS precision)\r\n var NEWTON_ITERATIONS = 4;\r\n var NEWTON_MIN_SLOPE = 0.001;\r\n var SUBDIVISION_PRECISION = 0.0000001;\r\n var SUBDIVISION_MAX_ITERATIONS = 10;\r\n\r\n var kSplineTableSize = 11;\r\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\r\n\r\n var float32ArraySupported = typeof Float32Array === 'function';\r\n\r\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\r\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\r\n function C(aA1) { return 3.0 * aA1; }\r\n\r\n // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\r\n function calcBezier(aT, aA1, aA2) {\r\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\r\n }\r\n\r\n // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\r\n function getSlope(aT, aA1, aA2) {\r\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\r\n }\r\n\r\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\r\n var currentX,\r\n currentT,\r\n i = 0;\r\n do {\r\n currentT = aA + (aB - aA) / 2.0;\r\n currentX = calcBezier(currentT, mX1, mX2) - aX;\r\n if (currentX > 0.0) {\r\n aB = currentT;\r\n } else {\r\n aA = currentT;\r\n }\r\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\r\n return currentT;\r\n }\r\n\r\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\r\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\r\n var currentSlope = getSlope(aGuessT, mX1, mX2);\r\n if (currentSlope === 0.0) return aGuessT;\r\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\r\n aGuessT -= currentX / currentSlope;\r\n }\r\n return aGuessT;\r\n }\r\n\r\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\r\n function BezierEasing(points) {\r\n this._p = points;\r\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\r\n this._precomputed = false;\r\n\r\n this.get = this.get.bind(this);\r\n }\r\n\r\n BezierEasing.prototype = {\r\n\r\n get: function (x) {\r\n var mX1 = this._p[0],\r\n mY1 = this._p[1],\r\n mX2 = this._p[2],\r\n mY2 = this._p[3];\r\n if (!this._precomputed) this._precompute();\r\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\r\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\r\n if (x === 0) return 0;\r\n if (x === 1) return 1;\r\n return calcBezier(this._getTForX(x), mY1, mY2);\r\n },\r\n\r\n // Private part\r\n\r\n _precompute: function () {\r\n var mX1 = this._p[0],\r\n mY1 = this._p[1],\r\n mX2 = this._p[2],\r\n mY2 = this._p[3];\r\n this._precomputed = true;\r\n if (mX1 !== mY1 || mX2 !== mY2) { this._calcSampleValues(); }\r\n },\r\n\r\n _calcSampleValues: function () {\r\n var mX1 = this._p[0],\r\n mX2 = this._p[2];\r\n for (var i = 0; i < kSplineTableSize; ++i) {\r\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\r\n }\r\n },\r\n\r\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\r\n _getTForX: function (aX) {\r\n var mX1 = this._p[0],\r\n mX2 = this._p[2],\r\n mSampleValues = this._mSampleValues;\r\n\r\n var intervalStart = 0.0;\r\n var currentSample = 1;\r\n var lastSample = kSplineTableSize - 1;\r\n\r\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\r\n intervalStart += kSampleStepSize;\r\n }\r\n --currentSample;\r\n\r\n // Interpolate to provide an initial guess for t\r\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\r\n var guessForT = intervalStart + dist * kSampleStepSize;\r\n\r\n var initialSlope = getSlope(guessForT, mX1, mX2);\r\n if (initialSlope >= NEWTON_MIN_SLOPE) {\r\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\r\n } if (initialSlope === 0.0) {\r\n return guessForT;\r\n }\r\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\r\n },\r\n };\r\n\r\n return ob;\r\n}());\r\n\r\n(function () {\r\n var lastTime = 0;\r\n var vendors = ['ms', 'moz', 'webkit', 'o'];\r\n for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { // eslint-disable-line no-plusplus\r\n window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\r\n window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];\r\n }\r\n if (!window.requestAnimationFrame) {\r\n window.requestAnimationFrame = function (callback) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = setTimeout(function () {\r\n callback(currTime + timeToCall);\r\n },\r\n timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n }\r\n if (!window.cancelAnimationFrame) {\r\n window.cancelAnimationFrame = function (id) {\r\n clearTimeout(id);\r\n };\r\n }\r\n}());\r\n\r\n/* exported extendPrototype, getDescriptor, createProxyFunction */\r\n\r\nfunction extendPrototype(sources, destination) {\r\n var i;\r\n var len = sources.length;\r\n var sourcePrototype;\r\n for (i = 0; i < len; i += 1) {\r\n sourcePrototype = sources[i].prototype;\r\n for (var attr in sourcePrototype) {\r\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\r\n }\r\n }\r\n}\r\n\r\nfunction getDescriptor(object, prop) {\r\n return Object.getOwnPropertyDescriptor(object, prop);\r\n}\r\n\r\nfunction createProxyFunction(prototype) {\r\n function ProxyFunction() {}\r\n ProxyFunction.prototype = prototype;\r\n return ProxyFunction;\r\n}\r\n\r\n/* global segmentsLengthPool, defaultCurveSegments, createSizedArray, bmPow, bmSqrt, bmFloor, createTypedArray, bezierLengthPool */\r\n/* exported bez */\r\n\r\nfunction bezFunction() {\r\n var math = Math;\r\n\r\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\r\n var det1 = (x1 * y2) + (y1 * x3) + (x2 * y3) - (x3 * y2) - (y3 * x1) - (x2 * y1);\r\n return det1 > -0.001 && det1 < 0.001;\r\n }\r\n\r\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\r\n if (z1 === 0 && z2 === 0 && z3 === 0) {\r\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\r\n }\r\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\r\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\r\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\r\n var diffDist;\r\n if (dist1 > dist2) {\r\n if (dist1 > dist3) {\r\n diffDist = dist1 - dist2 - dist3;\r\n } else {\r\n diffDist = dist3 - dist2 - dist1;\r\n }\r\n } else if (dist3 > dist2) {\r\n diffDist = dist3 - dist2 - dist1;\r\n } else {\r\n diffDist = dist2 - dist1 - dist3;\r\n }\r\n return diffDist > -0.0001 && diffDist < 0.0001;\r\n }\r\n\r\n var getBezierLength = (function () {\r\n return function (pt1, pt2, pt3, pt4) {\r\n var curveSegments = defaultCurveSegments;\r\n var k;\r\n var i;\r\n var len;\r\n var ptCoord;\r\n var perc;\r\n var addedLength = 0;\r\n var ptDistance;\r\n var point = [];\r\n var lastPoint = [];\r\n var lengthData = bezierLengthPool.newElement();\r\n len = pt3.length;\r\n for (k = 0; k < curveSegments; k += 1) {\r\n perc = k / (curveSegments - 1);\r\n ptDistance = 0;\r\n for (i = 0; i < len; i += 1) {\r\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\r\n point[i] = ptCoord;\r\n if (lastPoint[i] !== null) {\r\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\r\n }\r\n lastPoint[i] = point[i];\r\n }\r\n if (ptDistance) {\r\n ptDistance = bmSqrt(ptDistance);\r\n addedLength += ptDistance;\r\n }\r\n lengthData.percents[k] = perc;\r\n lengthData.lengths[k] = addedLength;\r\n }\r\n lengthData.addedLength = addedLength;\r\n return lengthData;\r\n };\r\n }());\r\n\r\n function getSegmentsLength(shapeData) {\r\n var segmentsLength = segmentsLengthPool.newElement();\r\n var closed = shapeData.c;\r\n var pathV = shapeData.v;\r\n var pathO = shapeData.o;\r\n var pathI = shapeData.i;\r\n var i;\r\n var len = shapeData._length;\r\n var lengths = segmentsLength.lengths;\r\n var totalLength = 0;\r\n for (i = 0; i < len - 1; i += 1) {\r\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\r\n totalLength += lengths[i].addedLength;\r\n }\r\n if (closed && len) {\r\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\r\n totalLength += lengths[i].addedLength;\r\n }\r\n segmentsLength.totalLength = totalLength;\r\n return segmentsLength;\r\n }\r\n\r\n function BezierData(length) {\r\n this.segmentLength = 0;\r\n this.points = new Array(length);\r\n }\r\n\r\n function PointData(partial, point) {\r\n this.partialLength = partial;\r\n this.point = point;\r\n }\r\n\r\n var buildBezierData = (function () {\r\n var storedData = {};\r\n\r\n return function (pt1, pt2, pt3, pt4) {\r\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\r\n if (!storedData[bezierName]) {\r\n var curveSegments = defaultCurveSegments;\r\n var k;\r\n var i;\r\n var len;\r\n var ptCoord;\r\n var perc;\r\n var addedLength = 0;\r\n var ptDistance;\r\n var point;\r\n var lastPoint = null;\r\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\r\n curveSegments = 2;\r\n }\r\n var bezierData = new BezierData(curveSegments);\r\n len = pt3.length;\r\n for (k = 0; k < curveSegments; k += 1) {\r\n point = createSizedArray(len);\r\n perc = k / (curveSegments - 1);\r\n ptDistance = 0;\r\n for (i = 0; i < len; i += 1) {\r\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\r\n point[i] = ptCoord;\r\n if (lastPoint !== null) {\r\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\r\n }\r\n }\r\n ptDistance = bmSqrt(ptDistance);\r\n addedLength += ptDistance;\r\n bezierData.points[k] = new PointData(ptDistance, point);\r\n lastPoint = point;\r\n }\r\n bezierData.segmentLength = addedLength;\r\n storedData[bezierName] = bezierData;\r\n }\r\n return storedData[bezierName];\r\n };\r\n }());\r\n\r\n function getDistancePerc(perc, bezierData) {\r\n var percents = bezierData.percents;\r\n var lengths = bezierData.lengths;\r\n var len = percents.length;\r\n var initPos = bmFloor((len - 1) * perc);\r\n var lengthPos = perc * bezierData.addedLength;\r\n var lPerc = 0;\r\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\r\n return percents[initPos];\r\n }\r\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\r\n var flag = true;\r\n while (flag) {\r\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\r\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\r\n flag = false;\r\n } else {\r\n initPos += dir;\r\n }\r\n if (initPos < 0 || initPos >= len - 1) {\r\n // FIX for TypedArrays that don't store floating point values with enough accuracy\r\n if (initPos === len - 1) {\r\n return percents[initPos];\r\n }\r\n flag = false;\r\n }\r\n }\r\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\r\n }\r\n\r\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\r\n var t1 = getDistancePerc(percent, bezierData);\r\n var u1 = 1 - t1;\r\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\r\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\r\n return [ptX, ptY];\r\n }\r\n\r\n var bezierSegmentPoints = createTypedArray('float32', 8);\r\n\r\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\r\n if (startPerc < 0) {\r\n startPerc = 0;\r\n } else if (startPerc > 1) {\r\n startPerc = 1;\r\n }\r\n var t0 = getDistancePerc(startPerc, bezierData);\r\n endPerc = endPerc > 1 ? 1 : endPerc;\r\n var t1 = getDistancePerc(endPerc, bezierData);\r\n var i;\r\n var len = pt1.length;\r\n var u0 = 1 - t0;\r\n var u1 = 1 - t1;\r\n var u0u0u0 = u0 * u0 * u0;\r\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\r\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\r\n var t0t0t0 = t0 * t0 * t0;\r\n //\r\n var u0u0u1 = u0 * u0 * u1;\r\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\r\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\r\n var t0t0t1 = t0 * t0 * t1;\r\n //\r\n var u0u1u1 = u0 * u1 * u1;\r\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\r\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\r\n var t0t1t1 = t0 * t1 * t1;\r\n //\r\n var u1u1u1 = u1 * u1 * u1;\r\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\r\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\r\n var t1t1t1 = t1 * t1 * t1;\r\n for (i = 0; i < len; i += 1) {\r\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n }\r\n\r\n return bezierSegmentPoints;\r\n }\r\n\r\n return {\r\n getSegmentsLength: getSegmentsLength,\r\n getNewSegment: getNewSegment,\r\n getPointInSegment: getPointInSegment,\r\n buildBezierData: buildBezierData,\r\n pointOnLine2D: pointOnLine2D,\r\n pointOnLine3D: pointOnLine3D,\r\n };\r\n}\r\n\r\nvar bez = bezFunction();\r\n\r\n/* global _useWebWorker */\r\n\r\nvar dataManager = (function () {\r\n var _counterId = 1;\r\n var processes = [];\r\n var workerFn;\r\n var workerInstance;\r\n var workerProxy = {\r\n onmessage: function () {\r\n\r\n },\r\n postMessage: function (path) {\r\n workerFn({\r\n data: path,\r\n });\r\n },\r\n };\r\n var _workerSelf = {\r\n postMessage: function (data) {\r\n workerProxy.onmessage({\r\n data: data,\r\n });\r\n },\r\n };\r\n function createWorker(fn) {\r\n if (window.Worker && window.Blob && _useWebWorker) {\r\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], { type: 'text/javascript' });\r\n // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\r\n var url = URL.createObjectURL(blob);\r\n return new Worker(url);\r\n }\r\n workerFn = fn;\r\n return workerProxy;\r\n }\r\n\r\n function setupWorker() {\r\n if (!workerInstance) {\r\n workerInstance = createWorker(function workerStart(e) {\r\n /* exported dataManager */\r\n\r\n function dataFunctionManager() {\r\n // var tCanvasHelper = createTag('canvas').getContext('2d');\r\n\r\n function completeLayers(layers, comps) {\r\n var layerData;\r\n var i;\r\n var len = layers.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n for (i = 0; i < len; i += 1) {\r\n layerData = layers[i];\r\n if (('ks' in layerData) && !layerData.completed) {\r\n layerData.completed = true;\r\n if (layerData.tt) {\r\n layers[i - 1].td = layerData.tt;\r\n }\r\n if (layerData.hasMask) {\r\n var maskProps = layerData.masksProperties;\r\n jLen = maskProps.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (maskProps[j].pt.k.i) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\r\n } else {\r\n kLen = maskProps[j].pt.k.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n if (maskProps[j].pt.k[k].s) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\r\n }\r\n if (maskProps[j].pt.k[k].e) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (layerData.ty === 0) {\r\n layerData.layers = findCompLayers(layerData.refId, comps);\r\n completeLayers(layerData.layers, comps);\r\n } else if (layerData.ty === 4) {\r\n completeShapes(layerData.shapes);\r\n } else if (layerData.ty === 5) {\r\n completeText(layerData);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function findCompLayers(id, comps) {\r\n var i = 0;\r\n var len = comps.length;\r\n while (i < len) {\r\n if (comps[i].id === id) {\r\n if (!comps[i].layers.__used) {\r\n comps[i].layers.__used = true;\r\n return comps[i].layers;\r\n }\r\n return JSON.parse(JSON.stringify(comps[i].layers));\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n\r\n function completeShapes(arr) {\r\n var i;\r\n var len = arr.length;\r\n var j;\r\n var jLen;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (arr[i].ty === 'sh') {\r\n if (arr[i].ks.k.i) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k);\r\n } else {\r\n jLen = arr[i].ks.k.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (arr[i].ks.k[j].s) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\r\n }\r\n if (arr[i].ks.k[j].e) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\r\n }\r\n }\r\n }\r\n } else if (arr[i].ty === 'gr') {\r\n completeShapes(arr[i].it);\r\n }\r\n }\r\n }\r\n\r\n function convertPathsToAbsoluteValues(path) {\r\n var i;\r\n var len = path.i.length;\r\n for (i = 0; i < len; i += 1) {\r\n path.i[i][0] += path.v[i][0];\r\n path.i[i][1] += path.v[i][1];\r\n path.o[i][0] += path.v[i][0];\r\n path.o[i][1] += path.v[i][1];\r\n }\r\n }\r\n\r\n function checkVersion(minimum, animVersionString) {\r\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\r\n if (minimum[0] > animVersion[0]) {\r\n return true;\r\n } if (animVersion[0] > minimum[0]) {\r\n return false;\r\n }\r\n if (minimum[1] > animVersion[1]) {\r\n return true;\r\n } if (animVersion[1] > minimum[1]) {\r\n return false;\r\n }\r\n if (minimum[2] > animVersion[2]) {\r\n return true;\r\n } if (animVersion[2] > minimum[2]) {\r\n return false;\r\n }\r\n return null;\r\n }\r\n\r\n var checkText = (function () {\r\n var minimumVersion = [4, 4, 14];\r\n\r\n function updateTextLayer(textLayer) {\r\n var documentData = textLayer.t.d;\r\n textLayer.t.d = {\r\n k: [\r\n {\r\n s: documentData,\r\n t: 0,\r\n },\r\n ],\r\n };\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var i;\r\n var len = layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (layers[i].ty === 5) {\r\n updateTextLayer(layers[i]);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkChars = (function () {\r\n var minimumVersion = [4, 7, 99];\r\n return function (animationData) {\r\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\r\n var i;\r\n var len = animationData.chars.length;\r\n var j;\r\n var jLen;\r\n var pathData;\r\n var paths;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.chars[i].data && animationData.chars[i].data.shapes) {\r\n paths = animationData.chars[i].data.shapes[0].it;\r\n jLen = paths.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n pathData = paths[j].ks.k;\r\n if (!pathData.__converted) {\r\n convertPathsToAbsoluteValues(paths[j].ks.k);\r\n pathData.__converted = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkPathProperties = (function () {\r\n var minimumVersion = [5, 7, 15];\r\n\r\n function updateTextLayer(textLayer) {\r\n var pathData = textLayer.t.p;\r\n if (typeof pathData.a === 'number') {\r\n pathData.a = {\r\n a: 0,\r\n k: pathData.a,\r\n };\r\n }\r\n if (typeof pathData.p === 'number') {\r\n pathData.p = {\r\n a: 0,\r\n k: pathData.p,\r\n };\r\n }\r\n if (typeof pathData.r === 'number') {\r\n pathData.r = {\r\n a: 0,\r\n k: pathData.r,\r\n };\r\n }\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var i;\r\n var len = layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (layers[i].ty === 5) {\r\n updateTextLayer(layers[i]);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkColors = (function () {\r\n var minimumVersion = [4, 1, 9];\r\n\r\n function iterateShapes(shapes) {\r\n var i;\r\n var len = shapes.length;\r\n var j;\r\n var jLen;\r\n for (i = 0; i < len; i += 1) {\r\n if (shapes[i].ty === 'gr') {\r\n iterateShapes(shapes[i].it);\r\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\r\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\r\n jLen = shapes[i].c.k.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (shapes[i].c.k[j].s) {\r\n shapes[i].c.k[j].s[0] /= 255;\r\n shapes[i].c.k[j].s[1] /= 255;\r\n shapes[i].c.k[j].s[2] /= 255;\r\n shapes[i].c.k[j].s[3] /= 255;\r\n }\r\n if (shapes[i].c.k[j].e) {\r\n shapes[i].c.k[j].e[0] /= 255;\r\n shapes[i].c.k[j].e[1] /= 255;\r\n shapes[i].c.k[j].e[2] /= 255;\r\n shapes[i].c.k[j].e[3] /= 255;\r\n }\r\n }\r\n } else {\r\n shapes[i].c.k[0] /= 255;\r\n shapes[i].c.k[1] /= 255;\r\n shapes[i].c.k[2] /= 255;\r\n shapes[i].c.k[3] /= 255;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var i;\r\n var len = layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (layers[i].ty === 4) {\r\n iterateShapes(layers[i].shapes);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkShapes = (function () {\r\n var minimumVersion = [4, 4, 18];\r\n\r\n function completeClosingShapes(arr) {\r\n var i;\r\n var len = arr.length;\r\n var j;\r\n var jLen;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (arr[i].ty === 'sh') {\r\n if (arr[i].ks.k.i) {\r\n arr[i].ks.k.c = arr[i].closed;\r\n } else {\r\n jLen = arr[i].ks.k.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (arr[i].ks.k[j].s) {\r\n arr[i].ks.k[j].s[0].c = arr[i].closed;\r\n }\r\n if (arr[i].ks.k[j].e) {\r\n arr[i].ks.k[j].e[0].c = arr[i].closed;\r\n }\r\n }\r\n }\r\n } else if (arr[i].ty === 'gr') {\r\n completeClosingShapes(arr[i].it);\r\n }\r\n }\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var layerData;\r\n var i;\r\n var len = layers.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n for (i = 0; i < len; i += 1) {\r\n layerData = layers[i];\r\n if (layerData.hasMask) {\r\n var maskProps = layerData.masksProperties;\r\n jLen = maskProps.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (maskProps[j].pt.k.i) {\r\n maskProps[j].pt.k.c = maskProps[j].cl;\r\n } else {\r\n kLen = maskProps[j].pt.k.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n if (maskProps[j].pt.k[k].s) {\r\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\r\n }\r\n if (maskProps[j].pt.k[k].e) {\r\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (layerData.ty === 4) {\r\n completeClosingShapes(layerData.shapes);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n function completeData(animationData) {\r\n if (animationData.__complete) {\r\n return;\r\n }\r\n checkColors(animationData);\r\n checkText(animationData);\r\n checkChars(animationData);\r\n checkPathProperties(animationData);\r\n checkShapes(animationData);\r\n completeLayers(animationData.layers, animationData.assets);\r\n animationData.__complete = true;\r\n }\r\n\r\n function completeText(data) {\r\n if (data.t.a.length === 0 && !('m' in data.t.p)) {\r\n data.singleShape = true;\r\n }\r\n }\r\n\r\n var moduleOb = {};\r\n moduleOb.completeData = completeData;\r\n moduleOb.checkColors = checkColors;\r\n moduleOb.checkChars = checkChars;\r\n moduleOb.checkPathProperties = checkPathProperties;\r\n moduleOb.checkShapes = checkShapes;\r\n moduleOb.completeLayers = completeLayers;\r\n\r\n return moduleOb;\r\n }\r\n if (!_workerSelf.dataManager) {\r\n _workerSelf.dataManager = dataFunctionManager();\r\n }\r\n\r\n /* exported assetLoader */\r\n if (!_workerSelf.assetLoader) {\r\n _workerSelf.assetLoader = (function () {\r\n function formatResponse(xhr) {\r\n // using typeof doubles the time of execution of this method,\r\n // so if available, it's better to use the header to validate the type\r\n var contentTypeHeader = xhr.getResponseHeader('content-type');\r\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\r\n return xhr.response;\r\n }\r\n if (xhr.response && typeof xhr.response === 'object') {\r\n return xhr.response;\r\n } if (xhr.response && typeof xhr.response === 'string') {\r\n return JSON.parse(xhr.response);\r\n } if (xhr.responseText) {\r\n return JSON.parse(xhr.responseText);\r\n }\r\n return null;\r\n }\r\n\r\n function loadAsset(path, fullPath, callback, errorCallback) {\r\n var response;\r\n var xhr = new XMLHttpRequest();\r\n // set responseType after calling open or IE will break.\r\n try {\r\n // This crashes on Android WebView prior to KitKat\r\n xhr.responseType = 'json';\r\n } catch (err) {} // eslint-disable-line no-empty\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status === 200) {\r\n response = formatResponse(xhr);\r\n callback(response);\r\n } else {\r\n try {\r\n response = formatResponse(xhr);\r\n callback(response);\r\n } catch (err) {\r\n if (errorCallback) {\r\n errorCallback(err);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n try {\r\n xhr.open('GET', path, true);\r\n } catch (error) {\r\n xhr.open('GET', fullPath + '/' + path, true);\r\n }\r\n xhr.send();\r\n }\r\n return {\r\n load: loadAsset,\r\n };\r\n }());\r\n }\r\n\r\n if (e.data.type === 'loadAnimation') {\r\n _workerSelf.assetLoader.load(\r\n e.data.path,\r\n e.data.fullPath,\r\n function (data) {\r\n _workerSelf.dataManager.completeData(data);\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n payload: data,\r\n status: 'success',\r\n });\r\n },\r\n function () {\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n status: 'error',\r\n });\r\n }\r\n );\r\n } else if (e.data.type === 'complete') {\r\n var animation = e.data.animation;\r\n _workerSelf.dataManager.completeData(animation);\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n payload: animation,\r\n status: 'success',\r\n });\r\n } else if (e.data.type === 'loadData') {\r\n _workerSelf.assetLoader.load(\r\n e.data.path,\r\n e.data.fullPath,\r\n function (data) {\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n payload: data,\r\n status: 'success',\r\n });\r\n },\r\n function () {\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n status: 'error',\r\n });\r\n }\r\n );\r\n }\r\n });\r\n\r\n workerInstance.onmessage = function (event) {\r\n var data = event.data;\r\n var id = data.id;\r\n var process = processes[id];\r\n processes[id] = null;\r\n if (data.status === 'success') {\r\n process.onComplete(data.payload);\r\n } else if (process.onError) {\r\n process.onError();\r\n }\r\n };\r\n }\r\n }\r\n\r\n function createProcess(onComplete, onError) {\r\n _counterId += 1;\r\n var id = 'processId_' + _counterId;\r\n processes[id] = {\r\n onComplete: onComplete,\r\n onError: onError,\r\n };\r\n return id;\r\n }\r\n\r\n function loadAnimation(path, onComplete, onError) {\r\n setupWorker();\r\n var processId = createProcess(onComplete, onError);\r\n workerInstance.postMessage({\r\n type: 'loadAnimation',\r\n path: path,\r\n fullPath: window.location.origin + window.location.pathname,\r\n id: processId,\r\n });\r\n }\r\n\r\n function loadData(path, onComplete, onError) {\r\n setupWorker();\r\n var processId = createProcess(onComplete, onError);\r\n workerInstance.postMessage({\r\n type: 'loadData',\r\n path: path,\r\n fullPath: window.location.origin + window.location.pathname,\r\n id: processId,\r\n });\r\n }\r\n\r\n function completeAnimation(anim, onComplete, onError) {\r\n setupWorker();\r\n var processId = createProcess(onComplete, onError);\r\n workerInstance.postMessage({\r\n type: 'complete',\r\n animation: anim,\r\n id: processId,\r\n });\r\n }\r\n\r\n return {\r\n loadAnimation: loadAnimation,\r\n loadData: loadData,\r\n completeAnimation: completeAnimation,\r\n };\r\n}());\r\n\r\n/* exported getFontProperties */\r\n\r\nfunction getFontProperties(fontData) {\r\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\r\n\r\n var fWeight = 'normal'; var\r\n fStyle = 'normal';\r\n var len = styles.length;\r\n var styleName;\r\n for (var i = 0; i < len; i += 1) {\r\n styleName = styles[i].toLowerCase();\r\n switch (styleName) {\r\n case 'italic':\r\n fStyle = 'italic';\r\n break;\r\n case 'bold':\r\n fWeight = '700';\r\n break;\r\n case 'black':\r\n fWeight = '900';\r\n break;\r\n case 'medium':\r\n fWeight = '500';\r\n break;\r\n case 'regular':\r\n case 'normal':\r\n fWeight = '400';\r\n break;\r\n case 'light':\r\n case 'thin':\r\n fWeight = '200';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n return {\r\n style: fStyle,\r\n weight: fontData.fWeight || fWeight,\r\n };\r\n}\r\n\r\n/* global createNS, createTag, getFontProperties */\r\n/* exported FontManager */\r\n\r\nvar FontManager = (function () {\r\n var maxWaitingTime = 5000;\r\n var emptyChar = {\r\n w: 0,\r\n size: 0,\r\n shapes: [],\r\n };\r\n var combinedCharacters = [];\r\n // Hindi characters\r\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366,\r\n 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379,\r\n 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\r\n\r\n var surrogateModifiers = [\r\n 'd83cdffb',\r\n 'd83cdffc',\r\n 'd83cdffd',\r\n 'd83cdffe',\r\n 'd83cdfff',\r\n ];\r\n\r\n var zeroWidthJoiner = [65039, 8205];\r\n\r\n function trimFontOptions(font) {\r\n var familyArray = font.split(',');\r\n var i;\r\n var len = familyArray.length;\r\n var enabledFamilies = [];\r\n for (i = 0; i < len; i += 1) {\r\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\r\n enabledFamilies.push(familyArray[i]);\r\n }\r\n }\r\n return enabledFamilies.join(',');\r\n }\r\n\r\n function setUpNode(font, family) {\r\n var parentNode = createTag('span');\r\n // Node is invisible to screen readers.\r\n parentNode.setAttribute('aria-hidden', true);\r\n parentNode.style.fontFamily = family;\r\n var node = createTag('span');\r\n // Characters that vary significantly among different fonts\r\n node.innerText = 'giItT1WQy@!-/#';\r\n // Visible - so we can measure it - but not on the screen\r\n parentNode.style.position = 'absolute';\r\n parentNode.style.left = '-10000px';\r\n parentNode.style.top = '-10000px';\r\n // Large font size makes even subtle changes obvious\r\n parentNode.style.fontSize = '300px';\r\n // Reset any font properties\r\n parentNode.style.fontVariant = 'normal';\r\n parentNode.style.fontStyle = 'normal';\r\n parentNode.style.fontWeight = 'normal';\r\n parentNode.style.letterSpacing = '0';\r\n parentNode.appendChild(node);\r\n document.body.appendChild(parentNode);\r\n\r\n // Remember width with no applied web font\r\n var width = node.offsetWidth;\r\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\r\n return { node: node, w: width, parent: parentNode };\r\n }\r\n\r\n function checkLoadedFonts() {\r\n var i;\r\n var len = this.fonts.length;\r\n var node;\r\n var w;\r\n var loadedCount = len;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.fonts[i].loaded) {\r\n loadedCount -= 1;\r\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\r\n this.fonts[i].loaded = true;\r\n } else {\r\n node = this.fonts[i].monoCase.node;\r\n w = this.fonts[i].monoCase.w;\r\n if (node.offsetWidth !== w) {\r\n loadedCount -= 1;\r\n this.fonts[i].loaded = true;\r\n } else {\r\n node = this.fonts[i].sansCase.node;\r\n w = this.fonts[i].sansCase.w;\r\n if (node.offsetWidth !== w) {\r\n loadedCount -= 1;\r\n this.fonts[i].loaded = true;\r\n }\r\n }\r\n if (this.fonts[i].loaded) {\r\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\r\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\r\n }\r\n }\r\n }\r\n\r\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\r\n setTimeout(this.checkLoadedFontsBinded, 20);\r\n } else {\r\n setTimeout(this.setIsLoadedBinded, 10);\r\n }\r\n }\r\n\r\n function createHelper(def, fontData) {\r\n var tHelper = createNS('text');\r\n tHelper.style.fontSize = '100px';\r\n // tHelper.style.fontFamily = fontData.fFamily;\r\n\r\n var fontProps = getFontProperties(fontData);\r\n tHelper.setAttribute('font-family', fontData.fFamily);\r\n tHelper.setAttribute('font-style', fontProps.style);\r\n tHelper.setAttribute('font-weight', fontProps.weight);\r\n tHelper.textContent = '1';\r\n if (fontData.fClass) {\r\n tHelper.style.fontFamily = 'inherit';\r\n tHelper.setAttribute('class', fontData.fClass);\r\n } else {\r\n tHelper.style.fontFamily = fontData.fFamily;\r\n }\r\n def.appendChild(tHelper);\r\n var tCanvasHelper = createTag('canvas').getContext('2d');\r\n tCanvasHelper.font = fontData.fWeight + ' ' + fontData.fStyle + ' 100px ' + fontData.fFamily;\r\n // tCanvasHelper.font = ' 100px '+ fontData.fFamily;\r\n return tHelper;\r\n }\r\n\r\n function addFonts(fontData, defs) {\r\n if (!fontData) {\r\n this.isLoaded = true;\r\n return;\r\n }\r\n if (this.chars) {\r\n this.isLoaded = true;\r\n this.fonts = fontData.list;\r\n return;\r\n }\r\n\r\n var fontArr = fontData.list;\r\n var i;\r\n var len = fontArr.length;\r\n var _pendingFonts = len;\r\n for (i = 0; i < len; i += 1) {\r\n var shouldLoadFont = true;\r\n var loadedSelector;\r\n var j;\r\n fontArr[i].loaded = false;\r\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\r\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\r\n if (!fontArr[i].fPath) {\r\n fontArr[i].loaded = true;\r\n _pendingFonts -= 1;\r\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\r\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\r\n\r\n if (loadedSelector.length > 0) {\r\n shouldLoadFont = false;\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var s = createTag('style');\r\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n s.setAttribute('f-origin', fontArr[i].origin);\r\n s.setAttribute('f-family', fontArr[i].fFamily);\r\n s.type = 'text/css';\r\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\r\n defs.appendChild(s);\r\n }\r\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\r\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\r\n\r\n for (j = 0; j < loadedSelector.length; j += 1) {\r\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\r\n // Font is already loaded\r\n shouldLoadFont = false;\r\n }\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var l = createTag('link');\r\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n l.setAttribute('f-origin', fontArr[i].origin);\r\n l.type = 'text/css';\r\n l.rel = 'stylesheet';\r\n l.href = fontArr[i].fPath;\r\n document.body.appendChild(l);\r\n }\r\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\r\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\r\n\r\n for (j = 0; j < loadedSelector.length; j += 1) {\r\n if (fontArr[i].fPath === loadedSelector[j].src) {\r\n // Font is already loaded\r\n shouldLoadFont = false;\r\n }\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var sc = createTag('link');\r\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n sc.setAttribute('f-origin', fontArr[i].origin);\r\n sc.setAttribute('rel', 'stylesheet');\r\n sc.setAttribute('href', fontArr[i].fPath);\r\n defs.appendChild(sc);\r\n }\r\n }\r\n fontArr[i].helper = createHelper(defs, fontArr[i]);\r\n fontArr[i].cache = {};\r\n this.fonts.push(fontArr[i]);\r\n }\r\n if (_pendingFonts === 0) {\r\n this.isLoaded = true;\r\n } else {\r\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\r\n // Adding this timeout seems to fix it\r\n setTimeout(this.checkLoadedFonts.bind(this), 100);\r\n }\r\n }\r\n\r\n function addChars(chars) {\r\n if (!chars) {\r\n return;\r\n }\r\n if (!this.chars) {\r\n this.chars = [];\r\n }\r\n var i;\r\n var len = chars.length;\r\n var j;\r\n var jLen = this.chars.length;\r\n var found;\r\n for (i = 0; i < len; i += 1) {\r\n j = 0;\r\n found = false;\r\n while (j < jLen) {\r\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\r\n found = true;\r\n }\r\n j += 1;\r\n }\r\n if (!found) {\r\n this.chars.push(chars[i]);\r\n jLen += 1;\r\n }\r\n }\r\n }\r\n\r\n function getCharData(char, style, font) {\r\n var i = 0;\r\n var len = this.chars.length;\r\n while (i < len) {\r\n if (this.chars[i].ch === char && this.chars[i].style === style && this.chars[i].fFamily === font) {\r\n return this.chars[i];\r\n }\r\n i += 1;\r\n }\r\n if (((typeof char === 'string' && char.charCodeAt(0) !== 13) || !char)\r\n && console\r\n && console.warn // eslint-disable-line no-console\r\n && !this._warned\r\n ) {\r\n this._warned = true;\r\n console.warn('Missing character from exported characters list: ', char, style, font); // eslint-disable-line no-console\r\n }\r\n return emptyChar;\r\n }\r\n\r\n function measureText(char, fontName, size) {\r\n var fontData = this.getFontByName(fontName);\r\n var index = char.charCodeAt(0);\r\n if (!fontData.cache[index + 1]) {\r\n var tHelper = fontData.helper;\r\n // Canvas version\r\n // fontData.cache[index] = tHelper.measureText(char).width / 100;\r\n // SVG version\r\n // console.log(tHelper.getBBox().width)\r\n if (char === ' ') {\r\n tHelper.textContent = '|' + char + '|';\r\n var doubleSize = tHelper.getComputedTextLength();\r\n tHelper.textContent = '||';\r\n var singleSize = tHelper.getComputedTextLength();\r\n fontData.cache[index + 1] = (doubleSize - singleSize) / 100;\r\n } else {\r\n tHelper.textContent = char;\r\n fontData.cache[index + 1] = (tHelper.getComputedTextLength()) / 100;\r\n }\r\n }\r\n return fontData.cache[index + 1] * size;\r\n }\r\n\r\n function getFontByName(name) {\r\n var i = 0;\r\n var len = this.fonts.length;\r\n while (i < len) {\r\n if (this.fonts[i].fName === name) {\r\n return this.fonts[i];\r\n }\r\n i += 1;\r\n }\r\n return this.fonts[0];\r\n }\r\n\r\n function isModifier(firstCharCode, secondCharCode) {\r\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\r\n return surrogateModifiers.indexOf(sum) !== -1;\r\n }\r\n\r\n function isZeroWidthJoiner(firstCharCode, secondCharCode) {\r\n if (!secondCharCode) {\r\n return firstCharCode === zeroWidthJoiner[1];\r\n }\r\n return firstCharCode === zeroWidthJoiner[0] && secondCharCode === zeroWidthJoiner[1];\r\n }\r\n\r\n function isCombinedCharacter(char) {\r\n return combinedCharacters.indexOf(char) !== -1;\r\n }\r\n\r\n function setIsLoaded() {\r\n this.isLoaded = true;\r\n }\r\n\r\n var Font = function () {\r\n this.fonts = [];\r\n this.chars = null;\r\n this.typekitLoaded = 0;\r\n this.isLoaded = false;\r\n this._warned = false;\r\n this.initTime = Date.now();\r\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\r\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\r\n };\r\n Font.isModifier = isModifier;\r\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\r\n Font.isCombinedCharacter = isCombinedCharacter;\r\n\r\n var fontPrototype = {\r\n addChars: addChars,\r\n addFonts: addFonts,\r\n getCharData: getCharData,\r\n getFontByName: getFontByName,\r\n measureText: measureText,\r\n checkLoadedFonts: checkLoadedFonts,\r\n setIsLoaded: setIsLoaded,\r\n };\r\n\r\n Font.prototype = fontPrototype;\r\n\r\n return Font;\r\n}());\r\n\r\n/* global initialDefaultFrame, BezierFactory, degToRads, bez, createTypedArray */\r\n/* exported PropertyFactory */\r\n\r\nvar PropertyFactory = (function () {\r\n var initFrame = initialDefaultFrame;\r\n var mathAbs = Math.abs;\r\n\r\n function interpolateValue(frameNum, caching) {\r\n var offsetTime = this.offsetTime;\r\n var newValue;\r\n if (this.propType === 'multidimensional') {\r\n newValue = createTypedArray('float32', this.pv.length);\r\n }\r\n var iterationIndex = caching.lastIndex;\r\n var i = iterationIndex;\r\n var len = this.keyframes.length - 1;\r\n var flag = true;\r\n var keyData;\r\n var nextKeyData;\r\n var keyframeMetadata;\r\n\r\n while (flag) {\r\n keyData = this.keyframes[i];\r\n nextKeyData = this.keyframes[i + 1];\r\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\r\n if (keyData.h) {\r\n keyData = nextKeyData;\r\n }\r\n iterationIndex = 0;\r\n break;\r\n }\r\n if ((nextKeyData.t - offsetTime) > frameNum) {\r\n iterationIndex = i;\r\n break;\r\n }\r\n if (i < len - 1) {\r\n i += 1;\r\n } else {\r\n iterationIndex = 0;\r\n flag = false;\r\n }\r\n }\r\n keyframeMetadata = this.keyframesMetadata[i] || {};\r\n\r\n var k;\r\n var kLen;\r\n var perc;\r\n var jLen;\r\n var j;\r\n var fnc;\r\n var nextKeyTime = nextKeyData.t - offsetTime;\r\n var keyTime = keyData.t - offsetTime;\r\n var endValue;\r\n if (keyData.to) {\r\n if (!keyframeMetadata.bezierData) {\r\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\r\n }\r\n var bezierData = keyframeMetadata.bezierData;\r\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\r\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\r\n kLen = bezierData.points[ind].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[ind].point[k];\r\n }\r\n // caching._lastKeyframeIndex = -1;\r\n } else {\r\n if (keyframeMetadata.__fnct) {\r\n fnc = keyframeMetadata.__fnct;\r\n } else {\r\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\r\n keyframeMetadata.__fnct = fnc;\r\n }\r\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\r\n var distanceInLine = bezierData.segmentLength * perc;\r\n\r\n var segmentPerc;\r\n var addedLength = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastAddedLength : 0;\r\n j = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastPoint : 0;\r\n flag = true;\r\n jLen = bezierData.points.length;\r\n while (flag) {\r\n addedLength += bezierData.points[j].partialLength;\r\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\r\n kLen = bezierData.points[j].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[j].point[k];\r\n }\r\n break;\r\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\r\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\r\n kLen = bezierData.points[j].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\r\n }\r\n break;\r\n }\r\n if (j < jLen - 1) {\r\n j += 1;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n caching._lastPoint = j;\r\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\r\n caching._lastKeyframeIndex = i;\r\n }\r\n } else {\r\n var outX;\r\n var outY;\r\n var inX;\r\n var inY;\r\n var keyValue;\r\n len = keyData.s.length;\r\n endValue = nextKeyData.s || keyData.e;\r\n if (this.sh && keyData.h !== 1) {\r\n if (frameNum >= nextKeyTime) {\r\n newValue[0] = endValue[0];\r\n newValue[1] = endValue[1];\r\n newValue[2] = endValue[2];\r\n } else if (frameNum <= keyTime) {\r\n newValue[0] = keyData.s[0];\r\n newValue[1] = keyData.s[1];\r\n newValue[2] = keyData.s[2];\r\n } else {\r\n var quatStart = createQuaternion(keyData.s);\r\n var quatEnd = createQuaternion(endValue);\r\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\r\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\r\n }\r\n } else {\r\n for (i = 0; i < len; i += 1) {\r\n if (keyData.h !== 1) {\r\n if (frameNum >= nextKeyTime) {\r\n perc = 1;\r\n } else if (frameNum < keyTime) {\r\n perc = 0;\r\n } else {\r\n if (keyData.o.x.constructor === Array) {\r\n if (!keyframeMetadata.__fnct) {\r\n keyframeMetadata.__fnct = [];\r\n }\r\n if (!keyframeMetadata.__fnct[i]) {\r\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\r\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\r\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\r\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\r\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\r\n keyframeMetadata.__fnct[i] = fnc;\r\n } else {\r\n fnc = keyframeMetadata.__fnct[i];\r\n }\r\n } else if (!keyframeMetadata.__fnct) {\r\n outX = keyData.o.x;\r\n outY = keyData.o.y;\r\n inX = keyData.i.x;\r\n inY = keyData.i.y;\r\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\r\n keyData.keyframeMetadata = fnc;\r\n } else {\r\n fnc = keyframeMetadata.__fnct;\r\n }\r\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\r\n }\r\n }\r\n\r\n endValue = nextKeyData.s || keyData.e;\r\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\r\n\r\n if (this.propType === 'multidimensional') {\r\n newValue[i] = keyValue;\r\n } else {\r\n newValue = keyValue;\r\n }\r\n }\r\n }\r\n }\r\n caching.lastIndex = iterationIndex;\r\n return newValue;\r\n }\r\n\r\n // based on @Toji's https://github.com/toji/gl-matrix/\r\n function slerp(a, b, t) {\r\n var out = [];\r\n var ax = a[0];\r\n var ay = a[1];\r\n var az = a[2];\r\n var aw = a[3];\r\n var bx = b[0];\r\n var by = b[1];\r\n var bz = b[2];\r\n var bw = b[3];\r\n\r\n var omega;\r\n var cosom;\r\n var sinom;\r\n var scale0;\r\n var scale1;\r\n\r\n cosom = ax * bx + ay * by + az * bz + aw * bw;\r\n if (cosom < 0.0) {\r\n cosom = -cosom;\r\n bx = -bx;\r\n by = -by;\r\n bz = -bz;\r\n bw = -bw;\r\n }\r\n if ((1.0 - cosom) > 0.000001) {\r\n omega = Math.acos(cosom);\r\n sinom = Math.sin(omega);\r\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\r\n scale1 = Math.sin(t * omega) / sinom;\r\n } else {\r\n scale0 = 1.0 - t;\r\n scale1 = t;\r\n }\r\n out[0] = scale0 * ax + scale1 * bx;\r\n out[1] = scale0 * ay + scale1 * by;\r\n out[2] = scale0 * az + scale1 * bz;\r\n out[3] = scale0 * aw + scale1 * bw;\r\n\r\n return out;\r\n }\r\n\r\n function quaternionToEuler(out, quat) {\r\n var qx = quat[0];\r\n var qy = quat[1];\r\n var qz = quat[2];\r\n var qw = quat[3];\r\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\r\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\r\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\r\n out[0] = heading / degToRads;\r\n out[1] = attitude / degToRads;\r\n out[2] = bank / degToRads;\r\n }\r\n\r\n function createQuaternion(values) {\r\n var heading = values[0] * degToRads;\r\n var attitude = values[1] * degToRads;\r\n var bank = values[2] * degToRads;\r\n var c1 = Math.cos(heading / 2);\r\n var c2 = Math.cos(attitude / 2);\r\n var c3 = Math.cos(bank / 2);\r\n var s1 = Math.sin(heading / 2);\r\n var s2 = Math.sin(attitude / 2);\r\n var s3 = Math.sin(bank / 2);\r\n var w = c1 * c2 * c3 - s1 * s2 * s3;\r\n var x = s1 * s2 * c3 + c1 * c2 * s3;\r\n var y = s1 * c2 * c3 + c1 * s2 * s3;\r\n var z = c1 * s2 * c3 - s1 * c2 * s3;\r\n\r\n return [x, y, z, w];\r\n }\r\n\r\n function getValueAtCurrentTime() {\r\n var frameNum = this.comp.renderedFrame - this.offsetTime;\r\n var initTime = this.keyframes[0].t - this.offsetTime;\r\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\r\n if (!(frameNum === this._caching.lastFrame || (this._caching.lastFrame !== initFrame && ((this._caching.lastFrame >= endTime && frameNum >= endTime) || (this._caching.lastFrame < initTime && frameNum < initTime))))) {\r\n if (this._caching.lastFrame >= frameNum) {\r\n this._caching._lastKeyframeIndex = -1;\r\n this._caching.lastIndex = 0;\r\n }\r\n\r\n var renderResult = this.interpolateValue(frameNum, this._caching);\r\n this.pv = renderResult;\r\n }\r\n this._caching.lastFrame = frameNum;\r\n return this.pv;\r\n }\r\n\r\n function setVValue(val) {\r\n var multipliedValue;\r\n if (this.propType === 'unidimensional') {\r\n multipliedValue = val * this.mult;\r\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\r\n this.v = multipliedValue;\r\n this._mdf = true;\r\n }\r\n } else {\r\n var i = 0;\r\n var len = this.v.length;\r\n while (i < len) {\r\n multipliedValue = val[i] * this.mult;\r\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\r\n this.v[i] = multipliedValue;\r\n this._mdf = true;\r\n }\r\n i += 1;\r\n }\r\n }\r\n }\r\n\r\n function processEffectsSequence() {\r\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\r\n return;\r\n }\r\n if (this.lock) {\r\n this.setVValue(this.pv);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = this._isFirstFrame;\r\n var i;\r\n var len = this.effectsSequence.length;\r\n var finalValue = this.kf ? this.pv : this.data.k;\r\n for (i = 0; i < len; i += 1) {\r\n finalValue = this.effectsSequence[i](finalValue);\r\n }\r\n this.setVValue(finalValue);\r\n this._isFirstFrame = false;\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function addEffect(effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.container.addDynamicProperty(this);\r\n }\r\n\r\n function ValueProperty(elem, data, mult, container) {\r\n this.propType = 'unidimensional';\r\n this.mult = mult || 1;\r\n this.data = data;\r\n this.v = mult ? data.k * mult : data.k;\r\n this.pv = data.k;\r\n this._mdf = false;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.k = false;\r\n this.kf = false;\r\n this.vel = 0;\r\n this.effectsSequence = [];\r\n this._isFirstFrame = true;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function MultiDimensionalProperty(elem, data, mult, container) {\r\n this.propType = 'multidimensional';\r\n this.mult = mult || 1;\r\n this.data = data;\r\n this._mdf = false;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.k = false;\r\n this.kf = false;\r\n this.frameId = -1;\r\n var i;\r\n var len = data.k.length;\r\n this.v = createTypedArray('float32', len);\r\n this.pv = createTypedArray('float32', len);\r\n this.vel = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n this.v[i] = data.k[i] * this.mult;\r\n this.pv[i] = data.k[i];\r\n }\r\n this._isFirstFrame = true;\r\n this.effectsSequence = [];\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function KeyframedValueProperty(elem, data, mult, container) {\r\n this.propType = 'unidimensional';\r\n this.keyframes = data.k;\r\n this.keyframesMetadata = [];\r\n this.offsetTime = elem.data.st;\r\n this.frameId = -1;\r\n this._caching = {\r\n lastFrame: initFrame, lastIndex: 0, value: 0, _lastKeyframeIndex: -1,\r\n };\r\n this.k = true;\r\n this.kf = true;\r\n this.data = data;\r\n this.mult = mult || 1;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.v = initFrame;\r\n this.pv = initFrame;\r\n this._isFirstFrame = true;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.interpolateValue = interpolateValue;\r\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\r\n this.propType = 'multidimensional';\r\n var i;\r\n var len = data.k.length;\r\n var s;\r\n var e;\r\n var to;\r\n var ti;\r\n for (i = 0; i < len - 1; i += 1) {\r\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\r\n s = data.k[i].s;\r\n e = data.k[i + 1].s;\r\n to = data.k[i].to;\r\n ti = data.k[i].ti;\r\n if ((s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1])) || (s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2]))) {\r\n data.k[i].to = null;\r\n data.k[i].ti = null;\r\n }\r\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\r\n if (s.length === 2 || (s[2] === e[2] && to[2] === 0 && ti[2] === 0)) {\r\n data.k[i].to = null;\r\n data.k[i].ti = null;\r\n }\r\n }\r\n }\r\n }\r\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\r\n this.data = data;\r\n this.keyframes = data.k;\r\n this.keyframesMetadata = [];\r\n this.offsetTime = elem.data.st;\r\n this.k = true;\r\n this.kf = true;\r\n this._isFirstFrame = true;\r\n this.mult = mult || 1;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.interpolateValue = interpolateValue;\r\n this.frameId = -1;\r\n var arrLen = data.k[0].s.length;\r\n this.v = createTypedArray('float32', arrLen);\r\n this.pv = createTypedArray('float32', arrLen);\r\n for (i = 0; i < arrLen; i += 1) {\r\n this.v[i] = initFrame;\r\n this.pv[i] = initFrame;\r\n }\r\n this._caching = { lastFrame: initFrame, lastIndex: 0, value: createTypedArray('float32', arrLen) };\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function getProp(elem, data, type, mult, container) {\r\n var p;\r\n if (!data.k.length) {\r\n p = new ValueProperty(elem, data, mult, container);\r\n } else if (typeof (data.k[0]) === 'number') {\r\n p = new MultiDimensionalProperty(elem, data, mult, container);\r\n } else {\r\n switch (type) {\r\n case 0:\r\n p = new KeyframedValueProperty(elem, data, mult, container);\r\n break;\r\n case 1:\r\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n if (p.effectsSequence.length) {\r\n container.addDynamicProperty(p);\r\n }\r\n return p;\r\n }\r\n\r\n var ob = {\r\n getProp: getProp,\r\n };\r\n return ob;\r\n}());\r\n\r\n/* global Matrix, degToRads, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n/* exported TransformPropertyFactory */\r\n\r\nvar TransformPropertyFactory = (function () {\r\n var defaultVector = [0, 0];\r\n\r\n function applyToMatrix(mat) {\r\n var _mdf = this._mdf;\r\n this.iterateDynamicProperties();\r\n this._mdf = this._mdf || _mdf;\r\n if (this.a) {\r\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n }\r\n if (this.s) {\r\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n }\r\n if (this.sk) {\r\n mat.skewFromAxis(-this.sk.v, this.sa.v);\r\n }\r\n if (this.r) {\r\n mat.rotate(-this.r.v);\r\n } else {\r\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2])\r\n .rotateY(this.or.v[1])\r\n .rotateX(this.or.v[0]);\r\n }\r\n if (this.data.p.s) {\r\n if (this.data.p.z) {\r\n mat.translate(this.px.v, this.py.v, -this.pz.v);\r\n } else {\r\n mat.translate(this.px.v, this.py.v, 0);\r\n }\r\n } else {\r\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\r\n }\r\n }\r\n function processKeys(forceRender) {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n if (this._isDirty) {\r\n this.precalculateMatrix();\r\n this._isDirty = false;\r\n }\r\n\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf || forceRender) {\r\n var frameRate;\r\n this.v.cloneFromProps(this.pre.props);\r\n if (this.appliedTransformations < 1) {\r\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n }\r\n if (this.appliedTransformations < 2) {\r\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n }\r\n if (this.sk && this.appliedTransformations < 3) {\r\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\r\n }\r\n if (this.r && this.appliedTransformations < 4) {\r\n this.v.rotate(-this.r.v);\r\n } else if (!this.r && this.appliedTransformations < 4) {\r\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2])\r\n .rotateY(this.or.v[1])\r\n .rotateX(this.or.v[0]);\r\n }\r\n if (this.autoOriented) {\r\n var v1;\r\n var v2;\r\n frameRate = this.elem.globalData.frameRate;\r\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\r\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\r\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\r\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\r\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\r\n v1 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t / frameRate), 0);\r\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\r\n } else {\r\n v1 = this.p.pv;\r\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\r\n }\r\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\r\n v1 = [];\r\n v2 = [];\r\n var px = this.px;\r\n var py = this.py;\r\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\r\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\r\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\r\n v2[0] = px.getValueAtTime((px.keyframes[0].t) / frameRate, 0);\r\n v2[1] = py.getValueAtTime((py.keyframes[0].t) / frameRate, 0);\r\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\r\n v1[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t / frameRate), 0);\r\n v1[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t / frameRate), 0);\r\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\r\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\r\n } else {\r\n v1 = [px.pv, py.pv];\r\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\r\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\r\n }\r\n } else {\r\n v2 = defaultVector;\r\n v1 = v2;\r\n }\r\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\r\n }\r\n if (this.data.p && this.data.p.s) {\r\n if (this.data.p.z) {\r\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\r\n } else {\r\n this.v.translate(this.px.v, this.py.v, 0);\r\n }\r\n } else {\r\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\r\n }\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function precalculateMatrix() {\r\n if (!this.a.k) {\r\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n this.appliedTransformations = 1;\r\n } else {\r\n return;\r\n }\r\n if (!this.s.effectsSequence.length) {\r\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n this.appliedTransformations = 2;\r\n } else {\r\n return;\r\n }\r\n if (this.sk) {\r\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\r\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\r\n this.appliedTransformations = 3;\r\n } else {\r\n return;\r\n }\r\n }\r\n if (this.r) {\r\n if (!this.r.effectsSequence.length) {\r\n this.pre.rotate(-this.r.v);\r\n this.appliedTransformations = 4;\r\n }\r\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\r\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2])\r\n .rotateY(this.or.v[1])\r\n .rotateX(this.or.v[0]);\r\n this.appliedTransformations = 4;\r\n }\r\n }\r\n\r\n function autoOrient() {\r\n //\r\n // var prevP = this.getValueAtTime();\r\n }\r\n\r\n function addDynamicProperty(prop) {\r\n this._addDynamicProperty(prop);\r\n this.elem.addDynamicProperty(prop);\r\n this._isDirty = true;\r\n }\r\n\r\n function TransformProperty(elem, data, container) {\r\n this.elem = elem;\r\n this.frameId = -1;\r\n this.propType = 'transform';\r\n this.data = data;\r\n this.v = new Matrix();\r\n // Precalculated matrix with non animated properties\r\n this.pre = new Matrix();\r\n this.appliedTransformations = 0;\r\n this.initDynamicPropertyContainer(container || elem);\r\n if (data.p && data.p.s) {\r\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\r\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\r\n if (data.p.z) {\r\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\r\n }\r\n } else {\r\n this.p = PropertyFactory.getProp(elem, data.p || { k: [0, 0, 0] }, 1, 0, this);\r\n }\r\n if (data.rx) {\r\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\r\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\r\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\r\n if (data.or.k[0].ti) {\r\n var i;\r\n var len = data.or.k.length;\r\n for (i = 0; i < len; i += 1) {\r\n data.or.k[i].to = null;\r\n data.or.k[i].ti = null;\r\n }\r\n }\r\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this);\r\n // sh Indicates it needs to be capped between -180 and 180\r\n this.or.sh = true;\r\n } else {\r\n this.r = PropertyFactory.getProp(elem, data.r || { k: 0 }, 0, degToRads, this);\r\n }\r\n if (data.sk) {\r\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\r\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\r\n }\r\n this.a = PropertyFactory.getProp(elem, data.a || { k: [0, 0, 0] }, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s || { k: [100, 100, 100] }, 1, 0.01, this);\r\n // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\r\n if (data.o) {\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\r\n } else {\r\n this.o = { _mdf: false, v: 1 };\r\n }\r\n this._isDirty = true;\r\n if (!this.dynamicProperties.length) {\r\n this.getValue(true);\r\n }\r\n }\r\n\r\n TransformProperty.prototype = {\r\n applyToMatrix: applyToMatrix,\r\n getValue: processKeys,\r\n precalculateMatrix: precalculateMatrix,\r\n autoOrient: autoOrient,\r\n };\r\n\r\n extendPrototype([DynamicPropertyContainer], TransformProperty);\r\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\r\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\r\n\r\n function getTransformProperty(elem, data, container) {\r\n return new TransformProperty(elem, data, container);\r\n }\r\n\r\n return {\r\n getTransformProperty: getTransformProperty,\r\n };\r\n}());\r\n\r\n/* global createSizedArray, createSizedArray, pointPool */\r\n\r\nfunction ShapePath() {\r\n this.c = false;\r\n this._length = 0;\r\n this._maxLength = 8;\r\n this.v = createSizedArray(this._maxLength);\r\n this.o = createSizedArray(this._maxLength);\r\n this.i = createSizedArray(this._maxLength);\r\n}\r\n\r\nShapePath.prototype.setPathData = function (closed, len) {\r\n this.c = closed;\r\n this.setLength(len);\r\n var i = 0;\r\n while (i < len) {\r\n this.v[i] = pointPool.newElement();\r\n this.o[i] = pointPool.newElement();\r\n this.i[i] = pointPool.newElement();\r\n i += 1;\r\n }\r\n};\r\n\r\nShapePath.prototype.setLength = function (len) {\r\n while (this._maxLength < len) {\r\n this.doubleArrayLength();\r\n }\r\n this._length = len;\r\n};\r\n\r\nShapePath.prototype.doubleArrayLength = function () {\r\n this.v = this.v.concat(createSizedArray(this._maxLength));\r\n this.i = this.i.concat(createSizedArray(this._maxLength));\r\n this.o = this.o.concat(createSizedArray(this._maxLength));\r\n this._maxLength *= 2;\r\n};\r\n\r\nShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\r\n var arr;\r\n this._length = Math.max(this._length, pos + 1);\r\n if (this._length >= this._maxLength) {\r\n this.doubleArrayLength();\r\n }\r\n switch (type) {\r\n case 'v':\r\n arr = this.v;\r\n break;\r\n case 'i':\r\n arr = this.i;\r\n break;\r\n case 'o':\r\n arr = this.o;\r\n break;\r\n default:\r\n arr = [];\r\n break;\r\n }\r\n if (!arr[pos] || (arr[pos] && !replace)) {\r\n arr[pos] = pointPool.newElement();\r\n }\r\n arr[pos][0] = x;\r\n arr[pos][1] = y;\r\n};\r\n\r\nShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\r\n this.setXYAt(vX, vY, 'v', pos, replace);\r\n this.setXYAt(oX, oY, 'o', pos, replace);\r\n this.setXYAt(iX, iY, 'i', pos, replace);\r\n};\r\n\r\nShapePath.prototype.reverse = function () {\r\n var newPath = new ShapePath();\r\n newPath.setPathData(this.c, this._length);\r\n var vertices = this.v;\r\n var outPoints = this.o;\r\n var inPoints = this.i;\r\n var init = 0;\r\n if (this.c) {\r\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\r\n init = 1;\r\n }\r\n var cnt = this._length - 1;\r\n var len = this._length;\r\n\r\n var i;\r\n for (i = init; i < len; i += 1) {\r\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\r\n cnt -= 1;\r\n }\r\n return newPath;\r\n};\r\n\r\n/* global extendPrototype, roundCorner, BezierFactory, shapePool, degToRads,\r\n shapeCollectionPool, PropertyFactory, bmMin, DynamicPropertyContainer */\r\n/* exported ShapePropertyFactory */\r\n\r\nvar ShapePropertyFactory = (function () {\r\n var initFrame = -999999;\r\n\r\n function interpolateShape(frameNum, previousValue, caching) {\r\n var iterationIndex = caching.lastIndex;\r\n var keyPropS;\r\n var keyPropE;\r\n var isHold;\r\n var j;\r\n var k;\r\n var jLen;\r\n var kLen;\r\n var perc;\r\n var vertexValue;\r\n var kf = this.keyframes;\r\n if (frameNum < kf[0].t - this.offsetTime) {\r\n keyPropS = kf[0].s[0];\r\n isHold = true;\r\n iterationIndex = 0;\r\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\r\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\r\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\r\n isHold = true;\r\n } else {\r\n var i = iterationIndex;\r\n var len = kf.length - 1;\r\n var flag = true;\r\n var keyData;\r\n var nextKeyData;\r\n var keyframeMetadata;\r\n while (flag) {\r\n keyData = kf[i];\r\n nextKeyData = kf[i + 1];\r\n if ((nextKeyData.t - this.offsetTime) > frameNum) {\r\n break;\r\n }\r\n if (i < len - 1) {\r\n i += 1;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n keyframeMetadata = this.keyframesMetadata[i] || {};\r\n isHold = keyData.h === 1;\r\n iterationIndex = i;\r\n if (!isHold) {\r\n if (frameNum >= nextKeyData.t - this.offsetTime) {\r\n perc = 1;\r\n } else if (frameNum < keyData.t - this.offsetTime) {\r\n perc = 0;\r\n } else {\r\n var fnc;\r\n if (keyframeMetadata.__fnct) {\r\n fnc = keyframeMetadata.__fnct;\r\n } else {\r\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\r\n keyframeMetadata.__fnct = fnc;\r\n }\r\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / ((nextKeyData.t - this.offsetTime) - (keyData.t - this.offsetTime)));\r\n }\r\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\r\n }\r\n keyPropS = keyData.s[0];\r\n }\r\n jLen = previousValue._length;\r\n kLen = keyPropS.i[0].length;\r\n caching.lastIndex = iterationIndex;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n for (k = 0; k < kLen; k += 1) {\r\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\r\n previousValue.i[j][k] = vertexValue;\r\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\r\n previousValue.o[j][k] = vertexValue;\r\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\r\n previousValue.v[j][k] = vertexValue;\r\n }\r\n }\r\n }\r\n\r\n function interpolateShapeCurrentTime() {\r\n var frameNum = this.comp.renderedFrame - this.offsetTime;\r\n var initTime = this.keyframes[0].t - this.offsetTime;\r\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\r\n var lastFrame = this._caching.lastFrame;\r\n if (!(lastFrame !== initFrame && ((lastFrame < initTime && frameNum < initTime) || (lastFrame > endTime && frameNum > endTime)))) {\r\n /// /\r\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\r\n this.interpolateShape(frameNum, this.pv, this._caching);\r\n /// /\r\n }\r\n this._caching.lastFrame = frameNum;\r\n return this.pv;\r\n }\r\n\r\n function resetShape() {\r\n this.paths = this.localShapeCollection;\r\n }\r\n\r\n function shapesEqual(shape1, shape2) {\r\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\r\n return false;\r\n }\r\n var i;\r\n var len = shape1._length;\r\n for (i = 0; i < len; i += 1) {\r\n if (shape1.v[i][0] !== shape2.v[i][0]\r\n || shape1.v[i][1] !== shape2.v[i][1]\r\n || shape1.o[i][0] !== shape2.o[i][0]\r\n || shape1.o[i][1] !== shape2.o[i][1]\r\n || shape1.i[i][0] !== shape2.i[i][0]\r\n || shape1.i[i][1] !== shape2.i[i][1]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n function setVValue(newPath) {\r\n if (!shapesEqual(this.v, newPath)) {\r\n this.v = shapePool.clone(newPath);\r\n this.localShapeCollection.releaseShapes();\r\n this.localShapeCollection.addShape(this.v);\r\n this._mdf = true;\r\n this.paths = this.localShapeCollection;\r\n }\r\n }\r\n\r\n function processEffectsSequence() {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n } if (!this.effectsSequence.length) {\r\n this._mdf = false;\r\n return;\r\n }\r\n if (this.lock) {\r\n this.setVValue(this.pv);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = false;\r\n var finalValue;\r\n if (this.kf) {\r\n finalValue = this.pv;\r\n } else if (this.data.ks) {\r\n finalValue = this.data.ks.k;\r\n } else {\r\n finalValue = this.data.pt.k;\r\n }\r\n var i;\r\n var len = this.effectsSequence.length;\r\n for (i = 0; i < len; i += 1) {\r\n finalValue = this.effectsSequence[i](finalValue);\r\n }\r\n this.setVValue(finalValue);\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function ShapeProperty(elem, data, type) {\r\n this.propType = 'shape';\r\n this.comp = elem.comp;\r\n this.container = elem;\r\n this.elem = elem;\r\n this.data = data;\r\n this.k = false;\r\n this.kf = false;\r\n this._mdf = false;\r\n var pathData = type === 3 ? data.pt.k : data.ks.k;\r\n this.v = shapePool.clone(pathData);\r\n this.pv = shapePool.clone(this.v);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.paths.addShape(this.v);\r\n this.reset = resetShape;\r\n this.effectsSequence = [];\r\n }\r\n\r\n function addEffect(effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.container.addDynamicProperty(this);\r\n }\r\n\r\n ShapeProperty.prototype.interpolateShape = interpolateShape;\r\n ShapeProperty.prototype.getValue = processEffectsSequence;\r\n ShapeProperty.prototype.setVValue = setVValue;\r\n ShapeProperty.prototype.addEffect = addEffect;\r\n\r\n function KeyframedShapeProperty(elem, data, type) {\r\n this.propType = 'shape';\r\n this.comp = elem.comp;\r\n this.elem = elem;\r\n this.container = elem;\r\n this.offsetTime = elem.data.st;\r\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\r\n this.keyframesMetadata = [];\r\n this.k = true;\r\n this.kf = true;\r\n var len = this.keyframes[0].s[0].i.length;\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(this.keyframes[0].s[0].c, len);\r\n this.pv = shapePool.clone(this.v);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.paths.addShape(this.v);\r\n this.lastFrame = initFrame;\r\n this.reset = resetShape;\r\n this._caching = { lastFrame: initFrame, lastIndex: 0 };\r\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\r\n }\r\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\r\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\r\n KeyframedShapeProperty.prototype.setVValue = setVValue;\r\n KeyframedShapeProperty.prototype.addEffect = addEffect;\r\n\r\n var EllShapeProperty = (function () {\r\n var cPoint = roundCorner;\r\n\r\n function EllShapePropertyFactory(elem, data) {\r\n /* this.v = {\r\n v: createSizedArray(4),\r\n i: createSizedArray(4),\r\n o: createSizedArray(4),\r\n c: true\r\n }; */\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(true, 4);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.localShapeCollection.addShape(this.v);\r\n this.d = data.d;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.frameId = -1;\r\n this.initDynamicPropertyContainer(elem);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertEllToPath();\r\n }\r\n }\r\n\r\n EllShapePropertyFactory.prototype = {\r\n reset: resetShape,\r\n getValue: function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf) {\r\n this.convertEllToPath();\r\n }\r\n },\r\n convertEllToPath: function () {\r\n var p0 = this.p.v[0];\r\n var p1 = this.p.v[1];\r\n var s0 = this.s.v[0] / 2;\r\n var s1 = this.s.v[1] / 2;\r\n var _cw = this.d !== 3;\r\n var _v = this.v;\r\n _v.v[0][0] = p0;\r\n _v.v[0][1] = p1 - s1;\r\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.v[1][1] = p1;\r\n _v.v[2][0] = p0;\r\n _v.v[2][1] = p1 + s1;\r\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.v[3][1] = p1;\r\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\r\n _v.i[0][1] = p1 - s1;\r\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.i[1][1] = p1 - s1 * cPoint;\r\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\r\n _v.i[2][1] = p1 + s1;\r\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.i[3][1] = p1 + s1 * cPoint;\r\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\r\n _v.o[0][1] = p1 - s1;\r\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.o[1][1] = p1 + s1 * cPoint;\r\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\r\n _v.o[2][1] = p1 + s1;\r\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.o[3][1] = p1 - s1 * cPoint;\r\n },\r\n };\r\n\r\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\r\n\r\n return EllShapePropertyFactory;\r\n }());\r\n\r\n var StarShapeProperty = (function () {\r\n function StarShapePropertyFactory(elem, data) {\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(true, 0);\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.data = data;\r\n this.frameId = -1;\r\n this.d = data.d;\r\n this.initDynamicPropertyContainer(elem);\r\n if (data.sy === 1) {\r\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\r\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\r\n this.convertToPath = this.convertStarToPath;\r\n } else {\r\n this.convertToPath = this.convertPolygonToPath;\r\n }\r\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\r\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\r\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.localShapeCollection.addShape(this.v);\r\n this.paths = this.localShapeCollection;\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertToPath();\r\n }\r\n }\r\n\r\n StarShapePropertyFactory.prototype = {\r\n reset: resetShape,\r\n getValue: function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n if (this._mdf) {\r\n this.convertToPath();\r\n }\r\n },\r\n convertStarToPath: function () {\r\n var numPts = Math.floor(this.pt.v) * 2;\r\n var angle = (Math.PI * 2) / numPts;\r\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\r\n var longFlag = true;\r\n var longRad = this.or.v;\r\n var shortRad = this.ir.v;\r\n var longRound = this.os.v;\r\n var shortRound = this.is.v;\r\n var longPerimSegment = (2 * Math.PI * longRad) / (numPts * 2);\r\n var shortPerimSegment = (2 * Math.PI * shortRad) / (numPts * 2);\r\n var i;\r\n var rad;\r\n var roundness;\r\n var perimSegment;\r\n var currentAng = -Math.PI / 2;\r\n currentAng += this.r.v;\r\n var dir = this.data.d === 3 ? -1 : 1;\r\n this.v._length = 0;\r\n for (i = 0; i < numPts; i += 1) {\r\n rad = longFlag ? longRad : shortRad;\r\n roundness = longFlag ? longRound : shortRound;\r\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\r\n var x = rad * Math.cos(currentAng);\r\n var y = rad * Math.sin(currentAng);\r\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\r\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\r\n x += +this.p.v[0];\r\n y += +this.p.v[1];\r\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\r\n\r\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\r\n longFlag = !longFlag;\r\n currentAng += angle * dir;\r\n }\r\n },\r\n convertPolygonToPath: function () {\r\n var numPts = Math.floor(this.pt.v);\r\n var angle = (Math.PI * 2) / numPts;\r\n var rad = this.or.v;\r\n var roundness = this.os.v;\r\n var perimSegment = (2 * Math.PI * rad) / (numPts * 4);\r\n var i;\r\n var currentAng = -Math.PI * 0.5;\r\n var dir = this.data.d === 3 ? -1 : 1;\r\n currentAng += this.r.v;\r\n this.v._length = 0;\r\n for (i = 0; i < numPts; i += 1) {\r\n var x = rad * Math.cos(currentAng);\r\n var y = rad * Math.sin(currentAng);\r\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\r\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\r\n x += +this.p.v[0];\r\n y += +this.p.v[1];\r\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\r\n currentAng += angle * dir;\r\n }\r\n this.paths.length = 0;\r\n this.paths[0] = this.v;\r\n },\r\n\r\n };\r\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\r\n\r\n return StarShapePropertyFactory;\r\n }());\r\n\r\n var RectShapeProperty = (function () {\r\n function RectShapePropertyFactory(elem, data) {\r\n this.v = shapePool.newElement();\r\n this.v.c = true;\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.localShapeCollection.addShape(this.v);\r\n this.paths = this.localShapeCollection;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.frameId = -1;\r\n this.d = data.d;\r\n this.initDynamicPropertyContainer(elem);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\r\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertRectToPath();\r\n }\r\n }\r\n\r\n RectShapePropertyFactory.prototype = {\r\n convertRectToPath: function () {\r\n var p0 = this.p.v[0];\r\n var p1 = this.p.v[1];\r\n var v0 = this.s.v[0] / 2;\r\n var v1 = this.s.v[1] / 2;\r\n var round = bmMin(v0, v1, this.r.v);\r\n var cPoint = round * (1 - roundCorner);\r\n this.v._length = 0;\r\n\r\n if (this.d === 2 || this.d === 1) {\r\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\r\n if (round !== 0) {\r\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\r\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\r\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\r\n } else {\r\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\r\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\r\n }\r\n } else {\r\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\r\n if (round !== 0) {\r\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\r\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\r\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\r\n } else {\r\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\r\n }\r\n }\r\n },\r\n getValue: function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n if (this._mdf) {\r\n this.convertRectToPath();\r\n }\r\n },\r\n reset: resetShape,\r\n };\r\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\r\n\r\n return RectShapePropertyFactory;\r\n }());\r\n\r\n function getShapeProp(elem, data, type) {\r\n var prop;\r\n if (type === 3 || type === 4) {\r\n var dataProp = type === 3 ? data.pt : data.ks;\r\n var keys = dataProp.k;\r\n if (keys.length) {\r\n prop = new KeyframedShapeProperty(elem, data, type);\r\n } else {\r\n prop = new ShapeProperty(elem, data, type);\r\n }\r\n } else if (type === 5) {\r\n prop = new RectShapeProperty(elem, data);\r\n } else if (type === 6) {\r\n prop = new EllShapeProperty(elem, data);\r\n } else if (type === 7) {\r\n prop = new StarShapeProperty(elem, data);\r\n }\r\n if (prop.k) {\r\n elem.addDynamicProperty(prop);\r\n }\r\n return prop;\r\n }\r\n\r\n function getConstructorFunction() {\r\n return ShapeProperty;\r\n }\r\n\r\n function getKeyframedConstructorFunction() {\r\n return KeyframedShapeProperty;\r\n }\r\n\r\n var ob = {};\r\n ob.getShapeProp = getShapeProp;\r\n ob.getConstructorFunction = getConstructorFunction;\r\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\r\n return ob;\r\n}());\r\n\r\n/* global shapeCollectionPool, initialDefaultFrame, extendPrototype, DynamicPropertyContainer */\r\n/* exported ShapeModifiers */\r\n\r\nvar ShapeModifiers = (function () {\r\n var ob = {};\r\n var modifiers = {};\r\n ob.registerModifier = registerModifier;\r\n ob.getModifier = getModifier;\r\n\r\n function registerModifier(nm, factory) {\r\n if (!modifiers[nm]) {\r\n modifiers[nm] = factory;\r\n }\r\n }\r\n\r\n function getModifier(nm, elem, data) {\r\n return new modifiers[nm](elem, data);\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\nfunction ShapeModifier() {}\r\nShapeModifier.prototype.initModifierProperties = function () {};\r\nShapeModifier.prototype.addShapeToModifier = function () {};\r\nShapeModifier.prototype.addShape = function (data) {\r\n if (!this.closed) {\r\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\r\n data.sh.container.addDynamicProperty(data.sh);\r\n var shapeData = { shape: data.sh, data: data, localShapeCollection: shapeCollectionPool.newShapeCollection() };\r\n this.shapes.push(shapeData);\r\n this.addShapeToModifier(shapeData);\r\n if (this._isAnimated) {\r\n data.setAsAnimated();\r\n }\r\n }\r\n};\r\nShapeModifier.prototype.init = function (elem, data) {\r\n this.shapes = [];\r\n this.elem = elem;\r\n this.initDynamicPropertyContainer(elem);\r\n this.initModifierProperties(elem, data);\r\n this.frameId = initialDefaultFrame;\r\n this.closed = false;\r\n this.k = false;\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.getValue(true);\r\n }\r\n};\r\nShapeModifier.prototype.processKeys = function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n};\r\n\r\nextendPrototype([DynamicPropertyContainer], ShapeModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, PropertyFactory, segmentsLengthPool, bez, shapePool, ShapeModifiers */\r\n\r\nfunction TrimModifier() {\r\n}\r\nextendPrototype([ShapeModifier], TrimModifier);\r\nTrimModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\r\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\r\n this.sValue = 0;\r\n this.eValue = 0;\r\n this.getValue = this.processKeys;\r\n this.m = data.m;\r\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\r\n};\r\n\r\nTrimModifier.prototype.addShapeToModifier = function (shapeData) {\r\n shapeData.pathsData = [];\r\n};\r\n\r\nTrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\r\n var segments = [];\r\n if (e <= 1) {\r\n segments.push({\r\n s: s,\r\n e: e,\r\n });\r\n } else if (s >= 1) {\r\n segments.push({\r\n s: s - 1,\r\n e: e - 1,\r\n });\r\n } else {\r\n segments.push({\r\n s: s,\r\n e: 1,\r\n });\r\n segments.push({\r\n s: 0,\r\n e: e - 1,\r\n });\r\n }\r\n var shapeSegments = [];\r\n var i;\r\n var len = segments.length;\r\n var segmentOb;\r\n for (i = 0; i < len; i += 1) {\r\n segmentOb = segments[i];\r\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\r\n var shapeS;\r\n var shapeE;\r\n if (segmentOb.s * totalModifierLength <= addedLength) {\r\n shapeS = 0;\r\n } else {\r\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\r\n }\r\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\r\n shapeE = 1;\r\n } else {\r\n shapeE = ((segmentOb.e * totalModifierLength - addedLength) / shapeLength);\r\n }\r\n shapeSegments.push([shapeS, shapeE]);\r\n }\r\n }\r\n if (!shapeSegments.length) {\r\n shapeSegments.push([0, 0]);\r\n }\r\n return shapeSegments;\r\n};\r\n\r\nTrimModifier.prototype.releasePathsData = function (pathsData) {\r\n var i;\r\n var len = pathsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n segmentsLengthPool.release(pathsData[i]);\r\n }\r\n pathsData.length = 0;\r\n return pathsData;\r\n};\r\n\r\nTrimModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var s;\r\n var e;\r\n if (this._mdf || _isFirstFrame) {\r\n var o = (this.o.v % 360) / 360;\r\n if (o < 0) {\r\n o += 1;\r\n }\r\n if (this.s.v > 1) {\r\n s = 1 + o;\r\n } else if (this.s.v < 0) {\r\n s = 0 + o;\r\n } else {\r\n s = this.s.v + o;\r\n }\r\n if (this.e.v > 1) {\r\n e = 1 + o;\r\n } else if (this.e.v < 0) {\r\n e = 0 + o;\r\n } else {\r\n e = this.e.v + o;\r\n }\r\n\r\n if (s > e) {\r\n var _s = s;\r\n s = e;\r\n e = _s;\r\n }\r\n s = Math.round(s * 10000) * 0.0001;\r\n e = Math.round(e * 10000) * 0.0001;\r\n this.sValue = s;\r\n this.eValue = e;\r\n } else {\r\n s = this.sValue;\r\n e = this.eValue;\r\n }\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var pathsData;\r\n var pathData;\r\n var totalShapeLength;\r\n var totalModifierLength = 0;\r\n\r\n if (e === s) {\r\n for (i = 0; i < len; i += 1) {\r\n this.shapes[i].localShapeCollection.releaseShapes();\r\n this.shapes[i].shape._mdf = true;\r\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\r\n if (this._mdf) {\r\n this.shapes[i].pathsData.length = 0;\r\n }\r\n }\r\n } else if (!((e === 1 && s === 0) || (e === 0 && s === 1))) {\r\n var segments = [];\r\n var shapeData;\r\n var localShapeCollection;\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\r\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n } else {\r\n shapePaths = shapeData.shape.paths;\r\n jLen = shapePaths._length;\r\n totalShapeLength = 0;\r\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\r\n totalShapeLength = shapeData.totalShapeLength;\r\n } else {\r\n pathsData = this.releasePathsData(shapeData.pathsData);\r\n for (j = 0; j < jLen; j += 1) {\r\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\r\n pathsData.push(pathData);\r\n totalShapeLength += pathData.totalLength;\r\n }\r\n shapeData.totalShapeLength = totalShapeLength;\r\n shapeData.pathsData = pathsData;\r\n }\r\n\r\n totalModifierLength += totalShapeLength;\r\n shapeData.shape._mdf = true;\r\n }\r\n }\r\n var shapeS = s;\r\n var shapeE = e;\r\n var addedLength = 0;\r\n var edges;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n shapeData = this.shapes[i];\r\n if (shapeData.shape._mdf) {\r\n localShapeCollection = shapeData.localShapeCollection;\r\n localShapeCollection.releaseShapes();\r\n // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\r\n if (this.m === 2 && len > 1) {\r\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\r\n addedLength += shapeData.totalShapeLength;\r\n } else {\r\n edges = [[shapeS, shapeE]];\r\n }\r\n jLen = edges.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n shapeS = edges[j][0];\r\n shapeE = edges[j][1];\r\n segments.length = 0;\r\n if (shapeE <= 1) {\r\n segments.push({\r\n s: shapeData.totalShapeLength * shapeS,\r\n e: shapeData.totalShapeLength * shapeE,\r\n });\r\n } else if (shapeS >= 1) {\r\n segments.push({\r\n s: shapeData.totalShapeLength * (shapeS - 1),\r\n e: shapeData.totalShapeLength * (shapeE - 1),\r\n });\r\n } else {\r\n segments.push({\r\n s: shapeData.totalShapeLength * shapeS,\r\n e: shapeData.totalShapeLength,\r\n });\r\n segments.push({\r\n s: 0,\r\n e: shapeData.totalShapeLength * (shapeE - 1),\r\n });\r\n }\r\n var newShapesData = this.addShapes(shapeData, segments[0]);\r\n if (segments[0].s !== segments[0].e) {\r\n if (segments.length > 1) {\r\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\r\n if (lastShapeInCollection.c) {\r\n var lastShape = newShapesData.pop();\r\n this.addPaths(newShapesData, localShapeCollection);\r\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\r\n } else {\r\n this.addPaths(newShapesData, localShapeCollection);\r\n newShapesData = this.addShapes(shapeData, segments[1]);\r\n }\r\n }\r\n this.addPaths(newShapesData, localShapeCollection);\r\n }\r\n }\r\n shapeData.shape.paths = localShapeCollection;\r\n }\r\n }\r\n } else if (this._mdf) {\r\n for (i = 0; i < len; i += 1) {\r\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\r\n // Don't remove this even if it's losing cached info.\r\n this.shapes[i].pathsData.length = 0;\r\n this.shapes[i].shape._mdf = true;\r\n }\r\n }\r\n};\r\n\r\nTrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\r\n var i;\r\n var len = newPaths.length;\r\n for (i = 0; i < len; i += 1) {\r\n localShapeCollection.addShape(newPaths[i]);\r\n }\r\n};\r\n\r\nTrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\r\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\r\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\r\n if (newShape) {\r\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\r\n }\r\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\r\n};\r\n\r\nTrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\r\n shapePath.setXYAt(points[1], points[5], 'o', pos);\r\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\r\n if (newShape) {\r\n shapePath.setXYAt(points[0], points[4], 'v', pos);\r\n }\r\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\r\n};\r\n\r\nTrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\r\n var pathsData = shapeData.pathsData;\r\n var shapePaths = shapeData.shape.paths.shapes;\r\n var i;\r\n var len = shapeData.shape.paths._length;\r\n var j;\r\n var jLen;\r\n var addedLength = 0;\r\n var currentLengthData;\r\n var segmentCount;\r\n var lengths;\r\n var segment;\r\n var shapes = [];\r\n var initPos;\r\n var newShape = true;\r\n if (!shapePath) {\r\n shapePath = shapePool.newElement();\r\n segmentCount = 0;\r\n initPos = 0;\r\n } else {\r\n segmentCount = shapePath._length;\r\n initPos = shapePath._length;\r\n }\r\n shapes.push(shapePath);\r\n for (i = 0; i < len; i += 1) {\r\n lengths = pathsData[i].lengths;\r\n shapePath.c = shapePaths[i].c;\r\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\r\n for (j = 1; j < jLen; j += 1) {\r\n currentLengthData = lengths[j - 1];\r\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\r\n addedLength += currentLengthData.addedLength;\r\n shapePath.c = false;\r\n } else if (addedLength > shapeSegment.e) {\r\n shapePath.c = false;\r\n break;\r\n } else {\r\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\r\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\r\n newShape = false;\r\n } else {\r\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\r\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);\r\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n newShape = false;\r\n shapePath.c = false;\r\n }\r\n addedLength += currentLengthData.addedLength;\r\n segmentCount += 1;\r\n }\r\n }\r\n if (shapePaths[i].c && lengths.length) {\r\n currentLengthData = lengths[j - 1];\r\n if (addedLength <= shapeSegment.e) {\r\n var segmentLength = lengths[j - 1].addedLength;\r\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\r\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\r\n newShape = false;\r\n } else {\r\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\r\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);\r\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n newShape = false;\r\n shapePath.c = false;\r\n }\r\n } else {\r\n shapePath.c = false;\r\n }\r\n addedLength += currentLengthData.addedLength;\r\n segmentCount += 1;\r\n }\r\n if (shapePath._length) {\r\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\r\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\r\n }\r\n if (addedLength > shapeSegment.e) {\r\n break;\r\n }\r\n if (i < len - 1) {\r\n shapePath = shapePool.newElement();\r\n newShape = true;\r\n shapes.push(shapePath);\r\n segmentCount = 0;\r\n }\r\n }\r\n return shapes;\r\n};\r\n\r\nShapeModifiers.registerModifier('tm', TrimModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, PropertyFactory, shapePool, roundCorner, ShapeModifiers */\r\n\r\nfunction RoundCornersModifier() {}\r\nextendPrototype([ShapeModifier], RoundCornersModifier);\r\nRoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\r\n this._isAnimated = !!this.rd.effectsSequence.length;\r\n};\r\n\r\nRoundCornersModifier.prototype.processPath = function (path, round) {\r\n var clonedPath = shapePool.newElement();\r\n clonedPath.c = path.c;\r\n var i;\r\n var len = path._length;\r\n var currentV;\r\n var currentI;\r\n var currentO;\r\n var closerV;\r\n var distance;\r\n var newPosPerc;\r\n var index = 0;\r\n var vX;\r\n var vY;\r\n var oX;\r\n var oY;\r\n var iX;\r\n var iY;\r\n for (i = 0; i < len; i += 1) {\r\n currentV = path.v[i];\r\n currentO = path.o[i];\r\n currentI = path.i[i];\r\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\r\n if ((i === 0 || i === len - 1) && !path.c) {\r\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\r\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\r\n index += 1;\r\n } else {\r\n if (i === 0) {\r\n closerV = path.v[len - 1];\r\n } else {\r\n closerV = path.v[i - 1];\r\n }\r\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\r\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\r\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\r\n vX = iX;\r\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\r\n vY = iY;\r\n oX = vX - (vX - currentV[0]) * roundCorner;\r\n oY = vY - (vY - currentV[1]) * roundCorner;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\r\n index += 1;\r\n\r\n if (i === len - 1) {\r\n closerV = path.v[0];\r\n } else {\r\n closerV = path.v[i + 1];\r\n }\r\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\r\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\r\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\r\n vX = oX;\r\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\r\n vY = oY;\r\n iX = vX - (vX - currentV[0]) * roundCorner;\r\n iY = vY - (vY - currentV[1]) * roundCorner;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\r\n index += 1;\r\n }\r\n } else {\r\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\r\n index += 1;\r\n }\r\n }\r\n return clonedPath;\r\n};\r\n\r\nRoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var rd = this.rd.v;\r\n\r\n if (rd !== 0) {\r\n var shapeData;\r\n var localShapeCollection;\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n localShapeCollection.releaseShapes();\r\n shapeData.shape._mdf = true;\r\n shapePaths = shapeData.shape.paths.shapes;\r\n jLen = shapeData.shape.paths._length;\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\r\n }\r\n }\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n};\r\n\r\nShapeModifiers.registerModifier('rd', RoundCornersModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, PropertyFactory, shapePool, ShapeModifiers */\r\n\r\nfunction PuckerAndBloatModifier() {}\r\nextendPrototype([ShapeModifier], PuckerAndBloatModifier);\r\nPuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\r\n this._isAnimated = !!this.amount.effectsSequence.length;\r\n};\r\n\r\nPuckerAndBloatModifier.prototype.processPath = function (path, amount) {\r\n var percent = amount / 100;\r\n var centerPoint = [0, 0];\r\n var pathLength = path._length;\r\n var i = 0;\r\n for (i = 0; i < pathLength; i += 1) {\r\n centerPoint[0] += path.v[i][0];\r\n centerPoint[1] += path.v[i][1];\r\n }\r\n centerPoint[0] /= pathLength;\r\n centerPoint[1] /= pathLength;\r\n var clonedPath = shapePool.newElement();\r\n clonedPath.c = path.c;\r\n var vX;\r\n var vY;\r\n var oX;\r\n var oY;\r\n var iX;\r\n var iY;\r\n for (i = 0; i < pathLength; i += 1) {\r\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\r\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\r\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\r\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\r\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\r\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\r\n }\r\n return clonedPath;\r\n};\r\n\r\nPuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var amount = this.amount.v;\r\n\r\n if (amount !== 0) {\r\n var shapeData;\r\n var localShapeCollection;\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n localShapeCollection.releaseShapes();\r\n shapeData.shape._mdf = true;\r\n shapePaths = shapeData.shape.paths.shapes;\r\n jLen = shapeData.shape.paths._length;\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\r\n }\r\n }\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n};\r\nShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, TransformPropertyFactory, PropertyFactory, Matrix, ShapeModifiers */\r\n\r\nfunction RepeaterModifier() {}\r\nextendPrototype([ShapeModifier], RepeaterModifier);\r\n\r\nRepeaterModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\r\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\r\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\r\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\r\n this.data = data;\r\n if (!this.dynamicProperties.length) {\r\n this.getValue(true);\r\n }\r\n this._isAnimated = !!this.dynamicProperties.length;\r\n this.pMatrix = new Matrix();\r\n this.rMatrix = new Matrix();\r\n this.sMatrix = new Matrix();\r\n this.tMatrix = new Matrix();\r\n this.matrix = new Matrix();\r\n};\r\n\r\nRepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\r\n var dir = inv ? -1 : 1;\r\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\r\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\r\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\r\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\r\n rMatrix.rotate(-transform.r.v * dir * perc);\r\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\r\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\r\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\r\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\r\n};\r\n\r\nRepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\r\n this.elem = elem;\r\n this.arr = arr;\r\n this.pos = pos;\r\n this.elemsData = elemsData;\r\n this._currentCopies = 0;\r\n this._elements = [];\r\n this._groups = [];\r\n this.frameId = -1;\r\n this.initDynamicPropertyContainer(elem);\r\n this.initModifierProperties(elem, arr[pos]);\r\n while (pos > 0) {\r\n pos -= 1;\r\n // this._elements.unshift(arr.splice(pos,1)[0]);\r\n this._elements.unshift(arr[pos]);\r\n }\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.getValue(true);\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.resetElements = function (elements) {\r\n var i;\r\n var len = elements.length;\r\n for (i = 0; i < len; i += 1) {\r\n elements[i]._processed = false;\r\n if (elements[i].ty === 'gr') {\r\n this.resetElements(elements[i].it);\r\n }\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.cloneElements = function (elements) {\r\n var newElements = JSON.parse(JSON.stringify(elements));\r\n this.resetElements(newElements);\r\n return newElements;\r\n};\r\n\r\nRepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\r\n var i;\r\n var len = elements.length;\r\n for (i = 0; i < len; i += 1) {\r\n elements[i]._render = renderFlag;\r\n if (elements[i].ty === 'gr') {\r\n this.changeGroupRender(elements[i].it, renderFlag);\r\n }\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var items;\r\n var itemsTransform;\r\n var i;\r\n var dir;\r\n var cont;\r\n var hasReloaded = false;\r\n if (this._mdf || _isFirstFrame) {\r\n var copies = Math.ceil(this.c.v);\r\n if (this._groups.length < copies) {\r\n while (this._groups.length < copies) {\r\n var group = {\r\n it: this.cloneElements(this._elements),\r\n ty: 'gr',\r\n };\r\n group.it.push({\r\n a: { a: 0, ix: 1, k: [0, 0] }, nm: 'Transform', o: { a: 0, ix: 7, k: 100 }, p: { a: 0, ix: 2, k: [0, 0] }, r: { a: 1, ix: 6, k: [{ s: 0, e: 0, t: 0 }, { s: 0, e: 0, t: 1 }] }, s: { a: 0, ix: 3, k: [100, 100] }, sa: { a: 0, ix: 5, k: 0 }, sk: { a: 0, ix: 4, k: 0 }, ty: 'tr',\r\n });\r\n\r\n this.arr.splice(0, 0, group);\r\n this._groups.splice(0, 0, group);\r\n this._currentCopies += 1;\r\n }\r\n this.elem.reloadShapes();\r\n hasReloaded = true;\r\n }\r\n cont = 0;\r\n var renderFlag;\r\n for (i = 0; i <= this._groups.length - 1; i += 1) {\r\n renderFlag = cont < copies;\r\n this._groups[i]._render = renderFlag;\r\n this.changeGroupRender(this._groups[i].it, renderFlag);\r\n if (!renderFlag) {\r\n var elems = this.elemsData[i].it;\r\n var transformData = elems[elems.length - 1];\r\n if (transformData.transform.op.v !== 0) {\r\n transformData.transform.op._mdf = true;\r\n transformData.transform.op.v = 0;\r\n } else {\r\n transformData.transform.op._mdf = false;\r\n }\r\n }\r\n cont += 1;\r\n }\r\n\r\n this._currentCopies = copies;\r\n /// /\r\n\r\n var offset = this.o.v;\r\n var offsetModulo = offset % 1;\r\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\r\n var pProps = this.pMatrix.props;\r\n var rProps = this.rMatrix.props;\r\n var sProps = this.sMatrix.props;\r\n this.pMatrix.reset();\r\n this.rMatrix.reset();\r\n this.sMatrix.reset();\r\n this.tMatrix.reset();\r\n this.matrix.reset();\r\n var iteration = 0;\r\n\r\n if (offset > 0) {\r\n while (iteration < roundOffset) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\r\n iteration += 1;\r\n }\r\n if (offsetModulo) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\r\n iteration += offsetModulo;\r\n }\r\n } else if (offset < 0) {\r\n while (iteration > roundOffset) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\r\n iteration -= 1;\r\n }\r\n if (offsetModulo) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\r\n iteration -= offsetModulo;\r\n }\r\n }\r\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\r\n dir = this.data.m === 1 ? 1 : -1;\r\n cont = this._currentCopies;\r\n var j;\r\n var jLen;\r\n while (cont) {\r\n items = this.elemsData[i].it;\r\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\r\n jLen = itemsTransform.length;\r\n items[items.length - 1].transform.mProps._mdf = true;\r\n items[items.length - 1].transform.op._mdf = true;\r\n items[items.length - 1].transform.op.v = this._currentCopies === 1\r\n ? this.so.v\r\n : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\r\n\r\n if (iteration !== 0) {\r\n if ((i !== 0 && dir === 1) || (i !== this._currentCopies - 1 && dir === -1)) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\r\n }\r\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\r\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\r\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsTransform[j] = this.matrix.props[j];\r\n }\r\n this.matrix.reset();\r\n } else {\r\n this.matrix.reset();\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsTransform[j] = this.matrix.props[j];\r\n }\r\n }\r\n iteration += 1;\r\n cont -= 1;\r\n i += dir;\r\n }\r\n } else {\r\n cont = this._currentCopies;\r\n i = 0;\r\n dir = 1;\r\n while (cont) {\r\n items = this.elemsData[i].it;\r\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\r\n items[items.length - 1].transform.mProps._mdf = false;\r\n items[items.length - 1].transform.op._mdf = false;\r\n cont -= 1;\r\n i += dir;\r\n }\r\n }\r\n return hasReloaded;\r\n};\r\n\r\nRepeaterModifier.prototype.addShape = function () {};\r\n\r\nShapeModifiers.registerModifier('rp', RepeaterModifier);\r\n\r\n/* global createSizedArray, shapePool */\r\n\r\nfunction ShapeCollection() {\r\n this._length = 0;\r\n this._maxLength = 4;\r\n this.shapes = createSizedArray(this._maxLength);\r\n}\r\n\r\nShapeCollection.prototype.addShape = function (shapeData) {\r\n if (this._length === this._maxLength) {\r\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\r\n this._maxLength *= 2;\r\n }\r\n this.shapes[this._length] = shapeData;\r\n this._length += 1;\r\n};\r\n\r\nShapeCollection.prototype.releaseShapes = function () {\r\n var i;\r\n for (i = 0; i < this._length; i += 1) {\r\n shapePool.release(this.shapes[i]);\r\n }\r\n this._length = 0;\r\n};\r\n\r\n/* global createSizedArray, createTypedArray, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction DashProperty(elem, data, renderer, container) {\r\n this.elem = elem;\r\n this.frameId = -1;\r\n this.dataProps = createSizedArray(data.length);\r\n this.renderer = renderer;\r\n this.k = false;\r\n this.dashStr = '';\r\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\r\n this.dashoffset = createTypedArray('float32', 1);\r\n this.initDynamicPropertyContainer(container);\r\n var i;\r\n var len = data.length || 0;\r\n var prop;\r\n for (i = 0; i < len; i += 1) {\r\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\r\n this.k = prop.k || this.k;\r\n this.dataProps[i] = { n: data[i].n, p: prop };\r\n }\r\n if (!this.k) {\r\n this.getValue(true);\r\n }\r\n this._isAnimated = this.k;\r\n}\r\n\r\nDashProperty.prototype.getValue = function (forceRender) {\r\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n this._mdf = this._mdf || forceRender;\r\n if (this._mdf) {\r\n var i = 0;\r\n var len = this.dataProps.length;\r\n if (this.renderer === 'svg') {\r\n this.dashStr = '';\r\n }\r\n for (i = 0; i < len; i += 1) {\r\n if (this.dataProps[i].n !== 'o') {\r\n if (this.renderer === 'svg') {\r\n this.dashStr += ' ' + this.dataProps[i].p.v;\r\n } else {\r\n this.dashArray[i] = this.dataProps[i].p.v;\r\n }\r\n } else {\r\n this.dashoffset[0] = this.dataProps[i].p.v;\r\n }\r\n }\r\n }\r\n};\r\nextendPrototype([DynamicPropertyContainer], DashProperty);\r\n\r\n/* global createTypedArray, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\nfunction GradientProperty(elem, data, container) {\r\n this.data = data;\r\n this.c = createTypedArray('uint8c', data.p * 4);\r\n var cLength = data.k.k[0].s ? (data.k.k[0].s.length - data.p * 4) : data.k.k.length - data.p * 4;\r\n this.o = createTypedArray('float32', cLength);\r\n this._cmdf = false;\r\n this._omdf = false;\r\n this._collapsable = this.checkCollapsable();\r\n this._hasOpacity = cLength;\r\n this.initDynamicPropertyContainer(container);\r\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\r\n this.k = this.prop.k;\r\n this.getValue(true);\r\n}\r\n\r\nGradientProperty.prototype.comparePoints = function (values, points) {\r\n var i = 0;\r\n var len = this.o.length / 2;\r\n var diff;\r\n while (i < len) {\r\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\r\n if (diff > 0.01) {\r\n return false;\r\n }\r\n i += 1;\r\n }\r\n return true;\r\n};\r\n\r\nGradientProperty.prototype.checkCollapsable = function () {\r\n if (this.o.length / 2 !== this.c.length / 4) {\r\n return false;\r\n }\r\n if (this.data.k.k[0].s) {\r\n var i = 0;\r\n var len = this.data.k.k.length;\r\n while (i < len) {\r\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\r\n return false;\r\n }\r\n i += 1;\r\n }\r\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\r\n return false;\r\n }\r\n return true;\r\n};\r\n\r\nGradientProperty.prototype.getValue = function (forceRender) {\r\n this.prop.getValue();\r\n this._mdf = false;\r\n this._cmdf = false;\r\n this._omdf = false;\r\n if (this.prop._mdf || forceRender) {\r\n var i;\r\n var len = this.data.p * 4;\r\n var mult;\r\n var val;\r\n for (i = 0; i < len; i += 1) {\r\n mult = i % 4 === 0 ? 100 : 255;\r\n val = Math.round(this.prop.v[i] * mult);\r\n if (this.c[i] !== val) {\r\n this.c[i] = val;\r\n this._cmdf = !forceRender;\r\n }\r\n }\r\n if (this.o.length) {\r\n len = this.prop.v.length;\r\n for (i = this.data.p * 4; i < len; i += 1) {\r\n mult = i % 2 === 0 ? 100 : 1;\r\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\r\n if (this.o[i - this.data.p * 4] !== val) {\r\n this.o[i - this.data.p * 4] = val;\r\n this._omdf = !forceRender;\r\n }\r\n }\r\n }\r\n this._mdf = !forceRender;\r\n }\r\n};\r\n\r\nextendPrototype([DynamicPropertyContainer], GradientProperty);\r\n\r\n/* exported buildShapeString */\r\n\r\nvar buildShapeString = function (pathNodes, length, closed, mat) {\r\n if (length === 0) {\r\n return '';\r\n }\r\n var _o = pathNodes.o;\r\n var _i = pathNodes.i;\r\n var _v = pathNodes.v;\r\n var i;\r\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\r\n for (i = 1; i < length; i += 1) {\r\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\r\n }\r\n if (closed && length) {\r\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\r\n shapeString += 'z';\r\n }\r\n return shapeString;\r\n};\r\n\r\n/* global Howl */\r\n/* exported audioControllerFactory */\r\n\r\nvar audioControllerFactory = (function () {\r\n function AudioController(audioFactory) {\r\n this.audios = [];\r\n this.audioFactory = audioFactory;\r\n this._volume = 1;\r\n this._isMuted = false;\r\n }\r\n\r\n AudioController.prototype = {\r\n addAudio: function (audio) {\r\n this.audios.push(audio);\r\n },\r\n pause: function () {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].pause();\r\n }\r\n },\r\n resume: function () {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].resume();\r\n }\r\n },\r\n setRate: function (rateValue) {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].setRate(rateValue);\r\n }\r\n },\r\n createAudio: function (assetPath) {\r\n if (this.audioFactory) {\r\n return this.audioFactory(assetPath);\r\n } if (Howl) {\r\n return new Howl({\r\n src: [assetPath],\r\n });\r\n }\r\n return {\r\n isPlaying: false,\r\n play: function () { this.isPlaying = true; },\r\n seek: function () { this.isPlaying = false; },\r\n playing: function () {},\r\n rate: function () {},\r\n setVolume: function () {},\r\n };\r\n },\r\n setAudioFactory: function (audioFactory) {\r\n this.audioFactory = audioFactory;\r\n },\r\n setVolume: function (value) {\r\n this._volume = value;\r\n this._updateVolume();\r\n },\r\n mute: function () {\r\n this._isMuted = true;\r\n this._updateVolume();\r\n },\r\n unmute: function () {\r\n this._isMuted = false;\r\n this._updateVolume();\r\n },\r\n getVolume: function () {\r\n return this._volume;\r\n },\r\n _updateVolume: function () {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\r\n }\r\n },\r\n };\r\n\r\n return function () {\r\n return new AudioController();\r\n };\r\n}());\r\n\r\n/* global createTag, createNS, isSafari, dataManager */\r\n/* exported ImagePreloader */\r\n\r\nvar ImagePreloader = (function () {\r\n var proxyImage = (function () {\r\n var canvas = createTag('canvas');\r\n canvas.width = 1;\r\n canvas.height = 1;\r\n var ctx = canvas.getContext('2d');\r\n ctx.fillStyle = 'rgba(0,0,0,0)';\r\n ctx.fillRect(0, 0, 1, 1);\r\n return canvas;\r\n }());\r\n\r\n function imageLoaded() {\r\n this.loadedAssets += 1;\r\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\r\n if (this.imagesLoadedCb) {\r\n this.imagesLoadedCb(null);\r\n }\r\n }\r\n }\r\n function footageLoaded() {\r\n this.loadedFootagesCount += 1;\r\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\r\n if (this.imagesLoadedCb) {\r\n this.imagesLoadedCb(null);\r\n }\r\n }\r\n }\r\n\r\n function getAssetsPath(assetData, assetsPath, originalPath) {\r\n var path = '';\r\n if (assetData.e) {\r\n path = assetData.p;\r\n } else if (assetsPath) {\r\n var imagePath = assetData.p;\r\n if (imagePath.indexOf('images/') !== -1) {\r\n imagePath = imagePath.split('/')[1];\r\n }\r\n path = assetsPath + imagePath;\r\n } else {\r\n path = originalPath;\r\n path += assetData.u ? assetData.u : '';\r\n path += assetData.p;\r\n }\r\n return path;\r\n }\r\n\r\n function testImageLoaded(img) {\r\n var _count = 0;\r\n var intervalId = setInterval(function () {\r\n var box = img.getBBox();\r\n if (box.width || _count > 500) {\r\n this._imageLoaded();\r\n clearInterval(intervalId);\r\n }\r\n _count += 1;\r\n }.bind(this), 50);\r\n }\r\n\r\n function createImageData(assetData) {\r\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\r\n var img = createNS('image');\r\n if (isSafari) {\r\n this.testImageLoaded(img);\r\n } else {\r\n img.addEventListener('load', this._imageLoaded, false);\r\n }\r\n img.addEventListener('error', function () {\r\n ob.img = proxyImage;\r\n this._imageLoaded();\r\n }.bind(this), false);\r\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\r\n if (this._elementHelper.append) {\r\n this._elementHelper.append(img);\r\n } else {\r\n this._elementHelper.appendChild(img);\r\n }\r\n var ob = {\r\n img: img,\r\n assetData: assetData,\r\n };\r\n return ob;\r\n }\r\n\r\n function createImgData(assetData) {\r\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\r\n var img = createTag('img');\r\n img.crossOrigin = 'anonymous';\r\n img.addEventListener('load', this._imageLoaded, false);\r\n img.addEventListener('error', function () {\r\n ob.img = proxyImage;\r\n this._imageLoaded();\r\n }.bind(this), false);\r\n img.src = path;\r\n var ob = {\r\n img: img,\r\n assetData: assetData,\r\n };\r\n return ob;\r\n }\r\n\r\n function createFootageData(data) {\r\n var ob = {\r\n assetData: data,\r\n };\r\n var path = getAssetsPath(data, this.assetsPath, this.path);\r\n dataManager.loadData(path, function (footageData) {\r\n ob.img = footageData;\r\n this._footageLoaded();\r\n }.bind(this), function () {\r\n ob.img = {};\r\n this._footageLoaded();\r\n }.bind(this));\r\n return ob;\r\n }\r\n\r\n function loadAssets(assets, cb) {\r\n this.imagesLoadedCb = cb;\r\n var i;\r\n var len = assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (!assets[i].layers) {\r\n if (!assets[i].t || assets[i].t === 'seq') {\r\n this.totalImages += 1;\r\n this.images.push(this._createImageData(assets[i]));\r\n } else if (assets[i].t === 3) {\r\n this.totalFootages += 1;\r\n this.images.push(this.createFootageData(assets[i]));\r\n }\r\n }\r\n }\r\n }\r\n\r\n function setPath(path) {\r\n this.path = path || '';\r\n }\r\n\r\n function setAssetsPath(path) {\r\n this.assetsPath = path || '';\r\n }\r\n\r\n function getAsset(assetData) {\r\n var i = 0;\r\n var len = this.images.length;\r\n while (i < len) {\r\n if (this.images[i].assetData === assetData) {\r\n return this.images[i].img;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n\r\n function destroy() {\r\n this.imagesLoadedCb = null;\r\n this.images.length = 0;\r\n }\r\n\r\n function loadedImages() {\r\n return this.totalImages === this.loadedAssets;\r\n }\r\n\r\n function loadedFootages() {\r\n return this.totalFootages === this.loadedFootagesCount;\r\n }\r\n\r\n function setCacheType(type, elementHelper) {\r\n if (type === 'svg') {\r\n this._elementHelper = elementHelper;\r\n this._createImageData = this.createImageData.bind(this);\r\n } else {\r\n this._createImageData = this.createImgData.bind(this);\r\n }\r\n }\r\n\r\n function ImagePreloaderFactory() {\r\n this._imageLoaded = imageLoaded.bind(this);\r\n this._footageLoaded = footageLoaded.bind(this);\r\n this.testImageLoaded = testImageLoaded.bind(this);\r\n this.createFootageData = createFootageData.bind(this);\r\n this.assetsPath = '';\r\n this.path = '';\r\n this.totalImages = 0;\r\n this.totalFootages = 0;\r\n this.loadedAssets = 0;\r\n this.loadedFootagesCount = 0;\r\n this.imagesLoadedCb = null;\r\n this.images = [];\r\n }\r\n\r\n ImagePreloaderFactory.prototype = {\r\n loadAssets: loadAssets,\r\n setAssetsPath: setAssetsPath,\r\n setPath: setPath,\r\n loadedImages: loadedImages,\r\n loadedFootages: loadedFootages,\r\n destroy: destroy,\r\n getAsset: getAsset,\r\n createImgData: createImgData,\r\n createImageData: createImageData,\r\n imageLoaded: imageLoaded,\r\n footageLoaded: footageLoaded,\r\n setCacheType: setCacheType,\r\n };\r\n\r\n return ImagePreloaderFactory;\r\n}());\r\n\r\n/* exported featureSupport */\r\n\r\nvar featureSupport = (function () {\r\n var ob = {\r\n maskType: true,\r\n };\r\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\r\n ob.maskType = false;\r\n }\r\n return ob;\r\n}());\r\n\r\n/* global createNS */\r\n/* exported filtersFactory */\r\n\r\nvar filtersFactory = (function () {\r\n var ob = {};\r\n ob.createFilter = createFilter;\r\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\r\n\r\n function createFilter(filId, skipCoordinates) {\r\n var fil = createNS('filter');\r\n fil.setAttribute('id', filId);\r\n if (skipCoordinates !== true) {\r\n fil.setAttribute('filterUnits', 'objectBoundingBox');\r\n fil.setAttribute('x', '0%');\r\n fil.setAttribute('y', '0%');\r\n fil.setAttribute('width', '100%');\r\n fil.setAttribute('height', '100%');\r\n }\r\n return fil;\r\n }\r\n\r\n function createAlphaToLuminanceFilter() {\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\r\n return feColorMatrix;\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* global createSizedArray, PropertyFactory, TextAnimatorDataProperty, bez, addHueToRGB,\r\n addSaturationToRGB, addBrightnessToRGB, LetterProps, Matrix, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction TextAnimatorProperty(textData, renderType, elem) {\r\n this._isFirstFrame = true;\r\n this._hasMaskedPath = false;\r\n this._frameId = -1;\r\n this._textData = textData;\r\n this._renderType = renderType;\r\n this._elem = elem;\r\n this._animatorsData = createSizedArray(this._textData.a.length);\r\n this._pathData = {};\r\n this._moreOptions = {\r\n alignment: {},\r\n };\r\n this.renderedLetters = [];\r\n this.lettersChangedFlag = false;\r\n this.initDynamicPropertyContainer(elem);\r\n}\r\n\r\nTextAnimatorProperty.prototype.searchProperties = function () {\r\n var i;\r\n var len = this._textData.a.length;\r\n var animatorProps;\r\n var getProp = PropertyFactory.getProp;\r\n for (i = 0; i < len; i += 1) {\r\n animatorProps = this._textData.a[i];\r\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\r\n }\r\n if (this._textData.p && 'm' in this._textData.p) {\r\n this._pathData = {\r\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\r\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\r\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\r\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\r\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\r\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m),\r\n };\r\n this._hasMaskedPath = true;\r\n } else {\r\n this._hasMaskedPath = false;\r\n }\r\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\r\n};\r\n\r\nTextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\r\n this.lettersChangedFlag = lettersChangedFlag;\r\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\r\n return;\r\n }\r\n this._isFirstFrame = false;\r\n var alignment = this._moreOptions.alignment.v;\r\n var animators = this._animatorsData;\r\n var textData = this._textData;\r\n var matrixHelper = this.mHelper;\r\n var renderType = this._renderType;\r\n var renderedLettersCount = this.renderedLetters.length;\r\n var xPos;\r\n var yPos;\r\n var i;\r\n var len;\r\n var letters = documentData.l;\r\n var pathInfo;\r\n var currentLength;\r\n var currentPoint;\r\n var segmentLength;\r\n var flag;\r\n var pointInd;\r\n var segmentInd;\r\n var prevPoint;\r\n var points;\r\n var segments;\r\n var partialLength;\r\n var totalLength;\r\n var perc;\r\n var tanAngle;\r\n var mask;\r\n if (this._hasMaskedPath) {\r\n mask = this._pathData.m;\r\n if (!this._pathData.n || this._pathData._mdf) {\r\n var paths = mask.v;\r\n if (this._pathData.r.v) {\r\n paths = paths.reverse();\r\n }\r\n // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\r\n pathInfo = {\r\n tLength: 0,\r\n segments: [],\r\n };\r\n len = paths._length - 1;\r\n var bezierData;\r\n totalLength = 0;\r\n for (i = 0; i < len; i += 1) {\r\n bezierData = bez.buildBezierData(paths.v[i],\r\n paths.v[i + 1],\r\n [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]],\r\n [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\r\n pathInfo.tLength += bezierData.segmentLength;\r\n pathInfo.segments.push(bezierData);\r\n totalLength += bezierData.segmentLength;\r\n }\r\n i = len;\r\n if (mask.v.c) {\r\n bezierData = bez.buildBezierData(paths.v[i],\r\n paths.v[0],\r\n [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]],\r\n [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\r\n pathInfo.tLength += bezierData.segmentLength;\r\n pathInfo.segments.push(bezierData);\r\n totalLength += bezierData.segmentLength;\r\n }\r\n this._pathData.pi = pathInfo;\r\n }\r\n pathInfo = this._pathData.pi;\r\n\r\n currentLength = this._pathData.f.v;\r\n segmentInd = 0;\r\n pointInd = 1;\r\n segmentLength = 0;\r\n flag = true;\r\n segments = pathInfo.segments;\r\n if (currentLength < 0 && mask.v.c) {\r\n if (pathInfo.tLength < Math.abs(currentLength)) {\r\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\r\n }\r\n segmentInd = segments.length - 1;\r\n points = segments[segmentInd].points;\r\n pointInd = points.length - 1;\r\n while (currentLength < 0) {\r\n currentLength += points[pointInd].partialLength;\r\n pointInd -= 1;\r\n if (pointInd < 0) {\r\n segmentInd -= 1;\r\n points = segments[segmentInd].points;\r\n pointInd = points.length - 1;\r\n }\r\n }\r\n }\r\n points = segments[segmentInd].points;\r\n prevPoint = points[pointInd - 1];\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n }\r\n\r\n len = letters.length;\r\n xPos = 0;\r\n yPos = 0;\r\n var yOff = documentData.finalSize * 1.2 * 0.714;\r\n var firstLine = true;\r\n var animatorProps;\r\n var animatorSelector;\r\n var j;\r\n var jLen;\r\n var letterValue;\r\n\r\n jLen = animators.length;\r\n\r\n var mult;\r\n var ind = -1;\r\n var offf;\r\n var xPathPos;\r\n var yPathPos;\r\n var initPathPos = currentLength;\r\n var initSegmentInd = segmentInd;\r\n var initPointInd = pointInd;\r\n var currentLine = -1;\r\n var elemOpacity;\r\n var sc;\r\n var sw;\r\n var fc;\r\n var k;\r\n var letterSw;\r\n var letterSc;\r\n var letterFc;\r\n var letterM = '';\r\n var letterP = this.defaultPropsArray;\r\n var letterO;\r\n\r\n //\r\n if (documentData.j === 2 || documentData.j === 1) {\r\n var animatorJustifyOffset = 0;\r\n var animatorFirstCharOffset = 0;\r\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\r\n var lastIndex = 0;\r\n var isNewLine = true;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (letters[i].n) {\r\n if (animatorJustifyOffset) {\r\n animatorJustifyOffset += animatorFirstCharOffset;\r\n }\r\n while (lastIndex < i) {\r\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\r\n lastIndex += 1;\r\n }\r\n animatorJustifyOffset = 0;\r\n isNewLine = true;\r\n } else {\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.t.propType) {\r\n if (isNewLine && documentData.j === 2) {\r\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\r\n }\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\r\n } else {\r\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\r\n }\r\n }\r\n }\r\n isNewLine = false;\r\n }\r\n }\r\n if (animatorJustifyOffset) {\r\n animatorJustifyOffset += animatorFirstCharOffset;\r\n }\r\n while (lastIndex < i) {\r\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\r\n lastIndex += 1;\r\n }\r\n }\r\n //\r\n\r\n for (i = 0; i < len; i += 1) {\r\n matrixHelper.reset();\r\n elemOpacity = 1;\r\n if (letters[i].n) {\r\n xPos = 0;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n currentLength = initPathPos;\r\n firstLine = false;\r\n if (this._hasMaskedPath) {\r\n segmentInd = initSegmentInd;\r\n pointInd = initPointInd;\r\n points = segments[segmentInd].points;\r\n prevPoint = points[pointInd - 1];\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n segmentLength = 0;\r\n }\r\n letterM = '';\r\n letterFc = '';\r\n letterSw = '';\r\n letterO = '';\r\n letterP = this.defaultPropsArray;\r\n } else {\r\n if (this._hasMaskedPath) {\r\n if (currentLine !== letters[i].line) {\r\n switch (documentData.j) {\r\n case 1:\r\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\r\n break;\r\n case 2:\r\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\r\n break;\r\n default:\r\n break;\r\n }\r\n currentLine = letters[i].line;\r\n }\r\n if (ind !== letters[i].ind) {\r\n if (letters[ind]) {\r\n currentLength += letters[ind].extra;\r\n }\r\n currentLength += letters[i].an / 2;\r\n ind = letters[i].ind;\r\n }\r\n currentLength += (alignment[0] * letters[i].an) * 0.005;\r\n var animatorOffset = 0;\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.p.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n animatorOffset += animatorProps.p.v[0] * mult[0];\r\n } else {\r\n animatorOffset += animatorProps.p.v[0] * mult;\r\n }\r\n }\r\n if (animatorProps.a.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n animatorOffset += animatorProps.a.v[0] * mult[0];\r\n } else {\r\n animatorOffset += animatorProps.a.v[0] * mult;\r\n }\r\n }\r\n }\r\n flag = true;\r\n // Force alignment only works with a single line for now\r\n if (this._pathData.a.v) {\r\n currentLength = letters[0].an * 0.5 + ((totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind) / (len - 1);\r\n currentLength += this._pathData.f.v;\r\n }\r\n while (flag) {\r\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\r\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\r\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\r\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\r\n matrixHelper.translate((-alignment[0] * letters[i].an) * 0.005, -(alignment[1] * yOff) * 0.01);\r\n flag = false;\r\n } else if (points) {\r\n segmentLength += currentPoint.partialLength;\r\n pointInd += 1;\r\n if (pointInd >= points.length) {\r\n pointInd = 0;\r\n segmentInd += 1;\r\n if (!segments[segmentInd]) {\r\n if (mask.v.c) {\r\n pointInd = 0;\r\n segmentInd = 0;\r\n points = segments[segmentInd].points;\r\n } else {\r\n segmentLength -= currentPoint.partialLength;\r\n points = null;\r\n }\r\n } else {\r\n points = segments[segmentInd].points;\r\n }\r\n }\r\n if (points) {\r\n prevPoint = currentPoint;\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n }\r\n }\r\n }\r\n offf = letters[i].an / 2 - letters[i].add;\r\n matrixHelper.translate(-offf, 0, 0);\r\n } else {\r\n offf = letters[i].an / 2 - letters[i].add;\r\n matrixHelper.translate(-offf, 0, 0);\r\n\r\n // Grouping alignment\r\n matrixHelper.translate((-alignment[0] * letters[i].an) * 0.005, (-alignment[1] * yOff) * 0.01, 0);\r\n }\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.t.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\r\n if (xPos !== 0 || documentData.j !== 0) {\r\n if (this._hasMaskedPath) {\r\n if (mult.length) {\r\n currentLength += animatorProps.t.v * mult[0];\r\n } else {\r\n currentLength += animatorProps.t.v * mult;\r\n }\r\n } else if (mult.length) {\r\n xPos += animatorProps.t.v * mult[0];\r\n } else {\r\n xPos += animatorProps.t.v * mult;\r\n }\r\n }\r\n }\r\n }\r\n if (documentData.strokeWidthAnim) {\r\n sw = documentData.sw || 0;\r\n }\r\n if (documentData.strokeColorAnim) {\r\n if (documentData.sc) {\r\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\r\n } else {\r\n sc = [0, 0, 0];\r\n }\r\n }\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\r\n }\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.a.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n if (mult.length) {\r\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\r\n } else {\r\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\r\n }\r\n }\r\n }\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.s.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n matrixHelper.scale(1 + ((animatorProps.s.v[0] - 1) * mult[0]), 1 + ((animatorProps.s.v[1] - 1) * mult[1]), 1);\r\n } else {\r\n matrixHelper.scale(1 + ((animatorProps.s.v[0] - 1) * mult), 1 + ((animatorProps.s.v[1] - 1) * mult), 1);\r\n }\r\n }\r\n }\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (animatorProps.sk.propType) {\r\n if (mult.length) {\r\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\r\n } else {\r\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\r\n }\r\n }\r\n if (animatorProps.r.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\r\n } else {\r\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\r\n }\r\n }\r\n if (animatorProps.ry.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\r\n } else {\r\n matrixHelper.rotateY(animatorProps.ry.v * mult);\r\n }\r\n }\r\n if (animatorProps.rx.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\r\n } else {\r\n matrixHelper.rotateX(animatorProps.rx.v * mult);\r\n }\r\n }\r\n if (animatorProps.o.propType) {\r\n if (mult.length) {\r\n elemOpacity += ((animatorProps.o.v) * mult[0] - elemOpacity) * mult[0];\r\n } else {\r\n elemOpacity += ((animatorProps.o.v) * mult - elemOpacity) * mult;\r\n }\r\n }\r\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\r\n if (mult.length) {\r\n sw += animatorProps.sw.v * mult[0];\r\n } else {\r\n sw += animatorProps.sw.v * mult;\r\n }\r\n }\r\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\r\n for (k = 0; k < 3; k += 1) {\r\n if (mult.length) {\r\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\r\n } else {\r\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\r\n }\r\n }\r\n }\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n if (animatorProps.fc.propType) {\r\n for (k = 0; k < 3; k += 1) {\r\n if (mult.length) {\r\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\r\n } else {\r\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\r\n }\r\n }\r\n }\r\n if (animatorProps.fh.propType) {\r\n if (mult.length) {\r\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\r\n } else {\r\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\r\n }\r\n }\r\n if (animatorProps.fs.propType) {\r\n if (mult.length) {\r\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\r\n } else {\r\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\r\n }\r\n }\r\n if (animatorProps.fb.propType) {\r\n if (mult.length) {\r\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\r\n } else {\r\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n\r\n if (animatorProps.p.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (this._hasMaskedPath) {\r\n if (mult.length) {\r\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\r\n } else {\r\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\r\n }\r\n } else if (mult.length) {\r\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\r\n } else {\r\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\r\n }\r\n }\r\n }\r\n if (documentData.strokeWidthAnim) {\r\n letterSw = sw < 0 ? 0 : sw;\r\n }\r\n if (documentData.strokeColorAnim) {\r\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\r\n }\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\r\n }\r\n\r\n if (this._hasMaskedPath) {\r\n matrixHelper.translate(0, -documentData.ls);\r\n\r\n matrixHelper.translate(0, (alignment[1] * yOff) * 0.01 + yPos, 0);\r\n if (this._pathData.p.v) {\r\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\r\n var rot = (Math.atan(tanAngle) * 180) / Math.PI;\r\n if (currentPoint.point[0] < prevPoint.point[0]) {\r\n rot += 180;\r\n }\r\n matrixHelper.rotate((-rot * Math.PI) / 180);\r\n }\r\n matrixHelper.translate(xPathPos, yPathPos, 0);\r\n currentLength -= (alignment[0] * letters[i].an) * 0.005;\r\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\r\n currentLength += letters[i].an / 2;\r\n currentLength += (documentData.tr * 0.001) * documentData.finalSize;\r\n }\r\n } else {\r\n matrixHelper.translate(xPos, yPos, 0);\r\n\r\n if (documentData.ps) {\r\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\r\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\r\n }\r\n switch (documentData.j) {\r\n case 1:\r\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\r\n break;\r\n case 2:\r\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\r\n break;\r\n default:\r\n break;\r\n }\r\n matrixHelper.translate(0, -documentData.ls);\r\n matrixHelper.translate(offf, 0, 0);\r\n matrixHelper.translate((alignment[0] * letters[i].an) * 0.005, (alignment[1] * yOff) * 0.01, 0);\r\n xPos += letters[i].l + (documentData.tr * 0.001) * documentData.finalSize;\r\n }\r\n if (renderType === 'html') {\r\n letterM = matrixHelper.toCSS();\r\n } else if (renderType === 'svg') {\r\n letterM = matrixHelper.to2dCSS();\r\n } else {\r\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\r\n }\r\n letterO = elemOpacity;\r\n }\r\n\r\n if (renderedLettersCount <= i) {\r\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\r\n this.renderedLetters.push(letterValue);\r\n renderedLettersCount += 1;\r\n this.lettersChangedFlag = true;\r\n } else {\r\n letterValue = this.renderedLetters[i];\r\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\r\n }\r\n }\r\n};\r\n\r\nTextAnimatorProperty.prototype.getValue = function () {\r\n if (this._elem.globalData.frameId === this._frameId) {\r\n return;\r\n }\r\n this._frameId = this._elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n};\r\n\r\nTextAnimatorProperty.prototype.mHelper = new Matrix();\r\nTextAnimatorProperty.prototype.defaultPropsArray = [];\r\nextendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\r\n\r\n/* global PropertyFactory, degToRads, TextSelectorProp */\r\n/* exported TextAnimatorDataProperty */\r\n\r\nfunction TextAnimatorDataProperty(elem, animatorProps, container) {\r\n var defaultData = { propType: false };\r\n var getProp = PropertyFactory.getProp;\r\n var textAnimatorAnimatables = animatorProps.a;\r\n this.a = {\r\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\r\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\r\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\r\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\r\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\r\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\r\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\r\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\r\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\r\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\r\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\r\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\r\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\r\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\r\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\r\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData,\r\n };\r\n\r\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\r\n this.s.t = animatorProps.s.t;\r\n}\r\n\r\nfunction LetterProps(o, sw, sc, fc, m, p) {\r\n this.o = o;\r\n this.sw = sw;\r\n this.sc = sc;\r\n this.fc = fc;\r\n this.m = m;\r\n this.p = p;\r\n this._mdf = {\r\n o: true,\r\n sw: !!sw,\r\n sc: !!sc,\r\n fc: !!fc,\r\n m: true,\r\n p: true,\r\n };\r\n}\r\n\r\nLetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\r\n this._mdf.o = false;\r\n this._mdf.sw = false;\r\n this._mdf.sc = false;\r\n this._mdf.fc = false;\r\n this._mdf.m = false;\r\n this._mdf.p = false;\r\n var updated = false;\r\n\r\n if (this.o !== o) {\r\n this.o = o;\r\n this._mdf.o = true;\r\n updated = true;\r\n }\r\n if (this.sw !== sw) {\r\n this.sw = sw;\r\n this._mdf.sw = true;\r\n updated = true;\r\n }\r\n if (this.sc !== sc) {\r\n this.sc = sc;\r\n this._mdf.sc = true;\r\n updated = true;\r\n }\r\n if (this.fc !== fc) {\r\n this.fc = fc;\r\n this._mdf.fc = true;\r\n updated = true;\r\n }\r\n if (this.m !== m) {\r\n this.m = m;\r\n this._mdf.m = true;\r\n updated = true;\r\n }\r\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\r\n this.p = p;\r\n this._mdf.p = true;\r\n updated = true;\r\n }\r\n return updated;\r\n};\r\n\r\n/* global FontManager, initialDefaultFrame, getFontProperties */\r\n/* exported TextProperty */\r\n\r\nfunction TextProperty(elem, data) {\r\n this._frameId = initialDefaultFrame;\r\n this.pv = '';\r\n this.v = '';\r\n this.kf = false;\r\n this._isFirstFrame = true;\r\n this._mdf = false;\r\n this.data = data;\r\n this.elem = elem;\r\n this.comp = this.elem.comp;\r\n this.keysIndex = 0;\r\n this.canResize = false;\r\n this.minimumFontSize = 1;\r\n this.effectsSequence = [];\r\n this.currentData = {\r\n ascent: 0,\r\n boxWidth: this.defaultBoxWidth,\r\n f: '',\r\n fStyle: '',\r\n fWeight: '',\r\n fc: '',\r\n j: '',\r\n justifyOffset: '',\r\n l: [],\r\n lh: 0,\r\n lineWidths: [],\r\n ls: '',\r\n of: '',\r\n s: '',\r\n sc: '',\r\n sw: 0,\r\n t: 0,\r\n tr: 0,\r\n sz: 0,\r\n ps: null,\r\n fillColorAnim: false,\r\n strokeColorAnim: false,\r\n strokeWidthAnim: false,\r\n yOffset: 0,\r\n finalSize: 0,\r\n finalText: [],\r\n finalLineHeight: 0,\r\n __complete: false,\r\n\r\n };\r\n this.copyData(this.currentData, this.data.d.k[0].s);\r\n\r\n if (!this.searchProperty()) {\r\n this.completeTextData(this.currentData);\r\n }\r\n}\r\n\r\nTextProperty.prototype.defaultBoxWidth = [0, 0];\r\n\r\nTextProperty.prototype.copyData = function (obj, data) {\r\n for (var s in data) {\r\n if (Object.prototype.hasOwnProperty.call(data, s)) {\r\n obj[s] = data[s];\r\n }\r\n }\r\n return obj;\r\n};\r\n\r\nTextProperty.prototype.setCurrentData = function (data) {\r\n if (!data.__complete) {\r\n this.completeTextData(data);\r\n }\r\n this.currentData = data;\r\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\r\n this._mdf = true;\r\n};\r\n\r\nTextProperty.prototype.searchProperty = function () {\r\n return this.searchKeyframes();\r\n};\r\n\r\nTextProperty.prototype.searchKeyframes = function () {\r\n this.kf = this.data.d.k.length > 1;\r\n if (this.kf) {\r\n this.addEffect(this.getKeyframeValue.bind(this));\r\n }\r\n return this.kf;\r\n};\r\n\r\nTextProperty.prototype.addEffect = function (effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nTextProperty.prototype.getValue = function (_finalValue) {\r\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\r\n return;\r\n }\r\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\r\n var currentValue = this.currentData;\r\n var currentIndex = this.keysIndex;\r\n if (this.lock) {\r\n this.setCurrentData(this.currentData);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = false;\r\n var i; var\r\n len = this.effectsSequence.length;\r\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\r\n for (i = 0; i < len; i += 1) {\r\n // Checking if index changed to prevent creating a new object every time the expression updates.\r\n if (currentIndex !== this.keysIndex) {\r\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\r\n } else {\r\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\r\n }\r\n }\r\n if (currentValue !== finalValue) {\r\n this.setCurrentData(finalValue);\r\n }\r\n this.v = this.currentData;\r\n this.pv = this.v;\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n};\r\n\r\nTextProperty.prototype.getKeyframeValue = function () {\r\n var textKeys = this.data.d.k;\r\n var frameNum = this.elem.comp.renderedFrame;\r\n var i = 0; var\r\n len = textKeys.length;\r\n while (i <= len - 1) {\r\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\r\n break;\r\n }\r\n i += 1;\r\n }\r\n if (this.keysIndex !== i) {\r\n this.keysIndex = i;\r\n }\r\n return this.data.d.k[this.keysIndex].s;\r\n};\r\n\r\nTextProperty.prototype.buildFinalText = function (text) {\r\n var charactersArray = [];\r\n var i = 0;\r\n var len = text.length;\r\n var charCode;\r\n var secondCharCode;\r\n var shouldCombine = false;\r\n while (i < len) {\r\n charCode = text.charCodeAt(i);\r\n if (FontManager.isCombinedCharacter(charCode)) {\r\n charactersArray[charactersArray.length - 1] += text.charAt(i);\r\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\r\n secondCharCode = text.charCodeAt(i + 1);\r\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\r\n if (shouldCombine || FontManager.isModifier(charCode, secondCharCode)) {\r\n charactersArray[charactersArray.length - 1] += text.substr(i, 2);\r\n shouldCombine = false;\r\n } else {\r\n charactersArray.push(text.substr(i, 2));\r\n }\r\n i += 1;\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n } else if (charCode > 0xDBFF) {\r\n secondCharCode = text.charCodeAt(i + 1);\r\n if (FontManager.isZeroWidthJoiner(charCode, secondCharCode)) {\r\n shouldCombine = true;\r\n charactersArray[charactersArray.length - 1] += text.substr(i, 2);\r\n i += 1;\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\r\n charactersArray[charactersArray.length - 1] += text.charAt(i);\r\n shouldCombine = true;\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n i += 1;\r\n }\r\n return charactersArray;\r\n};\r\n\r\nTextProperty.prototype.completeTextData = function (documentData) {\r\n documentData.__complete = true;\r\n var fontManager = this.elem.globalData.fontManager;\r\n var data = this.data;\r\n var letters = [];\r\n var i; var\r\n len;\r\n var newLineFlag; var index = 0; var\r\n val;\r\n var anchorGrouping = data.m.g;\r\n var currentSize = 0; var currentPos = 0; var currentLine = 0; var\r\n lineWidths = [];\r\n var lineWidth = 0;\r\n var maxLineWidth = 0;\r\n var j; var\r\n jLen;\r\n var fontData = fontManager.getFontByName(documentData.f);\r\n var charData; var\r\n cLength = 0;\r\n\r\n var fontProps = getFontProperties(fontData);\r\n documentData.fWeight = fontProps.weight;\r\n documentData.fStyle = fontProps.style;\r\n documentData.finalSize = documentData.s;\r\n documentData.finalText = this.buildFinalText(documentData.t);\r\n len = documentData.finalText.length;\r\n documentData.finalLineHeight = documentData.lh;\r\n var trackingOffset = (documentData.tr / 1000) * documentData.finalSize;\r\n var charCode;\r\n if (documentData.sz) {\r\n var flag = true;\r\n var boxWidth = documentData.sz[0];\r\n var boxHeight = documentData.sz[1];\r\n var currentHeight; var\r\n finalText;\r\n while (flag) {\r\n finalText = this.buildFinalText(documentData.t);\r\n currentHeight = 0;\r\n lineWidth = 0;\r\n len = finalText.length;\r\n trackingOffset = (documentData.tr / 1000) * documentData.finalSize;\r\n var lastSpaceIndex = -1;\r\n for (i = 0; i < len; i += 1) {\r\n charCode = finalText[i].charCodeAt(0);\r\n newLineFlag = false;\r\n if (finalText[i] === ' ') {\r\n lastSpaceIndex = i;\r\n } else if (charCode === 13 || charCode === 3) {\r\n lineWidth = 0;\r\n newLineFlag = true;\r\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n }\r\n if (fontManager.chars) {\r\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\r\n cLength = newLineFlag ? 0 : (charData.w * documentData.finalSize) / 100;\r\n } else {\r\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\r\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\r\n }\r\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\r\n if (lastSpaceIndex === -1) {\r\n len += 1;\r\n } else {\r\n i = lastSpaceIndex;\r\n }\r\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r');\r\n // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\r\n lastSpaceIndex = -1;\r\n lineWidth = 0;\r\n } else {\r\n lineWidth += cLength;\r\n lineWidth += trackingOffset;\r\n }\r\n }\r\n currentHeight += (fontData.ascent * documentData.finalSize) / 100;\r\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\r\n documentData.finalSize -= 1;\r\n documentData.finalLineHeight = (documentData.finalSize * documentData.lh) / documentData.s;\r\n } else {\r\n documentData.finalText = finalText;\r\n len = documentData.finalText.length;\r\n flag = false;\r\n }\r\n }\r\n }\r\n lineWidth = -trackingOffset;\r\n cLength = 0;\r\n var uncollapsedSpaces = 0;\r\n var currentChar;\r\n for (i = 0; i < len; i += 1) {\r\n newLineFlag = false;\r\n currentChar = documentData.finalText[i];\r\n charCode = currentChar.charCodeAt(0);\r\n if (charCode === 13 || charCode === 3) {\r\n uncollapsedSpaces = 0;\r\n lineWidths.push(lineWidth);\r\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n lineWidth = -2 * trackingOffset;\r\n val = '';\r\n newLineFlag = true;\r\n currentLine += 1;\r\n } else {\r\n val = currentChar;\r\n }\r\n if (fontManager.chars) {\r\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\r\n cLength = newLineFlag ? 0 : (charData.w * documentData.finalSize) / 100;\r\n } else {\r\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\r\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\r\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\r\n }\r\n\r\n //\r\n if (currentChar === ' ') {\r\n uncollapsedSpaces += cLength + trackingOffset;\r\n } else {\r\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\r\n uncollapsedSpaces = 0;\r\n }\r\n letters.push({\r\n l: cLength, an: cLength, add: currentSize, n: newLineFlag, anIndexes: [], val: val, line: currentLine, animatorJustifyOffset: 0,\r\n });\r\n if (anchorGrouping == 2) { // eslint-disable-line eqeqeq\r\n currentSize += cLength;\r\n if (val === '' || val === ' ' || i === len - 1) {\r\n if (val === '' || val === ' ') {\r\n currentSize -= cLength;\r\n }\r\n while (currentPos <= i) {\r\n letters[currentPos].an = currentSize;\r\n letters[currentPos].ind = index;\r\n letters[currentPos].extra = cLength;\r\n currentPos += 1;\r\n }\r\n index += 1;\r\n currentSize = 0;\r\n }\r\n } else if (anchorGrouping == 3) { // eslint-disable-line eqeqeq\r\n currentSize += cLength;\r\n if (val === '' || i === len - 1) {\r\n if (val === '') {\r\n currentSize -= cLength;\r\n }\r\n while (currentPos <= i) {\r\n letters[currentPos].an = currentSize;\r\n letters[currentPos].ind = index;\r\n letters[currentPos].extra = cLength;\r\n currentPos += 1;\r\n }\r\n currentSize = 0;\r\n index += 1;\r\n }\r\n } else {\r\n letters[index].ind = index;\r\n letters[index].extra = 0;\r\n index += 1;\r\n }\r\n }\r\n documentData.l = letters;\r\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n lineWidths.push(lineWidth);\r\n if (documentData.sz) {\r\n documentData.boxWidth = documentData.sz[0];\r\n documentData.justifyOffset = 0;\r\n } else {\r\n documentData.boxWidth = maxLineWidth;\r\n switch (documentData.j) {\r\n case 1:\r\n documentData.justifyOffset = -documentData.boxWidth;\r\n break;\r\n case 2:\r\n documentData.justifyOffset = -documentData.boxWidth / 2;\r\n break;\r\n default:\r\n documentData.justifyOffset = 0;\r\n }\r\n }\r\n documentData.lineWidths = lineWidths;\r\n\r\n var animators = data.a; var animatorData; var\r\n letterData;\r\n jLen = animators.length;\r\n var based; var ind; var\r\n indexes = [];\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorData = animators[j];\r\n if (animatorData.a.sc) {\r\n documentData.strokeColorAnim = true;\r\n }\r\n if (animatorData.a.sw) {\r\n documentData.strokeWidthAnim = true;\r\n }\r\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\r\n documentData.fillColorAnim = true;\r\n }\r\n ind = 0;\r\n based = animatorData.s.b;\r\n for (i = 0; i < len; i += 1) {\r\n letterData = letters[i];\r\n letterData.anIndexes[j] = ind;\r\n if ((based == 1 && letterData.val !== '') || (based == 2 && letterData.val !== '' && letterData.val !== ' ') || (based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1)) || (based == 4 && (letterData.n || i == len - 1))) { // eslint-disable-line eqeqeq\r\n if (animatorData.s.rn === 1) {\r\n indexes.push(ind);\r\n }\r\n ind += 1;\r\n }\r\n }\r\n data.a[j].s.totalChars = ind;\r\n var currentInd = -1; var\r\n newInd;\r\n if (animatorData.s.rn === 1) {\r\n for (i = 0; i < len; i += 1) {\r\n letterData = letters[i];\r\n if (currentInd != letterData.anIndexes[j]) { // eslint-disable-line eqeqeq\r\n currentInd = letterData.anIndexes[j];\r\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\r\n }\r\n letterData.anIndexes[j] = newInd;\r\n }\r\n }\r\n }\r\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n documentData.ls = documentData.ls || 0;\r\n documentData.ascent = (fontData.ascent * documentData.finalSize) / 100;\r\n};\r\n\r\nTextProperty.prototype.updateDocumentData = function (newData, index) {\r\n index = index === undefined ? this.keysIndex : index;\r\n var dData = this.copyData({}, this.data.d.k[index].s);\r\n dData = this.copyData(dData, newData);\r\n this.data.d.k[index].s = dData;\r\n this.recalculate(index);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nTextProperty.prototype.recalculate = function (index) {\r\n var dData = this.data.d.k[index].s;\r\n dData.__complete = false;\r\n this.keysIndex = 0;\r\n this._isFirstFrame = true;\r\n this.getValue(dData);\r\n};\r\n\r\nTextProperty.prototype.canResizeFont = function (_canResize) {\r\n this.canResize = _canResize;\r\n this.recalculate(this.keysIndex);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nTextProperty.prototype.setMinimumFontSize = function (_fontValue) {\r\n this.minimumFontSize = Math.floor(_fontValue) || 1;\r\n this.recalculate(this.keysIndex);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\n/* global extendPrototype, BezierFactory, PropertyFactory, DynamicPropertyContainer */\r\n/* exported TextSelectorProp */\r\n\r\nvar TextSelectorProp = (function () {\r\n var max = Math.max;\r\n var min = Math.min;\r\n var floor = Math.floor;\r\n\r\n function TextSelectorPropFactory(elem, data) {\r\n this._currentTextLength = -1;\r\n this.k = false;\r\n this.data = data;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.finalS = 0;\r\n this.finalE = 0;\r\n this.initDynamicPropertyContainer(elem);\r\n this.s = PropertyFactory.getProp(elem, data.s || { k: 0 }, 0, 0, this);\r\n if ('e' in data) {\r\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\r\n } else {\r\n this.e = { v: 100 };\r\n }\r\n this.o = PropertyFactory.getProp(elem, data.o || { k: 0 }, 0, 0, this);\r\n this.xe = PropertyFactory.getProp(elem, data.xe || { k: 0 }, 0, 0, this);\r\n this.ne = PropertyFactory.getProp(elem, data.ne || { k: 0 }, 0, 0, this);\r\n this.sm = PropertyFactory.getProp(elem, data.sm || { k: 100 }, 0, 0, this);\r\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\r\n if (!this.dynamicProperties.length) {\r\n this.getValue();\r\n }\r\n }\r\n\r\n TextSelectorPropFactory.prototype = {\r\n getMult: function (ind) {\r\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\r\n this.getValue();\r\n }\r\n // var easer = bez.getEasingCurve(this.ne.v/100,0,1-this.xe.v/100,1);\r\n var x1 = 0;\r\n var y1 = 0;\r\n var x2 = 1;\r\n var y2 = 1;\r\n if (this.ne.v > 0) {\r\n x1 = this.ne.v / 100.0;\r\n } else {\r\n y1 = -this.ne.v / 100.0;\r\n }\r\n if (this.xe.v > 0) {\r\n x2 = 1.0 - this.xe.v / 100.0;\r\n } else {\r\n y2 = 1.0 + this.xe.v / 100.0;\r\n }\r\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\r\n\r\n var mult = 0;\r\n var s = this.finalS;\r\n var e = this.finalE;\r\n var type = this.data.sh;\r\n if (type === 2) {\r\n if (e === s) {\r\n mult = ind >= e ? 1 : 0;\r\n } else {\r\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n }\r\n mult = easer(mult);\r\n } else if (type === 3) {\r\n if (e === s) {\r\n mult = ind >= e ? 0 : 1;\r\n } else {\r\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n }\r\n\r\n mult = easer(mult);\r\n } else if (type === 4) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n if (mult < 0.5) {\r\n mult *= 2;\r\n } else {\r\n mult = 1 - 2 * (mult - 0.5);\r\n }\r\n }\r\n mult = easer(mult);\r\n } else if (type === 5) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n var tot = e - s;\r\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\r\n ind = min(max(0, ind + 0.5 - s), e - s);\r\n var x = -tot / 2 + ind;\r\n var a = tot / 2;\r\n mult = Math.sqrt(1 - (x * x) / (a * a));\r\n }\r\n mult = easer(mult);\r\n } else if (type === 6) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n ind = min(max(0, ind + 0.5 - s), e - s);\r\n mult = (1 + (Math.cos((Math.PI + Math.PI * 2 * (ind) / (e - s))))) / 2; // eslint-disable-line\r\n }\r\n mult = easer(mult);\r\n } else {\r\n if (ind >= floor(s)) {\r\n if (ind - s < 0) {\r\n mult = max(0, min(min(e, 1) - (s - ind), 1));\r\n } else {\r\n mult = max(0, min(e - ind, 1));\r\n }\r\n }\r\n mult = easer(mult);\r\n }\r\n // Smoothness implementation.\r\n // The smoothness represents a reduced range of the original [0; 1] range.\r\n // if smoothness is 25%, the new range will be [0.375; 0.625]\r\n // Steps are:\r\n // - find the lower value of the new range (threshold)\r\n // - if multiplier is smaller than that value, floor it to 0\r\n // - if it is larger,\r\n // - subtract the threshold\r\n // - divide it by the smoothness (this will return the range to [0; 1])\r\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\r\n if (this.sm.v !== 100) {\r\n var smoothness = this.sm.v * 0.01;\r\n if (smoothness === 0) {\r\n smoothness = 0.00000001;\r\n }\r\n var threshold = 0.5 - smoothness * 0.5;\r\n if (mult < threshold) {\r\n mult = 0;\r\n } else {\r\n mult = (mult - threshold) / smoothness;\r\n if (mult > 1) {\r\n mult = 1;\r\n }\r\n }\r\n }\r\n return mult * this.a.v;\r\n },\r\n getValue: function (newCharsFlag) {\r\n this.iterateDynamicProperties();\r\n this._mdf = newCharsFlag || this._mdf;\r\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\r\n if (newCharsFlag && this.data.r === 2) {\r\n this.e.v = this._currentTextLength;\r\n }\r\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\r\n var o = this.o.v / divisor;\r\n var s = this.s.v / divisor + o;\r\n var e = (this.e.v / divisor) + o;\r\n if (s > e) {\r\n var _s = s;\r\n s = e;\r\n e = _s;\r\n }\r\n this.finalS = s;\r\n this.finalE = e;\r\n },\r\n };\r\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\r\n\r\n function getTextSelectorProp(elem, data, arr) {\r\n return new TextSelectorPropFactory(elem, data, arr);\r\n }\r\n\r\n return {\r\n getTextSelectorProp: getTextSelectorProp,\r\n };\r\n}());\r\n\r\n/* global createSizedArray, pooling */\r\n/* exported poolFactory */\r\n\r\nvar poolFactory = (function () {\r\n return function (initialLength, _create, _release) {\r\n var _length = 0;\r\n var _maxLength = initialLength;\r\n var pool = createSizedArray(_maxLength);\r\n\r\n var ob = {\r\n newElement: newElement,\r\n release: release,\r\n };\r\n\r\n function newElement() {\r\n var element;\r\n if (_length) {\r\n _length -= 1;\r\n element = pool[_length];\r\n } else {\r\n element = _create();\r\n }\r\n return element;\r\n }\r\n\r\n function release(element) {\r\n if (_length === _maxLength) {\r\n pool = pooling.double(pool);\r\n _maxLength *= 2;\r\n }\r\n if (_release) {\r\n _release(element);\r\n }\r\n pool[_length] = element;\r\n _length += 1;\r\n }\r\n\r\n return ob;\r\n };\r\n}());\r\n\r\n/* global createSizedArray */\r\n/* exported pooling */\r\n\r\nvar pooling = (function () {\r\n function double(arr) {\r\n return arr.concat(createSizedArray(arr.length));\r\n }\r\n\r\n return {\r\n double: double,\r\n };\r\n}());\r\n\r\n/* global createTypedArray, poolFactory */\r\n/* exported pointPool */\r\n\r\nvar pointPool = (function () {\r\n function create() {\r\n return createTypedArray('float32', 2);\r\n }\r\n return poolFactory(8, create);\r\n}());\r\n\r\n/* global ShapePath, pointPool, poolFactory */\r\n/* exported shapePool */\r\n\r\nvar shapePool = (function () {\r\n function create() {\r\n return new ShapePath();\r\n }\r\n\r\n function release(shapePath) {\r\n var len = shapePath._length;\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n pointPool.release(shapePath.v[i]);\r\n pointPool.release(shapePath.i[i]);\r\n pointPool.release(shapePath.o[i]);\r\n shapePath.v[i] = null;\r\n shapePath.i[i] = null;\r\n shapePath.o[i] = null;\r\n }\r\n shapePath._length = 0;\r\n shapePath.c = false;\r\n }\r\n\r\n function clone(shape) {\r\n var cloned = factory.newElement();\r\n var i;\r\n var len = shape._length === undefined ? shape.v.length : shape._length;\r\n cloned.setLength(len);\r\n cloned.c = shape.c;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\r\n }\r\n return cloned;\r\n }\r\n\r\n var factory = poolFactory(4, create, release);\r\n factory.clone = clone;\r\n\r\n return factory;\r\n}());\r\n\r\n/* global createSizedArray, ShapeCollection, shapePool, pooling */\r\n/* exported shapeCollectionPool */\r\n\r\nvar shapeCollectionPool = (function () {\r\n var ob = {\r\n newShapeCollection: newShapeCollection,\r\n release: release,\r\n };\r\n\r\n var _length = 0;\r\n var _maxLength = 4;\r\n var pool = createSizedArray(_maxLength);\r\n\r\n function newShapeCollection() {\r\n var shapeCollection;\r\n if (_length) {\r\n _length -= 1;\r\n shapeCollection = pool[_length];\r\n } else {\r\n shapeCollection = new ShapeCollection();\r\n }\r\n return shapeCollection;\r\n }\r\n\r\n function release(shapeCollection) {\r\n var i;\r\n var len = shapeCollection._length;\r\n for (i = 0; i < len; i += 1) {\r\n shapePool.release(shapeCollection.shapes[i]);\r\n }\r\n shapeCollection._length = 0;\r\n\r\n if (_length === _maxLength) {\r\n pool = pooling.double(pool);\r\n _maxLength *= 2;\r\n }\r\n pool[_length] = shapeCollection;\r\n _length += 1;\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* global poolFactory, bezierLengthPool */\r\n/* exported segmentsLengthPool */\r\n\r\nvar segmentsLengthPool = (function () {\r\n function create() {\r\n return {\r\n lengths: [],\r\n totalLength: 0,\r\n };\r\n }\r\n\r\n function release(element) {\r\n var i;\r\n var len = element.lengths.length;\r\n for (i = 0; i < len; i += 1) {\r\n bezierLengthPool.release(element.lengths[i]);\r\n }\r\n element.lengths.length = 0;\r\n }\r\n\r\n return poolFactory(8, create, release);\r\n}());\r\n\r\n/* global createTypedArray, defaultCurveSegments, poolFactory */\r\n/* exported bezierLengthPool */\r\n\r\nvar bezierLengthPool = (function () {\r\n function create() {\r\n return {\r\n addedLength: 0,\r\n percents: createTypedArray('float32', defaultCurveSegments),\r\n lengths: createTypedArray('float32', defaultCurveSegments),\r\n };\r\n }\r\n return poolFactory(8, create);\r\n}());\r\n\r\n/* exported markerParser */\r\n\r\nvar markerParser = (\r\n\r\n function () {\r\n function parsePayloadLines(payload) {\r\n var lines = payload.split('\\r\\n');\r\n var keys = {};\r\n var line;\r\n var keysCount = 0;\r\n for (var i = 0; i < lines.length; i += 1) {\r\n line = lines[i].split(':');\r\n if (line.length === 2) {\r\n keys[line[0]] = line[1].trim();\r\n keysCount += 1;\r\n }\r\n }\r\n if (keysCount === 0) {\r\n throw new Error();\r\n }\r\n return keys;\r\n }\r\n\r\n return function (_markers) {\r\n var markers = [];\r\n for (var i = 0; i < _markers.length; i += 1) {\r\n var _marker = _markers[i];\r\n var markerData = {\r\n time: _marker.tm,\r\n duration: _marker.dr,\r\n };\r\n try {\r\n markerData.payload = JSON.parse(_markers[i].cm);\r\n } catch (_) {\r\n try {\r\n markerData.payload = parsePayloadLines(_markers[i].cm);\r\n } catch (__) {\r\n markerData.payload = {\r\n name: _markers[i],\r\n };\r\n }\r\n }\r\n markers.push(markerData);\r\n }\r\n return markers;\r\n };\r\n }());\r\n\r\n/* global AudioElement, FootageElement, FontManager */\r\n\r\nfunction BaseRenderer() {}\r\nBaseRenderer.prototype.checkLayers = function (num) {\r\n var i;\r\n var len = this.layers.length;\r\n var data;\r\n this.completeLayers = true;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (!this.elements[i]) {\r\n data = this.layers[i];\r\n if (data.ip - data.st <= (num - this.layers[i].st) && data.op - data.st > (num - this.layers[i].st)) {\r\n this.buildItem(i);\r\n }\r\n }\r\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\r\n }\r\n this.checkPendingElements();\r\n};\r\n\r\nBaseRenderer.prototype.createItem = function (layer) {\r\n switch (layer.ty) {\r\n case 2:\r\n return this.createImage(layer);\r\n case 0:\r\n return this.createComp(layer);\r\n case 1:\r\n return this.createSolid(layer);\r\n case 3:\r\n return this.createNull(layer);\r\n case 4:\r\n return this.createShape(layer);\r\n case 5:\r\n return this.createText(layer);\r\n case 6:\r\n return this.createAudio(layer);\r\n case 13:\r\n return this.createCamera(layer);\r\n case 15:\r\n return this.createFootage(layer);\r\n default:\r\n return this.createNull(layer);\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.createCamera = function () {\r\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\r\n};\r\n\r\nBaseRenderer.prototype.createAudio = function (data) {\r\n return new AudioElement(data, this.globalData, this);\r\n};\r\n\r\nBaseRenderer.prototype.createFootage = function (data) {\r\n return new FootageElement(data, this.globalData, this);\r\n};\r\n\r\nBaseRenderer.prototype.buildAllItems = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.buildItem(i);\r\n }\r\n this.checkPendingElements();\r\n};\r\n\r\nBaseRenderer.prototype.includeLayers = function (newLayers) {\r\n this.completeLayers = false;\r\n var i;\r\n var len = newLayers.length;\r\n var j;\r\n var jLen = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n j = 0;\r\n while (j < jLen) {\r\n if (this.layers[j].id === newLayers[i].id) {\r\n this.layers[j] = newLayers[i];\r\n break;\r\n }\r\n j += 1;\r\n }\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.setProjectInterface = function (pInterface) {\r\n this.globalData.projectInterface = pInterface;\r\n};\r\n\r\nBaseRenderer.prototype.initItems = function () {\r\n if (!this.globalData.progressiveLoad) {\r\n this.buildAllItems();\r\n }\r\n};\r\nBaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\r\n var elements = this.elements;\r\n var layers = this.layers;\r\n var i = 0;\r\n var len = layers.length;\r\n while (i < len) {\r\n if (layers[i].ind == parentName) { // eslint-disable-line eqeqeq\r\n if (!elements[i] || elements[i] === true) {\r\n this.buildItem(i);\r\n this.addPendingElement(element);\r\n } else {\r\n hierarchy.push(elements[i]);\r\n elements[i].setAsParent();\r\n if (layers[i].parent !== undefined) {\r\n this.buildElementParenting(element, layers[i].parent, hierarchy);\r\n } else {\r\n element.setHierarchy(hierarchy);\r\n }\r\n }\r\n }\r\n i += 1;\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.addPendingElement = function (element) {\r\n this.pendingElements.push(element);\r\n};\r\n\r\nBaseRenderer.prototype.searchExtraCompositions = function (assets) {\r\n var i;\r\n var len = assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (assets[i].xt) {\r\n var comp = this.createComp(assets[i]);\r\n comp.initExpressions();\r\n this.globalData.projectInterface.registerComposition(comp);\r\n }\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\r\n this.globalData.fontManager = new FontManager();\r\n this.globalData.fontManager.addChars(animData.chars);\r\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\r\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\r\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\r\n this.globalData.imageLoader = this.animationItem.imagePreloader;\r\n this.globalData.audioController = this.animationItem.audioController;\r\n this.globalData.frameId = 0;\r\n this.globalData.frameRate = animData.fr;\r\n this.globalData.nm = animData.nm;\r\n this.globalData.compSize = {\r\n w: animData.w,\r\n h: animData.h,\r\n };\r\n};\r\n\r\n/* global createElementID, extendPrototype, BaseRenderer, NullElement, SVGShapeElement, SVGTextLottieElement,\r\nIImageElement, SVGCompElement, ISolidElement, createNS, locationHref, createSizedArray, expressionsPlugin */\r\n\r\nfunction SVGRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.layers = null;\r\n this.renderedFrame = -1;\r\n this.svgElement = createNS('svg');\r\n var ariaLabel = '';\r\n if (config && config.title) {\r\n var titleElement = createNS('title');\r\n var titleId = createElementID();\r\n titleElement.setAttribute('id', titleId);\r\n titleElement.textContent = config.title;\r\n this.svgElement.appendChild(titleElement);\r\n ariaLabel += titleId;\r\n }\r\n if (config && config.description) {\r\n var descElement = createNS('desc');\r\n var descId = createElementID();\r\n descElement.setAttribute('id', descId);\r\n descElement.textContent = config.description;\r\n this.svgElement.appendChild(descElement);\r\n ariaLabel += ' ' + descId;\r\n }\r\n if (ariaLabel) {\r\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\r\n }\r\n var defs = createNS('defs');\r\n this.svgElement.appendChild(defs);\r\n var maskElement = createNS('g');\r\n this.svgElement.appendChild(maskElement);\r\n this.layerElement = maskElement;\r\n this.renderConfig = {\r\n preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',\r\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\r\n contentVisibility: (config && config.contentVisibility) || 'visible',\r\n progressiveLoad: (config && config.progressiveLoad) || false,\r\n hideOnTransparent: !((config && config.hideOnTransparent === false)),\r\n viewBoxOnly: (config && config.viewBoxOnly) || false,\r\n viewBoxSize: (config && config.viewBoxSize) || false,\r\n className: (config && config.className) || '',\r\n id: (config && config.id) || '',\r\n focusable: config && config.focusable,\r\n filterSize: {\r\n width: (config && config.filterSize && config.filterSize.width) || '100%',\r\n height: (config && config.filterSize && config.filterSize.height) || '100%',\r\n x: (config && config.filterSize && config.filterSize.x) || '0%',\r\n y: (config && config.filterSize && config.filterSize.y) || '0%',\r\n },\r\n };\r\n\r\n this.globalData = {\r\n _mdf: false,\r\n frameNum: -1,\r\n defs: defs,\r\n renderConfig: this.renderConfig,\r\n };\r\n this.elements = [];\r\n this.pendingElements = [];\r\n this.destroyed = false;\r\n this.rendererType = 'svg';\r\n}\r\n\r\nextendPrototype([BaseRenderer], SVGRenderer);\r\n\r\nSVGRenderer.prototype.createNull = function (data) {\r\n return new NullElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createShape = function (data) {\r\n return new SVGShapeElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createText = function (data) {\r\n return new SVGTextLottieElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createImage = function (data) {\r\n return new IImageElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createComp = function (data) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createSolid = function (data) {\r\n return new ISolidElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.configAnimation = function (animData) {\r\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\r\n if (this.renderConfig.viewBoxSize) {\r\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\r\n } else {\r\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\r\n }\r\n\r\n if (!this.renderConfig.viewBoxOnly) {\r\n this.svgElement.setAttribute('width', animData.w);\r\n this.svgElement.setAttribute('height', animData.h);\r\n this.svgElement.style.width = '100%';\r\n this.svgElement.style.height = '100%';\r\n this.svgElement.style.transform = 'translate3d(0,0,0)';\r\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\r\n }\r\n if (this.renderConfig.className) {\r\n this.svgElement.setAttribute('class', this.renderConfig.className);\r\n }\r\n if (this.renderConfig.id) {\r\n this.svgElement.setAttribute('id', this.renderConfig.id);\r\n }\r\n if (this.renderConfig.focusable !== undefined) {\r\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\r\n }\r\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio);\r\n // this.layerElement.style.transform = 'translate3d(0,0,0)';\r\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\r\n this.animationItem.wrapper.appendChild(this.svgElement);\r\n // Mask animation\r\n var defs = this.globalData.defs;\r\n\r\n this.setupGlobalData(animData, defs);\r\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\r\n this.data = animData;\r\n\r\n var maskElement = createNS('clipPath');\r\n var rect = createNS('rect');\r\n rect.setAttribute('width', animData.w);\r\n rect.setAttribute('height', animData.h);\r\n rect.setAttribute('x', 0);\r\n rect.setAttribute('y', 0);\r\n var maskId = createElementID();\r\n maskElement.setAttribute('id', maskId);\r\n maskElement.appendChild(rect);\r\n this.layerElement.setAttribute('clip-path', 'url(' + locationHref + '#' + maskId + ')');\r\n\r\n defs.appendChild(maskElement);\r\n this.layers = animData.layers;\r\n this.elements = createSizedArray(animData.layers.length);\r\n};\r\n\r\nSVGRenderer.prototype.destroy = function () {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.wrapper.innerText = '';\r\n }\r\n this.layerElement = null;\r\n this.globalData.defs = null;\r\n var i;\r\n var len = this.layers ? this.layers.length : 0;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n this.elements.length = 0;\r\n this.destroyed = true;\r\n this.animationItem = null;\r\n};\r\n\r\nSVGRenderer.prototype.updateContainerSize = function () {\r\n};\r\n\r\nSVGRenderer.prototype.buildItem = function (pos) {\r\n var elements = this.elements;\r\n if (elements[pos] || this.layers[pos].ty === 99) {\r\n return;\r\n }\r\n elements[pos] = true;\r\n var element = this.createItem(this.layers[pos]);\r\n\r\n elements[pos] = element;\r\n if (expressionsPlugin) {\r\n if (this.layers[pos].ty === 0) {\r\n this.globalData.projectInterface.registerComposition(element);\r\n }\r\n element.initExpressions();\r\n }\r\n this.appendElementInPos(element, pos);\r\n if (this.layers[pos].tt) {\r\n if (!this.elements[pos - 1] || this.elements[pos - 1] === true) {\r\n this.buildItem(pos - 1);\r\n this.addPendingElement(element);\r\n } else {\r\n element.setMatte(elements[pos - 1].layerId);\r\n }\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n if (element.data.tt) {\r\n var i = 0;\r\n var len = this.elements.length;\r\n while (i < len) {\r\n if (this.elements[i] === element) {\r\n element.setMatte(this.elements[i - 1].layerId);\r\n break;\r\n }\r\n i += 1;\r\n }\r\n }\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.renderFrame = function (num) {\r\n if (this.renderedFrame === num || this.destroyed) {\r\n return;\r\n }\r\n if (num === null) {\r\n num = this.renderedFrame;\r\n } else {\r\n this.renderedFrame = num;\r\n }\r\n // console.log('-------');\r\n // console.log('FRAME ',num);\r\n this.globalData.frameNum = num;\r\n this.globalData.frameId += 1;\r\n this.globalData.projectInterface.currentFrame = num;\r\n this.globalData._mdf = false;\r\n var i;\r\n var len = this.layers.length;\r\n if (!this.completeLayers) {\r\n this.checkLayers(num);\r\n }\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(num - this.layers[i].st);\r\n }\r\n }\r\n if (this.globalData._mdf) {\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.appendElementInPos = function (element, pos) {\r\n var newElement = element.getBaseElement();\r\n if (!newElement) {\r\n return;\r\n }\r\n var i = 0;\r\n var nextElement;\r\n while (i < pos) {\r\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\r\n nextElement = this.elements[i].getBaseElement();\r\n }\r\n i += 1;\r\n }\r\n if (nextElement) {\r\n this.layerElement.insertBefore(newElement, nextElement);\r\n } else {\r\n this.layerElement.appendChild(newElement);\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.hide = function () {\r\n this.layerElement.style.display = 'none';\r\n};\r\n\r\nSVGRenderer.prototype.show = function () {\r\n this.layerElement.style.display = 'block';\r\n};\r\n\r\n/* global CVContextData, Matrix, extendPrototype, BaseRenderer, CVShapeElement, CVTextElement,\r\nCVImageElement, CVCompElement, CVSolidElement, SVGRenderer, createTag, createSizedArray */\r\n\r\nfunction CanvasRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.renderConfig = {\r\n clearCanvas: (config && config.clearCanvas !== undefined) ? config.clearCanvas : true,\r\n context: (config && config.context) || null,\r\n progressiveLoad: (config && config.progressiveLoad) || false,\r\n preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',\r\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\r\n contentVisibility: (config && config.contentVisibility) || 'visible',\r\n className: (config && config.className) || '',\r\n id: (config && config.id) || '',\r\n };\r\n this.renderConfig.dpr = (config && config.dpr) || 1;\r\n if (this.animationItem.wrapper) {\r\n this.renderConfig.dpr = (config && config.dpr) || window.devicePixelRatio || 1;\r\n }\r\n this.renderedFrame = -1;\r\n this.globalData = {\r\n frameNum: -1,\r\n _mdf: false,\r\n renderConfig: this.renderConfig,\r\n currentGlobalAlpha: -1,\r\n };\r\n this.contextData = new CVContextData();\r\n this.elements = [];\r\n this.pendingElements = [];\r\n this.transformMat = new Matrix();\r\n this.completeLayers = false;\r\n this.rendererType = 'canvas';\r\n}\r\nextendPrototype([BaseRenderer], CanvasRenderer);\r\n\r\nCanvasRenderer.prototype.createShape = function (data) {\r\n return new CVShapeElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createText = function (data) {\r\n return new CVTextElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createImage = function (data) {\r\n return new CVImageElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createComp = function (data) {\r\n return new CVCompElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createSolid = function (data) {\r\n return new CVSolidElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createNull = SVGRenderer.prototype.createNull;\r\n\r\nCanvasRenderer.prototype.ctxTransform = function (props) {\r\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\r\n return;\r\n }\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\r\n return;\r\n }\r\n this.transformMat.cloneFromProps(props);\r\n var cProps = this.contextData.cTr.props;\r\n this.transformMat.transform(cProps[0], cProps[1], cProps[2], cProps[3], cProps[4], cProps[5], cProps[6], cProps[7], cProps[8], cProps[9], cProps[10], cProps[11], cProps[12], cProps[13], cProps[14], cProps[15]);\r\n // this.contextData.cTr.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);\r\n this.contextData.cTr.cloneFromProps(this.transformMat.props);\r\n var trProps = this.contextData.cTr.props;\r\n this.canvasContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\r\n};\r\n\r\nCanvasRenderer.prototype.ctxOpacity = function (op) {\r\n /* if(op === 1){\r\n return;\r\n } */\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\r\n this.globalData.currentGlobalAlpha = this.contextData.cO;\r\n return;\r\n }\r\n this.contextData.cO *= op < 0 ? 0 : op;\r\n if (this.globalData.currentGlobalAlpha !== this.contextData.cO) {\r\n this.canvasContext.globalAlpha = this.contextData.cO;\r\n this.globalData.currentGlobalAlpha = this.contextData.cO;\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.reset = function () {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.restore();\r\n return;\r\n }\r\n this.contextData.reset();\r\n};\r\n\r\nCanvasRenderer.prototype.save = function (actionFlag) {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.save();\r\n return;\r\n }\r\n if (actionFlag) {\r\n this.canvasContext.save();\r\n }\r\n var props = this.contextData.cTr.props;\r\n if (this.contextData._length <= this.contextData.cArrPos) {\r\n this.contextData.duplicate();\r\n }\r\n var i;\r\n var arr = this.contextData.saved[this.contextData.cArrPos];\r\n for (i = 0; i < 16; i += 1) {\r\n arr[i] = props[i];\r\n }\r\n this.contextData.savedOp[this.contextData.cArrPos] = this.contextData.cO;\r\n this.contextData.cArrPos += 1;\r\n};\r\n\r\nCanvasRenderer.prototype.restore = function (actionFlag) {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.restore();\r\n return;\r\n }\r\n if (actionFlag) {\r\n this.canvasContext.restore();\r\n this.globalData.blendMode = 'source-over';\r\n }\r\n this.contextData.cArrPos -= 1;\r\n var popped = this.contextData.saved[this.contextData.cArrPos];\r\n var i;\r\n var arr = this.contextData.cTr.props;\r\n for (i = 0; i < 16; i += 1) {\r\n arr[i] = popped[i];\r\n }\r\n this.canvasContext.setTransform(popped[0], popped[1], popped[4], popped[5], popped[12], popped[13]);\r\n popped = this.contextData.savedOp[this.contextData.cArrPos];\r\n this.contextData.cO = popped;\r\n if (this.globalData.currentGlobalAlpha !== popped) {\r\n this.canvasContext.globalAlpha = popped;\r\n this.globalData.currentGlobalAlpha = popped;\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.configAnimation = function (animData) {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.container = createTag('canvas');\r\n var containerStyle = this.animationItem.container.style;\r\n containerStyle.width = '100%';\r\n containerStyle.height = '100%';\r\n var origin = '0px 0px 0px';\r\n containerStyle.transformOrigin = origin;\r\n containerStyle.mozTransformOrigin = origin;\r\n containerStyle.webkitTransformOrigin = origin;\r\n containerStyle['-webkit-transform'] = origin;\r\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\r\n this.animationItem.wrapper.appendChild(this.animationItem.container);\r\n this.canvasContext = this.animationItem.container.getContext('2d');\r\n if (this.renderConfig.className) {\r\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\r\n }\r\n if (this.renderConfig.id) {\r\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\r\n }\r\n } else {\r\n this.canvasContext = this.renderConfig.context;\r\n }\r\n this.data = animData;\r\n this.layers = animData.layers;\r\n this.transformCanvas = {\r\n w: animData.w,\r\n h: animData.h,\r\n sx: 0,\r\n sy: 0,\r\n tx: 0,\r\n ty: 0,\r\n };\r\n this.setupGlobalData(animData, document.body);\r\n this.globalData.canvasContext = this.canvasContext;\r\n this.globalData.renderer = this;\r\n this.globalData.isDashed = false;\r\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\r\n this.globalData.transformCanvas = this.transformCanvas;\r\n this.elements = createSizedArray(animData.layers.length);\r\n\r\n this.updateContainerSize();\r\n};\r\n\r\nCanvasRenderer.prototype.updateContainerSize = function () {\r\n this.reset();\r\n var elementWidth;\r\n var elementHeight;\r\n if (this.animationItem.wrapper && this.animationItem.container) {\r\n elementWidth = this.animationItem.wrapper.offsetWidth;\r\n elementHeight = this.animationItem.wrapper.offsetHeight;\r\n this.animationItem.container.setAttribute('width', elementWidth * this.renderConfig.dpr);\r\n this.animationItem.container.setAttribute('height', elementHeight * this.renderConfig.dpr);\r\n } else {\r\n elementWidth = this.canvasContext.canvas.width * this.renderConfig.dpr;\r\n elementHeight = this.canvasContext.canvas.height * this.renderConfig.dpr;\r\n }\r\n var elementRel;\r\n var animationRel;\r\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\r\n var par = this.renderConfig.preserveAspectRatio.split(' ');\r\n var fillType = par[1] || 'meet';\r\n var pos = par[0] || 'xMidYMid';\r\n var xPos = pos.substr(0, 4);\r\n var yPos = pos.substr(4);\r\n elementRel = elementWidth / elementHeight;\r\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\r\n if ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice')) {\r\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n } else {\r\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n }\r\n\r\n if (xPos === 'xMid' && ((animationRel < elementRel && fillType === 'meet') || (animationRel > elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.tx = ((elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2) * this.renderConfig.dpr;\r\n } else if (xPos === 'xMax' && ((animationRel < elementRel && fillType === 'meet') || (animationRel > elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\r\n } else {\r\n this.transformCanvas.tx = 0;\r\n }\r\n if (yPos === 'YMid' && ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.ty = ((elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2) * this.renderConfig.dpr;\r\n } else if (yPos === 'YMax' && ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.ty = ((elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w))) * this.renderConfig.dpr;\r\n } else {\r\n this.transformCanvas.ty = 0;\r\n }\r\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\r\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n this.transformCanvas.tx = 0;\r\n this.transformCanvas.ty = 0;\r\n } else {\r\n this.transformCanvas.sx = this.renderConfig.dpr;\r\n this.transformCanvas.sy = this.renderConfig.dpr;\r\n this.transformCanvas.tx = 0;\r\n this.transformCanvas.ty = 0;\r\n }\r\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\r\n /* var i, len = this.elements.length;\r\n for(i=0;i<len;i+=1){\r\n if(this.elements[i] && this.elements[i].data.ty === 0){\r\n this.elements[i].resize(this.globalData.transformCanvas);\r\n }\r\n } */\r\n this.ctxTransform(this.transformCanvas.props);\r\n this.canvasContext.beginPath();\r\n this.canvasContext.rect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\r\n this.canvasContext.closePath();\r\n this.canvasContext.clip();\r\n\r\n this.renderFrame(this.renderedFrame, true);\r\n};\r\n\r\nCanvasRenderer.prototype.destroy = function () {\r\n if (this.renderConfig.clearCanvas && this.animationItem.wrapper) {\r\n this.animationItem.wrapper.innerText = '';\r\n }\r\n var i;\r\n var len = this.layers ? this.layers.length : 0;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n this.elements.length = 0;\r\n this.globalData.canvasContext = null;\r\n this.animationItem.container = null;\r\n this.destroyed = true;\r\n};\r\n\r\nCanvasRenderer.prototype.renderFrame = function (num, forceRender) {\r\n if ((this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender) || this.destroyed || num === -1) {\r\n return;\r\n }\r\n this.renderedFrame = num;\r\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\r\n this.globalData.frameId += 1;\r\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\r\n this.globalData.projectInterface.currentFrame = num;\r\n\r\n // console.log('--------');\r\n // console.log('NEW: ',num);\r\n var i;\r\n var len = this.layers.length;\r\n if (!this.completeLayers) {\r\n this.checkLayers(num);\r\n }\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(num - this.layers[i].st);\r\n }\r\n }\r\n if (this.globalData._mdf) {\r\n if (this.renderConfig.clearCanvas === true) {\r\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\r\n } else {\r\n this.save();\r\n }\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n if (this.renderConfig.clearCanvas !== true) {\r\n this.restore();\r\n }\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.buildItem = function (pos) {\r\n var elements = this.elements;\r\n if (elements[pos] || this.layers[pos].ty === 99) {\r\n return;\r\n }\r\n var element = this.createItem(this.layers[pos], this, this.globalData);\r\n elements[pos] = element;\r\n element.initExpressions();\r\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\r\n};\r\n\r\nCanvasRenderer.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.hide = function () {\r\n this.animationItem.container.style.display = 'none';\r\n};\r\n\r\nCanvasRenderer.prototype.show = function () {\r\n this.animationItem.container.style.display = 'block';\r\n};\r\n\r\n/* global extendPrototype, BaseRenderer, SVGRenderer, SVGShapeElement, HShapeElement, SVGTextLottieElement,\r\nHTextElement, HCameraElement, IImageElement, HImageElement, SVGCompElement, HCompElement, ISolidElement,\r\nHSolidElement, styleDiv, createTag, createNS */\r\n\r\nfunction HybridRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.layers = null;\r\n this.renderedFrame = -1;\r\n this.renderConfig = {\r\n className: (config && config.className) || '',\r\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\r\n hideOnTransparent: !(config && config.hideOnTransparent === false),\r\n filterSize: {\r\n width: (config && config.filterSize && config.filterSize.width) || '400%',\r\n height: (config && config.filterSize && config.filterSize.height) || '400%',\r\n x: (config && config.filterSize && config.filterSize.x) || '-100%',\r\n y: (config && config.filterSize && config.filterSize.y) || '-100%',\r\n },\r\n };\r\n this.globalData = {\r\n _mdf: false,\r\n frameNum: -1,\r\n renderConfig: this.renderConfig,\r\n };\r\n this.pendingElements = [];\r\n this.elements = [];\r\n this.threeDElements = [];\r\n this.destroyed = false;\r\n this.camera = null;\r\n this.supports3d = true;\r\n this.rendererType = 'html';\r\n}\r\n\r\nextendPrototype([BaseRenderer], HybridRenderer);\r\n\r\nHybridRenderer.prototype.buildItem = SVGRenderer.prototype.buildItem;\r\n\r\nHybridRenderer.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.appendElementInPos = function (element, pos) {\r\n var newDOMElement = element.getBaseElement();\r\n if (!newDOMElement) {\r\n return;\r\n }\r\n var layer = this.layers[pos];\r\n if (!layer.ddd || !this.supports3d) {\r\n if (this.threeDElements) {\r\n this.addTo3dContainer(newDOMElement, pos);\r\n } else {\r\n var i = 0;\r\n var nextDOMElement;\r\n var nextLayer;\r\n var tmpDOMElement;\r\n while (i < pos) {\r\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\r\n nextLayer = this.elements[i];\r\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\r\n nextDOMElement = tmpDOMElement || nextDOMElement;\r\n }\r\n i += 1;\r\n }\r\n if (nextDOMElement) {\r\n if (!layer.ddd || !this.supports3d) {\r\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\r\n }\r\n } else if (!layer.ddd || !this.supports3d) {\r\n this.layerElement.appendChild(newDOMElement);\r\n }\r\n }\r\n } else {\r\n this.addTo3dContainer(newDOMElement, pos);\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.createShape = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGShapeElement(data, this.globalData, this);\r\n }\r\n return new HShapeElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createText = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGTextLottieElement(data, this.globalData, this);\r\n }\r\n return new HTextElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createCamera = function (data) {\r\n this.camera = new HCameraElement(data, this.globalData, this);\r\n return this.camera;\r\n};\r\n\r\nHybridRenderer.prototype.createImage = function (data) {\r\n if (!this.supports3d) {\r\n return new IImageElement(data, this.globalData, this);\r\n }\r\n return new HImageElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createComp = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n }\r\n return new HCompElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createSolid = function (data) {\r\n if (!this.supports3d) {\r\n return new ISolidElement(data, this.globalData, this);\r\n }\r\n return new HSolidElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createNull = SVGRenderer.prototype.createNull;\r\n\r\nHybridRenderer.prototype.getThreeDContainerByPos = function (pos) {\r\n var i = 0;\r\n var len = this.threeDElements.length;\r\n while (i < len) {\r\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\r\n return this.threeDElements[i].perspectiveElem;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n};\r\n\r\nHybridRenderer.prototype.createThreeDContainer = function (pos, type) {\r\n var perspectiveElem = createTag('div');\r\n var style;\r\n var containerStyle;\r\n styleDiv(perspectiveElem);\r\n var container = createTag('div');\r\n styleDiv(container);\r\n if (type === '3d') {\r\n style = perspectiveElem.style;\r\n style.width = this.globalData.compSize.w + 'px';\r\n style.height = this.globalData.compSize.h + 'px';\r\n var center = '50% 50%';\r\n style.webkitTransformOrigin = center;\r\n style.mozTransformOrigin = center;\r\n style.transformOrigin = center;\r\n containerStyle = container.style;\r\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\r\n containerStyle.transform = matrix;\r\n containerStyle.webkitTransform = matrix;\r\n }\r\n\r\n perspectiveElem.appendChild(container);\r\n // this.resizerElem.appendChild(perspectiveElem);\r\n var threeDContainerData = {\r\n container: container,\r\n perspectiveElem: perspectiveElem,\r\n startPos: pos,\r\n endPos: pos,\r\n type: type,\r\n };\r\n this.threeDElements.push(threeDContainerData);\r\n return threeDContainerData;\r\n};\r\n\r\nHybridRenderer.prototype.build3dContainers = function () {\r\n var i;\r\n var len = this.layers.length;\r\n var lastThreeDContainerData;\r\n var currentContainer = '';\r\n for (i = 0; i < len; i += 1) {\r\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\r\n if (currentContainer !== '3d') {\r\n currentContainer = '3d';\r\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\r\n }\r\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\r\n } else {\r\n if (currentContainer !== '2d') {\r\n currentContainer = '2d';\r\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\r\n }\r\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\r\n }\r\n }\r\n len = this.threeDElements.length;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.addTo3dContainer = function (elem, pos) {\r\n var i = 0;\r\n var len = this.threeDElements.length;\r\n while (i < len) {\r\n if (pos <= this.threeDElements[i].endPos) {\r\n var j = this.threeDElements[i].startPos;\r\n var nextElement;\r\n while (j < pos) {\r\n if (this.elements[j] && this.elements[j].getBaseElement) {\r\n nextElement = this.elements[j].getBaseElement();\r\n }\r\n j += 1;\r\n }\r\n if (nextElement) {\r\n this.threeDElements[i].container.insertBefore(elem, nextElement);\r\n } else {\r\n this.threeDElements[i].container.appendChild(elem);\r\n }\r\n break;\r\n }\r\n i += 1;\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.configAnimation = function (animData) {\r\n var resizerElem = createTag('div');\r\n var wrapper = this.animationItem.wrapper;\r\n var style = resizerElem.style;\r\n style.width = animData.w + 'px';\r\n style.height = animData.h + 'px';\r\n this.resizerElem = resizerElem;\r\n styleDiv(resizerElem);\r\n style.transformStyle = 'flat';\r\n style.mozTransformStyle = 'flat';\r\n style.webkitTransformStyle = 'flat';\r\n if (this.renderConfig.className) {\r\n resizerElem.setAttribute('class', this.renderConfig.className);\r\n }\r\n wrapper.appendChild(resizerElem);\r\n\r\n style.overflow = 'hidden';\r\n var svg = createNS('svg');\r\n svg.setAttribute('width', '1');\r\n svg.setAttribute('height', '1');\r\n styleDiv(svg);\r\n this.resizerElem.appendChild(svg);\r\n var defs = createNS('defs');\r\n svg.appendChild(defs);\r\n this.data = animData;\r\n // Mask animation\r\n this.setupGlobalData(animData, svg);\r\n this.globalData.defs = defs;\r\n this.layers = animData.layers;\r\n this.layerElement = this.resizerElem;\r\n this.build3dContainers();\r\n this.updateContainerSize();\r\n};\r\n\r\nHybridRenderer.prototype.destroy = function () {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.wrapper.innerText = '';\r\n }\r\n this.animationItem.container = null;\r\n this.globalData.defs = null;\r\n var i;\r\n var len = this.layers ? this.layers.length : 0;\r\n for (i = 0; i < len; i += 1) {\r\n this.elements[i].destroy();\r\n }\r\n this.elements.length = 0;\r\n this.destroyed = true;\r\n this.animationItem = null;\r\n};\r\n\r\nHybridRenderer.prototype.updateContainerSize = function () {\r\n var elementWidth = this.animationItem.wrapper.offsetWidth;\r\n var elementHeight = this.animationItem.wrapper.offsetHeight;\r\n var elementRel = elementWidth / elementHeight;\r\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\r\n var sx;\r\n var sy;\r\n var tx;\r\n var ty;\r\n if (animationRel > elementRel) {\r\n sx = elementWidth / (this.globalData.compSize.w);\r\n sy = elementWidth / (this.globalData.compSize.w);\r\n tx = 0;\r\n ty = ((elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2);\r\n } else {\r\n sx = elementHeight / (this.globalData.compSize.h);\r\n sy = elementHeight / (this.globalData.compSize.h);\r\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\r\n ty = 0;\r\n }\r\n var style = this.resizerElem.style;\r\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\r\n style.transform = style.webkitTransform;\r\n};\r\n\r\nHybridRenderer.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\r\n\r\nHybridRenderer.prototype.hide = function () {\r\n this.resizerElem.style.display = 'none';\r\n};\r\n\r\nHybridRenderer.prototype.show = function () {\r\n this.resizerElem.style.display = 'block';\r\n};\r\n\r\nHybridRenderer.prototype.initItems = function () {\r\n this.buildAllItems();\r\n if (this.camera) {\r\n this.camera.setup();\r\n } else {\r\n var cWidth = this.globalData.compSize.w;\r\n var cHeight = this.globalData.compSize.h;\r\n var i;\r\n var len = this.threeDElements.length;\r\n for (i = 0; i < len; i += 1) {\r\n var style = this.threeDElements[i].perspectiveElem.style;\r\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\r\n style.perspective = style.webkitPerspective;\r\n }\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.searchExtraCompositions = function (assets) {\r\n var i;\r\n var len = assets.length;\r\n var floatingContainer = createTag('div');\r\n for (i = 0; i < len; i += 1) {\r\n if (assets[i].xt) {\r\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\r\n comp.initExpressions();\r\n this.globalData.projectInterface.registerComposition(comp);\r\n }\r\n }\r\n};\r\n\r\n/* global createSizedArray, createElementID, PropertyFactory, ShapePropertyFactory, createNS, locationHref */\r\n\r\nfunction MaskElement(data, element, globalData) {\r\n this.data = data;\r\n this.element = element;\r\n this.globalData = globalData;\r\n this.storedData = [];\r\n this.masksProperties = this.data.masksProperties || [];\r\n this.maskElement = null;\r\n var defs = this.globalData.defs;\r\n var i;\r\n var len = this.masksProperties ? this.masksProperties.length : 0;\r\n this.viewData = createSizedArray(len);\r\n this.solidPath = '';\r\n\r\n var path;\r\n var properties = this.masksProperties;\r\n var count = 0;\r\n var currentMasks = [];\r\n var j;\r\n var jLen;\r\n var layerId = createElementID();\r\n var rect;\r\n var expansor;\r\n var feMorph;\r\n var x;\r\n var maskType = 'clipPath';\r\n var maskRef = 'clip-path';\r\n for (i = 0; i < len; i += 1) {\r\n if ((properties[i].mode !== 'a' && properties[i].mode !== 'n') || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\r\n maskType = 'mask';\r\n maskRef = 'mask';\r\n }\r\n\r\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\r\n rect = createNS('rect');\r\n rect.setAttribute('fill', '#ffffff');\r\n rect.setAttribute('width', this.element.comp.data.w || 0);\r\n rect.setAttribute('height', this.element.comp.data.h || 0);\r\n currentMasks.push(rect);\r\n } else {\r\n rect = null;\r\n }\r\n\r\n path = createNS('path');\r\n if (properties[i].mode === 'n') {\r\n // TODO move this to a factory or to a constructor\r\n this.viewData[i] = {\r\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\r\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\r\n elem: path,\r\n lastPath: '',\r\n };\r\n defs.appendChild(path);\r\n } else {\r\n count += 1;\r\n\r\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\r\n path.setAttribute('clip-rule', 'nonzero');\r\n var filterID;\r\n\r\n if (properties[i].x.k !== 0) {\r\n maskType = 'mask';\r\n maskRef = 'mask';\r\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\r\n filterID = createElementID();\r\n expansor = createNS('filter');\r\n expansor.setAttribute('id', filterID);\r\n feMorph = createNS('feMorphology');\r\n feMorph.setAttribute('operator', 'erode');\r\n feMorph.setAttribute('in', 'SourceGraphic');\r\n feMorph.setAttribute('radius', '0');\r\n expansor.appendChild(feMorph);\r\n defs.appendChild(expansor);\r\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\r\n } else {\r\n feMorph = null;\r\n x = null;\r\n }\r\n\r\n // TODO move this to a factory or to a constructor\r\n this.storedData[i] = {\r\n elem: path,\r\n x: x,\r\n expan: feMorph,\r\n lastPath: '',\r\n lastOperator: '',\r\n filterId: filterID,\r\n lastRadius: 0,\r\n };\r\n if (properties[i].mode === 'i') {\r\n jLen = currentMasks.length;\r\n var g = createNS('g');\r\n for (j = 0; j < jLen; j += 1) {\r\n g.appendChild(currentMasks[j]);\r\n }\r\n var mask = createNS('mask');\r\n mask.setAttribute('mask-type', 'alpha');\r\n mask.setAttribute('id', layerId + '_' + count);\r\n mask.appendChild(path);\r\n defs.appendChild(mask);\r\n g.setAttribute('mask', 'url(' + locationHref + '#' + layerId + '_' + count + ')');\r\n\r\n currentMasks.length = 0;\r\n currentMasks.push(g);\r\n } else {\r\n currentMasks.push(path);\r\n }\r\n if (properties[i].inv && !this.solidPath) {\r\n this.solidPath = this.createLayerSolidPath();\r\n }\r\n // TODO move this to a factory or to a constructor\r\n this.viewData[i] = {\r\n elem: path,\r\n lastPath: '',\r\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\r\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\r\n invRect: rect,\r\n };\r\n if (!this.viewData[i].prop.k) {\r\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\r\n }\r\n }\r\n }\r\n\r\n this.maskElement = createNS(maskType);\r\n\r\n len = currentMasks.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.maskElement.appendChild(currentMasks[i]);\r\n }\r\n\r\n if (count > 0) {\r\n this.maskElement.setAttribute('id', layerId);\r\n this.element.maskedElement.setAttribute(maskRef, 'url(' + locationHref + '#' + layerId + ')');\r\n defs.appendChild(this.maskElement);\r\n }\r\n if (this.viewData.length) {\r\n this.element.addRenderableComponent(this);\r\n }\r\n}\r\n\r\nMaskElement.prototype.getMaskProperty = function (pos) {\r\n return this.viewData[pos].prop;\r\n};\r\n\r\nMaskElement.prototype.renderFrame = function (isFirstFrame) {\r\n var finalMat = this.element.finalTransform.mat;\r\n var i;\r\n var len = this.masksProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.viewData[i].prop._mdf || isFirstFrame) {\r\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\r\n }\r\n if (this.viewData[i].op._mdf || isFirstFrame) {\r\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\r\n }\r\n if (this.masksProperties[i].mode !== 'n') {\r\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\r\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\r\n }\r\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\r\n var feMorph = this.storedData[i].expan;\r\n if (this.storedData[i].x.v < 0) {\r\n if (this.storedData[i].lastOperator !== 'erode') {\r\n this.storedData[i].lastOperator = 'erode';\r\n this.storedData[i].elem.setAttribute('filter', 'url(' + locationHref + '#' + this.storedData[i].filterId + ')');\r\n }\r\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\r\n } else {\r\n if (this.storedData[i].lastOperator !== 'dilate') {\r\n this.storedData[i].lastOperator = 'dilate';\r\n this.storedData[i].elem.setAttribute('filter', null);\r\n }\r\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nMaskElement.prototype.getMaskelement = function () {\r\n return this.maskElement;\r\n};\r\n\r\nMaskElement.prototype.createLayerSolidPath = function () {\r\n var path = 'M0,0 ';\r\n path += ' h' + this.globalData.compSize.w;\r\n path += ' v' + this.globalData.compSize.h;\r\n path += ' h-' + this.globalData.compSize.w;\r\n path += ' v-' + this.globalData.compSize.h + ' ';\r\n return path;\r\n};\r\n\r\nMaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\r\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\r\n var i;\r\n var len;\r\n len = pathNodes._length;\r\n for (i = 1; i < len; i += 1) {\r\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\r\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\r\n }\r\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\r\n if (pathNodes.c && len > 1) {\r\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\r\n }\r\n // pathNodes.__renderedString = pathString;\r\n\r\n if (viewData.lastPath !== pathString) {\r\n var pathShapeValue = '';\r\n if (viewData.elem) {\r\n if (pathNodes.c) {\r\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\r\n }\r\n viewData.elem.setAttribute('d', pathShapeValue);\r\n }\r\n viewData.lastPath = pathString;\r\n }\r\n};\r\n\r\nMaskElement.prototype.destroy = function () {\r\n this.element = null;\r\n this.globalData = null;\r\n this.maskElement = null;\r\n this.data = null;\r\n this.masksProperties = null;\r\n};\r\n\r\n/**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\r\n\r\nfunction HierarchyElement() {}\r\n\r\nHierarchyElement.prototype = {\r\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\r\n initHierarchy: function () {\r\n // element's parent list\r\n this.hierarchy = [];\r\n // if element is parent of another layer _isParent will be true\r\n this._isParent = false;\r\n this.checkParenting();\r\n },\r\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\r\n setHierarchy: function (hierarchy) {\r\n this.hierarchy = hierarchy;\r\n },\r\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\r\n setAsParent: function () {\r\n this._isParent = true;\r\n },\r\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\r\n checkParenting: function () {\r\n if (this.data.parent !== undefined) {\r\n this.comp.buildElementParenting(this, this.data.parent, []);\r\n }\r\n },\r\n};\r\n\r\n/**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\r\n\r\nfunction FrameElement() {}\r\n\r\nFrameElement.prototype = {\r\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\r\n initFrame: function () {\r\n // set to true when inpoint is rendered\r\n this._isFirstFrame = false;\r\n // list of animated properties\r\n this.dynamicProperties = [];\r\n // If layer has been modified in current tick this will be true\r\n this._mdf = false;\r\n },\r\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\r\n prepareProperties: function (num, isVisible) {\r\n var i;\r\n var len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (isVisible || (this._isParent && this.dynamicProperties[i].propType === 'transform')) {\r\n this.dynamicProperties[i].getValue();\r\n if (this.dynamicProperties[i]._mdf) {\r\n this.globalData._mdf = true;\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n },\r\n addDynamicProperty: function (prop) {\r\n if (this.dynamicProperties.indexOf(prop) === -1) {\r\n this.dynamicProperties.push(prop);\r\n }\r\n },\r\n};\r\n\r\n/* global TransformPropertyFactory, Matrix */\r\n\r\nfunction TransformElement() {}\r\n\r\nTransformElement.prototype = {\r\n initTransform: function () {\r\n this.finalTransform = {\r\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : { o: 0 },\r\n _matMdf: false,\r\n _opMdf: false,\r\n mat: new Matrix(),\r\n };\r\n if (this.data.ao) {\r\n this.finalTransform.mProp.autoOriented = true;\r\n }\r\n\r\n // TODO: check TYPE 11: Guided elements\r\n if (this.data.ty !== 11) {\r\n // this.createElements();\r\n }\r\n },\r\n renderTransform: function () {\r\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\r\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\r\n\r\n if (this.hierarchy) {\r\n var mat;\r\n var finalMat = this.finalTransform.mat;\r\n var i = 0;\r\n var len = this.hierarchy.length;\r\n // Checking if any of the transformation matrices in the hierarchy chain has changed.\r\n if (!this.finalTransform._matMdf) {\r\n while (i < len) {\r\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\r\n this.finalTransform._matMdf = true;\r\n break;\r\n }\r\n i += 1;\r\n }\r\n }\r\n\r\n if (this.finalTransform._matMdf) {\r\n mat = this.finalTransform.mProp.v.props;\r\n finalMat.cloneFromProps(mat);\r\n for (i = 0; i < len; i += 1) {\r\n mat = this.hierarchy[i].finalTransform.mProp.v.props;\r\n finalMat.transform(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5], mat[6], mat[7], mat[8], mat[9], mat[10], mat[11], mat[12], mat[13], mat[14], mat[15]);\r\n }\r\n }\r\n }\r\n },\r\n globalToLocal: function (pt) {\r\n var transforms = [];\r\n transforms.push(this.finalTransform);\r\n var flag = true;\r\n var comp = this.comp;\r\n while (flag) {\r\n if (comp.finalTransform) {\r\n if (comp.data.hasMask) {\r\n transforms.splice(0, 0, comp.finalTransform);\r\n }\r\n comp = comp.comp;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n var i;\r\n var len = transforms.length;\r\n var ptNew;\r\n for (i = 0; i < len; i += 1) {\r\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0);\r\n // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\r\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\r\n }\r\n return pt;\r\n },\r\n mHelper: new Matrix(),\r\n};\r\n\r\nfunction RenderableElement() {\r\n\r\n}\r\n\r\nRenderableElement.prototype = {\r\n initRenderable: function () {\r\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\r\n this.isInRange = false;\r\n // layer's display state\r\n this.hidden = false;\r\n // If layer's transparency equals 0, it can be hidden\r\n this.isTransparent = false;\r\n // list of animated components\r\n this.renderableComponents = [];\r\n },\r\n addRenderableComponent: function (component) {\r\n if (this.renderableComponents.indexOf(component) === -1) {\r\n this.renderableComponents.push(component);\r\n }\r\n },\r\n removeRenderableComponent: function (component) {\r\n if (this.renderableComponents.indexOf(component) !== -1) {\r\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\r\n }\r\n },\r\n prepareRenderableFrame: function (num) {\r\n this.checkLayerLimits(num);\r\n },\r\n checkTransparency: function () {\r\n if (this.finalTransform.mProp.o.v <= 0) {\r\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\r\n this.isTransparent = true;\r\n this.hide();\r\n }\r\n } else if (this.isTransparent) {\r\n this.isTransparent = false;\r\n this.show();\r\n }\r\n },\r\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\r\n checkLayerLimits: function (num) {\r\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\r\n if (this.isInRange !== true) {\r\n this.globalData._mdf = true;\r\n this._mdf = true;\r\n this.isInRange = true;\r\n this.show();\r\n }\r\n } else if (this.isInRange !== false) {\r\n this.globalData._mdf = true;\r\n this.isInRange = false;\r\n this.hide();\r\n }\r\n },\r\n renderRenderable: function () {\r\n var i;\r\n var len = this.renderableComponents.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\r\n }\r\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\r\n },\r\n sourceRectAtTime: function () {\r\n return {\r\n top: 0,\r\n left: 0,\r\n width: 100,\r\n height: 100,\r\n };\r\n },\r\n getLayerSize: function () {\r\n if (this.data.ty === 5) {\r\n return { w: this.data.textData.width, h: this.data.textData.height };\r\n }\r\n return { w: this.data.width, h: this.data.height };\r\n },\r\n};\r\n\r\n/* global extendPrototype, RenderableElement, createProxyFunction */\r\n\r\nfunction RenderableDOMElement() {}\r\n\r\n(function () {\r\n var _prototype = {\r\n initElement: function (data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n this.initRenderable();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n this.createContent();\r\n this.hide();\r\n },\r\n hide: function () {\r\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style.display = 'none';\r\n this.hidden = true;\r\n }\r\n },\r\n show: function () {\r\n if (this.isInRange && !this.isTransparent) {\r\n if (!this.data.hd) {\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style.display = 'block';\r\n }\r\n this.hidden = false;\r\n this._isFirstFrame = true;\r\n }\r\n },\r\n renderFrame: function () {\r\n // If it is exported as hidden (data.hd === true) no need to render\r\n // If it is not visible no need to render\r\n if (this.data.hd || this.hidden) {\r\n return;\r\n }\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.renderElement();\r\n this.renderInnerContent();\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n renderInnerContent: function () {},\r\n prepareFrame: function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n this.checkTransparency();\r\n },\r\n destroy: function () {\r\n this.innerElem = null;\r\n this.destroyBaseElement();\r\n },\r\n };\r\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\r\n}());\r\n\r\n/* exported ProcessedElement */\r\n\r\nfunction ProcessedElement(element, position) {\r\n this.elem = element;\r\n this.pos = position;\r\n}\r\n\r\n/* global createNS */\r\n\r\nfunction SVGStyleData(data, level) {\r\n this.data = data;\r\n this.type = data.ty;\r\n this.d = '';\r\n this.lvl = level;\r\n this._mdf = false;\r\n this.closed = data.hd === true;\r\n this.pElem = createNS('path');\r\n this.msElem = null;\r\n}\r\n\r\nSVGStyleData.prototype.reset = function () {\r\n this.d = '';\r\n this._mdf = false;\r\n};\r\n\r\nfunction SVGShapeData(transformers, level, shape) {\r\n this.caches = [];\r\n this.styles = [];\r\n this.transformers = transformers;\r\n this.lStr = '';\r\n this.sh = shape;\r\n this.lvl = level;\r\n // TODO find if there are some cases where _isAnimated can be false.\r\n // For now, since shapes add up with other shapes. They have to be calculated every time.\r\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\r\n this._isAnimated = !!shape.k;\r\n // TODO: commenting this for now since all shapes are animated\r\n var i = 0;\r\n var len = transformers.length;\r\n while (i < len) {\r\n if (transformers[i].mProps.dynamicProperties.length) {\r\n this._isAnimated = true;\r\n break;\r\n }\r\n i += 1;\r\n }\r\n}\r\n\r\nSVGShapeData.prototype.setAsAnimated = function () {\r\n this._isAnimated = true;\r\n};\r\n\r\n/* exported SVGTransformData */\r\n\r\nfunction SVGTransformData(mProps, op, container) {\r\n this.transform = {\r\n mProps: mProps,\r\n op: op,\r\n container: container,\r\n };\r\n this.elements = [];\r\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\r\n}\r\n\r\n/* global DashProperty, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction SVGStrokeStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\r\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\r\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\r\n this.style = styleOb;\r\n this._isAnimated = !!this._isAnimated;\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\r\n\r\n/* global PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction SVGFillStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\r\n this.style = styleOb;\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGFillStyleData);\r\n\r\n/* global PropertyFactory, degToRads, GradientProperty, createElementID, createNS, locationHref,\r\nextendPrototype, DynamicPropertyContainer, lineCapEnum, lineJoinEnum */\r\n\r\nfunction SVGGradientFillStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.initGradientData(elem, data, styleOb);\r\n}\r\n\r\nSVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\r\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\r\n this.h = PropertyFactory.getProp(elem, data.h || { k: 0 }, 0, 0.01, this);\r\n this.a = PropertyFactory.getProp(elem, data.a || { k: 0 }, 0, degToRads, this);\r\n this.g = new GradientProperty(elem, data.g, this);\r\n this.style = styleOb;\r\n this.stops = [];\r\n this.setGradientData(styleOb.pElem, data);\r\n this.setGradientOpacity(data, styleOb);\r\n this._isAnimated = !!this._isAnimated;\r\n};\r\n\r\nSVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\r\n var gradientId = createElementID();\r\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\r\n gfill.setAttribute('id', gradientId);\r\n gfill.setAttribute('spreadMethod', 'pad');\r\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n var stops = [];\r\n var stop;\r\n var j;\r\n var jLen;\r\n jLen = data.g.p * 4;\r\n for (j = 0; j < jLen; j += 4) {\r\n stop = createNS('stop');\r\n gfill.appendChild(stop);\r\n stops.push(stop);\r\n }\r\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + locationHref + '#' + gradientId + ')');\r\n this.gf = gfill;\r\n this.cst = stops;\r\n};\r\n\r\nSVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\r\n if (this.g._hasOpacity && !this.g._collapsable) {\r\n var stop;\r\n var j;\r\n var jLen;\r\n var mask = createNS('mask');\r\n var maskElement = createNS('path');\r\n mask.appendChild(maskElement);\r\n var opacityId = createElementID();\r\n var maskId = createElementID();\r\n mask.setAttribute('id', maskId);\r\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\r\n opFill.setAttribute('id', opacityId);\r\n opFill.setAttribute('spreadMethod', 'pad');\r\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\r\n var stops = this.stops;\r\n for (j = data.g.p * 4; j < jLen; j += 2) {\r\n stop = createNS('stop');\r\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\r\n opFill.appendChild(stop);\r\n stops.push(stop);\r\n }\r\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + locationHref + '#' + opacityId + ')');\r\n if (data.ty === 'gs') {\r\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\r\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\r\n if (data.lj === 1) {\r\n maskElement.setAttribute('stroke-miterlimit', data.ml);\r\n }\r\n }\r\n this.of = opFill;\r\n this.ms = mask;\r\n this.ost = stops;\r\n this.maskId = maskId;\r\n styleOb.msElem = maskElement;\r\n }\r\n};\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\r\n\r\n/* global PropertyFactory, DashProperty, extendPrototype, SVGGradientFillStyleData, DynamicPropertyContainer */\r\n\r\nfunction SVGGradientStrokeStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\r\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\r\n this.initGradientData(elem, data, styleOb);\r\n this._isAnimated = !!this._isAnimated;\r\n}\r\n\r\nextendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\r\n\r\n/* global createNS */\r\n/* exported ShapeGroupData */\r\n\r\nfunction ShapeGroupData() {\r\n this.it = [];\r\n this.prevViewData = [];\r\n this.gr = createNS('g');\r\n}\r\n\r\n/* global Matrix, buildShapeString, bmFloor */\r\n/* exported SVGElementsRenderer */\r\n\r\nvar SVGElementsRenderer = (function () {\r\n var _identityMatrix = new Matrix();\r\n var _matrixHelper = new Matrix();\r\n\r\n var ob = {\r\n createRenderFunction: createRenderFunction,\r\n };\r\n\r\n function createRenderFunction(data) {\r\n switch (data.ty) {\r\n case 'fl':\r\n return renderFill;\r\n case 'gf':\r\n return renderGradient;\r\n case 'gs':\r\n return renderGradientStroke;\r\n case 'st':\r\n return renderStroke;\r\n case 'sh':\r\n case 'el':\r\n case 'rc':\r\n case 'sr':\r\n return renderPath;\r\n case 'tr':\r\n return renderContentTransform;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n function renderContentTransform(styleData, itemData, isFirstFrame) {\r\n if (isFirstFrame || itemData.transform.op._mdf) {\r\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\r\n }\r\n if (isFirstFrame || itemData.transform.mProps._mdf) {\r\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\r\n }\r\n }\r\n\r\n function renderPath(styleData, itemData, isFirstFrame) {\r\n var j;\r\n var jLen;\r\n var pathStringTransformed;\r\n var redraw;\r\n var pathNodes;\r\n var l;\r\n var lLen = itemData.styles.length;\r\n var lvl = itemData.lvl;\r\n var paths;\r\n var mat;\r\n var props;\r\n var iterations;\r\n var k;\r\n for (l = 0; l < lLen; l += 1) {\r\n redraw = itemData.sh._mdf || isFirstFrame;\r\n if (itemData.styles[l].lvl < lvl) {\r\n mat = _matrixHelper.reset();\r\n iterations = lvl - itemData.styles[l].lvl;\r\n k = itemData.transformers.length - 1;\r\n while (!redraw && iterations > 0) {\r\n redraw = itemData.transformers[k].mProps._mdf || redraw;\r\n iterations -= 1;\r\n k -= 1;\r\n }\r\n if (redraw) {\r\n iterations = lvl - itemData.styles[l].lvl;\r\n k = itemData.transformers.length - 1;\r\n while (iterations > 0) {\r\n props = itemData.transformers[k].mProps.v.props;\r\n mat.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]);\r\n iterations -= 1;\r\n k -= 1;\r\n }\r\n }\r\n } else {\r\n mat = _identityMatrix;\r\n }\r\n paths = itemData.sh.paths;\r\n jLen = paths._length;\r\n if (redraw) {\r\n pathStringTransformed = '';\r\n for (j = 0; j < jLen; j += 1) {\r\n pathNodes = paths.shapes[j];\r\n if (pathNodes && pathNodes._length) {\r\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\r\n }\r\n }\r\n itemData.caches[l] = pathStringTransformed;\r\n } else {\r\n pathStringTransformed = itemData.caches[l];\r\n }\r\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\r\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\r\n }\r\n }\r\n\r\n function renderFill(styleData, itemData, isFirstFrame) {\r\n var styleElem = itemData.style;\r\n\r\n if (itemData.c._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\r\n }\r\n if (itemData.o._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\r\n }\r\n }\r\n\r\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\r\n renderGradient(styleData, itemData, isFirstFrame);\r\n renderStroke(styleData, itemData, isFirstFrame);\r\n }\r\n\r\n function renderGradient(styleData, itemData, isFirstFrame) {\r\n var gfill = itemData.gf;\r\n var hasOpacity = itemData.g._hasOpacity;\r\n var pt1 = itemData.s.v;\r\n var pt2 = itemData.e.v;\r\n\r\n if (itemData.o._mdf || isFirstFrame) {\r\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\r\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\r\n }\r\n if (itemData.s._mdf || isFirstFrame) {\r\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\r\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\r\n gfill.setAttribute(attr1, pt1[0]);\r\n gfill.setAttribute(attr2, pt1[1]);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute(attr1, pt1[0]);\r\n itemData.of.setAttribute(attr2, pt1[1]);\r\n }\r\n }\r\n var stops;\r\n var i;\r\n var len;\r\n var stop;\r\n if (itemData.g._cmdf || isFirstFrame) {\r\n stops = itemData.cst;\r\n var cValues = itemData.g.c;\r\n len = stops.length;\r\n for (i = 0; i < len; i += 1) {\r\n stop = stops[i];\r\n stop.setAttribute('offset', cValues[i * 4] + '%');\r\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\r\n }\r\n }\r\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\r\n var oValues = itemData.g.o;\r\n if (itemData.g._collapsable) {\r\n stops = itemData.cst;\r\n } else {\r\n stops = itemData.ost;\r\n }\r\n len = stops.length;\r\n for (i = 0; i < len; i += 1) {\r\n stop = stops[i];\r\n if (!itemData.g._collapsable) {\r\n stop.setAttribute('offset', oValues[i * 2] + '%');\r\n }\r\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\r\n }\r\n }\r\n if (styleData.t === 1) {\r\n if (itemData.e._mdf || isFirstFrame) {\r\n gfill.setAttribute('x2', pt2[0]);\r\n gfill.setAttribute('y2', pt2[1]);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('x2', pt2[0]);\r\n itemData.of.setAttribute('y2', pt2[1]);\r\n }\r\n }\r\n } else {\r\n var rad;\r\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\r\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n gfill.setAttribute('r', rad);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('r', rad);\r\n }\r\n }\r\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\r\n if (!rad) {\r\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n }\r\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\r\n\r\n var percent = itemData.h.v;\r\n if (percent >= 1) {\r\n percent = 0.99;\r\n } else if (percent <= -1) {\r\n percent = -0.99;\r\n }\r\n var dist = rad * percent;\r\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\r\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\r\n gfill.setAttribute('fx', x);\r\n gfill.setAttribute('fy', y);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('fx', x);\r\n itemData.of.setAttribute('fy', y);\r\n }\r\n }\r\n // gfill.setAttribute('fy','200');\r\n }\r\n }\r\n\r\n function renderStroke(styleData, itemData, isFirstFrame) {\r\n var styleElem = itemData.style;\r\n var d = itemData.d;\r\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\r\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\r\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\r\n }\r\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\r\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\r\n }\r\n if (itemData.o._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\r\n }\r\n if (itemData.w._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\r\n if (styleElem.msElem) {\r\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\r\n }\r\n }\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* global Matrix */\r\n\r\nfunction ShapeTransformManager() {\r\n this.sequences = {};\r\n this.sequenceList = [];\r\n this.transform_key_count = 0;\r\n}\r\n\r\nShapeTransformManager.prototype = {\r\n addTransformSequence: function (transforms) {\r\n var i;\r\n var len = transforms.length;\r\n var key = '_';\r\n for (i = 0; i < len; i += 1) {\r\n key += transforms[i].transform.key + '_';\r\n }\r\n var sequence = this.sequences[key];\r\n if (!sequence) {\r\n sequence = {\r\n transforms: [].concat(transforms),\r\n finalTransform: new Matrix(),\r\n _mdf: false,\r\n };\r\n this.sequences[key] = sequence;\r\n this.sequenceList.push(sequence);\r\n }\r\n return sequence;\r\n },\r\n processSequence: function (sequence, isFirstFrame) {\r\n var i = 0;\r\n var len = sequence.transforms.length;\r\n var _mdf = isFirstFrame;\r\n while (i < len && !isFirstFrame) {\r\n if (sequence.transforms[i].transform.mProps._mdf) {\r\n _mdf = true;\r\n break;\r\n }\r\n i += 1;\r\n }\r\n if (_mdf) {\r\n var props;\r\n sequence.finalTransform.reset();\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n props = sequence.transforms[i].transform.mProps.v.props;\r\n sequence.finalTransform.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]);\r\n }\r\n }\r\n sequence._mdf = _mdf;\r\n },\r\n processSequences: function (isFirstFrame) {\r\n var i;\r\n var len = this.sequenceList.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.processSequence(this.sequenceList[i], isFirstFrame);\r\n }\r\n },\r\n getNewKey: function () {\r\n this.transform_key_count += 1;\r\n return '_' + this.transform_key_count;\r\n },\r\n};\r\n\r\n/* global ShapePropertyFactory, SVGShapeData */\r\n\r\nfunction CVShapeData(element, data, styles, transformsManager) {\r\n this.styledShapes = [];\r\n this.tr = [0, 0, 0, 0, 0, 0];\r\n var ty = 4;\r\n if (data.ty === 'rc') {\r\n ty = 5;\r\n } else if (data.ty === 'el') {\r\n ty = 6;\r\n } else if (data.ty === 'sr') {\r\n ty = 7;\r\n }\r\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\r\n var i;\r\n var len = styles.length;\r\n var styledShape;\r\n for (i = 0; i < len; i += 1) {\r\n if (!styles[i].closed) {\r\n styledShape = {\r\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\r\n trNodes: [],\r\n };\r\n this.styledShapes.push(styledShape);\r\n styles[i].elements.push(styledShape);\r\n }\r\n }\r\n}\r\n\r\nCVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\r\n\r\n/* global LayerExpressionInterface, EffectsExpressionInterface, CompExpressionInterface, ShapeExpressionInterface,\r\nTextExpressionInterface, getBlendMode,createElementID, EffectsManager */\r\n\r\nfunction BaseElement() {\r\n}\r\n\r\nBaseElement.prototype = {\r\n checkMasks: function () {\r\n if (!this.data.hasMask) {\r\n return false;\r\n }\r\n var i = 0;\r\n var len = this.data.masksProperties.length;\r\n while (i < len) {\r\n if ((this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false)) {\r\n return true;\r\n }\r\n i += 1;\r\n }\r\n return false;\r\n },\r\n initExpressions: function () {\r\n this.layerInterface = LayerExpressionInterface(this);\r\n if (this.data.hasMask && this.maskManager) {\r\n this.layerInterface.registerMaskInterface(this.maskManager);\r\n }\r\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\r\n this.layerInterface.registerEffectsInterface(effectsInterface);\r\n\r\n if (this.data.ty === 0 || this.data.xt) {\r\n this.compInterface = CompExpressionInterface(this);\r\n } else if (this.data.ty === 4) {\r\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\r\n this.layerInterface.content = this.layerInterface.shapeInterface;\r\n } else if (this.data.ty === 5) {\r\n this.layerInterface.textInterface = TextExpressionInterface(this);\r\n this.layerInterface.text = this.layerInterface.textInterface;\r\n }\r\n },\r\n setBlendMode: function () {\r\n var blendModeValue = getBlendMode(this.data.bm);\r\n var elem = this.baseElement || this.layerElement;\r\n\r\n elem.style['mix-blend-mode'] = blendModeValue;\r\n },\r\n initBaseData: function (data, globalData, comp) {\r\n this.globalData = globalData;\r\n this.comp = comp;\r\n this.data = data;\r\n this.layerId = createElementID();\r\n\r\n // Stretch factor for old animations missing this property.\r\n if (!this.data.sr) {\r\n this.data.sr = 1;\r\n }\r\n // effects manager\r\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\r\n },\r\n getType: function () {\r\n return this.type;\r\n },\r\n sourceRectAtTime: function () {},\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HierarchyElement, FrameElement */\r\n\r\nfunction NullElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initFrame();\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n}\r\n\r\nNullElement.prototype.prepareFrame = function (num) {\r\n this.prepareProperties(num, true);\r\n};\r\n\r\nNullElement.prototype.renderFrame = function () {\r\n};\r\n\r\nNullElement.prototype.getBaseElement = function () {\r\n return null;\r\n};\r\n\r\nNullElement.prototype.destroy = function () {\r\n};\r\n\r\nNullElement.prototype.sourceRectAtTime = function () {\r\n};\r\n\r\nNullElement.prototype.hide = function () {\r\n};\r\n\r\nextendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\r\n\r\n/* global filtersFactory, featureSupport, filtersFactory, createElementID, createNS, MaskElement, SVGEffects, locationHref */\r\n\r\nfunction SVGBaseElement() {\r\n}\r\n\r\nSVGBaseElement.prototype = {\r\n initRendererElement: function () {\r\n this.layerElement = createNS('g');\r\n },\r\n createContainerElements: function () {\r\n this.matteElement = createNS('g');\r\n this.transformedElement = this.layerElement;\r\n this.maskedElement = this.layerElement;\r\n this._sizeChanged = false;\r\n var layerElementParent = null;\r\n // If this layer acts as a mask for the following layer\r\n var filId;\r\n var fil;\r\n var gg;\r\n if (this.data.td) {\r\n if (this.data.td == 3 || this.data.td == 1) { // eslint-disable-line eqeqeq\r\n var masker = createNS('mask');\r\n masker.setAttribute('id', this.layerId);\r\n masker.setAttribute('mask-type', this.data.td == 3 ? 'luminance' : 'alpha'); // eslint-disable-line eqeqeq\r\n masker.appendChild(this.layerElement);\r\n layerElementParent = masker;\r\n this.globalData.defs.appendChild(masker);\r\n // This is only for IE and Edge when mask if of type alpha\r\n if (!featureSupport.maskType && this.data.td == 1) { // eslint-disable-line eqeqeq\r\n masker.setAttribute('mask-type', 'luminance');\r\n filId = createElementID();\r\n fil = filtersFactory.createFilter(filId);\r\n this.globalData.defs.appendChild(fil);\r\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\r\n gg = createNS('g');\r\n gg.appendChild(this.layerElement);\r\n layerElementParent = gg;\r\n masker.appendChild(gg);\r\n gg.setAttribute('filter', 'url(' + locationHref + '#' + filId + ')');\r\n }\r\n } else if (this.data.td == 2) { // eslint-disable-line eqeqeq\r\n var maskGroup = createNS('mask');\r\n maskGroup.setAttribute('id', this.layerId);\r\n maskGroup.setAttribute('mask-type', 'alpha');\r\n var maskGrouper = createNS('g');\r\n maskGroup.appendChild(maskGrouper);\r\n filId = createElementID();\r\n fil = filtersFactory.createFilter(filId);\r\n /// /\r\n\r\n // This solution doesn't work on Android when meta tag with viewport attribute is set\r\n /* var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values','1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1');\r\n fil.appendChild(feColorMatrix); */\r\n /// /\r\n var feCTr = createNS('feComponentTransfer');\r\n feCTr.setAttribute('in', 'SourceGraphic');\r\n fil.appendChild(feCTr);\r\n var feFunc = createNS('feFuncA');\r\n feFunc.setAttribute('type', 'table');\r\n feFunc.setAttribute('tableValues', '1.0 0.0');\r\n feCTr.appendChild(feFunc);\r\n /// /\r\n this.globalData.defs.appendChild(fil);\r\n var alphaRect = createNS('rect');\r\n alphaRect.setAttribute('width', this.comp.data.w);\r\n alphaRect.setAttribute('height', this.comp.data.h);\r\n alphaRect.setAttribute('x', '0');\r\n alphaRect.setAttribute('y', '0');\r\n alphaRect.setAttribute('fill', '#ffffff');\r\n alphaRect.setAttribute('opacity', '0');\r\n maskGrouper.setAttribute('filter', 'url(' + locationHref + '#' + filId + ')');\r\n maskGrouper.appendChild(alphaRect);\r\n maskGrouper.appendChild(this.layerElement);\r\n layerElementParent = maskGrouper;\r\n if (!featureSupport.maskType) {\r\n maskGroup.setAttribute('mask-type', 'luminance');\r\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\r\n gg = createNS('g');\r\n maskGrouper.appendChild(alphaRect);\r\n gg.appendChild(this.layerElement);\r\n layerElementParent = gg;\r\n maskGrouper.appendChild(gg);\r\n }\r\n this.globalData.defs.appendChild(maskGroup);\r\n }\r\n } else if (this.data.tt) {\r\n this.matteElement.appendChild(this.layerElement);\r\n layerElementParent = this.matteElement;\r\n this.baseElement = this.matteElement;\r\n } else {\r\n this.baseElement = this.layerElement;\r\n }\r\n if (this.data.ln) {\r\n this.layerElement.setAttribute('id', this.data.ln);\r\n }\r\n if (this.data.cl) {\r\n this.layerElement.setAttribute('class', this.data.cl);\r\n }\r\n // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\r\n if (this.data.ty === 0 && !this.data.hd) {\r\n var cp = createNS('clipPath');\r\n var pt = createNS('path');\r\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\r\n var clipId = createElementID();\r\n cp.setAttribute('id', clipId);\r\n cp.appendChild(pt);\r\n this.globalData.defs.appendChild(cp);\r\n\r\n if (this.checkMasks()) {\r\n var cpGroup = createNS('g');\r\n cpGroup.setAttribute('clip-path', 'url(' + locationHref + '#' + clipId + ')');\r\n cpGroup.appendChild(this.layerElement);\r\n this.transformedElement = cpGroup;\r\n if (layerElementParent) {\r\n layerElementParent.appendChild(this.transformedElement);\r\n } else {\r\n this.baseElement = this.transformedElement;\r\n }\r\n } else {\r\n this.layerElement.setAttribute('clip-path', 'url(' + locationHref + '#' + clipId + ')');\r\n }\r\n }\r\n if (this.data.bm !== 0) {\r\n this.setBlendMode();\r\n }\r\n },\r\n renderElement: function () {\r\n if (this.finalTransform._matMdf) {\r\n this.transformedElement.setAttribute('transform', this.finalTransform.mat.to2dCSS());\r\n }\r\n if (this.finalTransform._opMdf) {\r\n this.transformedElement.setAttribute('opacity', this.finalTransform.mProp.o.v);\r\n }\r\n },\r\n destroyBaseElement: function () {\r\n this.layerElement = null;\r\n this.matteElement = null;\r\n this.maskManager.destroy();\r\n },\r\n getBaseElement: function () {\r\n if (this.data.hd) {\r\n return null;\r\n }\r\n return this.baseElement;\r\n },\r\n createRenderableComponents: function () {\r\n this.maskManager = new MaskElement(this.data, this, this.globalData);\r\n this.renderableEffectsManager = new SVGEffects(this);\r\n },\r\n setMatte: function (id) {\r\n if (!this.matteElement) {\r\n return;\r\n }\r\n this.matteElement.setAttribute('mask', 'url(' + locationHref + '#' + id + ')');\r\n },\r\n};\r\n\r\n/* global ProcessedElement */\r\n\r\nfunction IShapeElement() {\r\n}\r\n\r\nIShapeElement.prototype = {\r\n addShapeToModifiers: function (data) {\r\n var i;\r\n var len = this.shapeModifiers.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.shapeModifiers[i].addShape(data);\r\n }\r\n },\r\n isShapeInAnimatedModifiers: function (data) {\r\n var i = 0;\r\n var len = this.shapeModifiers.length;\r\n while (i < len) {\r\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n renderModifiers: function () {\r\n if (!this.shapeModifiers.length) {\r\n return;\r\n }\r\n var i;\r\n var len = this.shapes.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.shapes[i].sh.reset();\r\n }\r\n\r\n len = this.shapeModifiers.length;\r\n var shouldBreakProcess;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame);\r\n // workaround to fix cases where a repeater resets the shape so the following processes get called twice\r\n // TODO: find a better solution for this\r\n if (shouldBreakProcess) {\r\n break;\r\n }\r\n }\r\n },\r\n\r\n searchProcessedElement: function (elem) {\r\n var elements = this.processedElements;\r\n var i = 0;\r\n var len = elements.length;\r\n while (i < len) {\r\n if (elements[i].elem === elem) {\r\n return elements[i].pos;\r\n }\r\n i += 1;\r\n }\r\n return 0;\r\n },\r\n addProcessedElement: function (elem, pos) {\r\n var elements = this.processedElements;\r\n var i = elements.length;\r\n while (i) {\r\n i -= 1;\r\n if (elements[i].elem === elem) {\r\n elements[i].pos = pos;\r\n return;\r\n }\r\n }\r\n elements.push(new ProcessedElement(elem, pos));\r\n },\r\n prepareFrame: function (num) {\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n },\r\n};\r\n\r\n/* global TextProperty, TextAnimatorProperty, buildShapeString, LetterProps */\r\n\r\nfunction ITextElement() {\r\n}\r\n\r\nITextElement.prototype.initElement = function (data, globalData, comp) {\r\n this.lettersChangedFlag = true;\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\r\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n this.initRenderable();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n this.createContent();\r\n this.hide();\r\n this.textAnimator.searchProperties(this.dynamicProperties);\r\n};\r\n\r\nITextElement.prototype.prepareFrame = function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\r\n this.buildNewText();\r\n this.textProperty._isFirstFrame = false;\r\n this.textProperty._mdf = false;\r\n }\r\n};\r\n\r\nITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\r\n var j;\r\n var jLen = shapes.length;\r\n var pathNodes;\r\n var shapeStr = '';\r\n for (j = 0; j < jLen; j += 1) {\r\n pathNodes = shapes[j].ks.k;\r\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\r\n }\r\n return shapeStr;\r\n};\r\n\r\nITextElement.prototype.updateDocumentData = function (newData, index) {\r\n this.textProperty.updateDocumentData(newData, index);\r\n};\r\n\r\nITextElement.prototype.canResizeFont = function (_canResize) {\r\n this.textProperty.canResizeFont(_canResize);\r\n};\r\n\r\nITextElement.prototype.setMinimumFontSize = function (_fontSize) {\r\n this.textProperty.setMinimumFontSize(_fontSize);\r\n};\r\n\r\nITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\r\n if (documentData.ps) {\r\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\r\n }\r\n matrixHelper.translate(0, -documentData.ls, 0);\r\n switch (documentData.j) {\r\n case 1:\r\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\r\n break;\r\n case 2:\r\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\r\n break;\r\n default:\r\n break;\r\n }\r\n matrixHelper.translate(xPos, yPos, 0);\r\n};\r\n\r\nITextElement.prototype.buildColor = function (colorData) {\r\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\r\n};\r\n\r\nITextElement.prototype.emptyProp = new LetterProps();\r\n\r\nITextElement.prototype.destroy = function () {\r\n\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement */\r\n\r\nfunction ICompElement() {}\r\n\r\nextendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\r\n\r\nICompElement.prototype.initElement = function (data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initTransform(data, globalData, comp);\r\n this.initRenderable();\r\n this.initHierarchy();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n if (this.data.xt || !globalData.progressiveLoad) {\r\n this.buildAllItems();\r\n }\r\n this.hide();\r\n};\r\n\r\n/* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n}; */\r\n\r\nICompElement.prototype.prepareFrame = function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n if (!this.isInRange && !this.data.xt) {\r\n return;\r\n }\r\n\r\n if (!this.tm._placeholder) {\r\n var timeRemapped = this.tm.v;\r\n if (timeRemapped === this.data.op) {\r\n timeRemapped = this.data.op - 1;\r\n }\r\n this.renderedFrame = timeRemapped;\r\n } else {\r\n this.renderedFrame = num / this.data.sr;\r\n }\r\n var i;\r\n var len = this.elements.length;\r\n if (!this.completeLayers) {\r\n this.checkLayers(this.renderedFrame);\r\n }\r\n // This iteration needs to be backwards because of how expressions connect between each other\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\r\n if (this.elements[i]._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.renderInnerContent = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.setElements = function (elems) {\r\n this.elements = elems;\r\n};\r\n\r\nICompElement.prototype.getElements = function () {\r\n return this.elements;\r\n};\r\n\r\nICompElement.prototype.destroyElements = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.destroy = function () {\r\n this.destroyElements();\r\n this.destroyBaseElement();\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, createNS */\r\n\r\nfunction IImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initElement(data, globalData, comp);\r\n this.sourceRect = {\r\n top: 0, left: 0, width: this.assetData.w, height: this.assetData.h,\r\n };\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\r\n\r\nIImageElement.prototype.createContent = function () {\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n\r\n this.innerElem = createNS('image');\r\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\r\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\r\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\r\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\r\n\r\n this.layerElement.appendChild(this.innerElem);\r\n};\r\n\r\nIImageElement.prototype.sourceRectAtTime = function () {\r\n return this.sourceRect;\r\n};\r\n\r\n/* global extendPrototype, IImageElement, createNS */\r\n\r\nfunction ISolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([IImageElement], ISolidElement);\r\n\r\nISolidElement.prototype.createContent = function () {\r\n var rect = createNS('rect');\r\n /// /rect.style.width = this.data.sw;\r\n /// /rect.style.height = this.data.sh;\r\n /// /rect.style.fill = this.data.sc;\r\n rect.setAttribute('width', this.data.sw);\r\n rect.setAttribute('height', this.data.sh);\r\n rect.setAttribute('fill', this.data.sc);\r\n this.layerElement.appendChild(rect);\r\n};\r\n\r\n/* global PropertyFactory, extendPrototype, RenderableElement, BaseElement, FrameElement */\r\n\r\nfunction AudioElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initRenderable();\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initBaseData(data, globalData, comp);\r\n this._isPlaying = false;\r\n this._canPlay = false;\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n this.audio = this.globalData.audioController.createAudio(assetPath);\r\n this._currentTime = 0;\r\n this.globalData.audioController.addAudio(this);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nAudioElement.prototype.prepareFrame = function (num) {\r\n this.prepareRenderableFrame(num, true);\r\n this.prepareProperties(num, true);\r\n if (!this.tm._placeholder) {\r\n var timeRemapped = this.tm.v;\r\n this._currentTime = timeRemapped;\r\n } else {\r\n this._currentTime = num / this.data.sr;\r\n }\r\n};\r\n\r\nextendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\r\n\r\nAudioElement.prototype.renderFrame = function () {\r\n if (this.isInRange && this._canPlay) {\r\n if (!this._isPlaying) {\r\n this.audio.play();\r\n this.audio.seek(this._currentTime / this.globalData.frameRate);\r\n this._isPlaying = true;\r\n } else if (!this.audio.playing()\r\n || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1\r\n ) {\r\n this.audio.seek(this._currentTime / this.globalData.frameRate);\r\n }\r\n }\r\n};\r\n\r\nAudioElement.prototype.show = function () {\r\n // this.audio.play()\r\n};\r\n\r\nAudioElement.prototype.hide = function () {\r\n this.audio.pause();\r\n this._isPlaying = false;\r\n};\r\n\r\nAudioElement.prototype.pause = function () {\r\n this.audio.pause();\r\n this._isPlaying = false;\r\n this._canPlay = false;\r\n};\r\n\r\nAudioElement.prototype.resume = function () {\r\n this._canPlay = true;\r\n};\r\n\r\nAudioElement.prototype.setRate = function (rateValue) {\r\n this.audio.rate(rateValue);\r\n};\r\n\r\nAudioElement.prototype.volume = function (volumeValue) {\r\n this.audio.volume(volumeValue);\r\n};\r\n\r\nAudioElement.prototype.getBaseElement = function () {\r\n return null;\r\n};\r\n\r\nAudioElement.prototype.destroy = function () {\r\n};\r\n\r\nAudioElement.prototype.sourceRectAtTime = function () {\r\n};\r\n\r\nAudioElement.prototype.initExpressions = function () {\r\n};\r\n\r\n/* global extendPrototype, RenderableElement, BaseElement, FrameElement, FootageInterface */\r\n\r\nfunction FootageElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initRenderable();\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\r\n this.initBaseData(data, globalData, comp);\r\n}\r\n\r\nFootageElement.prototype.prepareFrame = function () {\r\n};\r\n\r\nextendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\r\n\r\nFootageElement.prototype.getBaseElement = function () {\r\n return null;\r\n};\r\n\r\nFootageElement.prototype.renderFrame = function () {\r\n};\r\n\r\nFootageElement.prototype.destroy = function () {\r\n};\r\n\r\nFootageElement.prototype.initExpressions = function () {\r\n this.layerInterface = FootageInterface(this);\r\n};\r\n\r\nFootageElement.prototype.getFootageData = function () {\r\n return this.footageData;\r\n};\r\n\r\n/* global createSizedArray, PropertyFactory, extendPrototype, SVGRenderer, ICompElement, SVGBaseElement */\r\n\r\nfunction SVGCompElement(data, globalData, comp) {\r\n this.layers = data.layers;\r\n this.supports3d = true;\r\n this.completeLayers = false;\r\n this.pendingElements = [];\r\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\r\n // this.layerElement = createNS('g');\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nextendPrototype([SVGRenderer, ICompElement, SVGBaseElement], SVGCompElement);\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement,\r\nRenderableDOMElement, ITextElement, createSizedArray, createNS */\r\n\r\nfunction SVGTextLottieElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.renderType = 'svg';\r\n this.initElement(data, globalData, comp);\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\r\n\r\nSVGTextLottieElement.prototype.createContent = function () {\r\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\r\n this.textContainer = createNS('text');\r\n }\r\n};\r\n\r\nSVGTextLottieElement.prototype.buildTextContents = function (textArray) {\r\n var i = 0;\r\n var len = textArray.length;\r\n var textContents = [];\r\n var currentTextContent = '';\r\n while (i < len) {\r\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\r\n textContents.push(currentTextContent);\r\n currentTextContent = '';\r\n } else {\r\n currentTextContent += textArray[i];\r\n }\r\n i += 1;\r\n }\r\n textContents.push(currentTextContent);\r\n return textContents;\r\n};\r\n\r\nSVGTextLottieElement.prototype.buildNewText = function () {\r\n var i;\r\n var len;\r\n\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\r\n if (documentData.fc) {\r\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\r\n } else {\r\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\r\n }\r\n if (documentData.sc) {\r\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\r\n this.layerElement.setAttribute('stroke-width', documentData.sw);\r\n }\r\n this.layerElement.setAttribute('font-size', documentData.finalSize);\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n if (fontData.fClass) {\r\n this.layerElement.setAttribute('class', fontData.fClass);\r\n } else {\r\n this.layerElement.setAttribute('font-family', fontData.fFamily);\r\n var fWeight = documentData.fWeight;\r\n var fStyle = documentData.fStyle;\r\n this.layerElement.setAttribute('font-style', fStyle);\r\n this.layerElement.setAttribute('font-weight', fWeight);\r\n }\r\n this.layerElement.setAttribute('aria-label', documentData.t);\r\n\r\n var letters = documentData.l || [];\r\n var usesGlyphs = !!this.globalData.fontManager.chars;\r\n len = letters.length;\r\n\r\n var tSpan;\r\n var matrixHelper = this.mHelper;\r\n var shapes;\r\n var shapeStr = '';\r\n var singleShape = this.data.singleShape;\r\n var xPos = 0;\r\n var yPos = 0;\r\n var firstLine = true;\r\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\r\n if (singleShape && !usesGlyphs && !documentData.sz) {\r\n var tElement = this.textContainer;\r\n var justify = 'start';\r\n switch (documentData.j) {\r\n case 1:\r\n justify = 'end';\r\n break;\r\n case 2:\r\n justify = 'middle';\r\n break;\r\n default:\r\n justify = 'start';\r\n break;\r\n }\r\n tElement.setAttribute('text-anchor', justify);\r\n tElement.setAttribute('letter-spacing', trackingOffset);\r\n var textContent = this.buildTextContents(documentData.finalText);\r\n len = textContent.length;\r\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\r\n for (i = 0; i < len; i += 1) {\r\n tSpan = this.textSpans[i] || createNS('tspan');\r\n tSpan.textContent = textContent[i];\r\n tSpan.setAttribute('x', 0);\r\n tSpan.setAttribute('y', yPos);\r\n tSpan.style.display = 'inherit';\r\n tElement.appendChild(tSpan);\r\n this.textSpans[i] = tSpan;\r\n yPos += documentData.finalLineHeight;\r\n }\r\n\r\n this.layerElement.appendChild(tElement);\r\n } else {\r\n var cachedSpansLength = this.textSpans.length;\r\n var shapeData;\r\n var charData;\r\n for (i = 0; i < len; i += 1) {\r\n if (!usesGlyphs || !singleShape || i === 0) {\r\n tSpan = cachedSpansLength > i ? this.textSpans[i] : createNS(usesGlyphs ? 'path' : 'text');\r\n if (cachedSpansLength <= i) {\r\n tSpan.setAttribute('stroke-linecap', 'butt');\r\n tSpan.setAttribute('stroke-linejoin', 'round');\r\n tSpan.setAttribute('stroke-miterlimit', '4');\r\n this.textSpans[i] = tSpan;\r\n this.layerElement.appendChild(tSpan);\r\n }\r\n tSpan.style.display = 'inherit';\r\n }\r\n\r\n matrixHelper.reset();\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n if (singleShape) {\r\n if (letters[i].n) {\r\n xPos = -trackingOffset;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n firstLine = false;\r\n }\r\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n xPos += letters[i].l || 0;\r\n // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\r\n xPos += trackingOffset;\r\n }\r\n if (usesGlyphs) {\r\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n shapeData = (charData && charData.data) || {};\r\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\r\n if (!singleShape) {\r\n tSpan.setAttribute('d', this.createPathShape(matrixHelper, shapes));\r\n } else {\r\n shapeStr += this.createPathShape(matrixHelper, shapes);\r\n }\r\n } else {\r\n if (singleShape) {\r\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\r\n }\r\n tSpan.textContent = letters[i].val;\r\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\r\n }\r\n //\r\n }\r\n if (singleShape && tSpan) {\r\n tSpan.setAttribute('d', shapeStr);\r\n }\r\n }\r\n while (i < this.textSpans.length) {\r\n this.textSpans[i].style.display = 'none';\r\n i += 1;\r\n }\r\n\r\n this._sizeChanged = true;\r\n};\r\n\r\nSVGTextLottieElement.prototype.sourceRectAtTime = function () {\r\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\r\n this.renderInnerContent();\r\n if (this._sizeChanged) {\r\n this._sizeChanged = false;\r\n var textBox = this.layerElement.getBBox();\r\n this.bbox = {\r\n top: textBox.y,\r\n left: textBox.x,\r\n width: textBox.width,\r\n height: textBox.height,\r\n };\r\n }\r\n return this.bbox;\r\n};\r\n\r\nSVGTextLottieElement.prototype.renderInnerContent = function () {\r\n if (!this.data.singleShape) {\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\r\n this._sizeChanged = true;\r\n var i;\r\n var len;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n\r\n var letters = this.textProperty.currentData.l;\r\n\r\n len = letters.length;\r\n var renderedLetter;\r\n var textSpan;\r\n for (i = 0; i < len; i += 1) {\r\n if (!letters[i].n) {\r\n renderedLetter = renderedLetters[i];\r\n textSpan = this.textSpans[i];\r\n if (renderedLetter._mdf.m) {\r\n textSpan.setAttribute('transform', renderedLetter.m);\r\n }\r\n if (renderedLetter._mdf.o) {\r\n textSpan.setAttribute('opacity', renderedLetter.o);\r\n }\r\n if (renderedLetter._mdf.sw) {\r\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\r\n }\r\n if (renderedLetter._mdf.sc) {\r\n textSpan.setAttribute('stroke', renderedLetter.sc);\r\n }\r\n if (renderedLetter._mdf.fc) {\r\n textSpan.setAttribute('fill', renderedLetter.fc);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement,\r\nFrameElement, RenderableDOMElement, Matrix, SVGStyleData, SVGStrokeStyleData, SVGFillStyleData,\r\nSVGGradientFillStyleData, SVGGradientStrokeStyleData, locationHref, getBlendMode, ShapeGroupData,\r\nTransformPropertyFactory, SVGTransformData, ShapePropertyFactory, SVGShapeData, SVGElementsRenderer, ShapeModifiers,\r\nlineCapEnum, lineJoinEnum */\r\n\r\nfunction SVGShapeElement(data, globalData, comp) {\r\n // List of drawable elements\r\n this.shapes = [];\r\n // Full shape data\r\n this.shapesData = data.shapes;\r\n // List of styles that will be applied to shapes\r\n this.stylesList = [];\r\n // List of modifiers that will be applied to shapes\r\n this.shapeModifiers = [];\r\n // List of items in shape tree\r\n this.itemsData = [];\r\n // List of items in previous shape tree\r\n this.processedElements = [];\r\n // List of animated components\r\n this.animatedContents = [];\r\n this.initElement(data, globalData, comp);\r\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n // List of elements that have been created\r\n this.prevViewData = [];\r\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\r\n\r\nSVGShapeElement.prototype.initSecondaryElement = function () {\r\n};\r\n\r\nSVGShapeElement.prototype.identityMatrix = new Matrix();\r\n\r\nSVGShapeElement.prototype.buildExpressionInterface = function () {};\r\n\r\nSVGShapeElement.prototype.createContent = function () {\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\r\n this.filterUniqueShapes();\r\n};\r\n\r\n/*\r\nThis method searches for multiple shapes that affect a single element and one of them is animated\r\n*/\r\nSVGShapeElement.prototype.filterUniqueShapes = function () {\r\n var i;\r\n var len = this.shapes.length;\r\n var shape;\r\n var j;\r\n var jLen = this.stylesList.length;\r\n var style;\r\n var tempShapes = [];\r\n var areAnimated = false;\r\n for (j = 0; j < jLen; j += 1) {\r\n style = this.stylesList[j];\r\n areAnimated = false;\r\n tempShapes.length = 0;\r\n for (i = 0; i < len; i += 1) {\r\n shape = this.shapes[i];\r\n if (shape.styles.indexOf(style) !== -1) {\r\n tempShapes.push(shape);\r\n areAnimated = shape._isAnimated || areAnimated;\r\n }\r\n }\r\n if (tempShapes.length > 1 && areAnimated) {\r\n this.setShapesAsAnimated(tempShapes);\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\r\n var i;\r\n var len = shapes.length;\r\n for (i = 0; i < len; i += 1) {\r\n shapes[i].setAsAnimated();\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.createStyleElement = function (data, level) {\r\n // TODO: prevent drawing of hidden styles\r\n var elementData;\r\n var styleOb = new SVGStyleData(data, level);\r\n\r\n var pathElement = styleOb.pElem;\r\n if (data.ty === 'st') {\r\n elementData = new SVGStrokeStyleData(this, data, styleOb);\r\n } else if (data.ty === 'fl') {\r\n elementData = new SVGFillStyleData(this, data, styleOb);\r\n } else if (data.ty === 'gf' || data.ty === 'gs') {\r\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\r\n elementData = new GradientConstructor(this, data, styleOb);\r\n this.globalData.defs.appendChild(elementData.gf);\r\n if (elementData.maskId) {\r\n this.globalData.defs.appendChild(elementData.ms);\r\n this.globalData.defs.appendChild(elementData.of);\r\n pathElement.setAttribute('mask', 'url(' + locationHref + '#' + elementData.maskId + ')');\r\n }\r\n }\r\n\r\n if (data.ty === 'st' || data.ty === 'gs') {\r\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\r\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\r\n pathElement.setAttribute('fill-opacity', '0');\r\n if (data.lj === 1) {\r\n pathElement.setAttribute('stroke-miterlimit', data.ml);\r\n }\r\n }\r\n\r\n if (data.r === 2) {\r\n pathElement.setAttribute('fill-rule', 'evenodd');\r\n }\r\n\r\n if (data.ln) {\r\n pathElement.setAttribute('id', data.ln);\r\n }\r\n if (data.cl) {\r\n pathElement.setAttribute('class', data.cl);\r\n }\r\n if (data.bm) {\r\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n }\r\n this.stylesList.push(styleOb);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createGroupElement = function (data) {\r\n var elementData = new ShapeGroupData();\r\n if (data.ln) {\r\n elementData.gr.setAttribute('id', data.ln);\r\n }\r\n if (data.cl) {\r\n elementData.gr.setAttribute('class', data.cl);\r\n }\r\n if (data.bm) {\r\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n }\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createTransformElement = function (data, container) {\r\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\r\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\r\n var ty = 4;\r\n if (data.ty === 'rc') {\r\n ty = 5;\r\n } else if (data.ty === 'el') {\r\n ty = 6;\r\n } else if (data.ty === 'sr') {\r\n ty = 7;\r\n }\r\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\r\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\r\n this.shapes.push(elementData);\r\n this.addShapeToModifiers(elementData);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\r\n var i = 0;\r\n var len = this.animatedContents.length;\r\n while (i < len) {\r\n if (this.animatedContents[i].element === element) {\r\n return;\r\n }\r\n i += 1;\r\n }\r\n this.animatedContents.push({\r\n fn: SVGElementsRenderer.createRenderFunction(data),\r\n element: element,\r\n data: data,\r\n });\r\n};\r\n\r\nSVGShapeElement.prototype.setElementStyles = function (elementData) {\r\n var arr = elementData.styles;\r\n var j;\r\n var jLen = this.stylesList.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (!this.stylesList[j].closed) {\r\n arr.push(this.stylesList[j]);\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.reloadShapes = function () {\r\n this._isFirstFrame = true;\r\n var i;\r\n var len = this.itemsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.prevViewData[i] = this.itemsData[i];\r\n }\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\r\n this.filterUniqueShapes();\r\n len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n }\r\n this.renderModifiers();\r\n};\r\n\r\nSVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\r\n var ownTransformers = [].concat(transformers);\r\n var i;\r\n var len = arr.length - 1;\r\n var j;\r\n var jLen;\r\n var ownStyles = [];\r\n var ownModifiers = [];\r\n var currentTransform;\r\n var modifier;\r\n var processedPos;\r\n for (i = len; i >= 0; i -= 1) {\r\n processedPos = this.searchProcessedElement(arr[i]);\r\n if (!processedPos) {\r\n arr[i]._render = render;\r\n } else {\r\n itemsData[i] = prevViewData[processedPos - 1];\r\n }\r\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createStyleElement(arr[i], level);\r\n } else {\r\n itemsData[i].style.closed = false;\r\n }\r\n if (arr[i]._render) {\r\n if (itemsData[i].style.pElem.parentNode !== container) {\r\n container.appendChild(itemsData[i].style.pElem);\r\n }\r\n }\r\n ownStyles.push(itemsData[i].style);\r\n } else if (arr[i].ty === 'gr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createGroupElement(arr[i]);\r\n } else {\r\n jLen = itemsData[i].it.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\r\n }\r\n }\r\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\r\n if (arr[i]._render) {\r\n if (itemsData[i].gr.parentNode !== container) {\r\n container.appendChild(itemsData[i].gr);\r\n }\r\n }\r\n } else if (arr[i].ty === 'tr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createTransformElement(arr[i], container);\r\n }\r\n currentTransform = itemsData[i].transform;\r\n ownTransformers.push(currentTransform);\r\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\r\n }\r\n this.setElementStyles(itemsData[i]);\r\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n modifier.init(this, arr[i]);\r\n itemsData[i] = modifier;\r\n this.shapeModifiers.push(modifier);\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = false;\r\n }\r\n ownModifiers.push(modifier);\r\n } else if (arr[i].ty === 'rp') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n itemsData[i] = modifier;\r\n modifier.init(this, arr, i, itemsData);\r\n this.shapeModifiers.push(modifier);\r\n render = false;\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = true;\r\n }\r\n ownModifiers.push(modifier);\r\n }\r\n this.addProcessedElement(arr[i], i + 1);\r\n }\r\n len = ownStyles.length;\r\n for (i = 0; i < len; i += 1) {\r\n ownStyles[i].closed = true;\r\n }\r\n len = ownModifiers.length;\r\n for (i = 0; i < len; i += 1) {\r\n ownModifiers[i].closed = true;\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.renderInnerContent = function () {\r\n this.renderModifiers();\r\n var i;\r\n var len = this.stylesList.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.stylesList[i].reset();\r\n }\r\n this.renderShape();\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\r\n if (this.stylesList[i].msElem) {\r\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d);\r\n // Adding M0 0 fixes same mask bug on all browsers\r\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\r\n }\r\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.renderShape = function () {\r\n var i;\r\n var len = this.animatedContents.length;\r\n var animatedContent;\r\n for (i = 0; i < len; i += 1) {\r\n animatedContent = this.animatedContents[i];\r\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\r\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.destroy = function () {\r\n this.destroyBaseElement();\r\n this.shapesData = null;\r\n this.itemsData = null;\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGTintFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\r\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', 'f1');\r\n filter.appendChild(feColorMatrix);\r\n feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', 'f2');\r\n filter.appendChild(feColorMatrix);\r\n this.matrixFilter = feColorMatrix;\r\n if (filterManager.effectElements[2].p.v !== 100 || filterManager.effectElements[2].p.k) {\r\n var feMerge = createNS('feMerge');\r\n filter.appendChild(feMerge);\r\n var feMergeNode;\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in', 'SourceGraphic');\r\n feMerge.appendChild(feMergeNode);\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in', 'f2');\r\n feMerge.appendChild(feMergeNode);\r\n }\r\n}\r\n\r\nSVGTintFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var colorBlack = this.filterManager.effectElements[0].p.v;\r\n var colorWhite = this.filterManager.effectElements[1].p.v;\r\n var opacity = this.filterManager.effectElements[2].p.v / 100;\r\n this.matrixFilter.setAttribute('values', (colorWhite[0] - colorBlack[0]) + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 ' + opacity + ' 0');\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGFillFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\r\n filter.appendChild(feColorMatrix);\r\n this.matrixFilter = feColorMatrix;\r\n}\r\nSVGFillFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var color = this.filterManager.effectElements[2].p.v;\r\n var opacity = this.filterManager.effectElements[6].p.v;\r\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGGaussianBlurEffect(filter, filterManager) {\r\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\r\n filter.setAttribute('x', '-100%');\r\n filter.setAttribute('y', '-100%');\r\n filter.setAttribute('width', '300%');\r\n filter.setAttribute('height', '300%');\r\n\r\n this.filterManager = filterManager;\r\n var feGaussianBlur = createNS('feGaussianBlur');\r\n filter.appendChild(feGaussianBlur);\r\n this.feGaussianBlur = feGaussianBlur;\r\n}\r\n\r\nSVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n // Empirical value, matching AE's blur appearance.\r\n var kBlurrinessToSigma = 0.3;\r\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma;\r\n\r\n // Dimensions mapping:\r\n //\r\n // 1 -> horizontal & vertical\r\n // 2 -> horizontal only\r\n // 3 -> vertical only\r\n //\r\n var dimensions = this.filterManager.effectElements[1].p.v;\r\n var sigmaX = (dimensions == 3) ? 0 : sigma; // eslint-disable-line eqeqeq\r\n var sigmaY = (dimensions == 2) ? 0 : sigma; // eslint-disable-line eqeqeq\r\n\r\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY);\r\n\r\n // Repeat edges mapping:\r\n //\r\n // 0 -> off -> duplicate\r\n // 1 -> on -> wrap\r\n var edgeMode = (this.filterManager.effectElements[2].p.v == 1) ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\r\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\r\n }\r\n};\r\n\r\n/* global createNS, createElementID, locationHref, bmFloor */\r\n\r\nfunction SVGStrokeEffect(elem, filterManager) {\r\n this.initialized = false;\r\n this.filterManager = filterManager;\r\n this.elem = elem;\r\n this.paths = [];\r\n}\r\n\r\nSVGStrokeEffect.prototype.initialize = function () {\r\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\r\n var path;\r\n var groupPath;\r\n var i;\r\n var len;\r\n if (this.filterManager.effectElements[1].p.v === 1) {\r\n len = this.elem.maskManager.masksProperties.length;\r\n i = 0;\r\n } else {\r\n i = this.filterManager.effectElements[0].p.v - 1;\r\n len = i + 1;\r\n }\r\n groupPath = createNS('g');\r\n groupPath.setAttribute('fill', 'none');\r\n groupPath.setAttribute('stroke-linecap', 'round');\r\n groupPath.setAttribute('stroke-dashoffset', 1);\r\n for (i; i < len; i += 1) {\r\n path = createNS('path');\r\n groupPath.appendChild(path);\r\n this.paths.push({ p: path, m: i });\r\n }\r\n if (this.filterManager.effectElements[10].p.v === 3) {\r\n var mask = createNS('mask');\r\n var id = createElementID();\r\n mask.setAttribute('id', id);\r\n mask.setAttribute('mask-type', 'alpha');\r\n mask.appendChild(groupPath);\r\n this.elem.globalData.defs.appendChild(mask);\r\n var g = createNS('g');\r\n g.setAttribute('mask', 'url(' + locationHref + '#' + id + ')');\r\n while (elemChildren[0]) {\r\n g.appendChild(elemChildren[0]);\r\n }\r\n this.elem.layerElement.appendChild(g);\r\n this.masker = mask;\r\n groupPath.setAttribute('stroke', '#fff');\r\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\r\n if (this.filterManager.effectElements[10].p.v === 2) {\r\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\r\n while (elemChildren.length) {\r\n this.elem.layerElement.removeChild(elemChildren[0]);\r\n }\r\n }\r\n this.elem.layerElement.appendChild(groupPath);\r\n this.elem.layerElement.removeAttribute('mask');\r\n groupPath.setAttribute('stroke', '#fff');\r\n }\r\n this.initialized = true;\r\n this.pathMasker = groupPath;\r\n};\r\n\r\nSVGStrokeEffect.prototype.renderFrame = function (forceRender) {\r\n if (!this.initialized) {\r\n this.initialize();\r\n }\r\n var i;\r\n var len = this.paths.length;\r\n var mask;\r\n var path;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.paths[i].m !== -1) {\r\n mask = this.elem.maskManager.viewData[this.paths[i].m];\r\n path = this.paths[i].p;\r\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\r\n path.setAttribute('d', mask.lastPath);\r\n }\r\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\r\n var dasharrayValue;\r\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\r\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\r\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\r\n var l = path.getTotalLength();\r\n dasharrayValue = '0 0 0 ' + l * s + ' ';\r\n var lineLength = l * (e - s);\r\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\r\n var units = Math.floor(lineLength / segment);\r\n var j;\r\n for (j = 0; j < units; j += 1) {\r\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\r\n }\r\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\r\n } else {\r\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\r\n }\r\n path.setAttribute('stroke-dasharray', dasharrayValue);\r\n }\r\n }\r\n }\r\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\r\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\r\n }\r\n\r\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\r\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\r\n }\r\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\r\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\r\n var color = this.filterManager.effectElements[3].p.v;\r\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\r\n }\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGTritoneFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\r\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', 'f1');\r\n filter.appendChild(feColorMatrix);\r\n var feComponentTransfer = createNS('feComponentTransfer');\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n this.matrixFilter = feComponentTransfer;\r\n var feFuncR = createNS('feFuncR');\r\n feFuncR.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncR);\r\n this.feFuncR = feFuncR;\r\n var feFuncG = createNS('feFuncG');\r\n feFuncG.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncG);\r\n this.feFuncG = feFuncG;\r\n var feFuncB = createNS('feFuncB');\r\n feFuncB.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncB);\r\n this.feFuncB = feFuncB;\r\n}\r\n\r\nSVGTritoneFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var color1 = this.filterManager.effectElements[0].p.v;\r\n var color2 = this.filterManager.effectElements[1].p.v;\r\n var color3 = this.filterManager.effectElements[2].p.v;\r\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\r\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\r\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\r\n this.feFuncR.setAttribute('tableValues', tableR);\r\n this.feFuncG.setAttribute('tableValues', tableG);\r\n this.feFuncB.setAttribute('tableValues', tableB);\r\n // var opacity = this.filterManager.effectElements[2].p.v/100;\r\n // this.matrixFilter.setAttribute('values',(colorWhite[0]- colorBlack[0])+' 0 0 0 '+ colorBlack[0] +' '+ (colorWhite[1]- colorBlack[1]) +' 0 0 0 '+ colorBlack[1] +' '+ (colorWhite[2]- colorBlack[2]) +' 0 0 0 '+ colorBlack[2] +' 0 0 0 ' + opacity + ' 0');\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGProLevelsFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var effectElements = this.filterManager.effectElements;\r\n var feComponentTransfer = createNS('feComponentTransfer');\r\n\r\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\r\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\r\n }\r\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\r\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\r\n }\r\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\r\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\r\n }\r\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\r\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\r\n }\r\n\r\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n feComponentTransfer = createNS('feComponentTransfer');\r\n }\r\n\r\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\r\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\r\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\r\n }\r\n}\r\n\r\nSVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\r\n var feFunc = createNS(type);\r\n feFunc.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFunc);\r\n return feFunc;\r\n};\r\n\r\nSVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\r\n var cnt = 0;\r\n var segments = 256;\r\n var perc;\r\n var min = Math.min(inputBlack, inputWhite);\r\n var max = Math.max(inputBlack, inputWhite);\r\n var table = Array.call(null, { length: segments });\r\n var colorValue;\r\n var pos = 0;\r\n var outputDelta = outputWhite - outputBlack;\r\n var inputDelta = inputWhite - inputBlack;\r\n while (cnt <= 256) {\r\n perc = cnt / 256;\r\n if (perc <= min) {\r\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\r\n } else if (perc >= max) {\r\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\r\n } else {\r\n colorValue = (outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma));\r\n }\r\n table[pos] = colorValue;\r\n pos += 1;\r\n cnt += 256 / (segments - 1);\r\n }\r\n return table.join(' ');\r\n};\r\n\r\nSVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var val;\r\n var effectElements = this.filterManager.effectElements;\r\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\r\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\r\n this.feFuncRComposed.setAttribute('tableValues', val);\r\n this.feFuncGComposed.setAttribute('tableValues', val);\r\n this.feFuncBComposed.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\r\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\r\n this.feFuncR.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\r\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\r\n this.feFuncG.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\r\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\r\n this.feFuncB.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\r\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\r\n this.feFuncA.setAttribute('tableValues', val);\r\n }\r\n }\r\n};\r\n\r\n/* global createNS, rgbToHex, degToRads */\r\n\r\nfunction SVGDropShadowEffect(filter, filterManager) {\r\n var filterSize = filterManager.container.globalData.renderConfig.filterSize;\r\n filter.setAttribute('x', filterSize.x);\r\n filter.setAttribute('y', filterSize.y);\r\n filter.setAttribute('width', filterSize.width);\r\n filter.setAttribute('height', filterSize.height);\r\n this.filterManager = filterManager;\r\n\r\n var feGaussianBlur = createNS('feGaussianBlur');\r\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\r\n feGaussianBlur.setAttribute('result', 'drop_shadow_1');\r\n feGaussianBlur.setAttribute('stdDeviation', '0');\r\n this.feGaussianBlur = feGaussianBlur;\r\n filter.appendChild(feGaussianBlur);\r\n\r\n var feOffset = createNS('feOffset');\r\n feOffset.setAttribute('dx', '25');\r\n feOffset.setAttribute('dy', '0');\r\n feOffset.setAttribute('in', 'drop_shadow_1');\r\n feOffset.setAttribute('result', 'drop_shadow_2');\r\n this.feOffset = feOffset;\r\n filter.appendChild(feOffset);\r\n var feFlood = createNS('feFlood');\r\n feFlood.setAttribute('flood-color', '#00ff00');\r\n feFlood.setAttribute('flood-opacity', '1');\r\n feFlood.setAttribute('result', 'drop_shadow_3');\r\n this.feFlood = feFlood;\r\n filter.appendChild(feFlood);\r\n\r\n var feComposite = createNS('feComposite');\r\n feComposite.setAttribute('in', 'drop_shadow_3');\r\n feComposite.setAttribute('in2', 'drop_shadow_2');\r\n feComposite.setAttribute('operator', 'in');\r\n feComposite.setAttribute('result', 'drop_shadow_4');\r\n filter.appendChild(feComposite);\r\n\r\n var feMerge = createNS('feMerge');\r\n filter.appendChild(feMerge);\r\n var feMergeNode;\r\n feMergeNode = createNS('feMergeNode');\r\n feMerge.appendChild(feMergeNode);\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in', 'SourceGraphic');\r\n this.feMergeNode = feMergeNode;\r\n this.feMerge = feMerge;\r\n this.originalNodeAdded = false;\r\n feMerge.appendChild(feMergeNode);\r\n}\r\n\r\nSVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\r\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\r\n }\r\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\r\n var col = this.filterManager.effectElements[0].p.v;\r\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\r\n }\r\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\r\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\r\n }\r\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\r\n var distance = this.filterManager.effectElements[3].p.v;\r\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\r\n var x = distance * Math.cos(angle);\r\n var y = distance * Math.sin(angle);\r\n this.feOffset.setAttribute('dx', x);\r\n this.feOffset.setAttribute('dy', y);\r\n }\r\n /* if(forceRender || this.filterManager.effectElements[5].p._mdf){\r\n if(this.filterManager.effectElements[5].p.v === 1 && this.originalNodeAdded) {\r\n this.feMerge.removeChild(this.feMergeNode);\r\n this.originalNodeAdded = false;\r\n } else if(this.filterManager.effectElements[5].p.v === 0 && !this.originalNodeAdded) {\r\n this.feMerge.appendChild(this.feMergeNode);\r\n this.originalNodeAdded = true;\r\n }\r\n } */\r\n }\r\n};\r\n\r\n/* global createElementID, createNS */\r\n\r\nvar _svgMatteSymbols = [];\r\n\r\nfunction SVGMatte3Effect(filterElem, filterManager, elem) {\r\n this.initialized = false;\r\n this.filterManager = filterManager;\r\n this.filterElem = filterElem;\r\n this.elem = elem;\r\n elem.matteElement = createNS('g');\r\n elem.matteElement.appendChild(elem.layerElement);\r\n elem.matteElement.appendChild(elem.transformedElement);\r\n elem.baseElement = elem.matteElement;\r\n}\r\n\r\nSVGMatte3Effect.prototype.findSymbol = function (mask) {\r\n var i = 0;\r\n var len = _svgMatteSymbols.length;\r\n while (i < len) {\r\n if (_svgMatteSymbols[i] === mask) {\r\n return _svgMatteSymbols[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n};\r\n\r\nSVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\r\n var parentNode = mask.layerElement.parentNode;\r\n if (!parentNode) {\r\n return;\r\n }\r\n var children = parentNode.children;\r\n var i = 0;\r\n var len = children.length;\r\n while (i < len) {\r\n if (children[i] === mask.layerElement) {\r\n break;\r\n }\r\n i += 1;\r\n }\r\n var nextChild;\r\n if (i <= len - 2) {\r\n nextChild = children[i + 1];\r\n }\r\n var useElem = createNS('use');\r\n useElem.setAttribute('href', '#' + symbolId);\r\n if (nextChild) {\r\n parentNode.insertBefore(useElem, nextChild);\r\n } else {\r\n parentNode.appendChild(useElem);\r\n }\r\n};\r\n\r\nSVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\r\n if (!this.findSymbol(mask)) {\r\n var symbolId = createElementID();\r\n var masker = createNS('mask');\r\n masker.setAttribute('id', mask.layerId);\r\n masker.setAttribute('mask-type', 'alpha');\r\n _svgMatteSymbols.push(mask);\r\n var defs = elem.globalData.defs;\r\n defs.appendChild(masker);\r\n var symbol = createNS('symbol');\r\n symbol.setAttribute('id', symbolId);\r\n this.replaceInParent(mask, symbolId);\r\n symbol.appendChild(mask.layerElement);\r\n defs.appendChild(symbol);\r\n var useElem = createNS('use');\r\n useElem.setAttribute('href', '#' + symbolId);\r\n masker.appendChild(useElem);\r\n mask.data.hd = false;\r\n mask.show();\r\n }\r\n elem.setMatte(mask.layerId);\r\n};\r\n\r\nSVGMatte3Effect.prototype.initialize = function () {\r\n var ind = this.filterManager.effectElements[0].p.v;\r\n var elements = this.elem.comp.elements;\r\n var i = 0;\r\n var len = elements.length;\r\n while (i < len) {\r\n if (elements[i] && elements[i].data.ind === ind) {\r\n this.setElementAsMask(this.elem, elements[i]);\r\n }\r\n i += 1;\r\n }\r\n this.initialized = true;\r\n};\r\n\r\nSVGMatte3Effect.prototype.renderFrame = function () {\r\n if (!this.initialized) {\r\n this.initialize();\r\n }\r\n};\r\n\r\n/* global createElementID, filtersFactory, SVGTintFilter, SVGFillFilter, SVGStrokeEffect, SVGTritoneFilter,\r\nSVGProLevelsFilter, SVGDropShadowEffect, SVGMatte3Effect, SVGGaussianBlurEffect, locationHref */\r\n\r\nfunction SVGEffects(elem) {\r\n var i;\r\n var len = elem.data.ef ? elem.data.ef.length : 0;\r\n var filId = createElementID();\r\n var fil = filtersFactory.createFilter(filId, true);\r\n var count = 0;\r\n this.filters = [];\r\n var filterManager;\r\n for (i = 0; i < len; i += 1) {\r\n filterManager = null;\r\n if (elem.data.ef[i].ty === 20) {\r\n count += 1;\r\n filterManager = new SVGTintFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 21) {\r\n count += 1;\r\n filterManager = new SVGFillFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 22) {\r\n filterManager = new SVGStrokeEffect(elem, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 23) {\r\n count += 1;\r\n filterManager = new SVGTritoneFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 24) {\r\n count += 1;\r\n filterManager = new SVGProLevelsFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 25) {\r\n count += 1;\r\n filterManager = new SVGDropShadowEffect(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 28) {\r\n // count += 1;\r\n filterManager = new SVGMatte3Effect(fil, elem.effectsManager.effectElements[i], elem);\r\n } else if (elem.data.ef[i].ty === 29) {\r\n count += 1;\r\n filterManager = new SVGGaussianBlurEffect(fil, elem.effectsManager.effectElements[i]);\r\n }\r\n if (filterManager) {\r\n this.filters.push(filterManager);\r\n }\r\n }\r\n if (count) {\r\n elem.globalData.defs.appendChild(fil);\r\n elem.layerElement.setAttribute('filter', 'url(' + locationHref + '#' + filId + ')');\r\n }\r\n if (this.filters.length) {\r\n elem.addRenderableComponent(this);\r\n }\r\n}\r\n\r\nSVGEffects.prototype.renderFrame = function (_isFirstFrame) {\r\n var i;\r\n var len = this.filters.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.filters[i].renderFrame(_isFirstFrame);\r\n }\r\n};\r\n\r\n/* global Matrix, createTypedArray */\r\n\r\nfunction CVContextData() {\r\n this.saved = [];\r\n this.cArrPos = 0;\r\n this.cTr = new Matrix();\r\n this.cO = 1;\r\n var i;\r\n var len = 15;\r\n this.savedOp = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n this.saved[i] = createTypedArray('float32', 16);\r\n }\r\n this._length = len;\r\n}\r\n\r\nCVContextData.prototype.duplicate = function () {\r\n var newLength = this._length * 2;\r\n var currentSavedOp = this.savedOp;\r\n this.savedOp = createTypedArray('float32', newLength);\r\n this.savedOp.set(currentSavedOp);\r\n var i = 0;\r\n for (i = this._length; i < newLength; i += 1) {\r\n this.saved[i] = createTypedArray('float32', 16);\r\n }\r\n this._length = newLength;\r\n};\r\n\r\nCVContextData.prototype.reset = function () {\r\n this.cArrPos = 0;\r\n this.cTr.reset();\r\n this.cO = 1;\r\n};\r\n\r\n/* global CVEffects, getBlendMode, CVMaskElement, Matrix */\r\n\r\nfunction CVBaseElement() {\r\n}\r\n\r\nCVBaseElement.prototype = {\r\n createElements: function () {},\r\n initRendererElement: function () {},\r\n createContainerElements: function () {\r\n this.canvasContext = this.globalData.canvasContext;\r\n this.renderableEffectsManager = new CVEffects(this);\r\n },\r\n createContent: function () {},\r\n setBlendMode: function () {\r\n var globalData = this.globalData;\r\n if (globalData.blendMode !== this.data.bm) {\r\n globalData.blendMode = this.data.bm;\r\n var blendModeValue = getBlendMode(this.data.bm);\r\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\r\n }\r\n },\r\n createRenderableComponents: function () {\r\n this.maskManager = new CVMaskElement(this.data, this);\r\n },\r\n hideElement: function () {\r\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\r\n this.hidden = true;\r\n }\r\n },\r\n showElement: function () {\r\n if (this.isInRange && !this.isTransparent) {\r\n this.hidden = false;\r\n this._isFirstFrame = true;\r\n this.maskManager._isFirstFrame = true;\r\n }\r\n },\r\n renderFrame: function () {\r\n if (this.hidden || this.data.hd) {\r\n return;\r\n }\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.setBlendMode();\r\n var forceRealStack = this.data.ty === 0;\r\n this.globalData.renderer.save(forceRealStack);\r\n this.globalData.renderer.ctxTransform(this.finalTransform.mat.props);\r\n this.globalData.renderer.ctxOpacity(this.finalTransform.mProp.o.v);\r\n this.renderInnerContent();\r\n this.globalData.renderer.restore(forceRealStack);\r\n if (this.maskManager.hasMasks) {\r\n this.globalData.renderer.restore(true);\r\n }\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n destroy: function () {\r\n this.canvasContext = null;\r\n this.data = null;\r\n this.globalData = null;\r\n this.maskManager.destroy();\r\n },\r\n mHelper: new Matrix(),\r\n};\r\nCVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\r\nCVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, CVBaseElement,HierarchyElement, FrameElement,\r\nRenderableElement, SVGShapeElement, IImageElement, createTag */\r\n\r\nfunction CVImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.img = globalData.imageLoader.getAsset(this.assetData);\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\r\n\r\nCVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\r\nCVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\r\n\r\nCVImageElement.prototype.createContent = function () {\r\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\r\n var canvas = createTag('canvas');\r\n canvas.width = this.assetData.w;\r\n canvas.height = this.assetData.h;\r\n var ctx = canvas.getContext('2d');\r\n\r\n var imgW = this.img.width;\r\n var imgH = this.img.height;\r\n var imgRel = imgW / imgH;\r\n var canvasRel = this.assetData.w / this.assetData.h;\r\n var widthCrop;\r\n var heightCrop;\r\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\r\n if ((imgRel > canvasRel && par === 'xMidYMid slice') || (imgRel < canvasRel && par !== 'xMidYMid slice')) {\r\n heightCrop = imgH;\r\n widthCrop = heightCrop * canvasRel;\r\n } else {\r\n widthCrop = imgW;\r\n heightCrop = widthCrop / canvasRel;\r\n }\r\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\r\n this.img = canvas;\r\n }\r\n};\r\n\r\nCVImageElement.prototype.renderInnerContent = function () {\r\n this.canvasContext.drawImage(this.img, 0, 0);\r\n};\r\n\r\nCVImageElement.prototype.destroy = function () {\r\n this.img = null;\r\n};\r\n\r\n/* global createSizedArray, PropertyFactory, extendPrototype, CanvasRenderer, ICompElement, CVBaseElement */\r\n\r\nfunction CVCompElement(data, globalData, comp) {\r\n this.completeLayers = false;\r\n this.layers = data.layers;\r\n this.pendingElements = [];\r\n this.elements = createSizedArray(this.layers.length);\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nextendPrototype([CanvasRenderer, ICompElement, CVBaseElement], CVCompElement);\r\n\r\nCVCompElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.beginPath();\r\n ctx.moveTo(0, 0);\r\n ctx.lineTo(this.data.w, 0);\r\n ctx.lineTo(this.data.w, this.data.h);\r\n ctx.lineTo(0, this.data.h);\r\n ctx.lineTo(0, 0);\r\n ctx.clip();\r\n var i;\r\n var len = this.layers.length;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n};\r\n\r\nCVCompElement.prototype.destroy = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n this.layers = null;\r\n this.elements = null;\r\n};\r\n\r\n/* global createSizedArray, ShapePropertyFactory, MaskElement */\r\n\r\nfunction CVMaskElement(data, element) {\r\n this.data = data;\r\n this.element = element;\r\n this.masksProperties = this.data.masksProperties || [];\r\n this.viewData = createSizedArray(this.masksProperties.length);\r\n var i;\r\n var len = this.masksProperties.length;\r\n var hasMasks = false;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.masksProperties[i].mode !== 'n') {\r\n hasMasks = true;\r\n }\r\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\r\n }\r\n this.hasMasks = hasMasks;\r\n if (hasMasks) {\r\n this.element.addRenderableComponent(this);\r\n }\r\n}\r\n\r\nCVMaskElement.prototype.renderFrame = function () {\r\n if (!this.hasMasks) {\r\n return;\r\n }\r\n var transform = this.element.finalTransform.mat;\r\n var ctx = this.element.canvasContext;\r\n var i;\r\n var len = this.masksProperties.length;\r\n var pt;\r\n var pts;\r\n var data;\r\n ctx.beginPath();\r\n for (i = 0; i < len; i += 1) {\r\n if (this.masksProperties[i].mode !== 'n') {\r\n if (this.masksProperties[i].inv) {\r\n ctx.moveTo(0, 0);\r\n ctx.lineTo(this.element.globalData.compSize.w, 0);\r\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\r\n ctx.lineTo(0, this.element.globalData.compSize.h);\r\n ctx.lineTo(0, 0);\r\n }\r\n data = this.viewData[i].v;\r\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\r\n ctx.moveTo(pt[0], pt[1]);\r\n var j;\r\n var jLen = data._length;\r\n for (j = 1; j < jLen; j += 1) {\r\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\r\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\r\n }\r\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\r\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\r\n }\r\n }\r\n this.element.globalData.renderer.save(true);\r\n ctx.clip();\r\n};\r\n\r\nCVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\r\n\r\nCVMaskElement.prototype.destroy = function () {\r\n this.element = null;\r\n};\r\n\r\n/* global ShapeTransformManager, extendPrototype, BaseElement, TransformElement, CVBaseElement, IShapeElement,\r\nHierarchyElement, FrameElement, RenderableElement, RenderableDOMElement, PropertyFactory, degToRads, GradientProperty,\r\nDashProperty, TransformPropertyFactory, CVShapeData, ShapeModifiers, bmFloor, lineCapEnum, lineJoinEnum */\r\n\r\nfunction CVShapeElement(data, globalData, comp) {\r\n this.shapes = [];\r\n this.shapesData = data.shapes;\r\n this.stylesList = [];\r\n this.itemsData = [];\r\n this.prevViewData = [];\r\n this.shapeModifiers = [];\r\n this.processedElements = [];\r\n this.transformsManager = new ShapeTransformManager();\r\n this.initElement(data, globalData, comp);\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\r\n\r\nCVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\r\n\r\nCVShapeElement.prototype.transformHelper = { opacity: 1, _opMdf: false };\r\n\r\nCVShapeElement.prototype.dashResetter = [];\r\n\r\nCVShapeElement.prototype.createContent = function () {\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\r\n};\r\n\r\nCVShapeElement.prototype.createStyleElement = function (data, transforms) {\r\n var styleElem = {\r\n data: data,\r\n type: data.ty,\r\n preTransforms: this.transformsManager.addTransformSequence(transforms),\r\n transforms: [],\r\n elements: [],\r\n closed: data.hd === true,\r\n };\r\n var elementData = {};\r\n if (data.ty === 'fl' || data.ty === 'st') {\r\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\r\n if (!elementData.c.k) {\r\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\r\n }\r\n } else if (data.ty === 'gf' || data.ty === 'gs') {\r\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\r\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\r\n elementData.h = PropertyFactory.getProp(this, data.h || { k: 0 }, 0, 0.01, this);\r\n elementData.a = PropertyFactory.getProp(this, data.a || { k: 0 }, 0, degToRads, this);\r\n elementData.g = new GradientProperty(this, data.g, this);\r\n }\r\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\r\n if (data.ty === 'st' || data.ty === 'gs') {\r\n styleElem.lc = lineCapEnum[data.lc || 2];\r\n styleElem.lj = lineJoinEnum[data.lj || 2];\r\n if (data.lj == 1) { // eslint-disable-line eqeqeq\r\n styleElem.ml = data.ml;\r\n }\r\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\r\n if (!elementData.w.k) {\r\n styleElem.wi = elementData.w.v;\r\n }\r\n if (data.d) {\r\n var d = new DashProperty(this, data.d, 'canvas', this);\r\n elementData.d = d;\r\n if (!elementData.d.k) {\r\n styleElem.da = elementData.d.dashArray;\r\n styleElem.do = elementData.d.dashoffset[0];\r\n }\r\n }\r\n } else {\r\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\r\n }\r\n this.stylesList.push(styleElem);\r\n elementData.style = styleElem;\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.createGroupElement = function () {\r\n var elementData = {\r\n it: [],\r\n prevViewData: [],\r\n };\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.createTransformElement = function (data) {\r\n var elementData = {\r\n transform: {\r\n opacity: 1,\r\n _opMdf: false,\r\n key: this.transformsManager.getNewKey(),\r\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\r\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this),\r\n },\r\n };\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.createShapeElement = function (data) {\r\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\r\n\r\n this.shapes.push(elementData);\r\n this.addShapeToModifiers(elementData);\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.reloadShapes = function () {\r\n this._isFirstFrame = true;\r\n var i;\r\n var len = this.itemsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.prevViewData[i] = this.itemsData[i];\r\n }\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\r\n len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n }\r\n this.renderModifiers();\r\n this.transformsManager.processSequences(this._isFirstFrame);\r\n};\r\n\r\nCVShapeElement.prototype.addTransformToStyleList = function (transform) {\r\n var i;\r\n var len = this.stylesList.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (!this.stylesList[i].closed) {\r\n this.stylesList[i].transforms.push(transform);\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.removeTransformFromStyleList = function () {\r\n var i;\r\n var len = this.stylesList.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (!this.stylesList[i].closed) {\r\n this.stylesList[i].transforms.pop();\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.closeStyles = function (styles) {\r\n var i;\r\n var len = styles.length;\r\n for (i = 0; i < len; i += 1) {\r\n styles[i].closed = true;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\r\n var i;\r\n var len = arr.length - 1;\r\n var j;\r\n var jLen;\r\n var ownStyles = [];\r\n var ownModifiers = [];\r\n var processedPos;\r\n var modifier;\r\n var currentTransform;\r\n var ownTransforms = [].concat(transforms);\r\n for (i = len; i >= 0; i -= 1) {\r\n processedPos = this.searchProcessedElement(arr[i]);\r\n if (!processedPos) {\r\n arr[i]._shouldRender = shouldRender;\r\n } else {\r\n itemsData[i] = prevViewData[processedPos - 1];\r\n }\r\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\r\n } else {\r\n itemsData[i].style.closed = false;\r\n }\r\n\r\n ownStyles.push(itemsData[i].style);\r\n } else if (arr[i].ty === 'gr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createGroupElement(arr[i]);\r\n } else {\r\n jLen = itemsData[i].it.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\r\n }\r\n }\r\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\r\n } else if (arr[i].ty === 'tr') {\r\n if (!processedPos) {\r\n currentTransform = this.createTransformElement(arr[i]);\r\n itemsData[i] = currentTransform;\r\n }\r\n ownTransforms.push(itemsData[i]);\r\n this.addTransformToStyleList(itemsData[i]);\r\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createShapeElement(arr[i]);\r\n }\r\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n modifier.init(this, arr[i]);\r\n itemsData[i] = modifier;\r\n this.shapeModifiers.push(modifier);\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = false;\r\n }\r\n ownModifiers.push(modifier);\r\n } else if (arr[i].ty === 'rp') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n itemsData[i] = modifier;\r\n modifier.init(this, arr, i, itemsData);\r\n this.shapeModifiers.push(modifier);\r\n shouldRender = false;\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = true;\r\n }\r\n ownModifiers.push(modifier);\r\n }\r\n this.addProcessedElement(arr[i], i + 1);\r\n }\r\n this.removeTransformFromStyleList();\r\n this.closeStyles(ownStyles);\r\n len = ownModifiers.length;\r\n for (i = 0; i < len; i += 1) {\r\n ownModifiers[i].closed = true;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderInnerContent = function () {\r\n this.transformHelper.opacity = 1;\r\n this.transformHelper._opMdf = false;\r\n this.renderModifiers();\r\n this.transformsManager.processSequences(this._isFirstFrame);\r\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\r\n};\r\n\r\nCVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\r\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\r\n groupTransform.opacity = parentTransform.opacity;\r\n groupTransform.opacity *= groupTransform.op.v;\r\n groupTransform._opMdf = true;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.drawLayer = function () {\r\n var i;\r\n var len = this.stylesList.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n var elems;\r\n var nodes;\r\n var renderer = this.globalData.renderer;\r\n var ctx = this.globalData.canvasContext;\r\n var type;\r\n var currentStyle;\r\n for (i = 0; i < len; i += 1) {\r\n currentStyle = this.stylesList[i];\r\n type = currentStyle.type;\r\n\r\n // Skipping style when\r\n // Stroke width equals 0\r\n // style should not be rendered (extra unused repeaters)\r\n // current opacity equals 0\r\n // global opacity equals 0\r\n if (!(((type === 'st' || type === 'gs') && currentStyle.wi === 0) || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\r\n renderer.save();\r\n elems = currentStyle.elements;\r\n if (type === 'st' || type === 'gs') {\r\n ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\r\n ctx.lineWidth = currentStyle.wi;\r\n ctx.lineCap = currentStyle.lc;\r\n ctx.lineJoin = currentStyle.lj;\r\n ctx.miterLimit = currentStyle.ml || 0;\r\n } else {\r\n ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\r\n }\r\n renderer.ctxOpacity(currentStyle.coOp);\r\n if (type !== 'st' && type !== 'gs') {\r\n ctx.beginPath();\r\n }\r\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\r\n jLen = elems.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (type === 'st' || type === 'gs') {\r\n ctx.beginPath();\r\n if (currentStyle.da) {\r\n ctx.setLineDash(currentStyle.da);\r\n ctx.lineDashOffset = currentStyle.do;\r\n }\r\n }\r\n nodes = elems[j].trNodes;\r\n kLen = nodes.length;\r\n\r\n for (k = 0; k < kLen; k += 1) {\r\n if (nodes[k].t === 'm') {\r\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\r\n } else if (nodes[k].t === 'c') {\r\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\r\n } else {\r\n ctx.closePath();\r\n }\r\n }\r\n if (type === 'st' || type === 'gs') {\r\n ctx.stroke();\r\n if (currentStyle.da) {\r\n ctx.setLineDash(this.dashResetter);\r\n }\r\n }\r\n }\r\n if (type !== 'st' && type !== 'gs') {\r\n ctx.fill(currentStyle.r);\r\n }\r\n renderer.restore();\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\r\n var i;\r\n var len = items.length - 1;\r\n var groupTransform;\r\n groupTransform = parentTransform;\r\n for (i = len; i >= 0; i -= 1) {\r\n if (items[i].ty === 'tr') {\r\n groupTransform = data[i].transform;\r\n this.renderShapeTransform(parentTransform, groupTransform);\r\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\r\n this.renderPath(items[i], data[i]);\r\n } else if (items[i].ty === 'fl') {\r\n this.renderFill(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'st') {\r\n this.renderStroke(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\r\n this.renderGradientFill(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'gr') {\r\n this.renderShape(groupTransform, items[i].it, data[i].it);\r\n } else if (items[i].ty === 'tm') {\r\n //\r\n }\r\n }\r\n if (isMain) {\r\n this.drawLayer();\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\r\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\r\n var shapeNodes = styledShape.trNodes;\r\n var paths = shape.paths;\r\n var i;\r\n var len;\r\n var j;\r\n var jLen = paths._length;\r\n shapeNodes.length = 0;\r\n var groupTransformMat = styledShape.transforms.finalTransform;\r\n for (j = 0; j < jLen; j += 1) {\r\n var pathNodes = paths.shapes[j];\r\n if (pathNodes && pathNodes.v) {\r\n len = pathNodes._length;\r\n for (i = 1; i < len; i += 1) {\r\n if (i === 1) {\r\n shapeNodes.push({\r\n t: 'm',\r\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0),\r\n });\r\n }\r\n shapeNodes.push({\r\n t: 'c',\r\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i]),\r\n });\r\n }\r\n if (len === 1) {\r\n shapeNodes.push({\r\n t: 'm',\r\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0),\r\n });\r\n }\r\n if (pathNodes.c && len) {\r\n shapeNodes.push({\r\n t: 'c',\r\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0]),\r\n });\r\n shapeNodes.push({\r\n t: 'z',\r\n });\r\n }\r\n }\r\n }\r\n styledShape.trNodes = shapeNodes;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderPath = function (pathData, itemData) {\r\n if (pathData.hd !== true && pathData._shouldRender) {\r\n var i;\r\n var len = itemData.styledShapes.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n\r\n if (itemData.c._mdf || this._isFirstFrame) {\r\n styleElem.co = 'rgb('\r\n + bmFloor(itemData.c.v[0]) + ','\r\n + bmFloor(itemData.c.v[1]) + ','\r\n + bmFloor(itemData.c.v[2]) + ')';\r\n }\r\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n var grd;\r\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || (styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf))) {\r\n var ctx = this.globalData.canvasContext;\r\n var pt1 = itemData.s.v;\r\n var pt2 = itemData.e.v;\r\n if (styleData.t === 1) {\r\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\r\n } else {\r\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\r\n\r\n var percent = itemData.h.v;\r\n if (percent >= 1) {\r\n percent = 0.99;\r\n } else if (percent <= -1) {\r\n percent = -0.99;\r\n }\r\n var dist = rad * percent;\r\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\r\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\r\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\r\n }\r\n\r\n var i;\r\n var len = styleData.g.p;\r\n var cValues = itemData.g.c;\r\n var opacity = 1;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\r\n opacity = itemData.g.o[i * 2 + 1];\r\n }\r\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\r\n }\r\n styleElem.grd = grd;\r\n }\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n};\r\n\r\nCVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n var d = itemData.d;\r\n if (d && (d._mdf || this._isFirstFrame)) {\r\n styleElem.da = d.dashArray;\r\n styleElem.do = d.dashoffset[0];\r\n }\r\n if (itemData.c._mdf || this._isFirstFrame) {\r\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\r\n }\r\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n }\r\n if (itemData.w._mdf || this._isFirstFrame) {\r\n styleElem.wi = itemData.w.v;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.destroy = function () {\r\n this.shapesData = null;\r\n this.globalData = null;\r\n this.canvasContext = null;\r\n this.stylesList.length = 0;\r\n this.itemsData.length = 0;\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement,\r\nSVGShapeElement, IImageElement */\r\n\r\nfunction CVSolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\r\n\r\nCVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\r\nCVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\r\n\r\nCVSolidElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.fillStyle = this.data.sc;\r\n ctx.fillRect(0, 0, this.data.sw, this.data.sh);\r\n //\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement,\r\nRenderableElement, ITextElement, createTag, createSizedArray */\r\n\r\nfunction CVTextElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.yOffset = 0;\r\n this.fillColorAnim = false;\r\n this.strokeColorAnim = false;\r\n this.strokeWidthAnim = false;\r\n this.stroke = false;\r\n this.fill = false;\r\n this.justifyOffset = 0;\r\n this.currentRender = null;\r\n this.renderType = 'canvas';\r\n this.values = {\r\n fill: 'rgba(0,0,0,0)',\r\n stroke: 'rgba(0,0,0,0)',\r\n sWidth: 0,\r\n fValue: '',\r\n };\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\r\n\r\nCVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\r\n\r\nCVTextElement.prototype.buildNewText = function () {\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\r\n\r\n var hasFill = false;\r\n if (documentData.fc) {\r\n hasFill = true;\r\n this.values.fill = this.buildColor(documentData.fc);\r\n } else {\r\n this.values.fill = 'rgba(0,0,0,0)';\r\n }\r\n this.fill = hasFill;\r\n var hasStroke = false;\r\n if (documentData.sc) {\r\n hasStroke = true;\r\n this.values.stroke = this.buildColor(documentData.sc);\r\n this.values.sWidth = documentData.sw;\r\n }\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n var i;\r\n var len;\r\n var letters = documentData.l;\r\n var matrixHelper = this.mHelper;\r\n this.stroke = hasStroke;\r\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\r\n len = documentData.finalText.length;\r\n // this.tHelper.font = this.values.fValue;\r\n var charData;\r\n var shapeData;\r\n var k;\r\n var kLen;\r\n var shapes;\r\n var j;\r\n var jLen;\r\n var pathNodes;\r\n var commands;\r\n var pathArr;\r\n var singleShape = this.data.singleShape;\r\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\r\n var xPos = 0;\r\n var yPos = 0;\r\n var firstLine = true;\r\n var cnt = 0;\r\n for (i = 0; i < len; i += 1) {\r\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n shapeData = (charData && charData.data) || {};\r\n matrixHelper.reset();\r\n if (singleShape && letters[i].n) {\r\n xPos = -trackingOffset;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n firstLine = false;\r\n }\r\n\r\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\r\n jLen = shapes.length;\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n if (singleShape) {\r\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n }\r\n commands = createSizedArray(jLen);\r\n for (j = 0; j < jLen; j += 1) {\r\n kLen = shapes[j].ks.k.i.length;\r\n pathNodes = shapes[j].ks.k;\r\n pathArr = [];\r\n for (k = 1; k < kLen; k += 1) {\r\n if (k === 1) {\r\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\r\n }\r\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\r\n }\r\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\r\n commands[j] = pathArr;\r\n }\r\n if (singleShape) {\r\n xPos += letters[i].l;\r\n xPos += trackingOffset;\r\n }\r\n if (this.textSpans[cnt]) {\r\n this.textSpans[cnt].elem = commands;\r\n } else {\r\n this.textSpans[cnt] = { elem: commands };\r\n }\r\n cnt += 1;\r\n }\r\n};\r\n\r\nCVTextElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.font = this.values.fValue;\r\n ctx.lineCap = 'butt';\r\n ctx.lineJoin = 'miter';\r\n ctx.miterLimit = 4;\r\n\r\n if (!this.data.singleShape) {\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n }\r\n\r\n var i;\r\n var len;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n\r\n var letters = this.textProperty.currentData.l;\r\n\r\n len = letters.length;\r\n var renderedLetter;\r\n var lastFill = null;\r\n var lastStroke = null;\r\n var lastStrokeW = null;\r\n var commands;\r\n var pathArr;\r\n for (i = 0; i < len; i += 1) {\r\n if (!letters[i].n) {\r\n renderedLetter = renderedLetters[i];\r\n if (renderedLetter) {\r\n this.globalData.renderer.save();\r\n this.globalData.renderer.ctxTransform(renderedLetter.p);\r\n this.globalData.renderer.ctxOpacity(renderedLetter.o);\r\n }\r\n if (this.fill) {\r\n if (renderedLetter && renderedLetter.fc) {\r\n if (lastFill !== renderedLetter.fc) {\r\n lastFill = renderedLetter.fc;\r\n ctx.fillStyle = renderedLetter.fc;\r\n }\r\n } else if (lastFill !== this.values.fill) {\r\n lastFill = this.values.fill;\r\n ctx.fillStyle = this.values.fill;\r\n }\r\n commands = this.textSpans[i].elem;\r\n jLen = commands.length;\r\n this.globalData.canvasContext.beginPath();\r\n for (j = 0; j < jLen; j += 1) {\r\n pathArr = commands[j];\r\n kLen = pathArr.length;\r\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\r\n for (k = 2; k < kLen; k += 6) {\r\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\r\n }\r\n }\r\n this.globalData.canvasContext.closePath();\r\n this.globalData.canvasContext.fill();\r\n /// ctx.fillText(this.textSpans[i].val,0,0);\r\n }\r\n if (this.stroke) {\r\n if (renderedLetter && renderedLetter.sw) {\r\n if (lastStrokeW !== renderedLetter.sw) {\r\n lastStrokeW = renderedLetter.sw;\r\n ctx.lineWidth = renderedLetter.sw;\r\n }\r\n } else if (lastStrokeW !== this.values.sWidth) {\r\n lastStrokeW = this.values.sWidth;\r\n ctx.lineWidth = this.values.sWidth;\r\n }\r\n if (renderedLetter && renderedLetter.sc) {\r\n if (lastStroke !== renderedLetter.sc) {\r\n lastStroke = renderedLetter.sc;\r\n ctx.strokeStyle = renderedLetter.sc;\r\n }\r\n } else if (lastStroke !== this.values.stroke) {\r\n lastStroke = this.values.stroke;\r\n ctx.strokeStyle = this.values.stroke;\r\n }\r\n commands = this.textSpans[i].elem;\r\n jLen = commands.length;\r\n this.globalData.canvasContext.beginPath();\r\n for (j = 0; j < jLen; j += 1) {\r\n pathArr = commands[j];\r\n kLen = pathArr.length;\r\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\r\n for (k = 2; k < kLen; k += 6) {\r\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\r\n }\r\n }\r\n this.globalData.canvasContext.closePath();\r\n this.globalData.canvasContext.stroke();\r\n /// ctx.strokeText(letters[i].val,0,0);\r\n }\r\n if (renderedLetter) {\r\n this.globalData.renderer.restore();\r\n }\r\n }\r\n }\r\n};\r\n\r\nfunction CVEffects() {\r\n\r\n}\r\nCVEffects.prototype.renderFrame = function () {};\r\n\r\n/* global createTag, createNS, styleDiv, CVEffects, MaskElement, SVGBaseElement, HybridRenderer */\r\n\r\nfunction HBaseElement() {}\r\nHBaseElement.prototype = {\r\n checkBlendMode: function () {},\r\n initRendererElement: function () {\r\n this.baseElement = createTag(this.data.tg || 'div');\r\n if (this.data.hasMask) {\r\n this.svgElement = createNS('svg');\r\n this.layerElement = createNS('g');\r\n this.maskedElement = this.layerElement;\r\n this.svgElement.appendChild(this.layerElement);\r\n this.baseElement.appendChild(this.svgElement);\r\n } else {\r\n this.layerElement = this.baseElement;\r\n }\r\n styleDiv(this.baseElement);\r\n },\r\n createContainerElements: function () {\r\n this.renderableEffectsManager = new CVEffects(this);\r\n this.transformedElement = this.baseElement;\r\n this.maskedElement = this.layerElement;\r\n if (this.data.ln) {\r\n this.layerElement.setAttribute('id', this.data.ln);\r\n }\r\n if (this.data.cl) {\r\n this.layerElement.setAttribute('class', this.data.cl);\r\n }\r\n if (this.data.bm !== 0) {\r\n this.setBlendMode();\r\n }\r\n },\r\n renderElement: function () {\r\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\r\n if (this.finalTransform._matMdf) {\r\n var matrixValue = this.finalTransform.mat.toCSS();\r\n transformedElementStyle.transform = matrixValue;\r\n transformedElementStyle.webkitTransform = matrixValue;\r\n }\r\n if (this.finalTransform._opMdf) {\r\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\r\n }\r\n },\r\n renderFrame: function () {\r\n // If it is exported as hidden (data.hd === true) no need to render\r\n // If it is not visible no need to render\r\n if (this.data.hd || this.hidden) {\r\n return;\r\n }\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.renderElement();\r\n this.renderInnerContent();\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n destroy: function () {\r\n this.layerElement = null;\r\n this.transformedElement = null;\r\n if (this.matteElement) {\r\n this.matteElement = null;\r\n }\r\n if (this.maskManager) {\r\n this.maskManager.destroy();\r\n this.maskManager = null;\r\n }\r\n },\r\n createRenderableComponents: function () {\r\n this.maskManager = new MaskElement(this.data, this, this.globalData);\r\n },\r\n addEffects: function () {\r\n },\r\n setMatte: function () {},\r\n};\r\nHBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\r\nHBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\r\nHBaseElement.prototype.buildElementParenting = HybridRenderer.prototype.buildElementParenting;\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement,\r\nRenderableDOMElement, createNS, createTag */\r\n\r\nfunction HSolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\r\n\r\nHSolidElement.prototype.createContent = function () {\r\n var rect;\r\n if (this.data.hasMask) {\r\n rect = createNS('rect');\r\n rect.setAttribute('width', this.data.sw);\r\n rect.setAttribute('height', this.data.sh);\r\n rect.setAttribute('fill', this.data.sc);\r\n this.svgElement.setAttribute('width', this.data.sw);\r\n this.svgElement.setAttribute('height', this.data.sh);\r\n } else {\r\n rect = createTag('div');\r\n rect.style.width = this.data.sw + 'px';\r\n rect.style.height = this.data.sh + 'px';\r\n rect.style.backgroundColor = this.data.sc;\r\n }\r\n this.layerElement.appendChild(rect);\r\n};\r\n\r\n/* global createSizedArray, PropertyFactory, extendPrototype, HybridRenderer, ICompElement, HBaseElement */\r\n\r\nfunction HCompElement(data, globalData, comp) {\r\n this.layers = data.layers;\r\n this.supports3d = !data.hasMask;\r\n this.completeLayers = false;\r\n this.pendingElements = [];\r\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nextendPrototype([HybridRenderer, ICompElement, HBaseElement], HCompElement);\r\nHCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\r\n\r\nHCompElement.prototype.createContainerElements = function () {\r\n this._createBaseContainerElements();\r\n // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\r\n if (this.data.hasMask) {\r\n this.svgElement.setAttribute('width', this.data.w);\r\n this.svgElement.setAttribute('height', this.data.h);\r\n this.transformedElement = this.baseElement;\r\n } else {\r\n this.transformedElement = this.layerElement;\r\n }\r\n};\r\n\r\nHCompElement.prototype.addTo3dContainer = function (elem, pos) {\r\n var j = 0;\r\n var nextElement;\r\n while (j < pos) {\r\n if (this.elements[j] && this.elements[j].getBaseElement) {\r\n nextElement = this.elements[j].getBaseElement();\r\n }\r\n j += 1;\r\n }\r\n if (nextElement) {\r\n this.layerElement.insertBefore(elem, nextElement);\r\n } else {\r\n this.layerElement.appendChild(elem);\r\n }\r\n};\r\n\r\n/* global createNS, extendPrototype, BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement,\r\nHierarchyElement, FrameElement, RenderableElement, createNS, bmMin, bmSqrt, bmMin, bmMax, bmPow */\r\n\r\nfunction HShapeElement(data, globalData, comp) {\r\n // List of drawable elements\r\n this.shapes = [];\r\n // Full shape data\r\n this.shapesData = data.shapes;\r\n // List of styles that will be applied to shapes\r\n this.stylesList = [];\r\n // List of modifiers that will be applied to shapes\r\n this.shapeModifiers = [];\r\n // List of items in shape tree\r\n this.itemsData = [];\r\n // List of items in previous shape tree\r\n this.processedElements = [];\r\n // List of animated components\r\n this.animatedContents = [];\r\n this.shapesContainer = createNS('g');\r\n this.initElement(data, globalData, comp);\r\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n // List of elements that have been created\r\n this.prevViewData = [];\r\n this.currentBBox = {\r\n x: 999999,\r\n y: -999999,\r\n h: 0,\r\n w: 0,\r\n };\r\n}\r\nextendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\r\nHShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\r\n\r\nHShapeElement.prototype.createContent = function () {\r\n var cont;\r\n this.baseElement.style.fontSize = 0;\r\n if (this.data.hasMask) {\r\n this.layerElement.appendChild(this.shapesContainer);\r\n cont = this.svgElement;\r\n } else {\r\n cont = createNS('svg');\r\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\r\n cont.setAttribute('width', size.w);\r\n cont.setAttribute('height', size.h);\r\n cont.appendChild(this.shapesContainer);\r\n this.layerElement.appendChild(cont);\r\n }\r\n\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\r\n this.filterUniqueShapes();\r\n this.shapeCont = cont;\r\n};\r\n\r\nHShapeElement.prototype.getTransformedPoint = function (transformers, point) {\r\n var i;\r\n var len = transformers.length;\r\n for (i = 0; i < len; i += 1) {\r\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\r\n }\r\n return point;\r\n};\r\n\r\nHShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\r\n var shape = item.sh.v;\r\n var transformers = item.transformers;\r\n var i;\r\n var len = shape._length;\r\n var vPoint;\r\n var oPoint;\r\n var nextIPoint;\r\n var nextVPoint;\r\n if (len <= 1) {\r\n return;\r\n }\r\n for (i = 0; i < len - 1; i += 1) {\r\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\r\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\r\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\r\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\r\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\r\n }\r\n if (shape.c) {\r\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\r\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\r\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\r\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\r\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\r\n }\r\n};\r\n\r\nHShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\r\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\r\n var bounds = this.shapeBoundingBox;\r\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\r\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\r\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\r\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\r\n};\r\n\r\nHShapeElement.prototype.shapeBoundingBox = {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0,\r\n};\r\n\r\nHShapeElement.prototype.tempBoundingBox = {\r\n x: 0,\r\n xMax: 0,\r\n y: 0,\r\n yMax: 0,\r\n width: 0,\r\n height: 0,\r\n};\r\n\r\nHShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\r\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\r\n\r\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) { // eslint-disable-line no-plusplus\r\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\r\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\r\n c = 3 * p1[i] - 3 * p0[i];\r\n\r\n b |= 0; // eslint-disable-line no-bitwise\r\n a |= 0; // eslint-disable-line no-bitwise\r\n c |= 0; // eslint-disable-line no-bitwise\r\n\r\n if (a === 0 && b === 0) {\r\n //\r\n } else if (a === 0) {\r\n t = -c / b;\r\n\r\n if (t > 0 && t < 1) {\r\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\r\n }\r\n } else {\r\n b2ac = b * b - 4 * c * a;\r\n\r\n if (b2ac >= 0) {\r\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\r\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\r\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\r\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\r\n }\r\n }\r\n }\r\n\r\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\r\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\r\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\r\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\r\n};\r\n\r\nHShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\r\n return bmPow(1 - t, 3) * p0[i]\r\n + 3 * bmPow(1 - t, 2) * t * p1[i]\r\n + 3 * (1 - t) * bmPow(t, 2) * p2[i]\r\n + bmPow(t, 3) * p3[i];\r\n};\r\n\r\nHShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\r\n var i;\r\n var len = itemsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (itemsData[i] && itemsData[i].sh) {\r\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\r\n } else if (itemsData[i] && itemsData[i].it) {\r\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\r\n }\r\n }\r\n};\r\n\r\nHShapeElement.prototype.currentBoxContains = function (box) {\r\n return this.currentBBox.x <= box.x\r\n && this.currentBBox.y <= box.y\r\n && this.currentBBox.width + this.currentBBox.x >= box.x + box.width\r\n && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\r\n};\r\n\r\nHShapeElement.prototype.renderInnerContent = function () {\r\n this._renderShapeFrame();\r\n\r\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\r\n var tempBoundingBox = this.tempBoundingBox;\r\n var max = 999999;\r\n tempBoundingBox.x = max;\r\n tempBoundingBox.xMax = -max;\r\n tempBoundingBox.y = max;\r\n tempBoundingBox.yMax = -max;\r\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\r\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\r\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y;\r\n // var tempBoundingBox = this.shapeCont.getBBox();\r\n if (this.currentBoxContains(tempBoundingBox)) {\r\n return;\r\n }\r\n var changed = false;\r\n if (this.currentBBox.w !== tempBoundingBox.width) {\r\n this.currentBBox.w = tempBoundingBox.width;\r\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\r\n changed = true;\r\n }\r\n if (this.currentBBox.h !== tempBoundingBox.height) {\r\n this.currentBBox.h = tempBoundingBox.height;\r\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\r\n changed = true;\r\n }\r\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\r\n this.currentBBox.w = tempBoundingBox.width;\r\n this.currentBBox.h = tempBoundingBox.height;\r\n this.currentBBox.x = tempBoundingBox.x;\r\n this.currentBBox.y = tempBoundingBox.y;\r\n\r\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\r\n var shapeStyle = this.shapeCont.style;\r\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\r\n shapeStyle.transform = shapeTransform;\r\n shapeStyle.webkitTransform = shapeTransform;\r\n }\r\n }\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement,\r\nRenderableDOMElement, ITextElement, createSizedArray, createTag, styleDiv, createNS, lineJoinEnum, lineCapEnum */\r\n\r\nfunction HTextElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.textPaths = [];\r\n this.currentBBox = {\r\n x: 999999,\r\n y: -999999,\r\n h: 0,\r\n w: 0,\r\n };\r\n this.renderType = 'svg';\r\n this.isMasked = false;\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\r\n\r\nHTextElement.prototype.createContent = function () {\r\n this.isMasked = this.checkMasks();\r\n if (this.isMasked) {\r\n this.renderType = 'svg';\r\n this.compW = this.comp.data.w;\r\n this.compH = this.comp.data.h;\r\n this.svgElement.setAttribute('width', this.compW);\r\n this.svgElement.setAttribute('height', this.compH);\r\n var g = createNS('g');\r\n this.maskedElement.appendChild(g);\r\n this.innerElem = g;\r\n } else {\r\n this.renderType = 'html';\r\n this.innerElem = this.layerElement;\r\n }\r\n\r\n this.checkParenting();\r\n};\r\n\r\nHTextElement.prototype.buildNewText = function () {\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\r\n var innerElemStyle = this.innerElem.style;\r\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\r\n innerElemStyle.fill = textColor;\r\n innerElemStyle.color = textColor;\r\n if (documentData.sc) {\r\n innerElemStyle.stroke = this.buildColor(documentData.sc);\r\n innerElemStyle.strokeWidth = documentData.sw + 'px';\r\n }\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n if (!this.globalData.fontManager.chars) {\r\n innerElemStyle.fontSize = documentData.finalSize + 'px';\r\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\r\n if (fontData.fClass) {\r\n this.innerElem.className = fontData.fClass;\r\n } else {\r\n innerElemStyle.fontFamily = fontData.fFamily;\r\n var fWeight = documentData.fWeight;\r\n var fStyle = documentData.fStyle;\r\n innerElemStyle.fontStyle = fStyle;\r\n innerElemStyle.fontWeight = fWeight;\r\n }\r\n }\r\n var i;\r\n var len;\r\n\r\n var letters = documentData.l;\r\n len = letters.length;\r\n var tSpan;\r\n var tParent;\r\n var tCont;\r\n var matrixHelper = this.mHelper;\r\n var shapes;\r\n var shapeStr = '';\r\n var cnt = 0;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.globalData.fontManager.chars) {\r\n if (!this.textPaths[cnt]) {\r\n tSpan = createNS('path');\r\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\r\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\r\n tSpan.setAttribute('stroke-miterlimit', '4');\r\n } else {\r\n tSpan = this.textPaths[cnt];\r\n }\r\n if (!this.isMasked) {\r\n if (this.textSpans[cnt]) {\r\n tParent = this.textSpans[cnt];\r\n tCont = tParent.children[0];\r\n } else {\r\n tParent = createTag('div');\r\n tParent.style.lineHeight = 0;\r\n tCont = createNS('svg');\r\n tCont.appendChild(tSpan);\r\n styleDiv(tParent);\r\n }\r\n }\r\n } else if (!this.isMasked) {\r\n if (this.textSpans[cnt]) {\r\n tParent = this.textSpans[cnt];\r\n tSpan = this.textPaths[cnt];\r\n } else {\r\n tParent = createTag('span');\r\n styleDiv(tParent);\r\n tSpan = createTag('span');\r\n styleDiv(tSpan);\r\n tParent.appendChild(tSpan);\r\n }\r\n } else {\r\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\r\n }\r\n // tSpan.setAttribute('visibility', 'hidden');\r\n if (this.globalData.fontManager.chars) {\r\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n var shapeData;\r\n if (charData) {\r\n shapeData = charData.data;\r\n } else {\r\n shapeData = null;\r\n }\r\n matrixHelper.reset();\r\n if (shapeData && shapeData.shapes) {\r\n shapes = shapeData.shapes[0].it;\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n shapeStr = this.createPathShape(matrixHelper, shapes);\r\n tSpan.setAttribute('d', shapeStr);\r\n }\r\n if (!this.isMasked) {\r\n this.innerElem.appendChild(tParent);\r\n if (shapeData && shapeData.shapes) {\r\n // document.body.appendChild is needed to get exact measure of shape\r\n document.body.appendChild(tCont);\r\n var boundingBox = tCont.getBBox();\r\n tCont.setAttribute('width', boundingBox.width + 2);\r\n tCont.setAttribute('height', boundingBox.height + 2);\r\n tCont.setAttribute('viewBox', (boundingBox.x - 1) + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\r\n var tContStyle = tCont.style;\r\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\r\n tContStyle.transform = tContTranslation;\r\n tContStyle.webkitTransform = tContTranslation;\r\n\r\n letters[i].yOffset = boundingBox.y - 1;\r\n } else {\r\n tCont.setAttribute('width', 1);\r\n tCont.setAttribute('height', 1);\r\n }\r\n tParent.appendChild(tCont);\r\n } else {\r\n this.innerElem.appendChild(tSpan);\r\n }\r\n } else {\r\n tSpan.textContent = letters[i].val;\r\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\r\n if (!this.isMasked) {\r\n this.innerElem.appendChild(tParent);\r\n //\r\n var tStyle = tSpan.style;\r\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\r\n tStyle.transform = tSpanTranslation;\r\n tStyle.webkitTransform = tSpanTranslation;\r\n } else {\r\n this.innerElem.appendChild(tSpan);\r\n }\r\n }\r\n //\r\n if (!this.isMasked) {\r\n this.textSpans[cnt] = tParent;\r\n } else {\r\n this.textSpans[cnt] = tSpan;\r\n }\r\n this.textSpans[cnt].style.display = 'block';\r\n this.textPaths[cnt] = tSpan;\r\n cnt += 1;\r\n }\r\n while (cnt < this.textSpans.length) {\r\n this.textSpans[cnt].style.display = 'none';\r\n cnt += 1;\r\n }\r\n};\r\n\r\nHTextElement.prototype.renderInnerContent = function () {\r\n var svgStyle;\r\n if (this.data.singleShape) {\r\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\r\n return;\r\n } if (this.isMasked && this.finalTransform._matMdf) {\r\n // Todo Benchmark if using this is better than getBBox\r\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\r\n svgStyle = this.svgElement.style;\r\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\r\n svgStyle.transform = translation;\r\n svgStyle.webkitTransform = translation;\r\n }\r\n }\r\n\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\r\n return;\r\n }\r\n var i;\r\n var len;\r\n var count = 0;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n\r\n var letters = this.textProperty.currentData.l;\r\n\r\n len = letters.length;\r\n var renderedLetter;\r\n var textSpan;\r\n var textPath;\r\n for (i = 0; i < len; i += 1) {\r\n if (letters[i].n) {\r\n count += 1;\r\n } else {\r\n textSpan = this.textSpans[i];\r\n textPath = this.textPaths[i];\r\n renderedLetter = renderedLetters[count];\r\n count += 1;\r\n if (renderedLetter._mdf.m) {\r\n if (!this.isMasked) {\r\n textSpan.style.webkitTransform = renderedLetter.m;\r\n textSpan.style.transform = renderedLetter.m;\r\n } else {\r\n textSpan.setAttribute('transform', renderedLetter.m);\r\n }\r\n }\r\n /// /textSpan.setAttribute('opacity',renderedLetter.o);\r\n textSpan.style.opacity = renderedLetter.o;\r\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\r\n textPath.setAttribute('stroke-width', renderedLetter.sw);\r\n }\r\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\r\n textPath.setAttribute('stroke', renderedLetter.sc);\r\n }\r\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\r\n textPath.setAttribute('fill', renderedLetter.fc);\r\n textPath.style.color = renderedLetter.fc;\r\n }\r\n }\r\n }\r\n\r\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\r\n var boundingBox = this.innerElem.getBBox();\r\n\r\n if (this.currentBBox.w !== boundingBox.width) {\r\n this.currentBBox.w = boundingBox.width;\r\n this.svgElement.setAttribute('width', boundingBox.width);\r\n }\r\n if (this.currentBBox.h !== boundingBox.height) {\r\n this.currentBBox.h = boundingBox.height;\r\n this.svgElement.setAttribute('height', boundingBox.height);\r\n }\r\n\r\n var margin = 1;\r\n if (this.currentBBox.w !== (boundingBox.width + margin * 2) || this.currentBBox.h !== (boundingBox.height + margin * 2) || this.currentBBox.x !== (boundingBox.x - margin) || this.currentBBox.y !== (boundingBox.y - margin)) {\r\n this.currentBBox.w = boundingBox.width + margin * 2;\r\n this.currentBBox.h = boundingBox.height + margin * 2;\r\n this.currentBBox.x = boundingBox.x - margin;\r\n this.currentBBox.y = boundingBox.y - margin;\r\n\r\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\r\n svgStyle = this.svgElement.style;\r\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\r\n svgStyle.transform = svgTransform;\r\n svgStyle.webkitTransform = svgTransform;\r\n }\r\n }\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement,\r\nFrameElement, RenderableElement, createNS */\r\n\r\nfunction HImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initElement(data, globalData, comp);\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\r\n\r\nHImageElement.prototype.createContent = function () {\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n var img = new Image();\r\n\r\n if (this.data.hasMask) {\r\n this.imageElem = createNS('image');\r\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\r\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\r\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\r\n this.layerElement.appendChild(this.imageElem);\r\n this.baseElement.setAttribute('width', this.assetData.w);\r\n this.baseElement.setAttribute('height', this.assetData.h);\r\n } else {\r\n this.layerElement.appendChild(img);\r\n }\r\n img.crossOrigin = 'anonymous';\r\n img.src = assetPath;\r\n if (this.data.ln) {\r\n this.baseElement.setAttribute('id', this.data.ln);\r\n }\r\n};\r\n\r\n/* global PropertyFactory, degToRads, Matrix, extendPrototype, BaseElement, FrameElement, HierarchyElement */\r\n\r\nfunction HCameraElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initHierarchy();\r\n var getProp = PropertyFactory.getProp;\r\n this.pe = getProp(this, data.pe, 0, 0, this);\r\n if (data.ks.p.s) {\r\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\r\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\r\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\r\n } else {\r\n this.p = getProp(this, data.ks.p, 1, 0, this);\r\n }\r\n if (data.ks.a) {\r\n this.a = getProp(this, data.ks.a, 1, 0, this);\r\n }\r\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\r\n var i;\r\n var len = data.ks.or.k.length;\r\n for (i = 0; i < len; i += 1) {\r\n data.ks.or.k[i].to = null;\r\n data.ks.or.k[i].ti = null;\r\n }\r\n }\r\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\r\n this.or.sh = true;\r\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\r\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\r\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\r\n this.mat = new Matrix();\r\n this._prevMat = new Matrix();\r\n this._isFirstFrame = true;\r\n\r\n // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\r\n this.finalTransform = {\r\n mProp: this,\r\n };\r\n}\r\nextendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\r\n\r\nHCameraElement.prototype.setup = function () {\r\n var i;\r\n var len = this.comp.threeDElements.length;\r\n var comp;\r\n var perspectiveStyle;\r\n var containerStyle;\r\n for (i = 0; i < len; i += 1) {\r\n // [perspectiveElem,container]\r\n comp = this.comp.threeDElements[i];\r\n if (comp.type === '3d') {\r\n perspectiveStyle = comp.perspectiveElem.style;\r\n containerStyle = comp.container.style;\r\n var perspective = this.pe.v + 'px';\r\n var origin = '0px 0px 0px';\r\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\r\n perspectiveStyle.perspective = perspective;\r\n perspectiveStyle.webkitPerspective = perspective;\r\n containerStyle.transformOrigin = origin;\r\n containerStyle.mozTransformOrigin = origin;\r\n containerStyle.webkitTransformOrigin = origin;\r\n perspectiveStyle.transform = matrix;\r\n perspectiveStyle.webkitTransform = matrix;\r\n }\r\n }\r\n};\r\n\r\nHCameraElement.prototype.createElements = function () {\r\n};\r\n\r\nHCameraElement.prototype.hide = function () {\r\n};\r\n\r\nHCameraElement.prototype.renderFrame = function () {\r\n var _mdf = this._isFirstFrame;\r\n var i;\r\n var len;\r\n if (this.hierarchy) {\r\n len = this.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\r\n }\r\n }\r\n if (_mdf || this.pe._mdf || (this.p && this.p._mdf) || (this.px && (this.px._mdf || this.py._mdf || this.pz._mdf)) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || (this.a && this.a._mdf)) {\r\n this.mat.reset();\r\n\r\n if (this.hierarchy) {\r\n len = this.hierarchy.length - 1;\r\n for (i = len; i >= 0; i -= 1) {\r\n var mTransf = this.hierarchy[i].finalTransform.mProp;\r\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\r\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\r\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\r\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\r\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\r\n }\r\n }\r\n if (this.p) {\r\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\r\n } else {\r\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\r\n }\r\n if (this.a) {\r\n var diffVector;\r\n if (this.p) {\r\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\r\n } else {\r\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\r\n }\r\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2));\r\n // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\r\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\r\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\r\n var mRotationX = (Math.atan2(lookDir[1], lookLengthOnXZ));\r\n var mRotationY = (Math.atan2(lookDir[0], -lookDir[2]));\r\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\r\n }\r\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\r\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\r\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\r\n this.mat.translate(0, 0, this.pe.v);\r\n\r\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\r\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\r\n len = this.comp.threeDElements.length;\r\n var comp;\r\n var perspectiveStyle;\r\n var containerStyle;\r\n for (i = 0; i < len; i += 1) {\r\n comp = this.comp.threeDElements[i];\r\n if (comp.type === '3d') {\r\n if (hasMatrixChanged) {\r\n var matValue = this.mat.toCSS();\r\n containerStyle = comp.container.style;\r\n containerStyle.transform = matValue;\r\n containerStyle.webkitTransform = matValue;\r\n }\r\n if (this.pe._mdf) {\r\n perspectiveStyle = comp.perspectiveElem.style;\r\n perspectiveStyle.perspective = this.pe.v + 'px';\r\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\r\n }\r\n }\r\n }\r\n this.mat.clone(this._prevMat);\r\n }\r\n }\r\n this._isFirstFrame = false;\r\n};\r\n\r\nHCameraElement.prototype.prepareFrame = function (num) {\r\n this.prepareProperties(num, true);\r\n};\r\n\r\nHCameraElement.prototype.destroy = function () {\r\n};\r\nHCameraElement.prototype.getBaseElement = function () { return null; };\r\n\r\nfunction HEffects() {\r\n}\r\nHEffects.prototype.renderFrame = function () {};\r\n\r\n/* global createTag, AnimationItem */\r\n/* exported animationManager */\r\n\r\nvar animationManager = (function () {\r\n var moduleOb = {};\r\n var registeredAnimations = [];\r\n var initTime = 0;\r\n var len = 0;\r\n var playingAnimationsNum = 0;\r\n var _stopped = true;\r\n var _isFrozen = false;\r\n\r\n function removeElement(ev) {\r\n var i = 0;\r\n var animItem = ev.target;\r\n while (i < len) {\r\n if (registeredAnimations[i].animation === animItem) {\r\n registeredAnimations.splice(i, 1);\r\n i -= 1;\r\n len -= 1;\r\n if (!animItem.isPaused) {\r\n subtractPlayingCount();\r\n }\r\n }\r\n i += 1;\r\n }\r\n }\r\n\r\n function registerAnimation(element, animationData) {\r\n if (!element) {\r\n return null;\r\n }\r\n var i = 0;\r\n while (i < len) {\r\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\r\n return registeredAnimations[i].animation;\r\n }\r\n i += 1;\r\n }\r\n var animItem = new AnimationItem();\r\n setupAnimation(animItem, element);\r\n animItem.setData(element, animationData);\r\n return animItem;\r\n }\r\n\r\n function getRegisteredAnimations() {\r\n var i;\r\n var lenAnims = registeredAnimations.length;\r\n var animations = [];\r\n for (i = 0; i < lenAnims; i += 1) {\r\n animations.push(registeredAnimations[i].animation);\r\n }\r\n return animations;\r\n }\r\n\r\n function addPlayingCount() {\r\n playingAnimationsNum += 1;\r\n activate();\r\n }\r\n\r\n function subtractPlayingCount() {\r\n playingAnimationsNum -= 1;\r\n }\r\n\r\n function setupAnimation(animItem, element) {\r\n animItem.addEventListener('destroy', removeElement);\r\n animItem.addEventListener('_active', addPlayingCount);\r\n animItem.addEventListener('_idle', subtractPlayingCount);\r\n registeredAnimations.push({ elem: element, animation: animItem });\r\n len += 1;\r\n }\r\n\r\n function loadAnimation(params) {\r\n var animItem = new AnimationItem();\r\n setupAnimation(animItem, null);\r\n animItem.setParams(params);\r\n return animItem;\r\n }\r\n\r\n function setSpeed(val, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setSpeed(val, animation);\r\n }\r\n }\r\n\r\n function setDirection(val, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setDirection(val, animation);\r\n }\r\n }\r\n\r\n function play(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.play(animation);\r\n }\r\n }\r\n function resume(nowTime) {\r\n var elapsedTime = nowTime - initTime;\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.advanceTime(elapsedTime);\r\n }\r\n initTime = nowTime;\r\n if (playingAnimationsNum && !_isFrozen) {\r\n window.requestAnimationFrame(resume);\r\n } else {\r\n _stopped = true;\r\n }\r\n }\r\n\r\n function first(nowTime) {\r\n initTime = nowTime;\r\n window.requestAnimationFrame(resume);\r\n }\r\n\r\n function pause(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.pause(animation);\r\n }\r\n }\r\n\r\n function goToAndStop(value, isFrame, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\r\n }\r\n }\r\n\r\n function stop(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.stop(animation);\r\n }\r\n }\r\n\r\n function togglePause(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.togglePause(animation);\r\n }\r\n }\r\n\r\n function destroy(animation) {\r\n var i;\r\n for (i = (len - 1); i >= 0; i -= 1) {\r\n registeredAnimations[i].animation.destroy(animation);\r\n }\r\n }\r\n\r\n function searchAnimations(animationData, standalone, renderer) {\r\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')),\r\n [].slice.call(document.getElementsByClassName('bodymovin')));\r\n var i;\r\n var lenAnims = animElements.length;\r\n for (i = 0; i < lenAnims; i += 1) {\r\n if (renderer) {\r\n animElements[i].setAttribute('data-bm-type', renderer);\r\n }\r\n registerAnimation(animElements[i], animationData);\r\n }\r\n if (standalone && lenAnims === 0) {\r\n if (!renderer) {\r\n renderer = 'svg';\r\n }\r\n var body = document.getElementsByTagName('body')[0];\r\n body.innerText = '';\r\n var div = createTag('div');\r\n div.style.width = '100%';\r\n div.style.height = '100%';\r\n div.setAttribute('data-bm-type', renderer);\r\n body.appendChild(div);\r\n registerAnimation(div, animationData);\r\n }\r\n }\r\n\r\n function resize() {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.resize();\r\n }\r\n }\r\n\r\n function activate() {\r\n if (!_isFrozen && playingAnimationsNum) {\r\n if (_stopped) {\r\n window.requestAnimationFrame(first);\r\n _stopped = false;\r\n }\r\n }\r\n }\r\n\r\n function freeze() {\r\n _isFrozen = true;\r\n }\r\n\r\n function unfreeze() {\r\n _isFrozen = false;\r\n activate();\r\n }\r\n\r\n function setVolume(val, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setVolume(val, animation);\r\n }\r\n }\r\n\r\n function mute(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.mute(animation);\r\n }\r\n }\r\n\r\n function unmute(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.unmute(animation);\r\n }\r\n }\r\n\r\n moduleOb.registerAnimation = registerAnimation;\r\n moduleOb.loadAnimation = loadAnimation;\r\n moduleOb.setSpeed = setSpeed;\r\n moduleOb.setDirection = setDirection;\r\n moduleOb.play = play;\r\n moduleOb.pause = pause;\r\n moduleOb.stop = stop;\r\n moduleOb.togglePause = togglePause;\r\n moduleOb.searchAnimations = searchAnimations;\r\n moduleOb.resize = resize;\r\n // moduleOb.start = start;\r\n moduleOb.goToAndStop = goToAndStop;\r\n moduleOb.destroy = destroy;\r\n moduleOb.freeze = freeze;\r\n moduleOb.unfreeze = unfreeze;\r\n moduleOb.setVolume = setVolume;\r\n moduleOb.mute = mute;\r\n moduleOb.unmute = unmute;\r\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\r\n return moduleOb;\r\n}());\r\n\r\n/* global createElementID, subframeEnabled, ProjectInterface, ImagePreloader, audioControllerFactory, extendPrototype, BaseEvent,\r\nCanvasRenderer, SVGRenderer, HybridRenderer, dataManager, expressionsPlugin, BMEnterFrameEvent, BMCompleteLoopEvent,\r\nBMCompleteEvent, BMSegmentStartEvent, BMDestroyEvent, BMEnterFrameEvent, BMCompleteLoopEvent, BMCompleteEvent, BMSegmentStartEvent,\r\nBMDestroyEvent, BMRenderFrameErrorEvent, BMConfigErrorEvent, markerParser */\r\n\r\nvar AnimationItem = function () {\r\n this._cbs = [];\r\n this.name = '';\r\n this.path = '';\r\n this.isLoaded = false;\r\n this.currentFrame = 0;\r\n this.currentRawFrame = 0;\r\n this.firstFrame = 0;\r\n this.totalFrames = 0;\r\n this.frameRate = 0;\r\n this.frameMult = 0;\r\n this.playSpeed = 1;\r\n this.playDirection = 1;\r\n this.playCount = 0;\r\n this.animationData = {};\r\n this.assets = [];\r\n this.isPaused = true;\r\n this.autoplay = false;\r\n this.loop = true;\r\n this.renderer = null;\r\n this.animationID = createElementID();\r\n this.assetsPath = '';\r\n this.timeCompleted = 0;\r\n this.segmentPos = 0;\r\n this.isSubframeEnabled = subframeEnabled;\r\n this.segments = [];\r\n this._idle = true;\r\n this._completedLoop = false;\r\n this.projectInterface = ProjectInterface();\r\n this.imagePreloader = new ImagePreloader();\r\n this.audioController = audioControllerFactory();\r\n this.markers = [];\r\n this.configAnimation = this.configAnimation.bind(this);\r\n this.onSetupError = this.onSetupError.bind(this);\r\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\r\n};\r\n\r\nextendPrototype([BaseEvent], AnimationItem);\r\n\r\nAnimationItem.prototype.setParams = function (params) {\r\n if (params.wrapper || params.container) {\r\n this.wrapper = params.wrapper || params.container;\r\n }\r\n var animType = 'svg';\r\n if (params.animType) {\r\n animType = params.animType;\r\n } else if (params.renderer) {\r\n animType = params.renderer;\r\n }\r\n switch (animType) {\r\n case 'canvas':\r\n this.renderer = new CanvasRenderer(this, params.rendererSettings);\r\n break;\r\n case 'svg':\r\n this.renderer = new SVGRenderer(this, params.rendererSettings);\r\n break;\r\n default:\r\n this.renderer = new HybridRenderer(this, params.rendererSettings);\r\n break;\r\n }\r\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\r\n this.renderer.setProjectInterface(this.projectInterface);\r\n this.animType = animType;\r\n if (params.loop === ''\r\n || params.loop === null\r\n || params.loop === undefined\r\n || params.loop === true) {\r\n this.loop = true;\r\n } else if (params.loop === false) {\r\n this.loop = false;\r\n } else {\r\n this.loop = parseInt(params.loop, 10);\r\n }\r\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\r\n this.name = params.name ? params.name : '';\r\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\r\n this.assetsPath = params.assetsPath;\r\n this.initialSegment = params.initialSegment;\r\n if (params.audioFactory) {\r\n this.audioController.setAudioFactory(params.audioFactory);\r\n }\r\n if (params.animationData) {\r\n this.setupAnimation(params.animationData);\r\n } else if (params.path) {\r\n if (params.path.lastIndexOf('\\\\') !== -1) {\r\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\r\n } else {\r\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\r\n }\r\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\r\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\r\n dataManager.loadAnimation(\r\n params.path,\r\n this.configAnimation,\r\n this.onSetupError\r\n );\r\n }\r\n};\r\n\r\nAnimationItem.prototype.onSetupError = function () {\r\n this.trigger('data_failed');\r\n};\r\n\r\nAnimationItem.prototype.setupAnimation = function (data) {\r\n dataManager.completeAnimation(\r\n data,\r\n this.configAnimation\r\n );\r\n};\r\n\r\nAnimationItem.prototype.setData = function (wrapper, animationData) {\r\n if (animationData) {\r\n if (typeof animationData !== 'object') {\r\n animationData = JSON.parse(animationData);\r\n }\r\n }\r\n var params = {\r\n wrapper: wrapper,\r\n animationData: animationData,\r\n };\r\n var wrapperAttributes = wrapper.attributes;\r\n\r\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-animation-path').value\r\n : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-path').value\r\n : wrapperAttributes.getNamedItem('bm-path')\r\n ? wrapperAttributes.getNamedItem('bm-path').value\r\n : '';\r\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-type').value\r\n : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-type').value\r\n : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('bm-type').value\r\n : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value\r\n : wrapperAttributes.getNamedItem('bm-renderer')\r\n ? wrapperAttributes.getNamedItem('bm-renderer').value\r\n : 'canvas';\r\n\r\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-loop').value\r\n : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-loop').value\r\n : wrapperAttributes.getNamedItem('bm-loop')\r\n ? wrapperAttributes.getNamedItem('bm-loop').value\r\n : '';\r\n if (loop === 'false') {\r\n params.loop = false;\r\n } else if (loop === 'true') {\r\n params.loop = true;\r\n } else if (loop !== '') {\r\n params.loop = parseInt(loop, 10);\r\n }\r\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value\r\n : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value\r\n : wrapperAttributes.getNamedItem('bm-autoplay')\r\n ? wrapperAttributes.getNamedItem('bm-autoplay').value\r\n : true;\r\n params.autoplay = autoplay !== 'false';\r\n\r\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-name').value\r\n : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-name').value\r\n : wrapperAttributes.getNamedItem('bm-name')\r\n ? wrapperAttributes.getNamedItem('bm-name').value\r\n : '';\r\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value\r\n : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value\r\n : wrapperAttributes.getNamedItem('bm-prerender')\r\n ? wrapperAttributes.getNamedItem('bm-prerender').value\r\n : '';\r\n\r\n if (prerender === 'false') {\r\n params.prerender = false;\r\n }\r\n this.setParams(params);\r\n};\r\n\r\nAnimationItem.prototype.includeLayers = function (data) {\r\n if (data.op > this.animationData.op) {\r\n this.animationData.op = data.op;\r\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\r\n }\r\n var layers = this.animationData.layers;\r\n var i;\r\n var len = layers.length;\r\n var newLayers = data.layers;\r\n var j;\r\n var jLen = newLayers.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n i = 0;\r\n while (i < len) {\r\n if (layers[i].id === newLayers[j].id) {\r\n layers[i] = newLayers[j];\r\n break;\r\n }\r\n i += 1;\r\n }\r\n }\r\n if (data.chars || data.fonts) {\r\n this.renderer.globalData.fontManager.addChars(data.chars);\r\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\r\n }\r\n if (data.assets) {\r\n len = data.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.animationData.assets.push(data.assets[i]);\r\n }\r\n }\r\n this.animationData.__complete = false;\r\n dataManager.completeAnimation(\r\n this.animationData,\r\n this.onSegmentComplete\r\n );\r\n};\r\n\r\nAnimationItem.prototype.onSegmentComplete = function (data) {\r\n this.animationData = data;\r\n if (expressionsPlugin) {\r\n expressionsPlugin.initExpressions(this);\r\n }\r\n this.loadNextSegment();\r\n};\r\n\r\nAnimationItem.prototype.loadNextSegment = function () {\r\n var segments = this.animationData.segments;\r\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\r\n this.trigger('data_ready');\r\n this.timeCompleted = this.totalFrames;\r\n return;\r\n }\r\n var segment = segments.shift();\r\n this.timeCompleted = segment.time * this.frameRate;\r\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\r\n this.segmentPos += 1;\r\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\r\n this.trigger('data_failed');\r\n }.bind(this));\r\n};\r\n\r\nAnimationItem.prototype.loadSegments = function () {\r\n var segments = this.animationData.segments;\r\n if (!segments) {\r\n this.timeCompleted = this.totalFrames;\r\n }\r\n this.loadNextSegment();\r\n};\r\n\r\nAnimationItem.prototype.imagesLoaded = function () {\r\n this.trigger('loaded_images');\r\n this.checkLoaded();\r\n};\r\n\r\nAnimationItem.prototype.preloadImages = function () {\r\n this.imagePreloader.setAssetsPath(this.assetsPath);\r\n this.imagePreloader.setPath(this.path);\r\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\r\n};\r\n\r\nAnimationItem.prototype.configAnimation = function (animData) {\r\n if (!this.renderer) {\r\n return;\r\n }\r\n try {\r\n this.animationData = animData;\r\n if (this.initialSegment) {\r\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\r\n this.firstFrame = Math.round(this.initialSegment[0]);\r\n } else {\r\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\r\n this.firstFrame = Math.round(this.animationData.ip);\r\n }\r\n this.renderer.configAnimation(animData);\r\n if (!animData.assets) {\r\n animData.assets = [];\r\n }\r\n\r\n this.assets = this.animationData.assets;\r\n this.frameRate = this.animationData.fr;\r\n this.frameMult = this.animationData.fr / 1000;\r\n this.renderer.searchExtraCompositions(animData.assets);\r\n this.markers = markerParser(animData.markers || []);\r\n this.trigger('config_ready');\r\n this.preloadImages();\r\n this.loadSegments();\r\n this.updaFrameModifier();\r\n this.waitForFontsLoaded();\r\n if (this.isPaused) {\r\n this.audioController.pause();\r\n }\r\n } catch (error) {\r\n this.triggerConfigError(error);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.waitForFontsLoaded = function () {\r\n if (!this.renderer) {\r\n return;\r\n }\r\n if (this.renderer.globalData.fontManager.isLoaded) {\r\n this.checkLoaded();\r\n } else {\r\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.checkLoaded = function () {\r\n if (!this.isLoaded\r\n && this.renderer.globalData.fontManager.isLoaded\r\n && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas')\r\n && (this.imagePreloader.loadedFootages())\r\n ) {\r\n this.isLoaded = true;\r\n if (expressionsPlugin) {\r\n expressionsPlugin.initExpressions(this);\r\n }\r\n this.renderer.initItems();\r\n setTimeout(function () {\r\n this.trigger('DOMLoaded');\r\n }.bind(this), 0);\r\n this.gotoFrame();\r\n if (this.autoplay) {\r\n this.play();\r\n }\r\n }\r\n};\r\n\r\nAnimationItem.prototype.resize = function () {\r\n this.renderer.updateContainerSize();\r\n};\r\n\r\nAnimationItem.prototype.setSubframe = function (flag) {\r\n this.isSubframeEnabled = !!flag;\r\n};\r\n\r\nAnimationItem.prototype.gotoFrame = function () {\r\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\r\n\r\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\r\n this.currentFrame = this.timeCompleted;\r\n }\r\n this.trigger('enterFrame');\r\n this.renderFrame();\r\n this.trigger('drawnFrame');\r\n};\r\n\r\nAnimationItem.prototype.renderFrame = function () {\r\n if (this.isLoaded === false || !this.renderer) {\r\n return;\r\n }\r\n try {\r\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\r\n } catch (error) {\r\n this.triggerRenderFrameError(error);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.play = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n if (this.isPaused === true) {\r\n this.isPaused = false;\r\n this.audioController.resume();\r\n if (this._idle) {\r\n this._idle = false;\r\n this.trigger('_active');\r\n }\r\n }\r\n};\r\n\r\nAnimationItem.prototype.pause = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n if (this.isPaused === false) {\r\n this.isPaused = true;\r\n this._idle = true;\r\n this.trigger('_idle');\r\n this.audioController.pause();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.togglePause = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n if (this.isPaused === true) {\r\n this.play();\r\n } else {\r\n this.pause();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.stop = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.pause();\r\n this.playCount = 0;\r\n this._completedLoop = false;\r\n this.setCurrentRawFrameValue(0);\r\n};\r\n\r\nAnimationItem.prototype.getMarkerData = function (markerName) {\r\n var marker;\r\n for (var i = 0; i < this.markers.length; i += 1) {\r\n marker = this.markers[i];\r\n if (marker.payload && marker.payload.name === markerName) {\r\n return marker;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nAnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n var numValue = Number(value);\r\n if (isNaN(numValue)) {\r\n var marker = this.getMarkerData(value);\r\n if (marker) {\r\n this.goToAndStop(marker.time, true);\r\n }\r\n } else if (isFrame) {\r\n this.setCurrentRawFrameValue(value);\r\n } else {\r\n this.setCurrentRawFrameValue(value * this.frameModifier);\r\n }\r\n this.pause();\r\n};\r\n\r\nAnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n var numValue = Number(value);\r\n if (isNaN(numValue)) {\r\n var marker = this.getMarkerData(value);\r\n if (marker) {\r\n if (!marker.duration) {\r\n this.goToAndStop(marker.time, true);\r\n } else {\r\n this.playSegments([marker.time, marker.time + marker.duration], true);\r\n }\r\n }\r\n } else {\r\n this.goToAndStop(numValue, isFrame, name);\r\n }\r\n this.play();\r\n};\r\n\r\nAnimationItem.prototype.advanceTime = function (value) {\r\n if (this.isPaused === true || this.isLoaded === false) {\r\n return;\r\n }\r\n var nextValue = this.currentRawFrame + value * this.frameModifier;\r\n var _isComplete = false;\r\n // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\r\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\r\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\r\n if (!this.loop || this.playCount === this.loop) {\r\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\r\n _isComplete = true;\r\n nextValue = this.totalFrames - 1;\r\n }\r\n } else if (nextValue >= this.totalFrames) {\r\n this.playCount += 1;\r\n if (!this.checkSegments(nextValue % this.totalFrames)) {\r\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\r\n this._completedLoop = true;\r\n this.trigger('loopComplete');\r\n }\r\n } else {\r\n this.setCurrentRawFrameValue(nextValue);\r\n }\r\n } else if (nextValue < 0) {\r\n if (!this.checkSegments(nextValue % this.totalFrames)) {\r\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) { // eslint-disable-line no-plusplus\r\n this.setCurrentRawFrameValue(this.totalFrames + (nextValue % this.totalFrames));\r\n if (!this._completedLoop) {\r\n this._completedLoop = true;\r\n } else {\r\n this.trigger('loopComplete');\r\n }\r\n } else {\r\n _isComplete = true;\r\n nextValue = 0;\r\n }\r\n }\r\n } else {\r\n this.setCurrentRawFrameValue(nextValue);\r\n }\r\n if (_isComplete) {\r\n this.setCurrentRawFrameValue(nextValue);\r\n this.pause();\r\n this.trigger('complete');\r\n }\r\n};\r\n\r\nAnimationItem.prototype.adjustSegment = function (arr, offset) {\r\n this.playCount = 0;\r\n if (arr[1] < arr[0]) {\r\n if (this.frameModifier > 0) {\r\n if (this.playSpeed < 0) {\r\n this.setSpeed(-this.playSpeed);\r\n } else {\r\n this.setDirection(-1);\r\n }\r\n }\r\n this.totalFrames = arr[0] - arr[1];\r\n this.timeCompleted = this.totalFrames;\r\n this.firstFrame = arr[1];\r\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\r\n } else if (arr[1] > arr[0]) {\r\n if (this.frameModifier < 0) {\r\n if (this.playSpeed < 0) {\r\n this.setSpeed(-this.playSpeed);\r\n } else {\r\n this.setDirection(1);\r\n }\r\n }\r\n this.totalFrames = arr[1] - arr[0];\r\n this.timeCompleted = this.totalFrames;\r\n this.firstFrame = arr[0];\r\n this.setCurrentRawFrameValue(0.001 + offset);\r\n }\r\n this.trigger('segmentStart');\r\n};\r\nAnimationItem.prototype.setSegment = function (init, end) {\r\n var pendingFrame = -1;\r\n if (this.isPaused) {\r\n if (this.currentRawFrame + this.firstFrame < init) {\r\n pendingFrame = init;\r\n } else if (this.currentRawFrame + this.firstFrame > end) {\r\n pendingFrame = end - init;\r\n }\r\n }\r\n\r\n this.firstFrame = init;\r\n this.totalFrames = end - init;\r\n this.timeCompleted = this.totalFrames;\r\n if (pendingFrame !== -1) {\r\n this.goToAndStop(pendingFrame, true);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.playSegments = function (arr, forceFlag) {\r\n if (forceFlag) {\r\n this.segments.length = 0;\r\n }\r\n if (typeof arr[0] === 'object') {\r\n var i;\r\n var len = arr.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.segments.push(arr[i]);\r\n }\r\n } else {\r\n this.segments.push(arr);\r\n }\r\n if (this.segments.length && forceFlag) {\r\n this.adjustSegment(this.segments.shift(), 0);\r\n }\r\n if (this.isPaused) {\r\n this.play();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.resetSegments = function (forceFlag) {\r\n this.segments.length = 0;\r\n this.segments.push([this.animationData.ip, this.animationData.op]);\r\n if (forceFlag) {\r\n this.checkSegments(0);\r\n }\r\n};\r\nAnimationItem.prototype.checkSegments = function (offset) {\r\n if (this.segments.length) {\r\n this.adjustSegment(this.segments.shift(), offset);\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nAnimationItem.prototype.destroy = function (name) {\r\n if ((name && this.name !== name) || !this.renderer) {\r\n return;\r\n }\r\n this.renderer.destroy();\r\n this.imagePreloader.destroy();\r\n this.trigger('destroy');\r\n this._cbs = null;\r\n this.onEnterFrame = null;\r\n this.onLoopComplete = null;\r\n this.onComplete = null;\r\n this.onSegmentStart = null;\r\n this.onDestroy = null;\r\n this.renderer = null;\r\n this.renderer = null;\r\n this.imagePreloader = null;\r\n this.projectInterface = null;\r\n};\r\n\r\nAnimationItem.prototype.setCurrentRawFrameValue = function (value) {\r\n this.currentRawFrame = value;\r\n this.gotoFrame();\r\n};\r\n\r\nAnimationItem.prototype.setSpeed = function (val) {\r\n this.playSpeed = val;\r\n this.updaFrameModifier();\r\n};\r\n\r\nAnimationItem.prototype.setDirection = function (val) {\r\n this.playDirection = val < 0 ? -1 : 1;\r\n this.updaFrameModifier();\r\n};\r\n\r\nAnimationItem.prototype.setVolume = function (val, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.audioController.setVolume(val);\r\n};\r\n\r\nAnimationItem.prototype.getVolume = function () {\r\n return this.audioController.getVolume();\r\n};\r\n\r\nAnimationItem.prototype.mute = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.audioController.mute();\r\n};\r\n\r\nAnimationItem.prototype.unmute = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.audioController.unmute();\r\n};\r\n\r\nAnimationItem.prototype.updaFrameModifier = function () {\r\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\r\n this.audioController.setRate(this.playSpeed * this.playDirection);\r\n};\r\n\r\nAnimationItem.prototype.getPath = function () {\r\n return this.path;\r\n};\r\n\r\nAnimationItem.prototype.getAssetsPath = function (assetData) {\r\n var path = '';\r\n if (assetData.e) {\r\n path = assetData.p;\r\n } else if (this.assetsPath) {\r\n var imagePath = assetData.p;\r\n if (imagePath.indexOf('images/') !== -1) {\r\n imagePath = imagePath.split('/')[1];\r\n }\r\n path = this.assetsPath + imagePath;\r\n } else {\r\n path = this.path;\r\n path += assetData.u ? assetData.u : '';\r\n path += assetData.p;\r\n }\r\n return path;\r\n};\r\n\r\nAnimationItem.prototype.getAssetData = function (id) {\r\n var i = 0;\r\n var len = this.assets.length;\r\n while (i < len) {\r\n if (id === this.assets[i].id) {\r\n return this.assets[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n};\r\n\r\nAnimationItem.prototype.hide = function () {\r\n this.renderer.hide();\r\n};\r\n\r\nAnimationItem.prototype.show = function () {\r\n this.renderer.show();\r\n};\r\n\r\nAnimationItem.prototype.getDuration = function (isFrame) {\r\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\r\n};\r\n\r\nAnimationItem.prototype.trigger = function (name) {\r\n if (this._cbs && this._cbs[name]) {\r\n switch (name) {\r\n case 'enterFrame':\r\n case 'drawnFrame':\r\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\r\n break;\r\n case 'loopComplete':\r\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\r\n break;\r\n case 'complete':\r\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\r\n break;\r\n case 'segmentStart':\r\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\r\n break;\r\n case 'destroy':\r\n this.triggerEvent(name, new BMDestroyEvent(name, this));\r\n break;\r\n default:\r\n this.triggerEvent(name);\r\n }\r\n }\r\n if (name === 'enterFrame' && this.onEnterFrame) {\r\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\r\n }\r\n if (name === 'loopComplete' && this.onLoopComplete) {\r\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\r\n }\r\n if (name === 'complete' && this.onComplete) {\r\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\r\n }\r\n if (name === 'segmentStart' && this.onSegmentStart) {\r\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\r\n }\r\n if (name === 'destroy' && this.onDestroy) {\r\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\r\n }\r\n};\r\n\r\nAnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\r\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\r\n this.triggerEvent('error', error);\r\n\r\n if (this.onError) {\r\n this.onError.call(this, error);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.triggerConfigError = function (nativeError) {\r\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\r\n this.triggerEvent('error', error);\r\n\r\n if (this.onError) {\r\n this.onError.call(this, error);\r\n }\r\n};\r\n\r\n/* global CompExpressionInterface, expressionsPlugin: writable */\r\n/* exported expressionsPlugin */\r\n\r\nvar Expressions = (function () {\r\n var ob = {};\r\n ob.initExpressions = initExpressions;\r\n\r\n function initExpressions(animation) {\r\n var stackCount = 0;\r\n var registers = [];\r\n\r\n function pushExpression() {\r\n stackCount += 1;\r\n }\r\n\r\n function popExpression() {\r\n stackCount -= 1;\r\n if (stackCount === 0) {\r\n releaseInstances();\r\n }\r\n }\r\n\r\n function registerExpressionProperty(expression) {\r\n if (registers.indexOf(expression) === -1) {\r\n registers.push(expression);\r\n }\r\n }\r\n\r\n function releaseInstances() {\r\n var i;\r\n var len = registers.length;\r\n for (i = 0; i < len; i += 1) {\r\n registers[i].release();\r\n }\r\n registers.length = 0;\r\n }\r\n\r\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\r\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\r\n animation.renderer.globalData.pushExpression = pushExpression;\r\n animation.renderer.globalData.popExpression = popExpression;\r\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\r\n }\r\n return ob;\r\n}());\r\n\r\nexpressionsPlugin = Expressions;\r\n\r\n/* eslint-disable camelcase, no-unused-vars */\r\n/* global BMMath, BezierFactory, createTypedArray, degToRads, shapePool */\r\n\r\nvar ExpressionManager = (function () {\r\n 'use strict';\r\n\r\n var ob = {};\r\n var Math = BMMath;\r\n var window = null;\r\n var document = null;\r\n var XMLHttpRequest = null;\r\n var fetch = null;\r\n var frames = null;\r\n\r\n function $bm_isInstanceOfArray(arr) {\r\n return arr.constructor === Array || arr.constructor === Float32Array;\r\n }\r\n\r\n function isNumerable(tOfV, v) {\r\n return tOfV === 'number' || tOfV === 'boolean' || tOfV === 'string' || v instanceof Number;\r\n }\r\n\r\n function $bm_neg(a) {\r\n var tOfA = typeof a;\r\n if (tOfA === 'number' || tOfA === 'boolean' || a instanceof Number) {\r\n return -a;\r\n }\r\n if ($bm_isInstanceOfArray(a)) {\r\n var i;\r\n var lenA = a.length;\r\n var retArr = [];\r\n for (i = 0; i < lenA; i += 1) {\r\n retArr[i] = -a[i];\r\n }\r\n return retArr;\r\n }\r\n if (a.propType) {\r\n return a.v;\r\n }\r\n return -a;\r\n }\r\n\r\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\r\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\r\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\r\n\r\n function sum(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n if (tOfA === 'string' || tOfB === 'string') {\r\n return a + b;\r\n }\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a + b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n a = a.slice(0);\r\n a[0] += b;\r\n return a;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n b = b.slice(0);\r\n b[0] = a + b[0];\r\n return b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\r\n var i = 0;\r\n var lenA = a.length;\r\n var lenB = b.length;\r\n var retArr = [];\r\n while (i < lenA || i < lenB) {\r\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\r\n retArr[i] = a[i] + b[i];\r\n } else {\r\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\r\n }\r\n i += 1;\r\n }\r\n return retArr;\r\n }\r\n return 0;\r\n }\r\n var add = sum;\r\n\r\n function sub(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n if (tOfA === 'string') {\r\n a = parseInt(a, 10);\r\n }\r\n if (tOfB === 'string') {\r\n b = parseInt(b, 10);\r\n }\r\n return a - b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n a = a.slice(0);\r\n a[0] -= b;\r\n return a;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n b = b.slice(0);\r\n b[0] = a - b[0];\r\n return b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\r\n var i = 0;\r\n var lenA = a.length;\r\n var lenB = b.length;\r\n var retArr = [];\r\n while (i < lenA || i < lenB) {\r\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\r\n retArr[i] = a[i] - b[i];\r\n } else {\r\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\r\n }\r\n i += 1;\r\n }\r\n return retArr;\r\n }\r\n return 0;\r\n }\r\n\r\n function mul(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n var arr;\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a * b;\r\n }\r\n\r\n var i;\r\n var len;\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n len = a.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a[i] * b;\r\n }\r\n return arr;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n len = b.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a * b[i];\r\n }\r\n return arr;\r\n }\r\n return 0;\r\n }\r\n\r\n function div(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n var arr;\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a / b;\r\n }\r\n var i;\r\n var len;\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n len = a.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a[i] / b;\r\n }\r\n return arr;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n len = b.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a / b[i];\r\n }\r\n return arr;\r\n }\r\n return 0;\r\n }\r\n function mod(a, b) {\r\n if (typeof a === 'string') {\r\n a = parseInt(a, 10);\r\n }\r\n if (typeof b === 'string') {\r\n b = parseInt(b, 10);\r\n }\r\n return a % b;\r\n }\r\n var $bm_sum = sum;\r\n var $bm_sub = sub;\r\n var $bm_mul = mul;\r\n var $bm_div = div;\r\n var $bm_mod = mod;\r\n\r\n function clamp(num, min, max) {\r\n if (min > max) {\r\n var mm = max;\r\n max = min;\r\n min = mm;\r\n }\r\n return Math.min(Math.max(num, min), max);\r\n }\r\n\r\n function radiansToDegrees(val) {\r\n return val / degToRads;\r\n }\r\n var radians_to_degrees = radiansToDegrees;\r\n\r\n function degreesToRadians(val) {\r\n return val * degToRads;\r\n }\r\n var degrees_to_radians = radiansToDegrees;\r\n\r\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\r\n\r\n function length(arr1, arr2) {\r\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\r\n arr2 = arr2 || 0;\r\n return Math.abs(arr1 - arr2);\r\n }\r\n if (!arr2) {\r\n arr2 = helperLengthArray;\r\n }\r\n var i;\r\n var len = Math.min(arr1.length, arr2.length);\r\n var addedLength = 0;\r\n for (i = 0; i < len; i += 1) {\r\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\r\n }\r\n return Math.sqrt(addedLength);\r\n }\r\n\r\n function normalize(vec) {\r\n return div(vec, length(vec));\r\n }\r\n\r\n function rgbToHsl(val) {\r\n var r = val[0]; var g = val[1]; var b = val[2];\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var h;\r\n var s;\r\n var l = (max + min) / 2;\r\n\r\n if (max === min) {\r\n h = 0; // achromatic\r\n s = 0; // achromatic\r\n } else {\r\n var d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n switch (max) {\r\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\r\n case g: h = (b - r) / d + 2; break;\r\n case b: h = (r - g) / d + 4; break;\r\n default: break;\r\n }\r\n h /= 6;\r\n }\r\n\r\n return [h, s, l, val[3]];\r\n }\r\n\r\n function hue2rgb(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\n function hslToRgb(val) {\r\n var h = val[0];\r\n var s = val[1];\r\n var l = val[2];\r\n\r\n var r;\r\n var g;\r\n var b;\r\n\r\n if (s === 0) {\r\n r = l; // achromatic\r\n b = l; // achromatic\r\n g = l; // achromatic\r\n } else {\r\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n var p = 2 * l - q;\r\n r = hue2rgb(p, q, h + 1 / 3);\r\n g = hue2rgb(p, q, h);\r\n b = hue2rgb(p, q, h - 1 / 3);\r\n }\r\n\r\n return [r, g, b, val[3]];\r\n }\r\n\r\n function linear(t, tMin, tMax, value1, value2) {\r\n if (value1 === undefined || value2 === undefined) {\r\n value1 = tMin;\r\n value2 = tMax;\r\n tMin = 0;\r\n tMax = 1;\r\n }\r\n if (tMax < tMin) {\r\n var _tMin = tMax;\r\n tMax = tMin;\r\n tMin = _tMin;\r\n }\r\n if (t <= tMin) {\r\n return value1;\r\n } if (t >= tMax) {\r\n return value2;\r\n }\r\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\r\n if (!value1.length) {\r\n return value1 + (value2 - value1) * perc;\r\n }\r\n var i;\r\n var len = value1.length;\r\n var arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\r\n }\r\n return arr;\r\n }\r\n function random(min, max) {\r\n if (max === undefined) {\r\n if (min === undefined) {\r\n min = 0;\r\n max = 1;\r\n } else {\r\n max = min;\r\n min = undefined;\r\n }\r\n }\r\n if (max.length) {\r\n var i;\r\n var len = max.length;\r\n if (!min) {\r\n min = createTypedArray('float32', len);\r\n }\r\n var arr = createTypedArray('float32', len);\r\n var rnd = BMMath.random();\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = min[i] + rnd * (max[i] - min[i]);\r\n }\r\n return arr;\r\n }\r\n if (min === undefined) {\r\n min = 0;\r\n }\r\n var rndm = BMMath.random();\r\n return min + rndm * (max - min);\r\n }\r\n\r\n function createPath(points, inTangents, outTangents, closed) {\r\n var i;\r\n var len = points.length;\r\n var path = shapePool.newElement();\r\n path.setPathData(!!closed, len);\r\n var arrPlaceholder = [0, 0];\r\n var inVertexPoint;\r\n var outVertexPoint;\r\n for (i = 0; i < len; i += 1) {\r\n inVertexPoint = (inTangents && inTangents[i]) ? inTangents[i] : arrPlaceholder;\r\n outVertexPoint = (outTangents && outTangents[i]) ? outTangents[i] : arrPlaceholder;\r\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\r\n }\r\n return path;\r\n }\r\n\r\n function initiateExpression(elem, data, property) {\r\n var val = data.x;\r\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\r\n var _needsRandom = val.indexOf('random') !== -1;\r\n var elemType = elem.data.ty;\r\n var transform;\r\n var $bm_transform;\r\n var content;\r\n var effect;\r\n var thisProperty = property;\r\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\r\n Object.defineProperty(thisProperty, 'value', {\r\n get: function () {\r\n return thisProperty.v;\r\n },\r\n });\r\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\r\n elem.comp.displayStartTime = 0;\r\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\r\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\r\n var width = elem.data.sw ? elem.data.sw : 0;\r\n var height = elem.data.sh ? elem.data.sh : 0;\r\n var name = elem.data.nm;\r\n var loopIn;\r\n var loop_in;\r\n var loopOut;\r\n var loop_out;\r\n var smooth;\r\n var toWorld;\r\n var fromWorld;\r\n var fromComp;\r\n var toComp;\r\n var fromCompToSurface;\r\n var position;\r\n var rotation;\r\n var anchorPoint;\r\n var scale;\r\n var thisLayer;\r\n var thisComp;\r\n var mask;\r\n var valueAtTime;\r\n var velocityAtTime;\r\n\r\n var scoped_bm_rt;\r\n // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\r\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\r\n var numKeys = property.kf ? data.k.length : 0;\r\n\r\n var active = !this.data || this.data.hd !== true;\r\n\r\n var wiggle = function wiggle(freq, amp) {\r\n var iWiggle;\r\n var j;\r\n var lenWiggle = this.pv.length ? this.pv.length : 1;\r\n var addedAmps = createTypedArray('float32', lenWiggle);\r\n freq = 5;\r\n var iterations = Math.floor(time * freq);\r\n iWiggle = 0;\r\n j = 0;\r\n while (iWiggle < iterations) {\r\n // var rnd = BMMath.random();\r\n for (j = 0; j < lenWiggle; j += 1) {\r\n addedAmps[j] += -amp + amp * 2 * BMMath.random();\r\n // addedAmps[j] += -amp + amp*2*rnd;\r\n }\r\n iWiggle += 1;\r\n }\r\n // var rnd2 = BMMath.random();\r\n var periods = time * freq;\r\n var perc = periods - Math.floor(periods);\r\n var arr = createTypedArray('float32', lenWiggle);\r\n if (lenWiggle > 1) {\r\n for (j = 0; j < lenWiggle; j += 1) {\r\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc;\r\n // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\r\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\r\n }\r\n return arr;\r\n }\r\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\r\n }.bind(this);\r\n\r\n if (thisProperty.loopIn) {\r\n loopIn = thisProperty.loopIn.bind(thisProperty);\r\n loop_in = loopIn;\r\n }\r\n\r\n if (thisProperty.loopOut) {\r\n loopOut = thisProperty.loopOut.bind(thisProperty);\r\n loop_out = loopOut;\r\n }\r\n\r\n if (thisProperty.smooth) {\r\n smooth = thisProperty.smooth.bind(thisProperty);\r\n }\r\n\r\n function loopInDuration(type, duration) {\r\n return loopIn(type, duration, true);\r\n }\r\n\r\n function loopOutDuration(type, duration) {\r\n return loopOut(type, duration, true);\r\n }\r\n\r\n if (this.getValueAtTime) {\r\n valueAtTime = this.getValueAtTime.bind(this);\r\n }\r\n\r\n if (this.getVelocityAtTime) {\r\n velocityAtTime = this.getVelocityAtTime.bind(this);\r\n }\r\n\r\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\r\n\r\n function lookAt(elem1, elem2) {\r\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\r\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\r\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\r\n return [yaw, pitch, 0];\r\n }\r\n\r\n function easeOut(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function easeIn(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function ease(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function applyEase(fn, t, tMin, tMax, val1, val2) {\r\n if (val1 === undefined) {\r\n val1 = tMin;\r\n val2 = tMax;\r\n } else {\r\n t = (t - tMin) / (tMax - tMin);\r\n }\r\n if (t > 1) {\r\n t = 1;\r\n } else if (t < 0) {\r\n t = 0;\r\n }\r\n var mult = fn(t);\r\n if ($bm_isInstanceOfArray(val1)) {\r\n var iKey;\r\n var lenKey = val1.length;\r\n var arr = createTypedArray('float32', lenKey);\r\n for (iKey = 0; iKey < lenKey; iKey += 1) {\r\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\r\n }\r\n return arr;\r\n }\r\n return (val2 - val1) * mult + val1;\r\n }\r\n\r\n function nearestKey(time) {\r\n var iKey;\r\n var lenKey = data.k.length;\r\n var index;\r\n var keyTime;\r\n if (!data.k.length || typeof (data.k[0]) === 'number') {\r\n index = 0;\r\n keyTime = 0;\r\n } else {\r\n index = -1;\r\n time *= elem.comp.globalData.frameRate;\r\n if (time < data.k[0].t) {\r\n index = 1;\r\n keyTime = data.k[0].t;\r\n } else {\r\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\r\n if (time === data.k[iKey].t) {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n break;\r\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\r\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\r\n index = iKey + 2;\r\n keyTime = data.k[iKey + 1].t;\r\n } else {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n }\r\n break;\r\n }\r\n }\r\n if (index === -1) {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n }\r\n }\r\n }\r\n var obKey = {};\r\n obKey.index = index;\r\n obKey.time = keyTime / elem.comp.globalData.frameRate;\r\n return obKey;\r\n }\r\n\r\n function key(ind) {\r\n var obKey;\r\n var iKey;\r\n var lenKey;\r\n if (!data.k.length || typeof (data.k[0]) === 'number') {\r\n throw new Error('The property has no keyframe at index ' + ind);\r\n }\r\n ind -= 1;\r\n obKey = {\r\n time: data.k[ind].t / elem.comp.globalData.frameRate,\r\n value: [],\r\n };\r\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\r\n\r\n lenKey = arr.length;\r\n for (iKey = 0; iKey < lenKey; iKey += 1) {\r\n obKey[iKey] = arr[iKey];\r\n obKey.value[iKey] = arr[iKey];\r\n }\r\n return obKey;\r\n }\r\n\r\n function framesToTime(fr, fps) {\r\n if (!fps) {\r\n fps = elem.comp.globalData.frameRate;\r\n }\r\n return fr / fps;\r\n }\r\n\r\n function timeToFrames(t, fps) {\r\n if (!t && t !== 0) {\r\n t = time;\r\n }\r\n if (!fps) {\r\n fps = elem.comp.globalData.frameRate;\r\n }\r\n return t * fps;\r\n }\r\n\r\n function seedRandom(seed) {\r\n BMMath.seedrandom(randSeed + seed);\r\n }\r\n\r\n function sourceRectAtTime() {\r\n return elem.sourceRectAtTime();\r\n }\r\n\r\n function substring(init, end) {\r\n if (typeof value === 'string') {\r\n if (end === undefined) {\r\n return value.substring(init);\r\n }\r\n return value.substring(init, end);\r\n }\r\n return '';\r\n }\r\n\r\n function substr(init, end) {\r\n if (typeof value === 'string') {\r\n if (end === undefined) {\r\n return value.substr(init);\r\n }\r\n return value.substr(init, end);\r\n }\r\n return '';\r\n }\r\n\r\n function posterizeTime(framesPerSecond) {\r\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\r\n value = valueAtTime(time);\r\n }\r\n\r\n var time;\r\n var velocity;\r\n var value;\r\n var text;\r\n var textIndex;\r\n var textTotal;\r\n var selectorValue;\r\n var index = elem.data.ind;\r\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\r\n var parent;\r\n var randSeed = Math.floor(Math.random() * 1000000);\r\n var globalData = elem.globalData;\r\n function executeExpression(_value) {\r\n // globalData.pushExpression();\r\n value = _value;\r\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\r\n return value;\r\n }\r\n if (this.propType === 'textSelector') {\r\n textIndex = this.textIndex;\r\n textTotal = this.textTotal;\r\n selectorValue = this.selectorValue;\r\n }\r\n if (!thisLayer) {\r\n text = elem.layerInterface.text;\r\n thisLayer = elem.layerInterface;\r\n thisComp = elem.comp.compInterface;\r\n toWorld = thisLayer.toWorld.bind(thisLayer);\r\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\r\n fromComp = thisLayer.fromComp.bind(thisLayer);\r\n toComp = thisLayer.toComp.bind(thisLayer);\r\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\r\n fromCompToSurface = fromComp;\r\n }\r\n if (!transform) {\r\n transform = elem.layerInterface('ADBE Transform Group');\r\n $bm_transform = transform;\r\n if (transform) {\r\n anchorPoint = transform.anchorPoint;\r\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\r\n }\r\n }\r\n\r\n if (elemType === 4 && !content) {\r\n content = thisLayer('ADBE Root Vectors Group');\r\n }\r\n if (!effect) {\r\n effect = thisLayer(4);\r\n }\r\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\r\n if (hasParent && !parent) {\r\n parent = elem.hierarchy[0].layerInterface;\r\n }\r\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\r\n if (_needsRandom) {\r\n seedRandom(randSeed + time);\r\n }\r\n if (needsVelocity) {\r\n velocity = velocityAtTime(time);\r\n }\r\n expression_function();\r\n this.frameExpressionId = elem.globalData.frameId;\r\n\r\n // TODO: Check if it's possible to return on ShapeInterface the .v value\r\n if (scoped_bm_rt.propType === 'shape') {\r\n scoped_bm_rt = scoped_bm_rt.v;\r\n }\r\n // globalData.popExpression();\r\n return scoped_bm_rt;\r\n }\r\n return executeExpression;\r\n }\r\n\r\n ob.initiateExpression = initiateExpression;\r\n return ob;\r\n}());\r\n\r\n/* global ExpressionManager, createTypedArray */\r\n/* exported expressionHelpers */\r\n\r\nvar expressionHelpers = (function () {\r\n function searchExpressions(elem, data, prop) {\r\n if (data.x) {\r\n prop.k = true;\r\n prop.x = true;\r\n prop.initiateExpression = ExpressionManager.initiateExpression;\r\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\r\n }\r\n }\r\n\r\n function getValueAtTime(frameNum) {\r\n frameNum *= this.elem.globalData.frameRate;\r\n frameNum -= this.offsetTime;\r\n if (frameNum !== this._cachingAtTime.lastFrame) {\r\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\r\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\r\n this._cachingAtTime.lastFrame = frameNum;\r\n }\r\n return this._cachingAtTime.value;\r\n }\r\n\r\n function getSpeedAtTime(frameNum) {\r\n var delta = -0.01;\r\n var v1 = this.getValueAtTime(frameNum);\r\n var v2 = this.getValueAtTime(frameNum + delta);\r\n var speed = 0;\r\n if (v1.length) {\r\n var i;\r\n for (i = 0; i < v1.length; i += 1) {\r\n speed += Math.pow(v2[i] - v1[i], 2);\r\n }\r\n speed = Math.sqrt(speed) * 100;\r\n } else {\r\n speed = 0;\r\n }\r\n return speed;\r\n }\r\n\r\n function getVelocityAtTime(frameNum) {\r\n if (this.vel !== undefined) {\r\n return this.vel;\r\n }\r\n var delta = -0.001;\r\n // frameNum += this.elem.data.st;\r\n var v1 = this.getValueAtTime(frameNum);\r\n var v2 = this.getValueAtTime(frameNum + delta);\r\n var velocity;\r\n if (v1.length) {\r\n velocity = createTypedArray('float32', v1.length);\r\n var i;\r\n for (i = 0; i < v1.length; i += 1) {\r\n // removing frameRate\r\n // if needed, don't add it here\r\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\r\n velocity[i] = (v2[i] - v1[i]) / delta;\r\n }\r\n } else {\r\n velocity = (v2 - v1) / delta;\r\n }\r\n return velocity;\r\n }\r\n\r\n function getStaticValueAtTime() {\r\n return this.pv;\r\n }\r\n\r\n function setGroupProperty(propertyGroup) {\r\n this.propertyGroup = propertyGroup;\r\n }\r\n\r\n return {\r\n searchExpressions: searchExpressions,\r\n getSpeedAtTime: getSpeedAtTime,\r\n getVelocityAtTime: getVelocityAtTime,\r\n getValueAtTime: getValueAtTime,\r\n getStaticValueAtTime: getStaticValueAtTime,\r\n setGroupProperty: setGroupProperty,\r\n };\r\n}());\r\n\r\n/* global createTypedArray, Matrix, TransformPropertyFactory, expressionHelpers, PropertyFactory, expressionHelpers,\r\ninitialDefaultFrame, shapePool, ShapePropertyFactory, bez, extendPrototype, ExpressionManager, createSizedArray */\r\n\r\n(function addPropertyDecorator() {\r\n function loopOut(type, duration, durationFlag) {\r\n if (!this.k || !this.keyframes) {\r\n return this.pv;\r\n }\r\n type = type ? type.toLowerCase() : '';\r\n var currentFrame = this.comp.renderedFrame;\r\n var keyframes = this.keyframes;\r\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\r\n if (currentFrame <= lastKeyFrame) {\r\n return this.pv;\r\n }\r\n var cycleDuration;\r\n var firstKeyFrame;\r\n if (!durationFlag) {\r\n if (!duration || duration > keyframes.length - 1) {\r\n duration = keyframes.length - 1;\r\n }\r\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\r\n cycleDuration = lastKeyFrame - firstKeyFrame;\r\n } else {\r\n if (!duration) {\r\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\r\n } else {\r\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\r\n }\r\n firstKeyFrame = lastKeyFrame - cycleDuration;\r\n }\r\n var i;\r\n var len;\r\n var ret;\r\n if (type === 'pingpong') {\r\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\r\n if (iterations % 2 !== 0) {\r\n return this.getValueAtTime(((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n }\r\n } else if (type === 'offset') {\r\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\r\n if (this.pv.length) {\r\n ret = new Array(initV.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\r\n }\r\n return ret;\r\n }\r\n return (endV - initV) * repeats + current;\r\n } else if (type === 'continue') {\r\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\r\n if (this.pv.length) {\r\n ret = new Array(lastValue.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\r\n }\r\n return ret;\r\n }\r\n return lastValue + (lastValue - nextLastValue) * (((currentFrame - lastKeyFrame)) / 0.001);\r\n }\r\n return this.getValueAtTime((((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n\r\n }\r\n\r\n function loopIn(type, duration, durationFlag) {\r\n if (!this.k) {\r\n return this.pv;\r\n }\r\n type = type ? type.toLowerCase() : '';\r\n var currentFrame = this.comp.renderedFrame;\r\n var keyframes = this.keyframes;\r\n var firstKeyFrame = keyframes[0].t;\r\n if (currentFrame >= firstKeyFrame) {\r\n return this.pv;\r\n }\r\n var cycleDuration;\r\n var lastKeyFrame;\r\n if (!durationFlag) {\r\n if (!duration || duration > keyframes.length - 1) {\r\n duration = keyframes.length - 1;\r\n }\r\n lastKeyFrame = keyframes[duration].t;\r\n cycleDuration = lastKeyFrame - firstKeyFrame;\r\n } else {\r\n if (!duration) {\r\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\r\n } else {\r\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\r\n }\r\n lastKeyFrame = firstKeyFrame + cycleDuration;\r\n }\r\n var i;\r\n var len;\r\n var ret;\r\n if (type === 'pingpong') {\r\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\r\n if (iterations % 2 === 0) {\r\n return this.getValueAtTime((((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n }\r\n } else if (type === 'offset') {\r\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var current = this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration) + firstKeyFrame) / this.comp.globalData.frameRate, 0);\r\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\r\n if (this.pv.length) {\r\n ret = new Array(initV.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\r\n }\r\n return ret;\r\n }\r\n return current - (endV - initV) * repeats;\r\n } else if (type === 'continue') {\r\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\r\n if (this.pv.length) {\r\n ret = new Array(firstValue.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = firstValue[i] + ((firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame)) / 0.001;\r\n }\r\n return ret;\r\n }\r\n return firstValue + ((firstValue - nextFirstValue) * (firstKeyFrame - currentFrame)) / 0.001;\r\n }\r\n return this.getValueAtTime(((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame))) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n\r\n }\r\n\r\n function smooth(width, samples) {\r\n if (!this.k) {\r\n return this.pv;\r\n }\r\n width = (width || 0.4) * 0.5;\r\n samples = Math.floor(samples || 5);\r\n if (samples <= 1) {\r\n return this.pv;\r\n }\r\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\r\n var initFrame = currentTime - width;\r\n var endFrame = currentTime + width;\r\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\r\n var i = 0;\r\n var j = 0;\r\n var value;\r\n if (this.pv.length) {\r\n value = createTypedArray('float32', this.pv.length);\r\n } else {\r\n value = 0;\r\n }\r\n var sampleValue;\r\n while (i < samples) {\r\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\r\n if (this.pv.length) {\r\n for (j = 0; j < this.pv.length; j += 1) {\r\n value[j] += sampleValue[j];\r\n }\r\n } else {\r\n value += sampleValue;\r\n }\r\n i += 1;\r\n }\r\n if (this.pv.length) {\r\n for (j = 0; j < this.pv.length; j += 1) {\r\n value[j] /= samples;\r\n }\r\n } else {\r\n value /= samples;\r\n }\r\n return value;\r\n }\r\n\r\n function getTransformValueAtTime(time) {\r\n if (!this._transformCachingAtTime) {\r\n this._transformCachingAtTime = {\r\n v: new Matrix(),\r\n };\r\n }\r\n /// /\r\n var matrix = this._transformCachingAtTime.v;\r\n matrix.cloneFromProps(this.pre.props);\r\n if (this.appliedTransformations < 1) {\r\n var anchor = this.a.getValueAtTime(time);\r\n matrix.translate(\r\n -anchor[0] * this.a.mult,\r\n -anchor[1] * this.a.mult,\r\n anchor[2] * this.a.mult\r\n );\r\n }\r\n if (this.appliedTransformations < 2) {\r\n var scale = this.s.getValueAtTime(time);\r\n matrix.scale(\r\n scale[0] * this.s.mult,\r\n scale[1] * this.s.mult,\r\n scale[2] * this.s.mult\r\n );\r\n }\r\n if (this.sk && this.appliedTransformations < 3) {\r\n var skew = this.sk.getValueAtTime(time);\r\n var skewAxis = this.sa.getValueAtTime(time);\r\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\r\n }\r\n if (this.r && this.appliedTransformations < 4) {\r\n var rotation = this.r.getValueAtTime(time);\r\n matrix.rotate(-rotation * this.r.mult);\r\n } else if (!this.r && this.appliedTransformations < 4) {\r\n var rotationZ = this.rz.getValueAtTime(time);\r\n var rotationY = this.ry.getValueAtTime(time);\r\n var rotationX = this.rx.getValueAtTime(time);\r\n var orientation = this.or.getValueAtTime(time);\r\n matrix.rotateZ(-rotationZ * this.rz.mult)\r\n .rotateY(rotationY * this.ry.mult)\r\n .rotateX(rotationX * this.rx.mult)\r\n .rotateZ(-orientation[2] * this.or.mult)\r\n .rotateY(orientation[1] * this.or.mult)\r\n .rotateX(orientation[0] * this.or.mult);\r\n }\r\n if (this.data.p && this.data.p.s) {\r\n var positionX = this.px.getValueAtTime(time);\r\n var positionY = this.py.getValueAtTime(time);\r\n if (this.data.p.z) {\r\n var positionZ = this.pz.getValueAtTime(time);\r\n matrix.translate(\r\n positionX * this.px.mult,\r\n positionY * this.py.mult,\r\n -positionZ * this.pz.mult\r\n );\r\n } else {\r\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\r\n }\r\n } else {\r\n var position = this.p.getValueAtTime(time);\r\n matrix.translate(\r\n position[0] * this.p.mult,\r\n position[1] * this.p.mult,\r\n -position[2] * this.p.mult\r\n );\r\n }\r\n return matrix;\r\n /// /\r\n }\r\n\r\n function getTransformStaticValueAtTime() {\r\n return this.v.clone(new Matrix());\r\n }\r\n\r\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\r\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\r\n var prop = getTransformProperty(elem, data, container);\r\n if (prop.dynamicProperties.length) {\r\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\r\n } else {\r\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\r\n }\r\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\r\n return prop;\r\n };\r\n\r\n var propertyGetProp = PropertyFactory.getProp;\r\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\r\n var prop = propertyGetProp(elem, data, type, mult, container);\r\n // prop.getVelocityAtTime = getVelocityAtTime;\r\n // prop.loopOut = loopOut;\r\n // prop.loopIn = loopIn;\r\n if (prop.kf) {\r\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\r\n } else {\r\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\r\n }\r\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\r\n prop.loopOut = loopOut;\r\n prop.loopIn = loopIn;\r\n prop.smooth = smooth;\r\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\r\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\r\n prop.numKeys = data.a === 1 ? data.k.length : 0;\r\n prop.propertyIndex = data.ix;\r\n var value = 0;\r\n if (type !== 0) {\r\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\r\n }\r\n prop._cachingAtTime = {\r\n lastFrame: initialDefaultFrame,\r\n lastIndex: 0,\r\n value: value,\r\n };\r\n expressionHelpers.searchExpressions(elem, data, prop);\r\n if (prop.k) {\r\n container.addDynamicProperty(prop);\r\n }\r\n\r\n return prop;\r\n };\r\n\r\n function getShapeValueAtTime(frameNum) {\r\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\r\n if (!this._cachingAtTime) {\r\n this._cachingAtTime = {\r\n shapeValue: shapePool.clone(this.pv),\r\n lastIndex: 0,\r\n lastTime: initialDefaultFrame,\r\n };\r\n }\r\n\r\n frameNum *= this.elem.globalData.frameRate;\r\n frameNum -= this.offsetTime;\r\n if (frameNum !== this._cachingAtTime.lastTime) {\r\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\r\n this._cachingAtTime.lastTime = frameNum;\r\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\r\n }\r\n return this._cachingAtTime.shapeValue;\r\n }\r\n\r\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\r\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\r\n\r\n function ShapeExpressions() {}\r\n ShapeExpressions.prototype = {\r\n vertices: function (prop, time) {\r\n if (this.k) {\r\n this.getValue();\r\n }\r\n var shapePath = this.v;\r\n if (time !== undefined) {\r\n shapePath = this.getValueAtTime(time, 0);\r\n }\r\n var i;\r\n var len = shapePath._length;\r\n var vertices = shapePath[prop];\r\n var points = shapePath.v;\r\n var arr = createSizedArray(len);\r\n for (i = 0; i < len; i += 1) {\r\n if (prop === 'i' || prop === 'o') {\r\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\r\n } else {\r\n arr[i] = [vertices[i][0], vertices[i][1]];\r\n }\r\n }\r\n return arr;\r\n },\r\n points: function (time) {\r\n return this.vertices('v', time);\r\n },\r\n inTangents: function (time) {\r\n return this.vertices('i', time);\r\n },\r\n outTangents: function (time) {\r\n return this.vertices('o', time);\r\n },\r\n isClosed: function () {\r\n return this.v.c;\r\n },\r\n pointOnPath: function (perc, time) {\r\n var shapePath = this.v;\r\n if (time !== undefined) {\r\n shapePath = this.getValueAtTime(time, 0);\r\n }\r\n if (!this._segmentsLength) {\r\n this._segmentsLength = bez.getSegmentsLength(shapePath);\r\n }\r\n\r\n var segmentsLength = this._segmentsLength;\r\n var lengths = segmentsLength.lengths;\r\n var lengthPos = segmentsLength.totalLength * perc;\r\n var i = 0;\r\n var len = lengths.length;\r\n var accumulatedLength = 0;\r\n var pt;\r\n while (i < len) {\r\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\r\n var initIndex = i;\r\n var endIndex = (shapePath.c && i === len - 1) ? 0 : i + 1;\r\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\r\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\r\n break;\r\n } else {\r\n accumulatedLength += lengths[i].addedLength;\r\n }\r\n i += 1;\r\n }\r\n if (!pt) {\r\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\r\n }\r\n return pt;\r\n },\r\n vectorOnPath: function (perc, time, vectorType) {\r\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\r\n if (perc == 1) { // eslint-disable-line eqeqeq\r\n perc = this.v.c;\r\n } else if (perc == 0) { // eslint-disable-line eqeqeq\r\n perc = 0.999;\r\n }\r\n var pt1 = this.pointOnPath(perc, time);\r\n var pt2 = this.pointOnPath(perc + 0.001, time);\r\n var xLength = pt2[0] - pt1[0];\r\n var yLength = pt2[1] - pt1[1];\r\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\r\n if (magnitude === 0) {\r\n return [0, 0];\r\n }\r\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\r\n return unitVector;\r\n },\r\n tangentOnPath: function (perc, time) {\r\n return this.vectorOnPath(perc, time, 'tangent');\r\n },\r\n normalOnPath: function (perc, time) {\r\n return this.vectorOnPath(perc, time, 'normal');\r\n },\r\n setGroupProperty: expressionHelpers.setGroupProperty,\r\n getValueAtTime: expressionHelpers.getStaticValueAtTime,\r\n };\r\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\r\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\r\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\r\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\r\n\r\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\r\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\r\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\r\n prop.propertyIndex = data.ix;\r\n prop.lock = false;\r\n if (type === 3) {\r\n expressionHelpers.searchExpressions(elem, data.pt, prop);\r\n } else if (type === 4) {\r\n expressionHelpers.searchExpressions(elem, data.ks, prop);\r\n }\r\n if (prop.k) {\r\n elem.addDynamicProperty(prop);\r\n }\r\n return prop;\r\n };\r\n}());\r\n\r\n/* global ExpressionManager, TextProperty */\r\n\r\n(function addDecorator() {\r\n function searchExpressions() {\r\n if (this.data.d.x) {\r\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\r\n this.addEffect(this.getExpressionValue.bind(this));\r\n return true;\r\n }\r\n return null;\r\n }\r\n\r\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\r\n var newValue = this.calculateExpression(text);\r\n if (currentValue.t !== newValue) {\r\n var newData = {};\r\n this.copyData(newData, currentValue);\r\n newData.t = newValue.toString();\r\n newData.__complete = false;\r\n return newData;\r\n }\r\n return currentValue;\r\n };\r\n\r\n TextProperty.prototype.searchProperty = function () {\r\n var isKeyframed = this.searchKeyframes();\r\n var hasExpressions = this.searchExpressions();\r\n this.kf = isKeyframed || hasExpressions;\r\n return this.kf;\r\n };\r\n\r\n TextProperty.prototype.searchExpressions = searchExpressions;\r\n}());\r\n\r\n/* global propertyGroupFactory, PropertyInterface */\r\n/* exported ShapePathInterface */\r\n\r\nvar ShapePathInterface = (\r\n\r\n function () {\r\n return function pathInterfaceFactory(shape, view, propertyGroup) {\r\n var prop = view.sh;\r\n\r\n function interfaceFunction(val) {\r\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\r\n return interfaceFunction.path;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n path: {\r\n get: function () {\r\n if (prop.k) {\r\n prop.getValue();\r\n }\r\n return prop;\r\n },\r\n },\r\n shape: {\r\n get: function () {\r\n if (prop.k) {\r\n prop.getValue();\r\n }\r\n return prop;\r\n },\r\n },\r\n _name: { value: shape.nm },\r\n ix: { value: shape.ix },\r\n propertyIndex: { value: shape.ix },\r\n mn: { value: shape.mn },\r\n propertyGroup: { value: propertyGroup },\r\n });\r\n return interfaceFunction;\r\n };\r\n }()\r\n);\r\n\r\n/* exported propertyGroupFactory */\r\n\r\nvar propertyGroupFactory = (function () {\r\n return function (interfaceFunction, parentPropertyGroup) {\r\n return function (val) {\r\n val = val === undefined ? 1 : val;\r\n if (val <= 0) {\r\n return interfaceFunction;\r\n }\r\n return parentPropertyGroup(val - 1);\r\n };\r\n };\r\n}());\r\n\r\n/* exported PropertyInterface */\r\n\r\nvar PropertyInterface = (function () {\r\n return function (propertyName, propertyGroup) {\r\n var interfaceFunction = {\r\n _name: propertyName,\r\n };\r\n\r\n function _propertyGroup(val) {\r\n val = val === undefined ? 1 : val;\r\n if (val <= 0) {\r\n return interfaceFunction;\r\n }\r\n return propertyGroup(val - 1);\r\n }\r\n\r\n return _propertyGroup;\r\n };\r\n}());\r\n\r\n/* global ExpressionPropertyInterface, PropertyInterface, propertyGroupFactory, ShapePathInterface */\r\n/* exported ShapeExpressionInterface */\r\n\r\nvar ShapeExpressionInterface = (function () {\r\n function iterateElements(shapes, view, propertyGroup) {\r\n var arr = [];\r\n var i;\r\n var len = shapes ? shapes.length : 0;\r\n for (i = 0; i < len; i += 1) {\r\n if (shapes[i].ty === 'gr') {\r\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'fl') {\r\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'st') {\r\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'tm') {\r\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'tr') {\r\n // arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\r\n } else if (shapes[i].ty === 'el') {\r\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'sr') {\r\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'sh') {\r\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rc') {\r\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rd') {\r\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rp') {\r\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'gf') {\r\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else {\r\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n function contentsInterfaceFactory(shape, view, propertyGroup) {\r\n var interfaces;\r\n var interfaceFunction = function _interfaceFunction(value) {\r\n var i = 0;\r\n var len = interfaces.length;\r\n while (i < len) {\r\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\r\n return interfaces[i];\r\n }\r\n i += 1;\r\n }\r\n if (typeof value === 'number') {\r\n return interfaces[value - 1];\r\n }\r\n return null;\r\n };\r\n\r\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\r\n interfaceFunction.numProperties = interfaces.length;\r\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\r\n interfaceFunction.transform = transformInterface;\r\n interfaceFunction.propertyIndex = shape.cix;\r\n interfaceFunction._name = shape.nm;\r\n\r\n return interfaceFunction;\r\n }\r\n\r\n function groupInterfaceFactory(shape, view, propertyGroup) {\r\n var interfaceFunction = function _interfaceFunction(value) {\r\n switch (value) {\r\n case 'ADBE Vectors Group':\r\n case 'Contents':\r\n case 2:\r\n return interfaceFunction.content;\r\n // Not necessary for now. Keeping them here in case a new case appears\r\n // case 'ADBE Vector Transform Group':\r\n // case 3:\r\n default:\r\n return interfaceFunction.transform;\r\n }\r\n };\r\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\r\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\r\n interfaceFunction.content = content;\r\n interfaceFunction.transform = transformInterface;\r\n Object.defineProperty(interfaceFunction, '_name', {\r\n get: function () {\r\n return shape.nm;\r\n },\r\n });\r\n // interfaceFunction.content = interfaceFunction;\r\n interfaceFunction.numProperties = shape.np;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n interfaceFunction.nm = shape.nm;\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function fillInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(val) {\r\n if (val === 'Color' || val === 'color') {\r\n return interfaceFunction.color;\r\n } if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n return null;\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n color: {\r\n get: ExpressionPropertyInterface(view.c),\r\n },\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.o),\r\n },\r\n _name: { value: shape.nm },\r\n mn: { value: shape.mn },\r\n });\r\n\r\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\r\n return interfaceFunction;\r\n }\r\n\r\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(val) {\r\n if (val === 'Start Point' || val === 'start point') {\r\n return interfaceFunction.startPoint;\r\n }\r\n if (val === 'End Point' || val === 'end point') {\r\n return interfaceFunction.endPoint;\r\n }\r\n if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n return null;\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n startPoint: {\r\n get: ExpressionPropertyInterface(view.s),\r\n },\r\n endPoint: {\r\n get: ExpressionPropertyInterface(view.e),\r\n },\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.o),\r\n },\r\n type: {\r\n get: function () {\r\n return 'a';\r\n },\r\n },\r\n _name: { value: shape.nm },\r\n mn: { value: shape.mn },\r\n });\r\n\r\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\r\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\r\n return interfaceFunction;\r\n }\r\n function defaultInterfaceFactory() {\r\n function interfaceFunction() {\r\n return null;\r\n }\r\n return interfaceFunction;\r\n }\r\n\r\n function strokeInterfaceFactory(shape, view, propertyGroup) {\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\r\n function addPropertyToDashOb(i) {\r\n Object.defineProperty(dashOb, shape.d[i].nm, {\r\n get: ExpressionPropertyInterface(view.d.dataProps[i].p),\r\n });\r\n }\r\n var i;\r\n var len = shape.d ? shape.d.length : 0;\r\n var dashOb = {};\r\n for (i = 0; i < len; i += 1) {\r\n addPropertyToDashOb(i);\r\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\r\n }\r\n\r\n function interfaceFunction(val) {\r\n if (val === 'Color' || val === 'color') {\r\n return interfaceFunction.color;\r\n } if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n } if (val === 'Stroke Width' || val === 'stroke width') {\r\n return interfaceFunction.strokeWidth;\r\n }\r\n return null;\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n color: {\r\n get: ExpressionPropertyInterface(view.c),\r\n },\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.o),\r\n },\r\n strokeWidth: {\r\n get: ExpressionPropertyInterface(view.w),\r\n },\r\n dash: {\r\n get: function () {\r\n return dashOb;\r\n },\r\n },\r\n _name: { value: shape.nm },\r\n mn: { value: shape.mn },\r\n });\r\n\r\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\r\n return interfaceFunction;\r\n }\r\n\r\n function trimInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(val) {\r\n if (val === shape.e.ix || val === 'End' || val === 'end') {\r\n return interfaceFunction.end;\r\n }\r\n if (val === shape.s.ix) {\r\n return interfaceFunction.start;\r\n }\r\n if (val === shape.o.ix) {\r\n return interfaceFunction.offset;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n interfaceFunction.propertyIndex = shape.ix;\r\n\r\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\r\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\r\n interfaceFunction.propertyIndex = shape.ix;\r\n interfaceFunction.propertyGroup = propertyGroup;\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n start: {\r\n get: ExpressionPropertyInterface(view.s),\r\n },\r\n end: {\r\n get: ExpressionPropertyInterface(view.e),\r\n },\r\n offset: {\r\n get: ExpressionPropertyInterface(view.o),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function transformInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.a.ix === value || value === 'Anchor Point') {\r\n return interfaceFunction.anchorPoint;\r\n }\r\n if (shape.o.ix === value || value === 'Opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n if (shape.p.ix === value || value === 'Position') {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\r\n return interfaceFunction.rotation;\r\n }\r\n if (shape.s.ix === value || value === 'Scale') {\r\n return interfaceFunction.scale;\r\n }\r\n if ((shape.sk && shape.sk.ix === value) || value === 'Skew') {\r\n return interfaceFunction.skew;\r\n }\r\n if ((shape.sa && shape.sa.ix === value) || value === 'Skew Axis') {\r\n return interfaceFunction.skewAxis;\r\n }\r\n return null;\r\n }\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\r\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\r\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n if (view.transform.mProps.sk) {\r\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\r\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\r\n }\r\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.o),\r\n },\r\n position: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.p),\r\n },\r\n anchorPoint: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.a),\r\n },\r\n scale: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.s),\r\n },\r\n rotation: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.r),\r\n },\r\n skew: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.sk),\r\n },\r\n skewAxis: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.sa),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.ty = 'tr';\r\n interfaceFunction.mn = shape.mn;\r\n interfaceFunction.propertyGroup = propertyGroup;\r\n return interfaceFunction;\r\n }\r\n\r\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.s.ix === value) {\r\n return interfaceFunction.size;\r\n }\r\n return null;\r\n }\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n interfaceFunction.propertyIndex = shape.ix;\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n size: {\r\n get: ExpressionPropertyInterface(prop.s),\r\n },\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function starInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.r.ix === value) {\r\n return interfaceFunction.rotation;\r\n }\r\n if (shape.pt.ix === value) {\r\n return interfaceFunction.points;\r\n }\r\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\r\n return interfaceFunction.outerRadius;\r\n }\r\n if (shape.os.ix === value) {\r\n return interfaceFunction.outerRoundness;\r\n }\r\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\r\n return interfaceFunction.innerRadius;\r\n }\r\n if (shape.is && shape.is.ix === value) {\r\n return interfaceFunction.innerRoundness;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\r\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\r\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n if (shape.ir) {\r\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\r\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\r\n }\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p),\r\n },\r\n rotation: {\r\n get: ExpressionPropertyInterface(prop.r),\r\n },\r\n points: {\r\n get: ExpressionPropertyInterface(prop.pt),\r\n },\r\n outerRadius: {\r\n get: ExpressionPropertyInterface(prop.or),\r\n },\r\n outerRoundness: {\r\n get: ExpressionPropertyInterface(prop.os),\r\n },\r\n innerRadius: {\r\n get: ExpressionPropertyInterface(prop.ir),\r\n },\r\n innerRoundness: {\r\n get: ExpressionPropertyInterface(prop.is),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function rectInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.r.ix === value) {\r\n return interfaceFunction.roundness;\r\n }\r\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\r\n return interfaceFunction.size;\r\n }\r\n return null;\r\n }\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\r\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p),\r\n },\r\n roundness: {\r\n get: ExpressionPropertyInterface(prop.r),\r\n },\r\n size: {\r\n get: ExpressionPropertyInterface(prop.s),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function roundedInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.r.ix === value || value === 'Round Corners 1') {\r\n return interfaceFunction.radius;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var prop = view;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n radius: {\r\n get: ExpressionPropertyInterface(prop.rd),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.c.ix === value || value === 'Copies') {\r\n return interfaceFunction.copies;\r\n } if (shape.o.ix === value || value === 'Offset') {\r\n return interfaceFunction.offset;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var prop = view;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\r\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n copies: {\r\n get: ExpressionPropertyInterface(prop.c),\r\n },\r\n offset: {\r\n get: ExpressionPropertyInterface(prop.o),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n return function (shapes, view, propertyGroup) {\r\n var interfaces;\r\n function _interfaceFunction(value) {\r\n if (typeof value === 'number') {\r\n value = value === undefined ? 1 : value;\r\n if (value === 0) {\r\n return propertyGroup;\r\n }\r\n return interfaces[value - 1];\r\n }\r\n var i = 0;\r\n var len = interfaces.length;\r\n while (i < len) {\r\n if (interfaces[i]._name === value) {\r\n return interfaces[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n function parentGroupWrapper() {\r\n return propertyGroup;\r\n }\r\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\r\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\r\n _interfaceFunction.numProperties = interfaces.length;\r\n _interfaceFunction._name = 'Contents';\r\n return _interfaceFunction;\r\n };\r\n}());\r\n\r\n/* exported TextExpressionInterface */\r\n\r\nvar TextExpressionInterface = (function () {\r\n return function (elem) {\r\n var _prevValue;\r\n var _sourceText;\r\n function _thisLayerFunction(name) {\r\n switch (name) {\r\n case 'ADBE Text Document':\r\n return _thisLayerFunction.sourceText;\r\n default:\r\n return null;\r\n }\r\n }\r\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\r\n get: function () {\r\n elem.textProperty.getValue();\r\n var stringValue = elem.textProperty.currentData.t;\r\n if (stringValue !== _prevValue) {\r\n elem.textProperty.currentData.t = _prevValue;\r\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\r\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\r\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\r\n }\r\n return _sourceText;\r\n },\r\n });\r\n return _thisLayerFunction;\r\n };\r\n}());\r\n\r\n/* global Matrix, MaskManagerInterface, TransformExpressionInterface, getDescriptor */\r\n/* exported LayerExpressionInterface */\r\n\r\nvar LayerExpressionInterface = (function () {\r\n function getMatrix(time) {\r\n var toWorldMat = new Matrix();\r\n if (time !== undefined) {\r\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\r\n propMatrix.clone(toWorldMat);\r\n } else {\r\n var transformMat = this._elem.finalTransform.mProp;\r\n transformMat.applyToMatrix(toWorldMat);\r\n }\r\n return toWorldMat;\r\n }\r\n\r\n function toWorldVec(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n toWorldMat.props[12] = 0;\r\n toWorldMat.props[13] = 0;\r\n toWorldMat.props[14] = 0;\r\n return this.applyPoint(toWorldMat, arr);\r\n }\r\n\r\n function toWorld(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n return this.applyPoint(toWorldMat, arr);\r\n }\r\n\r\n function fromWorldVec(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n toWorldMat.props[12] = 0;\r\n toWorldMat.props[13] = 0;\r\n toWorldMat.props[14] = 0;\r\n return this.invertPoint(toWorldMat, arr);\r\n }\r\n\r\n function fromWorld(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n return this.invertPoint(toWorldMat, arr);\r\n }\r\n\r\n function applyPoint(matrix, arr) {\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\r\n }\r\n }\r\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\r\n }\r\n\r\n function invertPoint(matrix, arr) {\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\r\n }\r\n }\r\n return matrix.inversePoint(arr);\r\n }\r\n\r\n function fromComp(arr) {\r\n var toWorldMat = new Matrix();\r\n toWorldMat.reset();\r\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\r\n }\r\n return toWorldMat.inversePoint(arr);\r\n }\r\n return toWorldMat.inversePoint(arr);\r\n }\r\n\r\n function sampleImage() {\r\n return [1, 1, 1, 1];\r\n }\r\n\r\n return function (elem) {\r\n var transformInterface;\r\n\r\n function _registerMaskInterface(maskManager) {\r\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\r\n }\r\n function _registerEffectsInterface(effects) {\r\n _thisLayerFunction.effect = effects;\r\n }\r\n\r\n function _thisLayerFunction(name) {\r\n switch (name) {\r\n case 'ADBE Root Vectors Group':\r\n case 'Contents':\r\n case 2:\r\n return _thisLayerFunction.shapeInterface;\r\n case 1:\r\n case 6:\r\n case 'Transform':\r\n case 'transform':\r\n case 'ADBE Transform Group':\r\n return transformInterface;\r\n case 4:\r\n case 'ADBE Effect Parade':\r\n case 'effects':\r\n case 'Effects':\r\n return _thisLayerFunction.effect;\r\n case 'ADBE Text Properties':\r\n return _thisLayerFunction.textInterface;\r\n default:\r\n return null;\r\n }\r\n }\r\n _thisLayerFunction.getMatrix = getMatrix;\r\n _thisLayerFunction.invertPoint = invertPoint;\r\n _thisLayerFunction.applyPoint = applyPoint;\r\n _thisLayerFunction.toWorld = toWorld;\r\n _thisLayerFunction.toWorldVec = toWorldVec;\r\n _thisLayerFunction.fromWorld = fromWorld;\r\n _thisLayerFunction.fromWorldVec = fromWorldVec;\r\n _thisLayerFunction.toComp = toWorld;\r\n _thisLayerFunction.fromComp = fromComp;\r\n _thisLayerFunction.sampleImage = sampleImage;\r\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\r\n _thisLayerFunction._elem = elem;\r\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\r\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\r\n Object.defineProperties(_thisLayerFunction, {\r\n hasParent: {\r\n get: function () {\r\n return elem.hierarchy.length;\r\n },\r\n },\r\n parent: {\r\n get: function () {\r\n return elem.hierarchy[0].layerInterface;\r\n },\r\n },\r\n rotation: getDescriptor(transformInterface, 'rotation'),\r\n scale: getDescriptor(transformInterface, 'scale'),\r\n position: getDescriptor(transformInterface, 'position'),\r\n opacity: getDescriptor(transformInterface, 'opacity'),\r\n anchorPoint: anchorPointDescriptor,\r\n anchor_point: anchorPointDescriptor,\r\n transform: {\r\n get: function () {\r\n return transformInterface;\r\n },\r\n },\r\n active: {\r\n get: function () {\r\n return elem.isInRange;\r\n },\r\n },\r\n });\r\n\r\n _thisLayerFunction.startTime = elem.data.st;\r\n _thisLayerFunction.index = elem.data.ind;\r\n _thisLayerFunction.source = elem.data.refId;\r\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\r\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\r\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\r\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\r\n _thisLayerFunction._name = elem.data.nm;\r\n\r\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\r\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\r\n return _thisLayerFunction;\r\n };\r\n}());\r\n\r\n/* global */\r\n/* exported FootageInterface */\r\n\r\nvar FootageInterface = (function () {\r\n var outlineInterfaceFactory = (function (elem) {\r\n var currentPropertyName = '';\r\n var currentProperty = elem.getFootageData();\r\n function init() {\r\n currentPropertyName = '';\r\n currentProperty = elem.getFootageData();\r\n return searchProperty;\r\n }\r\n function searchProperty(value) {\r\n if (currentProperty[value]) {\r\n currentPropertyName = value;\r\n currentProperty = currentProperty[value];\r\n if (typeof currentProperty === 'object') {\r\n return searchProperty;\r\n }\r\n return currentProperty;\r\n }\r\n var propertyNameIndex = value.indexOf(currentPropertyName);\r\n if (propertyNameIndex !== -1) {\r\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\r\n currentProperty = currentProperty[index];\r\n if (typeof currentProperty === 'object') {\r\n return searchProperty;\r\n }\r\n return currentProperty;\r\n }\r\n return '';\r\n }\r\n return init;\r\n });\r\n\r\n var dataInterfaceFactory = function (elem) {\r\n function interfaceFunction(value) {\r\n if (value === 'Outline') {\r\n return interfaceFunction.outlineInterface();\r\n }\r\n return null;\r\n }\r\n\r\n interfaceFunction._name = 'Outline';\r\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\r\n return interfaceFunction;\r\n };\r\n\r\n return function (elem) {\r\n function _interfaceFunction(value) {\r\n if (value === 'Data') {\r\n return _interfaceFunction.dataInterface;\r\n }\r\n return null;\r\n }\r\n\r\n _interfaceFunction._name = 'Data';\r\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\r\n return _interfaceFunction;\r\n };\r\n}());\r\n\r\n/* exported CompExpressionInterface */\r\n\r\nvar CompExpressionInterface = (function () {\r\n return function (comp) {\r\n function _thisLayerFunction(name) {\r\n var i = 0;\r\n var len = comp.layers.length;\r\n while (i < len) {\r\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\r\n return comp.elements[i].layerInterface;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n // return {active:false};\r\n }\r\n Object.defineProperty(_thisLayerFunction, '_name', { value: comp.data.nm });\r\n _thisLayerFunction.layer = _thisLayerFunction;\r\n _thisLayerFunction.pixelAspect = 1;\r\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\r\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\r\n _thisLayerFunction.pixelAspect = 1;\r\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\r\n _thisLayerFunction.displayStartTime = 0;\r\n _thisLayerFunction.numLayers = comp.layers.length;\r\n return _thisLayerFunction;\r\n };\r\n}());\r\n\r\n/* global ExpressionPropertyInterface */\r\n/* exported TransformExpressionInterface */\r\n\r\nvar TransformExpressionInterface = (function () {\r\n return function (transform) {\r\n function _thisFunction(name) {\r\n switch (name) {\r\n case 'scale':\r\n case 'Scale':\r\n case 'ADBE Scale':\r\n case 6:\r\n return _thisFunction.scale;\r\n case 'rotation':\r\n case 'Rotation':\r\n case 'ADBE Rotation':\r\n case 'ADBE Rotate Z':\r\n case 10:\r\n return _thisFunction.rotation;\r\n case 'ADBE Rotate X':\r\n return _thisFunction.xRotation;\r\n case 'ADBE Rotate Y':\r\n return _thisFunction.yRotation;\r\n case 'position':\r\n case 'Position':\r\n case 'ADBE Position':\r\n case 2:\r\n return _thisFunction.position;\r\n case 'ADBE Position_0':\r\n return _thisFunction.xPosition;\r\n case 'ADBE Position_1':\r\n return _thisFunction.yPosition;\r\n case 'ADBE Position_2':\r\n return _thisFunction.zPosition;\r\n case 'anchorPoint':\r\n case 'AnchorPoint':\r\n case 'Anchor Point':\r\n case 'ADBE AnchorPoint':\r\n case 1:\r\n return _thisFunction.anchorPoint;\r\n case 'opacity':\r\n case 'Opacity':\r\n case 11:\r\n return _thisFunction.opacity;\r\n default:\r\n return null;\r\n }\r\n }\r\n Object.defineProperty(_thisFunction, 'rotation', {\r\n get: ExpressionPropertyInterface(transform.r || transform.rz),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'zRotation', {\r\n get: ExpressionPropertyInterface(transform.rz || transform.r),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'xRotation', {\r\n get: ExpressionPropertyInterface(transform.rx),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'yRotation', {\r\n get: ExpressionPropertyInterface(transform.ry),\r\n });\r\n Object.defineProperty(_thisFunction, 'scale', {\r\n get: ExpressionPropertyInterface(transform.s),\r\n });\r\n var _px;\r\n var _py;\r\n var _pz;\r\n var _transformFactory;\r\n if (transform.p) {\r\n _transformFactory = ExpressionPropertyInterface(transform.p);\r\n } else {\r\n _px = ExpressionPropertyInterface(transform.px);\r\n _py = ExpressionPropertyInterface(transform.py);\r\n if (transform.pz) {\r\n _pz = ExpressionPropertyInterface(transform.pz);\r\n }\r\n }\r\n Object.defineProperty(_thisFunction, 'position', {\r\n get: function () {\r\n if (transform.p) {\r\n return _transformFactory();\r\n }\r\n return [\r\n _px(),\r\n _py(),\r\n _pz ? _pz() : 0];\r\n },\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'xPosition', {\r\n get: ExpressionPropertyInterface(transform.px),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'yPosition', {\r\n get: ExpressionPropertyInterface(transform.py),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'zPosition', {\r\n get: ExpressionPropertyInterface(transform.pz),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'anchorPoint', {\r\n get: ExpressionPropertyInterface(transform.a),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'opacity', {\r\n get: ExpressionPropertyInterface(transform.o),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'skew', {\r\n get: ExpressionPropertyInterface(transform.sk),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'skewAxis', {\r\n get: ExpressionPropertyInterface(transform.sa),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'orientation', {\r\n get: ExpressionPropertyInterface(transform.or),\r\n });\r\n\r\n return _thisFunction;\r\n };\r\n}());\r\n\r\n/* exported ProjectInterface */\r\n\r\nvar ProjectInterface = (function () {\r\n function registerComposition(comp) {\r\n this.compositions.push(comp);\r\n }\r\n\r\n return function () {\r\n function _thisProjectFunction(name) {\r\n var i = 0;\r\n var len = this.compositions.length;\r\n while (i < len) {\r\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\r\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\r\n this.compositions[i].prepareFrame(this.currentFrame);\r\n }\r\n return this.compositions[i].compInterface;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n\r\n _thisProjectFunction.compositions = [];\r\n _thisProjectFunction.currentFrame = 0;\r\n\r\n _thisProjectFunction.registerComposition = registerComposition;\r\n\r\n return _thisProjectFunction;\r\n };\r\n}());\r\n\r\n/* global propertyGroupFactory, ExpressionPropertyInterface, PropertyInterface */\r\n/* exported EffectsExpressionInterface */\r\n\r\nvar EffectsExpressionInterface = (function () {\r\n var ob = {\r\n createEffectsInterface: createEffectsInterface,\r\n };\r\n\r\n function createEffectsInterface(elem, propertyGroup) {\r\n if (elem.effectsManager) {\r\n var effectElements = [];\r\n var effectsData = elem.data.ef;\r\n var i;\r\n var len = elem.effectsManager.effectElements.length;\r\n for (i = 0; i < len; i += 1) {\r\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\r\n }\r\n\r\n var effects = elem.data.ef || [];\r\n var groupInterface = function (name) {\r\n i = 0;\r\n len = effects.length;\r\n while (i < len) {\r\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\r\n return effectElements[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n };\r\n Object.defineProperty(groupInterface, 'numProperties', {\r\n get: function () {\r\n return effects.length;\r\n },\r\n });\r\n return groupInterface;\r\n }\r\n return null;\r\n }\r\n\r\n function createGroupInterface(data, elements, propertyGroup, elem) {\r\n function groupInterface(name) {\r\n var effects = data.ef;\r\n var i = 0;\r\n var len = effects.length;\r\n while (i < len) {\r\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\r\n if (effects[i].ty === 5) {\r\n return effectElements[i];\r\n }\r\n return effectElements[i]();\r\n }\r\n i += 1;\r\n }\r\n throw new Error();\r\n }\r\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\r\n\r\n var effectElements = [];\r\n var i;\r\n var len = data.ef.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (data.ef[i].ty === 5) {\r\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\r\n } else {\r\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\r\n }\r\n }\r\n\r\n if (data.mn === 'ADBE Color Control') {\r\n Object.defineProperty(groupInterface, 'color', {\r\n get: function () {\r\n return effectElements[0]();\r\n },\r\n });\r\n }\r\n Object.defineProperties(groupInterface, {\r\n numProperties: {\r\n get: function () {\r\n return data.np;\r\n },\r\n },\r\n _name: { value: data.nm },\r\n propertyGroup: { value: _propertyGroup },\r\n });\r\n groupInterface.enabled = data.en !== 0;\r\n groupInterface.active = groupInterface.enabled;\r\n return groupInterface;\r\n }\r\n\r\n function createValueInterface(element, type, elem, propertyGroup) {\r\n var expressionProperty = ExpressionPropertyInterface(element.p);\r\n function interfaceFunction() {\r\n if (type === 10) {\r\n return elem.comp.compInterface(element.p.v);\r\n }\r\n return expressionProperty();\r\n }\r\n\r\n if (element.p.setGroupProperty) {\r\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\r\n }\r\n\r\n return interfaceFunction;\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* global createSizedArray */\r\n/* exported MaskManagerInterface */\r\n\r\nvar MaskManagerInterface = (function () {\r\n function MaskInterface(mask, data) {\r\n this._mask = mask;\r\n this._data = data;\r\n }\r\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\r\n get: function () {\r\n if (this._mask.prop.k) {\r\n this._mask.prop.getValue();\r\n }\r\n return this._mask.prop;\r\n },\r\n });\r\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\r\n get: function () {\r\n if (this._mask.op.k) {\r\n this._mask.op.getValue();\r\n }\r\n return this._mask.op.v * 100;\r\n },\r\n });\r\n\r\n var MaskManager = function (maskManager) {\r\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\r\n var i;\r\n var len = maskManager.viewData.length;\r\n for (i = 0; i < len; i += 1) {\r\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\r\n }\r\n\r\n var maskFunction = function (name) {\r\n i = 0;\r\n while (i < len) {\r\n if (maskManager.masksProperties[i].nm === name) {\r\n return _masksInterfaces[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n };\r\n return maskFunction;\r\n };\r\n return MaskManager;\r\n}());\r\n\r\n/* global createTypedArray */\r\n/* exported ExpressionPropertyInterface */\r\n\r\nvar ExpressionPropertyInterface = (function () {\r\n var defaultUnidimensionalValue = { pv: 0, v: 0, mult: 1 };\r\n var defaultMultidimensionalValue = { pv: [0, 0, 0], v: [0, 0, 0], mult: 1 };\r\n\r\n function completeProperty(expressionValue, property, type) {\r\n Object.defineProperty(expressionValue, 'velocity', {\r\n get: function () {\r\n return property.getVelocityAtTime(property.comp.currentFrame);\r\n },\r\n });\r\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\r\n expressionValue.key = function (pos) {\r\n if (!expressionValue.numKeys) {\r\n return 0;\r\n }\r\n var value = '';\r\n if ('s' in property.keyframes[pos - 1]) {\r\n value = property.keyframes[pos - 1].s;\r\n } else if ('e' in property.keyframes[pos - 2]) {\r\n value = property.keyframes[pos - 2].e;\r\n } else {\r\n value = property.keyframes[pos - 2].s;\r\n }\r\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\r\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\r\n valueProp.value = type === 'unidimensional' ? value[0] : value;\r\n return valueProp;\r\n };\r\n expressionValue.valueAtTime = property.getValueAtTime;\r\n expressionValue.speedAtTime = property.getSpeedAtTime;\r\n expressionValue.velocityAtTime = property.getVelocityAtTime;\r\n expressionValue.propertyGroup = property.propertyGroup;\r\n }\r\n\r\n function UnidimensionalPropertyInterface(property) {\r\n if (!property || !('pv' in property)) {\r\n property = defaultUnidimensionalValue;\r\n }\r\n var mult = 1 / property.mult;\r\n var val = property.pv * mult;\r\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\r\n expressionValue.value = val;\r\n completeProperty(expressionValue, property, 'unidimensional');\r\n\r\n return function () {\r\n if (property.k) {\r\n property.getValue();\r\n }\r\n val = property.v * mult;\r\n if (expressionValue.value !== val) {\r\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\r\n expressionValue.value = val;\r\n completeProperty(expressionValue, property, 'unidimensional');\r\n }\r\n return expressionValue;\r\n };\r\n }\r\n\r\n function MultidimensionalPropertyInterface(property) {\r\n if (!property || !('pv' in property)) {\r\n property = defaultMultidimensionalValue;\r\n }\r\n var mult = 1 / property.mult;\r\n var len = (property.data && property.data.l) || property.pv.length;\r\n var expressionValue = createTypedArray('float32', len);\r\n var arrValue = createTypedArray('float32', len);\r\n expressionValue.value = arrValue;\r\n completeProperty(expressionValue, property, 'multidimensional');\r\n\r\n return function () {\r\n if (property.k) {\r\n property.getValue();\r\n }\r\n for (var i = 0; i < len; i += 1) {\r\n arrValue[i] = property.v[i] * mult;\r\n expressionValue[i] = arrValue[i];\r\n }\r\n return expressionValue;\r\n };\r\n }\r\n\r\n // TODO: try to avoid using this getter\r\n function defaultGetter() {\r\n return defaultUnidimensionalValue;\r\n }\r\n\r\n return function (property) {\r\n if (!property) {\r\n return defaultGetter;\r\n } if (property.propType === 'unidimensional') {\r\n return UnidimensionalPropertyInterface(property);\r\n }\r\n return MultidimensionalPropertyInterface(property);\r\n };\r\n}());\r\n\r\n/* global expressionHelpers, TextSelectorProp, ExpressionManager */\r\n/* exported TextExpressionSelectorPropFactory */\r\n\r\nvar TextExpressionSelectorPropFactory = (function () { // eslint-disable-line no-unused-vars\r\n function getValueProxy(index, total) {\r\n this.textIndex = index + 1;\r\n this.textTotal = total;\r\n this.v = this.getValue() * this.mult;\r\n return this.v;\r\n }\r\n\r\n return function (elem, data) {\r\n this.pv = 1;\r\n this.comp = elem.comp;\r\n this.elem = elem;\r\n this.mult = 0.01;\r\n this.propType = 'textSelector';\r\n this.textTotal = data.totalChars;\r\n this.selectorValue = 100;\r\n this.lastValue = [1, 1, 1];\r\n this.k = true;\r\n this.x = true;\r\n this.getValue = ExpressionManager.initiateExpression.bind(this)(elem, data, this);\r\n this.getMult = getValueProxy;\r\n this.getVelocityAtTime = expressionHelpers.getVelocityAtTime;\r\n if (this.kf) {\r\n this.getValueAtTime = expressionHelpers.getValueAtTime.bind(this);\r\n } else {\r\n this.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(this);\r\n }\r\n this.setGroupProperty = expressionHelpers.setGroupProperty;\r\n };\r\n}());\r\n\r\nvar propertyGetTextProp = TextSelectorProp.getTextSelectorProp;\r\nTextSelectorProp.getTextSelectorProp = function (elem, data, arr) {\r\n if (data.t === 1) {\r\n return new TextExpressionSelectorPropFactory(elem, data, arr); // eslint-disable-line no-undef\r\n }\r\n return propertyGetTextProp(elem, data, arr);\r\n};\r\n\r\n/* global PropertyFactory */\r\n/* exported SliderEffect, AngleEffect, ColorEffect, PointEffect, LayerIndexEffect, MaskIndexEffect, CheckboxEffect, NoValueEffect */\r\n\r\nfunction SliderEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction AngleEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction ColorEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\r\n}\r\nfunction PointEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\r\n}\r\nfunction LayerIndexEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction MaskIndexEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction CheckboxEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction NoValueEffect() {\r\n this.p = {};\r\n}\r\n\r\n/* global extendPrototype, SliderEffect, AngleEffect, ColorEffect, PointEffect, CheckboxEffect, LayerIndexEffect,\r\nMaskIndexEffect, NoValueEffect, DynamicPropertyContainer */\r\n\r\nfunction EffectsManager(data, element) {\r\n var effects = data.ef || [];\r\n this.effectElements = [];\r\n var i;\r\n var len = effects.length;\r\n var effectItem;\r\n for (i = 0; i < len; i += 1) {\r\n effectItem = new GroupEffect(effects[i], element);\r\n this.effectElements.push(effectItem);\r\n }\r\n}\r\n\r\nfunction GroupEffect(data, element) {\r\n this.init(data, element);\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], GroupEffect);\r\n\r\nGroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\r\n\r\nGroupEffect.prototype.init = function (data, element) {\r\n this.data = data;\r\n this.effectElements = [];\r\n this.initDynamicPropertyContainer(element);\r\n var i;\r\n var len = this.data.ef.length;\r\n var eff;\r\n var effects = this.data.ef;\r\n for (i = 0; i < len; i += 1) {\r\n eff = null;\r\n switch (effects[i].ty) {\r\n case 0:\r\n eff = new SliderEffect(effects[i], element, this);\r\n break;\r\n case 1:\r\n eff = new AngleEffect(effects[i], element, this);\r\n break;\r\n case 2:\r\n eff = new ColorEffect(effects[i], element, this);\r\n break;\r\n case 3:\r\n eff = new PointEffect(effects[i], element, this);\r\n break;\r\n case 4:\r\n case 7:\r\n eff = new CheckboxEffect(effects[i], element, this);\r\n break;\r\n case 10:\r\n eff = new LayerIndexEffect(effects[i], element, this);\r\n break;\r\n case 11:\r\n eff = new MaskIndexEffect(effects[i], element, this);\r\n break;\r\n case 5:\r\n eff = new EffectsManager(effects[i], element, this);\r\n break;\r\n // case 6:\r\n default:\r\n eff = new NoValueEffect(effects[i], element, this);\r\n break;\r\n }\r\n if (eff) {\r\n this.effectElements.push(eff);\r\n }\r\n }\r\n};\r\n\r\n\r\nvar lottie = {};\r\n\r\nfunction setLocationHref(href) {\r\n locationHref = href;\r\n}\r\n\r\nfunction searchAnimations() {\r\n if (standalone === true) {\r\n animationManager.searchAnimations(animationData, standalone, renderer);\r\n } else {\r\n animationManager.searchAnimations();\r\n }\r\n}\r\n\r\nfunction setSubframeRendering(flag) {\r\n subframeEnabled = flag;\r\n}\r\n\r\nfunction setIDPrefix(prefix) {\r\n idPrefix = prefix;\r\n}\r\n\r\nfunction loadAnimation(params) {\r\n if (standalone === true) {\r\n params.animationData = JSON.parse(animationData);\r\n }\r\n return animationManager.loadAnimation(params);\r\n}\r\n\r\nfunction setQuality(value) {\r\n if (typeof value === 'string') {\r\n switch (value) {\r\n case 'high':\r\n defaultCurveSegments = 200;\r\n break;\r\n default:\r\n case 'medium':\r\n defaultCurveSegments = 50;\r\n break;\r\n case 'low':\r\n defaultCurveSegments = 10;\r\n break;\r\n }\r\n } else if (!isNaN(value) && value > 1) {\r\n defaultCurveSegments = value;\r\n }\r\n if (defaultCurveSegments >= 50) {\r\n roundValues(false);\r\n } else {\r\n roundValues(true);\r\n }\r\n}\r\n\r\nfunction inBrowser() {\r\n return typeof navigator !== 'undefined';\r\n}\r\n\r\nfunction installPlugin(type, plugin) {\r\n if (type === 'expressions') {\r\n expressionsPlugin = plugin;\r\n }\r\n}\r\n\r\nfunction getFactory(name) {\r\n switch (name) {\r\n case 'propertyFactory':\r\n return PropertyFactory;\r\n case 'shapePropertyFactory':\r\n return ShapePropertyFactory;\r\n case 'matrix':\r\n return Matrix;\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nlottie.play = animationManager.play;\r\nlottie.pause = animationManager.pause;\r\nlottie.setLocationHref = setLocationHref;\r\nlottie.togglePause = animationManager.togglePause;\r\nlottie.setSpeed = animationManager.setSpeed;\r\nlottie.setDirection = animationManager.setDirection;\r\nlottie.stop = animationManager.stop;\r\nlottie.searchAnimations = searchAnimations;\r\nlottie.registerAnimation = animationManager.registerAnimation;\r\nlottie.loadAnimation = loadAnimation;\r\nlottie.setSubframeRendering = setSubframeRendering;\r\nlottie.resize = animationManager.resize;\r\n// lottie.start = start;\r\nlottie.goToAndStop = animationManager.goToAndStop;\r\nlottie.destroy = animationManager.destroy;\r\nlottie.setQuality = setQuality;\r\nlottie.inBrowser = inBrowser;\r\nlottie.installPlugin = installPlugin;\r\nlottie.freeze = animationManager.freeze;\r\nlottie.unfreeze = animationManager.unfreeze;\r\nlottie.setVolume = animationManager.setVolume;\r\nlottie.mute = animationManager.mute;\r\nlottie.unmute = animationManager.unmute;\r\nlottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\r\nlottie.useWebWorker = function (flag) {\r\n _useWebWorker = flag;\r\n};\r\nlottie.setIDPrefix = setIDPrefix;\r\nlottie.__getFactory = getFactory;\r\nlottie.version = '5.8.1';\r\n\r\nfunction checkReady() {\r\n if (document.readyState === 'complete') {\r\n clearInterval(readyStateCheckInterval);\r\n searchAnimations();\r\n }\r\n}\r\n\r\nfunction getQueryVariable(variable) {\r\n var vars = queryString.split('&');\r\n for (var i = 0; i < vars.length; i += 1) {\r\n var pair = vars[i].split('=');\r\n if (decodeURIComponent(pair[0]) == variable) { // eslint-disable-line eqeqeq\r\n return decodeURIComponent(pair[1]);\r\n }\r\n }\r\n return null;\r\n}\r\nvar standalone = '__[STANDALONE]__';\r\nvar animationData = '__[ANIMATIONDATA]__';\r\nvar renderer = '';\r\nvar queryString;\r\nif (standalone) {\r\n var scripts = document.getElementsByTagName('script');\r\n var index = scripts.length - 1;\r\n var myScript = scripts[index] || {\r\n src: '',\r\n };\r\n queryString = myScript.src.replace(/^[^\\?]+\\??/, ''); // eslint-disable-line no-useless-escape\r\n renderer = getQueryVariable('renderer');\r\n}\r\nvar readyStateCheckInterval = setInterval(checkReady, 100);\r\n\nreturn lottie;\n}));","if (window.MutationObserver) {\n var element = document.createElement(\"div\")\n element.innerHTML = \"<div><div></div></div>\"\n\n new MutationObserver(function(mutations, observer) {\n observer.disconnect()\n if (\n mutations[0] &&\n mutations[0].type == \"childList\" &&\n mutations[0].removedNodes[0].childNodes.length == 0\n ) {\n var prototype = HTMLElement.prototype\n var descriptor = Object.getOwnPropertyDescriptor(prototype, \"innerHTML\")\n if (descriptor && descriptor.set) {\n Object.defineProperty(prototype, \"innerHTML\", {\n set: function(value) {\n while (this.lastChild) this.removeChild(this.lastChild)\n descriptor.set.call(this, value)\n }\n })\n }\n }\n }).observe(element, { childList: true, subtree: true })\n\n element.innerHTML = \"\"\n}\n","var EventListener = /** @class */ (function () {\n function EventListener(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n EventListener.prototype.connect = function () {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n };\n EventListener.prototype.disconnect = function () {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n };\n // Binding observer delegate\n /** @hidden */\n EventListener.prototype.bindingConnected = function (binding) {\n this.unorderedBindings.add(binding);\n };\n /** @hidden */\n EventListener.prototype.bindingDisconnected = function (binding) {\n this.unorderedBindings.delete(binding);\n };\n EventListener.prototype.handleEvent = function (event) {\n var extendedEvent = extendEvent(event);\n for (var _i = 0, _a = this.bindings; _i < _a.length; _i++) {\n var binding = _a[_i];\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n };\n Object.defineProperty(EventListener.prototype, \"bindings\", {\n get: function () {\n return Array.from(this.unorderedBindings).sort(function (left, right) {\n var leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n },\n enumerable: false,\n configurable: true\n });\n return EventListener;\n}());\nexport { EventListener };\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n var stopImmediatePropagation_1 = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation: function () {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation_1.call(this);\n }\n });\n }\n}\n//# sourceMappingURL=event_listener.js.map","import { EventListener } from \"./event_listener\";\nvar Dispatcher = /** @class */ (function () {\n function Dispatcher(application) {\n this.application = application;\n this.eventListenerMaps = new Map;\n this.started = false;\n }\n Dispatcher.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(function (eventListener) { return eventListener.connect(); });\n }\n };\n Dispatcher.prototype.stop = function () {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(function (eventListener) { return eventListener.disconnect(); });\n }\n };\n Object.defineProperty(Dispatcher.prototype, \"eventListeners\", {\n get: function () {\n return Array.from(this.eventListenerMaps.values())\n .reduce(function (listeners, map) { return listeners.concat(Array.from(map.values())); }, []);\n },\n enumerable: false,\n configurable: true\n });\n // Binding observer delegate\n /** @hidden */\n Dispatcher.prototype.bindingConnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n };\n /** @hidden */\n Dispatcher.prototype.bindingDisconnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n };\n // Error handling\n Dispatcher.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) { detail = {}; }\n this.application.handleError(error, \"Error \" + message, detail);\n };\n Dispatcher.prototype.fetchEventListenerForBinding = function (binding) {\n var eventTarget = binding.eventTarget, eventName = binding.eventName, eventOptions = binding.eventOptions;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n };\n Dispatcher.prototype.fetchEventListener = function (eventTarget, eventName, eventOptions) {\n var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n var cacheKey = this.cacheKey(eventName, eventOptions);\n var eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n };\n Dispatcher.prototype.createEventListener = function (eventTarget, eventName, eventOptions) {\n var eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n };\n Dispatcher.prototype.fetchEventListenerMapForEventTarget = function (eventTarget) {\n var eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map;\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n };\n Dispatcher.prototype.cacheKey = function (eventName, eventOptions) {\n var parts = [eventName];\n Object.keys(eventOptions).sort().forEach(function (key) {\n parts.push(\"\" + (eventOptions[key] ? \"\" : \"!\") + key);\n });\n return parts.join(\":\");\n };\n return Dispatcher;\n}());\nexport { Dispatcher };\n//# sourceMappingURL=dispatcher.js.map","// capture nos.: 12 23 4 43 1 5 56 7 768 9 98\nvar descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#([^:]+?))(:(.+))?$/;\nexport function parseActionDescriptorString(descriptorString) {\n var source = descriptorString.trim();\n var matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: matches[2],\n eventOptions: matches[9] ? parseEventOptions(matches[9]) : {},\n identifier: matches[5],\n methodName: matches[7]\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions.split(\":\").reduce(function (options, token) {\n var _a;\n return Object.assign(options, (_a = {}, _a[token.replace(/^!/, \"\")] = !/^!/.test(token), _a));\n }, {});\n}\nexport function stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n//# sourceMappingURL=action_descriptor.js.map","import { parseActionDescriptorString, stringifyEventTarget } from \"./action_descriptor\";\nvar Action = /** @class */ (function () {\n function Action(element, index, descriptor) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n }\n Action.forToken = function (token) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content));\n };\n Action.prototype.toString = function () {\n var eventNameSuffix = this.eventTargetName ? \"@\" + this.eventTargetName : \"\";\n return \"\" + this.eventName + eventNameSuffix + \"->\" + this.identifier + \"#\" + this.methodName;\n };\n Object.defineProperty(Action.prototype, \"eventTargetName\", {\n get: function () {\n return stringifyEventTarget(this.eventTarget);\n },\n enumerable: false,\n configurable: true\n });\n return Action;\n}());\nexport { Action };\nvar defaultEventNames = {\n \"a\": function (e) { return \"click\"; },\n \"button\": function (e) { return \"click\"; },\n \"form\": function (e) { return \"submit\"; },\n \"input\": function (e) { return e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"; },\n \"select\": function (e) { return \"change\"; },\n \"textarea\": function (e) { return \"input\"; }\n};\nexport function getDefaultEventNameForElement(element) {\n var tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\n//# sourceMappingURL=action.js.map","var Binding = /** @class */ (function () {\n function Binding(context, action) {\n this.context = context;\n this.action = action;\n }\n Object.defineProperty(Binding.prototype, \"index\", {\n get: function () {\n return this.action.index;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"eventTarget\", {\n get: function () {\n return this.action.eventTarget;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"eventOptions\", {\n get: function () {\n return this.action.eventOptions;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"identifier\", {\n get: function () {\n return this.context.identifier;\n },\n enumerable: false,\n configurable: true\n });\n Binding.prototype.handleEvent = function (event) {\n if (this.willBeInvokedByEvent(event)) {\n this.invokeWithEvent(event);\n }\n };\n Object.defineProperty(Binding.prototype, \"eventName\", {\n get: function () {\n return this.action.eventName;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"method\", {\n get: function () {\n var method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(\"Action \\\"\" + this.action + \"\\\" references undefined method \\\"\" + this.methodName + \"\\\"\");\n },\n enumerable: false,\n configurable: true\n });\n Binding.prototype.invokeWithEvent = function (event) {\n try {\n this.method.call(this.controller, event);\n }\n catch (error) {\n var _a = this, identifier = _a.identifier, controller = _a.controller, element = _a.element, index = _a.index;\n var detail = { identifier: identifier, controller: controller, element: element, index: index, event: event };\n this.context.handleError(error, \"invoking action \\\"\" + this.action + \"\\\"\", detail);\n }\n };\n Binding.prototype.willBeInvokedByEvent = function (event) {\n var eventTarget = event.target;\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return this.scope.containsElement(this.action.element);\n }\n };\n Object.defineProperty(Binding.prototype, \"controller\", {\n get: function () {\n return this.context.controller;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"methodName\", {\n get: function () {\n return this.action.methodName;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"scope\", {\n get: function () {\n return this.context.scope;\n },\n enumerable: false,\n configurable: true\n });\n return Binding;\n}());\nexport { Binding };\n//# sourceMappingURL=binding.js.map","var ElementObserver = /** @class */ (function () {\n function ElementObserver(element, delegate) {\n var _this = this;\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set;\n this.mutationObserver = new MutationObserver(function (mutations) { return _this.processMutations(mutations); });\n }\n ElementObserver.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, childList: true, subtree: true });\n this.refresh();\n }\n };\n ElementObserver.prototype.stop = function () {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n };\n ElementObserver.prototype.refresh = function () {\n if (this.started) {\n var matches = new Set(this.matchElementsInTree());\n for (var _i = 0, _a = Array.from(this.elements); _i < _a.length; _i++) {\n var element = _a[_i];\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (var _b = 0, _c = Array.from(matches); _b < _c.length; _b++) {\n var element = _c[_b];\n this.addElement(element);\n }\n }\n };\n // Mutation record processing\n ElementObserver.prototype.processMutations = function (mutations) {\n if (this.started) {\n for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n var mutation = mutations_1[_i];\n this.processMutation(mutation);\n }\n }\n };\n ElementObserver.prototype.processMutation = function (mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n };\n ElementObserver.prototype.processAttributeChange = function (node, attributeName) {\n var element = node;\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n };\n ElementObserver.prototype.processRemovedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n };\n ElementObserver.prototype.processAddedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n };\n // Element matching\n ElementObserver.prototype.matchElement = function (element) {\n return this.delegate.matchElement(element);\n };\n ElementObserver.prototype.matchElementsInTree = function (tree) {\n if (tree === void 0) { tree = this.element; }\n return this.delegate.matchElementsInTree(tree);\n };\n ElementObserver.prototype.processTree = function (tree, processor) {\n for (var _i = 0, _a = this.matchElementsInTree(tree); _i < _a.length; _i++) {\n var element = _a[_i];\n processor.call(this, element);\n }\n };\n ElementObserver.prototype.elementFromNode = function (node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n };\n ElementObserver.prototype.elementIsActive = function (element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n };\n // Element tracking\n ElementObserver.prototype.addElement = function (element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n };\n ElementObserver.prototype.removeElement = function (element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n };\n return ElementObserver;\n}());\nexport { ElementObserver };\n//# sourceMappingURL=element_observer.js.map","import { ElementObserver } from \"./element_observer\";\nvar AttributeObserver = /** @class */ (function () {\n function AttributeObserver(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n Object.defineProperty(AttributeObserver.prototype, \"element\", {\n get: function () {\n return this.elementObserver.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AttributeObserver.prototype, \"selector\", {\n get: function () {\n return \"[\" + this.attributeName + \"]\";\n },\n enumerable: false,\n configurable: true\n });\n AttributeObserver.prototype.start = function () {\n this.elementObserver.start();\n };\n AttributeObserver.prototype.stop = function () {\n this.elementObserver.stop();\n };\n AttributeObserver.prototype.refresh = function () {\n this.elementObserver.refresh();\n };\n Object.defineProperty(AttributeObserver.prototype, \"started\", {\n get: function () {\n return this.elementObserver.started;\n },\n enumerable: false,\n configurable: true\n });\n // Element observer delegate\n AttributeObserver.prototype.matchElement = function (element) {\n return element.hasAttribute(this.attributeName);\n };\n AttributeObserver.prototype.matchElementsInTree = function (tree) {\n var match = this.matchElement(tree) ? [tree] : [];\n var matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n };\n AttributeObserver.prototype.elementMatched = function (element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n };\n AttributeObserver.prototype.elementUnmatched = function (element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n };\n AttributeObserver.prototype.elementAttributeChanged = function (element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n };\n return AttributeObserver;\n}());\nexport { AttributeObserver };\n//# sourceMappingURL=attribute_observer.js.map","var StringMapObserver = /** @class */ (function () {\n function StringMapObserver(element, delegate) {\n var _this = this;\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map;\n this.mutationObserver = new MutationObserver(function (mutations) { return _this.processMutations(mutations); });\n }\n StringMapObserver.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true });\n this.refresh();\n }\n };\n StringMapObserver.prototype.stop = function () {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n };\n StringMapObserver.prototype.refresh = function () {\n if (this.started) {\n for (var _i = 0, _a = this.knownAttributeNames; _i < _a.length; _i++) {\n var attributeName = _a[_i];\n this.refreshAttribute(attributeName);\n }\n }\n };\n // Mutation record processing\n StringMapObserver.prototype.processMutations = function (mutations) {\n if (this.started) {\n for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n var mutation = mutations_1[_i];\n this.processMutation(mutation);\n }\n }\n };\n StringMapObserver.prototype.processMutation = function (mutation) {\n var attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName);\n }\n };\n // State tracking\n StringMapObserver.prototype.refreshAttribute = function (attributeName) {\n var key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n var value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key);\n }\n if (value == null) {\n this.stringMap.delete(attributeName);\n this.stringMapKeyRemoved(key, attributeName);\n }\n else {\n this.stringMap.set(attributeName, value);\n }\n }\n };\n StringMapObserver.prototype.stringMapKeyAdded = function (key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n };\n StringMapObserver.prototype.stringMapValueChanged = function (value, key) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key);\n }\n };\n StringMapObserver.prototype.stringMapKeyRemoved = function (key, attributeName) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName);\n }\n };\n Object.defineProperty(StringMapObserver.prototype, \"knownAttributeNames\", {\n get: function () {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StringMapObserver.prototype, \"currentAttributeNames\", {\n get: function () {\n return Array.from(this.element.attributes).map(function (attribute) { return attribute.name; });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StringMapObserver.prototype, \"recordedAttributeNames\", {\n get: function () {\n return Array.from(this.stringMap.keys());\n },\n enumerable: false,\n configurable: true\n });\n return StringMapObserver;\n}());\nexport { StringMapObserver };\n//# sourceMappingURL=string_map_observer.js.map","export function add(map, key, value) {\n fetch(map, key).add(value);\n}\nexport function del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nexport function fetch(map, key) {\n var values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nexport function prune(map, key) {\n var values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n//# sourceMappingURL=set_operations.js.map","import { add, del } from \"./set_operations\";\nvar Multimap = /** @class */ (function () {\n function Multimap() {\n this.valuesByKey = new Map();\n }\n Object.defineProperty(Multimap.prototype, \"values\", {\n get: function () {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (values, set) { return values.concat(Array.from(set)); }, []);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Multimap.prototype, \"size\", {\n get: function () {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (size, set) { return size + set.size; }, 0);\n },\n enumerable: false,\n configurable: true\n });\n Multimap.prototype.add = function (key, value) {\n add(this.valuesByKey, key, value);\n };\n Multimap.prototype.delete = function (key, value) {\n del(this.valuesByKey, key, value);\n };\n Multimap.prototype.has = function (key, value) {\n var values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n };\n Multimap.prototype.hasKey = function (key) {\n return this.valuesByKey.has(key);\n };\n Multimap.prototype.hasValue = function (value) {\n var sets = Array.from(this.valuesByKey.values());\n return sets.some(function (set) { return set.has(value); });\n };\n Multimap.prototype.getValuesForKey = function (key) {\n var values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n };\n Multimap.prototype.getKeysForValue = function (value) {\n return Array.from(this.valuesByKey)\n .filter(function (_a) {\n var key = _a[0], values = _a[1];\n return values.has(value);\n })\n .map(function (_a) {\n var key = _a[0], values = _a[1];\n return key;\n });\n };\n return Multimap;\n}());\nexport { Multimap };\n//# sourceMappingURL=multimap.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Multimap } from \"./multimap\";\nimport { add, del } from \"./set_operations\";\nvar IndexedMultimap = /** @class */ (function (_super) {\n __extends(IndexedMultimap, _super);\n function IndexedMultimap() {\n var _this = _super.call(this) || this;\n _this.keysByValue = new Map;\n return _this;\n }\n Object.defineProperty(IndexedMultimap.prototype, \"values\", {\n get: function () {\n return Array.from(this.keysByValue.keys());\n },\n enumerable: false,\n configurable: true\n });\n IndexedMultimap.prototype.add = function (key, value) {\n _super.prototype.add.call(this, key, value);\n add(this.keysByValue, value, key);\n };\n IndexedMultimap.prototype.delete = function (key, value) {\n _super.prototype.delete.call(this, key, value);\n del(this.keysByValue, value, key);\n };\n IndexedMultimap.prototype.hasValue = function (value) {\n return this.keysByValue.has(value);\n };\n IndexedMultimap.prototype.getKeysForValue = function (value) {\n var set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n };\n return IndexedMultimap;\n}(Multimap));\nexport { IndexedMultimap };\n//# sourceMappingURL=indexed_multimap.js.map","import { AttributeObserver } from \"./attribute_observer\";\nimport { Multimap } from \"@stimulus/multimap\";\nvar TokenListObserver = /** @class */ (function () {\n function TokenListObserver(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap;\n }\n Object.defineProperty(TokenListObserver.prototype, \"started\", {\n get: function () {\n return this.attributeObserver.started;\n },\n enumerable: false,\n configurable: true\n });\n TokenListObserver.prototype.start = function () {\n this.attributeObserver.start();\n };\n TokenListObserver.prototype.stop = function () {\n this.attributeObserver.stop();\n };\n TokenListObserver.prototype.refresh = function () {\n this.attributeObserver.refresh();\n };\n Object.defineProperty(TokenListObserver.prototype, \"element\", {\n get: function () {\n return this.attributeObserver.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TokenListObserver.prototype, \"attributeName\", {\n get: function () {\n return this.attributeObserver.attributeName;\n },\n enumerable: false,\n configurable: true\n });\n // Attribute observer delegate\n TokenListObserver.prototype.elementMatchedAttribute = function (element) {\n this.tokensMatched(this.readTokensForElement(element));\n };\n TokenListObserver.prototype.elementAttributeValueChanged = function (element) {\n var _a = this.refreshTokensForElement(element), unmatchedTokens = _a[0], matchedTokens = _a[1];\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n };\n TokenListObserver.prototype.elementUnmatchedAttribute = function (element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n };\n TokenListObserver.prototype.tokensMatched = function (tokens) {\n var _this = this;\n tokens.forEach(function (token) { return _this.tokenMatched(token); });\n };\n TokenListObserver.prototype.tokensUnmatched = function (tokens) {\n var _this = this;\n tokens.forEach(function (token) { return _this.tokenUnmatched(token); });\n };\n TokenListObserver.prototype.tokenMatched = function (token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n };\n TokenListObserver.prototype.tokenUnmatched = function (token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n };\n TokenListObserver.prototype.refreshTokensForElement = function (element) {\n var previousTokens = this.tokensByElement.getValuesForKey(element);\n var currentTokens = this.readTokensForElement(element);\n var firstDifferingIndex = zip(previousTokens, currentTokens)\n .findIndex(function (_a) {\n var previousToken = _a[0], currentToken = _a[1];\n return !tokensAreEqual(previousToken, currentToken);\n });\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n };\n TokenListObserver.prototype.readTokensForElement = function (element) {\n var attributeName = this.attributeName;\n var tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n };\n return TokenListObserver;\n}());\nexport { TokenListObserver };\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(function (content) { return content.length; })\n .map(function (content, index) { return ({ element: element, attributeName: attributeName, content: content, index: index }); });\n}\nfunction zip(left, right) {\n var length = Math.max(left.length, right.length);\n return Array.from({ length: length }, function (_, index) { return [left[index], right[index]]; });\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n//# sourceMappingURL=token_list_observer.js.map","import { TokenListObserver } from \"./token_list_observer\";\nvar ValueListObserver = /** @class */ (function () {\n function ValueListObserver(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap;\n this.valuesByTokenByElement = new WeakMap;\n }\n Object.defineProperty(ValueListObserver.prototype, \"started\", {\n get: function () {\n return this.tokenListObserver.started;\n },\n enumerable: false,\n configurable: true\n });\n ValueListObserver.prototype.start = function () {\n this.tokenListObserver.start();\n };\n ValueListObserver.prototype.stop = function () {\n this.tokenListObserver.stop();\n };\n ValueListObserver.prototype.refresh = function () {\n this.tokenListObserver.refresh();\n };\n Object.defineProperty(ValueListObserver.prototype, \"element\", {\n get: function () {\n return this.tokenListObserver.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ValueListObserver.prototype, \"attributeName\", {\n get: function () {\n return this.tokenListObserver.attributeName;\n },\n enumerable: false,\n configurable: true\n });\n ValueListObserver.prototype.tokenMatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n };\n ValueListObserver.prototype.tokenUnmatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n };\n ValueListObserver.prototype.fetchParseResultForToken = function (token) {\n var parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n };\n ValueListObserver.prototype.fetchValuesByTokenForElement = function (element) {\n var valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map;\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n };\n ValueListObserver.prototype.parseToken = function (token) {\n try {\n var value = this.delegate.parseValueForToken(token);\n return { value: value };\n }\n catch (error) {\n return { error: error };\n }\n };\n return ValueListObserver;\n}());\nexport { ValueListObserver };\n//# sourceMappingURL=value_list_observer.js.map","import { Action } from \"./action\";\nimport { Binding } from \"./binding\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\nvar BindingObserver = /** @class */ (function () {\n function BindingObserver(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map;\n }\n BindingObserver.prototype.start = function () {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n };\n BindingObserver.prototype.stop = function () {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n };\n Object.defineProperty(BindingObserver.prototype, \"element\", {\n get: function () {\n return this.context.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"identifier\", {\n get: function () {\n return this.context.identifier;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"actionAttribute\", {\n get: function () {\n return this.schema.actionAttribute;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"schema\", {\n get: function () {\n return this.context.schema;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"bindings\", {\n get: function () {\n return Array.from(this.bindingsByAction.values());\n },\n enumerable: false,\n configurable: true\n });\n BindingObserver.prototype.connectAction = function (action) {\n var binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n };\n BindingObserver.prototype.disconnectAction = function (action) {\n var binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n };\n BindingObserver.prototype.disconnectAllActions = function () {\n var _this = this;\n this.bindings.forEach(function (binding) { return _this.delegate.bindingDisconnected(binding); });\n this.bindingsByAction.clear();\n };\n // Value observer delegate\n BindingObserver.prototype.parseValueForToken = function (token) {\n var action = Action.forToken(token);\n if (action.identifier == this.identifier) {\n return action;\n }\n };\n BindingObserver.prototype.elementMatchedValue = function (element, action) {\n this.connectAction(action);\n };\n BindingObserver.prototype.elementUnmatchedValue = function (element, action) {\n this.disconnectAction(action);\n };\n return BindingObserver;\n}());\nexport { BindingObserver };\n//# sourceMappingURL=binding_observer.js.map","import { StringMapObserver } from \"@stimulus/mutation-observers\";\nvar ValueObserver = /** @class */ (function () {\n function ValueObserver(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n this.invokeChangedCallbacksForDefaultValues();\n }\n ValueObserver.prototype.start = function () {\n this.stringMapObserver.start();\n };\n ValueObserver.prototype.stop = function () {\n this.stringMapObserver.stop();\n };\n Object.defineProperty(ValueObserver.prototype, \"element\", {\n get: function () {\n return this.context.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ValueObserver.prototype, \"controller\", {\n get: function () {\n return this.context.controller;\n },\n enumerable: false,\n configurable: true\n });\n // String map observer delegate\n ValueObserver.prototype.getStringMapKeyForAttribute = function (attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n };\n ValueObserver.prototype.stringMapValueChanged = function (attributeValue, name) {\n this.invokeChangedCallbackForValue(name);\n };\n ValueObserver.prototype.invokeChangedCallbacksForDefaultValues = function () {\n for (var _i = 0, _a = this.valueDescriptors; _i < _a.length; _i++) {\n var _b = _a[_i], key = _b.key, name_1 = _b.name, defaultValue = _b.defaultValue;\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallbackForValue(name_1);\n }\n }\n };\n ValueObserver.prototype.invokeChangedCallbackForValue = function (name) {\n var methodName = name + \"Changed\";\n var method = this.receiver[methodName];\n if (typeof method == \"function\") {\n var value = this.receiver[name];\n method.call(this.receiver, value);\n }\n };\n Object.defineProperty(ValueObserver.prototype, \"valueDescriptors\", {\n get: function () {\n var valueDescriptorMap = this.valueDescriptorMap;\n return Object.keys(valueDescriptorMap).map(function (key) { return valueDescriptorMap[key]; });\n },\n enumerable: false,\n configurable: true\n });\n return ValueObserver;\n}());\nexport { ValueObserver };\n//# sourceMappingURL=value_observer.js.map","import { BindingObserver } from \"./binding_observer\";\nimport { ValueObserver } from \"./value_observer\";\nvar Context = /** @class */ (function () {\n function Context(module, scope) {\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n try {\n this.controller.initialize();\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n Context.prototype.connect = function () {\n this.bindingObserver.start();\n this.valueObserver.start();\n try {\n this.controller.connect();\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n };\n Context.prototype.disconnect = function () {\n try {\n this.controller.disconnect();\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.valueObserver.stop();\n this.bindingObserver.stop();\n };\n Object.defineProperty(Context.prototype, \"application\", {\n get: function () {\n return this.module.application;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"identifier\", {\n get: function () {\n return this.module.identifier;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"schema\", {\n get: function () {\n return this.application.schema;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"dispatcher\", {\n get: function () {\n return this.application.dispatcher;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"parentElement\", {\n get: function () {\n return this.element.parentElement;\n },\n enumerable: false,\n configurable: true\n });\n // Error handling\n Context.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) { detail = {}; }\n var _a = this, identifier = _a.identifier, controller = _a.controller, element = _a.element;\n detail = Object.assign({ identifier: identifier, controller: controller, element: element }, detail);\n this.application.handleError(error, \"Error \" + message, detail);\n };\n return Context;\n}());\nexport { Context };\n//# sourceMappingURL=context.js.map","export function readInheritableStaticArrayValues(constructor, propertyName) {\n var ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce(function (values, constructor) {\n getOwnStaticArrayValues(constructor, propertyName).forEach(function (name) { return values.add(name); });\n return values;\n }, new Set));\n}\nexport function readInheritableStaticObjectPairs(constructor, propertyName) {\n var ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce(function (pairs, constructor) {\n pairs.push.apply(pairs, getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n var ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n var definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n var definition = constructor[propertyName];\n return definition ? Object.keys(definition).map(function (key) { return [key, definition[key]]; }) : [];\n}\n//# sourceMappingURL=inheritable_statics.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { readInheritableStaticArrayValues } from \"./inheritable_statics\";\n/** @hidden */\nexport function bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n var shadowConstructor = extend(constructor);\n var shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n var blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce(function (blessedProperties, blessing) {\n var properties = blessing(constructor);\n for (var key in properties) {\n var descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce(function (shadowProperties, key) {\n var _a;\n var descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, (_a = {}, _a[key] = descriptor, _a));\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n var shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n var shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n var descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nvar getOwnKeys = (function () {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return function (object) { return __spreadArrays(Object.getOwnPropertyNames(object), Object.getOwnPropertySymbols(object)); };\n }\n else {\n return Object.getOwnPropertyNames;\n }\n})();\nvar extend = (function () {\n function extendWithReflect(constructor) {\n function extended() {\n var _newTarget = this && this instanceof extended ? this.constructor : void 0;\n return Reflect.construct(constructor, arguments, _newTarget);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: { value: extended }\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n var a = function () { this.a.call(this); };\n var b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b;\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return function (constructor) { return /** @class */ (function (_super) {\n __extends(extended, _super);\n function extended() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return extended;\n }(constructor)); };\n }\n})();\n//# sourceMappingURL=blessing.js.map","import { Context } from \"./context\";\nimport { blessDefinition } from \"./definition\";\nvar Module = /** @class */ (function () {\n function Module(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap;\n this.connectedContexts = new Set;\n }\n Object.defineProperty(Module.prototype, \"identifier\", {\n get: function () {\n return this.definition.identifier;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"controllerConstructor\", {\n get: function () {\n return this.definition.controllerConstructor;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"contexts\", {\n get: function () {\n return Array.from(this.connectedContexts);\n },\n enumerable: false,\n configurable: true\n });\n Module.prototype.connectContextForScope = function (scope) {\n var context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n };\n Module.prototype.disconnectContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n };\n Module.prototype.fetchContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n };\n return Module;\n}());\nexport { Module };\n//# sourceMappingURL=module.js.map","import { bless } from \"./blessing\";\n/** @hidden */\nexport function blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor)\n };\n}\n//# sourceMappingURL=definition.js.map","var ClassMap = /** @class */ (function () {\n function ClassMap(scope) {\n this.scope = scope;\n }\n ClassMap.prototype.has = function (name) {\n return this.data.has(this.getDataKey(name));\n };\n ClassMap.prototype.get = function (name) {\n return this.data.get(this.getDataKey(name));\n };\n ClassMap.prototype.getAttributeName = function (name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n };\n ClassMap.prototype.getDataKey = function (name) {\n return name + \"-class\";\n };\n Object.defineProperty(ClassMap.prototype, \"data\", {\n get: function () {\n return this.scope.data;\n },\n enumerable: false,\n configurable: true\n });\n return ClassMap;\n}());\nexport { ClassMap };\n//# sourceMappingURL=class_map.js.map","export function camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, function (_, char) { return char.toUpperCase(); });\n}\nexport function capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nexport function dasherize(value) {\n return value.replace(/([A-Z])/g, function (_, char) { return \"-\" + char.toLowerCase(); });\n}\n//# sourceMappingURL=string_helpers.js.map","import { dasherize } from \"./string_helpers\";\nvar DataMap = /** @class */ (function () {\n function DataMap(scope) {\n this.scope = scope;\n }\n Object.defineProperty(DataMap.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DataMap.prototype, \"identifier\", {\n get: function () {\n return this.scope.identifier;\n },\n enumerable: false,\n configurable: true\n });\n DataMap.prototype.get = function (key) {\n var name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n };\n DataMap.prototype.set = function (key, value) {\n var name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n };\n DataMap.prototype.has = function (key) {\n var name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n };\n DataMap.prototype.delete = function (key) {\n if (this.has(key)) {\n var name_1 = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name_1);\n return true;\n }\n else {\n return false;\n }\n };\n DataMap.prototype.getAttributeNameForKey = function (key) {\n return \"data-\" + this.identifier + \"-\" + dasherize(key);\n };\n return DataMap;\n}());\nexport { DataMap };\n//# sourceMappingURL=data_map.js.map","var Guide = /** @class */ (function () {\n function Guide(logger) {\n this.warnedKeysByObject = new WeakMap;\n this.logger = logger;\n }\n Guide.prototype.warn = function (object, key, message) {\n var warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set;\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n };\n return Guide;\n}());\nexport { Guide };\n//# sourceMappingURL=guide.js.map","/** @hidden */\nexport function attributeValueContainsToken(attributeName, token) {\n return \"[\" + attributeName + \"~=\\\"\" + token + \"\\\"]\";\n}\n//# sourceMappingURL=selectors.js.map","var __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { attributeValueContainsToken } from \"./selectors\";\nvar TargetSet = /** @class */ (function () {\n function TargetSet(scope) {\n this.scope = scope;\n }\n Object.defineProperty(TargetSet.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"identifier\", {\n get: function () {\n return this.scope.identifier;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"schema\", {\n get: function () {\n return this.scope.schema;\n },\n enumerable: false,\n configurable: true\n });\n TargetSet.prototype.has = function (targetName) {\n return this.find(targetName) != null;\n };\n TargetSet.prototype.find = function () {\n var _this = this;\n var targetNames = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n return targetNames.reduce(function (target, targetName) {\n return target\n || _this.findTarget(targetName)\n || _this.findLegacyTarget(targetName);\n }, undefined);\n };\n TargetSet.prototype.findAll = function () {\n var _this = this;\n var targetNames = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n return targetNames.reduce(function (targets, targetName) { return __spreadArrays(targets, _this.findAllTargets(targetName), _this.findAllLegacyTargets(targetName)); }, []);\n };\n TargetSet.prototype.findTarget = function (targetName) {\n var selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n };\n TargetSet.prototype.findAllTargets = function (targetName) {\n var selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n };\n TargetSet.prototype.getSelectorForTargetName = function (targetName) {\n var attributeName = \"data-\" + this.identifier + \"-target\";\n return attributeValueContainsToken(attributeName, targetName);\n };\n TargetSet.prototype.findLegacyTarget = function (targetName) {\n var selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n };\n TargetSet.prototype.findAllLegacyTargets = function (targetName) {\n var _this = this;\n var selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map(function (element) { return _this.deprecate(element, targetName); });\n };\n TargetSet.prototype.getLegacySelectorForTargetName = function (targetName) {\n var targetDescriptor = this.identifier + \".\" + targetName;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n };\n TargetSet.prototype.deprecate = function (element, targetName) {\n if (element) {\n var identifier = this.identifier;\n var attributeName = this.schema.targetAttribute;\n this.guide.warn(element, \"target:\" + targetName, \"Please replace \" + attributeName + \"=\\\"\" + identifier + \".\" + targetName + \"\\\" with data-\" + identifier + \"-target=\\\"\" + targetName + \"\\\". \" +\n (\"The \" + attributeName + \" attribute is deprecated and will be removed in a future version of Stimulus.\"));\n }\n return element;\n };\n Object.defineProperty(TargetSet.prototype, \"guide\", {\n get: function () {\n return this.scope.guide;\n },\n enumerable: false,\n configurable: true\n });\n return TargetSet;\n}());\nexport { TargetSet };\n//# sourceMappingURL=target_set.js.map","var __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { ClassMap } from \"./class_map\";\nimport { DataMap } from \"./data_map\";\nimport { Guide } from \"./guide\";\nimport { attributeValueContainsToken } from \"./selectors\";\nimport { TargetSet } from \"./target_set\";\nvar Scope = /** @class */ (function () {\n function Scope(schema, element, identifier, logger) {\n var _this = this;\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = function (element) {\n return element.closest(_this.controllerSelector) === _this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n }\n Scope.prototype.findElement = function (selector) {\n return this.element.matches(selector)\n ? this.element\n : this.queryElements(selector).find(this.containsElement);\n };\n Scope.prototype.findAllElements = function (selector) {\n return __spreadArrays(this.element.matches(selector) ? [this.element] : [], this.queryElements(selector).filter(this.containsElement));\n };\n Scope.prototype.queryElements = function (selector) {\n return Array.from(this.element.querySelectorAll(selector));\n };\n Object.defineProperty(Scope.prototype, \"controllerSelector\", {\n get: function () {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n },\n enumerable: false,\n configurable: true\n });\n return Scope;\n}());\nexport { Scope };\n//# sourceMappingURL=scope.js.map","import { ValueListObserver } from \"@stimulus/mutation-observers\";\nvar ScopeObserver = /** @class */ (function () {\n function ScopeObserver(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap;\n this.scopeReferenceCounts = new WeakMap;\n }\n ScopeObserver.prototype.start = function () {\n this.valueListObserver.start();\n };\n ScopeObserver.prototype.stop = function () {\n this.valueListObserver.stop();\n };\n Object.defineProperty(ScopeObserver.prototype, \"controllerAttribute\", {\n get: function () {\n return this.schema.controllerAttribute;\n },\n enumerable: false,\n configurable: true\n });\n // Value observer delegate\n /** @hidden */\n ScopeObserver.prototype.parseValueForToken = function (token) {\n var element = token.element, identifier = token.content;\n var scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n var scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n };\n /** @hidden */\n ScopeObserver.prototype.elementMatchedValue = function (element, value) {\n var referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n };\n /** @hidden */\n ScopeObserver.prototype.elementUnmatchedValue = function (element, value) {\n var referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n };\n ScopeObserver.prototype.fetchScopesByIdentifierForElement = function (element) {\n var scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map;\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n };\n return ScopeObserver;\n}());\nexport { ScopeObserver };\n//# sourceMappingURL=scope_observer.js.map","import { Module } from \"./module\";\nimport { Multimap } from \"@stimulus/multimap\";\nimport { Scope } from \"./scope\";\nimport { ScopeObserver } from \"./scope_observer\";\nvar Router = /** @class */ (function () {\n function Router(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap;\n this.modulesByIdentifier = new Map;\n }\n Object.defineProperty(Router.prototype, \"element\", {\n get: function () {\n return this.application.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"schema\", {\n get: function () {\n return this.application.schema;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"logger\", {\n get: function () {\n return this.application.logger;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"controllerAttribute\", {\n get: function () {\n return this.schema.controllerAttribute;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"modules\", {\n get: function () {\n return Array.from(this.modulesByIdentifier.values());\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"contexts\", {\n get: function () {\n return this.modules.reduce(function (contexts, module) { return contexts.concat(module.contexts); }, []);\n },\n enumerable: false,\n configurable: true\n });\n Router.prototype.start = function () {\n this.scopeObserver.start();\n };\n Router.prototype.stop = function () {\n this.scopeObserver.stop();\n };\n Router.prototype.loadDefinition = function (definition) {\n this.unloadIdentifier(definition.identifier);\n var module = new Module(this.application, definition);\n this.connectModule(module);\n };\n Router.prototype.unloadIdentifier = function (identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n };\n Router.prototype.getContextForElementAndIdentifier = function (element, identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find(function (context) { return context.element == element; });\n }\n };\n // Error handler delegate\n /** @hidden */\n Router.prototype.handleError = function (error, message, detail) {\n this.application.handleError(error, message, detail);\n };\n // Scope observer delegate\n /** @hidden */\n Router.prototype.createScopeForElementAndIdentifier = function (element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n };\n /** @hidden */\n Router.prototype.scopeConnected = function (scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n };\n /** @hidden */\n Router.prototype.scopeDisconnected = function (scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n };\n // Modules\n Router.prototype.connectModule = function (module) {\n this.modulesByIdentifier.set(module.identifier, module);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) { return module.connectContextForScope(scope); });\n };\n Router.prototype.disconnectModule = function (module) {\n this.modulesByIdentifier.delete(module.identifier);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) { return module.disconnectContextForScope(scope); });\n };\n return Router;\n}());\nexport { Router };\n//# sourceMappingURL=router.js.map","export var defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\"\n};\n//# sourceMappingURL=schema.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { Dispatcher } from \"./dispatcher\";\nimport { Router } from \"./router\";\nimport { defaultSchema } from \"./schema\";\nvar Application = /** @class */ (function () {\n function Application(element, schema) {\n if (element === void 0) { element = document.documentElement; }\n if (schema === void 0) { schema = defaultSchema; }\n this.logger = console;\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n }\n Application.start = function (element, schema) {\n var application = new Application(element, schema);\n application.start();\n return application;\n };\n Application.prototype.start = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, domReady()];\n case 1:\n _a.sent();\n this.dispatcher.start();\n this.router.start();\n return [2 /*return*/];\n }\n });\n });\n };\n Application.prototype.stop = function () {\n this.dispatcher.stop();\n this.router.stop();\n };\n Application.prototype.register = function (identifier, controllerConstructor) {\n this.load({ identifier: identifier, controllerConstructor: controllerConstructor });\n };\n Application.prototype.load = function (head) {\n var _this = this;\n var rest = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n var definitions = Array.isArray(head) ? head : __spreadArrays([head], rest);\n definitions.forEach(function (definition) { return _this.router.loadDefinition(definition); });\n };\n Application.prototype.unload = function (head) {\n var _this = this;\n var rest = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n var identifiers = Array.isArray(head) ? head : __spreadArrays([head], rest);\n identifiers.forEach(function (identifier) { return _this.router.unloadIdentifier(identifier); });\n };\n Object.defineProperty(Application.prototype, \"controllers\", {\n // Controllers\n get: function () {\n return this.router.contexts.map(function (context) { return context.controller; });\n },\n enumerable: false,\n configurable: true\n });\n Application.prototype.getControllerForElementAndIdentifier = function (element, identifier) {\n var context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n };\n // Error handling\n Application.prototype.handleError = function (error, message, detail) {\n this.logger.error(\"%s\\n\\n%o\\n\\n%o\", message, error, detail);\n };\n return Application;\n}());\nexport { Application };\nfunction domReady() {\n return new Promise(function (resolve) {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", resolve);\n }\n else {\n resolve();\n }\n });\n}\n//# sourceMappingURL=application.js.map","import { readInheritableStaticArrayValues } from \"./inheritable_statics\";\nimport { capitalize } from \"./string_helpers\";\n/** @hidden */\nexport function ClassPropertiesBlessing(constructor) {\n var classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce(function (properties, classDefinition) {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n var _a;\n var name = key + \"Class\";\n return _a = {},\n _a[name] = {\n get: function () {\n var classes = this.classes;\n if (classes.has(key)) {\n return classes.get(key);\n }\n else {\n var attribute = classes.getAttributeName(key);\n throw new Error(\"Missing attribute \\\"\" + attribute + \"\\\"\");\n }\n }\n },\n _a[\"has\" + capitalize(name)] = {\n get: function () {\n return this.classes.has(key);\n }\n },\n _a;\n}\n//# sourceMappingURL=class_properties.js.map","import { readInheritableStaticArrayValues } from \"./inheritable_statics\";\nimport { capitalize } from \"./string_helpers\";\n/** @hidden */\nexport function TargetPropertiesBlessing(constructor) {\n var targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce(function (properties, targetDefinition) {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n var _a;\n return _a = {},\n _a[name + \"Target\"] = {\n get: function () {\n var target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(\"Missing target element \\\"\" + this.identifier + \".\" + name + \"\\\"\");\n }\n }\n },\n _a[name + \"Targets\"] = {\n get: function () {\n return this.targets.findAll(name);\n }\n },\n _a[\"has\" + capitalize(name) + \"Target\"] = {\n get: function () {\n return this.targets.has(name);\n }\n },\n _a;\n}\n//# sourceMappingURL=target_properties.js.map","import { readInheritableStaticObjectPairs } from \"./inheritable_statics\";\nimport { camelize, capitalize, dasherize } from \"./string_helpers\";\n/** @hidden */\nexport function ValuePropertiesBlessing(constructor) {\n var valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n var propertyDescriptorMap = {\n valueDescriptorMap: {\n get: function () {\n var _this = this;\n return valueDefinitionPairs.reduce(function (result, valueDefinitionPair) {\n var _a;\n var valueDescriptor = parseValueDefinitionPair(valueDefinitionPair);\n var attributeName = _this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, (_a = {}, _a[attributeName] = valueDescriptor, _a));\n }, {});\n }\n }\n };\n return valueDefinitionPairs.reduce(function (properties, valueDefinitionPair) {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\n/** @hidden */\nexport function propertiesForValueDefinitionPair(valueDefinitionPair) {\n var _a;\n var definition = parseValueDefinitionPair(valueDefinitionPair);\n var type = definition.type, key = definition.key, name = definition.name;\n var read = readers[type], write = writers[type] || writers.default;\n return _a = {},\n _a[name] = {\n get: function () {\n var value = this.data.get(key);\n if (value !== null) {\n return read(value);\n }\n else {\n return definition.defaultValue;\n }\n },\n set: function (value) {\n if (value === undefined) {\n this.data.delete(key);\n }\n else {\n this.data.set(key, write(value));\n }\n }\n },\n _a[\"has\" + capitalize(name)] = {\n get: function () {\n return this.data.has(key);\n }\n },\n _a;\n}\nfunction parseValueDefinitionPair(_a) {\n var token = _a[0], typeConstant = _a[1];\n var type = parseValueTypeConstant(typeConstant);\n return valueDescriptorForTokenAndType(token, type);\n}\nfunction parseValueTypeConstant(typeConstant) {\n switch (typeConstant) {\n case Array: return \"array\";\n case Boolean: return \"boolean\";\n case Number: return \"number\";\n case Object: return \"object\";\n case String: return \"string\";\n }\n throw new Error(\"Unknown value type constant \\\"\" + typeConstant + \"\\\"\");\n}\nfunction valueDescriptorForTokenAndType(token, type) {\n var key = dasherize(token) + \"-value\";\n return {\n type: type,\n key: key,\n name: camelize(key),\n get defaultValue() { return defaultValuesByType[type]; }\n };\n}\nvar defaultValuesByType = {\n get array() { return []; },\n boolean: false,\n number: 0,\n get object() { return {}; },\n string: \"\"\n};\nvar readers = {\n array: function (value) {\n var array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(\"Expected array\");\n }\n return array;\n },\n boolean: function (value) {\n return !(value == \"0\" || value == \"false\");\n },\n number: function (value) {\n return parseFloat(value);\n },\n object: function (value) {\n var object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(\"Expected object\");\n }\n return object;\n },\n string: function (value) {\n return value;\n }\n};\nvar writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return \"\" + value;\n}\n//# sourceMappingURL=value_properties.js.map","import { ClassPropertiesBlessing } from \"./class_properties\";\nimport { TargetPropertiesBlessing } from \"./target_properties\";\nimport { ValuePropertiesBlessing } from \"./value_properties\";\nvar Controller = /** @class */ (function () {\n function Controller(context) {\n this.context = context;\n }\n Object.defineProperty(Controller.prototype, \"application\", {\n get: function () {\n return this.context.application;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"scope\", {\n get: function () {\n return this.context.scope;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"identifier\", {\n get: function () {\n return this.scope.identifier;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"targets\", {\n get: function () {\n return this.scope.targets;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"classes\", {\n get: function () {\n return this.scope.classes;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"data\", {\n get: function () {\n return this.scope.data;\n },\n enumerable: false,\n configurable: true\n });\n Controller.prototype.initialize = function () {\n // Override in your subclass to set up initial controller state\n };\n Controller.prototype.connect = function () {\n // Override in your subclass to respond when the controller is connected to the DOM\n };\n Controller.prototype.disconnect = function () {\n // Override in your subclass to respond when the controller is disconnected from the DOM\n };\n Controller.blessings = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing];\n Controller.targets = [];\n Controller.values = {};\n return Controller;\n}());\nexport { Controller };\n//# sourceMappingURL=controller.js.map"],"names":["definitionsFromContext","context","keys","map","key","identifier","logicalName","match","replace","identifierForContextKey","module","controllerConstructor","default","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","filter","value","factory","__webpack_modules__","__unused_webpack_module","d","clipboard","tiny_emitter","tiny_emitter_default","n","listen","listen_default","src_select","select_default","_typeof","obj","Symbol","iterator","constructor","prototype","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","ClipboardAction","options","instance","Constructor","TypeError","_classCallCheck","this","resolveOptions","initSelection","protoProps","staticProps","arguments","undefined","action","container","emitter","text","trigger","selectedText","selectFake","selectTarget","isRTL","document","documentElement","getAttribute","fakeElem","createElement","style","fontSize","border","padding","margin","position","yPosition","window","pageYOffset","scrollTop","top","concat","setAttribute","_this","createFakeElement","fakeHandlerCallback","removeFake","fakeHandler","addEventListener","appendChild","copyText","removeEventListener","removeChild","succeeded","execCommand","err","handleResult","emit","clearSelection","bind","focus","activeElement","blur","getSelection","removeAllRanges","set","_action","Error","get","nodeType","hasAttribute","_target","clipboard_action","clipboard_typeof","clipboard_defineProperties","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Date","toString","call","e","_isNativeReflectConstruct","result","Super","_getPrototypeOf","NewTarget","apply","self","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","getPrototypeOf","getAttributeValue","suffix","element","attribute","Clipboard","_Emitter","subClass","superClass","create","_inherits","_super","clipboard_classCallCheck","listenClick","defaultAction","defaultTarget","defaultText","body","_this2","listener","onClick","delegateTarget","currentTarget","clipboardAction","selector","querySelector","destroy","actions","support","queryCommandSupported","forEach","Element","matches","proto","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","exports","parentNode","__unused_webpack_exports","closest","_delegate","type","callback","useCapture","listenerFn","elements","querySelectorAll","Array","node","HTMLElement","nodeList","string","String","fn","is","delegate","listenNode","listenNodeList","listenSelector","nodeName","isReadOnly","select","setSelectionRange","removeAttribute","selection","range","createRange","selectNodeContents","addRange","E","on","name","ctx","push","once","off","_","data","slice","evtArr","len","evts","liveEvents","TinyEmitter","__webpack_module_cache__","moduleId","getter","__esModule","a","definition","prop","hasOwnProperty","it","UNSCOPABLES","ArrayProto","forbiddenField","isObject","forOf","iter","ITERATOR","toIObject","toLength","toAbsoluteIndex","IS_INCLUDES","$this","el","fromIndex","O","index","IObject","toObject","asc","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","callbackfn","that","val","res","f","isArray","SPECIES","original","C","speciesConstructor","cof","TAG","ARG","T","B","tryGet","callee","dP","redefineAll","anInstance","$iterDefine","step","setSpecies","DESCRIPTORS","fastKey","validate","SIZE","getEntry","entry","_i","_f","k","getConstructor","wrapper","NAME","ADDER","iterable","_t","_l","clear","r","next","prev","v","has","def","setStrong","iterated","kind","_k","classof","from","global","$export","redefine","meta","fails","$iterDetect","setToStringTag","inheritIfRequired","methods","common","IS_WEAK","Base","fixMethod","KEY","b","entries","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","NEED","G","W","F","core","version","__e","$defineProperty","createDesc","object","aFunction","c","split","hide","PROTOTYPE","source","own","out","exp","IS_FORCED","IS_GLOBAL","IS_STATIC","S","IS_PROTO","P","IS_BIND","expProto","Function","U","R","exec","isArrayIter","anObject","getIterFn","BREAK","RETURN","iterFn","done","Math","__g","args","un","propertyIsEnumerable","Iterators","arg","ret","IteratorPrototype","LIBRARY","$iterCreate","BUGGY","KEYS","VALUES","returnThis","DEFAULT","IS_SET","FORCED","getMethod","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","values","SAFE_CLOSING","riter","skipClosing","safe","arr","META","setDesc","id","isExtensible","FREEZE","preventExtensions","setMeta","w","getWeak","onFreeze","macrotask","Observer","MutationObserver","WebKitMutationObserver","process","Promise","isNode","head","last","notify","flush","parent","domain","exit","enter","nextTick","navigator","standalone","resolve","promise","then","toggle","createTextNode","observe","characterData","task","PromiseCapability","reject","$$resolve","$$reject","getKeys","gOPS","pIE","$assign","assign","A","K","join","aLen","getSymbols","isEnum","j","dPs","enumBugKeys","IE_PROTO","Empty","createDict","iframeDocument","iframe","display","src","contentWindow","open","write","lt","close","Properties","IE8_DOM_DEFINE","toPrimitive","Attributes","defineProperties","gOPD","getOwnPropertyDescriptor","getOwnPropertySymbols","ObjectProto","arrayIndexOf","names","$keys","newPromiseCapability","x","promiseCapability","bitmap","SRC","$toString","TO_STRING","TPL","isFunction","COLLECTION","mapping","cb","mapFn","nextItem","of","check","test","buggy","tag","stat","shared","uid","SHARED","store","mode","copyright","D","toInteger","defined","pos","s","l","charCodeAt","charAt","defer","channel","port","invoke","html","cel","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","queue","ONREADYSTATECHANGE","run","event","now","port2","port1","onmessage","postMessage","importScripts","setTimeout","max","min","ceil","floor","isNaN","valueOf","px","random","userAgent","USE_SYMBOL","$find","forced","findIndex","find","createProperty","arrayLike","mapfn","addToUnscopables","Arguments","strong","MAP","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","microtask","newPromiseCapabilityModule","perform","promiseResolve","PROMISE","versions","v8","$Promise","empty","USE_NATIVE","FakePromise","PromiseRejectionEvent","indexOf","isThenable","isReject","_n","chain","_c","_v","ok","_s","reaction","exited","handler","fail","_h","onHandleUnhandled","onUnhandled","console","unhandled","isUnhandled","onunhandledrejection","reason","error","_a","onrejectionhandled","$reject","_d","_w","$resolve","executor","onFulfilled","onRejected","capability","all","remaining","$index","alreadyCalled","race","add","$at","point","toJSON","onFinally","$iterators","wks","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","ce","CustomEvent","cancelable","preventDefault","defaultPrevented","params","evt","origPrevent","bubbles","createEvent","initCustomEvent","detail","Event","ElementProto","ownerDocument","Boolean","$","count","logEnabled","hiddenCheckEnabled","msgHeaderLen","msgHeader","msgId","msgIdLen","pagePosition","requestAnimationFrame","resetRequiredMethods","scroll","bodyScroll","documentElementScroll","settings","timer","defaults","autoResize","bodyBackground","bodyMargin","bodyMarginV1","bodyPadding","checkOrigin","inPageLinks","enablePublicMethods","heightCalculationMethod","interval","log","maxHeight","Infinity","maxWidth","minHeight","minWidth","mouseEvents","resizeFrom","scrolling","sizeHeight","sizeWidth","warningTimeout","tolerance","widthCalculationMethod","onClose","onClosed","onInit","onMessage","warn","onMouseEnter","onMouseLeave","onResized","onScroll","frameTimer","iFrameResize","each","setupIFrame","end","info","getMutationObserver","MozMutationObserver","func","formatLogHeader","iframeId","retStr","parentIFrame","getId","getMyID","isLogEnabled","msg","output","enabled","iFrameListener","resizeIFrame","ensureInRange","syncResize","setSize","messageData","setPagePosition","getPaddingEnds","compStyle","boxSizing","paddingTop","parseInt","paddingBottom","getBorderEnds","borderTopWidth","borderBottomWidth","Dimension","Number","dimension","toLowerCase","size","getMsgBody","offset","substr","sendPageInfoToIframe","time","frameId","bodyPosition","iFramePosition","getBoundingClientRect","JSON","stringify","iframeHeight","height","iframeWidth","width","clientHeight","innerHeight","clientWidth","innerWidth","offsetTop","offsetLeft","left","scrollLeft","pageXOffset","documentHeight","documentWidth","windowHeight","windowWidth","getElementPosition","getPagePosition","y","scrollRequestFromChild","addOffset","newPosition","scrollTo","unsetPagePosition","onMouse","mousePos","screenX","screenY","funcName","chkEvent","retBool","retCode","createOutgoingMsg","iFrameReadyMsgReceived","getComputedStyle","loaded","true","false","hasSettings","remoteHost","origin","checkList","isMessageFromIFrame","firstRun","closeIFrame","msgBody","message","parse","setListener","sendPageInfo","stop","stopPageInfo","startPageInfoMonitor","hash","hashData","decodeURIComponent","getElementById","getElementsByName","jumpPosition","moveToAnchor","resetIFrame","actionMsg","retVal","removeIframeListeners","chkZero","checkIFrames","checkIFrame","settingId","chkDimension","isVisible","offsetParent","mutationObserved","mutations","debouce","createMutationObserver","config","attributes","attributeOldValue","characterDataOldValue","childList","subtree","fixHiddenIFrames","processDimension","setDimension","doNotSync","jasmine","calleeMsg","noResponseWarning","errorShown","targetOrigin","msgTimeout","depricate","splitName","toUpperCase","ensureHasId","checkOptions","option","copyOptions","processOptions","overflow","setScrolling","addStyle","styleValue","chkMinMax","setLimits","mutation","removedNodes","removedNode","createDestroyObserver","resetRequertMethod","init","iFrameResizer","removeListeners","resize","anchor","sendMessage","tabVisible","visibilityState","sendTriggerMsg","eventName","isIFrameResizeEnabled","setupEventListeners","tagName","chkType","iFrames","vendors","setupRequestAnimationFrame","warnDeprecatedOptions","getRawTag","objectToString","symToStringTag","toStringTag","trimmedEndIndex","reTrimStart","freeGlobal","g","objectProto","nativeObjectToString","isOwn","unmasked","freeSelf","root","reWhitespace","toNumber","nativeMax","nativeMin","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","thisArg","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","clearTimeout","cancel","baseGetTag","isObjectLike","baseTrim","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","other","isBinary","svgNS","locationHref","initialDefaultFrame","_useWebWorker","subframeEnabled","idPrefix","expressionsPlugin","isSafari","cachedColors","bmRnd","bmPow","pow","bmSqrt","sqrt","bmFloor","bmMax","bmMin","BMMath","ProjectInterface","propertyNames","abs","absArr","createSizedArray","defaultCurveSegments","degToRads","PI","roundCorner","roundValues","flag","round","styleDiv","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","currentTime","totalTime","frameMultiplier","direction","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","_count","HSVtoRGB","h","q","t","RGBtoHSV","addSaturationToRGB","color","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","hex","colorMap","BaseEvent","triggerEvent","_cbs","callbacks","splice","createTypedArray","createRegularArray","Uint8ClampedArray","Float32Array","Int16Array","createNS","createElementNS","createTag","DynamicPropertyContainer","addDynamicProperty","dynamicProperties","_isAnimated","iterateDynamicProperties","_mdf","getValue","initDynamicPropertyContainer","getBlendMode","blendModeEnums","lineCapEnum","lineJoinEnum","Matrix","_cos","cos","_sin","sin","_tan","tan","_rnd","reset","rotate","angle","mCos","mSin","rotateX","rotateY","rotateZ","shear","sx","sy","skew","ax","ay","skewFromAxis","scale","sz","setTransform","m","translate","tx","ty","tz","transform","a2","b2","c2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","o2","p2","_p","_identityCalculated","a1","b1","c1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","p1","isIdentity","_identity","equals","matr","clone","cloneFromProps","applyToPoint","z","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","pt","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","pt1","pt2","pt3","p0","p4","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","pool","math","nodecrypto","rngname","startdenom","significance","mask","ARC4","keylen","me","copy","flatten","depth","typ","mixkey","seed","smear","stringseed","tostring","fromCharCode","shortseed","entropy","randomBytes","Uint8Array","crypto","msCrypto","getRandomValues","browser","plugins","screen","autoseed","arc4","prng","int32","quick","double","pass","is_math_call","state","BezierFactory","ob","nm","str","beziers","bezEasing","BezierEasing","kSplineTableSize","kSampleStepSize","float32ArraySupported","aA1","aA2","calcBezier","aT","getSlope","points","_mSampleValues","_precomputed","mX1","mY1","mX2","mY2","_precompute","_getTForX","_calcSampleValues","aX","mSampleValues","intervalStart","currentSample","lastSample","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","extendPrototype","sources","destination","sourcePrototype","attr","getDescriptor","createProxyFunction","ProxyFunction","bezFunction","pointOnLine2D","x1","y1","x2","y2","x3","y3","det1","getBezierLength","pt4","ptCoord","perc","ptDistance","curveSegments","addedLength","lastPoint","lengthData","bezierLengthPool","newElement","percents","lengths","BezierData","segmentLength","PointData","partial","partialLength","storedData","buildBezierData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","dir","bezierSegmentPoints","getSegmentsLength","shapeData","segmentsLength","segmentsLengthPool","closed","pathV","pathO","pathI","_length","totalLength","getNewSegment","startPerc","endPerc","t0","t1","u0","u1","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","getPointInSegment","percent","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","lastTime","cancelAnimationFrame","currTime","getTime","timeToCall","bez","dataManager","workerFn","workerInstance","_counterId","processes","workerProxy","path","_workerSelf","setupWorker","Worker","Blob","blob","url","URL","createObjectURL","createWorker","completeLayers","layers","comps","layerData","jLen","kLen","completed","tt","td","hasMask","maskProps","masksProperties","convertPathsToAbsoluteValues","findCompLayers","refId","completeShapes","shapes","completeText","__used","ks","checkVersion","minimum","animVersionString","animVersion","minimumVersion","checkText","iterateLayers","textLayer","documentData","animationData","assets","checkChars","chars","pathData","paths","__converted","checkPathProperties","checkColors","iterateShapes","checkShapes","completeClosingShapes","cl","singleShape","moduleOb","__complete","dataFunctionManager","assetLoader","formatResponse","xhr","contentTypeHeader","getResponseHeader","responseType","response","responseText","load","fullPath","errorCallback","XMLHttpRequest","onreadystatechange","readyState","status","send","completeData","payload","animation","onComplete","onError","createProcess","loadAnimation","processId","location","pathname","loadData","completeAnimation","anim","getFontProperties","fontData","styles","fStyle","fWeight","weight","FontManager","emptyChar","combinedCharacters","surrogateModifiers","zeroWidthJoiner","setUpNode","font","family","fontFamily","innerText","fontVariant","fontStyle","fontWeight","letterSpacing","offsetWidth","familyArray","enabledFamilies","trimFontOptions","createHelper","tHelper","fontProps","fFamily","textContent","fClass","getContext","Font","fonts","typekitLoaded","isLoaded","_warned","initTime","setIsLoadedBinded","setIsLoaded","checkLoadedFontsBinded","checkLoadedFonts","isModifier","firstCharCode","secondCharCode","sum","isZeroWidthJoiner","isCombinedCharacter","char","fontPrototype","addChars","found","ch","addFonts","defs","list","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","monoCase","sansCase","fPath","fOrigin","href","rel","sc","helper","cache","getCharData","getFontByName","fName","measureText","fontName","doubleSize","getComputedTextLength","singleSize","loadedCount","PropertyFactory","initFrame","mathAbs","interpolateValue","frameNum","caching","newValue","offsetTime","propType","pv","keyData","nextKeyData","keyframeMetadata","fnc","iterationIndex","lastIndex","keyframes","keyframesMetadata","endValue","quat","qx","qy","qz","qw","heading","attitude","bank","nextKeyTime","keyTime","to","ti","ind","__fnct","getBezierEasing","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quatStart","createQuaternion","quatEnd","omega","cosom","sinom","scale0","scale1","az","aw","bx","by","bz","bw","acos","slerp","atan2","asin","c3","s1","s2","s3","getValueAtCurrentTime","comp","renderedFrame","endTime","_caching","renderResult","setVValue","multipliedValue","mult","processEffectsSequence","elem","globalData","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","ValueProperty","vel","MultiDimensionalProperty","KeyframedValueProperty","st","KeyframedMultidimensionalProperty","arrLen","getProp","TransformPropertyFactory","defaultVector","TransformProperty","pre","appliedTransformations","py","pz","rx","ry","rz","or","sk","sa","_isDirty","applyToMatrix","mat","forceRender","precalculateMatrix","frameRate","autoOriented","v1","v2","getValueAtTime","autoOrient","_addDynamicProperty","getTransformProperty","ShapePath","_maxLength","setPathData","setLength","pointPool","doubleArrayLength","setXYAt","setTripleAt","vX","vY","oX","oY","iX","iY","reverse","newPath","vertices","outPoints","inPoints","cnt","ShapePropertyFactory","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","localShapeCollection","shape1","shape2","shapesEqual","shapePool","releaseShapes","addShape","ShapeProperty","shapeCollectionPool","newShapeCollection","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","s0","_cw","StarShapeProperty","StarShapePropertyFactory","ir","convertToPath","convertStarToPath","convertPolygonToPath","os","rad","roundness","perimSegment","numPts","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","ShapeModifiers","modifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","RoundCornersModifier","PuckerAndBloatModifier","RepeaterModifier","ShapeCollection","DashProperty","renderer","dataProps","dashStr","dashArray","dashoffset","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","initModifierProperties","addShapeToModifier","shape","setAsAnimated","processKeys","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segments","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","release","processShapes","shapePaths","totalShapeLength","edges","newShapesData","addShapes","lastShape","pop","addPaths","newPaths","addSegment","shapePath","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","segment","rd","processPath","clonedPath","currentV","currentI","currentO","closerV","distance","newPosPerc","amount","centerPoint","pathLength","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","matrix","applyTransforms","inv","scaleX","scaleY","elemsData","_currentCopies","_elements","_groups","unshift","resetElements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","items","itemsTransform","cont","hasReloaded","copies","group","ix","reloadShapes","elems","transformData","op","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","comparePoints","buildShapeString","pathNodes","_o","shapeString","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","audio","pause","resume","setRate","rateValue","createAudio","assetPath","Howl","isPlaying","play","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","ImagePreloader","proxyImage","canvas","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","assetsPath","originalPath","imagePath","u","testImageLoaded","img","intervalId","setInterval","getBBox","_imageLoaded","clearInterval","createFootageData","footageData","_footageLoaded","ImagePreloaderFactory","images","loadAssets","_createImageData","setAssetsPath","setPath","loadedImages","loadedFootages","getAsset","createImgData","crossOrigin","createImageData","setAttributeNS","_elementHelper","append","setCacheType","elementHelper","featureSupport","maskType","filtersFactory","filId","skipCoordinates","fil","feColorMatrix","TextAnimatorProperty","textData","renderType","_hasMaskedPath","_frameId","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","TextAnimatorDataProperty","animatorProps","defaultData","textAnimatorAnimatables","sw","fc","fh","fs","fb","TextSelectorProp","getTextSelectorProp","LetterProps","TextProperty","keysIndex","canResize","minimumFontSize","currentData","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","searchProperties","maskManager","getMaskProperty","getMeasures","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","prevPoint","tanAngle","animators","matrixHelper","mHelper","renderedLettersCount","letters","tLength","pi","letterValue","yOff","firstLine","offf","xPathPos","yPathPos","elemOpacity","letterSw","letterSc","letterFc","letterO","initPathPos","initSegmentInd","initPointInd","currentLine","letterM","letterP","defaultPropsArray","animatorJustifyOffset","animatorFirstCharOffset","justifyOffsetMult","isNewLine","getMult","anIndexes","totalChars","line","extra","an","animatorOffset","rot","atan","update","updated","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","charCode","charactersArray","shouldCombine","newLineFlag","charData","fontManager","anchorGrouping","currentSize","currentPos","lineWidth","maxLineWidth","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","animatorData","letterData","based","indexes","rn","newInd","currentInd","updateDocumentData","newData","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorPropFactory","_currentTextLength","finalS","finalE","xe","ne","sm","textProperty","easer","tot","smoothness","threshold","newCharsFlag","divisor","poolFactory","initialLength","_create","_release","pooling","cloned","shapeCollection","markerParser","parsePayloadLines","lines","keysCount","trim","_markers","markers","_marker","markerData","tm","duration","dr","cm","__","BaseRenderer","SVGRenderer","animationItem","svgElement","ariaLabel","title","titleElement","titleId","description","descElement","descId","maskElement","layerElement","renderConfig","preserveAspectRatio","imagePreserveAspectRatio","contentVisibility","progressiveLoad","hideOnTransparent","viewBoxOnly","viewBoxSize","className","focusable","filterSize","pendingElements","destroyed","rendererType","CanvasRenderer","clearCanvas","dpr","devicePixelRatio","currentGlobalAlpha","contextData","CVContextData","transformMat","HybridRenderer","threeDElements","camera","supports3d","MaskElement","viewData","solidPath","rect","expansor","feMorph","properties","currentMasks","layerId","maskRef","getShapeProp","lastPath","filterID","expan","lastOperator","filterId","lastRadius","createLayerSolidPath","invRect","drawPath","maskedElement","addRenderableComponent","HierarchyElement","FrameElement","TransformElement","RenderableElement","RenderableDOMElement","ProcessedElement","SVGStyleData","level","lvl","hd","pElem","msElem","SVGShapeData","transformers","caches","lStr","SVGTransformData","SVGStrokeStyleData","styleOb","SVGFillStyleData","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","checkLayers","num","ip","buildItem","checkPendingElements","createItem","layer","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","createFootage","AudioElement","FootageElement","buildAllItems","includeLayers","newLayers","setProjectInterface","pInterface","projectInterface","initItems","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","searchExtraCompositions","xt","initExpressions","registerComposition","setupGlobalData","animData","fontsContainer","getAssetData","imageLoader","imagePreloader","audioController","fr","compSize","NullElement","SVGShapeElement","SVGTextLottieElement","IImageElement","SVGCompElement","ISolidElement","configAnimation","maskId","updateContainerSize","appendElementInPos","setMatte","checkParenting","renderFrame","currentFrame","prepareFrame","getBaseElement","nextElement","insertBefore","show","CVShapeElement","CVTextElement","CVImageElement","CVCompElement","CVSolidElement","ctxTransform","cProps","cTr","trProps","canvasContext","ctxOpacity","globalAlpha","cO","restore","save","actionFlag","cArrPos","duplicate","saved","savedOp","blendMode","popped","containerStyle","mozTransformOrigin","transformCanvas","isDashed","elementWidth","elementHeight","elementRel","animationRel","offsetHeight","par","fillType","beginPath","closePath","clip","clearRect","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","getThreeDContainerByPos","HShapeElement","HTextElement","HCameraElement","HImageElement","HCompElement","HSolidElement","startPos","endPos","perspectiveElem","createThreeDContainer","center","webkitTransform","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","svg","setup","cWidth","cHeight","webkitPerspective","perspective","floatingContainer","isFirstFrame","finalMat","finalTransform","mProp","getMaskelement","pathString","pathShapeValue","initHierarchy","_isParent","prepareProperties","initTransform","_matMdf","_opMdf","ao","renderTransform","globalToLocal","transforms","ptNew","initRenderable","isInRange","hidden","isTransparent","renderableComponents","component","removeRenderableComponent","prepareRenderableFrame","checkLayerLimits","checkTransparency","renderRenderable","sourceRectAtTime","getLayerSize","initElement","initBaseData","initRendererElement","createContainerElements","createRenderableComponents","createContent","baseElement","renderElement","renderInnerContent","innerElem","destroyBaseElement","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","gf","cst","opacityId","opFill","lc","lj","ml","ms","ost","SVGElementsRenderer","_identityMatrix","_matrixHelper","renderContentTransform","styleData","itemData","renderPath","pathStringTransformed","redraw","iterations","lLen","renderFill","styleElem","renderGradientStroke","renderGradient","renderStroke","hasOpacity","attr1","attr2","cValues","oValues","ang","dist","createRenderFunction","ShapeTransformManager","sequences","sequenceList","transform_key_count","CVShapeData","transformsManager","styledShapes","styledShape","addTransformSequence","trNodes","BaseElement","SVGBaseElement","IShapeElement","ITextElement","ICompElement","sourceRect","_isPlaying","_canPlay","_currentTime","_placeholder","textSpans","shapesData","stylesList","shapeModifiers","itemsData","processedElements","animatedContents","SVGTintFilter","filterManager","matrixFilter","effectElements","feMergeNode","feMerge","SVGFillFilter","SVGGaussianBlurEffect","feGaussianBlur","SVGStrokeEffect","initialized","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","feOffset","feFlood","feComposite","originalNodeAdded","sequence","processSequence","processSequences","getNewKey","checkMasks","layerInterface","LayerExpressionInterface","registerMaskInterface","effectsInterface","EffectsExpressionInterface","createEffectsInterface","registerEffectsInterface","compInterface","CompExpressionInterface","shapeInterface","ShapeExpressionInterface","content","textInterface","TextExpressionInterface","setBlendMode","blendModeValue","bm","sr","effectsManager","EffectsManager","getType","matteElement","transformedElement","_sizeChanged","gg","layerElementParent","masker","createFilter","createAlphaToLuminanceFilter","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","ln","cp","clipId","cpGroup","renderableEffectsManager","SVGEffects","addShapeToModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","searchProcessedElement","addProcessedElement","textAnimator","buildNewText","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","lineNumber","buildColor","colorData","emptyProp","timeRemapped","setElements","getElements","destroyElements","pr","volumeValue","FootageInterface","getFootageData","textContainer","buildTextContents","textArray","textContents","currentTextContent","tSpan","usesGlyphs","cachedSpansLength","tElement","justify","textBox","bbox","renderedLetter","textSpan","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","setElementStyles","render","currentTransform","modifier","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","colorBlack","colorWhite","opacity","sigma","dimensions","sigmaX","sigmaY","edgeMode","initialize","groupPath","elemChildren","children","childNodes","pathMasker","dasharrayValue","getTotalLength","lineLength","units","color1","color2","color3","tableR","tableG","tableB","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","table","outputDelta","inputDelta","col","_svgMatteSymbols","SVGMatte3Effect","filterElem","ef","filters","CVBaseElement","CVMaskElement","hasMasks","stroke","fill","currentRender","sWidth","fValue","CVEffects","HBaseElement","shapesContainer","currentBBox","textPaths","isMasked","pe","_prevMat","HEffects","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","symbol","newLength","currentSavedOp","createElements","globalCompositeOperation","hideElement","showElement","forceRealStack","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","drawImage","moveTo","lineTo","bezierCurveTo","transformHelper","dashResetter","preTransforms","co","wi","da","do","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","nodes","currentStyle","coOp","strokeStyle","grd","lineCap","lineJoin","miterLimit","setLineDash","lineDashOffset","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","hasFill","hasStroke","commands","pathArr","lastFill","lastStroke","lastStrokeW","checkBlendMode","tg","transformedElementStyle","matrixValue","addEffects","backgroundColor","_createBaseContainerElements","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","item","boundingBox","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","bounds","shapeBoundingBox","xMax","right","yMax","bottom","tempBoundingBox","p3","b2ac","t2","calculateF","calculateBoundingBox","currentBoxContains","box","changed","shapeStyle","shapeTransform","compW","compH","innerElemStyle","textColor","strokeWidth","lineHeight","tParent","tCont","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","svgTransform","Image","imageElem","perspectiveStyle","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","animationManager","registeredAnimations","playingAnimationsNum","_stopped","_isFrozen","removeElement","ev","animItem","isPaused","subtractPlayingCount","registerAnimation","AnimationItem","setupAnimation","setData","addPlayingCount","activate","nowTime","elapsedTime","advanceTime","first","setParams","setSpeed","setDirection","togglePause","searchAnimations","animElements","getElementsByClassName","lenAnims","getElementsByTagName","div","goToAndStop","isFrame","freeze","unfreeze","getRegisteredAnimations","animations","currentRawFrame","frameMult","playSpeed","playDirection","playCount","autoplay","loop","animationID","timeCompleted","segmentPos","isSubframeEnabled","_idle","_completedLoop","onSetupError","onSegmentComplete","animType","rendererSettings","autoloadSegments","initialSegment","lastIndexOf","fileName","wrapperAttributes","getNamedItem","prerender","loadNextSegment","shift","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","updaFrameModifier","waitForFontsLoaded","triggerConfigError","gotoFrame","setSubframe","triggerRenderFrameError","setCurrentRawFrameValue","getMarkerData","markerName","marker","numValue","frameModifier","goToAndPlay","playSegments","nextValue","_isComplete","checkSegments","adjustSegment","setSegment","pendingFrame","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onSegmentStart","onDestroy","getPath","getDuration","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","ExpressionManager","fetch","frames","$bm_isInstanceOfArray","isNumerable","tOfV","$bm_neg","tOfA","lenA","retArr","easeInBez","easeOutBez","easeInOutBez","tOfB","lenB","sub","mul","mod","$bm_sum","$bm_sub","$bm_mul","$bm_div","$bm_mod","clamp","mm","radiansToDegrees","radians_to_degrees","degreesToRadians","degrees_to_radians","helperLengthArray","arr1","arr2","normalize","vec","rgbToHsl","hue2rgb","hslToRgb","linear","tMin","tMax","value1","value2","_tMin","rnd","createPath","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","initiateExpression","property","needsVelocity","_needsRandom","elemType","$bm_transform","effect","thisProperty","valueAtTime","frameDuration","displayStartTime","inPoint","outPoint","loopIn","loop_in","loopOut","loop_out","smooth","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","rotation","anchorPoint","thisLayer","thisComp","velocityAtTime","scoped_bm_rt","expression_function","eval","numKeys","active","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","loopInDuration","loopOutDuration","getVelocityAtTime","velocity","textIndex","textTotal","selectorValue","lookAt","elem1","elem2","fVec","pitch","easeOut","val1","val2","applyEase","easeIn","ease","iKey","lenKey","nearestKey","obKey","framesToTime","fps","timeToFrames","seedRandom","seedrandom","randSeed","substring","posterizeTime","framesPerSecond","hasParent","executeExpression","_value","frameExpressionId","expressionHelpers","searchExpressions","getSpeedAtTime","speed","delta","_cachingAtTime","getStaticValueAtTime","setGroupProperty","propertyGroup","durationFlag","cycleDuration","firstKeyFrame","lastKeyFrame","initV","endV","current","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","skewAxis","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","propertyIndex","ShapePropertyConstructorFunction","getConstructorFunction","KeyframedShapePropertyConstructorFunction","getKeyframedConstructorFunction","ShapeExpressions","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","tangentOnPath","normalOnPath","shapeValue","propertyGetShapeProp","trims","getExpressionValue","calculateExpression","isKeyframed","hasExpressions","ShapePathInterface","view","interfaceFunction","_propertyGroup","propertyGroupFactory","PropertyInterface","_name","mn","parentPropertyGroup","propertyName","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","interfaces","numProperties","transformInterface","transformInterfaceFactory","cix","contentsInterfaceFactory","np","ExpressionPropertyInterface","startPoint","endPoint","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","start","outerRadius","outerRoundness","innerRoundness","innerRadius","radius","_interfaceFunction","_prevValue","_sourceText","_thisLayerFunction","sourceText","stringValue","getMatrix","toWorldMat","toWorldVec","applyPoint","fromWorldVec","invertPoint","sampleImage","anchorPointDescriptor","TransformExpressionInterface","anchor_point","startTime","MaskManagerInterface","effects","dataInterfaceFactory","outlineInterface","currentPropertyName","currentProperty","propertyNameIndex","outlineInterfaceFactory","dataInterface","pixelAspect","numLayers","_thisFunction","xRotation","yRotation","xPosition","zPosition","_px","_py","_pz","_transformFactory","compositions","_thisProjectFunction","createGroupInterface","groupInterface","createValueInterface","en","expressionProperty","effectsData","MaskInterface","_mask","_data","_masksInterfaces","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","valueProp","speedAtTime","defaultGetter","UnidimensionalPropertyInterface","arrValue","MultidimensionalPropertyInterface","TextExpressionSelectorPropFactory","getValueProxy","total","propertyGetTextProp","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","effectItem","GroupEffect","eff","lottie","setLocationHref","setSubframeRendering","setIDPrefix","prefix","setQuality","inBrowser","installPlugin","plugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","variable","vars","queryString","pair","useWebWorker","__getFactory","scripts","myScript","innerHTML","observer","disconnect","lastChild","EventListener","eventTarget","eventOptions","unorderedBindings","Set","connect","bindingConnected","binding","bindingDisconnected","delete","handleEvent","extendedEvent","stopImmediatePropagation_1","stopImmediatePropagation","immediatePropagationStopped","extendEvent","bindings","sort","leftIndex","rightIndex","Dispatcher","application","eventListenerMaps","Map","started","eventListeners","eventListener","reduce","listeners","fetchEventListenerForBinding","handleError","fetchEventListener","eventListenerMap","fetchEventListenerMapForEventTarget","cacheKey","createEventListener","parts","descriptorPattern","parseEventTarget","eventTargetName","Action","defaultEventNames","getDefaultEventNameForElement","methodName","forToken","token","descriptorString","eventNameSuffix","Binding","willBeInvokedByEvent","invokeWithEvent","method","controller","contains","scope","containsElement","ElementObserver","mutationObserver","processMutations","refresh","takeRecords","matchElementsInTree","_b","addElement","mutations_1","processMutation","processAttributeChange","attributeName","processRemovedNodes","processAddedNodes","addedNodes","elementAttributeChanged","matchElement","elementFromNode","processTree","elementIsActive","tree","processor","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","StringMapObserver","stringMap","knownAttributeNames","refreshAttribute","getStringMapKeyForAttribute","stringMapKeyAdded","stringMapValueChanged","stringMapKeyRemoved","currentAttributeNames","recordedAttributeNames","del","prune","extendStatics","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","__extends","TokenListObserver","IndexedMultimap","keysByValue","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","tokens","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","tokensAreEqual","tokenString","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","schema","connectAction","disconnectAction","ValueObserver","receiver","stringMapObserver","valueDescriptorMap","invokeChangedCallbacksForDefaultValues","attributeValue","invokeChangedCallbackForValue","valueDescriptors","name_1","defaultValue","Context","bindingObserver","dispatcher","valueObserver","parentElement","readInheritableStaticArrayValues","ancestors","getAncestorsForConstructor","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","__spreadArrays","il","jl","bless","shadowConstructor","extend","shadowProperties","getOwnKeys","shadowingDescriptor","getShadowedDescriptor","getShadowProperties","shadow","blessings","blessedProperties","blessing","getBlessedProperties","getOwnPropertyNames","extendWithReflect","extended","_newTarget","Module","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","ClassMap","getDataKey","getAttributeName","getAttributeNameForKey","camelize","capitalize","dasherize","DataMap","Guide","logger","warnedKeysByObject","warnedKeys","attributeValueContainsToken","TargetSet","targetName","targetNames","findTarget","findLegacyTarget","findAll","targets","findAllTargets","findAllLegacyTargets","getSelectorForTargetName","findElement","findAllElements","getLegacySelectorForTargetName","deprecate","targetDescriptor","targetAttribute","guide","Scope","classes","controllerSelector","queryElements","controllerAttribute","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","createScopeForElementAndIdentifier","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","modules","contexts","loadDefinition","unloadIdentifier","connectModule","disconnectModule","getContextForElementAndIdentifier","defaultSchema","__awaiter","_arguments","generator","fulfilled","rejected","__generator","label","sent","trys","ops","verb","Application","router","register","rest","unload","getControllerForElementAndIdentifier","ClassPropertiesBlessing","classDefinition","TargetPropertiesBlessing","targetDefinition","ValuePropertiesBlessing","valueDefinitionPairs","propertyDescriptorMap","valueDefinitionPair","valueDescriptor","parseValueDefinitionPair","read","readers","writers","propertiesForValueDefinitionPair","typeConstant","parseValueTypeConstant","defaultValuesByType","valueDescriptorForTokenAndType","array","boolean","number","parseFloat","writeJSON","Controller"],"sourceRoot":""}