{ "version": 3, "sources": ["../node_modules/@lottiefiles/lottie-player/node_modules/tslib/tslib.es6.js", "../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/css-tag.js", "../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/reactive-element.js", "../node_modules/@lottiefiles/lottie-player/node_modules/lit-html/lit-html.js", "../node_modules/@lottiefiles/lottie-player/node_modules/lit-element/lit-element.js", "../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/decorators/custom-element.js", "../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/decorators/property.js", "../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/decorators/state.js", "../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/decorators/base.js", "../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/decorators/event-options.js", "../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/decorators/query.js", "../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/decorators/query-all.js", "../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/decorators/query-async.js", "../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/decorators/query-assigned-elements.js", "../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/decorators/query-assigned-nodes.js", "../node_modules/@lottiefiles/lottie-player/node_modules/lottie-web/build/player/lottie.js", "../node_modules/@lottiefiles/lottie-player/src/lottie-player.styles.ts", "../node_modules/@lottiefiles/lottie-player/src/versions.ts", "../node_modules/@lottiefiles/lottie-player/src/lottie-player.ts", "../node_modules/@lottiefiles/lottie-interactivity/src/lottie-interactivity.js", "../node_modules/css-has-pseudo/src/browser.js", "../modules/superiorenergy.com/superiorenergy/site-header/index.js", "../modules/superiorenergy.com/superiorenergy/video-header/default/index.js", "../modules/superiorenergy.com/superiorenergy/video-header-interactive/default/index.js", "../modules/superiorenergy.com/superiorenergy/tabs/default/index.js", "../modules/superiorenergy.com/core/lottie/index.js", "superiorenergy.com/modals.js", "superiorenergy.com/index.js"], "sourcesContent": ["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n", "/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=window.ShadowRoot&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,e=Symbol(),n=new Map;class s{constructor(t,n){if(this._$cssResult$=!0,n!==e)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t}get styleSheet(){let e=n.get(this.cssText);return t&&void 0===e&&(n.set(this.cssText,e=new CSSStyleSheet),e.replaceSync(this.cssText)),e}toString(){return this.cssText}}const o=t=>new s(\"string\"==typeof t?t:t+\"\",e),r=(t,...n)=>{const o=1===t.length?t[0]:n.reduce(((e,n,s)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(n)+t[s+1]),t[0]);return new s(o,e)},i=(e,n)=>{t?e.adoptedStyleSheets=n.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):n.forEach((t=>{const n=document.createElement(\"style\"),s=window.litNonce;void 0!==s&&n.setAttribute(\"nonce\",s),n.textContent=t.cssText,e.appendChild(n)}))},S=t?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const n of t.cssRules)e+=n.cssText;return o(e)})(t):t;export{s as CSSResult,i as adoptStyles,r as css,S as getCompatibleStyle,t as supportsAdoptingStyleSheets,o as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n", "import{getCompatibleStyle as t,adoptStyles as i}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var s;const e=window.trustedTypes,r=e?e.emptyScript:\"\",h=window.reactiveElementPolyfillSupport,o={toAttribute(t,i){switch(i){case Boolean:t=t?r:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,i){let s=t;switch(i){case Boolean:s=null!==t;break;case Number:s=null===t?null:Number(t);break;case Object:case Array:try{s=JSON.parse(t)}catch(t){s=null}}return s}},n=(t,i)=>i!==t&&(i==i||t==t),l={attribute:!0,type:String,converter:o,reflect:!1,hasChanged:n};class a extends HTMLElement{constructor(){super(),this._$Et=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Ei=null,this.o()}static addInitializer(t){var i;null!==(i=this.l)&&void 0!==i||(this.l=[]),this.l.push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((i,s)=>{const e=this._$Eh(s,i);void 0!==e&&(this._$Eu.set(e,s),t.push(e))})),t}static createProperty(t,i=l){if(i.state&&(i.attribute=!1),this.finalize(),this.elementProperties.set(t,i),!i.noAccessor&&!this.prototype.hasOwnProperty(t)){const s=\"symbol\"==typeof t?Symbol():\"__\"+t,e=this.getPropertyDescriptor(t,s,i);void 0!==e&&Object.defineProperty(this.prototype,t,e)}}static getPropertyDescriptor(t,i,s){return{get(){return this[i]},set(e){const r=this[t];this[i]=e,this.requestUpdate(t,r,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||l}static finalize(){if(this.hasOwnProperty(\"finalized\"))return!1;this.finalized=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),this.elementProperties=new Map(t.elementProperties),this._$Eu=new Map,this.hasOwnProperty(\"properties\")){const t=this.properties,i=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const s of i)this.createProperty(s,t[s])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(i){const s=[];if(Array.isArray(i)){const e=new Set(i.flat(1/0).reverse());for(const i of e)s.unshift(t(i))}else void 0!==i&&s.push(t(i));return s}static _$Eh(t,i){const s=i.attribute;return!1===s?void 0:\"string\"==typeof s?s:\"string\"==typeof t?t.toLowerCase():void 0}o(){var t;this._$Ep=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Em(),this.requestUpdate(),null===(t=this.constructor.l)||void 0===t||t.forEach((t=>t(this)))}addController(t){var i,s;(null!==(i=this._$Eg)&&void 0!==i?i:this._$Eg=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(s=t.hostConnected)||void 0===s||s.call(t))}removeController(t){var i;null===(i=this._$Eg)||void 0===i||i.splice(this._$Eg.indexOf(t)>>>0,1)}_$Em(){this.constructor.elementProperties.forEach(((t,i)=>{this.hasOwnProperty(i)&&(this._$Et.set(i,this[i]),delete this[i])}))}createRenderRoot(){var t;const s=null!==(t=this.shadowRoot)&&void 0!==t?t:this.attachShadow(this.constructor.shadowRootOptions);return i(s,this.constructor.elementStyles),s}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostConnected)||void 0===i?void 0:i.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostDisconnected)||void 0===i?void 0:i.call(t)}))}attributeChangedCallback(t,i,s){this._$AK(t,s)}_$ES(t,i,s=l){var e,r;const h=this.constructor._$Eh(t,s);if(void 0!==h&&!0===s.reflect){const n=(null!==(r=null===(e=s.converter)||void 0===e?void 0:e.toAttribute)&&void 0!==r?r:o.toAttribute)(i,s.type);this._$Ei=t,null==n?this.removeAttribute(h):this.setAttribute(h,n),this._$Ei=null}}_$AK(t,i){var s,e,r;const h=this.constructor,n=h._$Eu.get(t);if(void 0!==n&&this._$Ei!==n){const t=h.getPropertyOptions(n),l=t.converter,a=null!==(r=null!==(e=null===(s=l)||void 0===s?void 0:s.fromAttribute)&&void 0!==e?e:\"function\"==typeof l?l:null)&&void 0!==r?r:o.fromAttribute;this._$Ei=n,this[n]=a(i,t.type),this._$Ei=null}}requestUpdate(t,i,s){let e=!0;void 0!==t&&(((s=s||this.constructor.getPropertyOptions(t)).hasChanged||n)(this[t],i)?(this._$AL.has(t)||this._$AL.set(t,i),!0===s.reflect&&this._$Ei!==t&&(void 0===this._$E_&&(this._$E_=new Map),this._$E_.set(t,s))):e=!1),!this.isUpdatePending&&e&&(this._$Ep=this._$EC())}async _$EC(){this.isUpdatePending=!0;try{await this._$Ep}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Et&&(this._$Et.forEach(((t,i)=>this[i]=t)),this._$Et=void 0);let i=!1;const s=this._$AL;try{i=this.shouldUpdate(s),i?(this.willUpdate(s),null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostUpdate)||void 0===i?void 0:i.call(t)})),this.update(s)):this._$EU()}catch(t){throw i=!1,this._$EU(),t}i&&this._$AE(s)}willUpdate(t){}_$AE(t){var i;null===(i=this._$Eg)||void 0===i||i.forEach((t=>{var i;return null===(i=t.hostUpdated)||void 0===i?void 0:i.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$Ep}shouldUpdate(t){return!0}update(t){void 0!==this._$E_&&(this._$E_.forEach(((t,i)=>this._$ES(i,this[i],t))),this._$E_=void 0),this._$EU()}updated(t){}firstUpdated(t){}}a.finalized=!0,a.elementProperties=new Map,a.elementStyles=[],a.shadowRootOptions={mode:\"open\"},null==h||h({ReactiveElement:a}),(null!==(s=globalThis.reactiveElementVersions)&&void 0!==s?s:globalThis.reactiveElementVersions=[]).push(\"1.2.1\");export{a as ReactiveElement,o as defaultConverter,n as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nvar t;const i=globalThis.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=`lit$${(Math.random()+\"\").slice(9)}$`,o=\"?\"+e,n=`<${o}>`,l=document,h=(t=\"\")=>l.createComment(t),r=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,d=Array.isArray,u=t=>{var i;return d(t)||\"function\"==typeof(null===(i=t)||void 0===i?void 0:i[Symbol.iterator])},c=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,a=/>/g,f=/>|[ \t\\n\f\\r](?:([^\\s\"'>=/]+)([ \t\\n\f\\r]*=[ \t\\n\f\\r]*(?:[^ \t\\n\f\\r\"'`<>=]|(\"|')|))|$)/g,_=/'/g,m=/\"/g,g=/^(?:script|style|textarea)$/i,p=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),$=p(1),y=p(2),b=Symbol.for(\"lit-noChange\"),w=Symbol.for(\"lit-nothing\"),T=new WeakMap,x=(t,i,s)=>{var e,o;const n=null!==(e=null==s?void 0:s.renderBefore)&&void 0!==e?e:i;let l=n._$litPart$;if(void 0===l){const t=null!==(o=null==s?void 0:s.renderBefore)&&void 0!==o?o:null;n._$litPart$=l=new N(i.insertBefore(h(),t),t,void 0,null!=s?s:{})}return l._$AI(t),l},A=l.createTreeWalker(l,129,null,!1),C=(t,i)=>{const o=t.length-1,l=[];let h,r=2===i?\"\":\"\",d=c;for(let i=0;i\"===u[0]?(d=null!=h?h:c,p=-1):void 0===u[1]?p=-2:(p=d.lastIndex-u[2].length,o=u[1],d=void 0===u[3]?f:'\"'===u[3]?m:_):d===m||d===_?d=f:d===v||d===a?d=c:(d=f,h=void 0);const y=d===f&&t[i+1].startsWith(\"/>\")?\" \":\"\";r+=d===c?s+n:p>=0?(l.push(o),s.slice(0,p)+\"$lit$\"+s.slice(p)+e+y):s+e+(-2===p?(l.push(void 0),i):y)}const u=r+(t[o]||\"\")+(2===i?\"\":\"\");if(!Array.isArray(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return[void 0!==s?s.createHTML(u):u,l]};class E{constructor({strings:t,_$litType$:s},n){let l;this.parts=[];let r=0,d=0;const u=t.length-1,c=this.parts,[v,a]=C(t,s);if(this.el=E.createElement(v,n),A.currentNode=this.el.content,2===s){const t=this.el.content,i=t.firstChild;i.remove(),t.append(...i.childNodes)}for(;null!==(l=A.nextNode())&&c.length0){l.textContent=i?i.emptyScript:\"\";for(let i=0;i2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=w}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,i=this,s,e){const o=this.strings;let n=!1;if(void 0===o)t=P(this,t,i,0),n=!r(t)||t!==this._$AH&&t!==b,n&&(this._$AH=t);else{const e=t;let l,h;for(t=o[0],l=0;l{t._$AK(e,i)},_$AL:t=>t._$AL};(null!==(o=globalThis.litElementVersions)&&void 0!==o?o:globalThis.litElementVersions=[]).push(\"3.1.2\");export{s as LitElement,r as UpdatingElement,h as _$LE};\n//# sourceMappingURL=lit-element.js.map\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst n=n=>e=>\"function\"==typeof e?((n,e)=>(window.customElements.define(n,e),e))(n,e):((n,e)=>{const{kind:t,elements:i}=e;return{kind:t,elements:i,finisher(e){window.customElements.define(n,e)}}})(n,e);export{n as customElement};\n//# sourceMappingURL=custom-element.js.map\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst i=(i,e)=>\"method\"===e.kind&&e.descriptor&&!(\"value\"in e.descriptor)?{...e,finisher(n){n.createProperty(e.key,i)}}:{kind:\"field\",key:Symbol(),placement:\"own\",descriptor:{},originalKey:e.key,initializer(){\"function\"==typeof e.initializer&&(this[e.key]=e.initializer.call(this))},finisher(n){n.createProperty(e.key,i)}};function e(e){return(n,t)=>void 0!==t?((i,e,n)=>{e.constructor.createProperty(n,i)})(e,n,t):i(e,n)}export{e as property};\n//# sourceMappingURL=property.js.map\n", "import{property as r}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function t(t){return r({...t,state:!0})}export{t as state};\n//# sourceMappingURL=state.js.map\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,o)=>{Object.defineProperty(t,o,e)},t=(e,t)=>({kind:\"method\",placement:\"prototype\",key:t.key,descriptor:e}),o=({finisher:e,descriptor:t})=>(o,n)=>{var r;if(void 0===n){const n=null!==(r=o.originalKey)&&void 0!==r?r:o.key,i=null!=t?{kind:\"method\",placement:\"prototype\",key:n,descriptor:t(o.key)}:{...o,key:n};return null!=e&&(i.finisher=function(t){e(t,n)}),i}{const r=o.constructor;void 0!==t&&Object.defineProperty(o,n,t(n)),null==e||e(r,n)}};export{o as decorateProperty,e as legacyPrototypeMethod,t as standardPrototypeMethod};\n//# sourceMappingURL=base.js.map\n", "import{decorateProperty as r}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e){return r({finisher:(r,t)=>{Object.assign(r.prototype[t],e)}})}export{e as eventOptions};\n//# sourceMappingURL=event-options.js.map\n", "import{decorateProperty as o}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function i(i,n){return o({descriptor:o=>{const t={get(){var o,n;return null!==(n=null===(o=this.renderRoot)||void 0===o?void 0:o.querySelector(i))&&void 0!==n?n:null},enumerable:!0,configurable:!0};if(n){const n=\"symbol\"==typeof o?Symbol():\"__\"+o;t.get=function(){var o,t;return void 0===this[n]&&(this[n]=null!==(t=null===(o=this.renderRoot)||void 0===o?void 0:o.querySelector(i))&&void 0!==t?t:null),this[n]}}return t}})}export{i as query};\n//# sourceMappingURL=query.js.map\n", "import{decorateProperty as r}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e){return r({descriptor:r=>({get(){var r,o;return null!==(o=null===(r=this.renderRoot)||void 0===r?void 0:r.querySelectorAll(e))&&void 0!==o?o:[]},enumerable:!0,configurable:!0})})}export{e as queryAll};\n//# sourceMappingURL=query-all.js.map\n", "import{decorateProperty as r}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nfunction e(e){return r({descriptor:r=>({async get(){var r;return await this.updateComplete,null===(r=this.renderRoot)||void 0===r?void 0:r.querySelector(e)},enumerable:!0,configurable:!0})})}export{e as queryAsync};\n//# sourceMappingURL=query-async.js.map\n", "import{decorateProperty as o}from\"./base.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var n;const e=null!=(null===(n=window.HTMLSlotElement)||void 0===n?void 0:n.prototype.assignedElements)?(o,n)=>o.assignedElements(n):(o,n)=>o.assignedNodes(n).filter((o=>o.nodeType===Node.ELEMENT_NODE));function l(n){const{slot:l,selector:t}=null!=n?n:{};return o({descriptor:o=>({get(){var o;const r=\"slot\"+(l?`[name=${l}]`:\":not([name])\"),i=null===(o=this.renderRoot)||void 0===o?void 0:o.querySelector(r),s=null!=i?e(i,n):[];return t?s.filter((o=>o.matches(t))):s},enumerable:!0,configurable:!0})})}export{l as queryAssignedElements};\n//# sourceMappingURL=query-assigned-elements.js.map\n", "import{decorateProperty as e}from\"./base.js\";import{queryAssignedElements as t}from\"./query-assigned-elements.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function o(o,n,r){let l,s=o;return\"object\"==typeof o?(s=o.slot,l=o):l={flatten:n},r?t({slot:s,flatten:n,selector:r}):e({descriptor:e=>({get(){var e,t;const o=\"slot\"+(s?`[name=${s}]`:\":not([name])\"),n=null===(e=this.renderRoot)||void 0===e?void 0:e.querySelector(o);return null!==(t=null==n?void 0:n.assignedNodes(l))&&void 0!==t?t:[]},enumerable:!0,configurable:!0})})}export{o as queryAssignedNodes};\n//# sourceMappingURL=query-assigned-nodes.js.map\n", "(typeof navigator !== \"undefined\") && (function (global, factory) {\r\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\r\n typeof define === 'function' && define.amd ? define(factory) :\r\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\r\n})(this, (function () { 'use strict';\r\n\r\n var svgNS = 'http://www.w3.org/2000/svg';\r\n var locationHref = '';\r\n var _useWebWorker = false;\r\n var initialDefaultFrame = -999999;\r\n\r\n var setWebWorker = function setWebWorker(flag) {\r\n _useWebWorker = !!flag;\r\n };\r\n\r\n var getWebWorker = function getWebWorker() {\r\n return _useWebWorker;\r\n };\r\n\r\n var setLocationHref = function setLocationHref(value) {\r\n locationHref = value;\r\n };\r\n\r\n var getLocationHref = function getLocationHref() {\r\n return locationHref;\r\n };\r\n\r\n function createTag(type) {\r\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\r\n return document.createElement(type);\r\n }\r\n\r\n function extendPrototype(sources, destination) {\r\n var i;\r\n var len = sources.length;\r\n var sourcePrototype;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n sourcePrototype = sources[i].prototype;\r\n\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\n function getDescriptor(object, prop) {\r\n return Object.getOwnPropertyDescriptor(object, prop);\r\n }\r\n\r\n function createProxyFunction(prototype) {\r\n function ProxyFunction() {}\r\n\r\n ProxyFunction.prototype = prototype;\r\n return ProxyFunction;\r\n }\r\n\r\n // import Howl from '../../3rd_party/howler';\r\n var 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 addAudio(audio) {\r\n this.audios.push(audio);\r\n },\r\n pause: function pause() {\r\n var i;\r\n var len = this.audios.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].pause();\r\n }\r\n },\r\n resume: function resume() {\r\n var i;\r\n var len = this.audios.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].resume();\r\n }\r\n },\r\n setRate: function setRate(rateValue) {\r\n var i;\r\n var len = this.audios.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].setRate(rateValue);\r\n }\r\n },\r\n createAudio: function createAudio(assetPath) {\r\n if (this.audioFactory) {\r\n return this.audioFactory(assetPath);\r\n }\r\n\r\n if (window.Howl) {\r\n return new window.Howl({\r\n src: [assetPath]\r\n });\r\n }\r\n\r\n return {\r\n isPlaying: false,\r\n play: function play() {\r\n this.isPlaying = true;\r\n },\r\n seek: function seek() {\r\n this.isPlaying = false;\r\n },\r\n playing: function playing() {},\r\n rate: function rate() {},\r\n setVolume: function setVolume() {}\r\n };\r\n },\r\n setAudioFactory: function setAudioFactory(audioFactory) {\r\n this.audioFactory = audioFactory;\r\n },\r\n setVolume: function setVolume(value) {\r\n this._volume = value;\r\n\r\n this._updateVolume();\r\n },\r\n mute: function mute() {\r\n this._isMuted = true;\r\n\r\n this._updateVolume();\r\n },\r\n unmute: function unmute() {\r\n this._isMuted = false;\r\n\r\n this._updateVolume();\r\n },\r\n getVolume: function getVolume() {\r\n return this._volume;\r\n },\r\n _updateVolume: function _updateVolume() {\r\n var i;\r\n var len = this.audios.length;\r\n\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 return function () {\r\n return new AudioController();\r\n };\r\n }();\r\n\r\n var createTypedArray = function () {\r\n function createRegularArray(type, len) {\r\n var i = 0;\r\n var arr = [];\r\n var value;\r\n\r\n switch (type) {\r\n case 'int16':\r\n case 'uint8c':\r\n value = 1;\r\n break;\r\n\r\n default:\r\n value = 1.1;\r\n break;\r\n }\r\n\r\n for (i = 0; i < len; i += 1) {\r\n arr.push(value);\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n function createTypedArrayFactory(type, len) {\r\n if (type === 'float32') {\r\n return new Float32Array(len);\r\n }\r\n\r\n if (type === 'int16') {\r\n return new Int16Array(len);\r\n }\r\n\r\n if (type === 'uint8c') {\r\n return new Uint8ClampedArray(len);\r\n }\r\n\r\n return createRegularArray(type, len);\r\n }\r\n\r\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\r\n return createTypedArrayFactory;\r\n }\r\n\r\n return createRegularArray;\r\n }();\r\n\r\n function createSizedArray(len) {\r\n return Array.apply(null, {\r\n length: len\r\n });\r\n }\r\n\r\n function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\r\n var subframeEnabled = true;\r\n var expressionsPlugin = null;\r\n var expressionsInterfaces = null;\r\n var idPrefix$1 = '';\r\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\r\n var _shouldRoundValues = false;\r\n var bmPow = Math.pow;\r\n var bmSqrt = Math.sqrt;\r\n var bmFloor = Math.floor;\r\n var bmMax = Math.max;\r\n var bmMin = Math.min;\r\n var BMMath = {};\r\n\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\r\n for (i = 0; i < len; i += 1) {\r\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\r\n }\r\n })();\r\n\r\n function ProjectInterface$1() {\r\n return {};\r\n }\r\n\r\n BMMath.random = Math.random;\r\n\r\n BMMath.abs = function (val) {\r\n var tOfVal = _typeof$6(val);\r\n\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\r\n for (i = 0; i < len; i += 1) {\r\n absArr[i] = Math.abs(val[i]);\r\n }\r\n\r\n return absArr;\r\n }\r\n\r\n return Math.abs(val);\r\n };\r\n\r\n var defaultCurveSegments = 150;\r\n var degToRads = Math.PI / 180;\r\n var roundCorner = 0.5519;\r\n\r\n function roundValues(flag) {\r\n _shouldRoundValues = !!flag;\r\n }\r\n\r\n function bmRnd(value) {\r\n if (_shouldRoundValues) {\r\n return Math.round(value);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n function 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\n function 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\n function BMCompleteEvent(type, frameMultiplier) {\r\n this.type = type;\r\n this.direction = frameMultiplier < 0 ? -1 : 1;\r\n }\r\n\r\n function 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\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\r\n this.type = type;\r\n this.firstFrame = firstFrame;\r\n this.totalFrames = totalFrames;\r\n }\r\n\r\n function BMDestroyEvent(type, target) {\r\n this.type = type;\r\n this.target = target;\r\n }\r\n\r\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\r\n this.type = 'renderFrameError';\r\n this.nativeError = nativeError;\r\n this.currentTime = currentTime;\r\n }\r\n\r\n function BMConfigErrorEvent(nativeError) {\r\n this.type = 'configError';\r\n this.nativeError = nativeError;\r\n }\r\n\r\n function BMAnimationConfigErrorEvent(type, nativeError) {\r\n this.type = type;\r\n this.nativeError = nativeError;\r\n }\r\n\r\n var createElementID = function () {\r\n var _count = 0;\r\n return function createID() {\r\n _count += 1;\r\n return idPrefix$1 + '__lottie_element_' + _count;\r\n };\r\n }();\r\n\r\n function 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\r\n switch (i % 6) {\r\n case 0:\r\n r = v;\r\n g = t;\r\n b = p;\r\n break;\r\n\r\n case 1:\r\n r = q;\r\n g = v;\r\n b = p;\r\n break;\r\n\r\n case 2:\r\n r = p;\r\n g = v;\r\n b = t;\r\n break;\r\n\r\n case 3:\r\n r = p;\r\n g = q;\r\n b = v;\r\n break;\r\n\r\n case 4:\r\n r = t;\r\n g = p;\r\n b = v;\r\n break;\r\n\r\n case 5:\r\n r = v;\r\n g = p;\r\n b = q;\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n return [r, g, b];\r\n }\r\n\r\n function 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:\r\n h = 0;\r\n break;\r\n\r\n case r:\r\n h = g - b + d * (g < b ? 6 : 0);\r\n h /= 6 * d;\r\n break;\r\n\r\n case g:\r\n h = b - r + d * 2;\r\n h /= 6 * d;\r\n break;\r\n\r\n case b:\r\n h = r - g + d * 4;\r\n h /= 6 * d;\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n return [h, s, v];\r\n }\r\n\r\n function addSaturationToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[1] += offset;\r\n\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\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n }\r\n\r\n function addBrightnessToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[2] += offset;\r\n\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\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n }\r\n\r\n function 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\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\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n }\r\n\r\n var rgbToHex = function () {\r\n var colorMap = [];\r\n var i;\r\n var hex;\r\n\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\r\n if (g < 0) {\r\n g = 0;\r\n }\r\n\r\n if (b < 0) {\r\n b = 0;\r\n }\r\n\r\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\r\n };\r\n }();\r\n\r\n var setSubframeEnabled = function setSubframeEnabled(flag) {\r\n subframeEnabled = !!flag;\r\n };\r\n\r\n var getSubframeEnabled = function getSubframeEnabled() {\r\n return subframeEnabled;\r\n };\r\n\r\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\r\n expressionsPlugin = value;\r\n };\r\n\r\n var getExpressionsPlugin = function getExpressionsPlugin() {\r\n return expressionsPlugin;\r\n };\r\n\r\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\r\n expressionsInterfaces = value;\r\n };\r\n\r\n var getExpressionInterfaces = function getExpressionInterfaces() {\r\n return expressionsInterfaces;\r\n };\r\n\r\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\r\n defaultCurveSegments = value;\r\n };\r\n\r\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\r\n return defaultCurveSegments;\r\n };\r\n\r\n var setIdPrefix = function setIdPrefix(value) {\r\n idPrefix$1 = value;\r\n };\r\n\r\n var getIdPrefix = function getIdPrefix() {\r\n return idPrefix$1;\r\n };\r\n\r\n function createNS(type) {\r\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\r\n return document.createElementNS(svgNS, type);\r\n }\r\n\r\n function _typeof$5(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\r\n\r\n var 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 onmessage() {},\r\n postMessage: function postMessage(path) {\r\n workerFn({\r\n data: path\r\n });\r\n }\r\n };\r\n var _workerSelf = {\r\n postMessage: function postMessage(data) {\r\n workerProxy.onmessage({\r\n data: data\r\n });\r\n }\r\n };\r\n\r\n function createWorker(fn) {\r\n if (window.Worker && window.Blob && getWebWorker()) {\r\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\r\n type: 'text/javascript'\r\n }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\r\n\r\n var url = URL.createObjectURL(blob);\r\n return new Worker(url);\r\n }\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 function dataFunctionManager() {\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\r\n for (i = 0; i < len; i += 1) {\r\n layerData = layers[i];\r\n\r\n if ('ks' in layerData && !layerData.completed) {\r\n layerData.completed = true;\r\n\r\n if (layerData.hasMask) {\r\n var maskProps = layerData.masksProperties;\r\n jLen = maskProps.length;\r\n\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\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\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\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 completeChars(chars, assets) {\r\n if (chars) {\r\n var i = 0;\r\n var len = chars.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (chars[i].t === 1) {\r\n // var compData = findComp(chars[i].data.refId, assets);\r\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\r\n // chars[i].data.op = 99999;\r\n // chars[i].data.st = 0;\r\n // chars[i].data.sr = 1;\r\n // chars[i].w = compData.w;\r\n // chars[i].data.ks = {\r\n // a: { k: [0, 0, 0], a: 0 },\r\n // p: { k: [0, -compData.h, 0], a: 0 },\r\n // r: { k: 0, a: 0 },\r\n // s: { k: [100, 100], a: 0 },\r\n // o: { k: 100, a: 0 },\r\n // };\r\n\r\n completeLayers(chars[i].data.layers, assets);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function findComp(id, comps) {\r\n var i = 0;\r\n var len = comps.length;\r\n\r\n while (i < len) {\r\n if (comps[i].id === id) {\r\n return comps[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function findCompLayers(id, comps) {\r\n var comp = findComp(id, comps);\r\n\r\n if (comp) {\r\n if (!comp.layers.__used) {\r\n comp.layers.__used = true;\r\n return comp.layers;\r\n }\r\n\r\n return JSON.parse(JSON.stringify(comp.layers));\r\n }\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\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\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\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\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\r\n if (minimum[0] > animVersion[0]) {\r\n return true;\r\n }\r\n\r\n if (animVersion[0] > minimum[0]) {\r\n return false;\r\n }\r\n\r\n if (minimum[1] > animVersion[1]) {\r\n return true;\r\n }\r\n\r\n if (animVersion[1] > minimum[1]) {\r\n return false;\r\n }\r\n\r\n if (minimum[2] > animVersion[2]) {\r\n return true;\r\n }\r\n\r\n if (animVersion[2] > minimum[2]) {\r\n return false;\r\n }\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 s: documentData,\r\n t: 0\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\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\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n\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\r\n for (i = 0; i < len; i += 1) {\r\n var charData = animationData.chars[i];\r\n\r\n if (charData.data && charData.data.shapes) {\r\n completeShapes(charData.data.shapes);\r\n charData.data.ip = 0;\r\n charData.data.op = 99999;\r\n charData.data.st = 0;\r\n charData.data.sr = 1;\r\n charData.data.ks = {\r\n p: {\r\n k: [0, 0],\r\n a: 0\r\n },\r\n s: {\r\n k: [100, 100],\r\n a: 0\r\n },\r\n a: {\r\n k: [0, 0],\r\n a: 0\r\n },\r\n r: {\r\n k: 0,\r\n a: 0\r\n },\r\n o: {\r\n k: 100,\r\n a: 0\r\n }\r\n };\r\n\r\n if (!animationData.chars[i].t) {\r\n charData.data.shapes.push({\r\n ty: 'no'\r\n });\r\n charData.data.shapes[0].it.push({\r\n p: {\r\n k: [0, 0],\r\n a: 0\r\n },\r\n s: {\r\n k: [100, 100],\r\n a: 0\r\n },\r\n a: {\r\n k: [0, 0],\r\n a: 0\r\n },\r\n r: {\r\n k: 0,\r\n a: 0\r\n },\r\n o: {\r\n k: 100,\r\n a: 0\r\n },\r\n sk: {\r\n k: 0,\r\n a: 0\r\n },\r\n sa: {\r\n k: 0,\r\n a: 0\r\n },\r\n ty: 'tr'\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\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\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\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\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\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n\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\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\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\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\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\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n\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\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\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\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\r\n for (i = 0; i < len; i += 1) {\r\n layerData = layers[i];\r\n\r\n if (layerData.hasMask) {\r\n var maskProps = layerData.masksProperties;\r\n jLen = maskProps.length;\r\n\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\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\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\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\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n\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\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 completeChars(animationData.chars, 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)) {// 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 return moduleOb;\r\n }\r\n\r\n if (!_workerSelf.dataManager) {\r\n _workerSelf.dataManager = dataFunctionManager();\r\n }\r\n\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\r\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\r\n return xhr.response;\r\n }\r\n\r\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\r\n return xhr.response;\r\n }\r\n\r\n if (xhr.response && typeof xhr.response === 'string') {\r\n return JSON.parse(xhr.response);\r\n }\r\n\r\n if (xhr.responseText) {\r\n return JSON.parse(xhr.responseText);\r\n }\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(); // set responseType after calling open or IE will break.\r\n\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\r\n\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\r\n try {\r\n // Hack to workaround banner validation\r\n xhr.open(['G', 'E', 'T'].join(''), path, true);\r\n } catch (error) {\r\n // Hack to workaround banner validation\r\n xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\r\n }\r\n\r\n xhr.send();\r\n }\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(e.data.path, e.data.fullPath, function (data) {\r\n _workerSelf.dataManager.completeData(data);\r\n\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n payload: data,\r\n status: 'success'\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 } else if (e.data.type === 'complete') {\r\n var animation = e.data.animation;\r\n\r\n _workerSelf.dataManager.completeData(animation);\r\n\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(e.data.path, e.data.fullPath, function (data) {\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n payload: data,\r\n status: 'success'\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 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\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 var 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\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 footageLoaded() {\r\n this.loadedFootagesCount += 1;\r\n\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\r\n if (assetData.e) {\r\n path = assetData.p;\r\n } else if (assetsPath) {\r\n var imagePath = assetData.p;\r\n\r\n if (imagePath.indexOf('images/') !== -1) {\r\n imagePath = imagePath.split('/')[1];\r\n }\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\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\r\n if (box.width || _count > 500) {\r\n this._imageLoaded();\r\n\r\n clearInterval(intervalId);\r\n }\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\r\n if (isSafari) {\r\n this.testImageLoaded(img);\r\n } else {\r\n img.addEventListener('load', this._imageLoaded, false);\r\n }\r\n\r\n img.addEventListener('error', function () {\r\n ob.img = proxyImage;\r\n\r\n this._imageLoaded();\r\n }.bind(this), false);\r\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\r\n\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\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\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\r\n this._footageLoaded();\r\n }.bind(this), function () {\r\n ob.img = {};\r\n\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\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\r\n while (i < len) {\r\n if (this.images[i].assetData === assetData) {\r\n return this.images[i].img;\r\n }\r\n\r\n i += 1;\r\n }\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 return ImagePreloaderFactory;\r\n }();\r\n\r\n function BaseEvent() {}\r\n\r\n BaseEvent.prototype = {\r\n triggerEvent: function triggerEvent(eventName, args) {\r\n if (this._cbs[eventName]) {\r\n var callbacks = this._cbs[eventName];\r\n\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 addEventListener(eventName, callback) {\r\n if (!this._cbs[eventName]) {\r\n this._cbs[eventName] = [];\r\n }\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 removeEventListener(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\r\n while (i < len) {\r\n if (this._cbs[eventName][i] === callback) {\r\n this._cbs[eventName].splice(i, 1);\r\n\r\n i -= 1;\r\n len -= 1;\r\n }\r\n\r\n i += 1;\r\n }\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 var markerParser = 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\r\n for (var i = 0; i < lines.length; i += 1) {\r\n line = lines[i].split(':');\r\n\r\n if (line.length === 2) {\r\n keys[line[0]] = line[1].trim();\r\n keysCount += 1;\r\n }\r\n }\r\n\r\n if (keysCount === 0) {\r\n throw new Error();\r\n }\r\n\r\n return keys;\r\n }\r\n\r\n return function (_markers) {\r\n var markers = [];\r\n\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\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].cm\r\n };\r\n }\r\n }\r\n\r\n markers.push(markerData);\r\n }\r\n\r\n return markers;\r\n };\r\n }();\r\n\r\n var 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\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\r\n return this.compositions[i].compInterface;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n _thisProjectFunction.compositions = [];\r\n _thisProjectFunction.currentFrame = 0;\r\n _thisProjectFunction.registerComposition = registerComposition;\r\n return _thisProjectFunction;\r\n };\r\n }();\r\n\r\n var renderers = {};\r\n\r\n var registerRenderer = function registerRenderer(key, value) {\r\n renderers[key] = value;\r\n };\r\n\r\n function getRenderer(key) {\r\n return renderers[key];\r\n }\r\n\r\n function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\r\n\r\n var AnimationItem = function AnimationItem() {\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 = getSubframeEnabled();\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 this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\r\n };\r\n\r\n extendPrototype([BaseEvent], AnimationItem);\r\n\r\n AnimationItem.prototype.setParams = function (params) {\r\n if (params.wrapper || params.container) {\r\n this.wrapper = params.wrapper || params.container;\r\n }\r\n\r\n var animType = 'svg';\r\n\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\r\n var RendererClass = getRenderer(animType);\r\n this.renderer = new RendererClass(this, params.rendererSettings);\r\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\r\n this.renderer.setProjectInterface(this.projectInterface);\r\n this.animType = animType;\r\n\r\n if (params.loop === '' || params.loop === null || params.loop === undefined || 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\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\r\n if (params.audioFactory) {\r\n this.audioController.setAudioFactory(params.audioFactory);\r\n }\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\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(params.path, this.configAnimation, this.onSetupError);\r\n }\r\n };\r\n\r\n AnimationItem.prototype.onSetupError = function () {\r\n this.trigger('data_failed');\r\n };\r\n\r\n AnimationItem.prototype.setupAnimation = function (data) {\r\n dataManager.completeAnimation(data, this.configAnimation);\r\n };\r\n\r\n AnimationItem.prototype.setData = function (wrapper, animationData) {\r\n if (animationData) {\r\n if (_typeof$4(animationData) !== 'object') {\r\n animationData = JSON.parse(animationData);\r\n }\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 params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\r\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : 'canvas';\r\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? 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\r\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\r\n params.autoplay = autoplay !== 'false';\r\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\r\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\r\n\r\n if (prerender === 'false') {\r\n params.prerender = false;\r\n }\r\n\r\n this.setParams(params);\r\n };\r\n\r\n AnimationItem.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\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\r\n for (j = 0; j < jLen; j += 1) {\r\n i = 0;\r\n\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\r\n i += 1;\r\n }\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\r\n if (data.assets) {\r\n len = data.assets.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.animationData.assets.push(data.assets[i]);\r\n }\r\n }\r\n\r\n this.animationData.__complete = false;\r\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\r\n };\r\n\r\n AnimationItem.prototype.onSegmentComplete = function (data) {\r\n this.animationData = data;\r\n var expressionsPlugin = getExpressionsPlugin();\r\n\r\n if (expressionsPlugin) {\r\n expressionsPlugin.initExpressions(this);\r\n }\r\n\r\n this.loadNextSegment();\r\n };\r\n\r\n AnimationItem.prototype.loadNextSegment = function () {\r\n var segments = this.animationData.segments;\r\n\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\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\n AnimationItem.prototype.loadSegments = function () {\r\n var segments = this.animationData.segments;\r\n\r\n if (!segments) {\r\n this.timeCompleted = this.totalFrames;\r\n }\r\n\r\n this.loadNextSegment();\r\n };\r\n\r\n AnimationItem.prototype.imagesLoaded = function () {\r\n this.trigger('loaded_images');\r\n this.checkLoaded();\r\n };\r\n\r\n AnimationItem.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\n AnimationItem.prototype.configAnimation = function (animData) {\r\n if (!this.renderer) {\r\n return;\r\n }\r\n\r\n try {\r\n this.animationData = animData;\r\n\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\r\n this.renderer.configAnimation(animData);\r\n\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\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\n AnimationItem.prototype.waitForFontsLoaded = function () {\r\n if (!this.renderer) {\r\n return;\r\n }\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\n AnimationItem.prototype.checkLoaded = function () {\r\n if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\r\n this.isLoaded = true;\r\n var expressionsPlugin = getExpressionsPlugin();\r\n\r\n if (expressionsPlugin) {\r\n expressionsPlugin.initExpressions(this);\r\n }\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\r\n if (this.autoplay) {\r\n this.play();\r\n }\r\n }\r\n };\r\n\r\n AnimationItem.prototype.resize = function (width, height) {\r\n // Adding this validation for backwards compatibility in case an event object was being passed down\r\n var _width = typeof width === 'number' ? width : undefined;\r\n\r\n var _height = typeof height === 'number' ? height : undefined;\r\n\r\n this.renderer.updateContainerSize(_width, _height);\r\n };\r\n\r\n AnimationItem.prototype.setSubframe = function (flag) {\r\n this.isSubframeEnabled = !!flag;\r\n };\r\n\r\n AnimationItem.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\r\n this.trigger('enterFrame');\r\n this.renderFrame();\r\n this.trigger('drawnFrame');\r\n };\r\n\r\n AnimationItem.prototype.renderFrame = function () {\r\n if (this.isLoaded === false || !this.renderer) {\r\n return;\r\n }\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\n AnimationItem.prototype.play = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n if (this.isPaused === true) {\r\n this.isPaused = false;\r\n this.trigger('_pause');\r\n this.audioController.resume();\r\n\r\n if (this._idle) {\r\n this._idle = false;\r\n this.trigger('_active');\r\n }\r\n }\r\n };\r\n\r\n AnimationItem.prototype.pause = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n if (this.isPaused === false) {\r\n this.isPaused = true;\r\n this.trigger('_play');\r\n this._idle = true;\r\n this.trigger('_idle');\r\n this.audioController.pause();\r\n }\r\n };\r\n\r\n AnimationItem.prototype.togglePause = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\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\n AnimationItem.prototype.stop = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\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\n AnimationItem.prototype.getMarkerData = function (markerName) {\r\n var marker;\r\n\r\n for (var i = 0; i < this.markers.length; i += 1) {\r\n marker = this.markers[i];\r\n\r\n if (marker.payload && marker.payload.name === markerName) {\r\n return marker;\r\n }\r\n }\r\n\r\n return null;\r\n };\r\n\r\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n var numValue = Number(value);\r\n\r\n if (isNaN(numValue)) {\r\n var marker = this.getMarkerData(value);\r\n\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\r\n this.pause();\r\n };\r\n\r\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n var numValue = Number(value);\r\n\r\n if (isNaN(numValue)) {\r\n var marker = this.getMarkerData(value);\r\n\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\r\n this.play();\r\n };\r\n\r\n AnimationItem.prototype.advanceTime = function (value) {\r\n if (this.isPaused === true || this.isLoaded === false) {\r\n return;\r\n }\r\n\r\n var nextValue = this.currentRawFrame + value * this.frameModifier;\r\n var _isComplete = false; // 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\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\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)) {\r\n // eslint-disable-line no-plusplus\r\n this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\r\n\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\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\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\r\n this.playCount = 0;\r\n\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\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\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\r\n this.trigger('segmentStart');\r\n };\r\n\r\n AnimationItem.prototype.setSegment = function (init, end) {\r\n var pendingFrame = -1;\r\n\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\r\n if (pendingFrame !== -1) {\r\n this.goToAndStop(pendingFrame, true);\r\n }\r\n };\r\n\r\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\r\n if (forceFlag) {\r\n this.segments.length = 0;\r\n }\r\n\r\n if (_typeof$4(arr[0]) === 'object') {\r\n var i;\r\n var len = arr.length;\r\n\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\r\n if (this.segments.length && forceFlag) {\r\n this.adjustSegment(this.segments.shift(), 0);\r\n }\r\n\r\n if (this.isPaused) {\r\n this.play();\r\n }\r\n };\r\n\r\n AnimationItem.prototype.resetSegments = function (forceFlag) {\r\n this.segments.length = 0;\r\n this.segments.push([this.animationData.ip, this.animationData.op]);\r\n\r\n if (forceFlag) {\r\n this.checkSegments(0);\r\n }\r\n };\r\n\r\n AnimationItem.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\r\n return false;\r\n };\r\n\r\n AnimationItem.prototype.destroy = function (name) {\r\n if (name && this.name !== name || !this.renderer) {\r\n return;\r\n }\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\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\r\n this.currentRawFrame = value;\r\n this.gotoFrame();\r\n };\r\n\r\n AnimationItem.prototype.setSpeed = function (val) {\r\n this.playSpeed = val;\r\n this.updaFrameModifier();\r\n };\r\n\r\n AnimationItem.prototype.setDirection = function (val) {\r\n this.playDirection = val < 0 ? -1 : 1;\r\n this.updaFrameModifier();\r\n };\r\n\r\n AnimationItem.prototype.setVolume = function (val, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n this.audioController.setVolume(val);\r\n };\r\n\r\n AnimationItem.prototype.getVolume = function () {\r\n return this.audioController.getVolume();\r\n };\r\n\r\n AnimationItem.prototype.mute = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n this.audioController.mute();\r\n };\r\n\r\n AnimationItem.prototype.unmute = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n this.audioController.unmute();\r\n };\r\n\r\n AnimationItem.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\n AnimationItem.prototype.getPath = function () {\r\n return this.path;\r\n };\r\n\r\n AnimationItem.prototype.getAssetsPath = function (assetData) {\r\n var path = '';\r\n\r\n if (assetData.e) {\r\n path = assetData.p;\r\n } else if (this.assetsPath) {\r\n var imagePath = assetData.p;\r\n\r\n if (imagePath.indexOf('images/') !== -1) {\r\n imagePath = imagePath.split('/')[1];\r\n }\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\r\n return path;\r\n };\r\n\r\n AnimationItem.prototype.getAssetData = function (id) {\r\n var i = 0;\r\n var len = this.assets.length;\r\n\r\n while (i < len) {\r\n if (id === this.assets[i].id) {\r\n return this.assets[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n AnimationItem.prototype.hide = function () {\r\n this.renderer.hide();\r\n };\r\n\r\n AnimationItem.prototype.show = function () {\r\n this.renderer.show();\r\n };\r\n\r\n AnimationItem.prototype.getDuration = function (isFrame) {\r\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\r\n };\r\n\r\n AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\r\n try {\r\n var element = this.renderer.getElementByPath(path);\r\n element.updateDocumentData(documentData, index);\r\n } catch (error) {// TODO: decide how to handle catch case\r\n }\r\n };\r\n\r\n AnimationItem.prototype.trigger = function (name) {\r\n if (this._cbs && this._cbs[name]) {\r\n switch (name) {\r\n case 'enterFrame':\r\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\r\n break;\r\n\r\n case 'drawnFrame':\r\n this.drawnFrameEvent.currentTime = this.currentFrame;\r\n this.drawnFrameEvent.totalTime = this.totalFrames;\r\n this.drawnFrameEvent.direction = this.frameModifier;\r\n this.triggerEvent(name, this.drawnFrameEvent);\r\n break;\r\n\r\n case 'loopComplete':\r\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\r\n break;\r\n\r\n case 'complete':\r\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\r\n break;\r\n\r\n case 'segmentStart':\r\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\r\n break;\r\n\r\n case 'destroy':\r\n this.triggerEvent(name, new BMDestroyEvent(name, this));\r\n break;\r\n\r\n default:\r\n this.triggerEvent(name);\r\n }\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\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\r\n if (name === 'complete' && this.onComplete) {\r\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\r\n }\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\r\n if (name === 'destroy' && this.onDestroy) {\r\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\r\n }\r\n };\r\n\r\n AnimationItem.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\n AnimationItem.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 var 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\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\r\n if (!animItem.isPaused) {\r\n subtractPlayingCount();\r\n }\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\r\n var i = 0;\r\n\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\r\n i += 1;\r\n }\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\r\n for (i = 0; i < lenAnims; i += 1) {\r\n animations.push(registeredAnimations[i].animation);\r\n }\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({\r\n elem: element,\r\n animation: animItem\r\n });\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\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\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\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.play(animation);\r\n }\r\n }\r\n\r\n function resume(nowTime) {\r\n var elapsedTime = nowTime - initTime;\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.advanceTime(elapsedTime);\r\n }\r\n\r\n initTime = nowTime;\r\n\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\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\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\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\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\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')), [].slice.call(document.getElementsByClassName('bodymovin')));\r\n var i;\r\n var lenAnims = animElements.length;\r\n\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\r\n registerAnimation(animElements[i], animationData);\r\n }\r\n\r\n if (standalone && lenAnims === 0) {\r\n if (!renderer) {\r\n renderer = 'svg';\r\n }\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\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\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\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\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; // moduleOb.start = start;\r\n\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 /* eslint-disable */\r\n var BezierFactory = function () {\r\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Ga\u00EBtan Renaudeau 2014 - 2015 \u2013 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 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\r\n if (beziers[str]) {\r\n return beziers[str];\r\n }\r\n\r\n var bezEasing = new BezierEasing([a, b, c, d]);\r\n beziers[str] = bezEasing;\r\n return bezEasing;\r\n } // These values are established by empiricism with tests (tradeoff: performance VS precision)\r\n\r\n\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 var kSplineTableSize = 11;\r\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\r\n var float32ArraySupported = typeof Float32Array === 'function';\r\n\r\n function A(aA1, aA2) {\r\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\r\n }\r\n\r\n function B(aA1, aA2) {\r\n return 3.0 * aA2 - 6.0 * aA1;\r\n }\r\n\r\n function C(aA1) {\r\n return 3.0 * aA1;\r\n } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\r\n\r\n\r\n function calcBezier(aT, aA1, aA2) {\r\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\r\n } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\r\n\r\n\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\r\n do {\r\n currentT = aA + (aB - aA) / 2.0;\r\n currentX = calcBezier(currentT, mX1, mX2) - aX;\r\n\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\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\r\n return aGuessT;\r\n }\r\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\r\n\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 this.get = this.get.bind(this);\r\n }\r\n\r\n BezierEasing.prototype = {\r\n get: function get(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\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 // Private part\r\n _precompute: function _precompute() {\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\r\n if (mX1 !== mY1 || mX2 !== mY2) {\r\n this._calcSampleValues();\r\n }\r\n },\r\n _calcSampleValues: function _calcSampleValues() {\r\n var mX1 = this._p[0],\r\n mX2 = this._p[2];\r\n\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 _getTForX(aX) {\r\n var mX1 = this._p[0],\r\n mX2 = this._p[2],\r\n mSampleValues = this._mSampleValues;\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\r\n --currentSample; // Interpolate to provide an initial guess for t\r\n\r\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\r\n var guessForT = intervalStart + dist * kSampleStepSize;\r\n var initialSlope = getSlope(guessForT, mX1, mX2);\r\n\r\n if (initialSlope >= NEWTON_MIN_SLOPE) {\r\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\r\n }\r\n\r\n if (initialSlope === 0.0) {\r\n return guessForT;\r\n }\r\n\r\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\r\n }\r\n };\r\n return ob;\r\n }();\r\n\r\n var 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 var 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 var ob = {\r\n newElement: newElement,\r\n release: release\r\n };\r\n\r\n function newElement() {\r\n var element;\r\n\r\n if (_length) {\r\n _length -= 1;\r\n element = pool[_length];\r\n } else {\r\n element = _create();\r\n }\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\r\n if (_release) {\r\n _release(element);\r\n }\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 var bezierLengthPool = function () {\r\n function create() {\r\n return {\r\n addedLength: 0,\r\n percents: createTypedArray('float32', getDefaultCurveSegments()),\r\n lengths: createTypedArray('float32', getDefaultCurveSegments())\r\n };\r\n }\r\n\r\n return poolFactory(8, create);\r\n }();\r\n\r\n var 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\r\n for (i = 0; i < len; i += 1) {\r\n bezierLengthPool.release(element.lengths[i]);\r\n }\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 function 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\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\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\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 = getDefaultCurveSegments();\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\r\n for (k = 0; k < curveSegments; k += 1) {\r\n perc = k / (curveSegments - 1);\r\n ptDistance = 0;\r\n\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\r\n if (lastPoint[i] !== null) {\r\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\r\n }\r\n\r\n lastPoint[i] = point[i];\r\n }\r\n\r\n if (ptDistance) {\r\n ptDistance = bmSqrt(ptDistance);\r\n addedLength += ptDistance;\r\n }\r\n\r\n lengthData.percents[k] = perc;\r\n lengthData.lengths[k] = addedLength;\r\n }\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\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\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\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 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\r\n if (!storedData[bezierName]) {\r\n var curveSegments = getDefaultCurveSegments();\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\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\r\n var bezierData = new BezierData(curveSegments);\r\n len = pt3.length;\r\n\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\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\r\n if (lastPoint !== null) {\r\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\r\n }\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\r\n bezierData.segmentLength = addedLength;\r\n storedData[bezierName] = bezierData;\r\n }\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\r\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\r\n return percents[initPos];\r\n }\r\n\r\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\r\n var flag = true;\r\n\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\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\r\n flag = false;\r\n }\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\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\r\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\r\n\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\r\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\r\n\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\r\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\r\n\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\r\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\r\n\r\n var t1t1t1 = t1 * t1 * t1;\r\n\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\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\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\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\n var bez = bezFunction();\r\n\r\n var 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\r\n if (this.propType === 'multidimensional') {\r\n newValue = createTypedArray('float32', this.pv.length);\r\n }\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\r\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\r\n if (keyData.h) {\r\n keyData = nextKeyData;\r\n }\r\n\r\n iterationIndex = 0;\r\n break;\r\n }\r\n\r\n if (nextKeyData.t - offsetTime > frameNum) {\r\n iterationIndex = i;\r\n break;\r\n }\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\r\n keyframeMetadata = this.keyframesMetadata[i] || {};\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\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\r\n var bezierData = keyframeMetadata.bezierData;\r\n\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\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[ind].point[k];\r\n } // caching._lastKeyframeIndex = -1;\r\n\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\r\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\r\n var distanceInLine = bezierData.segmentLength * perc;\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\r\n while (flag) {\r\n addedLength += bezierData.points[j].partialLength;\r\n\r\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\r\n kLen = bezierData.points[j].point.length;\r\n\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[j].point[k];\r\n }\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\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\r\n break;\r\n }\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\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\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\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\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\r\n caching.lastIndex = iterationIndex;\r\n return newValue;\r\n } // based on @Toji's https://github.com/toji/gl-matrix/\r\n\r\n\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 var omega;\r\n var cosom;\r\n var sinom;\r\n var scale0;\r\n var scale1;\r\n cosom = ax * bx + ay * by + az * bz + aw * bw;\r\n\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\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\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 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 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\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\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\r\n if (this.propType === 'unidimensional') {\r\n multipliedValue = val * this.mult;\r\n\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\r\n while (i < len) {\r\n multipliedValue = val[i] * this.mult;\r\n\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\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\r\n if (this.lock) {\r\n this.setVValue(this.pv);\r\n return;\r\n }\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\r\n for (i = 0; i < len; i += 1) {\r\n finalValue = this.effectsSequence[i](finalValue);\r\n }\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\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\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,\r\n lastIndex: 0,\r\n value: 0,\r\n _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\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\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\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\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\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\r\n this._caching = {\r\n lastFrame: initFrame,\r\n lastIndex: 0,\r\n value: createTypedArray('float32', arrLen)\r\n };\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function getProp(elem, data, type, mult, container) {\r\n var p;\r\n\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\r\n case 1:\r\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n if (p.effectsSequence.length) {\r\n container.addDynamicProperty(p);\r\n }\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 function DynamicPropertyContainer() {}\r\n\r\n DynamicPropertyContainer.prototype = {\r\n addDynamicProperty: function addDynamicProperty(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 iterateDynamicProperties() {\r\n this._mdf = false;\r\n var i;\r\n var len = this.dynamicProperties.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n\r\n if (this.dynamicProperties[i]._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n },\r\n initDynamicPropertyContainer: function initDynamicPropertyContainer(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 var pointPool = function () {\r\n function create() {\r\n return createTypedArray('float32', 2);\r\n }\r\n\r\n return poolFactory(8, create);\r\n }();\r\n\r\n function 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\n ShapePath.prototype.setPathData = function (closed, len) {\r\n this.c = closed;\r\n this.setLength(len);\r\n var i = 0;\r\n\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\n ShapePath.prototype.setLength = function (len) {\r\n while (this._maxLength < len) {\r\n this.doubleArrayLength();\r\n }\r\n\r\n this._length = len;\r\n };\r\n\r\n ShapePath.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\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\r\n var arr;\r\n this._length = Math.max(this._length, pos + 1);\r\n\r\n if (this._length >= this._maxLength) {\r\n this.doubleArrayLength();\r\n }\r\n\r\n switch (type) {\r\n case 'v':\r\n arr = this.v;\r\n break;\r\n\r\n case 'i':\r\n arr = this.i;\r\n break;\r\n\r\n case 'o':\r\n arr = this.o;\r\n break;\r\n\r\n default:\r\n arr = [];\r\n break;\r\n }\r\n\r\n if (!arr[pos] || arr[pos] && !replace) {\r\n arr[pos] = pointPool.newElement();\r\n }\r\n\r\n arr[pos][0] = x;\r\n arr[pos][1] = y;\r\n };\r\n\r\n ShapePath.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\n ShapePath.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\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\r\n var cnt = this._length - 1;\r\n var len = this._length;\r\n var i;\r\n\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\r\n return newPath;\r\n };\r\n\r\n ShapePath.prototype.length = function () {\r\n return this._length;\r\n };\r\n\r\n var 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\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\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\r\n return cloned;\r\n }\r\n\r\n var factory = poolFactory(4, create, release);\r\n factory.clone = clone;\r\n return factory;\r\n }();\r\n\r\n function ShapeCollection() {\r\n this._length = 0;\r\n this._maxLength = 4;\r\n this.shapes = createSizedArray(this._maxLength);\r\n }\r\n\r\n ShapeCollection.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\r\n this.shapes[this._length] = shapeData;\r\n this._length += 1;\r\n };\r\n\r\n ShapeCollection.prototype.releaseShapes = function () {\r\n var i;\r\n\r\n for (i = 0; i < this._length; i += 1) {\r\n shapePool.release(this.shapes[i]);\r\n }\r\n\r\n this._length = 0;\r\n };\r\n\r\n var shapeCollectionPool = function () {\r\n var ob = {\r\n newShapeCollection: newShapeCollection,\r\n release: release\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\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\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\r\n for (i = 0; i < len; i += 1) {\r\n shapePool.release(shapeCollection.shapes[i]);\r\n }\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\r\n pool[_length] = shapeCollection;\r\n _length += 1;\r\n }\r\n\r\n return ob;\r\n }();\r\n\r\n var 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\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\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\r\n while (flag) {\r\n keyData = kf[i];\r\n nextKeyData = kf[i + 1];\r\n\r\n if (nextKeyData.t - this.offsetTime > frameNum) {\r\n break;\r\n }\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\r\n keyframeMetadata = this.keyframesMetadata[i] || {};\r\n isHold = keyData.h === 1;\r\n iterationIndex = i;\r\n\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\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\r\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\r\n }\r\n\r\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\r\n }\r\n\r\n keyPropS = keyData.s[0];\r\n }\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\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\r\n var i;\r\n var len = shape1._length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\r\n return false;\r\n }\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 }\r\n\r\n if (!this.effectsSequence.length) {\r\n this._mdf = false;\r\n return;\r\n }\r\n\r\n if (this.lock) {\r\n this.setVValue(this.pv);\r\n return;\r\n }\r\n\r\n this.lock = true;\r\n this._mdf = false;\r\n var finalValue;\r\n\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\r\n var i;\r\n var len = this.effectsSequence.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n finalValue = this.effectsSequence[i](finalValue);\r\n }\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 = {\r\n lastFrame: initFrame,\r\n lastIndex: 0\r\n };\r\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\r\n }\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 = 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\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 getValue() {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\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 convertEllToPath() {\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\r\n var _cw = this.d !== 3;\r\n\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 extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\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\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\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\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 getValue() {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf) {\r\n this.convertToPath();\r\n }\r\n },\r\n convertStarToPath: function convertStarToPath() {\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\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\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 /* 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\r\n longFlag = !longFlag;\r\n currentAng += angle * dir;\r\n }\r\n },\r\n convertPolygonToPath: function convertPolygonToPath() {\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\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\r\n this.paths.length = 0;\r\n this.paths[0] = this.v;\r\n }\r\n };\r\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\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\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 convertRectToPath() {\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\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\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 getValue() {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n\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 return RectShapePropertyFactory;\r\n }();\r\n\r\n function getShapeProp(elem, data, type) {\r\n var prop;\r\n\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\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\r\n if (prop.k) {\r\n elem.addDynamicProperty(prop);\r\n }\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 /*!\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\n var 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\r\n var mCos = _cos(angle);\r\n\r\n var mSin = _sin(angle);\r\n\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\r\n var mCos = _cos(angle);\r\n\r\n var mSin = _sin(angle);\r\n\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\r\n var mCos = _cos(angle);\r\n\r\n var mSin = _sin(angle);\r\n\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\r\n var mCos = _cos(angle);\r\n\r\n var mSin = _sin(angle);\r\n\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\r\n var mSin = _sin(angle);\r\n\r\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); // 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\r\n if (sx === 1 && sy === 1 && sz === 1) {\r\n return this;\r\n }\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\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\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 /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\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 _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 _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 _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 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\r\n return this._identity;\r\n }\r\n\r\n function equals(matr) {\r\n var i = 0;\r\n\r\n while (i < 16) {\r\n if (matr.props[i] !== this.props[i]) {\r\n return false;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function clone(matr) {\r\n var i;\r\n\r\n for (i = 0; i < 16; i += 1) {\r\n matr.props[i] = this.props[i];\r\n }\r\n\r\n return matr;\r\n }\r\n\r\n function cloneFromProps(props) {\r\n var i;\r\n\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\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\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\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\r\n for (i = 0; i < len; i += 1) {\r\n retPts[i] = inversePoint(pts[i]);\r\n }\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\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\r\n return arr;\r\n }\r\n\r\n function applyToPointArray(x, y, z) {\r\n var arr;\r\n\r\n if (this.isIdentity()) {\r\n arr = [x, y, z];\r\n } else {\r\n arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], 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\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\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\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\r\n return cssValue;\r\n }\r\n\r\n function roundMatrixProperty(val) {\r\n var v = 10000;\r\n\r\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\r\n return _rnd(val * v) / v;\r\n }\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\r\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\r\n var props = this.props;\r\n\r\n var _a = roundMatrixProperty(props[0]);\r\n\r\n var _b = roundMatrixProperty(props[1]);\r\n\r\n var _c = roundMatrixProperty(props[4]);\r\n\r\n var _d = roundMatrixProperty(props[5]);\r\n\r\n var _e = roundMatrixProperty(props[12]);\r\n\r\n var _f = roundMatrixProperty(props[13]);\r\n\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 this.props = createTypedArray('float32', 16);\r\n this.reset();\r\n };\r\n }();\r\n\r\n function _typeof$3(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\r\n var lottie = {};\r\n var standalone = '__[STANDALONE]__';\r\n var animationData = '__[ANIMATIONDATA]__';\r\n var renderer = '';\r\n\r\n function setLocation(href) {\r\n setLocationHref(href);\r\n }\r\n\r\n function 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\n function setSubframeRendering(flag) {\r\n setSubframeEnabled(flag);\r\n }\r\n\r\n function setPrefix(prefix) {\r\n setIdPrefix(prefix);\r\n }\r\n\r\n function loadAnimation(params) {\r\n if (standalone === true) {\r\n params.animationData = JSON.parse(animationData);\r\n }\r\n\r\n return animationManager.loadAnimation(params);\r\n }\r\n\r\n function setQuality(value) {\r\n if (typeof value === 'string') {\r\n switch (value) {\r\n case 'high':\r\n setDefaultCurveSegments(200);\r\n break;\r\n\r\n default:\r\n case 'medium':\r\n setDefaultCurveSegments(50);\r\n break;\r\n\r\n case 'low':\r\n setDefaultCurveSegments(10);\r\n break;\r\n }\r\n } else if (!isNaN(value) && value > 1) {\r\n setDefaultCurveSegments(value);\r\n }\r\n\r\n if (getDefaultCurveSegments() >= 50) {\r\n roundValues(false);\r\n } else {\r\n roundValues(true);\r\n }\r\n }\r\n\r\n function inBrowser() {\r\n return typeof navigator !== 'undefined';\r\n }\r\n\r\n function installPlugin(type, plugin) {\r\n if (type === 'expressions') {\r\n setExpressionsPlugin(plugin);\r\n }\r\n }\r\n\r\n function getFactory(name) {\r\n switch (name) {\r\n case 'propertyFactory':\r\n return PropertyFactory;\r\n\r\n case 'shapePropertyFactory':\r\n return ShapePropertyFactory;\r\n\r\n case 'matrix':\r\n return Matrix;\r\n\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n lottie.play = animationManager.play;\r\n lottie.pause = animationManager.pause;\r\n lottie.setLocationHref = setLocation;\r\n lottie.togglePause = animationManager.togglePause;\r\n lottie.setSpeed = animationManager.setSpeed;\r\n lottie.setDirection = animationManager.setDirection;\r\n lottie.stop = animationManager.stop;\r\n lottie.searchAnimations = searchAnimations;\r\n lottie.registerAnimation = animationManager.registerAnimation;\r\n lottie.loadAnimation = loadAnimation;\r\n lottie.setSubframeRendering = setSubframeRendering;\r\n lottie.resize = animationManager.resize; // lottie.start = start;\r\n\r\n lottie.goToAndStop = animationManager.goToAndStop;\r\n lottie.destroy = animationManager.destroy;\r\n lottie.setQuality = setQuality;\r\n lottie.inBrowser = inBrowser;\r\n lottie.installPlugin = installPlugin;\r\n lottie.freeze = animationManager.freeze;\r\n lottie.unfreeze = animationManager.unfreeze;\r\n lottie.setVolume = animationManager.setVolume;\r\n lottie.mute = animationManager.mute;\r\n lottie.unmute = animationManager.unmute;\r\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\r\n lottie.useWebWorker = setWebWorker;\r\n lottie.setIDPrefix = setPrefix;\r\n lottie.__getFactory = getFactory;\r\n lottie.version = '5.10.0';\r\n\r\n function checkReady() {\r\n if (document.readyState === 'complete') {\r\n clearInterval(readyStateCheckInterval);\r\n searchAnimations();\r\n }\r\n }\r\n\r\n function getQueryVariable(variable) {\r\n var vars = queryString.split('&');\r\n\r\n for (var i = 0; i < vars.length; i += 1) {\r\n var pair = vars[i].split('=');\r\n\r\n if (decodeURIComponent(pair[0]) == variable) {\r\n // eslint-disable-line eqeqeq\r\n return decodeURIComponent(pair[1]);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var queryString = '';\r\n\r\n if (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 ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\r\n\r\n renderer = getQueryVariable('renderer');\r\n }\r\n\r\n var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\r\n\r\n try {\r\n if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\r\n ) {\r\n window.bodymovin = lottie;\r\n }\r\n } catch (err) {//\r\n }\r\n\r\n var 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\n function ShapeModifier() {}\r\n\r\n ShapeModifier.prototype.initModifierProperties = function () {};\r\n\r\n ShapeModifier.prototype.addShapeToModifier = function () {};\r\n\r\n ShapeModifier.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 = {\r\n shape: data.sh,\r\n data: data,\r\n localShapeCollection: shapeCollectionPool.newShapeCollection()\r\n };\r\n this.shapes.push(shapeData);\r\n this.addShapeToModifier(shapeData);\r\n\r\n if (this._isAnimated) {\r\n data.setAsAnimated();\r\n }\r\n }\r\n };\r\n\r\n ShapeModifier.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\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\n ShapeModifier.prototype.processKeys = function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n };\r\n\r\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\r\n\r\n function TrimModifier() {}\r\n\r\n extendPrototype([ShapeModifier], TrimModifier);\r\n\r\n TrimModifier.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\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\r\n shapeData.pathsData = [];\r\n };\r\n\r\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\r\n var segments = [];\r\n\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\r\n var shapeSegments = [];\r\n var i;\r\n var len = segments.length;\r\n var segmentOb;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n segmentOb = segments[i];\r\n\r\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\r\n var shapeS;\r\n var shapeE;\r\n\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\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\r\n shapeSegments.push([shapeS, shapeE]);\r\n }\r\n }\r\n\r\n if (!shapeSegments.length) {\r\n shapeSegments.push([0, 0]);\r\n }\r\n\r\n return shapeSegments;\r\n };\r\n\r\n TrimModifier.prototype.releasePathsData = function (pathsData) {\r\n var i;\r\n var len = pathsData.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n segmentsLengthPool.release(pathsData[i]);\r\n }\r\n\r\n pathsData.length = 0;\r\n return pathsData;\r\n };\r\n\r\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var s;\r\n var e;\r\n\r\n if (this._mdf || _isFirstFrame) {\r\n var o = this.o.v % 360 / 360;\r\n\r\n if (o < 0) {\r\n o += 1;\r\n }\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\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\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\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\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\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\r\n\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\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\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\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\r\n var shapeS = s;\r\n var shapeE = e;\r\n var addedLength = 0;\r\n var edges;\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n shapeData = this.shapes[i];\r\n\r\n if (shapeData.shape._mdf) {\r\n localShapeCollection = shapeData.localShapeCollection;\r\n localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\r\n\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\r\n jLen = edges.length;\r\n\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\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\r\n var newShapesData = this.addShapes(shapeData, segments[0]);\r\n\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\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\r\n this.addPaths(newShapesData, localShapeCollection);\r\n }\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\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\r\n var i;\r\n var len = newPaths.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n localShapeCollection.addShape(newPaths[i]);\r\n }\r\n };\r\n\r\n TrimModifier.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\r\n if (newShape) {\r\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\r\n }\r\n\r\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\r\n };\r\n\r\n TrimModifier.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\r\n if (newShape) {\r\n shapePath.setXYAt(points[0], points[4], 'v', pos);\r\n }\r\n\r\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\r\n };\r\n\r\n TrimModifier.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\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\r\n shapes.push(shapePath);\r\n\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\r\n for (j = 1; j < jLen; j += 1) {\r\n currentLengthData = lengths[j - 1];\r\n\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); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n\r\n newShape = false;\r\n shapePath.c = false;\r\n }\r\n\r\n addedLength += currentLengthData.addedLength;\r\n segmentCount += 1;\r\n }\r\n }\r\n\r\n if (shapePaths[i].c && lengths.length) {\r\n currentLengthData = lengths[j - 1];\r\n\r\n if (addedLength <= shapeSegment.e) {\r\n var segmentLength = lengths[j - 1].addedLength;\r\n\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); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n\r\n newShape = false;\r\n shapePath.c = false;\r\n }\r\n } else {\r\n shapePath.c = false;\r\n }\r\n\r\n addedLength += currentLengthData.addedLength;\r\n segmentCount += 1;\r\n }\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\r\n if (addedLength > shapeSegment.e) {\r\n break;\r\n }\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\r\n return shapes;\r\n };\r\n\r\n function PuckerAndBloatModifier() {}\r\n\r\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\r\n\r\n PuckerAndBloatModifier.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\n PuckerAndBloatModifier.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\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\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\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\r\n return clonedPath;\r\n };\r\n\r\n PuckerAndBloatModifier.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\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n\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\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\r\n }\r\n }\r\n\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n };\r\n\r\n var 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\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\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\r\n if (this.sk) {\r\n mat.skewFromAxis(-this.sk.v, this.sa.v);\r\n }\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]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\r\n }\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\r\n function processKeys(forceRender) {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\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\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\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\r\n if (this.sk && this.appliedTransformations < 3) {\r\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\r\n }\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]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\r\n }\r\n\r\n if (this.autoOriented) {\r\n var v1;\r\n var v2;\r\n frameRate = this.elem.globalData.frameRate;\r\n\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\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\r\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\r\n }\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\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\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\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\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]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\r\n this.appliedTransformations = 4;\r\n }\r\n }\r\n\r\n function autoOrient() {//\r\n // var prevP = this.getValueAtTime();\r\n }\r\n\r\n function addDynamicProperty(prop) {\r\n this._addDynamicProperty(prop);\r\n\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(); // Precalculated matrix with non animated properties\r\n\r\n this.pre = new Matrix();\r\n this.appliedTransformations = 0;\r\n this.initDynamicPropertyContainer(container || elem);\r\n\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\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 || {\r\n k: [0, 0, 0]\r\n }, 1, 0, this);\r\n }\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\r\n if (data.or.k[0].ti) {\r\n var i;\r\n var len = data.or.k.length;\r\n\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\r\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\r\n\r\n this.or.sh = true;\r\n } else {\r\n this.r = PropertyFactory.getProp(elem, data.r || {\r\n k: 0\r\n }, 0, degToRads, this);\r\n }\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\r\n this.a = PropertyFactory.getProp(elem, data.a || {\r\n k: [0, 0, 0]\r\n }, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s || {\r\n k: [100, 100, 100]\r\n }, 1, 0.01, this); // 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\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 = {\r\n _mdf: false,\r\n v: 1\r\n };\r\n }\r\n\r\n this._isDirty = true;\r\n\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 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 function RepeaterModifier() {}\r\n\r\n extendPrototype([ShapeModifier], RepeaterModifier);\r\n\r\n RepeaterModifier.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\r\n if (!this.dynamicProperties.length) {\r\n this.getValue(true);\r\n }\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\n RepeaterModifier.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\n RepeaterModifier.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\r\n while (pos > 0) {\r\n pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\r\n\r\n this._elements.unshift(arr[pos]);\r\n }\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\n RepeaterModifier.prototype.resetElements = function (elements) {\r\n var i;\r\n var len = elements.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n elements[i]._processed = false;\r\n\r\n if (elements[i].ty === 'gr') {\r\n this.resetElements(elements[i].it);\r\n }\r\n }\r\n };\r\n\r\n RepeaterModifier.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\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\r\n var i;\r\n var len = elements.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n elements[i]._render = renderFlag;\r\n\r\n if (elements[i].ty === 'gr') {\r\n this.changeGroupRender(elements[i].it, renderFlag);\r\n }\r\n }\r\n };\r\n\r\n RepeaterModifier.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\r\n if (this._mdf || _isFirstFrame) {\r\n var copies = Math.ceil(this.c.v);\r\n\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: {\r\n a: 0,\r\n ix: 1,\r\n k: [0, 0]\r\n },\r\n nm: 'Transform',\r\n o: {\r\n a: 0,\r\n ix: 7,\r\n k: 100\r\n },\r\n p: {\r\n a: 0,\r\n ix: 2,\r\n k: [0, 0]\r\n },\r\n r: {\r\n a: 1,\r\n ix: 6,\r\n k: [{\r\n s: 0,\r\n e: 0,\r\n t: 0\r\n }, {\r\n s: 0,\r\n e: 0,\r\n t: 1\r\n }]\r\n },\r\n s: {\r\n a: 0,\r\n ix: 3,\r\n k: [100, 100]\r\n },\r\n sa: {\r\n a: 0,\r\n ix: 5,\r\n k: 0\r\n },\r\n sk: {\r\n a: 0,\r\n ix: 4,\r\n k: 0\r\n },\r\n ty: 'tr'\r\n });\r\n this.arr.splice(0, 0, group);\r\n\r\n this._groups.splice(0, 0, group);\r\n\r\n this._currentCopies += 1;\r\n }\r\n\r\n this.elem.reloadShapes();\r\n hasReloaded = true;\r\n }\r\n\r\n cont = 0;\r\n var renderFlag;\r\n\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\r\n if (!renderFlag) {\r\n var elems = this.elemsData[i].it;\r\n var transformData = elems[elems.length - 1];\r\n\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\r\n cont += 1;\r\n }\r\n\r\n this._currentCopies = copies; /// /\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\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\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\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\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 ? this.so.v : 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\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\r\n this.matrix.reset();\r\n } else {\r\n this.matrix.reset();\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsTransform[j] = this.matrix.props[j];\r\n }\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\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\r\n return hasReloaded;\r\n };\r\n\r\n RepeaterModifier.prototype.addShape = function () {};\r\n\r\n function RoundCornersModifier() {}\r\n\r\n extendPrototype([ShapeModifier], RoundCornersModifier);\r\n\r\n RoundCornersModifier.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\n RoundCornersModifier.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\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\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\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\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\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\r\n return clonedPath;\r\n };\r\n\r\n RoundCornersModifier.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\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n\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\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\r\n }\r\n }\r\n\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n };\r\n\r\n function floatEqual(a, b) {\r\n return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\r\n }\r\n\r\n function floatZero(f) {\r\n return Math.abs(f) <= 0.00001;\r\n }\r\n\r\n function lerp(p0, p1, amount) {\r\n return p0 * (1 - amount) + p1 * amount;\r\n }\r\n\r\n function lerpPoint(p0, p1, amount) {\r\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\r\n }\r\n\r\n function quadRoots(a, b, c) {\r\n // no root\r\n if (a === 0) return [];\r\n var s = b * b - 4 * a * c; // Complex roots\r\n\r\n if (s < 0) return [];\r\n var singleRoot = -b / (2 * a); // 1 root\r\n\r\n if (s === 0) return [singleRoot];\r\n var delta = Math.sqrt(s) / (2 * a); // 2 roots\r\n\r\n return [singleRoot - delta, singleRoot + delta];\r\n }\r\n\r\n function polynomialCoefficients(p0, p1, p2, p3) {\r\n return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\r\n }\r\n\r\n function singlePoint(p) {\r\n return new PolynomialBezier(p, p, p, p, false);\r\n }\r\n\r\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\r\n if (linearize && pointEqual(p0, p1)) {\r\n p1 = lerpPoint(p0, p3, 1 / 3);\r\n }\r\n\r\n if (linearize && pointEqual(p2, p3)) {\r\n p2 = lerpPoint(p0, p3, 2 / 3);\r\n }\r\n\r\n var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\r\n var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\r\n this.a = [coeffx[0], coeffy[0]];\r\n this.b = [coeffx[1], coeffy[1]];\r\n this.c = [coeffx[2], coeffy[2]];\r\n this.d = [coeffx[3], coeffy[3]];\r\n this.points = [p0, p1, p2, p3];\r\n }\r\n\r\n PolynomialBezier.prototype.point = function (t) {\r\n return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\r\n };\r\n\r\n PolynomialBezier.prototype.derivative = function (t) {\r\n return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\r\n };\r\n\r\n PolynomialBezier.prototype.tangentAngle = function (t) {\r\n var p = this.derivative(t);\r\n return Math.atan2(p[1], p[0]);\r\n };\r\n\r\n PolynomialBezier.prototype.normalAngle = function (t) {\r\n var p = this.derivative(t);\r\n return Math.atan2(p[0], p[1]);\r\n };\r\n\r\n PolynomialBezier.prototype.inflectionPoints = function () {\r\n var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\r\n if (floatZero(denom)) return [];\r\n var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\r\n var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\r\n if (square < 0) return [];\r\n var root = Math.sqrt(square);\r\n\r\n if (floatZero(root)) {\r\n if (root > 0 && root < 1) return [tcusp];\r\n return [];\r\n }\r\n\r\n return [tcusp - root, tcusp + root].filter(function (r) {\r\n return r > 0 && r < 1;\r\n });\r\n };\r\n\r\n PolynomialBezier.prototype.split = function (t) {\r\n if (t <= 0) return [singlePoint(this.points[0]), this];\r\n if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\r\n var p10 = lerpPoint(this.points[0], this.points[1], t);\r\n var p11 = lerpPoint(this.points[1], this.points[2], t);\r\n var p12 = lerpPoint(this.points[2], this.points[3], t);\r\n var p20 = lerpPoint(p10, p11, t);\r\n var p21 = lerpPoint(p11, p12, t);\r\n var p3 = lerpPoint(p20, p21, t);\r\n return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\r\n };\r\n\r\n function extrema(bez, comp) {\r\n var min = bez.points[0][comp];\r\n var max = bez.points[bez.points.length - 1][comp];\r\n\r\n if (min > max) {\r\n var e = max;\r\n max = min;\r\n min = e;\r\n } // Derivative roots to find min/max\r\n\r\n\r\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\r\n\r\n for (var i = 0; i < f.length; i += 1) {\r\n if (f[i] > 0 && f[i] < 1) {\r\n var val = bez.point(f[i])[comp];\r\n if (val < min) min = val;else if (val > max) max = val;\r\n }\r\n }\r\n\r\n return {\r\n min: min,\r\n max: max\r\n };\r\n }\r\n\r\n PolynomialBezier.prototype.bounds = function () {\r\n return {\r\n x: extrema(this, 0),\r\n y: extrema(this, 1)\r\n };\r\n };\r\n\r\n PolynomialBezier.prototype.boundingBox = function () {\r\n var bounds = this.bounds();\r\n return {\r\n left: bounds.x.min,\r\n right: bounds.x.max,\r\n top: bounds.y.min,\r\n bottom: bounds.y.max,\r\n width: bounds.x.max - bounds.x.min,\r\n height: bounds.y.max - bounds.y.min,\r\n cx: (bounds.x.max + bounds.x.min) / 2,\r\n cy: (bounds.y.max + bounds.y.min) / 2\r\n };\r\n };\r\n\r\n function intersectData(bez, t1, t2) {\r\n var box = bez.boundingBox();\r\n return {\r\n cx: box.cx,\r\n cy: box.cy,\r\n width: box.width,\r\n height: box.height,\r\n bez: bez,\r\n t: (t1 + t2) / 2,\r\n t1: t1,\r\n t2: t2\r\n };\r\n }\r\n\r\n function splitData(data) {\r\n var split = data.bez.split(0.5);\r\n return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\r\n }\r\n\r\n function boxIntersect(b1, b2) {\r\n return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\r\n }\r\n\r\n function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\r\n if (!boxIntersect(d1, d2)) return;\r\n\r\n if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\r\n intersections.push([d1.t, d2.t]);\r\n return;\r\n }\r\n\r\n var d1s = splitData(d1);\r\n var d2s = splitData(d2);\r\n intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\r\n intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\r\n intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\r\n intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\r\n }\r\n\r\n PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\r\n if (tolerance === undefined) tolerance = 2;\r\n if (maxRecursion === undefined) maxRecursion = 7;\r\n var intersections = [];\r\n intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\r\n return intersections;\r\n };\r\n\r\n PolynomialBezier.shapeSegment = function (shapePath, index) {\r\n var nextIndex = (index + 1) % shapePath.length();\r\n return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\r\n };\r\n\r\n PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\r\n var nextIndex = (index + 1) % shapePath.length();\r\n return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\r\n };\r\n\r\n function crossProduct(a, b) {\r\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\r\n }\r\n\r\n function lineIntersection(start1, end1, start2, end2) {\r\n var v1 = [start1[0], start1[1], 1];\r\n var v2 = [end1[0], end1[1], 1];\r\n var v3 = [start2[0], start2[1], 1];\r\n var v4 = [end2[0], end2[1], 1];\r\n var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\r\n if (floatZero(r[2])) return null;\r\n return [r[0] / r[2], r[1] / r[2]];\r\n }\r\n\r\n function polarOffset(p, angle, length) {\r\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\r\n }\r\n\r\n function pointDistance(p1, p2) {\r\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\r\n }\r\n\r\n function pointEqual(p1, p2) {\r\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\r\n }\r\n\r\n function ZigZagModifier() {}\r\n\r\n extendPrototype([ShapeModifier], ZigZagModifier);\r\n\r\n ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\r\n this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\r\n this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\r\n this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\r\n };\r\n\r\n function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\r\n var angO = angle - Math.PI / 2;\r\n var angI = angle + Math.PI / 2;\r\n var px = point[0] + Math.cos(angle) * direction * amplitude;\r\n var py = point[1] - Math.sin(angle) * direction * amplitude;\r\n outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\r\n }\r\n\r\n function getPerpendicularVector(pt1, pt2) {\r\n var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\r\n var rot = -Math.PI * 0.5;\r\n var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\r\n return rotatedVector;\r\n }\r\n\r\n function getProjectingAngle(path, cur) {\r\n var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\r\n var nextIndex = (cur + 1) % path.length();\r\n var prevPoint = path.v[prevIndex];\r\n var nextPoint = path.v[nextIndex];\r\n var pVector = getPerpendicularVector(prevPoint, nextPoint);\r\n return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\r\n }\r\n\r\n function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\r\n var angle = getProjectingAngle(path, cur);\r\n var point = path.v[cur % path._length];\r\n var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\r\n var nextPoint = path.v[(cur + 1) % path._length];\r\n var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\r\n var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\r\n setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\r\n }\r\n\r\n function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\r\n for (var i = 0; i < frequency; i += 1) {\r\n var t = (i + 1) / (frequency + 1);\r\n var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\r\n var angle = segment.normalAngle(t);\r\n var point = segment.point(t);\r\n setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\r\n direction = -direction;\r\n }\r\n\r\n return direction;\r\n }\r\n\r\n ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\r\n var count = path._length;\r\n var clonedPath = shapePool.newElement();\r\n clonedPath.c = path.c;\r\n\r\n if (!path.c) {\r\n count -= 1;\r\n }\r\n\r\n if (count === 0) return clonedPath;\r\n var direction = -1;\r\n var segment = PolynomialBezier.shapeSegment(path, 0);\r\n zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\r\n\r\n for (var i = 0; i < count; i += 1) {\r\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\r\n\r\n if (i === count - 1 && !path.c) {\r\n segment = null;\r\n } else {\r\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\r\n }\r\n\r\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\r\n }\r\n\r\n return clonedPath;\r\n };\r\n\r\n ZigZagModifier.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 amplitude = this.amplitude.v;\r\n var frequency = Math.max(0, Math.round(this.frequency.v));\r\n var pointType = this.pointsType.v;\r\n\r\n if (amplitude !== 0) {\r\n var shapeData;\r\n var localShapeCollection;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n\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\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\r\n }\r\n }\r\n\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n };\r\n\r\n function linearOffset(p1, p2, amount) {\r\n var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\r\n return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\r\n }\r\n\r\n function offsetSegment(segment, amount) {\r\n var p0;\r\n var p1a;\r\n var p1b;\r\n var p2b;\r\n var p2a;\r\n var p3;\r\n var e;\r\n e = linearOffset(segment.points[0], segment.points[1], amount);\r\n p0 = e[0];\r\n p1a = e[1];\r\n e = linearOffset(segment.points[1], segment.points[2], amount);\r\n p1b = e[0];\r\n p2b = e[1];\r\n e = linearOffset(segment.points[2], segment.points[3], amount);\r\n p2a = e[0];\r\n p3 = e[1];\r\n var p1 = lineIntersection(p0, p1a, p1b, p2b);\r\n if (p1 === null) p1 = p1a;\r\n var p2 = lineIntersection(p2a, p3, p1b, p2b);\r\n if (p2 === null) p2 = p2a;\r\n return new PolynomialBezier(p0, p1, p2, p3);\r\n }\r\n\r\n function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\r\n var p0 = seg1.points[3];\r\n var p1 = seg2.points[0]; // Bevel\r\n\r\n if (lineJoin === 3) return p0; // Connected, they don't need a joint\r\n\r\n if (pointEqual(p0, p1)) return p0; // Round\r\n\r\n if (lineJoin === 2) {\r\n var angleOut = -seg1.tangentAngle(1);\r\n var angleIn = -seg2.tangentAngle(0) + Math.PI;\r\n var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\r\n var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\r\n var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\r\n outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\r\n tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\r\n outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\r\n return p1;\r\n } // Miter\r\n\r\n\r\n var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\r\n var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\r\n var intersection = lineIntersection(t0, p0, p1, t1);\r\n\r\n if (intersection && pointDistance(intersection, p0) < miterLimit) {\r\n outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\r\n return intersection;\r\n }\r\n\r\n return p0;\r\n }\r\n\r\n function getIntersection(a, b) {\r\n var intersect = a.intersections(b);\r\n if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\r\n if (intersect.length) return intersect[0];\r\n return null;\r\n }\r\n\r\n function pruneSegmentIntersection(a, b) {\r\n var outa = a.slice();\r\n var outb = b.slice();\r\n var intersect = getIntersection(a[a.length - 1], b[0]);\r\n\r\n if (intersect) {\r\n outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\r\n outb[0] = b[0].split(intersect[1])[1];\r\n }\r\n\r\n if (a.length > 1 && b.length > 1) {\r\n intersect = getIntersection(a[0], b[b.length - 1]);\r\n\r\n if (intersect) {\r\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\r\n }\r\n }\r\n\r\n return [outa, outb];\r\n }\r\n\r\n function pruneIntersections(segments) {\r\n var e;\r\n\r\n for (var i = 1; i < segments.length; i += 1) {\r\n e = pruneSegmentIntersection(segments[i - 1], segments[i]);\r\n segments[i - 1] = e[0];\r\n segments[i] = e[1];\r\n }\r\n\r\n if (segments.length > 1) {\r\n e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\r\n segments[segments.length - 1] = e[0];\r\n segments[0] = e[1];\r\n }\r\n\r\n return segments;\r\n }\r\n\r\n function offsetSegmentSplit(segment, amount) {\r\n /*\r\n We split each bezier segment into smaller pieces based\r\n on inflection points, this ensures the control point\r\n polygon is convex.\r\n (A cubic bezier can have none, one, or two inflection points)\r\n */\r\n var flex = segment.inflectionPoints();\r\n var left;\r\n var right;\r\n var split;\r\n var mid;\r\n\r\n if (flex.length === 0) {\r\n return [offsetSegment(segment, amount)];\r\n }\r\n\r\n if (flex.length === 1 || floatEqual(flex[1], 1)) {\r\n split = segment.split(flex[0]);\r\n left = split[0];\r\n right = split[1];\r\n return [offsetSegment(left, amount), offsetSegment(right, amount)];\r\n }\r\n\r\n split = segment.split(flex[0]);\r\n left = split[0];\r\n var t = (flex[1] - flex[0]) / (1 - flex[0]);\r\n split = split[1].split(t);\r\n mid = split[0];\r\n right = split[1];\r\n return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\r\n }\r\n\r\n function OffsetPathModifier() {}\r\n\r\n extendPrototype([ShapeModifier], OffsetPathModifier);\r\n\r\n OffsetPathModifier.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.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\r\n this.lineJoin = data.lj;\r\n this._isAnimated = this.amount.effectsSequence.length !== 0;\r\n };\r\n\r\n OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\r\n var outputBezier = shapePool.newElement();\r\n outputBezier.c = inputBezier.c;\r\n var count = inputBezier.length();\r\n\r\n if (!inputBezier.c) {\r\n count -= 1;\r\n }\r\n\r\n var i;\r\n var j;\r\n var segment;\r\n var multiSegments = [];\r\n\r\n for (i = 0; i < count; i += 1) {\r\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\r\n multiSegments.push(offsetSegmentSplit(segment, amount));\r\n }\r\n\r\n if (!inputBezier.c) {\r\n for (i = count - 1; i >= 0; i -= 1) {\r\n segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\r\n multiSegments.push(offsetSegmentSplit(segment, amount));\r\n }\r\n }\r\n\r\n multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\r\n\r\n var lastPoint = null;\r\n var lastSeg = null;\r\n\r\n for (i = 0; i < multiSegments.length; i += 1) {\r\n var multiSegment = multiSegments[i];\r\n if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\r\n lastSeg = multiSegment[multiSegment.length - 1];\r\n\r\n for (j = 0; j < multiSegment.length; j += 1) {\r\n segment = multiSegment[j];\r\n\r\n if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\r\n outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\r\n } else {\r\n outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\r\n }\r\n\r\n outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\r\n lastPoint = segment.points[3];\r\n }\r\n }\r\n\r\n if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\r\n return outputBezier;\r\n };\r\n\r\n OffsetPathModifier.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 var miterLimit = this.miterLimit.v;\r\n var lineJoin = this.lineJoin;\r\n\r\n if (amount !== 0) {\r\n var shapeData;\r\n var localShapeCollection;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n\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\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\r\n }\r\n }\r\n\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n };\r\n\r\n function getFontProperties(fontData) {\r\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\r\n var fWeight = 'normal';\r\n var fStyle = 'normal';\r\n var len = styles.length;\r\n var styleName;\r\n\r\n for (var i = 0; i < len; i += 1) {\r\n styleName = styles[i].toLowerCase();\r\n\r\n switch (styleName) {\r\n case 'italic':\r\n fStyle = 'italic';\r\n break;\r\n\r\n case 'bold':\r\n fWeight = '700';\r\n break;\r\n\r\n case 'black':\r\n fWeight = '900';\r\n break;\r\n\r\n case 'medium':\r\n fWeight = '500';\r\n break;\r\n\r\n case 'regular':\r\n case 'normal':\r\n fWeight = '400';\r\n break;\r\n\r\n case 'light':\r\n case 'thin':\r\n fWeight = '200';\r\n break;\r\n\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 var FontManager = function () {\r\n var maxWaitingTime = 5000;\r\n var emptyChar = {\r\n w: 0,\r\n size: 0,\r\n shapes: [],\r\n data: {\r\n shapes: []\r\n }\r\n };\r\n var combinedCharacters = []; // Hindi characters\r\n\r\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\r\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\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\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\r\n return enabledFamilies.join(',');\r\n }\r\n\r\n function setUpNode(font, family) {\r\n var parentNode = createTag('span'); // Node is invisible to screen readers.\r\n\r\n parentNode.setAttribute('aria-hidden', true);\r\n parentNode.style.fontFamily = family;\r\n var node = createTag('span'); // Characters that vary significantly among different fonts\r\n\r\n node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\r\n\r\n parentNode.style.position = 'absolute';\r\n parentNode.style.left = '-10000px';\r\n parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\r\n\r\n parentNode.style.fontSize = '300px'; // Reset any font properties\r\n\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); // Remember width with no applied web font\r\n\r\n var width = node.offsetWidth;\r\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\r\n return {\r\n node: node,\r\n w: width,\r\n parent: parentNode\r\n };\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\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\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\r\n if (node.offsetWidth !== w) {\r\n loadedCount -= 1;\r\n this.fonts[i].loaded = true;\r\n }\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(fontData, def) {\r\n var engine = document.body && def ? 'svg' : 'canvas';\r\n var helper;\r\n var fontProps = getFontProperties(fontData);\r\n\r\n if (engine === 'svg') {\r\n var tHelper = createNS('text');\r\n tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\r\n\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\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\r\n def.appendChild(tHelper);\r\n helper = tHelper;\r\n } else {\r\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\r\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\r\n helper = tCanvasHelper;\r\n }\r\n\r\n function measure(text) {\r\n if (engine === 'svg') {\r\n helper.textContent = text;\r\n return helper.getComputedTextLength();\r\n }\r\n\r\n return helper.measureText(text).width;\r\n }\r\n\r\n return {\r\n measureText: measure\r\n };\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\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 if (!document.body) {\r\n this.isLoaded = true;\r\n fontData.list.forEach(function (data) {\r\n data.helper = createHelper(data);\r\n data.cache = {};\r\n });\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\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\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\r\n fontArr[i].helper = createHelper(fontArr[i], defs);\r\n fontArr[i].cache = {};\r\n this.fonts.push(fontArr[i]);\r\n }\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\r\n if (!this.chars) {\r\n this.chars = [];\r\n }\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\r\n for (i = 0; i < len; i += 1) {\r\n j = 0;\r\n found = false;\r\n\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\r\n j += 1;\r\n }\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\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\r\n i += 1;\r\n }\r\n\r\n if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\r\n && !this._warned) {\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\r\n return emptyChar;\r\n }\r\n\r\n function measureText(_char2, fontName, size) {\r\n var fontData = this.getFontByName(fontName);\r\n\r\n var index = _char2.charCodeAt(0);\r\n\r\n if (!fontData.cache[index + 1]) {\r\n var tHelper = fontData.helper;\r\n\r\n if (_char2 === ' ') {\r\n var doubleSize = tHelper.measureText('|' + _char2 + '|');\r\n var singleSize = tHelper.measureText('||');\r\n fontData.cache[index + 1] = (doubleSize - singleSize) / 100;\r\n } else {\r\n fontData.cache[index + 1] = tHelper.measureText(_char2) / 100;\r\n }\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\r\n while (i < len) {\r\n if (this.fonts[i].fName === name) {\r\n return this.fonts[i];\r\n }\r\n\r\n i += 1;\r\n }\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\r\n return firstCharCode === zeroWidthJoiner[0] && secondCharCode === zeroWidthJoiner[1];\r\n }\r\n\r\n function isCombinedCharacter(_char3) {\r\n return combinedCharacters.indexOf(_char3) !== -1;\r\n }\r\n\r\n function setIsLoaded() {\r\n this.isLoaded = true;\r\n }\r\n\r\n var Font = function Font() {\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\r\n Font.isModifier = isModifier;\r\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\r\n Font.isCombinedCharacter = isCombinedCharacter;\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 Font.prototype = fontPrototype;\r\n return Font;\r\n }();\r\n\r\n function RenderableElement() {}\r\n\r\n RenderableElement.prototype = {\r\n initRenderable: function initRenderable() {\r\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\r\n this.isInRange = false; // layer's display state\r\n\r\n this.hidden = false; // If layer's transparency equals 0, it can be hidden\r\n\r\n this.isTransparent = false; // list of animated components\r\n\r\n this.renderableComponents = [];\r\n },\r\n addRenderableComponent: function addRenderableComponent(component) {\r\n if (this.renderableComponents.indexOf(component) === -1) {\r\n this.renderableComponents.push(component);\r\n }\r\n },\r\n removeRenderableComponent: function removeRenderableComponent(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 prepareRenderableFrame(num) {\r\n this.checkLayerLimits(num);\r\n },\r\n checkTransparency: function checkTransparency() {\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 /**\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 checkLayerLimits(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 renderRenderable() {\r\n var i;\r\n var len = this.renderableComponents.length;\r\n\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 },\r\n sourceRectAtTime: function sourceRectAtTime() {\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 getLayerSize() {\r\n if (this.data.ty === 5) {\r\n return {\r\n w: this.data.textData.width,\r\n h: this.data.textData.height\r\n };\r\n }\r\n\r\n return {\r\n w: this.data.width,\r\n h: this.data.height\r\n };\r\n }\r\n };\r\n\r\n var 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 return function (mode) {\r\n return blendModeEnums[mode] || '';\r\n };\r\n }();\r\n\r\n function SliderEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n }\r\n\r\n function AngleEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n }\r\n\r\n function ColorEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\r\n }\r\n\r\n function PointEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\r\n }\r\n\r\n function LayerIndexEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n }\r\n\r\n function MaskIndexEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n }\r\n\r\n function CheckboxEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n }\r\n\r\n function NoValueEffect() {\r\n this.p = {};\r\n }\r\n\r\n function 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\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\n function GroupEffect(data, element) {\r\n this.init(data, element);\r\n }\r\n\r\n extendPrototype([DynamicPropertyContainer], GroupEffect);\r\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\r\n\r\n GroupEffect.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\r\n for (i = 0; i < len; i += 1) {\r\n eff = null;\r\n\r\n switch (effects[i].ty) {\r\n case 0:\r\n eff = new SliderEffect(effects[i], element, this);\r\n break;\r\n\r\n case 1:\r\n eff = new AngleEffect(effects[i], element, this);\r\n break;\r\n\r\n case 2:\r\n eff = new ColorEffect(effects[i], element, this);\r\n break;\r\n\r\n case 3:\r\n eff = new PointEffect(effects[i], element, this);\r\n break;\r\n\r\n case 4:\r\n case 7:\r\n eff = new CheckboxEffect(effects[i], element, this);\r\n break;\r\n\r\n case 10:\r\n eff = new LayerIndexEffect(effects[i], element, this);\r\n break;\r\n\r\n case 11:\r\n eff = new MaskIndexEffect(effects[i], element, this);\r\n break;\r\n\r\n case 5:\r\n eff = new EffectsManager(effects[i], element, this);\r\n break;\r\n // case 6:\r\n\r\n default:\r\n eff = new NoValueEffect(effects[i], element, this);\r\n break;\r\n }\r\n\r\n if (eff) {\r\n this.effectElements.push(eff);\r\n }\r\n }\r\n };\r\n\r\n function BaseElement() {}\r\n\r\n BaseElement.prototype = {\r\n checkMasks: function checkMasks() {\r\n if (!this.data.hasMask) {\r\n return false;\r\n }\r\n\r\n var i = 0;\r\n var len = this.data.masksProperties.length;\r\n\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\r\n i += 1;\r\n }\r\n\r\n return false;\r\n },\r\n initExpressions: function initExpressions() {\r\n var expressionsInterfaces = getExpressionInterfaces();\r\n\r\n if (!expressionsInterfaces) {\r\n return;\r\n }\r\n\r\n var LayerExpressionInterface = expressionsInterfaces('layer');\r\n var EffectsExpressionInterface = expressionsInterfaces('effects');\r\n var ShapeExpressionInterface = expressionsInterfaces('shape');\r\n var TextExpressionInterface = expressionsInterfaces('text');\r\n var CompExpressionInterface = expressionsInterfaces('comp');\r\n this.layerInterface = LayerExpressionInterface(this);\r\n\r\n if (this.data.hasMask && this.maskManager) {\r\n this.layerInterface.registerMaskInterface(this.maskManager);\r\n }\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 setBlendMode() {\r\n var blendModeValue = getBlendMode(this.data.bm);\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style['mix-blend-mode'] = blendModeValue;\r\n },\r\n initBaseData: function initBaseData(data, globalData, comp) {\r\n this.globalData = globalData;\r\n this.comp = comp;\r\n this.data = data;\r\n this.layerId = createElementID(); // Stretch factor for old animations missing this property.\r\n\r\n if (!this.data.sr) {\r\n this.data.sr = 1;\r\n } // effects manager\r\n\r\n\r\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\r\n },\r\n getType: function getType() {\r\n return this.type;\r\n },\r\n sourceRectAtTime: function sourceRectAtTime() {}\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 function FrameElement() {}\r\n\r\n FrameElement.prototype = {\r\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\r\n initFrame: function initFrame() {\r\n // set to true when inpoint is rendered\r\n this._isFirstFrame = false; // list of animated properties\r\n\r\n this.dynamicProperties = []; // If layer has been modified in current tick this will be true\r\n\r\n this._mdf = false;\r\n },\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 prepareProperties(num, isVisible) {\r\n var i;\r\n var len = this.dynamicProperties.length;\r\n\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\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 addDynamicProperty(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 function 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\n FootageElement.prototype.prepareFrame = function () {};\r\n\r\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\r\n\r\n FootageElement.prototype.getBaseElement = function () {\r\n return null;\r\n };\r\n\r\n FootageElement.prototype.renderFrame = function () {};\r\n\r\n FootageElement.prototype.destroy = function () {};\r\n\r\n FootageElement.prototype.initExpressions = function () {\r\n var expressionsInterfaces = getExpressionInterfaces();\r\n\r\n if (!expressionsInterfaces) {\r\n return;\r\n }\r\n\r\n var FootageInterface = expressionsInterfaces('footage');\r\n this.layerInterface = FootageInterface(this);\r\n };\r\n\r\n FootageElement.prototype.getFootageData = function () {\r\n return this.footageData;\r\n };\r\n\r\n function 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._volumeMultiplier = 1;\r\n this._volume = 1;\r\n this._previousVolume = null;\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\r\n _placeholder: true\r\n };\r\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\r\n k: [100]\r\n }, 1, 0.01, this);\r\n }\r\n\r\n AudioElement.prototype.prepareFrame = function (num) {\r\n this.prepareRenderableFrame(num, true);\r\n this.prepareProperties(num, true);\r\n\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 this._volume = this.lv.v[0];\r\n var totalVolume = this._volume * this._volumeMultiplier;\r\n\r\n if (this._previousVolume !== totalVolume) {\r\n this._previousVolume = totalVolume;\r\n this.audio.volume(totalVolume);\r\n }\r\n };\r\n\r\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\r\n\r\n AudioElement.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() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\r\n this.audio.seek(this._currentTime / this.globalData.frameRate);\r\n }\r\n }\r\n };\r\n\r\n AudioElement.prototype.show = function () {// this.audio.play()\r\n };\r\n\r\n AudioElement.prototype.hide = function () {\r\n this.audio.pause();\r\n this._isPlaying = false;\r\n };\r\n\r\n AudioElement.prototype.pause = function () {\r\n this.audio.pause();\r\n this._isPlaying = false;\r\n this._canPlay = false;\r\n };\r\n\r\n AudioElement.prototype.resume = function () {\r\n this._canPlay = true;\r\n };\r\n\r\n AudioElement.prototype.setRate = function (rateValue) {\r\n this.audio.rate(rateValue);\r\n };\r\n\r\n AudioElement.prototype.volume = function (volumeValue) {\r\n this._volumeMultiplier = volumeValue;\r\n this._previousVolume = volumeValue * this._volume;\r\n this.audio.volume(this._previousVolume);\r\n };\r\n\r\n AudioElement.prototype.getBaseElement = function () {\r\n return null;\r\n };\r\n\r\n AudioElement.prototype.destroy = function () {};\r\n\r\n AudioElement.prototype.sourceRectAtTime = function () {};\r\n\r\n AudioElement.prototype.initExpressions = function () {};\r\n\r\n function BaseRenderer() {}\r\n\r\n BaseRenderer.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\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (!this.elements[i]) {\r\n data = this.layers[i];\r\n\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\r\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\r\n }\r\n\r\n this.checkPendingElements();\r\n };\r\n\r\n BaseRenderer.prototype.createItem = function (layer) {\r\n switch (layer.ty) {\r\n case 2:\r\n return this.createImage(layer);\r\n\r\n case 0:\r\n return this.createComp(layer);\r\n\r\n case 1:\r\n return this.createSolid(layer);\r\n\r\n case 3:\r\n return this.createNull(layer);\r\n\r\n case 4:\r\n return this.createShape(layer);\r\n\r\n case 5:\r\n return this.createText(layer);\r\n\r\n case 6:\r\n return this.createAudio(layer);\r\n\r\n case 13:\r\n return this.createCamera(layer);\r\n\r\n case 15:\r\n return this.createFootage(layer);\r\n\r\n default:\r\n return this.createNull(layer);\r\n }\r\n };\r\n\r\n BaseRenderer.prototype.createCamera = function () {\r\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\r\n };\r\n\r\n BaseRenderer.prototype.createAudio = function (data) {\r\n return new AudioElement(data, this.globalData, this);\r\n };\r\n\r\n BaseRenderer.prototype.createFootage = function (data) {\r\n return new FootageElement(data, this.globalData, this);\r\n };\r\n\r\n BaseRenderer.prototype.buildAllItems = function () {\r\n var i;\r\n var len = this.layers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.buildItem(i);\r\n }\r\n\r\n this.checkPendingElements();\r\n };\r\n\r\n BaseRenderer.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\r\n for (i = 0; i < len; i += 1) {\r\n j = 0;\r\n\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\r\n j += 1;\r\n }\r\n }\r\n };\r\n\r\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\r\n this.globalData.projectInterface = pInterface;\r\n };\r\n\r\n BaseRenderer.prototype.initItems = function () {\r\n if (!this.globalData.progressiveLoad) {\r\n this.buildAllItems();\r\n }\r\n };\r\n\r\n BaseRenderer.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\r\n while (i < len) {\r\n if (layers[i].ind == parentName) {\r\n // 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\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\r\n i += 1;\r\n }\r\n };\r\n\r\n BaseRenderer.prototype.addPendingElement = function (element) {\r\n this.pendingElements.push(element);\r\n };\r\n\r\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\r\n var i;\r\n var len = assets.length;\r\n\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\n BaseRenderer.prototype.getElementByPath = function (path) {\r\n var pathValue = path.shift();\r\n var element;\r\n\r\n if (typeof pathValue === 'number') {\r\n element = this.elements[pathValue];\r\n } else {\r\n var i;\r\n var len = this.elements.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.elements[i].data.nm === pathValue) {\r\n element = this.elements[i];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (path.length === 0) {\r\n return element;\r\n }\r\n\r\n return element.getElementByPath(path);\r\n };\r\n\r\n BaseRenderer.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 function TransformElement() {}\r\n\r\n TransformElement.prototype = {\r\n initTransform: function initTransform() {\r\n this.finalTransform = {\r\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\r\n o: 0\r\n },\r\n _matMdf: false,\r\n _opMdf: false,\r\n mat: new Matrix()\r\n };\r\n\r\n if (this.data.ao) {\r\n this.finalTransform.mProp.autoOriented = true;\r\n } // TODO: check TYPE 11: Guided elements\r\n\r\n\r\n if (this.data.ty !== 11) {// this.createElements();\r\n }\r\n },\r\n renderTransform: function renderTransform() {\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; // Checking if any of the transformation matrices in the hierarchy chain has changed.\r\n\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\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\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 globalToLocal(pt) {\r\n var transforms = [];\r\n transforms.push(this.finalTransform);\r\n var flag = true;\r\n var comp = this.comp;\r\n\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\r\n comp = comp.comp;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n\r\n var i;\r\n var len = transforms.length;\r\n var ptNew;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\r\n\r\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\r\n }\r\n\r\n return pt;\r\n },\r\n mHelper: new Matrix()\r\n };\r\n\r\n function 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 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\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\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 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 } // TODO move this to a factory or to a constructor\r\n\r\n\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\r\n if (properties[i].mode === 'i') {\r\n jLen = currentMasks.length;\r\n var g = createNS('g');\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n g.appendChild(currentMasks[j]);\r\n }\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(' + getLocationHref() + '#' + layerId + '_' + count + ')');\r\n currentMasks.length = 0;\r\n currentMasks.push(g);\r\n } else {\r\n currentMasks.push(path);\r\n }\r\n\r\n if (properties[i].inv && !this.solidPath) {\r\n this.solidPath = this.createLayerSolidPath();\r\n } // TODO move this to a factory or to a constructor\r\n\r\n\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\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 len = currentMasks.length;\r\n\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(' + getLocationHref() + '#' + layerId + ')');\r\n defs.appendChild(this.maskElement);\r\n }\r\n\r\n if (this.viewData.length) {\r\n this.element.addRenderableComponent(this);\r\n }\r\n }\r\n\r\n MaskElement.prototype.getMaskProperty = function (pos) {\r\n return this.viewData[pos].prop;\r\n };\r\n\r\n MaskElement.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\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\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\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\r\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\r\n var feMorph = this.storedData[i].expan;\r\n\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(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\r\n }\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\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\n MaskElement.prototype.getMaskelement = function () {\r\n return this.maskElement;\r\n };\r\n\r\n MaskElement.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\n MaskElement.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\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 } // 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\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 } // pathNodes.__renderedString = pathString;\r\n\r\n\r\n if (viewData.lastPath !== pathString) {\r\n var pathShapeValue = '';\r\n\r\n if (viewData.elem) {\r\n if (pathNodes.c) {\r\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\r\n }\r\n\r\n viewData.elem.setAttribute('d', pathShapeValue);\r\n }\r\n\r\n viewData.lastPath = pathString;\r\n }\r\n };\r\n\r\n MaskElement.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 var 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\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\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 var featureSupport = function () {\r\n var ob = {\r\n maskType: true\r\n };\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\r\n return ob;\r\n }();\r\n\r\n var registeredEffects = {};\r\n var idPrefix = 'filter_result_';\r\n\r\n function SVGEffects(elem) {\r\n var i;\r\n var source = 'SourceGraphic';\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\r\n for (i = 0; i < len; i += 1) {\r\n filterManager = null;\r\n var type = elem.data.ef[i].ty;\r\n\r\n if (registeredEffects[type]) {\r\n var Effect = registeredEffects[type].effect;\r\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\r\n source = idPrefix + count;\r\n\r\n if (registeredEffects[type].countsAsEffect) {\r\n count += 1;\r\n }\r\n }\r\n\r\n if (filterManager) {\r\n this.filters.push(filterManager);\r\n }\r\n }\r\n\r\n if (count) {\r\n elem.globalData.defs.appendChild(fil);\r\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\r\n }\r\n\r\n if (this.filters.length) {\r\n elem.addRenderableComponent(this);\r\n }\r\n }\r\n\r\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\r\n var i;\r\n var len = this.filters.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.filters[i].renderFrame(_isFirstFrame);\r\n }\r\n };\r\n\r\n function registerEffect(id, effect, countsAsEffect) {\r\n registeredEffects[id] = {\r\n effect: effect,\r\n countsAsEffect: countsAsEffect\r\n };\r\n }\r\n\r\n function SVGBaseElement() {}\r\n\r\n SVGBaseElement.prototype = {\r\n initRendererElement: function initRendererElement() {\r\n this.layerElement = createNS('g');\r\n },\r\n createContainerElements: function createContainerElements() {\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; // If this layer acts as a mask for the following layer\r\n\r\n if (this.data.td) {\r\n this.matteMasks = {};\r\n var symbolElement = createNS('symbol');\r\n symbolElement.setAttribute('id', this.layerId);\r\n var gg = createNS('g');\r\n gg.appendChild(this.layerElement);\r\n symbolElement.appendChild(gg);\r\n layerElementParent = gg;\r\n this.globalData.defs.appendChild(symbolElement);\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\r\n if (this.data.ln) {\r\n this.layerElement.setAttribute('id', this.data.ln);\r\n }\r\n\r\n if (this.data.cl) {\r\n this.layerElement.setAttribute('class', this.data.cl);\r\n } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\r\n\r\n\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(' + getLocationHref() + '#' + clipId + ')');\r\n cpGroup.appendChild(this.layerElement);\r\n this.transformedElement = cpGroup;\r\n\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(' + getLocationHref() + '#' + clipId + ')');\r\n }\r\n }\r\n\r\n if (this.data.bm !== 0) {\r\n this.setBlendMode();\r\n }\r\n },\r\n renderElement: function renderElement() {\r\n if (this.finalTransform._matMdf) {\r\n this.transformedElement.setAttribute('transform', this.finalTransform.mat.to2dCSS());\r\n }\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 destroyBaseElement() {\r\n this.layerElement = null;\r\n this.matteElement = null;\r\n this.maskManager.destroy();\r\n },\r\n getBaseElement: function getBaseElement() {\r\n if (this.data.hd) {\r\n return null;\r\n }\r\n\r\n return this.baseElement;\r\n },\r\n createRenderableComponents: function createRenderableComponents() {\r\n this.maskManager = new MaskElement(this.data, this, this.globalData);\r\n this.renderableEffectsManager = new SVGEffects(this);\r\n },\r\n getMatte: function getMatte(matteType) {\r\n if (!this.matteMasks[matteType]) {\r\n var id = this.layerId + '_' + matteType;\r\n var filId;\r\n var fil;\r\n var useElement;\r\n var gg;\r\n\r\n if (matteType === 1 || matteType === 3) {\r\n var masker = createNS('mask');\r\n masker.setAttribute('id', id);\r\n masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\r\n useElement = createNS('use');\r\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\r\n masker.appendChild(useElement);\r\n this.globalData.defs.appendChild(masker);\r\n\r\n if (!featureSupport.maskType && matteType === 1) {\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(useElement);\r\n masker.appendChild(gg);\r\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\r\n }\r\n } else if (matteType === 2) {\r\n var maskGroup = createNS('mask');\r\n maskGroup.setAttribute('id', id);\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 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(' + getLocationHref() + '#' + filId + ')');\r\n maskGrouper.appendChild(alphaRect);\r\n useElement = createNS('use');\r\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\r\n maskGrouper.appendChild(useElement);\r\n\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 maskGrouper.appendChild(gg);\r\n }\r\n\r\n this.globalData.defs.appendChild(maskGroup);\r\n }\r\n\r\n this.matteMasks[matteType] = id;\r\n }\r\n\r\n return this.matteMasks[matteType];\r\n },\r\n setMatte: function setMatte(id) {\r\n if (!this.matteElement) {\r\n return;\r\n }\r\n\r\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\r\n }\r\n };\r\n\r\n /**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\r\n function HierarchyElement() {}\r\n\r\n HierarchyElement.prototype = {\r\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\r\n initHierarchy: function initHierarchy() {\r\n // element's parent list\r\n this.hierarchy = []; // if element is parent of another layer _isParent will be true\r\n\r\n this._isParent = false;\r\n this.checkParenting();\r\n },\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 setHierarchy(hierarchy) {\r\n this.hierarchy = hierarchy;\r\n },\r\n\r\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\r\n setAsParent: function setAsParent() {\r\n this._isParent = true;\r\n },\r\n\r\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\r\n checkParenting: function checkParenting() {\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 function RenderableDOMElement() {}\r\n\r\n (function () {\r\n var _prototype = {\r\n initElement: function initElement(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 hide() {\r\n // console.log('HIDE', this);\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 show() {\r\n // console.log('SHOW', this);\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\r\n this.hidden = false;\r\n this._isFirstFrame = true;\r\n }\r\n },\r\n renderFrame: function renderFrame() {\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\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.renderElement();\r\n this.renderInnerContent();\r\n\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n renderInnerContent: function renderInnerContent() {},\r\n prepareFrame: function prepareFrame(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 destroy() {\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 function 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,\r\n left: 0,\r\n width: this.assetData.w,\r\n height: this.assetData.h\r\n };\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\r\n\r\n IImageElement.prototype.createContent = function () {\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\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 this.layerElement.appendChild(this.innerElem);\r\n };\r\n\r\n IImageElement.prototype.sourceRectAtTime = function () {\r\n return this.sourceRect;\r\n };\r\n\r\n function ProcessedElement(element, position) {\r\n this.elem = element;\r\n this.pos = position;\r\n }\r\n\r\n function IShapeElement() {}\r\n\r\n IShapeElement.prototype = {\r\n addShapeToModifiers: function addShapeToModifiers(data) {\r\n var i;\r\n var len = this.shapeModifiers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.shapeModifiers[i].addShape(data);\r\n }\r\n },\r\n isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\r\n var i = 0;\r\n var len = this.shapeModifiers.length;\r\n\r\n while (i < len) {\r\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n },\r\n renderModifiers: function renderModifiers() {\r\n if (!this.shapeModifiers.length) {\r\n return;\r\n }\r\n\r\n var i;\r\n var len = this.shapes.length;\r\n\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\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // 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\r\n if (shouldBreakProcess) {\r\n break;\r\n }\r\n }\r\n },\r\n searchProcessedElement: function searchProcessedElement(elem) {\r\n var elements = this.processedElements;\r\n var i = 0;\r\n var len = elements.length;\r\n\r\n while (i < len) {\r\n if (elements[i].elem === elem) {\r\n return elements[i].pos;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return 0;\r\n },\r\n addProcessedElement: function addProcessedElement(elem, pos) {\r\n var elements = this.processedElements;\r\n var i = elements.length;\r\n\r\n while (i) {\r\n i -= 1;\r\n\r\n if (elements[i].elem === elem) {\r\n elements[i].pos = pos;\r\n return;\r\n }\r\n }\r\n\r\n elements.push(new ProcessedElement(elem, pos));\r\n },\r\n prepareFrame: function prepareFrame(num) {\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n }\r\n };\r\n\r\n var lineCapEnum = {\r\n 1: 'butt',\r\n 2: 'round',\r\n 3: 'square'\r\n };\r\n var lineJoinEnum = {\r\n 1: 'miter',\r\n 2: 'round',\r\n 3: 'bevel'\r\n };\r\n\r\n function 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; // 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\r\n this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\r\n\r\n var i = 0;\r\n var len = transformers.length;\r\n\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\r\n i += 1;\r\n }\r\n }\r\n\r\n SVGShapeData.prototype.setAsAnimated = function () {\r\n this._isAnimated = true;\r\n };\r\n\r\n function 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\n SVGStyleData.prototype.reset = function () {\r\n this.d = '';\r\n this._mdf = false;\r\n };\r\n\r\n function 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\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] = {\r\n n: data[i].n,\r\n p: prop\r\n };\r\n }\r\n\r\n if (!this.k) {\r\n this.getValue(true);\r\n }\r\n\r\n this._isAnimated = this.k;\r\n }\r\n\r\n DashProperty.prototype.getValue = function (forceRender) {\r\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\r\n return;\r\n }\r\n\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n this._mdf = this._mdf || forceRender;\r\n\r\n if (this._mdf) {\r\n var i = 0;\r\n var len = this.dataProps.length;\r\n\r\n if (this.renderer === 'svg') {\r\n this.dashStr = '';\r\n }\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\n\r\n extendPrototype([DynamicPropertyContainer], DashProperty);\r\n\r\n function 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\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\r\n\r\n function 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\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\r\n\r\n function SVGNoStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.style = styleOb;\r\n }\r\n\r\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\r\n\r\n function 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\n GradientProperty.prototype.comparePoints = function (values, points) {\r\n var i = 0;\r\n var len = this.o.length / 2;\r\n var diff;\r\n\r\n while (i < len) {\r\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\r\n\r\n if (diff > 0.01) {\r\n return false;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n GradientProperty.prototype.checkCollapsable = function () {\r\n if (this.o.length / 2 !== this.c.length / 4) {\r\n return false;\r\n }\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\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\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\r\n return true;\r\n };\r\n\r\n GradientProperty.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\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\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\r\n if (this.c[i] !== val) {\r\n this.c[i] = val;\r\n this._cmdf = !forceRender;\r\n }\r\n }\r\n\r\n if (this.o.length) {\r\n len = this.prop.v.length;\r\n\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\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\r\n this._mdf = !forceRender;\r\n }\r\n };\r\n\r\n extendPrototype([DynamicPropertyContainer], GradientProperty);\r\n\r\n function 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\n SVGGradientFillStyleData.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 || {\r\n k: 0\r\n }, 0, 0.01, this);\r\n this.a = PropertyFactory.getProp(elem, data.a || {\r\n k: 0\r\n }, 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\n SVGGradientFillStyleData.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\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\r\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\r\n this.gf = gfill;\r\n this.cst = stops;\r\n };\r\n\r\n SVGGradientFillStyleData.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\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\r\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\r\n\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\r\n if (data.lj === 1) {\r\n maskElement.setAttribute('stroke-miterlimit', data.ml);\r\n }\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\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\r\n\r\n function 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\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\r\n\r\n function ShapeGroupData() {\r\n this.it = [];\r\n this.prevViewData = [];\r\n this.gr = createNS('g');\r\n }\r\n\r\n function 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 var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\r\n if (length === 0) {\r\n return '';\r\n }\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\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\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\r\n return shapeString;\r\n };\r\n\r\n var SVGElementsRenderer = function () {\r\n var _identityMatrix = new Matrix();\r\n\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\r\n case 'gf':\r\n return renderGradient;\r\n\r\n case 'gs':\r\n return renderGradientStroke;\r\n\r\n case 'st':\r\n return renderStroke;\r\n\r\n case 'sh':\r\n case 'el':\r\n case 'rc':\r\n case 'sr':\r\n return renderPath;\r\n\r\n case 'tr':\r\n return renderContentTransform;\r\n\r\n case 'no':\r\n return renderNoop;\r\n\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\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 renderNoop() {}\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\r\n for (l = 0; l < lLen; l += 1) {\r\n redraw = itemData.sh._mdf || isFirstFrame;\r\n\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\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\r\n if (redraw) {\r\n iterations = lvl - itemData.styles[l].lvl;\r\n k = itemData.transformers.length - 1;\r\n\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\r\n paths = itemData.sh.paths;\r\n jLen = paths._length;\r\n\r\n if (redraw) {\r\n pathStringTransformed = '';\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n pathNodes = paths.shapes[j];\r\n\r\n if (pathNodes && pathNodes._length) {\r\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\r\n }\r\n }\r\n\r\n itemData.caches[l] = pathStringTransformed;\r\n } else {\r\n pathStringTransformed = itemData.caches[l];\r\n }\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\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\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\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\r\n var stops;\r\n var i;\r\n var len;\r\n var stop;\r\n\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\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\r\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\r\n var oValues = itemData.g.o;\r\n\r\n if (itemData.g._collapsable) {\r\n stops = itemData.cst;\r\n } else {\r\n stops = itemData.ost;\r\n }\r\n\r\n len = stops.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n stop = stops[i];\r\n\r\n if (!itemData.g._collapsable) {\r\n stop.setAttribute('offset', oValues[i * 2] + '%');\r\n }\r\n\r\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\r\n }\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\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\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\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('r', rad);\r\n }\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\r\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\r\n var percent = itemData.h.v;\r\n\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\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\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 } // gfill.setAttribute('fy','200');\r\n\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\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\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\r\n if (itemData.o._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\r\n }\r\n\r\n if (itemData.w._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\r\n\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 function SVGShapeElement(data, globalData, comp) {\r\n // List of drawable elements\r\n this.shapes = []; // Full shape data\r\n\r\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\r\n\r\n this.stylesList = []; // List of modifiers that will be applied to shapes\r\n\r\n this.shapeModifiers = []; // List of items in shape tree\r\n\r\n this.itemsData = []; // List of items in previous shape tree\r\n\r\n this.processedElements = []; // List of animated components\r\n\r\n this.animatedContents = [];\r\n this.initElement(data, globalData, comp); // 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\r\n this.prevViewData = []; // 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\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\r\n\r\n SVGShapeElement.prototype.initSecondaryElement = function () {};\r\n\r\n SVGShapeElement.prototype.identityMatrix = new Matrix();\r\n\r\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\r\n\r\n SVGShapeElement.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 This method searches for multiple shapes that affect a single element and one of them is animated\r\n */\r\n\r\n\r\n SVGShapeElement.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\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\r\n for (i = 0; i < len; i += 1) {\r\n shape = this.shapes[i];\r\n\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\r\n if (tempShapes.length > 1 && areAnimated) {\r\n this.setShapesAsAnimated(tempShapes);\r\n }\r\n }\r\n };\r\n\r\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\r\n var i;\r\n var len = shapes.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n shapes[i].setAsAnimated();\r\n }\r\n };\r\n\r\n SVGShapeElement.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 var pathElement = styleOb.pElem;\r\n\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\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(' + getLocationHref() + '#' + elementData.maskId + ')');\r\n }\r\n } else if (data.ty === 'no') {\r\n elementData = new SVGNoStyleData(this, data, styleOb);\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\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\r\n if (data.cl) {\r\n pathElement.setAttribute('class', data.cl);\r\n }\r\n\r\n if (data.bm) {\r\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n }\r\n\r\n this.stylesList.push(styleOb);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n };\r\n\r\n SVGShapeElement.prototype.createGroupElement = function (data) {\r\n var elementData = new ShapeGroupData();\r\n\r\n if (data.ln) {\r\n elementData.gr.setAttribute('id', data.ln);\r\n }\r\n\r\n if (data.cl) {\r\n elementData.gr.setAttribute('class', data.cl);\r\n }\r\n\r\n if (data.bm) {\r\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n }\r\n\r\n return elementData;\r\n };\r\n\r\n SVGShapeElement.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\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\r\n var ty = 4;\r\n\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\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\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\r\n var i = 0;\r\n var len = this.animatedContents.length;\r\n\r\n while (i < len) {\r\n if (this.animatedContents[i].element === element) {\r\n return;\r\n }\r\n\r\n i += 1;\r\n }\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\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\r\n var arr = elementData.styles;\r\n var j;\r\n var jLen = this.stylesList.length;\r\n\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\n SVGShapeElement.prototype.reloadShapes = function () {\r\n this._isFirstFrame = true;\r\n var i;\r\n var len = this.itemsData.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.prevViewData[i] = this.itemsData[i];\r\n }\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\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n }\r\n\r\n this.renderModifiers();\r\n };\r\n\r\n SVGShapeElement.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\r\n for (i = len; i >= 0; i -= 1) {\r\n processedPos = this.searchProcessedElement(arr[i]);\r\n\r\n if (!processedPos) {\r\n arr[i]._render = render;\r\n } else {\r\n itemsData[i] = prevViewData[processedPos - 1];\r\n }\r\n\r\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\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\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\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\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\r\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\r\n\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\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\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' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\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\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\r\n ownModifiers.push(modifier);\r\n }\r\n\r\n this.addProcessedElement(arr[i], i + 1);\r\n }\r\n\r\n len = ownStyles.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ownStyles[i].closed = true;\r\n }\r\n\r\n len = ownModifiers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ownModifiers[i].closed = true;\r\n }\r\n };\r\n\r\n SVGShapeElement.prototype.renderInnerContent = function () {\r\n this.renderModifiers();\r\n var i;\r\n var len = this.stylesList.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.stylesList[i].reset();\r\n }\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); // Adding M0 0 fixes same mask bug on all browsers\r\n\r\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\r\n }\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\n SVGShapeElement.prototype.renderShape = function () {\r\n var i;\r\n var len = this.animatedContents.length;\r\n var animatedContent;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n animatedContent = this.animatedContents[i];\r\n\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\n SVGShapeElement.prototype.destroy = function () {\r\n this.destroyBaseElement();\r\n this.shapesData = null;\r\n this.itemsData = null;\r\n };\r\n\r\n function 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\n LetterProps.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\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\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\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\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\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\r\n return updated;\r\n };\r\n\r\n function 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 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\n TextProperty.prototype.defaultBoxWidth = [0, 0];\r\n\r\n TextProperty.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\r\n return obj;\r\n };\r\n\r\n TextProperty.prototype.setCurrentData = function (data) {\r\n if (!data.__complete) {\r\n this.completeTextData(data);\r\n }\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\n TextProperty.prototype.searchProperty = function () {\r\n return this.searchKeyframes();\r\n };\r\n\r\n TextProperty.prototype.searchKeyframes = function () {\r\n this.kf = this.data.d.k.length > 1;\r\n\r\n if (this.kf) {\r\n this.addEffect(this.getKeyframeValue.bind(this));\r\n }\r\n\r\n return this.kf;\r\n };\r\n\r\n TextProperty.prototype.addEffect = function (effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.elem.addDynamicProperty(this);\r\n };\r\n\r\n TextProperty.prototype.getValue = function (_finalValue) {\r\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\r\n return;\r\n }\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\r\n if (this.lock) {\r\n this.setCurrentData(this.currentData);\r\n return;\r\n }\r\n\r\n this.lock = true;\r\n this._mdf = false;\r\n var i;\r\n var len = this.effectsSequence.length;\r\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\r\n\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\r\n if (currentValue !== finalValue) {\r\n this.setCurrentData(finalValue);\r\n }\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\n TextProperty.prototype.getKeyframeValue = function () {\r\n var textKeys = this.data.d.k;\r\n var frameNum = this.elem.comp.renderedFrame;\r\n var i = 0;\r\n var len = textKeys.length;\r\n\r\n while (i <= len - 1) {\r\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\r\n break;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n if (this.keysIndex !== i) {\r\n this.keysIndex = i;\r\n }\r\n\r\n return this.data.d.k[this.keysIndex].s;\r\n };\r\n\r\n TextProperty.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\r\n while (i < len) {\r\n charCode = text.charCodeAt(i);\r\n\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\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\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\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\r\n i += 1;\r\n }\r\n\r\n return charactersArray;\r\n };\r\n\r\n TextProperty.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;\r\n var len;\r\n var newLineFlag;\r\n var index = 0;\r\n var val;\r\n var anchorGrouping = data.m.g;\r\n var currentSize = 0;\r\n var currentPos = 0;\r\n var currentLine = 0;\r\n var lineWidths = [];\r\n var lineWidth = 0;\r\n var maxLineWidth = 0;\r\n var j;\r\n var jLen;\r\n var fontData = fontManager.getFontByName(documentData.f);\r\n var charData;\r\n var cLength = 0;\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\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;\r\n var finalText;\r\n\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\r\n for (i = 0; i < len; i += 1) {\r\n charCode = finalText[i].charCodeAt(0);\r\n newLineFlag = false;\r\n\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\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\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\r\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\r\n\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\r\n currentHeight += fontData.ascent * documentData.finalSize / 100;\r\n\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\r\n lineWidth = -trackingOffset;\r\n cLength = 0;\r\n var uncollapsedSpaces = 0;\r\n var currentChar;\r\n\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\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\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\r\n letters.push({\r\n l: cLength,\r\n an: cLength,\r\n add: currentSize,\r\n n: newLineFlag,\r\n anIndexes: [],\r\n val: val,\r\n line: currentLine,\r\n animatorJustifyOffset: 0\r\n });\r\n\r\n if (anchorGrouping == 2) {\r\n // eslint-disable-line eqeqeq\r\n currentSize += cLength;\r\n\r\n if (val === '' || val === ' ' || i === len - 1) {\r\n if (val === '' || val === ' ') {\r\n currentSize -= cLength;\r\n }\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\r\n index += 1;\r\n currentSize = 0;\r\n }\r\n } else if (anchorGrouping == 3) {\r\n // eslint-disable-line eqeqeq\r\n currentSize += cLength;\r\n\r\n if (val === '' || i === len - 1) {\r\n if (val === '') {\r\n currentSize -= cLength;\r\n }\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\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\r\n documentData.l = letters;\r\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n lineWidths.push(lineWidth);\r\n\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\r\n switch (documentData.j) {\r\n case 1:\r\n documentData.justifyOffset = -documentData.boxWidth;\r\n break;\r\n\r\n case 2:\r\n documentData.justifyOffset = -documentData.boxWidth / 2;\r\n break;\r\n\r\n default:\r\n documentData.justifyOffset = 0;\r\n }\r\n }\r\n\r\n documentData.lineWidths = lineWidths;\r\n var animators = data.a;\r\n var animatorData;\r\n var letterData;\r\n jLen = animators.length;\r\n var based;\r\n var ind;\r\n var indexes = [];\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorData = animators[j];\r\n\r\n if (animatorData.a.sc) {\r\n documentData.strokeColorAnim = true;\r\n }\r\n\r\n if (animatorData.a.sw) {\r\n documentData.strokeWidthAnim = true;\r\n }\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\r\n ind = 0;\r\n based = animatorData.s.b;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n letterData = letters[i];\r\n letterData.anIndexes[j] = ind;\r\n\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)) {\r\n // eslint-disable-line eqeqeq\r\n if (animatorData.s.rn === 1) {\r\n indexes.push(ind);\r\n }\r\n\r\n ind += 1;\r\n }\r\n }\r\n\r\n data.a[j].s.totalChars = ind;\r\n var currentInd = -1;\r\n var newInd;\r\n\r\n if (animatorData.s.rn === 1) {\r\n for (i = 0; i < len; i += 1) {\r\n letterData = letters[i];\r\n\r\n if (currentInd != letterData.anIndexes[j]) {\r\n // 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\r\n letterData.anIndexes[j] = newInd;\r\n }\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\n TextProperty.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\n TextProperty.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\n TextProperty.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\n TextProperty.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 var 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 || {\r\n k: 0\r\n }, 0, 0, this);\r\n\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 = {\r\n v: 100\r\n };\r\n }\r\n\r\n this.o = PropertyFactory.getProp(elem, data.o || {\r\n k: 0\r\n }, 0, 0, this);\r\n this.xe = PropertyFactory.getProp(elem, data.xe || {\r\n k: 0\r\n }, 0, 0, this);\r\n this.ne = PropertyFactory.getProp(elem, data.ne || {\r\n k: 0\r\n }, 0, 0, this);\r\n this.sm = PropertyFactory.getProp(elem, data.sm || {\r\n k: 100\r\n }, 0, 0, this);\r\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\r\n\r\n if (!this.dynamicProperties.length) {\r\n this.getValue();\r\n }\r\n }\r\n\r\n TextSelectorPropFactory.prototype = {\r\n getMult: function getMult(ind) {\r\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\r\n this.getValue();\r\n }\r\n\r\n var x1 = 0;\r\n var y1 = 0;\r\n var x2 = 1;\r\n var y2 = 1;\r\n\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\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\r\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\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\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\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\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\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\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\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\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\r\n mult = easer(mult);\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\r\n\r\n if (this.sm.v !== 100) {\r\n var smoothness = this.sm.v * 0.01;\r\n\r\n if (smoothness === 0) {\r\n smoothness = 0.00000001;\r\n }\r\n\r\n var threshold = 0.5 - smoothness * 0.5;\r\n\r\n if (mult < threshold) {\r\n mult = 0;\r\n } else {\r\n mult = (mult - threshold) / smoothness;\r\n\r\n if (mult > 1) {\r\n mult = 1;\r\n }\r\n }\r\n }\r\n\r\n return mult * this.a.v;\r\n },\r\n getValue: function getValue(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\r\n if (newCharsFlag && this.data.r === 2) {\r\n this.e.v = this._currentTextLength;\r\n }\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\r\n if (s > e) {\r\n var _s = s;\r\n s = e;\r\n e = _s;\r\n }\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 function TextAnimatorDataProperty(elem, animatorProps, container) {\r\n var defaultData = {\r\n propType: false\r\n };\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 this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\r\n this.s.t = animatorProps.s.t;\r\n }\r\n\r\n function 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\n TextAnimatorProperty.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\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\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\r\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\r\n };\r\n\r\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\r\n this.lettersChangedFlag = lettersChangedFlag;\r\n\r\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\r\n return;\r\n }\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\r\n if (this._hasMaskedPath) {\r\n mask = this._pathData.m;\r\n\r\n if (!this._pathData.n || this._pathData._mdf) {\r\n var paths = mask.v;\r\n\r\n if (this._pathData.r.v) {\r\n paths = paths.reverse();\r\n } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\r\n\r\n\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\r\n for (i = 0; i < len; i += 1) {\r\n bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [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\r\n i = len;\r\n\r\n if (mask.v.c) {\r\n bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [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\r\n this._pathData.pi = pathInfo;\r\n }\r\n\r\n pathInfo = this._pathData.pi;\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\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\r\n segmentInd = segments.length - 1;\r\n points = segments[segmentInd].points;\r\n pointInd = points.length - 1;\r\n\r\n while (currentLength < 0) {\r\n currentLength += points[pointInd].partialLength;\r\n pointInd -= 1;\r\n\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\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 jLen = animators.length;\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 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\r\n while (lastIndex < i) {\r\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\r\n lastIndex += 1;\r\n }\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\r\n if (animatorProps.t.propType) {\r\n if (isNewLine && documentData.j === 2) {\r\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\r\n }\r\n\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 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\r\n isNewLine = false;\r\n }\r\n }\r\n\r\n if (animatorJustifyOffset) {\r\n animatorJustifyOffset += animatorFirstCharOffset;\r\n }\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\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\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\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\r\n case 2:\r\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n currentLine = letters[i].line;\r\n }\r\n\r\n if (ind !== letters[i].ind) {\r\n if (letters[ind]) {\r\n currentLength += letters[ind].extra;\r\n }\r\n\r\n currentLength += letters[i].an / 2;\r\n ind = letters[i].ind;\r\n }\r\n\r\n currentLength += alignment[0] * letters[i].an * 0.005;\r\n var animatorOffset = 0;\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\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\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 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\r\n flag = true; // Force alignment only works with a single line for now\r\n\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\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\r\n if (pointInd >= points.length) {\r\n pointInd = 0;\r\n segmentInd += 1;\r\n\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\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\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); // Grouping alignment\r\n\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\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); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\r\n\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\r\n if (documentData.strokeWidthAnim) {\r\n sw = documentData.sw || 0;\r\n }\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\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\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.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\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\r\n if (documentData.strokeWidthAnim) {\r\n letterSw = sw < 0 ? 0 : sw;\r\n }\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\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 matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\r\n\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\r\n if (currentPoint.point[0] < prevPoint.point[0]) {\r\n rot += 180;\r\n }\r\n\r\n matrixHelper.rotate(-rot * Math.PI / 180);\r\n }\r\n\r\n matrixHelper.translate(xPathPos, yPathPos, 0);\r\n currentLength -= alignment[0] * letters[i].an * 0.005;\r\n\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\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\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\r\n default:\r\n break;\r\n }\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\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\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\n TextAnimatorProperty.prototype.getValue = function () {\r\n if (this._elem.globalData.frameId === this._frameId) {\r\n return;\r\n }\r\n\r\n this._frameId = this._elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n };\r\n\r\n TextAnimatorProperty.prototype.mHelper = new Matrix();\r\n TextAnimatorProperty.prototype.defaultPropsArray = [];\r\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\r\n\r\n function ITextElement() {}\r\n\r\n ITextElement.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\n ITextElement.prototype.prepareFrame = function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n\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\n ITextElement.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\r\n for (j = 0; j < jLen; j += 1) {\r\n if (shapes[j].ty === 'sh') {\r\n pathNodes = shapes[j].ks.k;\r\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\r\n }\r\n }\r\n\r\n return shapeStr;\r\n };\r\n\r\n ITextElement.prototype.updateDocumentData = function (newData, index) {\r\n this.textProperty.updateDocumentData(newData, index);\r\n };\r\n\r\n ITextElement.prototype.canResizeFont = function (_canResize) {\r\n this.textProperty.canResizeFont(_canResize);\r\n };\r\n\r\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\r\n this.textProperty.setMinimumFontSize(_fontSize);\r\n };\r\n\r\n ITextElement.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\r\n matrixHelper.translate(0, -documentData.ls, 0);\r\n\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\r\n case 2:\r\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n matrixHelper.translate(xPos, yPos, 0);\r\n };\r\n\r\n ITextElement.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\n ITextElement.prototype.emptyProp = new LetterProps();\r\n\r\n ITextElement.prototype.destroy = function () {};\r\n\r\n var emptyShapeData = {\r\n shapes: []\r\n };\r\n\r\n function 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\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\r\n\r\n SVGTextLottieElement.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\n SVGTextLottieElement.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\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\r\n i += 1;\r\n }\r\n\r\n textContents.push(currentTextContent);\r\n return textContents;\r\n };\r\n\r\n SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\r\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\r\n // but since text internal content gets only rendered once and then it's never rerendered,\r\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\r\n // Avoiding cloning is preferred since cloning each character shape data is expensive\r\n if (data.shapes && data.shapes.length) {\r\n var shape = data.shapes[0];\r\n\r\n if (shape.it) {\r\n var shapeItem = shape.it[shape.it.length - 1];\r\n\r\n if (shapeItem.s) {\r\n shapeItem.s.k[0] = scale;\r\n shapeItem.s.k[1] = scale;\r\n }\r\n }\r\n }\r\n\r\n return data;\r\n };\r\n\r\n SVGTextLottieElement.prototype.buildNewText = function () {\r\n this.addDynamicProperty(this);\r\n var i;\r\n var len;\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\r\n\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\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\r\n this.layerElement.setAttribute('font-size', documentData.finalSize);\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n\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\r\n this.layerElement.setAttribute('aria-label', documentData.t);\r\n var letters = documentData.l || [];\r\n var usesGlyphs = !!this.globalData.fontManager.chars;\r\n len = letters.length;\r\n var tSpan;\r\n var matrixHelper = this.mHelper;\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\r\n if (singleShape && !usesGlyphs && !documentData.sz) {\r\n var tElement = this.textContainer;\r\n var justify = 'start';\r\n\r\n switch (documentData.j) {\r\n case 1:\r\n justify = 'end';\r\n break;\r\n\r\n case 2:\r\n justify = 'middle';\r\n break;\r\n\r\n default:\r\n justify = 'start';\r\n break;\r\n }\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\r\n for (i = 0; i < len; i += 1) {\r\n tSpan = this.textSpans[i].span || 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\r\n if (!this.textSpans[i]) {\r\n this.textSpans[i] = {\r\n span: null,\r\n glyph: null\r\n };\r\n }\r\n\r\n this.textSpans[i].span = 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 charData;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (!this.textSpans[i]) {\r\n this.textSpans[i] = {\r\n span: null,\r\n childSpan: null,\r\n glyph: null\r\n };\r\n }\r\n\r\n if (!usesGlyphs || !singleShape || i === 0) {\r\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\r\n\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].span = tSpan;\r\n\r\n if (usesGlyphs) {\r\n var childSpan = createNS('g');\r\n tSpan.appendChild(childSpan);\r\n this.textSpans[i].childSpan = childSpan;\r\n }\r\n\r\n this.textSpans[i].span = tSpan;\r\n this.layerElement.appendChild(tSpan);\r\n }\r\n\r\n tSpan.style.display = 'inherit';\r\n }\r\n\r\n matrixHelper.reset();\r\n\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\r\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\r\n\r\n xPos += trackingOffset;\r\n }\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 var glyphElement; // t === 1 means the character has been replaced with an animated shaped\r\n\r\n if (charData.t === 1) {\r\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\r\n } else {\r\n var data = emptyShapeData;\r\n\r\n if (charData.data && charData.data.shapes) {\r\n data = this.buildShapeData(charData.data, documentData.finalSize);\r\n }\r\n\r\n glyphElement = new SVGShapeElement(data, this.globalData, this);\r\n }\r\n\r\n if (this.textSpans[i].glyph) {\r\n var glyph = this.textSpans[i].glyph;\r\n this.textSpans[i].childSpan.removeChild(glyph.layerElement);\r\n glyph.destroy();\r\n }\r\n\r\n this.textSpans[i].glyph = glyphElement;\r\n glyphElement._debug = true;\r\n glyphElement.prepareFrame(0);\r\n glyphElement.renderFrame();\r\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\r\n // this might have issues with strokes and might need a different solution\r\n\r\n if (charData.t === 1) {\r\n this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\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\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\r\n if (singleShape && tSpan) {\r\n tSpan.setAttribute('d', shapeStr);\r\n }\r\n }\r\n\r\n while (i < this.textSpans.length) {\r\n this.textSpans[i].span.style.display = 'none';\r\n i += 1;\r\n }\r\n\r\n this._sizeChanged = true;\r\n };\r\n\r\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\r\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\r\n this.renderInnerContent();\r\n\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\r\n return this.bbox;\r\n };\r\n\r\n SVGTextLottieElement.prototype.getValue = function () {\r\n var i;\r\n var len = this.textSpans.length;\r\n var glyphElement;\r\n this.renderedFrame = this.comp.renderedFrame;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n glyphElement = this.textSpans[i].glyph;\r\n\r\n if (glyphElement) {\r\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\r\n\r\n if (glyphElement._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n };\r\n\r\n SVGTextLottieElement.prototype.renderInnerContent = function () {\r\n if (!this.data.singleShape || this._mdf) {\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n\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 var letters = this.textProperty.currentData.l;\r\n len = letters.length;\r\n var renderedLetter;\r\n var textSpan;\r\n var glyphElement;\r\n\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].span;\r\n glyphElement = this.textSpans[i].glyph;\r\n\r\n if (glyphElement) {\r\n glyphElement.renderFrame();\r\n }\r\n\r\n if (renderedLetter._mdf.m) {\r\n textSpan.setAttribute('transform', renderedLetter.m);\r\n }\r\n\r\n if (renderedLetter._mdf.o) {\r\n textSpan.setAttribute('opacity', renderedLetter.o);\r\n }\r\n\r\n if (renderedLetter._mdf.sw) {\r\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\r\n }\r\n\r\n if (renderedLetter._mdf.sc) {\r\n textSpan.setAttribute('stroke', renderedLetter.sc);\r\n }\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 function ISolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n }\r\n\r\n extendPrototype([IImageElement], ISolidElement);\r\n\r\n ISolidElement.prototype.createContent = function () {\r\n var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\r\n /// /rect.style.height = this.data.sh;\r\n /// /rect.style.fill = this.data.sc;\r\n\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 function 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\n NullElement.prototype.prepareFrame = function (num) {\r\n this.prepareProperties(num, true);\r\n };\r\n\r\n NullElement.prototype.renderFrame = function () {};\r\n\r\n NullElement.prototype.getBaseElement = function () {\r\n return null;\r\n };\r\n\r\n NullElement.prototype.destroy = function () {};\r\n\r\n NullElement.prototype.sourceRectAtTime = function () {};\r\n\r\n NullElement.prototype.hide = function () {};\r\n\r\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\r\n\r\n function SVGRendererBase() {}\r\n\r\n extendPrototype([BaseRenderer], SVGRendererBase);\r\n\r\n SVGRendererBase.prototype.createNull = function (data) {\r\n return new NullElement(data, this.globalData, this);\r\n };\r\n\r\n SVGRendererBase.prototype.createShape = function (data) {\r\n return new SVGShapeElement(data, this.globalData, this);\r\n };\r\n\r\n SVGRendererBase.prototype.createText = function (data) {\r\n return new SVGTextLottieElement(data, this.globalData, this);\r\n };\r\n\r\n SVGRendererBase.prototype.createImage = function (data) {\r\n return new IImageElement(data, this.globalData, this);\r\n };\r\n\r\n SVGRendererBase.prototype.createSolid = function (data) {\r\n return new ISolidElement(data, this.globalData, this);\r\n };\r\n\r\n SVGRendererBase.prototype.configAnimation = function (animData) {\r\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\r\n this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\r\n\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\r\n if (this.renderConfig.width) {\r\n this.svgElement.setAttribute('width', this.renderConfig.width);\r\n }\r\n\r\n if (this.renderConfig.height) {\r\n this.svgElement.setAttribute('height', this.renderConfig.height);\r\n }\r\n\r\n if (this.renderConfig.className) {\r\n this.svgElement.setAttribute('class', this.renderConfig.className);\r\n }\r\n\r\n if (this.renderConfig.id) {\r\n this.svgElement.setAttribute('id', this.renderConfig.id);\r\n }\r\n\r\n if (this.renderConfig.focusable !== undefined) {\r\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\r\n }\r\n\r\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // 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\r\n this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\r\n\r\n var defs = this.globalData.defs;\r\n this.setupGlobalData(animData, defs);\r\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\r\n this.data = animData;\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(' + getLocationHref() + '#' + maskId + ')');\r\n defs.appendChild(maskElement);\r\n this.layers = animData.layers;\r\n this.elements = createSizedArray(animData.layers.length);\r\n };\r\n\r\n SVGRendererBase.prototype.destroy = function () {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.wrapper.innerText = '';\r\n }\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\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 this.elements.length = 0;\r\n this.destroyed = true;\r\n this.animationItem = null;\r\n };\r\n\r\n SVGRendererBase.prototype.updateContainerSize = function () {};\r\n\r\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\r\n var i = 0;\r\n var len = this.layers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.layers[i].ind === ind) {\r\n return i;\r\n }\r\n }\r\n\r\n return -1;\r\n };\r\n\r\n SVGRendererBase.prototype.buildItem = function (pos) {\r\n var elements = this.elements;\r\n\r\n if (elements[pos] || this.layers[pos].ty === 99) {\r\n return;\r\n }\r\n\r\n elements[pos] = true;\r\n var element = this.createItem(this.layers[pos]);\r\n elements[pos] = element;\r\n\r\n if (getExpressionsPlugin()) {\r\n if (this.layers[pos].ty === 0) {\r\n this.globalData.projectInterface.registerComposition(element);\r\n }\r\n\r\n element.initExpressions();\r\n }\r\n\r\n this.appendElementInPos(element, pos);\r\n\r\n if (this.layers[pos].tt) {\r\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\r\n\r\n if (elementIndex === -1) {\r\n return;\r\n }\r\n\r\n if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\r\n this.buildItem(elementIndex);\r\n this.addPendingElement(element);\r\n } else {\r\n var matteElement = elements[elementIndex];\r\n var matteMask = matteElement.getMatte(this.layers[pos].tt);\r\n element.setMatte(matteMask);\r\n }\r\n }\r\n };\r\n\r\n SVGRendererBase.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n\r\n if (element.data.tt) {\r\n var i = 0;\r\n var len = this.elements.length;\r\n\r\n while (i < len) {\r\n if (this.elements[i] === element) {\r\n var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\r\n var matteElement = this.elements[elementIndex];\r\n var matteMask = matteElement.getMatte(this.layers[i].tt);\r\n element.setMatte(matteMask);\r\n break;\r\n }\r\n\r\n i += 1;\r\n }\r\n }\r\n }\r\n };\r\n\r\n SVGRendererBase.prototype.renderFrame = function (num) {\r\n if (this.renderedFrame === num || this.destroyed) {\r\n return;\r\n }\r\n\r\n if (num === null) {\r\n num = this.renderedFrame;\r\n } else {\r\n this.renderedFrame = num;\r\n } // console.log('-------');\r\n // console.log('FRAME ',num);\r\n\r\n\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\r\n if (!this.completeLayers) {\r\n this.checkLayers(num);\r\n }\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\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\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\r\n var newElement = element.getBaseElement();\r\n\r\n if (!newElement) {\r\n return;\r\n }\r\n\r\n var i = 0;\r\n var nextElement;\r\n\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\r\n i += 1;\r\n }\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\n SVGRendererBase.prototype.hide = function () {\r\n this.layerElement.style.display = 'none';\r\n };\r\n\r\n SVGRendererBase.prototype.show = function () {\r\n this.layerElement.style.display = 'block';\r\n };\r\n\r\n function ICompElement() {}\r\n\r\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\r\n\r\n ICompElement.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\r\n if (this.data.xt || !globalData.progressiveLoad) {\r\n this.buildAllItems();\r\n }\r\n\r\n this.hide();\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\n\r\n ICompElement.prototype.prepareFrame = function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n\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\r\n if (timeRemapped === this.data.op) {\r\n timeRemapped = this.data.op - 1;\r\n }\r\n\r\n this.renderedFrame = timeRemapped;\r\n } else {\r\n this.renderedFrame = num / this.data.sr;\r\n }\r\n\r\n var i;\r\n var len = this.elements.length;\r\n\r\n if (!this.completeLayers) {\r\n this.checkLayers(this.renderedFrame);\r\n } // This iteration needs to be backwards because of how expressions connect between each other\r\n\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(this.renderedFrame - this.layers[i].st);\r\n\r\n if (this.elements[i]._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n };\r\n\r\n ICompElement.prototype.renderInnerContent = function () {\r\n var i;\r\n var len = this.layers.length;\r\n\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 ICompElement.prototype.setElements = function (elems) {\r\n this.elements = elems;\r\n };\r\n\r\n ICompElement.prototype.getElements = function () {\r\n return this.elements;\r\n };\r\n\r\n ICompElement.prototype.destroyElements = function () {\r\n var i;\r\n var len = this.layers.length;\r\n\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\n ICompElement.prototype.destroy = function () {\r\n this.destroyElements();\r\n this.destroyBaseElement();\r\n };\r\n\r\n function 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.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\r\n _placeholder: true\r\n };\r\n }\r\n\r\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\r\n\r\n SVGCompElement.prototype.createComp = function (data) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n };\r\n\r\n function 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\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\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\r\n if (ariaLabel) {\r\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\r\n }\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 width: config && config.width,\r\n height: config && config.height,\r\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\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\n extendPrototype([SVGRendererBase], SVGRenderer);\r\n\r\n SVGRenderer.prototype.createComp = function (data) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n };\r\n\r\n function 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\r\n for (i = 0; i < len; i += 1) {\r\n this.saved[i] = createTypedArray('float32', 16);\r\n }\r\n\r\n this._length = len;\r\n }\r\n\r\n CVContextData.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\r\n for (i = this._length; i < newLength; i += 1) {\r\n this.saved[i] = createTypedArray('float32', 16);\r\n }\r\n\r\n this._length = newLength;\r\n };\r\n\r\n CVContextData.prototype.reset = function () {\r\n this.cArrPos = 0;\r\n this.cTr.reset();\r\n this.cO = 1;\r\n };\r\n\r\n function ShapeTransformManager() {\r\n this.sequences = {};\r\n this.sequenceList = [];\r\n this.transform_key_count = 0;\r\n }\r\n\r\n ShapeTransformManager.prototype = {\r\n addTransformSequence: function addTransformSequence(transforms) {\r\n var i;\r\n var len = transforms.length;\r\n var key = '_';\r\n\r\n for (i = 0; i < len; i += 1) {\r\n key += transforms[i].transform.key + '_';\r\n }\r\n\r\n var sequence = this.sequences[key];\r\n\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\r\n return sequence;\r\n },\r\n processSequence: function processSequence(sequence, isFirstFrame) {\r\n var i = 0;\r\n var len = sequence.transforms.length;\r\n var _mdf = isFirstFrame;\r\n\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\r\n i += 1;\r\n }\r\n\r\n if (_mdf) {\r\n var props;\r\n sequence.finalTransform.reset();\r\n\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\r\n sequence._mdf = _mdf;\r\n },\r\n processSequences: function processSequences(isFirstFrame) {\r\n var i;\r\n var len = this.sequenceList.length;\r\n\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 getNewKey() {\r\n this.transform_key_count += 1;\r\n return '_' + this.transform_key_count;\r\n }\r\n };\r\n\r\n function CVEffects() {}\r\n\r\n CVEffects.prototype.renderFrame = function () {};\r\n\r\n function 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\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\r\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\r\n }\r\n\r\n this.hasMasks = hasMasks;\r\n\r\n if (hasMasks) {\r\n this.element.addRenderableComponent(this);\r\n }\r\n }\r\n\r\n CVMaskElement.prototype.renderFrame = function () {\r\n if (!this.hasMasks) {\r\n return;\r\n }\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\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\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\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\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\r\n this.element.globalData.renderer.save(true);\r\n ctx.clip();\r\n };\r\n\r\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\r\n\r\n CVMaskElement.prototype.destroy = function () {\r\n this.element = null;\r\n };\r\n\r\n function CVBaseElement() {}\r\n\r\n CVBaseElement.prototype = {\r\n createElements: function createElements() {},\r\n initRendererElement: function initRendererElement() {},\r\n createContainerElements: function createContainerElements() {\r\n this.canvasContext = this.globalData.canvasContext;\r\n this.renderableEffectsManager = new CVEffects(this);\r\n },\r\n createContent: function createContent() {},\r\n setBlendMode: function setBlendMode() {\r\n var globalData = this.globalData;\r\n\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 createRenderableComponents() {\r\n this.maskManager = new CVMaskElement(this.data, this);\r\n },\r\n hideElement: function hideElement() {\r\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\r\n this.hidden = true;\r\n }\r\n },\r\n showElement: function showElement() {\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 renderFrame() {\r\n if (this.hidden || this.data.hd) {\r\n return;\r\n }\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\r\n if (this.maskManager.hasMasks) {\r\n this.globalData.renderer.restore(true);\r\n }\r\n\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n destroy: function destroy() {\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\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\r\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\r\n\r\n function 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\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\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\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\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\r\n\r\n function 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\n extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\r\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\r\n CVShapeElement.prototype.transformHelper = {\r\n opacity: 1,\r\n _opMdf: false\r\n };\r\n CVShapeElement.prototype.dashResetter = [];\r\n\r\n CVShapeElement.prototype.createContent = function () {\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\r\n };\r\n\r\n CVShapeElement.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\r\n if (data.ty === 'fl' || data.ty === 'st') {\r\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\r\n\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 || {\r\n k: 0\r\n }, 0, 0.01, this);\r\n elementData.a = PropertyFactory.getProp(this, data.a || {\r\n k: 0\r\n }, 0, degToRads, this);\r\n elementData.g = new GradientProperty(this, data.g, this);\r\n }\r\n\r\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\r\n\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\r\n if (data.lj == 1) {\r\n // eslint-disable-line eqeqeq\r\n styleElem.ml = data.ml;\r\n }\r\n\r\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\r\n\r\n if (!elementData.w.k) {\r\n styleElem.wi = elementData.w.v;\r\n }\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\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\r\n this.stylesList.push(styleElem);\r\n elementData.style = styleElem;\r\n return elementData;\r\n };\r\n\r\n CVShapeElement.prototype.createGroupElement = function () {\r\n var elementData = {\r\n it: [],\r\n prevViewData: []\r\n };\r\n return elementData;\r\n };\r\n\r\n CVShapeElement.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\n CVShapeElement.prototype.createShapeElement = function (data) {\r\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\r\n this.shapes.push(elementData);\r\n this.addShapeToModifiers(elementData);\r\n return elementData;\r\n };\r\n\r\n CVShapeElement.prototype.reloadShapes = function () {\r\n this._isFirstFrame = true;\r\n var i;\r\n var len = this.itemsData.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.prevViewData[i] = this.itemsData[i];\r\n }\r\n\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\r\n len = this.dynamicProperties.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n }\r\n\r\n this.renderModifiers();\r\n this.transformsManager.processSequences(this._isFirstFrame);\r\n };\r\n\r\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\r\n var i;\r\n var len = this.stylesList.length;\r\n\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\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\r\n var i;\r\n var len = this.stylesList.length;\r\n\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\n CVShapeElement.prototype.closeStyles = function (styles) {\r\n var i;\r\n var len = styles.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n styles[i].closed = true;\r\n }\r\n };\r\n\r\n CVShapeElement.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\r\n for (i = len; i >= 0; i -= 1) {\r\n processedPos = this.searchProcessedElement(arr[i]);\r\n\r\n if (!processedPos) {\r\n arr[i]._shouldRender = shouldRender;\r\n } else {\r\n itemsData[i] = prevViewData[processedPos - 1];\r\n }\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\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\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\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' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\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\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\r\n ownModifiers.push(modifier);\r\n }\r\n\r\n this.addProcessedElement(arr[i], i + 1);\r\n }\r\n\r\n this.removeTransformFromStyleList();\r\n this.closeStyles(ownStyles);\r\n len = ownModifiers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ownModifiers[i].closed = true;\r\n }\r\n };\r\n\r\n CVShapeElement.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\n CVShapeElement.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\n CVShapeElement.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\r\n for (i = 0; i < len; i += 1) {\r\n currentStyle = this.stylesList[i];\r\n type = currentStyle.type; // 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\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\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\r\n renderer.ctxOpacity(currentStyle.coOp);\r\n\r\n if (type !== 'st' && type !== 'gs') {\r\n ctx.beginPath();\r\n }\r\n\r\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\r\n jLen = elems.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n if (type === 'st' || type === 'gs') {\r\n ctx.beginPath();\r\n\r\n if (currentStyle.da) {\r\n ctx.setLineDash(currentStyle.da);\r\n ctx.lineDashOffset = currentStyle[\"do\"];\r\n }\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\r\n if (type === 'st' || type === 'gs') {\r\n ctx.stroke();\r\n\r\n if (currentStyle.da) {\r\n ctx.setLineDash(this.dashResetter);\r\n }\r\n }\r\n }\r\n\r\n if (type !== 'st' && type !== 'gs') {\r\n ctx.fill(currentStyle.r);\r\n }\r\n\r\n renderer.restore();\r\n }\r\n }\r\n };\r\n\r\n CVShapeElement.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\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\n CVShapeElement.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\r\n for (j = 0; j < jLen; j += 1) {\r\n var pathNodes = paths.shapes[j];\r\n\r\n if (pathNodes && pathNodes.v) {\r\n len = pathNodes._length;\r\n\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\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\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\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\r\n styledShape.trNodes = shapeNodes;\r\n }\r\n };\r\n\r\n CVShapeElement.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\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\n CVShapeElement.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(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\r\n }\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\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n var grd;\r\n\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\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 var percent = itemData.h.v;\r\n\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\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\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\r\n styleElem.grd = grd;\r\n }\r\n\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n };\r\n\r\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n var d = itemData.d;\r\n\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\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\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 if (itemData.w._mdf || this._isFirstFrame) {\r\n styleElem.wi = itemData.w.v;\r\n }\r\n };\r\n\r\n CVShapeElement.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 function 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\n\r\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\r\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\r\n\r\n CVTextElement.prototype.buildNewText = function () {\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\r\n var hasFill = false;\r\n\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\r\n this.fill = hasFill;\r\n var hasStroke = false;\r\n\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\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; // this.tHelper.font = this.values.fValue;\r\n\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\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\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\r\n if (singleShape) {\r\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n }\r\n\r\n commands = createSizedArray(jLen - 1);\r\n var commandsCounter = 0;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n if (shapes[j].ty === 'sh') {\r\n kLen = shapes[j].ks.k.i.length;\r\n pathNodes = shapes[j].ks.k;\r\n pathArr = [];\r\n\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\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\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[commandsCounter] = pathArr;\r\n commandsCounter += 1;\r\n }\r\n }\r\n\r\n if (singleShape) {\r\n xPos += letters[i].l;\r\n xPos += trackingOffset;\r\n }\r\n\r\n if (this.textSpans[cnt]) {\r\n this.textSpans[cnt].elem = commands;\r\n } else {\r\n this.textSpans[cnt] = {\r\n elem: commands\r\n };\r\n }\r\n\r\n cnt += 1;\r\n }\r\n };\r\n\r\n CVTextElement.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 var letters = this.textProperty.currentData.l;\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\r\n for (i = 0; i < len; i += 1) {\r\n if (!letters[i].n) {\r\n renderedLetter = renderedLetters[i];\r\n\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\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\r\n commands = this.textSpans[i].elem;\r\n jLen = commands.length;\r\n this.globalData.canvasContext.beginPath();\r\n\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\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\r\n this.globalData.canvasContext.closePath();\r\n this.globalData.canvasContext.fill(); /// ctx.fillText(this.textSpans[i].val,0,0);\r\n }\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\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\r\n commands = this.textSpans[i].elem;\r\n jLen = commands.length;\r\n this.globalData.canvasContext.beginPath();\r\n\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\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\r\n this.globalData.canvasContext.closePath();\r\n this.globalData.canvasContext.stroke(); /// ctx.strokeText(letters[i].val,0,0);\r\n }\r\n\r\n if (renderedLetter) {\r\n this.globalData.renderer.restore();\r\n }\r\n }\r\n }\r\n };\r\n\r\n function 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\n\r\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\r\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\r\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\r\n\r\n CVImageElement.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 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\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\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\n CVImageElement.prototype.renderInnerContent = function () {\r\n this.canvasContext.drawImage(this.img, 0, 0);\r\n };\r\n\r\n CVImageElement.prototype.destroy = function () {\r\n this.img = null;\r\n };\r\n\r\n function CVSolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\r\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\r\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\r\n\r\n CVSolidElement.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 function CanvasRendererBase(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\r\n if (this.animationItem.wrapper) {\r\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\r\n }\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\n\r\n extendPrototype([BaseRenderer], CanvasRendererBase);\r\n\r\n CanvasRendererBase.prototype.createShape = function (data) {\r\n return new CVShapeElement(data, this.globalData, this);\r\n };\r\n\r\n CanvasRendererBase.prototype.createText = function (data) {\r\n return new CVTextElement(data, this.globalData, this);\r\n };\r\n\r\n CanvasRendererBase.prototype.createImage = function (data) {\r\n return new CVImageElement(data, this.globalData, this);\r\n };\r\n\r\n CanvasRendererBase.prototype.createSolid = function (data) {\r\n return new CVSolidElement(data, this.globalData, this);\r\n };\r\n\r\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\r\n\r\n CanvasRendererBase.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\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\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]); // 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\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\n CanvasRendererBase.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\r\n this.contextData.cO *= op < 0 ? 0 : op;\r\n\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\n CanvasRendererBase.prototype.reset = function () {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.restore();\r\n return;\r\n }\r\n\r\n this.contextData.reset();\r\n };\r\n\r\n CanvasRendererBase.prototype.save = function (actionFlag) {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.save();\r\n return;\r\n }\r\n\r\n if (actionFlag) {\r\n this.canvasContext.save();\r\n }\r\n\r\n var props = this.contextData.cTr.props;\r\n\r\n if (this.contextData._length <= this.contextData.cArrPos) {\r\n this.contextData.duplicate();\r\n }\r\n\r\n var i;\r\n var arr = this.contextData.saved[this.contextData.cArrPos];\r\n\r\n for (i = 0; i < 16; i += 1) {\r\n arr[i] = props[i];\r\n }\r\n\r\n this.contextData.savedOp[this.contextData.cArrPos] = this.contextData.cO;\r\n this.contextData.cArrPos += 1;\r\n };\r\n\r\n CanvasRendererBase.prototype.restore = function (actionFlag) {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.restore();\r\n return;\r\n }\r\n\r\n if (actionFlag) {\r\n this.canvasContext.restore();\r\n this.globalData.blendMode = 'source-over';\r\n }\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\r\n for (i = 0; i < 16; i += 1) {\r\n arr[i] = popped[i];\r\n }\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\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\n CanvasRendererBase.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\r\n if (this.renderConfig.className) {\r\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\r\n }\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\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 this.updateContainerSize();\r\n };\r\n\r\n CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\r\n this.reset();\r\n var elementWidth;\r\n var elementHeight;\r\n\r\n if (width) {\r\n elementWidth = width;\r\n elementHeight = height;\r\n this.canvasContext.canvas.width = elementWidth;\r\n this.canvasContext.canvas.height = elementHeight;\r\n } else {\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 } else {\r\n elementWidth = this.canvasContext.canvas.width;\r\n elementHeight = this.canvasContext.canvas.height;\r\n }\r\n\r\n this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\r\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\r\n }\r\n\r\n var elementRel;\r\n var animationRel;\r\n\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\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\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\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= 0; i -= 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\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\n CanvasRendererBase.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\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; // console.log('--------');\r\n // console.log('NEW: ',num);\r\n\r\n var i;\r\n var len = this.layers.length;\r\n\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\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\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 if (this.renderConfig.clearCanvas !== true) {\r\n this.restore();\r\n }\r\n }\r\n };\r\n\r\n CanvasRendererBase.prototype.buildItem = function (pos) {\r\n var elements = this.elements;\r\n\r\n if (elements[pos] || this.layers[pos].ty === 99) {\r\n return;\r\n }\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\n CanvasRendererBase.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\n CanvasRendererBase.prototype.hide = function () {\r\n this.animationItem.container.style.display = 'none';\r\n };\r\n\r\n CanvasRendererBase.prototype.show = function () {\r\n this.animationItem.container.style.display = 'block';\r\n };\r\n\r\n function 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) : {\r\n _placeholder: true\r\n };\r\n }\r\n\r\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\r\n\r\n CVCompElement.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\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\n CVCompElement.prototype.destroy = function () {\r\n var i;\r\n var len = this.layers.length;\r\n\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\r\n this.layers = null;\r\n this.elements = null;\r\n };\r\n\r\n CVCompElement.prototype.createComp = function (data) {\r\n return new CVCompElement(data, this.globalData, this);\r\n };\r\n\r\n function 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 runExpressions: !config || config.runExpressions === undefined || config.runExpressions\r\n };\r\n this.renderConfig.dpr = config && config.dpr || 1;\r\n\r\n if (this.animationItem.wrapper) {\r\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\r\n }\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\n\r\n extendPrototype([CanvasRendererBase], CanvasRenderer);\r\n\r\n CanvasRenderer.prototype.createComp = function (data) {\r\n return new CVCompElement(data, this.globalData, this);\r\n };\r\n\r\n function HBaseElement() {}\r\n\r\n HBaseElement.prototype = {\r\n checkBlendMode: function checkBlendMode() {},\r\n initRendererElement: function initRendererElement() {\r\n this.baseElement = createTag(this.data.tg || 'div');\r\n\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\r\n styleDiv(this.baseElement);\r\n },\r\n createContainerElements: function createContainerElements() {\r\n this.renderableEffectsManager = new CVEffects(this);\r\n this.transformedElement = this.baseElement;\r\n this.maskedElement = this.layerElement;\r\n\r\n if (this.data.ln) {\r\n this.layerElement.setAttribute('id', this.data.ln);\r\n }\r\n\r\n if (this.data.cl) {\r\n this.layerElement.setAttribute('class', this.data.cl);\r\n }\r\n\r\n if (this.data.bm !== 0) {\r\n this.setBlendMode();\r\n }\r\n },\r\n renderElement: function renderElement() {\r\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\r\n\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\r\n if (this.finalTransform._opMdf) {\r\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\r\n }\r\n },\r\n renderFrame: function renderFrame() {\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\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.renderElement();\r\n this.renderInnerContent();\r\n\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n destroy: function destroy() {\r\n this.layerElement = null;\r\n this.transformedElement = null;\r\n\r\n if (this.matteElement) {\r\n this.matteElement = null;\r\n }\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 createRenderableComponents() {\r\n this.maskManager = new MaskElement(this.data, this, this.globalData);\r\n },\r\n addEffects: function addEffects() {},\r\n setMatte: function setMatte() {}\r\n };\r\n HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\r\n HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\r\n HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\r\n\r\n function HSolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\r\n\r\n HSolidElement.prototype.createContent = function () {\r\n var rect;\r\n\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\r\n this.layerElement.appendChild(rect);\r\n };\r\n\r\n function HShapeElement(data, globalData, comp) {\r\n // List of drawable elements\r\n this.shapes = []; // Full shape data\r\n\r\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\r\n\r\n this.stylesList = []; // List of modifiers that will be applied to shapes\r\n\r\n this.shapeModifiers = []; // List of items in shape tree\r\n\r\n this.itemsData = []; // List of items in previous shape tree\r\n\r\n this.processedElements = []; // List of animated components\r\n\r\n this.animatedContents = [];\r\n this.shapesContainer = createNS('g');\r\n this.initElement(data, globalData, comp); // 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\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\n\r\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\r\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\r\n\r\n HShapeElement.prototype.createContent = function () {\r\n var cont;\r\n this.baseElement.style.fontSize = 0;\r\n\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\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\r\n var i;\r\n var len = transformers.length;\r\n\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\r\n return point;\r\n };\r\n\r\n HShapeElement.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\r\n if (len <= 1) {\r\n return;\r\n }\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\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\n HShapeElement.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\n HShapeElement.prototype.shapeBoundingBox = {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0\r\n };\r\n HShapeElement.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\n HShapeElement.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) {\r\n // 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 b |= 0; // eslint-disable-line no-bitwise\r\n\r\n a |= 0; // eslint-disable-line no-bitwise\r\n\r\n c |= 0; // eslint-disable-line no-bitwise\r\n\r\n if (a === 0 && b === 0) {//\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\n HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\r\n return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\r\n };\r\n\r\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\r\n var i;\r\n var len = itemsData.length;\r\n\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 } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\r\n this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\r\n }\r\n }\r\n };\r\n\r\n HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\r\n var width = 0;\r\n\r\n if (widthProperty.keyframes) {\r\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\r\n var kfw = widthProperty.keyframes[i].s;\r\n\r\n if (kfw > width) {\r\n width = kfw;\r\n }\r\n }\r\n\r\n width *= widthProperty.mult;\r\n } else {\r\n width = widthProperty.v * widthProperty.mult;\r\n }\r\n\r\n boundingBox.x -= width;\r\n boundingBox.xMax += width;\r\n boundingBox.y -= width;\r\n boundingBox.yMax += width;\r\n };\r\n\r\n HShapeElement.prototype.currentBoxContains = function (box) {\r\n return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\r\n };\r\n\r\n HShapeElement.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; // var tempBoundingBox = this.shapeCont.getBBox();\r\n\r\n if (this.currentBoxContains(tempBoundingBox)) {\r\n return;\r\n }\r\n\r\n var changed = false;\r\n\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\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\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 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 function 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\n\r\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\r\n\r\n HTextElement.prototype.createContent = function () {\r\n this.isMasked = this.checkMasks();\r\n\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\n HTextElement.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\r\n if (documentData.sc) {\r\n innerElemStyle.stroke = this.buildColor(documentData.sc);\r\n innerElemStyle.strokeWidth = documentData.sw + 'px';\r\n }\r\n\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n\r\n if (!this.globalData.fontManager.chars) {\r\n innerElemStyle.fontSize = documentData.finalSize + 'px';\r\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\r\n\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\r\n var i;\r\n var len;\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\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\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 } // tSpan.setAttribute('visibility', 'hidden');\r\n\r\n\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\r\n if (charData) {\r\n shapeData = charData.data;\r\n } else {\r\n shapeData = null;\r\n }\r\n\r\n matrixHelper.reset();\r\n\r\n if (shapeData && shapeData.shapes && shapeData.shapes.length) {\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\r\n if (!this.isMasked) {\r\n this.innerElem.appendChild(tParent);\r\n\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 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\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\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\r\n if (!this.isMasked) {\r\n this.textSpans[cnt] = tParent;\r\n } else {\r\n this.textSpans[cnt] = tSpan;\r\n }\r\n\r\n this.textSpans[cnt].style.display = 'block';\r\n this.textPaths[cnt] = tSpan;\r\n cnt += 1;\r\n }\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\n HTextElement.prototype.renderInnerContent = function () {\r\n var svgStyle;\r\n\r\n if (this.data.singleShape) {\r\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\r\n return;\r\n }\r\n\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\r\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\r\n return;\r\n }\r\n\r\n var i;\r\n var len;\r\n var count = 0;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n var letters = this.textProperty.currentData.l;\r\n len = letters.length;\r\n var renderedLetter;\r\n var textSpan;\r\n var textPath;\r\n\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\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 } /// /textSpan.setAttribute('opacity',renderedLetter.o);\r\n\r\n\r\n textSpan.style.opacity = renderedLetter.o;\r\n\r\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\r\n textPath.setAttribute('stroke-width', renderedLetter.sw);\r\n }\r\n\r\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\r\n textPath.setAttribute('stroke', renderedLetter.sc);\r\n }\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\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\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 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 function 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\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\r\n if (data.ks.a) {\r\n this.a = getProp(this, data.ks.a, 1, 0, this);\r\n }\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\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\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; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\r\n\r\n this.finalTransform = {\r\n mProp: this\r\n };\r\n }\r\n\r\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\r\n\r\n HCameraElement.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\r\n for (i = 0; i < len; i += 1) {\r\n // [perspectiveElem,container]\r\n comp = this.comp.threeDElements[i];\r\n\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\n HCameraElement.prototype.createElements = function () {};\r\n\r\n HCameraElement.prototype.hide = function () {};\r\n\r\n HCameraElement.prototype.renderFrame = function () {\r\n var _mdf = this._isFirstFrame;\r\n var i;\r\n var len;\r\n\r\n if (this.hierarchy) {\r\n len = this.hierarchy.length;\r\n\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\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\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\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\r\n if (this.a) {\r\n var diffVector;\r\n\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\r\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\r\n\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\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 var hasMatrixChanged = !this._prevMat.equals(this.mat);\r\n\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\r\n for (i = 0; i < len; i += 1) {\r\n comp = this.comp.threeDElements[i];\r\n\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\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\r\n this.mat.clone(this._prevMat);\r\n }\r\n }\r\n\r\n this._isFirstFrame = false;\r\n };\r\n\r\n HCameraElement.prototype.prepareFrame = function (num) {\r\n this.prepareProperties(num, true);\r\n };\r\n\r\n HCameraElement.prototype.destroy = function () {};\r\n\r\n HCameraElement.prototype.getBaseElement = function () {\r\n return null;\r\n };\r\n\r\n function HImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initElement(data, globalData, comp);\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\r\n\r\n HImageElement.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\r\n img.crossOrigin = 'anonymous';\r\n img.src = assetPath;\r\n\r\n if (this.data.ln) {\r\n this.baseElement.setAttribute('id', this.data.ln);\r\n }\r\n };\r\n\r\n function HybridRendererBase(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\n extendPrototype([BaseRenderer], HybridRendererBase);\r\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\r\n\r\n HybridRendererBase.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\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\r\n var newDOMElement = element.getBaseElement();\r\n\r\n if (!newDOMElement) {\r\n return;\r\n }\r\n\r\n var layer = this.layers[pos];\r\n\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\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\r\n i += 1;\r\n }\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\n HybridRendererBase.prototype.createShape = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGShapeElement(data, this.globalData, this);\r\n }\r\n\r\n return new HShapeElement(data, this.globalData, this);\r\n };\r\n\r\n HybridRendererBase.prototype.createText = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGTextLottieElement(data, this.globalData, this);\r\n }\r\n\r\n return new HTextElement(data, this.globalData, this);\r\n };\r\n\r\n HybridRendererBase.prototype.createCamera = function (data) {\r\n this.camera = new HCameraElement(data, this.globalData, this);\r\n return this.camera;\r\n };\r\n\r\n HybridRendererBase.prototype.createImage = function (data) {\r\n if (!this.supports3d) {\r\n return new IImageElement(data, this.globalData, this);\r\n }\r\n\r\n return new HImageElement(data, this.globalData, this);\r\n };\r\n\r\n HybridRendererBase.prototype.createSolid = function (data) {\r\n if (!this.supports3d) {\r\n return new ISolidElement(data, this.globalData, this);\r\n }\r\n\r\n return new HSolidElement(data, this.globalData, this);\r\n };\r\n\r\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\r\n\r\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\r\n var i = 0;\r\n var len = this.threeDElements.length;\r\n\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\r\n i += 1;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n HybridRendererBase.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\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); // this.resizerElem.appendChild(perspectiveElem);\r\n\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\n HybridRendererBase.prototype.build3dContainers = function () {\r\n var i;\r\n var len = this.layers.length;\r\n var lastThreeDContainerData;\r\n var currentContainer = '';\r\n\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\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\r\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\r\n }\r\n }\r\n\r\n len = this.threeDElements.length;\r\n\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\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\r\n var i = 0;\r\n var len = this.threeDElements.length;\r\n\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\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\r\n j += 1;\r\n }\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\r\n break;\r\n }\r\n\r\n i += 1;\r\n }\r\n };\r\n\r\n HybridRendererBase.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\r\n if (this.renderConfig.className) {\r\n resizerElem.setAttribute('class', this.renderConfig.className);\r\n }\r\n\r\n wrapper.appendChild(resizerElem);\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; // Mask animation\r\n\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\n HybridRendererBase.prototype.destroy = function () {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.wrapper.innerText = '';\r\n }\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\r\n for (i = 0; i < len; i += 1) {\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\n HybridRendererBase.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\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\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\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\r\n\r\n HybridRendererBase.prototype.hide = function () {\r\n this.resizerElem.style.display = 'none';\r\n };\r\n\r\n HybridRendererBase.prototype.show = function () {\r\n this.resizerElem.style.display = 'block';\r\n };\r\n\r\n HybridRendererBase.prototype.initItems = function () {\r\n this.buildAllItems();\r\n\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\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\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\r\n var i;\r\n var len = assets.length;\r\n var floatingContainer = createTag('div');\r\n\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 function 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) : {\r\n _placeholder: true\r\n };\r\n }\r\n\r\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\r\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\r\n\r\n HCompElement.prototype.createContainerElements = function () {\r\n this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\r\n\r\n\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\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\r\n var j = 0;\r\n var nextElement;\r\n\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\r\n j += 1;\r\n }\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 HCompElement.prototype.createComp = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n }\r\n\r\n return new HCompElement(data, this.globalData, this);\r\n };\r\n\r\n function 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 runExpressions: !config || config.runExpressions === undefined || config.runExpressions\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\n extendPrototype([HybridRendererBase], HybridRenderer);\r\n\r\n HybridRenderer.prototype.createComp = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n }\r\n\r\n return new HCompElement(data, this.globalData, this);\r\n };\r\n\r\n var 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\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\r\n i += 1;\r\n }\r\n\r\n return null; // return {active:false};\r\n }\r\n\r\n Object.defineProperty(_thisLayerFunction, '_name', {\r\n value: comp.data.nm\r\n });\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 var 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\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\r\n for (i = 0; i < len; i += 1) {\r\n registers[i].release();\r\n }\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\r\n return ob;\r\n }();\r\n\r\n var MaskManagerInterface = function () {\r\n function MaskInterface(mask, data) {\r\n this._mask = mask;\r\n this._data = data;\r\n }\r\n\r\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\r\n get: function get() {\r\n if (this._mask.prop.k) {\r\n this._mask.prop.getValue();\r\n }\r\n\r\n return this._mask.prop;\r\n }\r\n });\r\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\r\n get: function get() {\r\n if (this._mask.op.k) {\r\n this._mask.op.getValue();\r\n }\r\n\r\n return this._mask.op.v * 100;\r\n }\r\n });\r\n\r\n var MaskManager = function MaskManager(maskManager) {\r\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\r\n\r\n var i;\r\n var len = maskManager.viewData.length;\r\n\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 maskFunction(name) {\r\n i = 0;\r\n\r\n while (i < len) {\r\n if (maskManager.masksProperties[i].nm === name) {\r\n return _masksInterfaces[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n return maskFunction;\r\n };\r\n\r\n return MaskManager;\r\n }();\r\n\r\n var ExpressionPropertyInterface = function () {\r\n var defaultUnidimensionalValue = {\r\n pv: 0,\r\n v: 0,\r\n mult: 1\r\n };\r\n var defaultMultidimensionalValue = {\r\n pv: [0, 0, 0],\r\n v: [0, 0, 0],\r\n mult: 1\r\n };\r\n\r\n function completeProperty(expressionValue, property, type) {\r\n Object.defineProperty(expressionValue, 'velocity', {\r\n get: function get() {\r\n return property.getVelocityAtTime(property.comp.currentFrame);\r\n }\r\n });\r\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\r\n\r\n expressionValue.key = function (pos) {\r\n if (!expressionValue.numKeys) {\r\n return 0;\r\n }\r\n\r\n var value = '';\r\n\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\r\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\r\n\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\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\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\r\n expressionValue.value = val;\r\n completeProperty(expressionValue, property, 'unidimensional');\r\n return function () {\r\n if (property.k) {\r\n property.getValue();\r\n }\r\n\r\n val = property.v * mult;\r\n\r\n if (expressionValue.value !== val) {\r\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\r\n\r\n expressionValue.value = val;\r\n completeProperty(expressionValue, property, 'unidimensional');\r\n }\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\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 return function () {\r\n if (property.k) {\r\n property.getValue();\r\n }\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\r\n return expressionValue;\r\n };\r\n } // TODO: try to avoid using this getter\r\n\r\n\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 }\r\n\r\n if (property.propType === 'unidimensional') {\r\n return UnidimensionalPropertyInterface(property);\r\n }\r\n\r\n return MultidimensionalPropertyInterface(property);\r\n };\r\n }();\r\n\r\n var 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\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\r\n case 'ADBE Rotate X':\r\n return _thisFunction.xRotation;\r\n\r\n case 'ADBE Rotate Y':\r\n return _thisFunction.yRotation;\r\n\r\n case 'position':\r\n case 'Position':\r\n case 'ADBE Position':\r\n case 2:\r\n return _thisFunction.position;\r\n\r\n case 'ADBE Position_0':\r\n return _thisFunction.xPosition;\r\n\r\n case 'ADBE Position_1':\r\n return _thisFunction.yPosition;\r\n\r\n case 'ADBE Position_2':\r\n return _thisFunction.zPosition;\r\n\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\r\n case 'opacity':\r\n case 'Opacity':\r\n case 11:\r\n return _thisFunction.opacity;\r\n\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n Object.defineProperty(_thisFunction, 'rotation', {\r\n get: ExpressionPropertyInterface(transform.r || transform.rz)\r\n });\r\n Object.defineProperty(_thisFunction, 'zRotation', {\r\n get: ExpressionPropertyInterface(transform.rz || transform.r)\r\n });\r\n Object.defineProperty(_thisFunction, 'xRotation', {\r\n get: ExpressionPropertyInterface(transform.rx)\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\r\n var _px;\r\n\r\n var _py;\r\n\r\n var _pz;\r\n\r\n var _transformFactory;\r\n\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\r\n if (transform.pz) {\r\n _pz = ExpressionPropertyInterface(transform.pz);\r\n }\r\n }\r\n\r\n Object.defineProperty(_thisFunction, 'position', {\r\n get: function get() {\r\n if (transform.p) {\r\n return _transformFactory();\r\n }\r\n\r\n return [_px(), _py(), _pz ? _pz() : 0];\r\n }\r\n });\r\n Object.defineProperty(_thisFunction, 'xPosition', {\r\n get: ExpressionPropertyInterface(transform.px)\r\n });\r\n Object.defineProperty(_thisFunction, 'yPosition', {\r\n get: ExpressionPropertyInterface(transform.py)\r\n });\r\n Object.defineProperty(_thisFunction, 'zPosition', {\r\n get: ExpressionPropertyInterface(transform.pz)\r\n });\r\n Object.defineProperty(_thisFunction, 'anchorPoint', {\r\n get: ExpressionPropertyInterface(transform.a)\r\n });\r\n Object.defineProperty(_thisFunction, 'opacity', {\r\n get: ExpressionPropertyInterface(transform.o)\r\n });\r\n Object.defineProperty(_thisFunction, 'skew', {\r\n get: ExpressionPropertyInterface(transform.sk)\r\n });\r\n Object.defineProperty(_thisFunction, 'skewAxis', {\r\n get: ExpressionPropertyInterface(transform.sa)\r\n });\r\n Object.defineProperty(_thisFunction, 'orientation', {\r\n get: ExpressionPropertyInterface(transform.or)\r\n });\r\n return _thisFunction;\r\n };\r\n }();\r\n\r\n var LayerExpressionInterface = function () {\r\n function getMatrix(time) {\r\n var toWorldMat = new Matrix();\r\n\r\n if (time !== undefined) {\r\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\r\n\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\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\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\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\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\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\r\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\r\n\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\r\n }\r\n\r\n return toWorldMat.inversePoint(arr);\r\n }\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\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\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\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\r\n case 'ADBE Text Properties':\r\n return _thisLayerFunction.textInterface;\r\n\r\n default:\r\n return null;\r\n }\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 get() {\r\n return elem.hierarchy.length;\r\n }\r\n },\r\n parent: {\r\n get: function get() {\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 get() {\r\n return transformInterface;\r\n }\r\n },\r\n active: {\r\n get: function get() {\r\n return elem.isInRange;\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 _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\r\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\r\n return _thisLayerFunction;\r\n };\r\n }();\r\n\r\n var propertyGroupFactory = function () {\r\n return function (interfaceFunction, parentPropertyGroup) {\r\n return function (val) {\r\n val = val === undefined ? 1 : val;\r\n\r\n if (val <= 0) {\r\n return interfaceFunction;\r\n }\r\n\r\n return parentPropertyGroup(val - 1);\r\n };\r\n };\r\n }();\r\n\r\n var 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\r\n if (val <= 0) {\r\n return interfaceFunction;\r\n }\r\n\r\n return propertyGroup(val - 1);\r\n }\r\n\r\n return _propertyGroup;\r\n };\r\n }();\r\n\r\n var 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\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\r\n var groupInterface = function groupInterface(name) {\r\n i = 0;\r\n len = effects.length;\r\n\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\r\n i += 1;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n Object.defineProperty(groupInterface, 'numProperties', {\r\n get: function get() {\r\n return effects.length;\r\n }\r\n });\r\n return groupInterface;\r\n }\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\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\r\n return effectElements[i]();\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n throw new Error();\r\n }\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\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 get() {\r\n return effectElements[0]();\r\n }\r\n });\r\n }\r\n\r\n Object.defineProperties(groupInterface, {\r\n numProperties: {\r\n get: function get() {\r\n return data.np;\r\n }\r\n },\r\n _name: {\r\n value: data.nm\r\n },\r\n propertyGroup: {\r\n value: _propertyGroup\r\n }\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\r\n function interfaceFunction() {\r\n if (type === 10) {\r\n return elem.comp.compInterface(element.p.v);\r\n }\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 var ShapePathInterface = 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\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n path: {\r\n get: function get() {\r\n if (prop.k) {\r\n prop.getValue();\r\n }\r\n\r\n return prop;\r\n }\r\n },\r\n shape: {\r\n get: function get() {\r\n if (prop.k) {\r\n prop.getValue();\r\n }\r\n\r\n return prop;\r\n }\r\n },\r\n _name: {\r\n value: shape.nm\r\n },\r\n ix: {\r\n value: shape.ix\r\n },\r\n propertyIndex: {\r\n value: shape.ix\r\n },\r\n mn: {\r\n value: shape.mn\r\n },\r\n propertyGroup: {\r\n value: propertyGroup\r\n }\r\n });\r\n return interfaceFunction;\r\n };\r\n }();\r\n\r\n var 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\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') {// 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\r\n return arr;\r\n }\r\n\r\n function contentsInterfaceFactory(shape, view, propertyGroup) {\r\n var interfaces;\r\n\r\n var interfaceFunction = function _interfaceFunction(value) {\r\n var i = 0;\r\n var len = interfaces.length;\r\n\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\r\n i += 1;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n return interfaces[value - 1];\r\n }\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 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\r\n default:\r\n return interfaceFunction.transform;\r\n }\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 get() {\r\n return shape.nm;\r\n }\r\n }); // interfaceFunction.content = interfaceFunction;\r\n\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 }\r\n\r\n if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n\r\n return null;\r\n }\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: {\r\n value: shape.nm\r\n },\r\n mn: {\r\n 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\r\n if (val === 'End Point' || val === 'end point') {\r\n return interfaceFunction.endPoint;\r\n }\r\n\r\n if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n\r\n return null;\r\n }\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 get() {\r\n return 'a';\r\n }\r\n },\r\n _name: {\r\n value: shape.nm\r\n },\r\n mn: {\r\n 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\r\n function defaultInterfaceFactory() {\r\n function interfaceFunction() {\r\n return null;\r\n }\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\r\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\r\n\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\r\n var i;\r\n var len = shape.d ? shape.d.length : 0;\r\n var dashOb = {};\r\n\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 }\r\n\r\n if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n\r\n if (val === 'Stroke Width' || val === 'stroke width') {\r\n return interfaceFunction.strokeWidth;\r\n }\r\n\r\n return null;\r\n }\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 get() {\r\n return dashOb;\r\n }\r\n },\r\n _name: {\r\n value: shape.nm\r\n },\r\n mn: {\r\n 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\r\n if (val === shape.s.ix) {\r\n return interfaceFunction.start;\r\n }\r\n\r\n if (val === shape.o.ix) {\r\n return interfaceFunction.offset;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n interfaceFunction.propertyIndex = shape.ix;\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 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: {\r\n value: shape.nm\r\n }\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\r\n if (shape.o.ix === value || value === 'Opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n\r\n if (shape.p.ix === value || value === 'Position') {\r\n return interfaceFunction.position;\r\n }\r\n\r\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\r\n return interfaceFunction.rotation;\r\n }\r\n\r\n if (shape.s.ix === value || value === 'Scale') {\r\n return interfaceFunction.scale;\r\n }\r\n\r\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\r\n return interfaceFunction.skew;\r\n }\r\n\r\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\r\n return interfaceFunction.skewAxis;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\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\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\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: {\r\n value: shape.nm\r\n }\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\r\n if (shape.s.ix === value) {\r\n return interfaceFunction.size;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\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 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: {\r\n value: shape.nm\r\n }\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\r\n if (shape.r.ix === value) {\r\n return interfaceFunction.rotation;\r\n }\r\n\r\n if (shape.pt.ix === value) {\r\n return interfaceFunction.points;\r\n }\r\n\r\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\r\n return interfaceFunction.outerRadius;\r\n }\r\n\r\n if (shape.os.ix === value) {\r\n return interfaceFunction.outerRoundness;\r\n }\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\r\n if (shape.is && shape.is.ix === value) {\r\n return interfaceFunction.innerRoundness;\r\n }\r\n\r\n return null;\r\n }\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.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\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: {\r\n value: shape.nm\r\n }\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\r\n if (shape.r.ix === value) {\r\n return interfaceFunction.roundness;\r\n }\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\r\n return null;\r\n }\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 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: {\r\n value: shape.nm\r\n }\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\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n var prop = view;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n radius: {\r\n get: ExpressionPropertyInterface(prop.rd)\r\n },\r\n _name: {\r\n value: shape.nm\r\n }\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 }\r\n\r\n if (shape.o.ix === value || value === 'Offset') {\r\n return interfaceFunction.offset;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\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: {\r\n value: shape.nm\r\n }\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\r\n function _interfaceFunction(value) {\r\n if (typeof value === 'number') {\r\n value = value === undefined ? 1 : value;\r\n\r\n if (value === 0) {\r\n return propertyGroup;\r\n }\r\n\r\n return interfaces[value - 1];\r\n }\r\n\r\n var i = 0;\r\n var len = interfaces.length;\r\n\r\n while (i < len) {\r\n if (interfaces[i]._name === value) {\r\n return interfaces[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function parentGroupWrapper() {\r\n return propertyGroup;\r\n }\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 var TextExpressionInterface = function () {\r\n return function (elem) {\r\n var _prevValue;\r\n\r\n var _sourceText;\r\n\r\n function _thisLayerFunction(name) {\r\n switch (name) {\r\n case 'ADBE Text Document':\r\n return _thisLayerFunction.sourceText;\r\n\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\r\n get: function get() {\r\n elem.textProperty.getValue();\r\n var stringValue = elem.textProperty.currentData.t;\r\n\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\r\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\r\n }\r\n\r\n return _sourceText;\r\n }\r\n });\r\n return _thisLayerFunction;\r\n };\r\n }();\r\n\r\n function _typeof$2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\r\n\r\n var FootageInterface = function () {\r\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\r\n var currentPropertyName = '';\r\n var currentProperty = elem.getFootageData();\r\n\r\n function init() {\r\n currentPropertyName = '';\r\n currentProperty = elem.getFootageData();\r\n return searchProperty;\r\n }\r\n\r\n function searchProperty(value) {\r\n if (currentProperty[value]) {\r\n currentPropertyName = value;\r\n currentProperty = currentProperty[value];\r\n\r\n if (_typeof$2(currentProperty) === 'object') {\r\n return searchProperty;\r\n }\r\n\r\n return currentProperty;\r\n }\r\n\r\n var propertyNameIndex = value.indexOf(currentPropertyName);\r\n\r\n if (propertyNameIndex !== -1) {\r\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\r\n currentProperty = currentProperty[index];\r\n\r\n if (_typeof$2(currentProperty) === 'object') {\r\n return searchProperty;\r\n }\r\n\r\n return currentProperty;\r\n }\r\n\r\n return '';\r\n }\r\n\r\n return init;\r\n };\r\n\r\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\r\n function interfaceFunction(value) {\r\n if (value === 'Outline') {\r\n return interfaceFunction.outlineInterface();\r\n }\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\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 var interfaces = {\r\n layer: LayerExpressionInterface,\r\n effects: EffectsExpressionInterface,\r\n comp: CompExpressionInterface,\r\n shape: ShapeExpressionInterface,\r\n text: TextExpressionInterface,\r\n footage: FootageInterface\r\n };\r\n\r\n function getInterface(type) {\r\n return interfaces[type] || null;\r\n }\r\n\r\n function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\r\n\r\n /* eslint-disable */\r\n\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 function seedRandom(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,\r\n // each RC4 output is 0 <= x < 256\r\n chunks = 6,\r\n // at least six RC4 outputs for each double\r\n digits = 52,\r\n // there are 52 significant digits in a double\r\n rngname = 'random',\r\n // 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 // seedrandom()\r\n // This is the seedrandom function described above.\r\n //\r\n\r\n function seedrandom(seed, options, callback) {\r\n var key = [];\r\n options = options === true ? {\r\n entropy: true\r\n } : options || {}; // Flatten the seed string or build one from local entropy if needed.\r\n\r\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\r\n\r\n var arc4 = new ARC4(key); // 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\r\n var prng = function prng() {\r\n var n = arc4.g(chunks),\r\n // Start with a numerator n < 2 ^ 48\r\n d = startdenom,\r\n // and denominator d = 2 ^ 48.\r\n x = 0; // and no 'extra last byte'.\r\n\r\n while (n < significance) {\r\n // Fill up all significant digits by\r\n n = (n + x) * width; // shifting numerator and\r\n\r\n d *= width; // denominator and generating a\r\n\r\n x = arc4.g(1); // new least-significant-byte.\r\n }\r\n\r\n while (n >= overflow) {\r\n // To avoid rounding up, before adding\r\n n /= 2; // last byte, shift everything\r\n\r\n d /= 2; // right using integer math until\r\n\r\n x >>>= 1; // we have exactly the desired bits.\r\n }\r\n\r\n return (n + x) / d; // Form the number within [0, 1).\r\n };\r\n\r\n prng.int32 = function () {\r\n return arc4.g(4) | 0;\r\n };\r\n\r\n prng.quick = function () {\r\n return arc4.g(4) / 0x100000000;\r\n };\r\n\r\n prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\r\n\r\n mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\r\n\r\n return (options.pass || callback || 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) {\r\n copy(state, arc4);\r\n } // Only provide the .state method if requested via options.state.\r\n\r\n\r\n prng.state = function () {\r\n return copy(arc4, {});\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\r\n\r\n if (is_math_call) {\r\n math[rngname] = prng;\r\n return seed;\r\n } // Otherwise, it is a newer calling convention, so return the\r\n // prng directly.\r\n else return prng;\r\n })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\r\n }\r\n\r\n math['seed' + rngname] = seedrandom; //\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\r\n function ARC4(key) {\r\n var t,\r\n keylen = key.length,\r\n me = this,\r\n i = 0,\r\n j = me.i = me.j = 0,\r\n s = me.S = []; // The empty key [] is treated as [0].\r\n\r\n if (!keylen) {\r\n key = [keylen++];\r\n } // Set up S using the standard key scheduling algorithm.\r\n\r\n\r\n while (i < width) {\r\n s[i] = i++;\r\n }\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 } // The \"g\" method returns the next (count) outputs as one number.\r\n\r\n\r\n me.g = function (count) {\r\n // Using instance members instead of closure state nearly doubles speed.\r\n var t,\r\n r = 0,\r\n i = me.i,\r\n j = me.j,\r\n s = me.S;\r\n\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\r\n me.i = i;\r\n me.j = j;\r\n return r; // 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 // copy()\r\n // Copies internal state of ARC4 to or from a plain object.\r\n //\r\n\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 // flatten()\r\n // Converts an object tree to nested arrays of strings.\r\n //\r\n\r\n\r\n function flatten(obj, depth) {\r\n var result = [],\r\n typ = _typeof$1(obj),\r\n prop;\r\n\r\n if (depth && typ == 'object') {\r\n for (prop in obj) {\r\n try {\r\n result.push(flatten(obj[prop], depth - 1));\r\n } catch (e) {}\r\n }\r\n }\r\n\r\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\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\r\n\r\n function mixkey(seed, key) {\r\n var stringseed = seed + '',\r\n smear,\r\n j = 0;\r\n\r\n while (j < stringseed.length) {\r\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\r\n }\r\n\r\n return tostring(key);\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\r\n\r\n function autoseed() {\r\n try {\r\n if (nodecrypto) {\r\n return tostring(nodecrypto.randomBytes(width));\r\n }\r\n\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 // tostring()\r\n // Converts an array of charcodes to a string\r\n //\r\n\r\n\r\n function tostring(a) {\r\n return String.fromCharCode.apply(0, a);\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\r\n\r\n mixkey(math.random(), pool); //\r\n // Nodejs and AMD support: export the implementation as a module using\r\n // either convention.\r\n //\r\n // End anonymous scope, and pass initial values.\r\n }\r\n\r\n ;\r\n\r\n function initialize$2(BMMath) {\r\n seedRandom([], BMMath);\r\n }\r\n\r\n var propTypes = {\r\n SHAPE: 'shape'\r\n };\r\n\r\n function _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); }\r\n\r\n var 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 initialize$2(BMMath);\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\r\n if (tOfA === 'number' || tOfA === 'boolean' || a instanceof Number) {\r\n return -a;\r\n }\r\n\r\n if ($bm_isInstanceOfArray(a)) {\r\n var i;\r\n var lenA = a.length;\r\n var retArr = [];\r\n\r\n for (i = 0; i < lenA; i += 1) {\r\n retArr[i] = -a[i];\r\n }\r\n\r\n return retArr;\r\n }\r\n\r\n if (a.propType) {\r\n return a.v;\r\n }\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\r\n var tOfB = _typeof(b);\r\n\r\n if (tOfA === 'string' || tOfB === 'string') {\r\n return a + b;\r\n }\r\n\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a + b;\r\n }\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\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\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\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\r\n i += 1;\r\n }\r\n\r\n return retArr;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n var add = sum;\r\n\r\n function sub(a, b) {\r\n var tOfA = _typeof(a);\r\n\r\n var tOfB = _typeof(b);\r\n\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n if (tOfA === 'string') {\r\n a = parseInt(a, 10);\r\n }\r\n\r\n if (tOfB === 'string') {\r\n b = parseInt(b, 10);\r\n }\r\n\r\n return a - b;\r\n }\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\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\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\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\r\n i += 1;\r\n }\r\n\r\n return retArr;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n function mul(a, b) {\r\n var tOfA = _typeof(a);\r\n\r\n var tOfB = _typeof(b);\r\n\r\n var arr;\r\n\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\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n len = a.length;\r\n arr = createTypedArray('float32', len);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a[i] * b;\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n len = b.length;\r\n arr = createTypedArray('float32', len);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a * b[i];\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n function div(a, b) {\r\n var tOfA = _typeof(a);\r\n\r\n var tOfB = _typeof(b);\r\n\r\n var arr;\r\n\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\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n len = a.length;\r\n arr = createTypedArray('float32', len);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a[i] / b;\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n len = b.length;\r\n arr = createTypedArray('float32', len);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a / b[i];\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n function mod(a, b) {\r\n if (typeof a === 'string') {\r\n a = parseInt(a, 10);\r\n }\r\n\r\n if (typeof b === 'string') {\r\n b = parseInt(b, 10);\r\n }\r\n\r\n return a % b;\r\n }\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\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\r\n var radians_to_degrees = radiansToDegrees;\r\n\r\n function degreesToRadians(val) {\r\n return val * degToRads;\r\n }\r\n\r\n var degrees_to_radians = radiansToDegrees;\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\r\n if (!arr2) {\r\n arr2 = helperLengthArray;\r\n }\r\n\r\n var i;\r\n var len = Math.min(arr1.length, arr2.length);\r\n var addedLength = 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\r\n }\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];\r\n var g = val[1];\r\n 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\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\r\n switch (max) {\r\n case r:\r\n h = (g - b) / d + (g < b ? 6 : 0);\r\n break;\r\n\r\n case g:\r\n h = (b - r) / d + 2;\r\n break;\r\n\r\n case b:\r\n h = (r - g) / d + 4;\r\n break;\r\n\r\n default:\r\n break;\r\n }\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 var r;\r\n var g;\r\n var b;\r\n\r\n if (s === 0) {\r\n r = l; // achromatic\r\n\r\n b = l; // achromatic\r\n\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\r\n if (tMax < tMin) {\r\n var _tMin = tMax;\r\n tMax = tMin;\r\n tMin = _tMin;\r\n }\r\n\r\n if (t <= tMin) {\r\n return value1;\r\n }\r\n\r\n if (t >= tMax) {\r\n return value2;\r\n }\r\n\r\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\r\n\r\n if (!value1.length) {\r\n return value1 + (value2 - value1) * perc;\r\n }\r\n\r\n var i;\r\n var len = value1.length;\r\n var arr = createTypedArray('float32', len);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\r\n }\r\n\r\n return arr;\r\n }\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\r\n if (max.length) {\r\n var i;\r\n var len = max.length;\r\n\r\n if (!min) {\r\n min = createTypedArray('float32', len);\r\n }\r\n\r\n var arr = createTypedArray('float32', len);\r\n var rnd = BMMath.random();\r\n\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = min[i] + rnd * (max[i] - min[i]);\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n if (min === undefined) {\r\n min = 0;\r\n }\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\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\r\n return path;\r\n }\r\n\r\n function initiateExpression(elem, data, property) {\r\n // Bail out if we don't want expressions\r\n function noOp(_value) {\r\n return _value;\r\n }\r\n\r\n if (!elem.globalData.renderConfig.runExpressions) {\r\n return noOp;\r\n }\r\n\r\n var val = data.x;\r\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\r\n\r\n var _needsRandom = val.indexOf('random') !== -1;\r\n\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 get() {\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 var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\r\n\r\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\r\n\r\n var numKeys = property.kf ? data.k.length : 0;\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\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(); // addedAmps[j] += -amp + amp*2*rnd;\r\n }\r\n\r\n iWiggle += 1;\r\n } // var rnd2 = BMMath.random();\r\n\r\n\r\n var periods = time * freq;\r\n var perc = periods - Math.floor(periods);\r\n var arr = createTypedArray('float32', lenWiggle);\r\n\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; // 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\r\n return arr;\r\n }\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\r\n if (t > 1) {\r\n t = 1;\r\n } else if (t < 0) {\r\n t = 0;\r\n }\r\n\r\n var mult = fn(t);\r\n\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\r\n for (iKey = 0; iKey < lenKey; iKey += 1) {\r\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\r\n }\r\n\r\n return arr;\r\n }\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\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\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\r\n break;\r\n }\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\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\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\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 lenKey = arr.length;\r\n\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\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\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\r\n if (!fps) {\r\n fps = elem.comp.globalData.frameRate;\r\n }\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\r\n return value.substring(init, end);\r\n }\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\r\n return value.substr(init, end);\r\n }\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\r\n function executeExpression(_value) {\r\n // globalData.pushExpression();\r\n value = _value;\r\n\r\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\r\n return value;\r\n }\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\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\r\n if (!transform) {\r\n transform = elem.layerInterface('ADBE Transform Group');\r\n $bm_transform = transform;\r\n\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\r\n if (!effect) {\r\n effect = thisLayer(4);\r\n }\r\n\r\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\r\n\r\n if (hasParent && !parent) {\r\n parent = elem.hierarchy[0].layerInterface;\r\n }\r\n\r\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\r\n\r\n if (_needsRandom) {\r\n seedRandom(randSeed + time);\r\n }\r\n\r\n if (needsVelocity) {\r\n velocity = velocityAtTime(time);\r\n }\r\n\r\n expression_function();\r\n this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\r\n // Changed this to a ternary operation because Rollup failed compiling it correctly\r\n\r\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\r\n return scoped_bm_rt;\r\n } // Bundlers will see these as dead code and unless we reference them\r\n\r\n\r\n executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\r\n return executeExpression;\r\n }\r\n\r\n ob.initiateExpression = initiateExpression;\r\n ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath];\r\n return ob;\r\n }();\r\n\r\n var 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\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\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\r\n if (v1.length) {\r\n var i;\r\n\r\n for (i = 0; i < v1.length; i += 1) {\r\n speed += Math.pow(v2[i] - v1[i], 2);\r\n }\r\n\r\n speed = Math.sqrt(speed) * 100;\r\n } else {\r\n speed = 0;\r\n }\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\r\n var delta = -0.001; // frameNum += this.elem.data.st;\r\n\r\n var v1 = this.getValueAtTime(frameNum);\r\n var v2 = this.getValueAtTime(frameNum + delta);\r\n var velocity;\r\n\r\n if (v1.length) {\r\n velocity = createTypedArray('float32', v1.length);\r\n var i;\r\n\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\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 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\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\r\n if (currentFrame <= lastKeyFrame) {\r\n return this.pv;\r\n }\r\n\r\n var cycleDuration;\r\n var firstKeyFrame;\r\n\r\n if (!durationFlag) {\r\n if (!duration || duration > keyframes.length - 1) {\r\n duration = keyframes.length - 1;\r\n }\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\r\n firstKeyFrame = lastKeyFrame - cycleDuration;\r\n }\r\n\r\n var i;\r\n var len;\r\n var ret;\r\n\r\n if (type === 'pingpong') {\r\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\r\n\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\r\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\r\n\r\n if (this.pv.length) {\r\n ret = new Array(initV.length);\r\n len = ret.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\r\n }\r\n\r\n return ret;\r\n }\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\r\n if (this.pv.length) {\r\n ret = new Array(lastValue.length);\r\n len = ret.length;\r\n\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\r\n return ret;\r\n }\r\n\r\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\r\n }\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 function loopIn(type, duration, durationFlag) {\r\n if (!this.k) {\r\n return this.pv;\r\n }\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\r\n if (currentFrame >= firstKeyFrame) {\r\n return this.pv;\r\n }\r\n\r\n var cycleDuration;\r\n var lastKeyFrame;\r\n\r\n if (!durationFlag) {\r\n if (!duration || duration > keyframes.length - 1) {\r\n duration = keyframes.length - 1;\r\n }\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\r\n lastKeyFrame = firstKeyFrame + cycleDuration;\r\n }\r\n\r\n var i;\r\n var len;\r\n var ret;\r\n\r\n if (type === 'pingpong') {\r\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\r\n\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\r\n if (this.pv.length) {\r\n ret = new Array(initV.length);\r\n len = ret.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\r\n }\r\n\r\n return ret;\r\n }\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\r\n if (this.pv.length) {\r\n ret = new Array(firstValue.length);\r\n len = ret.length;\r\n\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\r\n return ret;\r\n }\r\n\r\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\r\n }\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 function smooth(width, samples) {\r\n if (!this.k) {\r\n return this.pv;\r\n }\r\n\r\n width = (width || 0.4) * 0.5;\r\n samples = Math.floor(samples || 5);\r\n\r\n if (samples <= 1) {\r\n return this.pv;\r\n }\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\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\r\n var sampleValue;\r\n\r\n while (i < samples) {\r\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\r\n\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\r\n i += 1;\r\n }\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\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\r\n var matrix = this._transformCachingAtTime.v;\r\n matrix.cloneFromProps(this.pre.props);\r\n\r\n if (this.appliedTransformations < 1) {\r\n var anchor = this.a.getValueAtTime(time);\r\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, 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(scale[0] * this.s.mult, scale[1] * this.s.mult, 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\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).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\r\n }\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\r\n if (this.data.p.z) {\r\n var positionZ = this.pz.getValueAtTime(time);\r\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\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(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\r\n }\r\n\r\n return matrix; /// /\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\r\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\r\n var prop = getTransformProperty(elem, data, container);\r\n\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\r\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\r\n return prop;\r\n };\r\n\r\n var propertyGetProp = PropertyFactory.getProp;\r\n\r\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\r\n var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\r\n // prop.loopOut = loopOut;\r\n // prop.loopIn = loopIn;\r\n\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\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\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\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\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\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\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\r\n ShapeExpressions.prototype = {\r\n vertices: function vertices(prop, time) {\r\n if (this.k) {\r\n this.getValue();\r\n }\r\n\r\n var shapePath = this.v;\r\n\r\n if (time !== undefined) {\r\n shapePath = this.getValueAtTime(time, 0);\r\n }\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\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\r\n return arr;\r\n },\r\n points: function points(time) {\r\n return this.vertices('v', time);\r\n },\r\n inTangents: function inTangents(time) {\r\n return this.vertices('i', time);\r\n },\r\n outTangents: function outTangents(time) {\r\n return this.vertices('o', time);\r\n },\r\n isClosed: function isClosed() {\r\n return this.v.c;\r\n },\r\n pointOnPath: function pointOnPath(perc, time) {\r\n var shapePath = this.v;\r\n\r\n if (time !== undefined) {\r\n shapePath = this.getValueAtTime(time, 0);\r\n }\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\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\r\n i += 1;\r\n }\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\r\n return pt;\r\n },\r\n vectorOnPath: function vectorOnPath(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) {\r\n // eslint-disable-line eqeqeq\r\n perc = this.v.c;\r\n } else if (perc == 0) {\r\n // eslint-disable-line eqeqeq\r\n perc = 0.999;\r\n }\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\r\n if (magnitude === 0) {\r\n return [0, 0];\r\n }\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 tangentOnPath(perc, time) {\r\n return this.vectorOnPath(perc, time, 'tangent');\r\n },\r\n normalOnPath: function normalOnPath(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 var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\r\n\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\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\r\n if (prop.k) {\r\n elem.addDynamicProperty(prop);\r\n }\r\n\r\n return prop;\r\n };\r\n }\r\n\r\n function initialize$1() {\r\n addPropertyDecorator();\r\n }\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\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\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\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 function initialize() {\r\n addDecorator();\r\n }\r\n\r\n function SVGComposableEffect() {}\r\n\r\n SVGComposableEffect.prototype = {\r\n createMergeNode: function createMergeNode(resultId, ins) {\r\n var feMerge = createNS('feMerge');\r\n feMerge.setAttribute('result', resultId);\r\n var feMergeNode;\r\n var i;\r\n\r\n for (i = 0; i < ins.length; i += 1) {\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in', ins[i]);\r\n feMerge.appendChild(feMergeNode);\r\n feMerge.appendChild(feMergeNode);\r\n }\r\n\r\n return feMerge;\r\n }\r\n };\r\n\r\n function SVGTintFilter(filter, filterManager, elem, id, source) {\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', id + '_tint_1');\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', id + '_tint_2');\r\n filter.appendChild(feColorMatrix);\r\n this.matrixFilter = feColorMatrix;\r\n var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\r\n filter.appendChild(feMerge);\r\n }\r\n\r\n extendPrototype([SVGComposableEffect], SVGTintFilter);\r\n\r\n SVGTintFilter.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 function SVGFillFilter(filter, filterManager, elem, id) {\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 feColorMatrix.setAttribute('result', id);\r\n filter.appendChild(feColorMatrix);\r\n this.matrixFilter = feColorMatrix;\r\n }\r\n\r\n SVGFillFilter.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 function SVGStrokeEffect(fil, filterManager, elem) {\r\n this.initialized = false;\r\n this.filterManager = filterManager;\r\n this.elem = elem;\r\n this.paths = [];\r\n }\r\n\r\n SVGStrokeEffect.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\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\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\r\n for (i; i < len; i += 1) {\r\n path = createNS('path');\r\n groupPath.appendChild(path);\r\n this.paths.push({\r\n p: path,\r\n m: i\r\n });\r\n }\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(' + getLocationHref() + '#' + id + ')');\r\n\r\n while (elemChildren[0]) {\r\n g.appendChild(elemChildren[0]);\r\n }\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\r\n while (elemChildren.length) {\r\n this.elem.layerElement.removeChild(elemChildren[0]);\r\n }\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\r\n this.initialized = true;\r\n this.pathMasker = groupPath;\r\n };\r\n\r\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\r\n if (!this.initialized) {\r\n this.initialize();\r\n }\r\n\r\n var i;\r\n var len = this.paths.length;\r\n var mask;\r\n var path;\r\n\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\r\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\r\n path.setAttribute('d', mask.lastPath);\r\n }\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\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\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\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\r\n path.setAttribute('stroke-dasharray', dasharrayValue);\r\n }\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\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 function SVGTritoneFilter(filter, filterManager, elem, id) {\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 filter.appendChild(feColorMatrix);\r\n var feComponentTransfer = createNS('feComponentTransfer');\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n feComponentTransfer.setAttribute('result', id);\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 filter.appendChild(feComponentTransfer);\r\n }\r\n\r\n SVGTritoneFilter.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 }\r\n };\r\n\r\n function SVGProLevelsFilter(filter, filterManager, elem, id) {\r\n this.filterManager = filterManager;\r\n var effectElements = this.filterManager.effectElements;\r\n var feComponentTransfer = createNS('feComponentTransfer'); // Red\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 } // Green\r\n\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 } // Blue\r\n\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 } // Alpha\r\n\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 } // RGB\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 }\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 = createNS('feComponentTransfer');\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n feComponentTransfer.setAttribute('result', id);\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\n SVGProLevelsFilter.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\n SVGProLevelsFilter.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, {\r\n length: segments\r\n });\r\n var colorValue;\r\n var pos = 0;\r\n var outputDelta = outputWhite - outputBlack;\r\n var inputDelta = inputWhite - inputBlack;\r\n\r\n while (cnt <= 256) {\r\n perc = cnt / 256;\r\n\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\r\n table[pos] = colorValue;\r\n pos += 1;\r\n cnt += 256 / (segments - 1);\r\n }\r\n\r\n return table.join(' ');\r\n };\r\n\r\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var val;\r\n var effectElements = this.filterManager.effectElements;\r\n\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 function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\r\n var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\r\n var filterSize = filterManager.data.fs || globalFilterSize;\r\n filter.setAttribute('x', filterSize.x || globalFilterSize.x);\r\n filter.setAttribute('y', filterSize.y || globalFilterSize.y);\r\n filter.setAttribute('width', filterSize.width || globalFilterSize.width);\r\n filter.setAttribute('height', filterSize.height || globalFilterSize.height);\r\n this.filterManager = filterManager;\r\n var feGaussianBlur = createNS('feGaussianBlur');\r\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\r\n feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\r\n feGaussianBlur.setAttribute('stdDeviation', '0');\r\n this.feGaussianBlur = feGaussianBlur;\r\n filter.appendChild(feGaussianBlur);\r\n var feOffset = createNS('feOffset');\r\n feOffset.setAttribute('dx', '25');\r\n feOffset.setAttribute('dy', '0');\r\n feOffset.setAttribute('in', id + '_drop_shadow_1');\r\n feOffset.setAttribute('result', id + '_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', id + '_drop_shadow_3');\r\n this.feFlood = feFlood;\r\n filter.appendChild(feFlood);\r\n var feComposite = createNS('feComposite');\r\n feComposite.setAttribute('in', id + '_drop_shadow_3');\r\n feComposite.setAttribute('in2', id + '_drop_shadow_2');\r\n feComposite.setAttribute('operator', 'in');\r\n feComposite.setAttribute('result', id + '_drop_shadow_4');\r\n filter.appendChild(feComposite);\r\n var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\r\n filter.appendChild(feMerge); //\r\n }\r\n\r\n extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\r\n\r\n SVGDropShadowEffect.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\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\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\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 }\r\n };\r\n\r\n var _svgMatteSymbols = [];\r\n\r\n function 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\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\r\n var i = 0;\r\n var len = _svgMatteSymbols.length;\r\n\r\n while (i < len) {\r\n if (_svgMatteSymbols[i] === mask) {\r\n return _svgMatteSymbols[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\r\n var parentNode = mask.layerElement.parentNode;\r\n\r\n if (!parentNode) {\r\n return;\r\n }\r\n\r\n var children = parentNode.children;\r\n var i = 0;\r\n var len = children.length;\r\n\r\n while (i < len) {\r\n if (children[i] === mask.layerElement) {\r\n break;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n var nextChild;\r\n\r\n if (i <= len - 2) {\r\n nextChild = children[i + 1];\r\n }\r\n\r\n var useElem = createNS('use');\r\n useElem.setAttribute('href', '#' + symbolId);\r\n\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\n SVGMatte3Effect.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\r\n _svgMatteSymbols.push(mask);\r\n\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\r\n elem.setMatte(mask.layerId);\r\n };\r\n\r\n SVGMatte3Effect.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\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\r\n i += 1;\r\n }\r\n\r\n this.initialized = true;\r\n };\r\n\r\n SVGMatte3Effect.prototype.renderFrame = function () {\r\n if (!this.initialized) {\r\n this.initialize();\r\n }\r\n };\r\n\r\n function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\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 this.filterManager = filterManager;\r\n var feGaussianBlur = createNS('feGaussianBlur');\r\n feGaussianBlur.setAttribute('result', id);\r\n filter.appendChild(feGaussianBlur);\r\n this.feGaussianBlur = feGaussianBlur;\r\n }\r\n\r\n SVGGaussianBlurEffect.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; // Dimensions mapping:\r\n //\r\n // 1 -> horizontal & vertical\r\n // 2 -> horizontal only\r\n // 3 -> vertical only\r\n //\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\r\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\r\n\r\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\r\n //\r\n // 0 -> off -> duplicate\r\n // 1 -> on -> wrap\r\n\r\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\r\n\r\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\r\n }\r\n };\r\n\r\n registerRenderer('canvas', CanvasRenderer);\r\n registerRenderer('html', HybridRenderer);\r\n registerRenderer('svg', SVGRenderer); // Registering shape modifiers\r\n\r\n ShapeModifiers.registerModifier('tm', TrimModifier);\r\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\r\n ShapeModifiers.registerModifier('rp', RepeaterModifier);\r\n ShapeModifiers.registerModifier('rd', RoundCornersModifier);\r\n ShapeModifiers.registerModifier('zz', ZigZagModifier);\r\n ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\r\n\r\n setExpressionsPlugin(Expressions);\r\n setExpressionInterfaces(getInterface);\r\n initialize$1();\r\n initialize(); // Registering svg effects\r\n\r\n registerEffect(20, SVGTintFilter, true);\r\n registerEffect(21, SVGFillFilter, true);\r\n registerEffect(22, SVGStrokeEffect, false);\r\n registerEffect(23, SVGTritoneFilter, true);\r\n registerEffect(24, SVGProLevelsFilter, true);\r\n registerEffect(25, SVGDropShadowEffect, true);\r\n registerEffect(28, SVGMatte3Effect, false);\r\n registerEffect(29, SVGGaussianBlurEffect, true);\r\n\r\n return lottie;\r\n\r\n}));\r\n", "/**\n * Copyright 2021 Design Barn Inc.\n */\n\nimport { css } from \"lit\";\n\nexport default css`\n * {\n box-sizing: border-box;\n }\n\n :host {\n --lottie-player-toolbar-height: 35px;\n --lottie-player-toolbar-background-color: transparent;\n --lottie-player-toolbar-icon-color: #999;\n --lottie-player-toolbar-icon-hover-color: #222;\n --lottie-player-toolbar-icon-active-color: #555;\n --lottie-player-seeker-track-color: #ccc;\n --lottie-player-seeker-thumb-color: rgba(0, 107, 120, 0.8);\n --lottie-player-seeker-display: block;\n\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .main {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n }\n\n .animation {\n width: 100%;\n height: 100%;\n display: flex;\n }\n .animation.controls {\n height: calc(100% - 35px);\n }\n\n .toolbar {\n display: flex;\n align-items: center;\n justify-items: center;\n background-color: var(--lottie-player-toolbar-background-color);\n margin: 0 5px;\n height: 35px;\n }\n\n .toolbar button {\n cursor: pointer;\n fill: var(--lottie-player-toolbar-icon-color);\n display: flex;\n background: none;\n border: 0;\n padding: 0;\n outline: none;\n height: 100%;\n }\n\n .toolbar button:hover {\n fill: var(--lottie-player-toolbar-icon-hover-color);\n }\n\n .toolbar button.active {\n fill: var(--lottie-player-toolbar-icon-active-color);\n }\n\n .toolbar button.active:hover {\n fill: var(--lottie-player-toolbar-icon-hover-color);\n }\n\n .toolbar button:focus {\n outline: 1px dotted var(--lottie-player-toolbar-icon-active-color);\n }\n\n .toolbar button svg {\n }\n\n .toolbar button.disabled svg {\n display: none;\n }\n\n .seeker {\n -webkit-appearance: none;\n width: 95%;\n outline: none;\n background-color: var(--lottie-player-toolbar-background-color);\n display: var(--lottie-player-seeker-display);\n }\n\n .seeker::-webkit-slider-runnable-track {\n width: 100%;\n height: 5px;\n cursor: pointer;\n background: var(--lottie-player-seeker-track-color);\n border-radius: 3px;\n }\n .seeker::-webkit-slider-thumb {\n height: 15px;\n width: 15px;\n border-radius: 50%;\n background: var(--lottie-player-seeker-thumb-color);\n cursor: pointer;\n -webkit-appearance: none;\n margin-top: -5px;\n }\n .seeker:focus::-webkit-slider-runnable-track {\n background: #999;\n }\n .seeker::-moz-range-track {\n width: 100%;\n height: 5px;\n cursor: pointer;\n background: var(--lottie-player-seeker-track-color);\n border-radius: 3px;\n }\n .seeker::-moz-range-thumb {\n height: 15px;\n width: 15px;\n border-radius: 50%;\n background: var(--lottie-player-seeker-thumb-color);\n cursor: pointer;\n }\n .seeker::-ms-track {\n width: 100%;\n height: 5px;\n cursor: pointer;\n background: transparent;\n border-color: transparent;\n color: transparent;\n }\n .seeker::-ms-fill-lower {\n background: var(--lottie-player-seeker-track-color);\n border-radius: 3px;\n }\n .seeker::-ms-fill-upper {\n background: var(--lottie-player-seeker-track-color);\n border-radius: 3px;\n }\n .seeker::-ms-thumb {\n border: 0;\n height: 15px;\n width: 15px;\n border-radius: 50%;\n background: var(--lottie-player-seeker-thumb-color);\n cursor: pointer;\n }\n .seeker:focus::-ms-fill-lower {\n background: var(--lottie-player-seeker-track-color);\n }\n .seeker:focus::-ms-fill-upper {\n background: var(--lottie-player-seeker-track-color);\n }\n\n .error {\n display: flex;\n justify-content: center;\n height: 100%;\n align-items: center;\n }\n`;\n", "export const LOTTIE_PLAYER_VERSION = \"1.7.1\"; \nexport const LOTTIE_WEB_VERSION = \"^5.10.0\";\n", "// eslint-disable-next-line header/header\nimport { LitElement, html } from \"lit\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { TemplateResult } from \"lit/html.js\";\nimport * as lottie from \"lottie-web/build/player/lottie\";\n\nimport styles from \"./lottie-player.styles\";\nimport { LOTTIE_PLAYER_VERSION, LOTTIE_WEB_VERSION } from \"./versions\";\n\n// import ResizeObserver from \"resize-observer-polyfill\";\n\n// Define valid player states\nexport enum PlayerState {\n Destroyed = \"destroyed\",\n Error = \"error\",\n Frozen = \"frozen\",\n Loading = \"loading\",\n Paused = \"paused\",\n Playing = \"playing\",\n Stopped = \"stopped\",\n}\n\n// Define play modes\nexport enum PlayMode {\n Bounce = \"bounce\",\n Normal = \"normal\",\n}\n\n// Define player events\nexport enum PlayerEvents {\n Complete = \"complete\",\n Destroyed = \"destroyed\",\n Error = \"error\",\n Frame = \"frame\",\n Freeze = \"freeze\",\n Load = \"load\",\n Loop = \"loop\",\n Pause = \"pause\",\n Play = \"play\",\n Ready = \"ready\",\n Rendered = \"rendered\",\n Stop = \"stop\",\n}\n\nexport interface Versions {\n lottiePlayerVersion: string;\n lottieWebVersion: string;\n}\n\n/**\n * Parse a resource into a JSON object or a URL string\n */\nexport function parseSrc(src: string | object): string | object {\n if (typeof src === \"object\") {\n return src;\n }\n\n try {\n return JSON.parse(src);\n } catch (e) {\n // Try construct an absolute URL from the src URL\n const srcUrl: URL = new URL(src, window.location.href);\n\n return srcUrl.toString();\n }\n}\n\nfunction isLottie(json: Record): boolean {\n const mandatory: string[] = [\"v\", \"ip\", \"op\", \"layers\", \"fr\", \"w\", \"h\"];\n\n return mandatory.every((field: string) =>\n Object.prototype.hasOwnProperty.call(json, field)\n );\n}\n\nasync function fromURL(url: string): Promise> {\n if (typeof url !== \"string\") {\n throw new Error(`The url value must be a string`);\n }\n\n let json;\n\n try {\n // Try construct an absolute URL from the src URL\n const srcUrl: URL = new URL(url);\n\n // Fetch the JSON file from the URL\n const result: any = await fetch(srcUrl.toString());\n\n json = await result.json();\n } catch (err) {\n throw new Error(\n `An error occurred while trying to load the Lottie file from URL`\n );\n }\n\n return json;\n}\n/**\n * LottiePlayer web component class\n *\n * @export\n * @class LottiePlayer\n * @extends {LitElement}\n */\n@customElement(\"lottie-player\")\nexport class LottiePlayer extends LitElement {\n /**\n * Autoplay animation on load.\n */\n @property({ type: Boolean })\n public autoplay: boolean = false;\n\n /**\n * Background color.\n */\n @property({ type: String, reflect: true })\n public background?: string = \"transparent\";\n\n /**\n * Show controls.\n */\n @property({ type: Boolean })\n public controls: boolean = false;\n\n /**\n * Number of times to loop animation.\n */\n @property({ type: Number })\n public count?: number;\n\n /**\n * Player state.\n */\n @property({ type: String })\n public currentState: PlayerState = PlayerState.Loading;\n\n /**\n * Animation description for screen readers.\n */\n @property({ type: String })\n public description: string = \"Lottie animation\";\n\n /**\n * Direction of animation.\n */\n @property({ type: Number })\n public direction: number = 1;\n\n /**\n * Disable checking if the Lottie is valid before loading\n */\n @property({ type: Boolean })\n public disableCheck?: boolean = false;\n\n /**\n * Disable using shadow dom as the root\n */\n @property({ type: Boolean })\n public disableShadowDOM: boolean = false;\n\n /**\n * Whether to play on mouse hover\n */\n @property({ type: Boolean })\n public hover: boolean = false;\n\n /**\n * Intermission\n */\n @property()\n public intermission: number = 1;\n\n /**\n * Whether to loop animation.\n */\n @property({ type: Boolean, reflect: true })\n public loop: boolean = false;\n\n /**\n * Play mode.\n */\n @property()\n public mode: PlayMode = PlayMode.Normal;\n\n /**\n * Aspect ratio to pass to lottie-web.\n */\n @property({ type: String })\n public preserveAspectRatio: string = \"xMidYMid meet\";\n\n /**\n * Renderer to use.\n */\n @property({ type: String })\n public renderer: \"svg\" = \"svg\";\n\n /**\n * Viewbox size for renderer settings\n */\n @property({ type: String })\n public viewBoxSize?: string;\n\n /**\n * seeker\n */\n\n @property()\n public seeker: any;\n\n /**\n * Animation speed.\n */\n @property({ type: Number })\n public speed: number = 1;\n\n /**\n * Bodymovin JSON data or URL to JSON.\n */\n @property({ type: String })\n public src?: string;\n\n /**\n * Enable web workers\n */\n @property({ type: Boolean })\n public webworkers?: boolean;\n\n /**\n * Animation container.\n */\n @query(\".animation\")\n protected container!: HTMLElement;\n\n private _io: IntersectionObserver | undefined = undefined;\n\n // private _ro: ResizeObserver | undefined = undefined;\n private _lottie?: any;\n\n private _prevState?: any;\n\n private _counter: number = 1;\n\n /**\n * Configure and initialize lottie-web player instance.\n */\n public async load(src: string | object) {\n const options: any = {\n container: this.container,\n loop: false,\n autoplay: false,\n renderer: this.renderer,\n rendererSettings: {\n preserveAspectRatio: this.preserveAspectRatio,\n clearCanvas: false,\n progressiveLoad: true,\n hideOnTransparent: true,\n ...(this.viewBoxSize && { viewBoxSize: this.viewBoxSize }),\n },\n };\n\n // Load the resource information\n try {\n const srcParsed = parseSrc(src);\n let jsonData = {};\n let srcAttrib = typeof srcParsed === \"string\" ? \"path\" : \"animationData\";\n\n // Clear previous animation, if any\n if (this._lottie) {\n this._lottie.destroy();\n }\n\n if (this.webworkers) {\n lottie.useWebWorker(true);\n }\n\n // Initialize lottie player and load animation\n this._lottie = lottie.loadAnimation({\n ...options,\n\n [srcAttrib]: srcParsed,\n });\n\n // Attach the event listeners before we check the requested json file for errors\n this._attachEventListeners();\n\n if (!this.disableCheck) {\n // Fetch resource if src is a remote URL\n if (srcAttrib === \"path\") {\n jsonData = await fromURL(srcParsed as string);\n srcAttrib = \"animationData\";\n } else {\n jsonData = srcParsed;\n }\n\n if (!isLottie(jsonData)) {\n this.currentState = PlayerState.Error;\n this.dispatchEvent(new CustomEvent(PlayerEvents.Error));\n }\n }\n } catch (err) {\n this.currentState = PlayerState.Error;\n this.dispatchEvent(new CustomEvent(PlayerEvents.Error));\n }\n }\n\n /**\n * Returns the lottie-web instance used in the component.\n */\n public getLottie(): any {\n return this._lottie;\n }\n\n /**\n * Returns the lottie-web version and this player's version\n */\n public getVersions(): Versions {\n return {\n lottieWebVersion: LOTTIE_WEB_VERSION,\n lottiePlayerVersion: LOTTIE_PLAYER_VERSION,\n };\n }\n\n /**\n * Start playing animation.\n */\n public play() {\n if (!this._lottie) {\n return;\n }\n\n this._lottie.play();\n this.currentState = PlayerState.Playing;\n\n this.dispatchEvent(new CustomEvent(PlayerEvents.Play));\n }\n\n /**\n * Pause animation play.\n */\n public pause(): void {\n if (!this._lottie) {\n return;\n }\n\n this._lottie.pause();\n this.currentState = PlayerState.Paused;\n\n this.dispatchEvent(new CustomEvent(PlayerEvents.Pause));\n }\n\n /**\n * Stops animation play.\n */\n public stop(): void {\n if (!this._lottie) {\n return;\n }\n\n this._counter = 1;\n this._lottie.stop();\n this.currentState = PlayerState.Stopped;\n\n this.dispatchEvent(new CustomEvent(PlayerEvents.Stop));\n }\n\n /**\n * Destroy animation and lottie-player element.\n */\n public destroy(): void {\n if (!this._lottie) {\n return;\n }\n\n this._lottie.destroy();\n this._lottie = null;\n this.currentState = PlayerState.Destroyed;\n this.dispatchEvent(new CustomEvent(PlayerEvents.Destroyed));\n this.remove();\n }\n\n /**\n * Seek to a given frame.\n */\n public seek(value: number | string): void {\n if (!this._lottie) {\n return;\n }\n\n // Extract frame number from either number or percentage value\n const matches = /^(\\d+)(%?)$/.exec(value.toString());\n\n if (!matches) {\n return;\n }\n\n // Calculate and set the frame number\n const frame =\n matches[2] === \"%\"\n ? (this._lottie.totalFrames * Number(matches[1])) / 100\n : Number(matches[1]);\n\n // Set seeker to new frame number\n this.seeker = frame;\n\n // Send lottie player to the new frame\n if (this.currentState === PlayerState.Playing) {\n this._lottie.goToAndPlay(frame, true);\n } else {\n this._lottie.goToAndStop(frame, true);\n this._lottie.pause();\n }\n }\n\n /**\n * Snapshot the current frame as SVG.\n *\n * If 'download' argument is boolean true, then a download is triggered in browser.\n */\n public snapshot(download: boolean = true): string | void {\n if (!this.shadowRoot) return;\n\n // Get SVG element and serialize markup\n const svgElement = this.shadowRoot.querySelector(\".animation svg\") as Node;\n const data = new XMLSerializer().serializeToString(svgElement);\n\n // Trigger file download\n if (download) {\n const element = document.createElement(\"a\");\n\n element.href = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(\n data\n )}`;\n element.download = `download_${this.seeker}.svg`;\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n }\n\n return data;\n }\n\n /**\n * Sets animation play speed.\n *\n * @param value Playback speed.\n */\n public setSpeed(value = 1): void {\n if (!this._lottie) {\n return;\n }\n\n this._lottie.setSpeed(value);\n }\n\n /**\n * Animation play direction.\n *\n * @param value Direction values.\n */\n public setDirection(value: number): void {\n if (!this._lottie) {\n return;\n }\n\n this._lottie.setDirection(value);\n }\n\n /**\n * Sets the looping of the animation.\n *\n * @param value Whether to enable looping. Boolean true enables looping.\n */\n public setLooping(value: boolean): void {\n if (this._lottie) {\n this.loop = value;\n this._lottie.loop = value;\n }\n }\n\n /**\n * Toggle playing state.\n */\n public togglePlay(): void {\n return this.currentState === PlayerState.Playing\n ? this.pause()\n : this.play();\n }\n\n /**\n * Toggles animation looping.\n */\n public toggleLooping(): void {\n this.setLooping(!this.loop);\n }\n\n /**\n * Resize animation.\n */\n public resize() {\n if (!this._lottie) {\n return;\n }\n\n this._lottie.resize();\n }\n\n /**\n * Returns the styles for the component.\n */\n static get styles() {\n return styles;\n }\n\n /**\n * Cleanup on component destroy.\n */\n public disconnectedCallback(): void {\n // Don't clean up if node is still connected to the context (i.e. this is a move).\n if (this.isConnected) return;\n\n // Remove intersection observer for detecting component being out-of-view.\n if (this._io) {\n this._io.disconnect();\n this._io = undefined;\n }\n\n // Remove resize observer for detecting resize/reflow events affecting element.\n // if (this._ro) {\n // this._ro.disconnect();\n // this._ro = undefined;\n // }\n\n // Remove the attached Visibility API's change event listener.\n document.removeEventListener(\"visibilitychange\", () =>\n this._onVisibilityChange()\n );\n\n // Destroy the animation instance and element\n this.destroy();\n }\n\n public render(): TemplateResult | void {\n const className: string = this.controls ? \"main controls\" : \"main\";\n const animationClass: string = this.controls\n ? \"animation controls\"\n : \"animation\";\n\n return html` \n \n ${this.currentState === PlayerState.Error\n ? html`
\u26A0\uFE0F
`\n : undefined}\n \n ${this.controls && !this.disableShadowDOM\n ? this.renderControls()\n : undefined}\n `;\n }\n\n protected createRenderRoot(): Element | ShadowRoot {\n if (this.disableShadowDOM) this.style.display = \"block\";\n\n return this.disableShadowDOM ? this : super.createRenderRoot();\n }\n\n /**\n * Initialize everything on component first render.\n */\n protected firstUpdated(): void {\n // Add intersection observer for detecting component being out-of-view.\n if (\"IntersectionObserver\" in window) {\n this._io = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n if (entries[0].isIntersecting) {\n if (this.currentState === PlayerState.Frozen) {\n this.play();\n }\n } else if (this.currentState === PlayerState.Playing) {\n this.freeze();\n }\n }\n );\n\n this._io.observe(this.container);\n }\n\n // Add listener for Visibility API's change event.\n if (typeof document.hidden !== \"undefined\") {\n document.addEventListener(\"visibilitychange\", () =>\n this._onVisibilityChange()\n );\n }\n\n // Setup lottie player\n if (this.src) {\n this.load(this.src);\n }\n this.dispatchEvent(new CustomEvent(PlayerEvents.Rendered));\n }\n\n protected renderControls(): TemplateResult {\n const isPlaying: boolean = this.currentState === PlayerState.Playing;\n const isPaused: boolean = this.currentState === PlayerState.Paused;\n const isStopped: boolean = this.currentState === PlayerState.Stopped;\n\n return html`\n \n \n ${isPlaying\n ? html`\n \n `\n : html`\n \n `}\n \n \n \n \n \n \n {\n this._prevState = this.currentState;\n this.freeze();\n }}\n @mouseup=${() => {\n this._prevState === PlayerState.Playing && this.play();\n }}\n aria-valuemin=\"1\"\n aria-valuemax=\"100\"\n role=\"slider\"\n aria-valuenow=${this.seeker}\n tabindex=\"0\"\n aria-label=\"lottie-seek-input\"\n />\n \n \n \n \n \n \n `;\n }\n\n /**\n * Handle visibility change events.\n */\n private _onVisibilityChange(): void {\n if (document.hidden === true && this.currentState === PlayerState.Playing) {\n this.freeze();\n } else if (this.currentState === PlayerState.Frozen) {\n this.play();\n }\n }\n\n /**\n * Handles click and drag actions on the progress track.\n */\n private _handleSeekChange(e: any): void {\n if (!this._lottie || isNaN(e.target.value)) {\n return;\n }\n\n const frame: number = (e.target.value / 100) * this._lottie.totalFrames;\n\n this.seek(frame);\n }\n\n private _attachEventListeners(): void {\n this._lottie.addEventListener(\"enterFrame\", () => {\n this.seeker =\n (this._lottie.currentFrame / this._lottie.totalFrames) * 100;\n\n this.dispatchEvent(\n new CustomEvent(PlayerEvents.Frame, {\n detail: {\n frame: this._lottie.currentFrame,\n seeker: this.seeker,\n },\n })\n );\n });\n\n // Handle animation play complete\n this._lottie.addEventListener(\"complete\", () => {\n if (this.currentState !== PlayerState.Playing) {\n this.dispatchEvent(new CustomEvent(PlayerEvents.Complete));\n\n return;\n }\n\n if (!this.loop || (this.count && this._counter >= this.count)) {\n this.dispatchEvent(new CustomEvent(PlayerEvents.Complete));\n\n if (this.mode === PlayMode.Bounce) {\n if (this._lottie.currentFrame === 0) {\n return;\n }\n } else {\n return;\n }\n }\n\n if (this.mode === PlayMode.Bounce) {\n if (this.count) {\n this._counter += 0.5;\n }\n\n setTimeout(() => {\n this.dispatchEvent(new CustomEvent(PlayerEvents.Loop));\n\n if (this.currentState === PlayerState.Playing) {\n this._lottie.setDirection(this._lottie.playDirection * -1);\n this._lottie.play();\n }\n }, this.intermission);\n } else {\n if (this.count) {\n this._counter += 1;\n }\n\n window.setTimeout(() => {\n this.dispatchEvent(new CustomEvent(PlayerEvents.Loop));\n\n if (this.currentState === PlayerState.Playing) {\n if (this.direction === -1) {\n // Prevents flickering\n this.seek(\"99%\");\n this.play();\n } else {\n this._lottie.stop();\n this._lottie.play();\n }\n }\n }, this.intermission);\n }\n });\n\n // Handle lottie-web ready event\n this._lottie.addEventListener(\"DOMLoaded\", () => {\n // Set initial playback speed and direction\n this.setSpeed(this.speed);\n this.setDirection(this.direction);\n\n // Start playing if autoplay is enabled\n if (this.autoplay) {\n if (this.direction === -1) this.seek(\"100%\");\n this.play();\n }\n\n this.dispatchEvent(new CustomEvent(PlayerEvents.Ready));\n });\n\n // Handle animation data load complete\n this._lottie.addEventListener(\"data_ready\", () => {\n this.dispatchEvent(new CustomEvent(PlayerEvents.Load));\n });\n\n // Set error state when animation load fail event triggers\n this._lottie.addEventListener(\"data_failed\", () => {\n this.currentState = PlayerState.Error;\n\n this.dispatchEvent(new CustomEvent(PlayerEvents.Error));\n });\n\n // Set handlers to auto play animation on hover if enabled\n this.container.addEventListener(\"mouseenter\", () => {\n if (this.hover && this.currentState !== PlayerState.Playing) {\n this.play();\n }\n });\n this.container.addEventListener(\"mouseleave\", () => {\n if (this.hover && this.currentState === PlayerState.Playing) {\n this.stop();\n }\n });\n }\n\n /**\n * Freeze animation play.\n * This internal state pauses animation and is used to differentiate between\n * user requested pauses and component instigated pauses.\n */\n private freeze(): void {\n if (!this._lottie) {\n return;\n }\n\n this._lottie.pause();\n this.currentState = PlayerState.Frozen;\n\n this.dispatchEvent(new CustomEvent(PlayerEvents.Freeze));\n }\n}\n", "const DEFAULT_OPTIONS = {\n player: 'lottie-player',\n};\nconst LOTTIE_PLAYER_NODE = 'LOTTIE-PLAYER';\nconst ERROR_PREFIX = '[lottieInteractivity]:';\n\n/**\n * LottieFiles interactivity for Lottie\n */\nexport class LottieInteractivity {\n constructor({ actions, container, mode, player, ...options } = DEFAULT_OPTIONS) {\n // Save the original player entered by user, used for interaction chaining / loading animations on the fly\n this.enteredPlayer = player;\n\n // Resolve lottie instance specified in player option\n if (!(typeof player === 'object' && player.constructor.name === 'AnimationItem')) {\n if (typeof player === 'string') {\n const elem = document.querySelector(player);\n\n if (elem && elem.nodeName === LOTTIE_PLAYER_NODE) {\n player = elem.getLottie();\n }\n } else if (player instanceof HTMLElement && player.nodeName === LOTTIE_PLAYER_NODE) {\n player = player.getLottie();\n }\n\n // Throw error no player instance has been successfully resolved\n if (!player) {\n let message = ERROR_PREFIX + \"Specified player:\" + player + \" is invalid.\";\n\n throw new Error(message);\n }\n }\n\n // Get the configured container element.\n if (typeof container === 'string') {\n container = document.querySelector(container);\n }\n\n // Use player wrapper as fallback if container couldn't be resolved.\n if (!container) {\n container = player.wrapper;\n }\n\n this.player = player;\n this.loadedAnimation = this.player.path + this.player.fileName + \".json\";\n this.attachedListeners = false;\n this.container = container;\n this.mode = mode;\n this.actions = actions;\n this.options = options;\n this.assignedSegment = null;\n this.scrolledAndPlayed = false;\n\n // Interaction chaining\n this.interactionIdx = 0;\n this.oldInterctionIdx = 0;\n this.clickCounter = 0;\n this.playCounter = 0;\n this.stateHandler = new Map();\n this.transitionHandler = new Map();\n }\n\n getContainerVisibility() {\n // Get the bounding box for the lottie player or container\n const { top, height } = this.container.getBoundingClientRect();\n\n // Calculate current view percentage\n const current = window.innerHeight - top;\n const max = window.innerHeight + height;\n return current / max;\n }\n\n getContainerCursorPosition(cursorX, cursorY) {\n const { top, left, width, height } = this.container.getBoundingClientRect();\n\n const x = (cursorX - left) / width;\n const y = (cursorY - top) / height;\n\n return { x, y };\n }\n\n initScrollMode() {\n this.player.stop();\n window.addEventListener('scroll', this.#scrollHandler, true);\n }\n\n initCursorMode() {\n // To have click and hover interaction, force to only have that type and single action\n // If there are multiple actions, click and hover are ignored\n if (this.actions &&\n this.actions.length === 1) {\n if (this.actions[0].type === \"click\") {\n this.player.loop = false;\n this.player.stop();\n this.container.addEventListener('click', this.#clickHoverHandler);\n } else if (this.actions[0].type === \"hover\") {\n this.player.loop = false;\n this.player.stop();\n this.container.addEventListener('mouseenter', this.#clickHoverHandler);\n\n // For mobile\n this.container.addEventListener('touchstart', this.#clickHoverHandler, { passive: true });\n } else if (this.actions[0].type === \"toggle\") {\n this.player.loop = false;\n this.player.stop();\n this.container.addEventListener('click', this.#toggleHandler);\n } else if (this.actions[0].type === \"hold\" || this.actions[0].type === \"pauseHold\") {\n this.container.addEventListener('mouseenter', this.#holdTransitionEnter);\n this.container.addEventListener('mouseleave', this.#holdTransitionLeave);\n\n // For mobile\n this.container.addEventListener('touchstart', this.#holdTransitionEnter, { passive: true });\n this.container.addEventListener('touchend', this.#holdTransitionLeave, { passive: true });\n\n } else if (this.actions[0].type === \"seek\") {\n this.player.loop = true;\n this.player.stop();\n this.container.addEventListener('mousemove', this.#mousemoveHandler);\n // For mobile\n this.container.addEventListener('touchmove', this.#touchmoveHandler, { passive: false });\n this.container.addEventListener('mouseout', this.#mouseoutHandler);\n }\n } else {\n this.player.loop = true;\n this.player.stop();\n this.container.addEventListener('mousemove', this.#mousemoveHandler);\n this.container.addEventListener('mouseleave', this.#mouseoutHandler);\n\n // Init the animations that set states when the cursor is outside the container, so that they\n // are visibly idle at the desired frame before first interaction with them\n this.#cursorHandler(-1, -1);\n }\n }\n\n initChainMode() {\n this.#initInteractionMaps();\n this.player.loop = false;\n this.player.stop();\n this.#chainedInteractionHandler({ ignorePath: false });\n }\n\n start() {\n if (this.mode === 'scroll') {\n if (this.player.isLoaded) {\n this.initScrollMode();\n } else {\n this.player.addEventListener('DOMLoaded', () => {\n this.initScrollMode();\n });\n }\n } else if (this.mode === 'cursor') {\n if (this.player.isLoaded) {\n this.initCursorMode();\n } else {\n this.player.addEventListener('DOMLoaded', () => {\n this.initCursorMode();\n });\n }\n } else if (this.mode === 'chain') {\n // When passing animation object to LI the player is already loaded\n if (this.player.isLoaded) {\n this.initChainMode();\n } else {\n this.player.addEventListener('DOMLoaded', () => {\n this.initChainMode();\n });\n }\n }\n }\n\n redefineOptions({ actions, container, mode, player, ...options }) {\n this.stop();\n\n // Save the original player entered by user, used for interaction chaining / loading animations on the fly\n this.enteredPlayer = player;\n\n // Resolve lottie instance specified in player option\n if (!(typeof player === 'object' && player.constructor.name === 'AnimationItem')) {\n if (typeof player === 'string') {\n const elem = document.querySelector(player);\n\n if (elem && elem.nodeName === LOTTIE_PLAYER_NODE) {\n player = elem.getLottie();\n }\n } else if (player instanceof HTMLElement && player.nodeName === LOTTIE_PLAYER_NODE) {\n player = player.getLottie();\n }\n\n // Throw error no player instance has been successfully resolved\n if (!player) {\n let message = ERROR_PREFIX + \"Specified player:\" + player + \" is invalid.\";\n\n throw new Error(message, player);\n }\n }\n\n // Get the configured container element.\n if (typeof container === 'string') {\n container = document.querySelector(container);\n }\n\n // Use player wrapper as fallback if container couldn't be resolved.\n if (!container) {\n container = player.wrapper;\n }\n\n this.player = player;\n this.loadedAnimation = this.player.path + this.player.fileName + \".json\";\n this.attachedListeners = false;\n this.container = container;\n this.mode = mode;\n this.actions = actions;\n this.options = options;\n this.assignedSegment = null;\n this.scrolledAndPlayed = false;\n\n // Interaction chaining\n this.interactionIdx = 0;\n this.clickCounter = 0;\n this.playCounter = 0;\n this.holdStatus = null;\n this.stateHandler = new Map();\n this.transitionHandler = new Map();\n\n this.start();\n }\n\n stop() {\n if (this.mode === 'scroll') {\n window.removeEventListener('scroll', this.#scrollHandler, true);\n }\n\n if (this.mode === 'cursor') {\n this.container.removeEventListener('click', this.#clickHoverHandler);\n this.container.removeEventListener('click', this.#toggleHandler);\n this.container.removeEventListener('mouseenter', this.#clickHoverHandler);\n this.container.removeEventListener('touchstart', this.#clickHoverHandler);\n this.container.removeEventListener('touchmove', this.#touchmoveHandler);\n this.container.removeEventListener('mousemove', this.#mousemoveHandler);\n this.container.removeEventListener('mouseleave', this.#mouseoutHandler);\n this.container.removeEventListener('touchstart', this.#holdTransitionEnter);\n this.container.removeEventListener('touchend', this.#holdTransitionLeave);\n }\n\n if (this.mode === 'chain') {\n this.container.removeEventListener('click', this.#clickHoverHandler);\n this.container.removeEventListener('click', this.#clickHoverStateHandler);\n\n this.container.removeEventListener('mouseenter', this.#clickHoverHandler);\n this.container.removeEventListener('touchstart', this.#clickHoverHandler);\n this.container.removeEventListener('touchmove', this.#touchmoveHandler);\n this.container.removeEventListener('mouseenter', this.#clickHoverStateHandler);\n this.container.removeEventListener('touchstart', this.#clickHoverStateHandler);\n this.container.removeEventListener('mouseenter', this.#holdTransitionEnter);\n this.container.removeEventListener('touchstart', this.#holdTransitionEnter);\n\n this.container.removeEventListener('mouseleave', this.#holdTransitionLeave);\n this.container.removeEventListener('mousemove', this.#mousemoveHandler);\n this.container.removeEventListener('mouseout', this.#mouseoutHandler);\n this.container.removeEventListener('touchend', this.#holdTransitionLeave);\n\n if (this.player) {\n try {\n this.player.removeEventListener('loopComplete', this.#onCompleteHandler);\n this.player.removeEventListener('complete', this.#onCompleteHandler);\n this.player.removeEventListener('enterFrame', this.#cursorSyncHandler);\n this.player.removeEventListener('enterFrame', this.#holdHandler);\n } catch (e) {\n // User deleted the player before calling stop()\n // Ignore\n }\n }\n }\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n\n /**\n * [chain mode]\n * Init the state and transitions maps containing all the state and transition methods used for interaction chaining\n */\n #initInteractionMaps = () => {\n if (!this.player)\n return;\n\n let loopState = () => {\n if (this.actions[this.interactionIdx].loop) {\n this.player.loop = parseInt(this.actions[this.interactionIdx].loop) - 1;\n } else {\n this.player.loop = true;\n }\n this.player.autoplay = true;\n }\n let autoplayState = () => {\n this.player.loop = false;\n this.player.autoplay = true;\n }\n let clickState = () => {\n this.player.loop = false;\n this.player.autoplay = false;\n this.container.addEventListener('click', this.#clickHoverStateHandler);\n }\n let hoverState = () => {\n this.player.loop = false;\n this.player.autoplay = false;\n this.container.addEventListener('mouseenter', this.#clickHoverStateHandler);\n // For mobile\n this.container.addEventListener('touchstart', this.#clickHoverStateHandler, { passive: true });\n }\n let clickTransition = () => {\n this.container.addEventListener('click', this.#clickHoverHandler);\n }\n let hoverTransition = () => {\n this.container.addEventListener('mouseenter', this.#clickHoverHandler);\n // For mobile\n this.container.addEventListener('touchstart', this.#clickHoverHandler, { passive: true });\n }\n let holdTransition = () => {\n this.player.addEventListener('enterFrame', this.#holdHandler);\n this.container.addEventListener('mouseenter', this.#holdTransitionEnter);\n this.container.addEventListener('mouseleave', this.#holdTransitionLeave);\n // For mobile\n this.container.addEventListener('touchstart', this.#holdTransitionEnter, { passive: true });\n this.container.addEventListener('touchend', this.#holdTransitionLeave, { passive: true });\n }\n let holdState = () => {\n this.container.addEventListener('mouseenter', this.#holdTransitionEnter);\n this.container.addEventListener('mouseleave', this.#holdTransitionLeave);\n // For mobile\n this.container.addEventListener('touchstart', this.#holdTransitionEnter, { passive: true });\n this.container.addEventListener('touchend', this.#holdTransitionLeave, { passive: true });\n }\n let repeatTransition = () => {\n this.player.loop = true;\n this.player.autoplay = true;\n let handler = () => { this.#repeatTransition({ handler }) };\n this.player.addEventListener('loopComplete', handler);\n }\n let onCompleteTransition = () => {\n let state = this.actions[this.interactionIdx].state;\n\n if (state === 'loop')\n this.player.addEventListener('loopComplete', this.#onCompleteHandler);\n else\n this.player.addEventListener('complete', this.#onCompleteHandler);\n }\n let cursorSyncTransition = () => {\n this.player.stop();\n this.player.addEventListener('enterFrame', this.#cursorSyncHandler);\n this.container.addEventListener('mousemove', this.#mousemoveHandler);\n this.container.addEventListener('touchmove', this.#touchmoveHandler, { passive: false });\n this.container.addEventListener('mouseout', this.#mouseoutHandler);\n }\n this.stateHandler.set('loop', loopState);\n this.stateHandler.set('autoplay', autoplayState);\n this.stateHandler.set('click', clickState);\n this.stateHandler.set('hover', hoverState);\n this.stateHandler.set('hold', holdState);\n this.stateHandler.set('pauseHold', holdState);\n\n this.transitionHandler.set('click', clickTransition);\n this.transitionHandler.set('hover', hoverTransition);\n this.transitionHandler.set('hold', holdTransition);\n this.transitionHandler.set('pauseHold', holdTransition);\n this.transitionHandler.set('repeat', repeatTransition);\n this.transitionHandler.set('onComplete', onCompleteTransition);\n this.transitionHandler.set('seek', cursorSyncTransition);\n }\n\n /**\n * [chain mode]\n * Handle hover state on chained interactions\n */\n #clickHoverStateHandler = () => {\n let forceFlag = this.actions[this.interactionIdx].forceFlag;\n\n if (!forceFlag && this.player.isPaused === true) {\n this.#playSegmentHandler(true);\n } else if (forceFlag) {\n this.#playSegmentHandler(true);\n }\n }\n\n // [cursor mode]\n #toggleHandler = () => {\n if (this.clickCounter === 0) {\n this.player.play();\n this.clickCounter++;\n } else {\n this.clickCounter++;\n this.player.setDirection(this.player.playDirection * -1);\n this.player.play();\n }\n }\n\n /**\n * [cursor + chain mode]\n * Handle click and hover in both cursor and chain mode\n */\n #clickHoverHandler = () => {\n let forceFlag = this.actions[this.interactionIdx].forceFlag;\n let state = this.actions[this.interactionIdx].state;\n let transition = this.actions[this.interactionIdx].transition;\n\n // If we're in chain mode and the click or hover transition is used, otherwise just play the animation\n if (this.mode === 'chain') {\n // Check if there is a counter or not and make a transition\n if (this.actions[this.interactionIdx].count) {\n let clickLimit = parseInt(this.actions[this.interactionIdx].count);\n if (this.clickCounter < clickLimit - 1) {\n this.clickCounter += 1;\n return;\n }\n }\n // No click counter, so we remove the listeners and got to next interaction\n this.clickCounter = 0;\n // Transition when the animation has finished playing\n if (!forceFlag && (transition === \"click\" && state === \"click\") || (transition === \"hover\" && state === \"hover\"))\n this.transitionHandler.get(\"onComplete\").call();\n else\n this.nextInteraction();\n this.container.removeEventListener('click', this.#clickHoverHandler);\n this.container.removeEventListener('mouseenter', this.#clickHoverHandler);\n return;\n }\n // Using goToAndPlay rather than this.#playSegmentHandler(forceFlag) because we're in cursor mode\n // there for we want to play from the beginning\n if (!forceFlag && this.player.isPaused === true) {\n this.player.goToAndPlay(0, true);\n } else if (forceFlag) {\n this.player.goToAndPlay(0, true);\n }\n }\n\n // [cursor mode]\n #mousemoveHandler = e => {\n this.#cursorHandler(e.clientX, e.clientY);\n };\n\n // [cursor mode]\n #touchmoveHandler = e => {\n // Allows for syncing on Y axis without scrolling the page\n if (e.cancelable)\n e.preventDefault();\n this.#cursorHandler(e.touches[0].clientX, e.touches[0].clientY);\n };\n\n // [cursor mode]\n #mouseoutHandler = () => {\n this.#cursorHandler(-1, -1);\n };\n\n\n /**\n * [chain mode]\n * Handle when a segment of the animation has finished playing\n */\n #onCompleteHandler = () => {\n if (this.actions[this.interactionIdx].state === 'loop') {\n this.player.removeEventListener('loopComplete', this.#onCompleteHandler);\n } else {\n this.player.removeEventListener('complete', this.#onCompleteHandler);\n }\n this.nextInteraction();\n }\n\n // [chain mode]\n #repeatTransition = ({ handler }) => {\n let repeatAmount = 1;\n\n if (this.actions[this.interactionIdx].repeat)\n repeatAmount = this.actions[this.interactionIdx].repeat;\n if (this.playCounter >= repeatAmount - 1) {\n this.playCounter = 0;\n this.player.removeEventListener('loopComplete', handler);\n this.player.loop = false;\n this.player.autoplay = false;\n this.nextInteraction();\n } else {\n this.playCounter += 1;\n }\n }\n\n /**\n * [chain mode]\n * TODO: How does this work with markers? Get marker duration?\n */\n #cursorSyncHandler = () => {\n let frames = this.actions[this.interactionIdx].frames;\n\n if (frames && this.player.currentFrame >= parseInt(frames[1]) - 1) {\n this.player.removeEventListener('enterFrame', this.#cursorSyncHandler);\n this.container.removeEventListener('mousemove', this.#mousemoveHandler);\n this.container.removeEventListener('mouseout', this.#mouseoutHandler);\n setTimeout(this.nextInteraction, 0);\n }\n }\n\n /**\n * [chain mode]\n * TODO: How does this work with markers? Get marker duration?\n *\n * With the hold transition we can't use playSegment so we have to manually verify if\n * The user held long enough and check if the current frame is within the segment limits\n *\n */\n #holdHandler = () => {\n let frames = this.actions[this.interactionIdx].frames;\n\n if ((frames && this.player.currentFrame >= frames[1]) || (this.player.currentFrame >= this.player.totalFrames - 1)) {\n this.player.removeEventListener('enterFrame', this.#holdHandler);\n this.container.removeEventListener('mouseenter', this.#holdTransitionEnter);\n this.container.removeEventListener('mouseleave', this.#holdTransitionLeave);\n // For mobile\n this.container.removeEventListener('touchstart', this.#holdTransitionEnter, { passive: true });\n this.container.removeEventListener('touchend', this.#holdTransitionLeave, { passive: true });\n this.player.pause();\n\n this.holdStatus = false;\n this.nextInteraction();\n }\n // Pause player so that reverse playback doesn't leave the set frame boundries\n if (this.player.playDirection === -1 && frames && this.player.currentFrame < frames[0]) {\n this.player.pause();\n }\n }\n\n // [cursor + chain mode]\n #holdTransitionEnter = () => {\n // On first cursor enter needs check\n if (this.player.playDirection === -1 || this.holdStatus === null || !this.holdStatus) {\n this.player.setDirection(1);\n this.player.play();\n this.holdStatus = true;\n }\n }\n\n // [cursor + chain mode]\n #holdTransitionLeave = () => {\n if (this.actions[this.interactionIdx].transition === \"hold\" ||\n this.actions[this.interactionIdx].state === \"hold\" ||\n this.actions[0].type === \"hold\") {\n this.player.setDirection(-1);\n this.player.play();\n } else if (this.actions[this.interactionIdx].transition === \"pauseHold\" ||\n this.actions[this.interactionIdx].state === \"pauseHold\" ||\n this.actions[0].type === \"pauseHold\") {\n this.player.pause();\n }\n this.holdStatus = false;\n }\n\n // [chain mode]\n #clearStateListeners = () => {\n this.container.removeEventListener('click', this.#clickHoverHandler);\n this.container.removeEventListener('click', this.#clickHoverStateHandler);\n\n this.container.removeEventListener('mouseenter', this.#clickHoverHandler);\n this.container.removeEventListener('touchstart', this.#clickHoverHandler);\n this.container.removeEventListener('touchmove', this.#touchmoveHandler);\n this.container.removeEventListener('mouseenter', this.#clickHoverStateHandler);\n this.container.removeEventListener('touchstart', this.#clickHoverStateHandler);\n this.container.removeEventListener('mouseenter', this.#holdTransitionEnter);\n this.container.removeEventListener('touchstart', this.#holdTransitionEnter);\n\n this.container.removeEventListener('mouseleave', this.#holdTransitionLeave);\n this.container.removeEventListener('mousemove', this.#mousemoveHandler);\n this.container.removeEventListener('mouseout', this.#mouseoutHandler);\n this.container.removeEventListener('touchend', this.#holdTransitionLeave);\n\n if (this.player) {\n try {\n this.player.removeEventListener('loopComplete', this.#onCompleteHandler);\n this.player.removeEventListener('complete', this.#onCompleteHandler);\n this.player.removeEventListener('enterFrame', this.#cursorSyncHandler);\n this.player.removeEventListener('enterFrame', this.#holdHandler);\n } catch (e) {\n // User deleted the player before calling stop()\n // Ignore\n }\n }\n }\n\n jumpToInteraction = (index) => {\n this.#clearStateListeners();\n this.interactionIdx = index;\n this.interactionIdx < 0 ? this.interactionIdx = 0 : this.interactionIdx;\n this.nextInteraction(false);\n }\n\n // [chain mode]\n nextInteraction = (incrementIndex = true) => {\n this.oldInterctionIdx = this.interactionIdx;\n // If state is hover or click we need to remove listeners\n this.#clearStateListeners();\n this.player.loop = false;\n\n // Check if theres a jump-to before incrementing\n let jumpToIndex = this.actions[this.interactionIdx].jumpTo;\n if (jumpToIndex) {\n // If jumpToIndex is inside action length jump to it otherwise go to first action\n if (jumpToIndex >= 0 && jumpToIndex < this.actions.length) {\n this.interactionIdx = jumpToIndex;\n this.#chainedInteractionHandler({ ignorePath: false });\n } else {\n this.interactionIdx = 0;\n this.player.goToAndStop(0, true);\n this.#chainedInteractionHandler({ ignorePath: false });\n }\n } else {\n // Go to next interaction\n if (incrementIndex)\n this.interactionIdx++;\n if (this.interactionIdx >= this.actions.length) {\n // Go back to the first interaction\n if (this.actions[this.actions.length - 1].reset) {\n this.interactionIdx = 0;\n this.player.resetSegments(true);\n if (this.actions[this.interactionIdx].frames)\n this.player.goToAndStop(this.actions[this.interactionIdx].frames, true);\n else\n this.player.goToAndStop(0, true);\n this.#chainedInteractionHandler({ ignorePath: false });\n }\n else {\n this.interactionIdx = this.actions.length - 1;\n this.#chainedInteractionHandler({ ignorePath: false });\n }\n } else {\n this.#chainedInteractionHandler({ ignorePath: false });\n }\n }\n\n // Emit event from the lottie-player element\n this.container.dispatchEvent(new CustomEvent(\"transition\", {\n bubbles: true,\n composed: true,\n detail: { oldIndex: this.oldInterctionIdx, newIndex: this.interactionIdx }\n }));\n }\n\n /**\n * [chain mode]\n * Checks if frames are an array or string, and calls appropriate method to play animation\n */\n #playSegmentHandler = (forceFlag) => {\n let frames = this.actions[this.interactionIdx].frames;\n\n //If no frame segment is defined, play the whole animation\n if (!frames) {\n this.player.resetSegments(true);\n this.player.goToAndPlay(0, true);\n return;\n }\n // If using named markers\n if (typeof frames === 'string') {\n this.player.goToAndPlay(frames, forceFlag);\n } else {\n this.player.playSegments(frames, forceFlag);\n }\n }\n\n /**\n * [chain mode]\n * Load a new animation using the path defined in the current interaction\n */\n #loadAnimationInChain = () => {\n let path = this.actions[this.interactionIdx].path;\n\n // The animation path declared on the lottie-player was saved in the constructor under 'enteredPlayer'\n // We assume that the path on the lottie-player element is the animation to use in the first action\n if (!path) {\n // If we passed animationData to Lottie-Interactivity, load the animation data otherwise use the path\n if (typeof this.enteredPlayer === 'object' && this.enteredPlayer.constructor.name === 'AnimationItem') {\n path = this.enteredPlayer;\n\n if (this.player === path) {\n this.#chainedInteractionHandler({ ignorePath: true });\n return;\n }\n } else {\n path = this.loadedAnimation;\n let fileName = path.substr(path.lastIndexOf('/') + 1);\n fileName = fileName.substr(0, fileName.lastIndexOf('.json'));\n\n // Prevents reloading animation the same animation\n if (this.player.fileName === fileName) {\n this.#chainedInteractionHandler({ ignorePath: true });\n return;\n }\n }\n }\n\n // Force width and height on the container to retain its size while the next animation is being loaded\n let lottieContainerSize = this.container.getBoundingClientRect();\n let newContainerStyle = \"width: \" + lottieContainerSize.width + \"px !important; height: \" +\n lottieContainerSize.height + \"px !important; background: \" + this.container.style.background;\n this.container.setAttribute('style', newContainerStyle);\n\n if (!(typeof this.enteredPlayer === 'object' && this.enteredPlayer.constructor.name === 'AnimationItem')) {\n if (typeof this.enteredPlayer === 'string') {\n const elem = document.querySelector(this.enteredPlayer);\n\n if (elem && elem.nodeName === LOTTIE_PLAYER_NODE) {\n // Prevents adding the listeners multiple times if multiple animations are needed to be loaded from actions\n if (!this.attachedListeners) {\n // Remove the styling that prevents flickering\n elem.addEventListener(\"ready\", () => {\n this.container.style.width = '';\n this.container.style.height = '';\n });\n elem.addEventListener(\"load\", () => {\n this.player = elem.getLottie();\n this.#chainedInteractionHandler({ ignorePath: true });\n });\n this.attachedListeners = true;\n }\n // The LottieFiles player destroys the animation when a new one is Loaded\n elem.load(path);\n }\n } else if (this.enteredPlayer instanceof HTMLElement && this.enteredPlayer.nodeName === LOTTIE_PLAYER_NODE) {\n // Prevents adding the listeners multiple times if multiple animations are needed to be loaded from actions\n if (!this.attachedListeners) {\n // Remove the styling that prevents flickering\n this.enteredPlayer.addEventListener(\"ready\", () => {\n this.container.style.width = '';\n this.container.style.height = '';\n });\n this.enteredPlayer.addEventListener(\"load\", () => {\n this.player = this.enteredPlayer.getLottie();\n this.#chainedInteractionHandler({ ignorePath: true });\n });\n this.attachedListeners = true;\n }\n // The LottieFiles player destroys the animation when a new one is Loaded\n this.enteredPlayer.load(path);\n }\n // Throw error no player instance has been successfully resolved\n if (!this.player) {\n throw new Error(`${ERROR_PREFIX} Specified player is invalid.`, this.enteredPlayer);\n }\n } else {\n if (window.lottie) {\n this.stop();\n // Removes svg animation contained inside\n this.container.innerHTML = \"\";\n\n if (typeof path === 'object' && path.constructor.name === 'AnimationItem') {\n this.player = window.lottie.loadAnimation({\n loop: false,\n autoplay: false,\n animationData: path.animationData,\n container: this.container\n });\n }\n else {\n this.player = window.lottie.loadAnimation({\n loop: false,\n autoplay: false,\n path,\n container: this.container\n });\n }\n\n this.player.addEventListener('DOMLoaded', () => {\n // Remove the styling that prevents flickering\n this.container.style.width = '';\n this.container.style.height = '';\n this.#chainedInteractionHandler({ ignorePath: true });\n });\n } else {\n throw new Error(`${ERROR_PREFIX} A Lottie player is required.`);\n }\n }\n // Reset counters\n this.clickCounter = 0;\n this.playCounter = 0;\n }\n\n /**\n * [chain mode]\n * Check the action object at the current interaction index and set the needed interaction listeners as well\n * as any extra options\n */\n #chainedInteractionHandler = ({ ignorePath }) => {\n let frames = this.actions[this.interactionIdx].frames;\n let state = this.actions[this.interactionIdx].state;\n let transition = this.actions[this.interactionIdx].transition;\n let path = this.actions[this.interactionIdx].path;\n let stateFunction = this.stateHandler.get(state);\n let transitionFunction = this.transitionHandler.get(transition);\n let speed = this.actions[this.interactionIdx].speed ? this.actions[this.interactionIdx].speed : 1;\n let delay = this.actions[this.interactionIdx].delay ? this.actions[this.interactionIdx].delay : 0;\n\n // Check if path is detected or that we are at the beginning again and reset\n // If we are back at the first action, we need to reload the animation declared on the lottie-player element\n if (!ignorePath && (path || (this.actions[this.actions.length - 1].reset && this.interactionIdx === 0))) {\n this.#loadAnimationInChain();\n return;\n }\n setTimeout(() => {\n if (frames) {\n this.player.autoplay = false;\n this.player.resetSegments(true);\n this.player.goToAndStop(frames[0], true);\n }\n if (stateFunction) {\n stateFunction.call();\n } else if (state === \"none\") {\n this.player.loop = false;\n this.player.autoplay = false;\n }\n if (transitionFunction) {\n transitionFunction.call();\n }\n if (this.player.autoplay) {\n this.player.resetSegments(true);\n this.#playSegmentHandler(true);\n }\n this.player.setSpeed(speed);\n }, delay);\n }\n\n // [cursor mode]\n #cursorHandler = (x, y) => {\n // Resolve cursor position if cursor is inside container\n if (x !== -1 && y !== -1) {\n // Get container cursor position\n const pos = this.getContainerCursorPosition(x, y);\n\n // Use the resolved position\n x = pos.x;\n y = pos.y;\n }\n\n // Find the first action that satisfies the current position conditions\n const action = this.actions.find(({ position }) => {\n if (position) {\n if (Array.isArray(position.x) && Array.isArray(position.y)) {\n return x >= position.x[0] && x <= position.x[1] && y >= position.y[0] && y <= position.y[1];\n } else if (!Number.isNaN(position.x) && !Number.isNaN(position.y)) {\n return x === position.x && y === position.y;\n }\n }\n\n return false;\n });\n\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n\n // Process action types:\n if (action.type === 'seek' || action.transition === 'seek') {\n // Seek: Go to a frame based on player scroll position action\n const xPercent = (x - action.position.x[0]) / (action.position.x[1] - action.position.x[0]);\n const yPercent = (y - action.position.y[0]) / (action.position.y[1] - action.position.y[0]);\n\n this.player.playSegments(action.frames, true);\n\n if (action.position.y[0] < 0 && action.position.y[1] > 1) {\n this.player.goToAndStop(Math.floor(xPercent * this.player.totalFrames), true);\n } else {\n this.player.goToAndStop(Math.ceil(((xPercent + yPercent) / 2) * this.player.totalFrames), true);\n }\n } else if (action.type === 'loop') {\n this.player.playSegments(action.frames, true);\n } else if (action.type === 'play') {\n // Play: Reset segments and continue playing full animation from current position\n if (this.player.isPaused === true) {\n this.player.resetSegments();\n }\n this.player.playSegments(action.frames);\n } else if (action.type === 'stop') {\n this.player.resetSegments(true);\n // Stop: Stop playback\n this.player.goToAndStop(action.frames[0], true);\n }\n };\n\n // [scroll mode]\n #scrollHandler = () => {\n // Get container visibility percentage\n const currentPercent = this.getContainerVisibility();\n\n // Find the first action that satisfies the current position conditions\n const action = this.actions.find(\n ({ visibility }) => currentPercent >= visibility[0] && currentPercent <= visibility[1],\n );\n\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n\n // Process action types:\n if (action.type === 'seek') {\n // Seek: Go to a frame based on player scroll position action\n const start = action.frames[0];\n const end = action.frames.length == 2 ? action.frames[1] : (this.player.totalFrames - 1);\n\n // Use global frame reference for frames within the seek section.\n // Without this, if you follow a seek with a loop and then scroll back up,\n // it will treat frame numbers as relative to the loop.\n if (this.assignedSegment !== null) {\n this.player.resetSegments(true);\n this.assignedSegment = null;\n }\n\n this.player.goToAndStop(\n start + Math.round(\n ((currentPercent - action.visibility[0]) / (action.visibility[1] - action.visibility[0])) *\n (end - start)\n ),\n true,\n );\n } else if (action.type === 'loop') {\n this.player.loop = true;\n // Loop: Loop a given frames\n if (this.assignedSegment === null) {\n // if not playing any segments currently. play those segments and save to state\n this.player.playSegments(action.frames, true);\n this.assignedSegment = action.frames;\n } else {\n // if playing any segments currently.\n //check if segments in state are equal to the frames selected by action\n if (this.assignedSegment !== action.frames) {\n // if they are not equal. new segments are to be loaded\n this.player.playSegments(action.frames, true);\n this.assignedSegment = action.frames;\n } else {\n // if they are equal the play method must be called only if lottie is paused\n if (this.player.isPaused === true) {\n this.player.playSegments(action.frames, true);\n this.assignedSegment = action.frames;\n }\n }\n }\n } else if (action.type === 'play' || action.type === 'playOnce') {\n // Play: Reset segments and continue playing full animation from current position\n if (action.type === 'playOnce' && !this.scrolledAndPlayed) {\n this.scrolledAndPlayed = true;\n this.player.resetSegments(true);\n if (action.frames) {\n this.player.playSegments(action.frames, true);\n } else {\n this.player.play();\n }\n return;\n } else if (action.type === 'play' && this.player.isPaused) {\n this.player.resetSegments(true);\n if (action.frames) {\n this.player.playSegments(action.frames, true);\n } else {\n this.player.play();\n }\n }\n } else if (action.type === 'stop') {\n // Stop: Stop playback\n this.player.goToAndStop(action.frames[0], true);\n }\n };\n}\n\nexport const create = options => {\n const instance = new LottieInteractivity(options);\n instance.start();\n\n return instance;\n};\n\nexport default create;\n", "export default function cssHasPseudo (document) {\n\tconst observedItems = [];\n\n\t// document.createAttribute() doesn't support `:` in the name. innerHTML does\n\tconst attributeElement = document.createElement('x');\n\n\t// walk all stylesheets to collect observed css rules\n\t[].forEach.call(document.styleSheets, walkStyleSheet);\n\ttransformObservedItems();\n\n\t// observe DOM modifications that affect selectors\n\tconst mutationObserver = new MutationObserver(mutationsList => {\n\t\tmutationsList.forEach(mutation => {\n\t\t\t[].forEach.call(mutation.addedNodes || [], node => {\n\t\t\t\t// walk stylesheets to collect observed css rules\n\t\t\t\tif (node.nodeType === 1 && node.sheet) {\n\t\t\t\t\twalkStyleSheet(node.sheet);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// transform observed css rules\n\t\t\tcleanupObservedCssRules();\n\t\t\ttransformObservedItems();\n\t\t});\n\t});\n\n\tmutationObserver.observe(document, { childList: true, subtree: true });\n\n\t// observe DOM events that affect pseudo-selectors\n\tdocument.addEventListener('focus', transformObservedItems, true);\n\tdocument.addEventListener('blur', transformObservedItems, true);\n\tdocument.addEventListener('input', transformObservedItems);\n\n\t// transform observed css rules\n\tfunction transformObservedItems () {\n\t\trequestAnimationFrame(() => {\n\t\t\tobservedItems.forEach(\n\t\t\t\titem => {\n\t\t\t\t\tconst nodes = [];\n\n\t\t\t\t\t[].forEach.call(\n\t\t\t\t\t\tdocument.querySelectorAll(item.scopeSelector),\n\t\t\t\t\t\telement => {\n\t\t\t\t\t\t\tconst nthChild = [].indexOf.call(element.parentNode.children, element) + 1;\n\t\t\t\t\t\t\tconst relativeSelectors = item.relativeSelectors.map(\n\t\t\t\t\t\t\t\trelativeSelector => item.scopeSelector + ':nth-child(' + nthChild + ') ' + relativeSelector\n\t\t\t\t\t\t\t).join();\n\n\t\t\t\t\t\t\t// find any relative :has element from the :scope element\n\t\t\t\t\t\t\tconst relativeElement = element.parentNode.querySelector(relativeSelectors);\n\n\t\t\t\t\t\t\tconst shouldElementMatch = item.isNot ? !relativeElement : relativeElement;\n\n\t\t\t\t\t\t\tif (shouldElementMatch) {\n\t\t\t\t\t\t\t\t// memorize the node\n\t\t\t\t\t\t\t\tnodes.push(element);\n\n\t\t\t\t\t\t\t\t// set an attribute with an irregular attribute name\n\t\t\t\t\t\t\t\t// document.createAttribute() doesn't support special characters\n\t\t\t\t\t\t\t\tattributeElement.innerHTML = '';\n\n\t\t\t\t\t\t\t\telement.setAttributeNode(attributeElement.children[0].attributes[0].cloneNode());\n\n\t\t\t\t\t\t\t\t// trigger a style refresh in IE and Edge\n\t\t\t\t\t\t\t\tdocument.documentElement.style.zoom = 1; document.documentElement.style.zoom = null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t\t// remove the encoded attribute from all nodes that no longer match them\n\t\t\t\t\titem.nodes.forEach(node => {\n\t\t\t\t\t\tif (nodes.indexOf(node) === -1) {\n\t\t\t\t\t\t\tnode.removeAttribute(item.attributeName);\n\n\t\t\t\t\t\t\t// trigger a style refresh in IE and Edge\n\t\t\t\t\t\t\tdocument.documentElement.style.zoom = 1; document.documentElement.style.zoom = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t// update the\n\t\t\t\t\titem.nodes = nodes;\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\t}\n\n\t// remove any observed cssrules that no longer apply\n\tfunction cleanupObservedCssRules () {\n\t\t[].push.apply(\n\t\t\tobservedItems,\n\t\t\tobservedItems.splice(0).filter(\n\t\t\t\titem => item.rule.parentStyleSheet &&\n\t\t\t\t\titem.rule.parentStyleSheet.ownerNode &&\n\t\t\t\t\tdocument.documentElement.contains(item.rule.parentStyleSheet.ownerNode)\n\t\t\t)\n\t\t);\n\t}\n\n\t// walk a stylesheet to collect observed css rules\n\tfunction walkStyleSheet (styleSheet) {\n\t\ttry {\n\t\t\t// walk a css rule to collect observed css rules\n\t\t\t[].forEach.call(styleSheet.cssRules || [], rule => {\n\t\t\t\tif (rule.selectorText) {\n\t\t\t\t\t// decode the selector text in all browsers to:\n\t\t\t\t\t// [1] = :scope, [2] = :not(:has), [3] = :has relative, [4] = :scope relative\n\t\t\t\t\tconst selectors = decodeURIComponent(rule.selectorText.replace(/\\\\(.)/g, '$1')).match(/^(.*?)\\[:(not-)?has\\((.+?)\\)\\](.*?)$/);\n\n\t\t\t\t\tif (selectors) {\n\t\t\t\t\t\tconst attributeName = ':' + (selectors[2] ? 'not-' : '') + 'has(' +\n\t\t\t\t\t\t\t// encode a :has() pseudo selector as an attribute name\n\t\t\t\t\t\t\tencodeURIComponent(selectors[3]).replace(/%3A/g, ':').replace(/%5B/g, '[').replace(/%5D/g, ']').replace(/%2C/g, ',') +\n\t\t\t\t\t\t')';\n\n\t\t\t\t\t\tobservedItems.push({\n\t\t\t\t\t\t\trule,\n\t\t\t\t\t\t\tscopeSelector: selectors[1],\n\t\t\t\t\t\t\tisNot: selectors[2],\n\t\t\t\t\t\t\trelativeSelectors: selectors[3].split(/\\s*,\\s*/),\n\t\t\t\t\t\t\tattributeName,\n\t\t\t\t\t\t\tnodes: []\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\twalkStyleSheet(rule);\n\t\t\t\t}\n\t\t\t});\n\t\t} catch (error) {\n\t\t\t/* do nothing and continue */\n\t\t}\n\t}\n}\n", "const $ = (selector, parent = document) => parent.querySelector(selector);\nconst $$ = (selector, parent = document) => parent.querySelectorAll(selector);\n\nfunction openMenu(parent) {\n const button = $(\"button\", parent);\n\n parent?.classList.add(\"open\");\n button?.setAttribute(`aria-expanded`, `true`);\n}\n\nfunction closeMenu(parent) {\n const button = $(\"button\", parent);\n\n parent?.classList.remove(\"open\");\n button?.setAttribute(`aria-expanded`, `false`);\n}\n\n// Observes the site header, which should have `top: -1px`, and toggles\n// the `stuck` class when it hits the top of the page.\nnew IntersectionObserver(\n ([e]) => e.target.classList.toggle(\"stuck\", e.intersectionRatio < 1),\n { threshold: [1] }\n).observe($(`header[role=\"banner\"]`));\n\ndocument.addEventListener(\"click\", function(event) {\n const button = event.target.closest(`.platforma-nav-with-utility [aria-controls=\"menu\"]`);\n if (!button) {\n return;\n }\n\n const state = button.getAttribute(\"aria-expanded\");\n const isOpen = state === \"true\";\n const mobileMenu = $(\"header[role='banner'].platforma-nav-with-utility\");\n\n button.setAttribute(\"aria-expanded\", isOpen ? \"false\" : \"true\");\n button.innerText = isOpen ? \"Menu\" : \"Close\";\n mobileMenu.classList.toggle(\"menu-open\");\n $(\"body\").classList.toggle(\"overflow-hidden\");\n});\n\ndocument.addEventListener('mouseover', function (event) {\n let closest = event.target.closest(\".platforma-nav-with-utility:not(.menu-open) nav > ul > .isParent\");\n if (!closest) return;\n openMenu(closest);\n}, false);\n\ndocument.addEventListener('mouseout', function (event) {\n let closest = event.target.closest(\".platforma-nav-with-utility:not(.menu-open) nav > ul > .isParent\");\n if (!closest) return;\n closeMenu(closest);\n}, false);\n\ndocument.addEventListener('click', function (event) {\n let closest = event.target.closest(\".platforma-nav-with-utility li > a + button\");\n if (!closest) return;\n\n let $toggle = closest;\n let $navItem = $toggle.closest(`li`);\n let $otherNavItems = Array.prototype.filter.call($navItem.parentNode.children, function(child){\n return child !== $navItem;\n });\n\n $otherNavItems.forEach(item => {\n closeMenu(item);\n })\n\n if ($navItem.classList.contains(\"open\")) {\n closeMenu($navItem);\n } else {\n openMenu($navItem);\n }\n}, false);\n\ndocument.addEventListener('click', function (event) {\n let closest = event.target.closest(\".platforma-nav-with-utility.menu-open nav ul > .isParent > a\");\n if (!closest) return;\n\n const $navItem = closest.parentNode;\n let siblings = Array.prototype.filter.call($navItem.parentNode.children, function(child){\n return child !== $navItem;\n });\n\n event.preventDefault();\n\n if ($navItem.classList.contains(`open`)) {\n closeMenu($navItem);\n } else {\n openMenu($navItem);\n siblings.forEach(sibling => {\n closeMenu(sibling);\n })\n }\n}, false);\n", "const supportsVideo = !!document.createElement(\"video\").canPlayType;\n\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n if (supportsVideo) {\n const video = document.querySelector(\"video\");\n \n if (video) {\n const playPauseButton = document.querySelector(\".video-button\");\n \n // Hide the default controls\n video.controls = false;\n\n playPauseButton.addEventListener(\"click\", () => {\n \n playPauseButton.classList.toggle(\"playing\");\n if (playPauseButton.classList.contains(\"playing\")) {\n video.play();\n } else {\n video.pause();\n }\n });\n\n video.addEventListener(\"ended\", () => {\n playPauseButton.classList.remove(\"playing\");\n });\n }\n }\n});", "document.addEventListener(\"DOMContentLoaded\", () => {\n const supportsVideo = !!document.createElement(\"video\").canPlayType;\n if (!supportsVideo) return;\n\n const video = document.querySelector(\"video\");\n if (!video) return;\n\n const playPauseButton = document.querySelector(\".video-button\");\n const heading = document.getElementById(\"marquee-headline\");\n const paragraph = document.getElementById(\"marquee-copy\");\n const tagline = document.getElementById(\"marquee-tagline\");\n const navItems = document.querySelectorAll(\".video-nav li\");\n\n\n // Define milestones and actions\n const milestones = [\n {\n time: 0,\n heading: \"RELIABILITY\",\n tagline: \"A Superior Foundation\",\n paragraph:\n \"Emphasizing reliability and adaptability, we enable sustainable growth and the exploration of new horizons, ensuring our organization's ongoing success.\",\n },\n {\n time: 12,\n heading: \"DRIVING VALUE\",\n tagline: \"A Superior Focus\",\n paragraph:\n \"By empowering our portfolio of rental and service companies to achieve market leadership, profitability, safety, and operational excellence, we are positioning them for future growth and opportunities.\",\n },\n {\n time: 24,\n heading: \"CORE VALUES\",\n tagline: \"A Superior Purpose\",\n paragraph:\n \"Superior's Shared Core Values fuel our success and shape our path forward, reflecting fidelity to our vision and purpose while differentiating us as a responsible employer, a dependable partner, and an engaged corporate citizen.\",\n },\n ];\n\n // Utility to update content based on milestones\n const updateContent = (milestone, index) => {\n navItems.forEach((item) => item.classList.remove(\"highlight\"));\n heading.textContent = milestone.heading;\n tagline.textContent = milestone.tagline;\n paragraph.textContent = milestone.paragraph;\n navItems[index].classList.add(\"highlight\");\n };\n\n // Initialize milestones\n const initializeMilestones = () => {\n navItems.forEach((item, index) => {\n item.addEventListener(\"click\", () => {\n video.currentTime = milestones[index].time;\n updateContent(milestones[index], index);\n video.play();\n });\n });\n };\n\n // Update progress borders\n const updateProgressBorders = (currentTime) => {\n milestones.forEach((milestone, index) => {\n const nextMilestone = milestones[index + 1];\n const startTime = milestone.time;\n const endTime = nextMilestone ? nextMilestone.time : video.duration;\n\n if (currentTime >= startTime && currentTime <= endTime) {\n const progress = ((currentTime - startTime) / (endTime - startTime)) * 100;\n navItems[index].style.setProperty(\"--progress-width\", `${progress}%`);\n } else {\n navItems[index].style.setProperty(\"--progress-width\", `0%`);\n }\n });\n };\n\n // Monitor video playback and trigger milestones\n const handleTimeUpdate = (() => {\n const triggeredMilestones = new Set();\n let previousTime = 0;\n return () => {\n const currentTime = Math.floor(video.currentTime);\n\n // Reset triggered milestones if video restarts\n if (currentTime < previousTime) triggeredMilestones.clear();\n previousTime = currentTime;\n\n // Trigger milestone actions\n milestones.forEach((milestone, index) => {\n if (!triggeredMilestones.has(milestone.time) && currentTime >= milestone.time) {\n updateContent(milestone, index);\n triggeredMilestones.add(milestone.time);\n }\n });\n\n // Update progress borders\n updateProgressBorders(currentTime);\n }; \n })();\n\n // Play/pause button functionality\n const togglePlayPause = () => {\n playPauseButton.classList.toggle(\"playing\");\n if (playPauseButton.classList.contains(\"playing\")) {\n playPauseButton.classList.toggle(\"playing\");\n video.pause();\n } else {\n playPauseButton.classList.toggle(\"playing\");\n video.play();\n }\n };\n\n // Initialize functionality\n const initialize = () => {\n video.controls = false;\n\n video.addEventListener(\"timeupdate\", handleTimeUpdate,false);\n \n playPauseButton.addEventListener(\"click\", togglePlayPause);\n initializeMilestones();\n };\n\n initialize();\n});\n", "const BACKSPACE = 8;\nconst TAB = 9;\nconst ENTER = 13;\nconst SHIFT = 16;\nconst ESCAPE = 27;\nconst SPACE = 32;\nconst PAGE_UP = 33;\nconst PAGE_DOWN = 34;\nconst END = 35;\nconst HOME = 36;\nconst ARROW_LEFT = 37;\nconst ARROW_UP = 38;\nconst ARROW_RIGHT = 39;\nconst ARROW_DOWN = 40;\nconst DELETE = 46;\n\nconst direction = {\n 37: -1,\n 38: -1,\n 39: 1,\n 40: 1,\n};\n\n// Tabs with Automatic Activation\n// https://www.w3.org/TR/wai-aria-practices/examples/tabs/tabs-1/tabs.html\nclass A11yTab {\n constructor(tablist, options = {}) {\n this.tablist = tablist;\n this.orientation = tablist.getAttribute(\"aria-orientation\") || \"horizontal\";\n const tabs = this.tabs = [];\n const panels = this.panels = [];\n\n // Bind.\n this.onKeydown = this.onKeydown.bind(this);\n this.onKeyup = this.onKeyup.bind(this);\n this.onClick = this.onClick.bind(this);\n this.focusEventHandler = this.focusEventHandler.bind(this);\n\n // Determine whether there should be a delay when user navigates with\n // the arrow keys, default is\n this.delay = tablist.getAttribute(\"data-delay\") || 0;\n\n const hash = window.location.hash;\n\n let activeTab;\n tablist.querySelectorAll(`[role=\"tab\"]`).forEach((tab, index) => {\n tabs.push(tab);\n const panelId = tab.getAttribute(\"aria-controls\");\n panels.push(document.getElementById(panelId));\n\n const active = hash === `#${ panelId }`;\n if (active) {\n activeTab = tab;\n }\n\n tab.addEventListener(\"click\", this.onClick, false);\n tab.addEventListener(\"keydown\", this.onKeydown, false);\n tab.addEventListener(\"keyup\", this.onKeyup, false);\n });\n\n if (activeTab) {\n this.activateTab(activeTab);\n }\n }\n\n /**\n * Click event listener\n *\n * When a tab is clicked, activateTab is fired to activate it\n *\n * @param {object} event\n * @return void\n */\n onClick(event) {\n const tab = event.target;\n this.activateTab(tab, false);\n\n const href = tab.getAttribute(\"href\");\n if (href) {\n event.preventDefault();\n }\n }\n\n /**\n * Keydown event listener\n *\n * Handle keydown on tabs\n *\n * @param {object} event\n * @return void\n */\n onKeydown(event) {\n const { keyCode: key } = event;\n\n const codes = {\n [END]: () => {\n event.preventDefault();\n this.activateTab(this.tabs[this.tabs.length - 1]);\n },\n [HOME]: () => {\n event.preventDefault();\n this.activateTab(this.tabs[0]);\n },\n [PAGE_UP]: () => this.determineOrientation(event),\n [PAGE_DOWN]: () => this.determineOrientation(event),\n // Up and down are in keydown because we need to prevent page scroll >:)\n [ARROW_UP]: () => this.determineOrientation(event),\n [ARROW_DOWN]: () => this.determineOrientation(event),\n default: () => false,\n };\n\n return (codes[key] || codes.default)();\n }\n\n /**\n * Keyup event listener\n *\n * Handle keyup on tabs\n *\n * @param {object} event\n * @return void\n */\n onKeyup(event) {\n const { keyCode: key, target } = event;\n // const selected = target.getAttribute(\"aria-selected\") === \"true\";\n\n const codes = {\n [ARROW_LEFT]: () => this.determineOrientation(event),\n [ARROW_RIGHT]: () => this.determineOrientation(event),\n // [DELETE]: () => selected && this.determineDeletable(event),\n // [BACKSPACE]: () => selected && this.determineDeletable(event),\n default: () => false,\n };\n\n return (codes[key] || codes.default)();\n }\n\n /**\n * Determine orientation\n *\n * When a tablist's aria-orientation is set to vertical, only up and down\n * arrow should function. In all other cases only left and right arrow\n * function.\n *\n * @param {object} event\n */\n determineOrientation(event) {\n const { keyCode: key } = event;\n const vertical = \"vertical\" === this.orientation;\n let proceed = false;\n\n if (vertical && (key === PAGE_UP || key === PAGE_DOWN || key === ARROW_UP || key === ARROW_DOWN)) {\n event.preventDefault();\n proceed = true;\n } else if (key === ARROW_LEFT || key === ARROW_RIGHT) {\n proceed = true;\n }\n\n if (proceed) {\n this.switchTabOnArrowPress(event);\n }\n }\n\n /**\n * Switch tab on arrow press\n *\n * Either focus the next, previous, first, or last tab depening on key\n * pressed\n *\n * @param {object} event\n * @return void\n */\n switchTabOnArrowPress(event) {\n const { target, keyCode: key } = event;\n const tabs = this.tabs;\n\n tabs.forEach(tab => tab.addEventListener(\"focus\", this.focusEventHandler));\n\n if (direction[key]) {\n const index = this.tabs.indexOf(target);\n if (index !== undefined) {\n if (this.tabs[index + direction[key]]) {\n this.tabs[index + direction[key]].focus();\n } else if (key === ARROW_LEFT || key === PAGE_UP || key === ARROW_UP) {\n this.focusLastTab();\n } else if (key === ARROW_RIGHT || key === PAGE_DOWN || key === ARROW_DOWN) {\n this.focusFirstTab();\n }\n }\n }\n }\n\n /**\n * Activate tab\n *\n * Activates any given tab panel\n *\n * @param {object} tab\n * @param {boolean} [setFocus=true]\n * @return void\n */\n activateTab(tab, setFocus = true) {\n // Deactivate all other tabs\n this.deactivateTabs();\n\n tab.setAttribute(\"tabindex\", 0);\n // Set the tab as selected\n tab.setAttribute(\"aria-selected\", \"true\");\n // Get the value of aria-controls (which is an ID)\n const panelId = tab.getAttribute(\"aria-controls\");\n const panel = document.getElementById(panelId);\n\n // Remove hidden attribute from tab panel to make it visible\n // panel.removeAttribute(\"aria-hidden\");\n panel.setAttribute(\"open\",\"open\");\n\n // Set focus when required\n if (setFocus) {\n tab.click();\n } else {\n history.replaceState(null, null, `#${ panel.id}`);\n }\n\n const event = new CustomEvent(\"change\", {\n detail: {\n currentTab: tab,\n currentIndex: this.tabs.indexOf(tab),\n }\n });\n this.tablist.dispatchEvent(event);\n\n // Dispatches a \"resize\" event so content inside tabs can redraw if needs.\n window.dispatchEvent(new Event(\"resize\"));\n }\n\n /**\n * Deactivate tabs\n *\n * Deactivate all tabs and tab panels\n *\n * @return void\n */\n deactivateTabs() {\n this.tabs.forEach(tab => {\n tab.setAttribute(\"tabindex\", -1);\n tab.setAttribute(\"aria-selected\", \"false\");\n tab.removeEventListener(\"focus\", this.focusEventHandler);\n });\n\n this.panels.forEach(panel => {\n // panel.setAttribute(\"aria-hidden\", \"true\");\n panel.removeAttribute(\"open\");\n });\n }\n\n /**\n * Focus first tab\n *\n * @return\n */\n focusFirstTab() {\n return this.tabs[0].focus();\n }\n\n\n /**\n * Focus last tab\n *\n * @return\n */\n focusLastTab() {\n return this.tabs[this.tabs.length - 1].focus();\n }\n\n /**\n * Focus event handler\n *\n * @param {object} event\n * @return void\n */\n focusEventHandler(event) {\n const { target } = event;\n\n setTimeout(() => {\n this.checkTabFocus(target);\n }, this.delay);\n }\n\n /**\n * Check tab focus\n *\n * Only activate tab on focus if it still has focus after the delay\n *\n * @param {object} target\n * @return void\n */\n checkTabFocus(target) {\n const focused = document.activeElement;\n\n if (target === focused) {\n this.activateTab(target, false);\n }\n }\n}\n\n/** @type {NodeListOf} */\nconst tabsCollections = document.querySelectorAll(\"[role=\\\"tablist\\\"\");\nfor (let i = 0, count = tabsCollections.length; i < count; i++) {\n new A11yTab(tabsCollections[i], {\n\n });\n}\n\nexport default A11yTab;\n", "import \"../../../../node_modules/@lottiefiles/lottie-player/dist/lottie-player.js\";\nimport { create } from \"../../../../node_modules/@lottiefiles/lottie-interactivity/dist/lottie-interactivity.min.js\";\n\nwindow.addEventListener('load', (event) => {\n const animations = document.getElementsByTagName(\"lottie-player\");\n\n for (i=0;i {\n const target = /** @type HTMLAnchorElement */(event.target);\n\n if (target.matches(`a[href][rel*=\"lightbox\"]`)) {\n\n const editor = target.closest(\".mce-content-body\");\n if (editor) {\n return;\n }\n\n event.preventDefault();\n const { hostname, searchParams, pathname = \"\", hash } = new URL(target.href);\n let videoId, content = \"\";\n\n switch (hostname) {\n case \"\":\n case location.hostname:\n if (hash) {\n const element = document.querySelector(hash);\n if (element) {\n content = element.innerHTML;\n }\n break;\n }\n\n const [, extension] = pathname.match(SUPPORTED_EXTENSION_REGEX) || [];\n if (extension) {\n content = `
\n \n
`;\n }\n\n break;\n case \"youtube.com\":\n case \"www.youtube.com\":\n //videoId = searchParams.get(\"v\");\n videoId = target.href.match(YOUTUBE_REGEX)[1]\n if (videoId) {\n content = `
\n \n
`;\n }\n break;\n case \"youtu.be\":\n case \"www.youtu.be\":\n videoId = pathname.substr(1);\n\n if (videoId) {\n content = `
\n \n
`;\n }\n break;\n case \"vimeo.com\":\n case \"www.vimeo.com\":\n videoId = pathname.substr(1);\n\n if (videoId) {\n content = `
\n \n
`;\n }\n break;\n default:\n content = ``;\n break;\n }\n\n empty(container);\n\n container.insertAdjacentHTML(\"beforeend\", content);\n container.appendChild(closeButton);\n lightbox.showModal();\n }\n });\n\n // Handle click on the backdrop to close the modal.\n lightbox.addEventListener(\"click\", event => {\n // Clicking on the backdrop.\n if (event.target == lightbox) {\n lightbox.close();\n }\n });\n\n lightbox.addEventListener(\"close\", event => {\n empty(container);\n });\n}\n", "import cssHasPseudo from \"../../node_modules/css-has-pseudo/index.mjs\";\n\nimport \"./imports.js\";\nimport \"./modals.js\";\n\ncssHasPseudo(document);\n\nlet empLinks = document.getElementById(\"employee-links\");\nempLinks.addEventListener(\"change\", (e) => {\n if (e.target.value !== \"\") {\n window.location = e.target.value;\n }\n});\n"], "mappings": "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", "names": ["extendStatics", "d", "b", "Object", "setPrototypeOf", "__proto__", "Array", "p", "prototype", "hasOwnProperty", "call", "__extends", "TypeError", "String", "__", "constructor", "create", "__assign", "assign", "t", "s", "i", "n", "arguments", "length", "apply", "this", "__rest", "e", "indexOf", "getOwnPropertySymbols", "propertyIsEnumerable", "__decorate", "decorators", "target", "key", "desc", "c", "r", "getOwnPropertyDescriptor", "Reflect", "decorate", "defineProperty", "__param", "paramIndex", "decorator", "__metadata", "metadataKey", "metadataValue", "metadata", "__awaiter", "thisArg", "_arguments", "P", "generator", "Promise", "resolve", "reject", "fulfilled", "value", "step", "next", "rejected", "result", "done", "then", "__generator", "body", "f", "y", "g", "_", "label", "sent", "trys", "ops", "verb", "Symbol", "iterator", "v", "op", "pop", "push", "__createBinding", "o", "m", "k", "k2", "enumerable", "get", "__exportStar", "__values", "__read", "ar", "error", "__spread", "concat", "__spreadArrays", "il", "a", "j", "jl", "__spreadArray", "to", "from", "pack", "l", "slice", "__await", "__asyncGenerator", "asyncIterator", "q", "resume", "fulfill", "settle", "shift", "__asyncDelegator", "__asyncValues", "__makeTemplateObject", "cooked", "raw", "__setModuleDefault", "__importStar", "mod", "__esModule", "__importDefault", "default", "__classPrivateFieldGet", "receiver", "state", "kind", "has", "__classPrivateFieldSet", "set", "supportsAdoptingStyleSheets", "window", "ShadowRoot", "ShadyCSS", "nativeShadow", "Document", "CSSStyleSheet", "constructionToken", "styleSheetCache", "Map", "CSSResult", "cssText", "safeToken", "_$cssResult$", "Error", "styleSheet", "replaceSync", "toString", "unsafeCSS", "css", "strings", "values", "reduce", "acc", "idx", "adoptStyles", "renderRoot", "styles", "adoptedStyleSheets", "map", "forEach", "style", "document", "createElement", "nonce", "litNonce", "setAttribute", "textContent", "appendChild", "getCompatibleStyle", "sheet", "rule", "cssRules", "trustedTypes", "emptyStringForBooleanAttribute", "emptyScript", "polyfillSupport", "reactiveElementPolyfillSupport", "defaultConverter", "toAttribute", "type", "Boolean", "JSON", "stringify", "fromAttribute", "fromValue", "Number", "parse", "notEqual", "old", "defaultPropertyDeclaration", "attribute", "converter", "reflect", "hasChanged", "ReactiveElement", "HTMLElement", "_initialize", "initializer", "_initializers", "observedAttributes", "finalize", "attributes", "elementProperties", "attr", "__attributeNameForProperty", "__attributeToPropertyMap", "name", "options", "noAccessor", "descriptor", "getPropertyDescriptor", "oldValue", "requestUpdate", "configurable", "finalized", "superCtor", "getPrototypeOf", "props", "properties", "propKeys", "getOwnPropertyNames", "createProperty", "elementStyles", "finalizeStyles", "isArray", "Set", "flat", "Infinity", "reverse", "unshift", "toLowerCase", "__updatePromise", "res", "enableUpdating", "_$changedProperties", "__saveInstanceProperties", "addController", "controller", "__controllers", "isConnected", "hostConnected", "removeController", "splice", "_v", "__instanceProperties", "createRenderRoot", "shadowRoot", "attachShadow", "shadowRootOptions", "connectedCallback", "_requestedUpdate", "disconnectedCallback", "hostDisconnected", "attributeChangedCallback", "_old", "_$attributeToProperty", "__propertyToAttribute", "attrValue", "__reflectingProperty", "removeAttribute", "ctor", "propName", "getPropertyOptions", "shouldRequestUpdate", "__reflectingProperties", "isUpdatePending", "__enqueueUpdate", "async", "scheduleUpdate", "performUpdate", "hasUpdated", "shouldUpdate", "changedProperties", "willUpdate", "hostUpdate", "update", "__markUpdated", "_$didUpdate", "_changedProperties", "hostUpdated", "firstUpdated", "updated", "updateComplete", "getUpdateComplete", "mode", "globalThis", "reactiveElementVersions", "policy", "createPolicy", "createHTML", "marker", "Math", "random", "markerMatch", "nodeMarker", "createMarker", "createComment", "isPrimitive", "isIterable", "textEndRegex", "commentEndRegex", "comment2EndRegex", "tagEndRegex", "singleQuoteAttrEndRegex", "doubleQuoteAttrEndRegex", "rawTextElement", "tag", "_$litType$", "html", "svg", "noChange", "for", "nothing", "templateCache", "WeakMap", "render", "container", "partOwnerNode", "renderBefore", "part", "_$litPart$", "endNode", "ChildPart", "insertBefore", "_$setValue", "walker", "createTreeWalker", "getTemplateHtml", "rawTextEndRegex", "attrNames", "regex", "attrName", "match", "attrNameEndIndex", "lastIndex", "exec", "test", "RegExp", "end", "startsWith", "htmlResult", "Template", "node", "nodeIndex", "attrNameIndex", "partCount", "parts", "el", "currentNode", "content", "svgElement", "firstChild", "remove", "append", "childNodes", "nextNode", "nodeType", "hasAttributes", "attrsToRemove", "getAttributeNames", "endsWith", "realName", "statics", "getAttribute", "split", "index", "PropertyPart", "BooleanAttributePart", "EventPart", "AttributePart", "tagName", "data", "_options", "innerHTML", "resolveDirective", "attributeIndex", "parent", "currentDirective", "__directives", "__directive", "nextDirectiveConstructor", "_$litDirective$", "_$AO", "_$initialize", "_$resolve", "TemplateInstance", "template", "_$template", "_$parent", "parentNode", "_$isConnected", "_clone", "fragment", "creationScope", "importNode", "partIndex", "templatePart", "nextSibling", "ElementPart", "_parts", "_update", "startNode", "_$startNode", "_$endNode", "__isConnected", "_$committedValue", "_$clear", "_commitText", "_commitTemplateResult", "_commitNode", "_commitIterable", "_insert", "ref", "createTextNode", "_$getTemplate", "h", "instance", "itemPart", "itemParts", "item", "start", "_$notifyConnectionChanged", "setConnected", "element", "fill", "directiveParent", "valueIndex", "noCommit", "change", "_commitValue", "newListener", "oldListener", "shouldRemoveListener", "capture", "once", "passive", "shouldAddListener", "removeEventListener", "addEventListener", "handleEvent", "event", "host", "_$LH", "_boundAttributeSuffix", "_marker", "_markerMatch", "_HTML_RESULT", "_getTemplateHtml", "_TemplateInstance", "_isIterable", "_resolveDirective", "_ChildPart", "_AttributePart", "_BooleanAttributePart", "_EventPart", "_PropertyPart", "_ElementPart", "litHtmlPolyfillSupport", "litHtmlVersions", "UpdatingElement", "LitElement", "super", "renderOptions", "__childPart", "_$litElement$", "litElementHydrateSupport", "litElementPolyfillSupport", "_$LE", "litElementVersions", "customElement", "classOrDescriptor", "clazz", "customElements", "define", "elements", "finisher", "standardProperty", "placement", "originalKey", "property", "protoOrDescriptor", "proto", "legacyPrototypeMethod", "standardPrototypeMethod", "decorateProperty", "_ref", "info", "undefined", "eventOptions", "query", "selector", "cache", "querySelector", "queryAll", "_name", "querySelectorAll", "queryAsync", "slotAssignedElements", "HTMLSlotElement", "assignedElements", "slot", "opts", "assignedNodes", "filter", "Node", "ELEMENT_NODE", "queryAssignedElements", "slotSelector", "slotEl", "matches", "queryAssignedNodes", "slotOrOptions", "flatten", "assignedNodesOptions", "factory", "navigator", "svgNS", "locationHref", "_useWebWorker", "initialDefaultFrame", "setWebWorker", "flag", "getWebWorker", "setLocationHref", "getLocationHref", "createTag", "extendPrototype", "sources", "destination", "sourcePrototype", "len", "getDescriptor", "object", "prop", "createProxyFunction", "ProxyFunction", "audioControllerFactory", "AudioController", "audioFactory", "audios", "_volume", "_isMuted", "addAudio", "audio", "pause", "setRate", "rateValue", "createAudio", "assetPath", "Howl", "src", "isPlaying", "play", "seek", "playing", "rate", "setVolume", "setAudioFactory", "_updateVolume", "mute", "unmute", "getVolume", "volume", "createTypedArray", "createRegularArray", "arr", "Uint8ClampedArray", "Float32Array", "Int16Array", "createSizedArray", "_typeof$6", "obj", "subframeEnabled", "expressionsPlugin", "expressionsInterfaces", "idPrefix$1", "isSafari", "userAgent", "_shouldRoundValues", "bmPow", "pow", "bmSqrt", "sqrt", "bmFloor", "floor", "bmMax", "max", "bmMin", "min", "BMMath", "ProjectInterface$1", "propertyNames", "abs", "val", "absArr", "defaultCurveSegments", "degToRads", "PI", "roundCorner", "roundValues", "bmRnd", "round", "styleDiv", "position", "top", "left", "display", "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", "RGBtoHSV", "addSaturationToRGB", "color", "offset", "hsv", "addBrightnessToRGB", "addHueToRGB", "rgbToHex", "hex", "colorMap", "setSubframeEnabled", "getSubframeEnabled", "setExpressionsPlugin", "getExpressionsPlugin", "setExpressionInterfaces", "getExpressionInterfaces", "setDefaultCurveSegments", "getDefaultCurveSegments", "setIdPrefix", "getIdPrefix", "createNS", "createElementNS", "_typeof$5", "dataManager", "workerFn", "workerInstance", "_counterId", "processes", "workerProxy", "onmessage", "postMessage", "path", "_workerSelf", "setupWorker", "fn", "Worker", "Blob", "blob", "url", "URL", "createObjectURL", "completeLayers", "layers", "comps", "layerData", "jLen", "kLen", "completed", "hasMask", "maskProps", "masksProperties", "pt", "convertPathsToAbsoluteValues", "ty", "findCompLayers", "refId", "completeShapes", "shapes", "completeText", "id", "comp", "__used", "ks", "it", "checkVersion", "minimum", "animVersionString", "animVersion", "minimumVersion", "checkText", "iterateLayers", "textLayer", "documentData", "animationData", "assets", "checkChars", "chars", "charData", "ip", "st", "sr", "sk", "sa", "checkPathProperties", "pathData", "checkColors", "iterateShapes", "checkShapes", "completeClosingShapes", "closed", "cl", "moduleOb", "__complete", "dataFunctionManager", "assetLoader", "formatResponse", "xhr", "contentTypeHeader", "getResponseHeader", "responseType", "response", "responseText", "load", "fullPath", "callback", "errorCallback", "XMLHttpRequest", "err", "onreadystatechange", "readyState", "status", "open", "join", "send", "completeData", "payload", "animation", "process", "onComplete", "onError", "createProcess", "loadAnimation", "processId", "location", "origin", "pathname", "loadData", "completeAnimation", "anim", "ImagePreloader", "proxyImage", "canvas", "width", "height", "ctx", "getContext", "fillStyle", "fillRect", "imageLoaded", "loadedAssets", "totalImages", "loadedFootagesCount", "totalFootages", "imagesLoadedCb", "footageLoaded", "getAssetsPath", "assetData", "assetsPath", "originalPath", "imagePath", "u", "testImageLoaded", "img", "intervalId", "setInterval", "getBBox", "_imageLoaded", "clearInterval", "bind", "createFootageData", "ob", "footageData", "_footageLoaded", "ImagePreloaderFactory", "images", "loadAssets", "cb", "_createImageData", "setAssetsPath", "setPath", "loadedImages", "loadedFootages", "destroy", "getAsset", "createImgData", "crossOrigin", "createImageData", "setAttributeNS", "_elementHelper", "setCacheType", "elementHelper", "BaseEvent", "triggerEvent", "eventName", "args", "_cbs", "callbacks", "markerParser", "parsePayloadLines", "line", "lines", "keys", "keysCount", "trim", "_markers", "markers", "markerData", "time", "tm", "duration", "dr", "cm", "ProjectInterface", "registerComposition", "compositions", "_thisProjectFunction", "nm", "prepareFrame", "xt", "currentFrame", "compInterface", "renderers", "registerRenderer", "getRenderer", "_typeof$4", "AnimationItem", "isLoaded", "currentRawFrame", "frameRate", "frameMult", "playSpeed", "playDirection", "playCount", "isPaused", "autoplay", "loop", "renderer", "animationID", "timeCompleted", "segmentPos", "isSubframeEnabled", "segments", "_idle", "_completedLoop", "projectInterface", "imagePreloader", "audioController", "configAnimation", "onSetupError", "onSegmentComplete", "drawnFrameEvent", "setParams", "params", "wrapper", "animType", "RendererClass", "rendererSettings", "globalData", "defs", "setProjectInterface", "parseInt", "autoloadSegments", "initialSegment", "setupAnimation", "lastIndexOf", "substr", "fileName", "trigger", "setData", "wrapperAttributes", "getNamedItem", "prerender", "includeLayers", "newLayers", "fonts", "fontManager", "addChars", "addFonts", "initExpressions", "loadNextSegment", "segment", "segmentPath", "loadSegments", "imagesLoaded", "checkLoaded", "preloadImages", "animData", "fr", "searchExtraCompositions", "updaFrameModifier", "waitForFontsLoaded", "triggerConfigError", "setTimeout", "rendererType", "initItems", "gotoFrame", "resize", "_width", "_height", "updateContainerSize", "setSubframe", "renderFrame", "triggerRenderFrameError", "togglePause", "stop", "setCurrentRawFrameValue", "getMarkerData", "markerName", "goToAndStop", "isFrame", "numValue", "isNaN", "frameModifier", "goToAndPlay", "playSegments", "advanceTime", "nextValue", "_isComplete", "checkSegments", "adjustSegment", "setSpeed", "setDirection", "setSegment", "init", "pendingFrame", "forceFlag", "resetSegments", "onEnterFrame", "onLoopComplete", "onSegmentStart", "onDestroy", "getPath", "getAssetData", "hide", "show", "getDuration", "updateDocumentData", "getElementByPath", "animationManager", "registeredAnimations", "initTime", "playingAnimationsNum", "_stopped", "_isFrozen", "removeElement", "ev", "animItem", "subtractPlayingCount", "registerAnimation", "elem", "addPlayingCount", "activate", "nowTime", "elapsedTime", "requestAnimationFrame", "first", "searchAnimations", "standalone", "animElements", "getElementsByClassName", "lenAnims", "getElementsByTagName", "innerText", "div", "freeze", "unfreeze", "getRegisteredAnimations", "animations", "BezierFactory", "str", "replace", "beziers", "bezEasing", "BezierEasing", "kSampleStepSize", "float32ArraySupported", "A", "aA1", "aA2", "B", "C", "calcBezier", "aT", "getSlope", "points", "_p", "_mSampleValues", "_precomputed", "x", "mX1", "mY1", "mX2", "mY2", "_precompute", "_getTForX", "_calcSampleValues", "aX", "mSampleValues", "intervalStart", "currentSample", "kSplineTableSize", "guessForT", "initialSlope", "aGuessT", "currentSlope", "aA", "aB", "currentX", "currentT", "pooling", "double", "poolFactory", "initialLength", "_create", "_release", "_length", "_maxLength", "pool", "newElement", "release", "bezierLengthPool", "addedLength", "percents", "lengths", "segmentsLengthPool", "totalLength", "bezFunction", "math", "pointOnLine2D", "x1", "y1", "x2", "y2", "x3", "y3", "det1", "getBezierLength", "pt1", "pt2", "pt3", "pt4", "ptCoord", "perc", "ptDistance", "curveSegments", "point", "lastPoint", "lengthData", "BezierData", "segmentLength", "PointData", "partial", "partialLength", "storedData", "buildBezierData", "bezierName", "bezierData", "getDistancePerc", "initPos", "lengthPos", "lPerc", "dir", "bezierSegmentPoints", "getSegmentsLength", "shapeData", "segmentsLength", "pathV", "pathO", "pathI", "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", "bez", "PropertyFactory", "initFrame", "mathAbs", "interpolateValue", "frameNum", "caching", "newValue", "offsetTime", "propType", "pv", "keyData", "nextKeyData", "keyframeMetadata", "fnc", "iterationIndex", "keyframes", "keyframesMetadata", "endValue", "out", "quat", "qx", "qy", "qz", "qw", "heading", "attitude", "bank", "nextKeyTime", "keyTime", "ti", "ind", "__fnct", "getBezierEasing", "segmentPerc", "distanceInLine", "lastFrame", "_lastKeyframeIndex", "_lastAddedLength", "_lastPoint", "outX", "outY", "inX", "inY", "keyValue", "sh", "quatStart", "createQuaternion", "quatEnd", "omega", "cosom", "sinom", "scale0", "scale1", "ax", "ay", "az", "aw", "bx", "by", "bz", "bw", "acos", "sin", "atan2", "asin", "c1", "cos", "c2", "c3", "s1", "s2", "s3", "getValueAtCurrentTime", "renderedFrame", "endTime", "_caching", "renderResult", "setVValue", "multipliedValue", "mult", "_mdf", "processEffectsSequence", "frameId", "effectsSequence", "lock", "_isFirstFrame", "finalValue", "kf", "addEffect", "effectFunction", "addDynamicProperty", "ValueProperty", "vel", "getValue", "MultiDimensionalProperty", "KeyframedValueProperty", "KeyframedMultidimensionalProperty", "arrLen", "getProp", "DynamicPropertyContainer", "dynamicProperties", "_isAnimated", "iterateDynamicProperties", "initDynamicPropertyContainer", "pointPool", "ShapePath", "setPathData", "setLength", "doubleArrayLength", "setXYAt", "pos", "setTripleAt", "vX", "vY", "oX", "oY", "iX", "iY", "newPath", "vertices", "outPoints", "inPoints", "cnt", "shapePool", "shapePath", "clone", "shape", "cloned", "ShapeCollection", "addShape", "releaseShapes", "shapeCollectionPool", "newShapeCollection", "shapeCollection", "ShapePropertyFactory", "interpolateShape", "previousValue", "keyPropS", "keyPropE", "isHold", "vertexValue", "interpolateShapeCurrentTime", "resetShape", "paths", "localShapeCollection", "shape1", "shape2", "ShapeProperty", "reset", "KeyframedShapeProperty", "EllShapeProperty", "cPoint", "EllShapePropertyFactory", "convertEllToPath", "p0", "p1", "s0", "_cw", "StarShapeProperty", "StarShapePropertyFactory", "sy", "ir", "is", "convertToPath", "convertStarToPath", "convertPolygonToPath", "or", "os", "rad", "roundness", "perimSegment", "numPts", "angle", "longFlag", "longRad", "shortRad", "longRound", "shortRound", "longPerimSegment", "shortPerimSegment", "currentAng", "ox", "oy", "RectShapeProperty", "RectShapePropertyFactory", "convertRectToPath", "v0", "v1", "Matrix", "_cos", "_sin", "_tan", "tan", "_rnd", "rotate", "mCos", "mSin", "_t", "rotateX", "rotateY", "rotateZ", "shear", "sx", "skew", "skewFromAxis", "scale", "sz", "setTransform", "translate", "tx", "tz", "transform", "a2", "b2", "d2", "e2", "f2", "g2", "h2", "i2", "j2", "l2", "m2", "n2", "o2", "p2", "_identityCalculated", "a1", "b1", "d1", "e1", "f1", "g1", "h1", "i1", "j1", "k1", "l1", "m1", "n1", "o1", "isIdentity", "_identity", "equals", "matr", "cloneFromProps", "applyToPoint", "z", "applyToX", "applyToY", "applyToZ", "getInverseMatrix", "determinant", "inverseMatrix", "inversePoint", "applyToPointArray", "inversePoints", "pts", "retPts", "applyToTriplePoints", "p4", "p5", "p12", "p13", "applyToPointStringified", "toCSS", "cssValue", "roundMatrixProperty", "to2dCSS", "_typeof$3", "lottie", "setLocation", "href", "setSubframeRendering", "setPrefix", "prefix", "setQuality", "inBrowser", "installPlugin", "plugin", "getFactory", "checkReady", "readyStateCheckInterval", "getQueryVariable", "variable", "vars", "queryString", "pair", "decodeURIComponent", "useWebWorker", "setIDPrefix", "__getFactory", "version", "scripts", "myScript", "exports", "bodymovin", "ShapeModifiers", "modifiers", "registerModifier", "getModifier", "ShapeModifier", "TrimModifier", "PuckerAndBloatModifier", "initModifierProperties", "addShapeToModifier", "setAsAnimated", "processKeys", "sValue", "eValue", "pathsData", "calculateShapeEdges", "shapeLength", "totalModifierLength", "segmentOb", "shapeSegments", "shapeS", "shapeE", "releasePathsData", "processShapes", "shapePaths", "_s", "totalShapeLength", "edges", "newShapesData", "addShapes", "lastShape", "addPaths", "newPaths", "addSegment", "newShape", "addSegmentFromArray", "shapeSegment", "currentLengthData", "segmentCount", "amount", "processPath", "centerPoint", "pathLength", "clonedPath", "TransformPropertyFactory", "defaultVector", "TransformProperty", "pre", "appliedTransformations", "px", "py", "pz", "rx", "ry", "rz", "_isDirty", "applyToMatrix", "mat", "forceRender", "precalculateMatrix", "autoOriented", "v2", "getValueAtTime", "autoOrient", "_addDynamicProperty", "getTransformProperty", "RepeaterModifier", "RoundCornersModifier", "floatEqual", "floatZero", "lerp", "lerpPoint", "quadRoots", "singleRoot", "delta", "polynomialCoefficients", "p3", "singlePoint", "PolynomialBezier", "linearize", "pointEqual", "coeffx", "coeffy", "extrema", "intersectData", "t2", "box", "boundingBox", "cx", "cy", "splitData", "boxIntersect", "intersectsImpl", "depth", "tolerance", "intersections", "maxRecursion", "d1s", "d2s", "crossProduct", "lineIntersection", "start1", "end1", "start2", "end2", "v3", "v4", "polarOffset", "pointDistance", "hypot", "ZigZagModifier", "setPoint", "outputBezier", "amplitude", "outAmplitude", "inAmplitude", "angO", "angI", "getPerpendicularVector", "vector", "rot", "getProjectingAngle", "cur", "prevIndex", "nextIndex", "pVector", "zigZagCorner", "frequency", "pointType", "prevPoint", "nextPoint", "prevDist", "nextDist", "zigZagSegment", "dist", "normalAngle", "linearOffset", "offsetSegment", "p1a", "p1b", "p2b", "p2a", "joinLines", "seg1", "seg2", "lineJoin", "miterLimit", "angleOut", "tangentAngle", "angleIn", "center", "radius", "intersection", "getIntersection", "intersect", "pruneSegmentIntersection", "outa", "outb", "pruneIntersections", "offsetSegmentSplit", "right", "mid", "flex", "inflectionPoints", "OffsetPathModifier", "getFontProperties", "fontData", "fStyle", "fWeight", "weight", "tr", "so", "eo", "pMatrix", "rMatrix", "sMatrix", "tMatrix", "matrix", "applyTransforms", "inv", "scaleX", "scaleY", "elemsData", "_currentCopies", "_elements", "_groups", "resetElements", "_processed", "cloneElements", "newElements", "changeGroupRender", "renderFlag", "_render", "items", "itemsTransform", "cont", "hasReloaded", "copies", "ceil", "group", "ix", "reloadShapes", "elems", "transformData", "offsetModulo", "roundOffset", "pProps", "rProps", "sProps", "iteration", "mProps", "rd", "currentV", "currentI", "currentO", "closerV", "distance", "newPosPerc", "derivative", "denom", "tcusp", "square", "root", "p10", "p11", "p20", "p21", "bounds", "bottom", "other", "shapeSegmentInverted", "pointsType", "count", "ml", "lj", "inputBezier", "multiSegments", "lastSeg", "multiSegment", "FontManager", "emptyChar", "w", "size", "combinedCharacters", "surrogateModifiers", "zeroWidthJoiner", "setUpNode", "font", "family", "fontFamily", "fontSize", "fontVariant", "fontStyle", "fontWeight", "letterSpacing", "offsetWidth", "familyArray", "enabledFamilies", "createHelper", "def", "helper", "engine", "fontProps", "tHelper", "fFamily", "fClass", "tCanvasHelper", "OffscreenCanvas", "measureText", "text", "getComputedTextLength", "Font", "typekitLoaded", "_warned", "Date", "now", "setIsLoadedBinded", "setIsLoaded", "checkLoadedFontsBinded", "checkLoadedFonts", "isModifier", "firstCharCode", "secondCharCode", "sum", "isZeroWidthJoiner", "isCombinedCharacter", "_char3", "fontPrototype", "found", "ch", "list", "fontArr", "_pendingFonts", "loadedSelector", "shouldLoadFont", "loaded", "monoCase", "sansCase", "fPath", "fOrigin", "rel", "sc", "getCharData", "_char", "charCodeAt", "console", "warn", "getFontByName", "fName", "_char2", "fontName", "doubleSize", "singleSize", "loadedCount", "removeChild", "RenderableElement", "initRenderable", "isInRange", "hidden", "isTransparent", "renderableComponents", "addRenderableComponent", "component", "removeRenderableComponent", "prepareRenderableFrame", "num", "checkLayerLimits", "checkTransparency", "finalTransform", "mProp", "renderConfig", "hideOnTransparent", "renderRenderable", "sourceRectAtTime", "getLayerSize", "textData", "getBlendMode", "blendModeEnums", "SliderEffect", "AngleEffect", "ColorEffect", "PointEffect", "LayerIndexEffect", "MaskIndexEffect", "CheckboxEffect", "NoValueEffect", "EffectsManager", "effects", "ef", "effectElements", "effectItem", "GroupEffect", "BaseElement", "FrameElement", "FootageElement", "imageLoader", "initBaseData", "AudioElement", "_isPlaying", "_canPlay", "_currentTime", "_volumeMultiplier", "_previousVolume", "_placeholder", "lv", "au", "BaseRenderer", "TransformElement", "MaskElement", "maskElement", "viewData", "solidPath", "rect", "expansor", "feMorph", "currentMasks", "layerId", "maskType", "maskRef", "getShapeProp", "lastPath", "filterID", "expan", "lastOperator", "filterId", "lastRadius", "mask", "createLayerSolidPath", "invRect", "drawPath", "maskedElement", "eff", "checkMasks", "LayerExpressionInterface", "EffectsExpressionInterface", "ShapeExpressionInterface", "TextExpressionInterface", "CompExpressionInterface", "layerInterface", "maskManager", "registerMaskInterface", "effectsInterface", "createEffectsInterface", "registerEffectsInterface", "shapeInterface", "shapesData", "itemsData", "textInterface", "setBlendMode", "blendModeValue", "bm", "baseElement", "layerElement", "effectsManager", "getType", "prepareProperties", "isVisible", "_isParent", "getBaseElement", "FootageInterface", "getFootageData", "timeRemapped", "totalVolume", "volumeValue", "checkLayers", "buildItem", "checkPendingElements", "createItem", "layer", "createImage", "createComp", "createSolid", "createNull", "createShape", "createText", "createCamera", "createFootage", "buildAllItems", "pInterface", "progressiveLoad", "buildElementParenting", "parentName", "hierarchy", "setAsParent", "setHierarchy", "addPendingElement", "pendingElements", "pathValue", "setupGlobalData", "fontsContainer", "animationItem", "compSize", "initTransform", "_matMdf", "_opMdf", "ao", "renderTransform", "finalMat", "globalToLocal", "transforms", "ptNew", "mHelper", "getMaskProperty", "isFirstFrame", "getMaskelement", "pathNodes", "pathString", "pathShapeValue", "filtersFactory", "filId", "skipCoordinates", "fil", "feColorMatrix", "featureSupport", "registeredEffects", "idPrefix", "SVGEffects", "filterManager", "source", "createFilter", "filters", "effect", "countsAsEffect", "registerEffect", "SVGBaseElement", "HierarchyElement", "RenderableDOMElement", "IImageElement", "initElement", "sourceRect", "ProcessedElement", "IShapeElement", "initRendererElement", "createContainerElements", "matteElement", "transformedElement", "_sizeChanged", "layerElementParent", "td", "matteMasks", "symbolElement", "gg", "tt", "ln", "hd", "cp", "clipId", "cpGroup", "renderElement", "destroyBaseElement", "createRenderableComponents", "renderableEffectsManager", "getMatte", "matteType", "useElement", "masker", "createAlphaToLuminanceFilter", "maskGroup", "maskGrouper", "feCTr", "feFunc", "alphaRect", "setMatte", "initHierarchy", "checkParenting", "createContent", "renderInnerContent", "innerElem", "pr", "imagePreserveAspectRatio", "addShapeToModifiers", "shapeModifiers", "isShapeInAnimatedModifiers", "isAnimatedWithShape", "renderModifiers", "searchProcessedElement", "processedElements", "addProcessedElement", "lineCapEnum", "lineJoinEnum", "SVGShapeData", "transformers", "level", "caches", "lStr", "lvl", "SVGStyleData", "pElem", "msElem", "DashProperty", "dataProps", "dashStr", "dashArray", "dashoffset", "SVGStrokeStyleData", "styleOb", "SVGFillStyleData", "SVGNoStyleData", "GradientProperty", "cLength", "_cmdf", "_omdf", "_collapsable", "checkCollapsable", "_hasOpacity", "SVGGradientFillStyleData", "initGradientData", "SVGGradientStrokeStyleData", "ShapeGroupData", "prevViewData", "gr", "SVGTransformData", "comparePoints", "stops", "setGradientData", "setGradientOpacity", "pathElement", "gradientId", "gfill", "gf", "cst", "opacityId", "maskId", "opFill", "lc", "of", "ms", "ost", "buildShapeString", "_o", "_i", "shapeString", "SVGElementsRenderer", "_identityMatrix", "_matrixHelper", "renderContentTransform", "styleData", "itemData", "renderNoop", "renderPath", "pathStringTransformed", "redraw", "iterations", "lLen", "renderFill", "styleElem", "renderGradientStroke", "renderGradient", "renderStroke", "hasOpacity", "attr1", "attr2", "cValues", "oValues", "ang", "createRenderFunction", "SVGShapeElement", "stylesList", "animatedContents", "LetterProps", "sw", "fc", "TextProperty", "_frameId", "keysIndex", "canResize", "minimumFontSize", "currentData", "ascent", "boxWidth", "defaultBoxWidth", "justifyOffset", "lh", "lineWidths", "ls", "ps", "fillColorAnim", "strokeColorAnim", "strokeWidthAnim", "yOffset", "finalSize", "finalText", "finalLineHeight", "copyData", "searchProperty", "completeTextData", "initSecondaryElement", "identityMatrix", "buildExpressionInterface", "searchShapes", "filterUniqueShapes", "tempShapes", "areAnimated", "setShapesAsAnimated", "createStyleElement", "elementData", "addToAnimatedContents", "createGroupElement", "createTransformElement", "transformProperty", "createShapeElement", "ownTransformers", "setElementStyles", "currentTransform", "modifier", "processedPos", "ownStyles", "ownModifiers", "renderShape", "animatedContent", "setCurrentData", "searchKeyframes", "getKeyframeValue", "_finalValue", "currentValue", "currentIndex", "textKeys", "buildFinalText", "charCode", "charactersArray", "shouldCombine", "charAt", "newLineFlag", "letters", "anchorGrouping", "currentSize", "currentPos", "currentLine", "lineWidth", "maxLineWidth", "trackingOffset", "currentHeight", "boxHeight", "lastSpaceIndex", "currentChar", "uncollapsedSpaces", "an", "add", "anIndexes", "animatorJustifyOffset", "extra", "animatorData", "letterData", "based", "animators", "indexes", "fh", "fs", "fb", "rn", "totalChars", "newInd", "currentInd", "newData", "dData", "recalculate", "canResizeFont", "_canResize", "setMinimumFontSize", "_fontValue", "TextSelectorProp", "TextSelectorPropFactory", "_currentTextLength", "finalS", "finalE", "xe", "ne", "sm", "getMult", "textProperty", "easer", "tot", "smoothness", "threshold", "newCharsFlag", "divisor", "getTextSelectorProp", "TextAnimatorDataProperty", "animatorProps", "defaultData", "textAnimatorAnimatables", "TextAnimatorProperty", "renderType", "_hasMaskedPath", "_textData", "_renderType", "_elem", "_animatorsData", "_pathData", "_moreOptions", "alignment", "renderedLetters", "lettersChangedFlag", "ITextElement", "searchProperties", "getMeasures", "xPos", "yPos", "pathInfo", "currentLength", "currentPoint", "pointInd", "segmentInd", "tanAngle", "matrixHelper", "renderedLettersCount", "tLength", "pi", "letterValue", "yOff", "firstLine", "offf", "xPathPos", "yPathPos", "elemOpacity", "letterSw", "letterSc", "letterFc", "letterO", "initPathPos", "initSegmentInd", "initPointInd", "letterM", "letterP", "defaultPropsArray", "animatorFirstCharOffset", "justifyOffsetMult", "isNewLine", "animatorOffset", "atan", "textAnimator", "buildNewText", "createPathShape", "shapeStr", "_fontSize", "applyTextPropertiesToMatrix", "lineNumber", "buildColor", "colorData", "emptyProp", "emptyShapeData", "SVGTextLottieElement", "textSpans", "ISolidElement", "NullElement", "SVGRendererBase", "ICompElement", "SVGCompElement", "supports3d", "SVGRenderer", "config", "ariaLabel", "title", "titleElement", "titleId", "description", "descElement", "descId", "preserveAspectRatio", "contentVisibility", "viewBoxOnly", "viewBoxSize", "className", "focusable", "filterSize", "runExpressions", "destroyed", "CVContextData", "saved", "cArrPos", "cTr", "cO", "savedOp", "ShapeTransformManager", "sequences", "sequenceList", "transform_key_count", "CVEffects", "CVMaskElement", "hasMasks", "CVBaseElement", "CVShapeData", "transformsManager", "styledShapes", "styledShape", "addTransformSequence", "trNodes", "CVShapeElement", "CVTextElement", "stroke", "currentRender", "sWidth", "fValue", "CVImageElement", "CVSolidElement", "CanvasRendererBase", "clearCanvas", "context", "dpr", "devicePixelRatio", "currentGlobalAlpha", "contextData", "transformMat", "CVCompElement", "CanvasRenderer", "HBaseElement", "HSolidElement", "HShapeElement", "shapesContainer", "currentBBox", "HTextElement", "textPaths", "isMasked", "HCameraElement", "pe", "_prevMat", "HImageElement", "HybridRendererBase", "threeDElements", "camera", "HCompElement", "HybridRenderer", "singleShape", "textContainer", "buildTextContents", "textArray", "textContents", "currentTextContent", "fromCharCode", "buildShapeData", "shapeItem", "tSpan", "usesGlyphs", "cachedSpansLength", "span", "childSpan", "glyph", "glyphElement", "_debug", "tElement", "justify", "textBox", "bbox", "renderedLetter", "textSpan", "findIndexByInd", "appendElementInPos", "elementIndex", "tp", "matteMask", "nextElement", "setElements", "getElements", "destroyElements", "duplicate", "newLength", "currentSavedOp", "sequence", "processSequence", "processSequences", "getNewKey", "canvasContext", "beginPath", "moveTo", "lineTo", "bezierCurveTo", "save", "clip", "createElements", "blendMode", "globalCompositeOperation", "hideElement", "showElement", "forceRealStack", "ctxTransform", "ctxOpacity", "restore", "transformHelper", "opacity", "dashResetter", "preTransforms", "co", "wi", "da", "addTransformToStyleList", "removeTransformFromStyleList", "closeStyles", "shouldRender", "ownTransforms", "_shouldRender", "renderShapeTransform", "parentTransform", "groupTransform", "drawLayer", "nodes", "currentStyle", "coOp", "strokeStyle", "grd", "lineCap", "setLineDash", "lineDashOffset", "closePath", "isMain", "renderGradientFill", "renderStyledShape", "shapeNodes", "groupTransformMat", "createLinearGradient", "createRadialGradient", "addColorStop", "hasFill", "hasStroke", "commands", "pathArr", "commandsCounter", "lastFill", "lastStroke", "lastStrokeW", "widthCrop", "heightCrop", "imgW", "imgH", "imgRel", "canvasRel", "par", "drawImage", "cProps", "trProps", "globalAlpha", "actionFlag", "popped", "containerStyle", "mozTransformOrigin", "transformCanvas", "isDashed", "elementWidth", "elementHeight", "elementRel", "animationRel", "offsetHeight", "fillType", "clearRect", "checkBlendMode", "tg", "transformedElementStyle", "matrixValue", "webkitTransform", "addEffects", "backgroundColor", "_renderShapeFrame", "shapeCont", "getTransformedPoint", "calculateShapeBoundingBox", "vPoint", "oPoint", "nextIPoint", "nextVPoint", "checkBounds", "getBoundsOfCurve", "shapeBoundingBox", "xMax", "yMax", "tempBoundingBox", "b2ac", "calculateF", "calculateBoundingBox", "expandStrokeBoundingBox", "widthProperty", "kfw", "currentBoxContains", "changed", "shapeStyle", "shapeTransform", "compW", "compH", "innerElemStyle", "textColor", "strokeWidth", "lineHeight", "tParent", "tCont", "children", "tContStyle", "tContTranslation", "tStyle", "tSpanTranslation", "svgStyle", "translation", "textPath", "margin", "svgTransform", "setup", "perspectiveStyle", "perspectiveElem", "perspective", "webkitPerspective", "mTransf", "diffVector", "mag", "lookDir", "lookLengthOnXZ", "mRotationX", "mRotationY", "hasMatrixChanged", "matValue", "Image", "imageElem", "newDOMElement", "ddd", "addTo3dContainer", "nextDOMElement", "nextLayer", "getThreeDContainerByPos", "startPos", "endPos", "createThreeDContainer", "threeDContainerData", "build3dContainers", "lastThreeDContainerData", "currentContainer", "resizerElem", "overflow", "cWidth", "cHeight", "floatingContainer", "_createBaseContainerElements", "_thisLayerFunction", "pixelAspect", "frameDuration", "displayStartTime", "numLayers", "Expressions", "stackCount", "registers", "pushExpression", "popExpression", "releaseInstances", "registerExpressionProperty", "expression", "MaskManagerInterface", "MaskInterface", "_mask", "_data", "_masksInterfaces", "ExpressionPropertyInterface", "defaultUnidimensionalValue", "defaultMultidimensionalValue", "completeProperty", "expressionValue", "getVelocityAtTime", "numKeys", "valueProp", "valueAtTime", "speedAtTime", "getSpeedAtTime", "velocityAtTime", "propertyGroup", "defaultGetter", "arrValue", "TransformExpressionInterface", "_thisFunction", "rotation", "xRotation", "yRotation", "xPosition", "yPosition", "zPosition", "anchorPoint", "_px", "_py", "_pz", "_transformFactory", "getMatrix", "toWorldMat", "toWorldVec", "applyPoint", "toWorld", "fromWorldVec", "invertPoint", "fromWorld", "fromComp", "sampleImage", "transformInterface", "toComp", "anchorPointDescriptor", "defineProperties", "hasParent", "anchor_point", "active", "startTime", "inPoint", "outPoint", "propertyGroupFactory", "interfaceFunction", "parentPropertyGroup", "PropertyInterface", "propertyName", "effectsData", "createGroupInterface", "groupInterface", "mn", "_propertyGroup", "createValueInterface", "numProperties", "np", "enabled", "en", "expressionProperty", "setGroupProperty", "ShapePathInterface", "view", "propertyIndex", "iterateElements", "groupInterfaceFactory", "fillInterfaceFactory", "strokeInterfaceFactory", "trimInterfaceFactory", "ellipseInterfaceFactory", "starInterfaceFactory", "rectInterfaceFactory", "roundedInterfaceFactory", "repeaterInterfaceFactory", "gradientFillInterfaceFactory", "interfaces", "transformInterfaceFactory", "cix", "startPoint", "endPoint", "_dashPropertyGroup", "dashOb", "addPropertyToDashOb", "dash", "skewAxis", "outerRadius", "outerRoundness", "innerRoundness", "innerRadius", "_interfaceFunction", "_prevValue", "_sourceText", "sourceText", "stringValue", "_typeof$2", "dataInterfaceFactory", "outlineInterface", "currentPropertyName", "currentProperty", "propertyNameIndex", "dataInterface", "footage", "getInterface", "_typeof$1", "seedRandom", "global", "startdenom", "significance", "ARC4", "keylen", "me", "S", "copy", "typ", "mixkey", "seed", "smear", "stringseed", "tostring", "shortseed", "entropy", "Uint8Array", "crypto", "msCrypto", "getRandomValues", "browser", "plugins", "screen", "autoseed", "arc4", "prng", "int32", "quick", "pass", "is_math_call", "initialize$2", "propTypes", "SHAPE", "_typeof", "ExpressionManager", "fetch", "frames", "$bm_isInstanceOfArray", "isNumerable", "tOfV", "$bm_neg", "tOfA", "lenA", "retArr", "easeInBez", "easeOutBez", "easeInOutBez", "tOfB", "lenB", "sub", "mul", "$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", "noOp", "_value", "needsVelocity", "_needsRandom", "elemType", "$bm_transform", "thisProperty", "loopIn", "loop_in", "loopOut", "loop_out", "smooth", "fromCompToSurface", "thisLayer", "thisComp", "scoped_bm_rt", "expression_function", "eval", "wiggle", "freq", "amp", "iWiggle", "lenWiggle", "addedAmps", "periods", "loopInDuration", "loopOutDuration", "velocity", "textIndex", "textTotal", "selectorValue", "lookAt", "elem1", "elem2", "fVec", "pitch", "easeOut", "val1", "val2", "applyEase", "easeIn", "ease", "iKey", "lenKey", "nearestKey", "obKey", "framesToTime", "fps", "timeToFrames", "seedrandom", "randSeed", "substring", "posterizeTime", "framesPerSecond", "executeExpression", "frameExpressionId", "__preventDeadCodeRemoval", "expressionHelpers", "searchExpressions", "speed", "_cachingAtTime", "getStaticValueAtTime", "addPropertyDecorator", "durationFlag", "cycleDuration", "firstKeyFrame", "ret", "lastKeyFrame", "initV", "endV", "current", "repeats", "lastValue", "nextLastValue", "firstValue", "nextFirstValue", "samples", "sampleValue", "sampleFrequency", "getTransformValueAtTime", "_transformCachingAtTime", "anchor", "rotationZ", "rotationY", "rotationX", "orientation", "positionX", "positionY", "positionZ", "getTransformStaticValueAtTime", "propertyGetProp", "ShapePropertyConstructorFunction", "getConstructorFunction", "KeyframedShapePropertyConstructorFunction", "getKeyframedConstructorFunction", "ShapeExpressions", "isClosed", "pointOnPath", "_segmentsLength", "accumulatedLength", "initIndex", "endIndex", "vectorOnPath", "vectorType", "xLength", "yLength", "magnitude", "tangentOnPath", "normalOnPath", "shapeValue", "lastTime", "propertyGetShapeProp", "trims", "initialize$1", "addDecorator", "getExpressionValue", "calculateExpression", "isKeyframed", "hasExpressions", "initialize", "SVGComposableEffect", "SVGTintFilter", "matrixFilter", "feMerge", "createMergeNode", "SVGFillFilter", "SVGStrokeEffect", "initialized", "SVGTritoneFilter", "feComponentTransfer", "feFuncR", "feFuncG", "feFuncB", "SVGProLevelsFilter", "createFeFunc", "feFuncA", "feFuncRComposed", "feFuncGComposed", "feFuncBComposed", "SVGDropShadowEffect", "globalFilterSize", "feGaussianBlur", "feOffset", "feFlood", "feComposite", "resultId", "ins", "feMergeNode", "colorBlack", "colorWhite", "groupPath", "elemChildren", "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", "SVGGaussianBlurEffect", "findSymbol", "replaceInParent", "symbolId", "nextChild", "useElem", "setElementAsMask", "symbol", "sigma", "dimensions", "sigmaX", "sigmaY", "edgeMode", "module", "LOTTIE_PLAYER_VERSION", "LOTTIE_WEB_VERSION", "PlayerState", "PlayMode", "PlayerEvents", "parseSrc", "isLottie", "json", "every", "field", "fromURL", "srcUrl", "Loading", "Normal", "_this", "srcParsed", "jsonData", "srcAttrib", "_lottie", "webworkers", "_attachEventListeners", "disableCheck", "currentState", "dispatchEvent", "CustomEvent", "getLottie", "getVersions", "lottieWebVersion", "lottiePlayerVersion", "Playing", "Play", "Paused", "Pause", "_counter", "Stopped", "Stop", "Destroyed", "frame", "seeker", "snapshot", "download", "XMLSerializer", "serializeToString", "encodeURIComponent", "click", "setLooping", "togglePlay", "toggleLooping", "_io", "disconnect", "_onVisibilityChange", "controls", "animationClass", "background", "disableShadowDOM", "renderControls", "IntersectionObserver", "entries", "isIntersecting", "Frozen", "observe", "Rendered", "isStopped", "_handleSeekChange", "_prevState", "Frame", "detail", "Complete", "Bounce", "Loop", "intermission", "Ready", "Load", "hover", "Freeze", "LottiePlayer", "DEFAULT_OPTIONS", "player", "ERROR_PREFIX", "LottieInteractivity", "actions", "container", "mode", "options", "_this", "holdTransition", "addEventListener", "o", "passive", "holdState", "stateHandler", "set", "interactionIdx", "loop", "parseInt", "autoplay", "transitionHandler", "handler", "state", "stop", "forceFlag", "isPaused", "y", "clickCounter", "play", "setDirection", "playDirection", "transition", "count", "clickLimit", "get", "call", "nextInteraction", "removeEventListener", "goToAndPlay", "u", "e", "clientX", "clientY", "cancelable", "preventDefault", "touches", "f", "repeatAmount", "repeat", "playCounter", "E", "frames", "currentFrame", "setTimeout", "g", "totalFrames", "pause", "holdStatus", "I", "type", "x", "index", "a", "incrementIndex", "oldInterctionIdx", "jumpToIndex", "jumpTo", "length", "ignorePath", "goToAndStop", "reset", "resetSegments", "dispatchEvent", "CustomEvent", "bubbles", "composed", "detail", "oldIndex", "newIndex", "playSegments", "path", "_typeof", "enteredPlayer", "constructor", "name", "fileName", "loadedAnimation", "substr", "lastIndexOf", "lottieContainerSize", "getBoundingClientRect", "newContainerStyle", "width", "height", "style", "background", "setAttribute", "elem", "document", "querySelector", "nodeName", "attachedListeners", "getLottie", "load", "HTMLElement", "Error", "window", "lottie", "innerHTML", "loadAnimation", "animationData", "S", "stateFunction", "transitionFunction", "speed", "delay", "setSpeed", "pos", "getContainerCursorPosition", "action", "find", "n", "position", "Array", "isArray", "Number", "isNaN", "xPercent", "yPercent", "Math", "floor", "ceil", "M", "currentPercent", "getContainerVisibility", "t", "visibility", "start", "end", "assignedSegment", "round", "scrolledAndPlayed", "message", "wrapper", "this", "Map", "top", "innerHeight", "cursorX", "cursorY", "left", "p", "isLoaded", "initScrollMode", "_this2", "initCursorMode", "initChainMode", "destroy", "i", "c", "C", "A", "d", "h", "v", "m", "L", "w", "b", "k", "P", "create", "instance", "cssHasPseudo", "document", "observedItems", "attributeElement", "createElement", "forEach", "call", "styleSheets", "walkStyleSheet", "transformObservedItems", "MutationObserver", "mutationsList", "mutation", "addedNodes", "node", "nodeType", "sheet", "cleanupObservedCssRules", "observe", "childList", "subtree", "addEventListener", "requestAnimationFrame", "item", "nodes", "querySelectorAll", "scopeSelector", "element", "nthChild", "indexOf", "parentNode", "children", "relativeSelectors", "map", "relativeSelector", "join", "relativeElement", "querySelector", "isNot", "push", "innerHTML", "attributeName", "setAttributeNode", "attributes", "cloneNode", "documentElement", "style", "zoom", "removeAttribute", "apply", "splice", "filter", "rule", "parentStyleSheet", "ownerNode", "contains", "styleSheet", "cssRules", "selectorText", "selectors", "decodeURIComponent", "replace", "match", "encodeURIComponent", "split", "error", "$", "selector", "parent", "openMenu", "parent", "button", "$", "closeMenu", "e", "event", "isOpen", "mobileMenu", "closest", "$navItem", "child", "item", "siblings", "sibling", "supportsVideo", "video", "playPauseButton", "video", "playPauseButton", "heading", "paragraph", "tagline", "navItems", "milestones", "updateContent", "milestone", "index", "item", "initializeMilestones", "updateProgressBorders", "currentTime", "nextMilestone", "startTime", "endTime", "progress", "handleTimeUpdate", "triggeredMilestones", "previousTime", "togglePlayPause", "direction", "A11yTab", "tablist", "options", "tabs", "panels", "hash", "activeTab", "tab", "index", "panelId", "event", "key", "codes", "target", "vertical", "proceed", "setFocus", "panel", "focused", "tabsCollections", "i", "count", "import_lottie_player", "import_lottie_interactivity_min", "event", "animations", "YOUTUBE_REGEX", "SUPPORTED_EXTENSION_REGEX", "lightbox", "empty", "element", "container", "closeButton", "event", "target", "hostname", "searchParams", "pathname", "hash", "videoId", "content", "extension", "cssHasPseudo", "empLinks", "e"] }