lumino-showroom/assets/libs/lottie-player.js.map

1 line
1.0 MiB
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{"version":3,"file":"lottie-player.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/@lit/reactive-element/css-tag.js","../node_modules/@lit/reactive-element/reactive-element.js","../node_modules/lit-html/lit-html.js","../node_modules/lit-element/lit-element.js","../node_modules/@lit/reactive-element/decorators/custom-element.js","../node_modules/@lit/reactive-element/decorators/property.js","../node_modules/@lit/reactive-element/decorators/state.js","../node_modules/@lit/reactive-element/decorators/base.js","../node_modules/@lit/reactive-element/decorators/event-options.js","../node_modules/@lit/reactive-element/decorators/query.js","../node_modules/@lit/reactive-element/decorators/query-all.js","../node_modules/@lit/reactive-element/decorators/query-async.js","../node_modules/@lit/reactive-element/decorators/query-assigned-elements.js","../node_modules/@lit/reactive-element/decorators/query-assigned-nodes.js","../node_modules/lottie-web/build/player/lottie.js","../src/lottie-player.styles.ts","../src/lottie-player.ts"],"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?\"<svg>\":\"\",d=c;for(let i=0;i<o;i++){const s=t[i];let o,u,p=-1,$=0;for(;$<s.length&&(d.lastIndex=$,u=d.exec(s),null!==u);)$=d.lastIndex,d===c?\"!--\"===u[1]?d=v:void 0!==u[1]?d=a:void 0!==u[2]?(g.test(u[2])&&(h=RegExp(\"</\"+u[2],\"g\")),d=f):void 0!==u[3]&&(d=f):d===f?\">\"===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?\"</svg>\":\"\");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.length<u;){if(1===l.nodeType){if(l.hasAttributes()){const t=[];for(const i of l.getAttributeNames())if(i.endsWith(\"$lit$\")||i.startsWith(e)){const s=a[d++];if(t.push(i),void 0!==s){const t=l.getAttribute(s.toLowerCase()+\"$lit$\").split(e),i=/([.?@])?(.*)/.exec(s);c.push({type:1,index:r,name:i[2],strings:t,ctor:\".\"===i[1]?M:\"?\"===i[1]?H:\"@\"===i[1]?I:S})}else c.push({type:6,index:r})}for(const i of t)l.removeAttribute(i)}if(g.test(l.tagName)){const t=l.textContent.split(e),s=t.length-1;if(s>0){l.textContent=i?i.emptyScript:\"\";for(let i=0;i<s;i++)l.append(t[i],h()),A.nextNode(),c.push({type:2,index:++r});l.append(t[s],h())}}}else if(8===l.nodeType)if(l.data===o)c.push({type:2,index:r});else{let t=-1;for(;-1!==(t=l.data.indexOf(e,t+1));)c.push({type:7,index:r}),t+=e.length-1}r++}}static createElement(t,i){const s=l.createElement(\"template\");return s.innerHTML=t,s}}function P(t,i,s=t,e){var o,n,l,h;if(i===b)return i;let d=void 0!==e?null===(o=s._$Cl)||void 0===o?void 0:o[e]:s._$Cu;const u=r(i)?void 0:i._$litDirective$;return(null==d?void 0:d.constructor)!==u&&(null===(n=null==d?void 0:d._$AO)||void 0===n||n.call(d,!1),void 0===u?d=void 0:(d=new u(t),d._$AT(t,s,e)),void 0!==e?(null!==(l=(h=s)._$Cl)&&void 0!==l?l:h._$Cl=[])[e]=d:s._$Cu=d),void 0!==d&&(i=P(t,d._$AS(t,i.values),d,e)),i}class V{constructor(t,i){this.v=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(t){var i;const{el:{content:s},parts:e}=this._$AD,o=(null!==(i=null==t?void 0:t.creationScope)&&void 0!==i?i:l).importNode(s,!0);A.currentNode=o;let n=A.nextNode(),h=0,r=0,d=e[0];for(;void 0!==d;){if(h===d.index){let i;2===d.type?i=new N(n,n.nextSibling,this,t):1===d.type?i=new d.ctor(n,d.name,d.strings,this,t):6===d.type&&(i=new L(n,this,t)),this.v.push(i),d=e[++r]}h!==(null==d?void 0:d.index)&&(n=A.nextNode(),h++)}return o}m(t){let i=0;for(const s of this.v)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class N{constructor(t,i,s,e){var o;this.type=2,this._$AH=w,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cg=null===(o=null==e?void 0:e.isConnected)||void 0===o||o}get _$AU(){var t,i;return null!==(i=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==i?i:this._$Cg}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=P(this,t,i),r(t)?t===w||null==t||\"\"===t?(this._$AH!==w&&this._$AR(),this._$AH=w):t!==this._$AH&&t!==b&&this.$(t):void 0!==t._$litType$?this.T(t):void 0!==t.nodeType?this.S(t):u(t)?this.A(t):this.$(t)}M(t,i=this._$AB){return this._$AA.parentNode.insertBefore(t,i)}S(t){this._$AH!==t&&(this._$AR(),this._$AH=this.M(t))}$(t){this._$AH!==w&&r(this._$AH)?this._$AA.nextSibling.data=t:this.S(l.createTextNode(t)),this._$AH=t}T(t){var i;const{values:s,_$litType$:e}=t,o=\"number\"==typeof e?this._$AC(t):(void 0===e.el&&(e.el=E.createElement(e.h,this.options)),e);if((null===(i=this._$AH)||void 0===i?void 0:i._$AD)===o)this._$AH.m(s);else{const t=new V(o,this),i=t.p(this.options);t.m(s),this.S(i),this._$AH=t}}_$AC(t){let i=T.get(t.strings);return void 0===i&&T.set(t.strings,i=new E(t)),i}A(t){d(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const o of t)e===i.length?i.push(s=new N(this.M(h()),this.M(h()),this,this.options)):s=i[e],s._$AI(o),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){var s;for(null===(s=this._$AP)||void 0===s||s.call(this,!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){var i;void 0===this._$AM&&(this._$Cg=t,null===(i=this._$AP)||void 0===i||i.call(this,t))}}class S{constructor(t,i,s,e,o){this.type=1,this._$AH=w,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=o,s.length>2||\"\"!==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<o.length-1;l++)h=P(this,e[s+l],i,l),h===b&&(h=this._$AH[l]),n||(n=!r(h)||h!==this._$AH[l]),h===w?t=w:t!==w&&(t+=(null!=h?h:\"\")+o[l+1]),this._$AH[l]=h}n&&!e&&this.k(t)}k(t){t===w?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,null!=t?t:\"\")}}class M extends S{constructor(){super(...arguments),this.type=3}k(t){this.element[this.name]=t===w?void 0:t}}const k=i?i.emptyScript:\"\";class H extends S{constructor(){super(...arguments),this.type=4}k(t){t&&t!==w?this.element.setAttribute(this.name,k):this.element.removeAttribute(this.name)}}class I extends S{constructor(t,i,s,e,o){super(t,i,s,e,o),this.type=5}_$AI(t,i=this){var s;if((t=null!==(s=P(this,t,i,0))&&void 0!==s?s:w)===b)return;const e=this._$AH,o=t===w&&e!==w||t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive,n=t!==w&&(e===w||o);o&&this.element.removeEventListener(this.name,this,e),n&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var i,s;\"function\"==typeof this._$AH?this._$AH.call(null!==(s=null===(i=this.options)||void 0===i?void 0:i.host)&&void 0!==s?s:this.element,t):this._$AH.handleEvent(t)}}class L{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){P(this,t)}}const R={P:\"$lit$\",V:e,L:o,I:1,N:C,R:V,D:u,j:P,H:N,O:S,F:H,B:I,W:M,Z:L},z=window.litHtmlPolyfillSupport;null==z||z(E,N),(null!==(t=globalThis.litHtmlVersions)&&void 0!==t?t:globalThis.litHtmlVersions=[]).push(\"2.1.2\");export{R as _$LH,$ as html,b as noChange,w as nothing,x as render,y as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as i}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var l,o;const r=t;class s extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Dt=void 0}createRenderRoot(){var t,e;const i=super.createRenderRoot();return null!==(t=(e=this.renderOptions).renderBefore)&&void 0!==t||(e.renderBefore=i.firstChild),i}update(t){const i=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Dt=e(i,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Dt)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Dt)||void 0===t||t.setConnected(!1)}render(){return i}}s.finalized=!0,s._$litElement$=!0,null===(l=globalThis.litElementHydrateSupport)||void 0===l||l.call(globalThis,{LitElement:s});const n=globalThis.litElementPolyfillSupport;null==n||n({LitElement:s});const h={_$AK:(t,e,i)=>{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(root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(function() {\n return factory(root);\n });\n } else if (typeof module === \"object\" && module.exports) {\n module.exports = factory(root);\n } else {\n root.lottie = factory(root);\n root.bodymovin = root.lottie;\n }\n}((window || {}), function(window) {\n\t/* global locationHref:writable, animationManager, subframeEnabled:writable, defaultCurveSegments:writable, roundValues,\r\nexpressionsPlugin:writable, PropertyFactory, ShapePropertyFactory, Matrix, idPrefix:writable, _useWebWorker:writable */\r\n/* exported locationHref, subframeEnabled, expressionsPlugin, idPrefix, _useWebWorker */\r\n\r\n'use strict';\r\n\r\n/* exported svgNS, locationHref, initialDefaultFrame, _useWebWorker */\r\n\r\nvar svgNS = 'http://www.w3.org/2000/svg';\r\n\r\nvar locationHref = '';\r\n\r\nvar initialDefaultFrame = -999999;\r\n\r\nvar _useWebWorker = false;\r\n\r\n/* global createSizedArray */\r\n/* exported subframeEnabled, expressionsPlugin, isSafari, cachedColors, bmPow, bmSqrt, bmFloor, bmMax, bmMin, ProjectInterface,\r\ndefaultCurveSegments, degToRads, roundCorner, bmRnd, styleDiv, BMEnterFrameEvent, BMCompleteEvent, BMCompleteLoopEvent,\r\nBMSegmentStartEvent, BMDestroyEvent, BMRenderFrameErrorEvent, BMConfigErrorEvent, BMAnimationConfigErrorEvent, createElementID,\r\naddSaturationToRGB, addBrightnessToRGB, addHueToRGB, rgbToHex */\r\n\r\nvar subframeEnabled = true;\r\nvar idPrefix = '';\r\nvar expressionsPlugin;\r\nvar isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\r\nvar cachedColors = {};\r\nvar bmRnd;\r\nvar bmPow = Math.pow;\r\nvar bmSqrt = Math.sqrt;\r\nvar bmFloor = Math.floor;\r\nvar bmMax = Math.max;\r\nvar bmMin = Math.min;\r\n\r\nvar BMMath = {};\r\n(function () {\r\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\r\n var i;\r\n var len = propertyNames.length;\r\n for (i = 0; i < len; i += 1) {\r\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\r\n }\r\n}());\r\n\r\nfunction ProjectInterface() { return {}; }\r\n\r\nBMMath.random = Math.random;\r\nBMMath.abs = function (val) {\r\n var tOfVal = typeof val;\r\n if (tOfVal === 'object' && val.length) {\r\n var absArr = createSizedArray(val.length);\r\n var i;\r\n var len = val.length;\r\n for (i = 0; i < len; i += 1) {\r\n absArr[i] = Math.abs(val[i]);\r\n }\r\n return absArr;\r\n }\r\n return Math.abs(val);\r\n};\r\nvar defaultCurveSegments = 150;\r\nvar degToRads = Math.PI / 180;\r\nvar roundCorner = 0.5519;\r\n\r\nfunction roundValues(flag) {\r\n if (flag) {\r\n bmRnd = Math.round;\r\n } else {\r\n bmRnd = function (val) {\r\n return val;\r\n };\r\n }\r\n}\r\nroundValues(false);\r\n\r\nfunction styleDiv(element) {\r\n element.style.position = 'absolute';\r\n element.style.top = 0;\r\n element.style.left = 0;\r\n element.style.display = 'block';\r\n element.style.transformOrigin = '0 0';\r\n element.style.webkitTransformOrigin = '0 0';\r\n element.style.backfaceVisibility = 'visible';\r\n element.style.webkitBackfaceVisibility = 'visible';\r\n element.style.transformStyle = 'preserve-3d';\r\n element.style.webkitTransformStyle = 'preserve-3d';\r\n element.style.mozTransformStyle = 'preserve-3d';\r\n}\r\n\r\nfunction BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\r\n this.type = type;\r\n this.currentTime = currentTime;\r\n this.totalTime = totalTime;\r\n this.direction = frameMultiplier < 0 ? -1 : 1;\r\n}\r\n\r\nfunction BMCompleteEvent(type, frameMultiplier) {\r\n this.type = type;\r\n this.direction = frameMultiplier < 0 ? -1 : 1;\r\n}\r\n\r\nfunction BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\r\n this.type = type;\r\n this.currentLoop = currentLoop;\r\n this.totalLoops = totalLoops;\r\n this.direction = frameMultiplier < 0 ? -1 : 1;\r\n}\r\n\r\nfunction BMSegmentStartEvent(type, firstFrame, totalFrames) {\r\n this.type = type;\r\n this.firstFrame = firstFrame;\r\n this.totalFrames = totalFrames;\r\n}\r\n\r\nfunction BMDestroyEvent(type, target) {\r\n this.type = type;\r\n this.target = target;\r\n}\r\n\r\nfunction BMRenderFrameErrorEvent(nativeError, currentTime) {\r\n this.type = 'renderFrameError';\r\n this.nativeError = nativeError;\r\n this.currentTime = currentTime;\r\n}\r\n\r\nfunction BMConfigErrorEvent(nativeError) {\r\n this.type = 'configError';\r\n this.nativeError = nativeError;\r\n}\r\n\r\nfunction BMAnimationConfigErrorEvent(type, nativeError) {\r\n this.type = type;\r\n this.nativeError = nativeError;\r\n}\r\n\r\nvar createElementID = (function () {\r\n var _count = 0;\r\n return function createID() {\r\n _count += 1;\r\n return idPrefix + '__lottie_element_' + _count;\r\n };\r\n}());\r\n\r\nfunction HSVtoRGB(h, s, v) {\r\n var r;\r\n var g;\r\n var b;\r\n var i;\r\n var f;\r\n var p;\r\n var q;\r\n var t;\r\n i = Math.floor(h * 6);\r\n f = h * 6 - i;\r\n p = v * (1 - s);\r\n q = v * (1 - f * s);\r\n t = v * (1 - (1 - f) * s);\r\n switch (i % 6) {\r\n case 0: r = v; g = t; b = p; break;\r\n case 1: r = q; g = v; b = p; break;\r\n case 2: r = p; g = v; b = t; break;\r\n case 3: r = p; g = q; b = v; break;\r\n case 4: r = t; g = p; b = v; break;\r\n case 5: r = v; g = p; b = q; break;\r\n default: break;\r\n }\r\n return [r,\r\n g,\r\n b];\r\n}\r\n\r\nfunction RGBtoHSV(r, g, b) {\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var d = max - min;\r\n var h;\r\n var s = (max === 0 ? 0 : d / max);\r\n var v = max / 255;\r\n\r\n switch (max) {\r\n case min: h = 0; break;\r\n case r: h = (g - b) + d * (g < b ? 6 : 0); h /= 6 * d; break;\r\n case g: h = (b - r) + d * 2; h /= 6 * d; break;\r\n case b: h = (r - g) + d * 4; h /= 6 * d; break;\r\n default: break;\r\n }\r\n\r\n return [\r\n h,\r\n s,\r\n v,\r\n ];\r\n}\r\n\r\nfunction addSaturationToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[1] += offset;\r\n if (hsv[1] > 1) {\r\n hsv[1] = 1;\r\n } else if (hsv[1] <= 0) {\r\n hsv[1] = 0;\r\n }\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n}\r\n\r\nfunction addBrightnessToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[2] += offset;\r\n if (hsv[2] > 1) {\r\n hsv[2] = 1;\r\n } else if (hsv[2] < 0) {\r\n hsv[2] = 0;\r\n }\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n}\r\n\r\nfunction addHueToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[0] += offset / 360;\r\n if (hsv[0] > 1) {\r\n hsv[0] -= 1;\r\n } else if (hsv[0] < 0) {\r\n hsv[0] += 1;\r\n }\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n}\r\n\r\nvar rgbToHex = (function () {\r\n var colorMap = [];\r\n var i;\r\n var hex;\r\n for (i = 0; i < 256; i += 1) {\r\n hex = i.toString(16);\r\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\r\n }\r\n\r\n return function (r, g, b) {\r\n if (r < 0) {\r\n r = 0;\r\n }\r\n if (g < 0) {\r\n g = 0;\r\n }\r\n if (b < 0) {\r\n b = 0;\r\n }\r\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\r\n };\r\n}());\r\n\r\nfunction BaseEvent() {}\r\nBaseEvent.prototype = {\r\n triggerEvent: function (eventName, args) {\r\n if (this._cbs[eventName]) {\r\n var callbacks = this._cbs[eventName];\r\n for (var i = 0; i < callbacks.length; i += 1) {\r\n callbacks[i](args);\r\n }\r\n }\r\n },\r\n addEventListener: function (eventName, callback) {\r\n if (!this._cbs[eventName]) {\r\n this._cbs[eventName] = [];\r\n }\r\n this._cbs[eventName].push(callback);\r\n\r\n return function () {\r\n this.removeEventListener(eventName, callback);\r\n }.bind(this);\r\n },\r\n removeEventListener: function (eventName, callback) {\r\n if (!callback) {\r\n this._cbs[eventName] = null;\r\n } else if (this._cbs[eventName]) {\r\n var i = 0;\r\n var len = this._cbs[eventName].length;\r\n while (i < len) {\r\n if (this._cbs[eventName][i] === callback) {\r\n this._cbs[eventName].splice(i, 1);\r\n i -= 1;\r\n len -= 1;\r\n }\r\n i += 1;\r\n }\r\n if (!this._cbs[eventName].length) {\r\n this._cbs[eventName] = null;\r\n }\r\n }\r\n },\r\n};\r\n\r\n/* exported createTypedArray, createSizedArray */\r\n\r\nvar createTypedArray = (function () {\r\n function createRegularArray(type, len) {\r\n var i = 0;\r\n var arr = [];\r\n var value;\r\n switch (type) {\r\n case 'int16':\r\n case 'uint8c':\r\n value = 1;\r\n break;\r\n default:\r\n value = 1.1;\r\n break;\r\n }\r\n for (i = 0; i < len; i += 1) {\r\n arr.push(value);\r\n }\r\n return arr;\r\n }\r\n function createTypedArrayFactory(type, len) {\r\n if (type === 'float32') {\r\n return new Float32Array(len);\r\n } if (type === 'int16') {\r\n return new Int16Array(len);\r\n } if (type === 'uint8c') {\r\n return new Uint8ClampedArray(len);\r\n }\r\n return createRegularArray(type, len);\r\n }\r\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\r\n return createTypedArrayFactory;\r\n }\r\n return createRegularArray;\r\n}());\r\n\r\nfunction createSizedArray(len) {\r\n return Array.apply(null, { length: len });\r\n}\r\n\r\n/* global svgNS */\r\n/* exported createNS */\r\n\r\nfunction createNS(type) {\r\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\r\n return document.createElementNS(svgNS, type);\r\n}\r\n\r\n/* exported createTag */\r\n\r\nfunction createTag(type) {\r\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\r\n return document.createElement(type);\r\n}\r\n\r\nfunction DynamicPropertyContainer() {}\r\nDynamicPropertyContainer.prototype = {\r\n addDynamicProperty: function (prop) {\r\n if (this.dynamicProperties.indexOf(prop) === -1) {\r\n this.dynamicProperties.push(prop);\r\n this.container.addDynamicProperty(this);\r\n this._isAnimated = true;\r\n }\r\n },\r\n iterateDynamicProperties: function () {\r\n this._mdf = false;\r\n var i;\r\n var len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n if (this.dynamicProperties[i]._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n },\r\n initDynamicPropertyContainer: function (container) {\r\n this.container = container;\r\n this.dynamicProperties = [];\r\n this._mdf = false;\r\n this._isAnimated = false;\r\n },\r\n};\r\n\r\n/* exported getBlendMode */\r\n\r\nvar getBlendMode = (function () {\r\n var blendModeEnums = {\r\n 0: 'source-over',\r\n 1: 'multiply',\r\n 2: 'screen',\r\n 3: 'overlay',\r\n 4: 'darken',\r\n 5: 'lighten',\r\n 6: 'color-dodge',\r\n 7: 'color-burn',\r\n 8: 'hard-light',\r\n 9: 'soft-light',\r\n 10: 'difference',\r\n 11: 'exclusion',\r\n 12: 'hue',\r\n 13: 'saturation',\r\n 14: 'color',\r\n 15: 'luminosity',\r\n };\r\n\r\n return function (mode) {\r\n return blendModeEnums[mode] || '';\r\n };\r\n}());\r\n\r\n/* exported lineCapEnum, lineJoinEnum */\r\n\r\nvar lineCapEnum = {\r\n 1: 'butt',\r\n 2: 'round',\r\n 3: 'square',\r\n};\r\n\r\nvar lineJoinEnum = {\r\n 1: 'miter',\r\n 2: 'round',\r\n 3: 'bevel',\r\n};\r\n\r\n/* global createTypedArray */\r\n\r\n/*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\r\n\r\n/**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\r\n\r\nvar Matrix = (function () {\r\n var _cos = Math.cos;\r\n var _sin = Math.sin;\r\n var _tan = Math.tan;\r\n var _rnd = Math.round;\r\n\r\n function reset() {\r\n this.props[0] = 1;\r\n this.props[1] = 0;\r\n this.props[2] = 0;\r\n this.props[3] = 0;\r\n this.props[4] = 0;\r\n this.props[5] = 1;\r\n this.props[6] = 0;\r\n this.props[7] = 0;\r\n this.props[8] = 0;\r\n this.props[9] = 0;\r\n this.props[10] = 1;\r\n this.props[11] = 0;\r\n this.props[12] = 0;\r\n this.props[13] = 0;\r\n this.props[14] = 0;\r\n this.props[15] = 1;\r\n return this;\r\n }\r\n\r\n function rotate(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateX(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateY(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateZ(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function shear(sx, sy) {\r\n return this._t(1, sy, sx, 1, 0, 0);\r\n }\r\n\r\n function skew(ax, ay) {\r\n return this.shear(_tan(ax), _tan(ay));\r\n }\r\n\r\n function skewFromAxis(ax, angle) {\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\r\n ._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\r\n ._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\r\n }\r\n\r\n function scale(sx, sy, sz) {\r\n if (!sz && sz !== 0) {\r\n sz = 1;\r\n }\r\n if (sx === 1 && sy === 1 && sz === 1) {\r\n return this;\r\n }\r\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\r\n this.props[0] = a;\r\n this.props[1] = b;\r\n this.props[2] = c;\r\n this.props[3] = d;\r\n this.props[4] = e;\r\n this.props[5] = f;\r\n this.props[6] = g;\r\n this.props[7] = h;\r\n this.props[8] = i;\r\n this.props[9] = j;\r\n this.props[10] = k;\r\n this.props[11] = l;\r\n this.props[12] = m;\r\n this.props[13] = n;\r\n this.props[14] = o;\r\n this.props[15] = p;\r\n return this;\r\n }\r\n\r\n function translate(tx, ty, tz) {\r\n tz = tz || 0;\r\n if (tx !== 0 || ty !== 0 || tz !== 0) {\r\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\r\n }\r\n return this;\r\n }\r\n\r\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\r\n var _p = this.props;\r\n\r\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\r\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\r\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\r\n _p[12] = _p[12] * a2 + _p[15] * m2;\r\n _p[13] = _p[13] * f2 + _p[15] * n2;\r\n _p[14] = _p[14] * k2 + _p[15] * o2;\r\n _p[15] *= p2;\r\n // }\r\n this._identityCalculated = false;\r\n return this;\r\n }\r\n\r\n var a1 = _p[0];\r\n var b1 = _p[1];\r\n var c1 = _p[2];\r\n var d1 = _p[3];\r\n var e1 = _p[4];\r\n var f1 = _p[5];\r\n var g1 = _p[6];\r\n var h1 = _p[7];\r\n var i1 = _p[8];\r\n var j1 = _p[9];\r\n var k1 = _p[10];\r\n var l1 = _p[11];\r\n var m1 = _p[12];\r\n var n1 = _p[13];\r\n var o1 = _p[14];\r\n var p1 = _p[15];\r\n\r\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\r\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\r\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\r\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\r\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\r\n\r\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\r\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\r\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\r\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\r\n\r\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\r\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\r\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\r\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\r\n\r\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\r\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\r\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\r\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\r\n\r\n this._identityCalculated = false;\r\n return this;\r\n }\r\n\r\n function isIdentity() {\r\n if (!this._identityCalculated) {\r\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\r\n this._identityCalculated = true;\r\n }\r\n return this._identity;\r\n }\r\n\r\n function equals(matr) {\r\n var i = 0;\r\n while (i < 16) {\r\n if (matr.props[i] !== this.props[i]) {\r\n return false;\r\n }\r\n i += 1;\r\n }\r\n return true;\r\n }\r\n\r\n function clone(matr) {\r\n var i;\r\n for (i = 0; i < 16; i += 1) {\r\n matr.props[i] = this.props[i];\r\n }\r\n return matr;\r\n }\r\n\r\n function cloneFromProps(props) {\r\n var i;\r\n for (i = 0; i < 16; i += 1) {\r\n this.props[i] = props[i];\r\n }\r\n }\r\n\r\n function applyToPoint(x, y, z) {\r\n return {\r\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\r\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\r\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14],\r\n };\r\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\r\n }\r\n function applyToX(x, y, z) {\r\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\r\n }\r\n function applyToY(x, y, z) {\r\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\r\n }\r\n function applyToZ(x, y, z) {\r\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\r\n }\r\n\r\n function getInverseMatrix() {\r\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\r\n var a = this.props[5] / determinant;\r\n var b = -this.props[1] / determinant;\r\n var c = -this.props[4] / determinant;\r\n var d = this.props[0] / determinant;\r\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\r\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\r\n var inverseMatrix = new Matrix();\r\n inverseMatrix.props[0] = a;\r\n inverseMatrix.props[1] = b;\r\n inverseMatrix.props[4] = c;\r\n inverseMatrix.props[5] = d;\r\n inverseMatrix.props[12] = e;\r\n inverseMatrix.props[13] = f;\r\n return inverseMatrix;\r\n }\r\n\r\n function inversePoint(pt) {\r\n var inverseMatrix = this.getInverseMatrix();\r\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\r\n }\r\n\r\n function inversePoints(pts) {\r\n var i;\r\n var len = pts.length;\r\n var retPts = [];\r\n for (i = 0; i < len; i += 1) {\r\n retPts[i] = inversePoint(pts[i]);\r\n }\r\n return retPts;\r\n }\r\n\r\n function applyToTriplePoints(pt1, pt2, pt3) {\r\n var arr = createTypedArray('float32', 6);\r\n if (this.isIdentity()) {\r\n arr[0] = pt1[0];\r\n arr[1] = pt1[1];\r\n arr[2] = pt2[0];\r\n arr[3] = pt2[1];\r\n arr[4] = pt3[0];\r\n arr[5] = pt3[1];\r\n } else {\r\n var p0 = this.props[0];\r\n var p1 = this.props[1];\r\n var p4 = this.props[4];\r\n var p5 = this.props[5];\r\n var p12 = this.props[12];\r\n var p13 = this.props[13];\r\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\r\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\r\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\r\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\r\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\r\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\r\n }\r\n return arr;\r\n }\r\n\r\n function applyToPointArray(x, y, z) {\r\n var arr;\r\n if (this.isIdentity()) {\r\n arr = [x, y, z];\r\n } else {\r\n arr = [\r\n x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\r\n x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\r\n x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14],\r\n ];\r\n }\r\n return arr;\r\n }\r\n\r\n function applyToPointStringified(x, y) {\r\n if (this.isIdentity()) {\r\n return x + ',' + y;\r\n }\r\n var _p = this.props;\r\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\r\n }\r\n\r\n function toCSS() {\r\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\r\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\r\n var i = 0;\r\n var props = this.props;\r\n var cssValue = 'matrix3d(';\r\n var v = 10000;\r\n while (i < 16) {\r\n cssValue += _rnd(props[i] * v) / v;\r\n cssValue += i === 15 ? ')' : ',';\r\n i += 1;\r\n }\r\n return cssValue;\r\n }\r\n\r\n function roundMatrixProperty(val) {\r\n var v = 10000;\r\n if ((val < 0.000001 && val > 0) || (val > -0.000001 && val < 0)) {\r\n return _rnd(val * v) / v;\r\n }\r\n return val;\r\n }\r\n\r\n function to2dCSS() {\r\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\r\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\r\n var props = this.props;\r\n var _a = roundMatrixProperty(props[0]);\r\n var _b = roundMatrixProperty(props[1]);\r\n var _c = roundMatrixProperty(props[4]);\r\n var _d = roundMatrixProperty(props[5]);\r\n var _e = roundMatrixProperty(props[12]);\r\n var _f = roundMatrixProperty(props[13]);\r\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\r\n }\r\n\r\n return function () {\r\n this.reset = reset;\r\n this.rotate = rotate;\r\n this.rotateX = rotateX;\r\n this.rotateY = rotateY;\r\n this.rotateZ = rotateZ;\r\n this.skew = skew;\r\n this.skewFromAxis = skewFromAxis;\r\n this.shear = shear;\r\n this.scale = scale;\r\n this.setTransform = setTransform;\r\n this.translate = translate;\r\n this.transform = transform;\r\n this.applyToPoint = applyToPoint;\r\n this.applyToX = applyToX;\r\n this.applyToY = applyToY;\r\n this.applyToZ = applyToZ;\r\n this.applyToPointArray = applyToPointArray;\r\n this.applyToTriplePoints = applyToTriplePoints;\r\n this.applyToPointStringified = applyToPointStringified;\r\n this.toCSS = toCSS;\r\n this.to2dCSS = to2dCSS;\r\n this.clone = clone;\r\n this.cloneFromProps = cloneFromProps;\r\n this.equals = equals;\r\n this.inversePoints = inversePoints;\r\n this.inversePoint = inversePoint;\r\n this.getInverseMatrix = getInverseMatrix;\r\n this._t = this.transform;\r\n this.isIdentity = isIdentity;\r\n this._identity = true;\r\n this._identityCalculated = false;\r\n\r\n this.props = createTypedArray('float32', 16);\r\n this.reset();\r\n };\r\n}());\r\n\r\n/* eslint-disable */\r\n/*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\r\n\r\n(function (pool, math) {\r\n//\r\n// The following constants are related to IEEE 754 limits.\r\n//\r\n var global = this,\r\n width = 256, // each RC4 output is 0 <= x < 256\r\n chunks = 6, // at least six RC4 outputs for each double\r\n digits = 52, // there are 52 significant digits in a double\r\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\r\n startdenom = math.pow(width, chunks),\r\n significance = math.pow(2, digits),\r\n overflow = significance * 2,\r\n mask = width - 1,\r\n nodecrypto; // node.js crypto module, initialized at the bottom.\r\n\r\n//\r\n// seedrandom()\r\n// This is the seedrandom function described above.\r\n//\r\n function seedrandom(seed, options, callback) {\r\n var key = [];\r\n options = (options === true) ? { entropy: true } : (options || {});\r\n\r\n // Flatten the seed string or build one from local entropy if needed.\r\n var shortseed = mixkey(flatten(\r\n options.entropy ? [seed, tostring(pool)] :\r\n (seed === null) ? autoseed() : seed, 3), key);\r\n\r\n // Use the seed to initialize an ARC4 generator.\r\n var arc4 = new ARC4(key);\r\n\r\n // This function returns a random double in [0, 1) that contains\r\n // randomness in every bit of the mantissa of the IEEE 754 value.\r\n var prng = function() {\r\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\r\n d = startdenom, // and denominator d = 2 ^ 48.\r\n x = 0; // and no 'extra last byte'.\r\n while (n < significance) { // Fill up all significant digits by\r\n n = (n + x) * width; // shifting numerator and\r\n d *= width; // denominator and generating a\r\n x = arc4.g(1); // new least-significant-byte.\r\n }\r\n while (n >= overflow) { // To avoid rounding up, before adding\r\n n /= 2; // last byte, shift everything\r\n d /= 2; // right using integer math until\r\n x >>>= 1; // we have exactly the desired bits.\r\n }\r\n return (n + x) / d; // Form the number within [0, 1).\r\n };\r\n\r\n prng.int32 = function() { return arc4.g(4) | 0; };\r\n prng.quick = function() { return arc4.g(4) / 0x100000000; };\r\n prng.double = prng;\r\n\r\n // Mix the randomness into accumulated entropy.\r\n mixkey(tostring(arc4.S), pool);\r\n\r\n // Calling convention: what to return as a function of prng, seed, is_math.\r\n return (options.pass || callback ||\r\n function(prng, seed, is_math_call, state) {\r\n if (state) {\r\n // Load the arc4 state from the given state if it has an S array.\r\n if (state.S) { copy(state, arc4); }\r\n // Only provide the .state method if requested via options.state.\r\n prng.state = function() { return copy(arc4, {}); };\r\n }\r\n\r\n // If called as a method of Math (Math.seedrandom()), mutate\r\n // Math.random because that is how seedrandom.js has worked since v1.0.\r\n if (is_math_call) { math[rngname] = prng; return seed; }\r\n\r\n // Otherwise, it is a newer calling convention, so return the\r\n // prng directly.\r\n else return prng;\r\n })(\r\n prng,\r\n shortseed,\r\n 'global' in options ? options.global : (this == math),\r\n options.state);\r\n }\r\n math['seed' + rngname] = seedrandom;\r\n\r\n//\r\n// ARC4\r\n//\r\n// An ARC4 implementation. The constructor takes a key in the form of\r\n// an array of at most (width) integers that should be 0 <= x < (width).\r\n//\r\n// The g(count) method returns a pseudorandom integer that concatenates\r\n// the next (count) outputs from ARC4. Its return value is a number x\r\n// that is in the range 0 <= x < (width ^ count).\r\n//\r\n function ARC4(key) {\r\n var t, keylen = key.length,\r\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\r\n\r\n // The empty key [] is treated as [0].\r\n if (!keylen) { key = [keylen++]; }\r\n\r\n // Set up S using the standard key scheduling algorithm.\r\n while (i < width) {\r\n s[i] = i++;\r\n }\r\n for (i = 0; i < width; i++) {\r\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\r\n s[j] = t;\r\n }\r\n\r\n // The \"g\" method returns the next (count) outputs as one number.\r\n me.g = function(count) {\r\n // Using instance members instead of closure state nearly doubles speed.\r\n var t, r = 0,\r\n i = me.i, j = me.j, s = me.S;\r\n while (count--) {\r\n t = s[i = mask & (i + 1)];\r\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\r\n }\r\n me.i = i; me.j = j;\r\n return r;\r\n // For robust unpredictability, the function call below automatically\r\n // discards an initial batch of values. This is called RC4-drop[256].\r\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\r\n };\r\n }\r\n\r\n//\r\n// copy()\r\n// Copies internal state of ARC4 to or from a plain object.\r\n//\r\n function copy(f, t) {\r\n t.i = f.i;\r\n t.j = f.j;\r\n t.S = f.S.slice();\r\n return t;\r\n }\r\n\r\n//\r\n// flatten()\r\n// Converts an object tree to nested arrays of strings.\r\n//\r\n function flatten(obj, depth) {\r\n var result = [], typ = (typeof obj), prop;\r\n if (depth && typ == 'object') {\r\n for (prop in obj) {\r\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\r\n }\r\n }\r\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\r\n }\r\n\r\n//\r\n// mixkey()\r\n// Mixes a string seed into a key that is an array of integers, and\r\n// returns a shortened string seed that is equivalent to the result key.\r\n//\r\n function mixkey(seed, key) {\r\n var stringseed = seed + '', smear, j = 0;\r\n while (j < stringseed.length) {\r\n key[mask & j] =\r\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\r\n }\r\n return tostring(key);\r\n }\r\n\r\n//\r\n// autoseed()\r\n// Returns an object for autoseeding, using window.crypto and Node crypto\r\n// module if available.\r\n//\r\n function autoseed() {\r\n try {\r\n if (nodecrypto) { return tostring(nodecrypto.randomBytes(width)); }\r\n var out = new Uint8Array(width);\r\n (global.crypto || global.msCrypto).getRandomValues(out);\r\n return tostring(out);\r\n } catch (e) {\r\n var browser = global.navigator,\r\n plugins = browser && browser.plugins;\r\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\r\n }\r\n }\r\n\r\n//\r\n// tostring()\r\n// Converts an array of charcodes to a string\r\n//\r\n function tostring(a) {\r\n return String.fromCharCode.apply(0, a);\r\n }\r\n\r\n//\r\n// When seedrandom.js is loaded, we immediately mix a few bits\r\n// from the built-in RNG into the entropy pool. Because we do\r\n// not want to interfere with deterministic PRNG state later,\r\n// seedrandom will not call math.random on its own again after\r\n// initialization.\r\n//\r\n mixkey(math.random(), pool);\r\n\r\n//\r\n// Nodejs and AMD support: export the implementation as a module using\r\n// either convention.\r\n//\r\n\r\n// End anonymous scope, and pass initial values.\r\n})(\r\n [], // pool: entropy pool starts empty\r\n BMMath // math: package containing random, pow, and seedrandom\r\n);\r\n/* eslint-disable */\r\nvar BezierFactory = (function () {\r\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\r\n\r\n var ob = {};\r\n ob.getBezierEasing = getBezierEasing;\r\n var beziers = {};\r\n\r\n function getBezierEasing(a, b, c, d, nm) {\r\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\r\n if (beziers[str]) {\r\n return beziers[str];\r\n }\r\n var bezEasing = new BezierEasing([a, b, c, d]);\r\n beziers[str] = bezEasing;\r\n return bezEasing;\r\n }\r\n\r\n // These values are established by empiricism with tests (tradeoff: performance VS precision)\r\n var NEWTON_ITERATIONS = 4;\r\n var NEWTON_MIN_SLOPE = 0.001;\r\n var SUBDIVISION_PRECISION = 0.0000001;\r\n var SUBDIVISION_MAX_ITERATIONS = 10;\r\n\r\n var kSplineTableSize = 11;\r\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\r\n\r\n var float32ArraySupported = typeof Float32Array === 'function';\r\n\r\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\r\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\r\n function C(aA1) { return 3.0 * aA1; }\r\n\r\n // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\r\n function calcBezier(aT, aA1, aA2) {\r\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\r\n }\r\n\r\n // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\r\n function getSlope(aT, aA1, aA2) {\r\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\r\n }\r\n\r\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\r\n var currentX,\r\n currentT,\r\n i = 0;\r\n do {\r\n currentT = aA + (aB - aA) / 2.0;\r\n currentX = calcBezier(currentT, mX1, mX2) - aX;\r\n if (currentX > 0.0) {\r\n aB = currentT;\r\n } else {\r\n aA = currentT;\r\n }\r\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\r\n return currentT;\r\n }\r\n\r\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\r\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\r\n var currentSlope = getSlope(aGuessT, mX1, mX2);\r\n if (currentSlope === 0.0) return aGuessT;\r\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\r\n aGuessT -= currentX / currentSlope;\r\n }\r\n return aGuessT;\r\n }\r\n\r\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\r\n function BezierEasing(points) {\r\n this._p = points;\r\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\r\n this._precomputed = false;\r\n\r\n this.get = this.get.bind(this);\r\n }\r\n\r\n BezierEasing.prototype = {\r\n\r\n get: function (x) {\r\n var mX1 = this._p[0],\r\n mY1 = this._p[1],\r\n mX2 = this._p[2],\r\n mY2 = this._p[3];\r\n if (!this._precomputed) this._precompute();\r\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\r\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\r\n if (x === 0) return 0;\r\n if (x === 1) return 1;\r\n return calcBezier(this._getTForX(x), mY1, mY2);\r\n },\r\n\r\n // Private part\r\n\r\n _precompute: function () {\r\n var mX1 = this._p[0],\r\n mY1 = this._p[1],\r\n mX2 = this._p[2],\r\n mY2 = this._p[3];\r\n this._precomputed = true;\r\n if (mX1 !== mY1 || mX2 !== mY2) { this._calcSampleValues(); }\r\n },\r\n\r\n _calcSampleValues: function () {\r\n var mX1 = this._p[0],\r\n mX2 = this._p[2];\r\n for (var i = 0; i < kSplineTableSize; ++i) {\r\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\r\n }\r\n },\r\n\r\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\r\n _getTForX: function (aX) {\r\n var mX1 = this._p[0],\r\n mX2 = this._p[2],\r\n mSampleValues = this._mSampleValues;\r\n\r\n var intervalStart = 0.0;\r\n var currentSample = 1;\r\n var lastSample = kSplineTableSize - 1;\r\n\r\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\r\n intervalStart += kSampleStepSize;\r\n }\r\n --currentSample;\r\n\r\n // Interpolate to provide an initial guess for t\r\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\r\n var guessForT = intervalStart + dist * kSampleStepSize;\r\n\r\n var initialSlope = getSlope(guessForT, mX1, mX2);\r\n if (initialSlope >= NEWTON_MIN_SLOPE) {\r\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\r\n } if (initialSlope === 0.0) {\r\n return guessForT;\r\n }\r\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\r\n },\r\n };\r\n\r\n return ob;\r\n}());\r\n\r\n(function () {\r\n var lastTime = 0;\r\n var vendors = ['ms', 'moz', 'webkit', 'o'];\r\n for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { // eslint-disable-line no-plusplus\r\n window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\r\n window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];\r\n }\r\n if (!window.requestAnimationFrame) {\r\n window.requestAnimationFrame = function (callback) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = setTimeout(function () {\r\n callback(currTime + timeToCall);\r\n },\r\n timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n }\r\n if (!window.cancelAnimationFrame) {\r\n window.cancelAnimationFrame = function (id) {\r\n clearTimeout(id);\r\n };\r\n }\r\n}());\r\n\r\n/* exported extendPrototype, getDescriptor, createProxyFunction */\r\n\r\nfunction extendPrototype(sources, destination) {\r\n var i;\r\n var len = sources.length;\r\n var sourcePrototype;\r\n for (i = 0; i < len; i += 1) {\r\n sourcePrototype = sources[i].prototype;\r\n for (var attr in sourcePrototype) {\r\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\r\n }\r\n }\r\n}\r\n\r\nfunction getDescriptor(object, prop) {\r\n return Object.getOwnPropertyDescriptor(object, prop);\r\n}\r\n\r\nfunction createProxyFunction(prototype) {\r\n function ProxyFunction() {}\r\n ProxyFunction.prototype = prototype;\r\n return ProxyFunction;\r\n}\r\n\r\n/* global segmentsLengthPool, defaultCurveSegments, createSizedArray, bmPow, bmSqrt, bmFloor, createTypedArray, bezierLengthPool */\r\n/* exported bez */\r\n\r\nfunction bezFunction() {\r\n var math = Math;\r\n\r\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\r\n var det1 = (x1 * y2) + (y1 * x3) + (x2 * y3) - (x3 * y2) - (y3 * x1) - (x2 * y1);\r\n return det1 > -0.001 && det1 < 0.001;\r\n }\r\n\r\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\r\n if (z1 === 0 && z2 === 0 && z3 === 0) {\r\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\r\n }\r\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\r\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\r\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\r\n var diffDist;\r\n if (dist1 > dist2) {\r\n if (dist1 > dist3) {\r\n diffDist = dist1 - dist2 - dist3;\r\n } else {\r\n diffDist = dist3 - dist2 - dist1;\r\n }\r\n } else if (dist3 > dist2) {\r\n diffDist = dist3 - dist2 - dist1;\r\n } else {\r\n diffDist = dist2 - dist1 - dist3;\r\n }\r\n return diffDist > -0.0001 && diffDist < 0.0001;\r\n }\r\n\r\n var getBezierLength = (function () {\r\n return function (pt1, pt2, pt3, pt4) {\r\n var curveSegments = defaultCurveSegments;\r\n var k;\r\n var i;\r\n var len;\r\n var ptCoord;\r\n var perc;\r\n var addedLength = 0;\r\n var ptDistance;\r\n var point = [];\r\n var lastPoint = [];\r\n var lengthData = bezierLengthPool.newElement();\r\n len = pt3.length;\r\n for (k = 0; k < curveSegments; k += 1) {\r\n perc = k / (curveSegments - 1);\r\n ptDistance = 0;\r\n for (i = 0; i < len; i += 1) {\r\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\r\n point[i] = ptCoord;\r\n if (lastPoint[i] !== null) {\r\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\r\n }\r\n lastPoint[i] = point[i];\r\n }\r\n if (ptDistance) {\r\n ptDistance = bmSqrt(ptDistance);\r\n addedLength += ptDistance;\r\n }\r\n lengthData.percents[k] = perc;\r\n lengthData.lengths[k] = addedLength;\r\n }\r\n lengthData.addedLength = addedLength;\r\n return lengthData;\r\n };\r\n }());\r\n\r\n function getSegmentsLength(shapeData) {\r\n var segmentsLength = segmentsLengthPool.newElement();\r\n var closed = shapeData.c;\r\n var pathV = shapeData.v;\r\n var pathO = shapeData.o;\r\n var pathI = shapeData.i;\r\n var i;\r\n var len = shapeData._length;\r\n var lengths = segmentsLength.lengths;\r\n var totalLength = 0;\r\n for (i = 0; i < len - 1; i += 1) {\r\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\r\n totalLength += lengths[i].addedLength;\r\n }\r\n if (closed && len) {\r\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\r\n totalLength += lengths[i].addedLength;\r\n }\r\n segmentsLength.totalLength = totalLength;\r\n return segmentsLength;\r\n }\r\n\r\n function BezierData(length) {\r\n this.segmentLength = 0;\r\n this.points = new Array(length);\r\n }\r\n\r\n function PointData(partial, point) {\r\n this.partialLength = partial;\r\n this.point = point;\r\n }\r\n\r\n var buildBezierData = (function () {\r\n var storedData = {};\r\n\r\n return function (pt1, pt2, pt3, pt4) {\r\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\r\n if (!storedData[bezierName]) {\r\n var curveSegments = defaultCurveSegments;\r\n var k;\r\n var i;\r\n var len;\r\n var ptCoord;\r\n var perc;\r\n var addedLength = 0;\r\n var ptDistance;\r\n var point;\r\n var lastPoint = null;\r\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\r\n curveSegments = 2;\r\n }\r\n var bezierData = new BezierData(curveSegments);\r\n len = pt3.length;\r\n for (k = 0; k < curveSegments; k += 1) {\r\n point = createSizedArray(len);\r\n perc = k / (curveSegments - 1);\r\n ptDistance = 0;\r\n for (i = 0; i < len; i += 1) {\r\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\r\n point[i] = ptCoord;\r\n if (lastPoint !== null) {\r\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\r\n }\r\n }\r\n ptDistance = bmSqrt(ptDistance);\r\n addedLength += ptDistance;\r\n bezierData.points[k] = new PointData(ptDistance, point);\r\n lastPoint = point;\r\n }\r\n bezierData.segmentLength = addedLength;\r\n storedData[bezierName] = bezierData;\r\n }\r\n return storedData[bezierName];\r\n };\r\n }());\r\n\r\n function getDistancePerc(perc, bezierData) {\r\n var percents = bezierData.percents;\r\n var lengths = bezierData.lengths;\r\n var len = percents.length;\r\n var initPos = bmFloor((len - 1) * perc);\r\n var lengthPos = perc * bezierData.addedLength;\r\n var lPerc = 0;\r\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\r\n return percents[initPos];\r\n }\r\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\r\n var flag = true;\r\n while (flag) {\r\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\r\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\r\n flag = false;\r\n } else {\r\n initPos += dir;\r\n }\r\n if (initPos < 0 || initPos >= len - 1) {\r\n // FIX for TypedArrays that don't store floating point values with enough accuracy\r\n if (initPos === len - 1) {\r\n return percents[initPos];\r\n }\r\n flag = false;\r\n }\r\n }\r\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\r\n }\r\n\r\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\r\n var t1 = getDistancePerc(percent, bezierData);\r\n var u1 = 1 - t1;\r\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\r\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\r\n return [ptX, ptY];\r\n }\r\n\r\n var bezierSegmentPoints = createTypedArray('float32', 8);\r\n\r\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\r\n if (startPerc < 0) {\r\n startPerc = 0;\r\n } else if (startPerc > 1) {\r\n startPerc = 1;\r\n }\r\n var t0 = getDistancePerc(startPerc, bezierData);\r\n endPerc = endPerc > 1 ? 1 : endPerc;\r\n var t1 = getDistancePerc(endPerc, bezierData);\r\n var i;\r\n var len = pt1.length;\r\n var u0 = 1 - t0;\r\n var u1 = 1 - t1;\r\n var u0u0u0 = u0 * u0 * u0;\r\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\r\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\r\n var t0t0t0 = t0 * t0 * t0;\r\n //\r\n var u0u0u1 = u0 * u0 * u1;\r\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\r\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\r\n var t0t0t1 = t0 * t0 * t1;\r\n //\r\n var u0u1u1 = u0 * u1 * u1;\r\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\r\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\r\n var t0t1t1 = t0 * t1 * t1;\r\n //\r\n var u1u1u1 = u1 * u1 * u1;\r\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\r\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\r\n var t1t1t1 = t1 * t1 * t1;\r\n for (i = 0; i < len; i += 1) {\r\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n }\r\n\r\n return bezierSegmentPoints;\r\n }\r\n\r\n return {\r\n getSegmentsLength: getSegmentsLength,\r\n getNewSegment: getNewSegment,\r\n getPointInSegment: getPointInSegment,\r\n buildBezierData: buildBezierData,\r\n pointOnLine2D: pointOnLine2D,\r\n pointOnLine3D: pointOnLine3D,\r\n };\r\n}\r\n\r\nvar bez = bezFunction();\r\n\r\n/* global _useWebWorker */\r\n\r\nvar dataManager = (function () {\r\n var _counterId = 1;\r\n var processes = [];\r\n var workerFn;\r\n var workerInstance;\r\n var workerProxy = {\r\n onmessage: function () {\r\n\r\n },\r\n postMessage: function (path) {\r\n workerFn({\r\n data: path,\r\n });\r\n },\r\n };\r\n var _workerSelf = {\r\n postMessage: function (data) {\r\n workerProxy.onmessage({\r\n data: data,\r\n });\r\n },\r\n };\r\n function createWorker(fn) {\r\n if (window.Worker && window.Blob && _useWebWorker) {\r\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], { type: 'text/javascript' });\r\n // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\r\n var url = URL.createObjectURL(blob);\r\n return new Worker(url);\r\n }\r\n workerFn = fn;\r\n return workerProxy;\r\n }\r\n\r\n function setupWorker() {\r\n if (!workerInstance) {\r\n workerInstance = createWorker(function workerStart(e) {\r\n /* exported dataManager */\r\n\r\n function dataFunctionManager() {\r\n // var tCanvasHelper = createTag('canvas').getContext('2d');\r\n\r\n function completeLayers(layers, comps) {\r\n var layerData;\r\n var i;\r\n var len = layers.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n for (i = 0; i < len; i += 1) {\r\n layerData = layers[i];\r\n if (('ks' in layerData) && !layerData.completed) {\r\n layerData.completed = true;\r\n if (layerData.tt) {\r\n layers[i - 1].td = layerData.tt;\r\n }\r\n if (layerData.hasMask) {\r\n var maskProps = layerData.masksProperties;\r\n jLen = maskProps.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (maskProps[j].pt.k.i) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\r\n } else {\r\n kLen = maskProps[j].pt.k.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n if (maskProps[j].pt.k[k].s) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\r\n }\r\n if (maskProps[j].pt.k[k].e) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (layerData.ty === 0) {\r\n layerData.layers = findCompLayers(layerData.refId, comps);\r\n completeLayers(layerData.layers, comps);\r\n } else if (layerData.ty === 4) {\r\n completeShapes(layerData.shapes);\r\n } else if (layerData.ty === 5) {\r\n completeText(layerData);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function findCompLayers(id, comps) {\r\n var i = 0;\r\n var len = comps.length;\r\n while (i < len) {\r\n if (comps[i].id === id) {\r\n if (!comps[i].layers.__used) {\r\n comps[i].layers.__used = true;\r\n return comps[i].layers;\r\n }\r\n return JSON.parse(JSON.stringify(comps[i].layers));\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n\r\n function completeShapes(arr) {\r\n var i;\r\n var len = arr.length;\r\n var j;\r\n var jLen;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (arr[i].ty === 'sh') {\r\n if (arr[i].ks.k.i) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k);\r\n } else {\r\n jLen = arr[i].ks.k.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (arr[i].ks.k[j].s) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\r\n }\r\n if (arr[i].ks.k[j].e) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\r\n }\r\n }\r\n }\r\n } else if (arr[i].ty === 'gr') {\r\n completeShapes(arr[i].it);\r\n }\r\n }\r\n }\r\n\r\n function convertPathsToAbsoluteValues(path) {\r\n var i;\r\n var len = path.i.length;\r\n for (i = 0; i < len; i += 1) {\r\n path.i[i][0] += path.v[i][0];\r\n path.i[i][1] += path.v[i][1];\r\n path.o[i][0] += path.v[i][0];\r\n path.o[i][1] += path.v[i][1];\r\n }\r\n }\r\n\r\n function checkVersion(minimum, animVersionString) {\r\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\r\n if (minimum[0] > animVersion[0]) {\r\n return true;\r\n } if (animVersion[0] > minimum[0]) {\r\n return false;\r\n }\r\n if (minimum[1] > animVersion[1]) {\r\n return true;\r\n } if (animVersion[1] > minimum[1]) {\r\n return false;\r\n }\r\n if (minimum[2] > animVersion[2]) {\r\n return true;\r\n } if (animVersion[2] > minimum[2]) {\r\n return false;\r\n }\r\n return null;\r\n }\r\n\r\n var checkText = (function () {\r\n var minimumVersion = [4, 4, 14];\r\n\r\n function updateTextLayer(textLayer) {\r\n var documentData = textLayer.t.d;\r\n textLayer.t.d = {\r\n k: [\r\n {\r\n s: documentData,\r\n t: 0,\r\n },\r\n ],\r\n };\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var i;\r\n var len = layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (layers[i].ty === 5) {\r\n updateTextLayer(layers[i]);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkChars = (function () {\r\n var minimumVersion = [4, 7, 99];\r\n return function (animationData) {\r\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\r\n var i;\r\n var len = animationData.chars.length;\r\n var j;\r\n var jLen;\r\n var pathData;\r\n var paths;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.chars[i].data && animationData.chars[i].data.shapes) {\r\n paths = animationData.chars[i].data.shapes[0].it;\r\n jLen = paths.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n pathData = paths[j].ks.k;\r\n if (!pathData.__converted) {\r\n convertPathsToAbsoluteValues(paths[j].ks.k);\r\n pathData.__converted = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkPathProperties = (function () {\r\n var minimumVersion = [5, 7, 15];\r\n\r\n function updateTextLayer(textLayer) {\r\n var pathData = textLayer.t.p;\r\n if (typeof pathData.a === 'number') {\r\n pathData.a = {\r\n a: 0,\r\n k: pathData.a,\r\n };\r\n }\r\n if (typeof pathData.p === 'number') {\r\n pathData.p = {\r\n a: 0,\r\n k: pathData.p,\r\n };\r\n }\r\n if (typeof pathData.r === 'number') {\r\n pathData.r = {\r\n a: 0,\r\n k: pathData.r,\r\n };\r\n }\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var i;\r\n var len = layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (layers[i].ty === 5) {\r\n updateTextLayer(layers[i]);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkColors = (function () {\r\n var minimumVersion = [4, 1, 9];\r\n\r\n function iterateShapes(shapes) {\r\n var i;\r\n var len = shapes.length;\r\n var j;\r\n var jLen;\r\n for (i = 0; i < len; i += 1) {\r\n if (shapes[i].ty === 'gr') {\r\n iterateShapes(shapes[i].it);\r\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\r\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\r\n jLen = shapes[i].c.k.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (shapes[i].c.k[j].s) {\r\n shapes[i].c.k[j].s[0] /= 255;\r\n shapes[i].c.k[j].s[1] /= 255;\r\n shapes[i].c.k[j].s[2] /= 255;\r\n shapes[i].c.k[j].s[3] /= 255;\r\n }\r\n if (shapes[i].c.k[j].e) {\r\n shapes[i].c.k[j].e[0] /= 255;\r\n shapes[i].c.k[j].e[1] /= 255;\r\n shapes[i].c.k[j].e[2] /= 255;\r\n shapes[i].c.k[j].e[3] /= 255;\r\n }\r\n }\r\n } else {\r\n shapes[i].c.k[0] /= 255;\r\n shapes[i].c.k[1] /= 255;\r\n shapes[i].c.k[2] /= 255;\r\n shapes[i].c.k[3] /= 255;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var i;\r\n var len = layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (layers[i].ty === 4) {\r\n iterateShapes(layers[i].shapes);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkShapes = (function () {\r\n var minimumVersion = [4, 4, 18];\r\n\r\n function completeClosingShapes(arr) {\r\n var i;\r\n var len = arr.length;\r\n var j;\r\n var jLen;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (arr[i].ty === 'sh') {\r\n if (arr[i].ks.k.i) {\r\n arr[i].ks.k.c = arr[i].closed;\r\n } else {\r\n jLen = arr[i].ks.k.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (arr[i].ks.k[j].s) {\r\n arr[i].ks.k[j].s[0].c = arr[i].closed;\r\n }\r\n if (arr[i].ks.k[j].e) {\r\n arr[i].ks.k[j].e[0].c = arr[i].closed;\r\n }\r\n }\r\n }\r\n } else if (arr[i].ty === 'gr') {\r\n completeClosingShapes(arr[i].it);\r\n }\r\n }\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var layerData;\r\n var i;\r\n var len = layers.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n for (i = 0; i < len; i += 1) {\r\n layerData = layers[i];\r\n if (layerData.hasMask) {\r\n var maskProps = layerData.masksProperties;\r\n jLen = maskProps.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (maskProps[j].pt.k.i) {\r\n maskProps[j].pt.k.c = maskProps[j].cl;\r\n } else {\r\n kLen = maskProps[j].pt.k.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n if (maskProps[j].pt.k[k].s) {\r\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\r\n }\r\n if (maskProps[j].pt.k[k].e) {\r\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (layerData.ty === 4) {\r\n completeClosingShapes(layerData.shapes);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n function completeData(animationData) {\r\n if (animationData.__complete) {\r\n return;\r\n }\r\n checkColors(animationData);\r\n checkText(animationData);\r\n checkChars(animationData);\r\n checkPathProperties(animationData);\r\n checkShapes(animationData);\r\n completeLayers(animationData.layers, animationData.assets);\r\n animationData.__complete = true;\r\n }\r\n\r\n function completeText(data) {\r\n if (data.t.a.length === 0 && !('m' in data.t.p)) {\r\n data.singleShape = true;\r\n }\r\n }\r\n\r\n var moduleOb = {};\r\n moduleOb.completeData = completeData;\r\n moduleOb.checkColors = checkColors;\r\n moduleOb.checkChars = checkChars;\r\n moduleOb.checkPathProperties = checkPathProperties;\r\n moduleOb.checkShapes = checkShapes;\r\n moduleOb.completeLayers = completeLayers;\r\n\r\n return moduleOb;\r\n }\r\n if (!_workerSelf.dataManager) {\r\n _workerSelf.dataManager = dataFunctionManager();\r\n }\r\n\r\n /* exported assetLoader */\r\n if (!_workerSelf.assetLoader) {\r\n _workerSelf.assetLoader = (function () {\r\n function formatResponse(xhr) {\r\n // using typeof doubles the time of execution of this method,\r\n // so if available, it's better to use the header to validate the type\r\n var contentTypeHeader = xhr.getResponseHeader('content-type');\r\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\r\n return xhr.response;\r\n }\r\n if (xhr.response && typeof xhr.response === 'object') {\r\n return xhr.response;\r\n } if (xhr.response && typeof xhr.response === 'string') {\r\n return JSON.parse(xhr.response);\r\n } if (xhr.responseText) {\r\n return JSON.parse(xhr.responseText);\r\n }\r\n return null;\r\n }\r\n\r\n function loadAsset(path, fullPath, callback, errorCallback) {\r\n var response;\r\n var xhr = new XMLHttpRequest();\r\n // set responseType after calling open or IE will break.\r\n try {\r\n // This crashes on Android WebView prior to KitKat\r\n xhr.responseType = 'json';\r\n } catch (err) {} // eslint-disable-line no-empty\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status === 200) {\r\n response = formatResponse(xhr);\r\n callback(response);\r\n } else {\r\n try {\r\n response = formatResponse(xhr);\r\n callback(response);\r\n } catch (err) {\r\n if (errorCallback) {\r\n errorCallback(err);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n try {\r\n xhr.open('GET', path, true);\r\n } catch (error) {\r\n xhr.open('GET', fullPath + '/' + path, true);\r\n }\r\n xhr.send();\r\n }\r\n return {\r\n load: loadAsset,\r\n };\r\n }());\r\n }\r\n\r\n if (e.data.type === 'loadAnimation') {\r\n _workerSelf.assetLoader.load(\r\n e.data.path,\r\n e.data.fullPath,\r\n function (data) {\r\n _workerSelf.dataManager.completeData(data);\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n payload: data,\r\n status: 'success',\r\n });\r\n },\r\n function () {\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n status: 'error',\r\n });\r\n }\r\n );\r\n } else if (e.data.type === 'complete') {\r\n var animation = e.data.animation;\r\n _workerSelf.dataManager.completeData(animation);\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n payload: animation,\r\n status: 'success',\r\n });\r\n } else if (e.data.type === 'loadData') {\r\n _workerSelf.assetLoader.load(\r\n e.data.path,\r\n e.data.fullPath,\r\n function (data) {\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n payload: data,\r\n status: 'success',\r\n });\r\n },\r\n function () {\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n status: 'error',\r\n });\r\n }\r\n );\r\n }\r\n });\r\n\r\n workerInstance.onmessage = function (event) {\r\n var data = event.data;\r\n var id = data.id;\r\n var process = processes[id];\r\n processes[id] = null;\r\n if (data.status === 'success') {\r\n process.onComplete(data.payload);\r\n } else if (process.onError) {\r\n process.onError();\r\n }\r\n };\r\n }\r\n }\r\n\r\n function createProcess(onComplete, onError) {\r\n _counterId += 1;\r\n var id = 'processId_' + _counterId;\r\n processes[id] = {\r\n onComplete: onComplete,\r\n onError: onError,\r\n };\r\n return id;\r\n }\r\n\r\n function loadAnimation(path, onComplete, onError) {\r\n setupWorker();\r\n var processId = createProcess(onComplete, onError);\r\n workerInstance.postMessage({\r\n type: 'loadAnimation',\r\n path: path,\r\n fullPath: window.location.origin + window.location.pathname,\r\n id: processId,\r\n });\r\n }\r\n\r\n function loadData(path, onComplete, onError) {\r\n setupWorker();\r\n var processId = createProcess(onComplete, onError);\r\n workerInstance.postMessage({\r\n type: 'loadData',\r\n path: path,\r\n fullPath: window.location.origin + window.location.pathname,\r\n id: processId,\r\n });\r\n }\r\n\r\n function completeAnimation(anim, onComplete, onError) {\r\n setupWorker();\r\n var processId = createProcess(onComplete, onError);\r\n workerInstance.postMessage({\r\n type: 'complete',\r\n animation: anim,\r\n id: processId,\r\n });\r\n }\r\n\r\n return {\r\n loadAnimation: loadAnimation,\r\n loadData: loadData,\r\n completeAnimation: completeAnimation,\r\n };\r\n}());\r\n\r\n/* exported getFontProperties */\r\n\r\nfunction getFontProperties(fontData) {\r\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\r\n\r\n var fWeight = 'normal'; var\r\n fStyle = 'normal';\r\n var len = styles.length;\r\n var styleName;\r\n for (var i = 0; i < len; i += 1) {\r\n styleName = styles[i].toLowerCase();\r\n switch (styleName) {\r\n case 'italic':\r\n fStyle = 'italic';\r\n break;\r\n case 'bold':\r\n fWeight = '700';\r\n break;\r\n case 'black':\r\n fWeight = '900';\r\n break;\r\n case 'medium':\r\n fWeight = '500';\r\n break;\r\n case 'regular':\r\n case 'normal':\r\n fWeight = '400';\r\n break;\r\n case 'light':\r\n case 'thin':\r\n fWeight = '200';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n return {\r\n style: fStyle,\r\n weight: fontData.fWeight || fWeight,\r\n };\r\n}\r\n\r\n/* global createNS, createTag, getFontProperties */\r\n/* exported FontManager */\r\n\r\nvar FontManager = (function () {\r\n var maxWaitingTime = 5000;\r\n var emptyChar = {\r\n w: 0,\r\n size: 0,\r\n shapes: [],\r\n };\r\n var combinedCharacters = [];\r\n // Hindi characters\r\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366,\r\n 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379,\r\n 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\r\n\r\n var surrogateModifiers = [\r\n 'd83cdffb',\r\n 'd83cdffc',\r\n 'd83cdffd',\r\n 'd83cdffe',\r\n 'd83cdfff',\r\n ];\r\n\r\n var zeroWidthJoiner = [65039, 8205];\r\n\r\n function trimFontOptions(font) {\r\n var familyArray = font.split(',');\r\n var i;\r\n var len = familyArray.length;\r\n var enabledFamilies = [];\r\n for (i = 0; i < len; i += 1) {\r\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\r\n enabledFamilies.push(familyArray[i]);\r\n }\r\n }\r\n return enabledFamilies.join(',');\r\n }\r\n\r\n function setUpNode(font, family) {\r\n var parentNode = createTag('span');\r\n // Node is invisible to screen readers.\r\n parentNode.setAttribute('aria-hidden', true);\r\n parentNode.style.fontFamily = family;\r\n var node = createTag('span');\r\n // Characters that vary significantly among different fonts\r\n node.innerText = 'giItT1WQy@!-/#';\r\n // Visible - so we can measure it - but not on the screen\r\n parentNode.style.position = 'absolute';\r\n parentNode.style.left = '-10000px';\r\n parentNode.style.top = '-10000px';\r\n // Large font size makes even subtle changes obvious\r\n parentNode.style.fontSize = '300px';\r\n // Reset any font properties\r\n parentNode.style.fontVariant = 'normal';\r\n parentNode.style.fontStyle = 'normal';\r\n parentNode.style.fontWeight = 'normal';\r\n parentNode.style.letterSpacing = '0';\r\n parentNode.appendChild(node);\r\n document.body.appendChild(parentNode);\r\n\r\n // Remember width with no applied web font\r\n var width = node.offsetWidth;\r\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\r\n return { node: node, w: width, parent: parentNode };\r\n }\r\n\r\n function checkLoadedFonts() {\r\n var i;\r\n var len = this.fonts.length;\r\n var node;\r\n var w;\r\n var loadedCount = len;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.fonts[i].loaded) {\r\n loadedCount -= 1;\r\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\r\n this.fonts[i].loaded = true;\r\n } else {\r\n node = this.fonts[i].monoCase.node;\r\n w = this.fonts[i].monoCase.w;\r\n if (node.offsetWidth !== w) {\r\n loadedCount -= 1;\r\n this.fonts[i].loaded = true;\r\n } else {\r\n node = this.fonts[i].sansCase.node;\r\n w = this.fonts[i].sansCase.w;\r\n if (node.offsetWidth !== w) {\r\n loadedCount -= 1;\r\n this.fonts[i].loaded = true;\r\n }\r\n }\r\n if (this.fonts[i].loaded) {\r\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\r\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\r\n }\r\n }\r\n }\r\n\r\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\r\n setTimeout(this.checkLoadedFontsBinded, 20);\r\n } else {\r\n setTimeout(this.setIsLoadedBinded, 10);\r\n }\r\n }\r\n\r\n function createHelper(def, fontData) {\r\n var tHelper = createNS('text');\r\n tHelper.style.fontSize = '100px';\r\n // tHelper.style.fontFamily = fontData.fFamily;\r\n\r\n var fontProps = getFontProperties(fontData);\r\n tHelper.setAttribute('font-family', fontData.fFamily);\r\n tHelper.setAttribute('font-style', fontProps.style);\r\n tHelper.setAttribute('font-weight', fontProps.weight);\r\n tHelper.textContent = '1';\r\n if (fontData.fClass) {\r\n tHelper.style.fontFamily = 'inherit';\r\n tHelper.setAttribute('class', fontData.fClass);\r\n } else {\r\n tHelper.style.fontFamily = fontData.fFamily;\r\n }\r\n def.appendChild(tHelper);\r\n var tCanvasHelper = createTag('canvas').getContext('2d');\r\n tCanvasHelper.font = fontData.fWeight + ' ' + fontData.fStyle + ' 100px ' + fontData.fFamily;\r\n // tCanvasHelper.font = ' 100px '+ fontData.fFamily;\r\n return tHelper;\r\n }\r\n\r\n function addFonts(fontData, defs) {\r\n if (!fontData) {\r\n this.isLoaded = true;\r\n return;\r\n }\r\n if (this.chars) {\r\n this.isLoaded = true;\r\n this.fonts = fontData.list;\r\n return;\r\n }\r\n\r\n var fontArr = fontData.list;\r\n var i;\r\n var len = fontArr.length;\r\n var _pendingFonts = len;\r\n for (i = 0; i < len; i += 1) {\r\n var shouldLoadFont = true;\r\n var loadedSelector;\r\n var j;\r\n fontArr[i].loaded = false;\r\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\r\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\r\n if (!fontArr[i].fPath) {\r\n fontArr[i].loaded = true;\r\n _pendingFonts -= 1;\r\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\r\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\r\n\r\n if (loadedSelector.length > 0) {\r\n shouldLoadFont = false;\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var s = createTag('style');\r\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n s.setAttribute('f-origin', fontArr[i].origin);\r\n s.setAttribute('f-family', fontArr[i].fFamily);\r\n s.type = 'text/css';\r\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\r\n defs.appendChild(s);\r\n }\r\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\r\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\r\n\r\n for (j = 0; j < loadedSelector.length; j += 1) {\r\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\r\n // Font is already loaded\r\n shouldLoadFont = false;\r\n }\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var l = createTag('link');\r\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n l.setAttribute('f-origin', fontArr[i].origin);\r\n l.type = 'text/css';\r\n l.rel = 'stylesheet';\r\n l.href = fontArr[i].fPath;\r\n document.body.appendChild(l);\r\n }\r\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\r\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\r\n\r\n for (j = 0; j < loadedSelector.length; j += 1) {\r\n if (fontArr[i].fPath === loadedSelector[j].src) {\r\n // Font is already loaded\r\n shouldLoadFont = false;\r\n }\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var sc = createTag('link');\r\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n sc.setAttribute('f-origin', fontArr[i].origin);\r\n sc.setAttribute('rel', 'stylesheet');\r\n sc.setAttribute('href', fontArr[i].fPath);\r\n defs.appendChild(sc);\r\n }\r\n }\r\n fontArr[i].helper = createHelper(defs, fontArr[i]);\r\n fontArr[i].cache = {};\r\n this.fonts.push(fontArr[i]);\r\n }\r\n if (_pendingFonts === 0) {\r\n this.isLoaded = true;\r\n } else {\r\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\r\n // Adding this timeout seems to fix it\r\n setTimeout(this.checkLoadedFonts.bind(this), 100);\r\n }\r\n }\r\n\r\n function addChars(chars) {\r\n if (!chars) {\r\n return;\r\n }\r\n if (!this.chars) {\r\n this.chars = [];\r\n }\r\n var i;\r\n var len = chars.length;\r\n var j;\r\n var jLen = this.chars.length;\r\n var found;\r\n for (i = 0; i < len; i += 1) {\r\n j = 0;\r\n found = false;\r\n while (j < jLen) {\r\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\r\n found = true;\r\n }\r\n j += 1;\r\n }\r\n if (!found) {\r\n this.chars.push(chars[i]);\r\n jLen += 1;\r\n }\r\n }\r\n }\r\n\r\n function getCharData(char, style, font) {\r\n var i = 0;\r\n var len = this.chars.length;\r\n while (i < len) {\r\n if (this.chars[i].ch === char && this.chars[i].style === style && this.chars[i].fFamily === font) {\r\n return this.chars[i];\r\n }\r\n i += 1;\r\n }\r\n if (((typeof char === 'string' && char.charCodeAt(0) !== 13) || !char)\r\n && console\r\n && console.warn // eslint-disable-line no-console\r\n && !this._warned\r\n ) {\r\n this._warned = true;\r\n console.warn('Missing character from exported characters list: ', char, style, font); // eslint-disable-line no-console\r\n }\r\n return emptyChar;\r\n }\r\n\r\n function measureText(char, fontName, size) {\r\n var fontData = this.getFontByName(fontName);\r\n var index = char.charCodeAt(0);\r\n if (!fontData.cache[index + 1]) {\r\n var tHelper = fontData.helper;\r\n // Canvas version\r\n // fontData.cache[index] = tHelper.measureText(char).width / 100;\r\n // SVG version\r\n // console.log(tHelper.getBBox().width)\r\n if (char === ' ') {\r\n tHelper.textContent = '|' + char + '|';\r\n var doubleSize = tHelper.getComputedTextLength();\r\n tHelper.textContent = '||';\r\n var singleSize = tHelper.getComputedTextLength();\r\n fontData.cache[index + 1] = (doubleSize - singleSize) / 100;\r\n } else {\r\n tHelper.textContent = char;\r\n fontData.cache[index + 1] = (tHelper.getComputedTextLength()) / 100;\r\n }\r\n }\r\n return fontData.cache[index + 1] * size;\r\n }\r\n\r\n function getFontByName(name) {\r\n var i = 0;\r\n var len = this.fonts.length;\r\n while (i < len) {\r\n if (this.fonts[i].fName === name) {\r\n return this.fonts[i];\r\n }\r\n i += 1;\r\n }\r\n return this.fonts[0];\r\n }\r\n\r\n function isModifier(firstCharCode, secondCharCode) {\r\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\r\n return surrogateModifiers.indexOf(sum) !== -1;\r\n }\r\n\r\n function isZeroWidthJoiner(firstCharCode, secondCharCode) {\r\n if (!secondCharCode) {\r\n return firstCharCode === zeroWidthJoiner[1];\r\n }\r\n return firstCharCode === zeroWidthJoiner[0] && secondCharCode === zeroWidthJoiner[1];\r\n }\r\n\r\n function isCombinedCharacter(char) {\r\n return combinedCharacters.indexOf(char) !== -1;\r\n }\r\n\r\n function setIsLoaded() {\r\n this.isLoaded = true;\r\n }\r\n\r\n var Font = function () {\r\n this.fonts = [];\r\n this.chars = null;\r\n this.typekitLoaded = 0;\r\n this.isLoaded = false;\r\n this._warned = false;\r\n this.initTime = Date.now();\r\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\r\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\r\n };\r\n Font.isModifier = isModifier;\r\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\r\n Font.isCombinedCharacter = isCombinedCharacter;\r\n\r\n var fontPrototype = {\r\n addChars: addChars,\r\n addFonts: addFonts,\r\n getCharData: getCharData,\r\n getFontByName: getFontByName,\r\n measureText: measureText,\r\n checkLoadedFonts: checkLoadedFonts,\r\n setIsLoaded: setIsLoaded,\r\n };\r\n\r\n Font.prototype = fontPrototype;\r\n\r\n return Font;\r\n}());\r\n\r\n/* global initialDefaultFrame, BezierFactory, degToRads, bez, createTypedArray */\r\n/* exported PropertyFactory */\r\n\r\nvar PropertyFactory = (function () {\r\n var initFrame = initialDefaultFrame;\r\n var mathAbs = Math.abs;\r\n\r\n function interpolateValue(frameNum, caching) {\r\n var offsetTime = this.offsetTime;\r\n var newValue;\r\n if (this.propType === 'multidimensional') {\r\n newValue = createTypedArray('float32', this.pv.length);\r\n }\r\n var iterationIndex = caching.lastIndex;\r\n var i = iterationIndex;\r\n var len = this.keyframes.length - 1;\r\n var flag = true;\r\n var keyData;\r\n var nextKeyData;\r\n var keyframeMetadata;\r\n\r\n while (flag) {\r\n keyData = this.keyframes[i];\r\n nextKeyData = this.keyframes[i + 1];\r\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\r\n if (keyData.h) {\r\n keyData = nextKeyData;\r\n }\r\n iterationIndex = 0;\r\n break;\r\n }\r\n if ((nextKeyData.t - offsetTime) > frameNum) {\r\n iterationIndex = i;\r\n break;\r\n }\r\n if (i < len - 1) {\r\n i += 1;\r\n } else {\r\n iterationIndex = 0;\r\n flag = false;\r\n }\r\n }\r\n keyframeMetadata = this.keyframesMetadata[i] || {};\r\n\r\n var k;\r\n var kLen;\r\n var perc;\r\n var jLen;\r\n var j;\r\n var fnc;\r\n var nextKeyTime = nextKeyData.t - offsetTime;\r\n var keyTime = keyData.t - offsetTime;\r\n var endValue;\r\n if (keyData.to) {\r\n if (!keyframeMetadata.bezierData) {\r\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\r\n }\r\n var bezierData = keyframeMetadata.bezierData;\r\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\r\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\r\n kLen = bezierData.points[ind].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[ind].point[k];\r\n }\r\n // caching._lastKeyframeIndex = -1;\r\n } else {\r\n if (keyframeMetadata.__fnct) {\r\n fnc = keyframeMetadata.__fnct;\r\n } else {\r\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\r\n keyframeMetadata.__fnct = fnc;\r\n }\r\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\r\n var distanceInLine = bezierData.segmentLength * perc;\r\n\r\n var segmentPerc;\r\n var addedLength = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastAddedLength : 0;\r\n j = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastPoint : 0;\r\n flag = true;\r\n jLen = bezierData.points.length;\r\n while (flag) {\r\n addedLength += bezierData.points[j].partialLength;\r\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\r\n kLen = bezierData.points[j].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[j].point[k];\r\n }\r\n break;\r\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\r\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\r\n kLen = bezierData.points[j].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\r\n }\r\n break;\r\n }\r\n if (j < jLen - 1) {\r\n j += 1;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n caching._lastPoint = j;\r\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\r\n caching._lastKeyframeIndex = i;\r\n }\r\n } else {\r\n var outX;\r\n var outY;\r\n var inX;\r\n var inY;\r\n var keyValue;\r\n len = keyData.s.length;\r\n endValue = nextKeyData.s || keyData.e;\r\n if (this.sh && keyData.h !== 1) {\r\n if (frameNum >= nextKeyTime) {\r\n newValue[0] = endValue[0];\r\n newValue[1] = endValue[1];\r\n newValue[2] = endValue[2];\r\n } else if (frameNum <= keyTime) {\r\n newValue[0] = keyData.s[0];\r\n newValue[1] = keyData.s[1];\r\n newValue[2] = keyData.s[2];\r\n } else {\r\n var quatStart = createQuaternion(keyData.s);\r\n var quatEnd = createQuaternion(endValue);\r\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\r\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\r\n }\r\n } else {\r\n for (i = 0; i < len; i += 1) {\r\n if (keyData.h !== 1) {\r\n if (frameNum >= nextKeyTime) {\r\n perc = 1;\r\n } else if (frameNum < keyTime) {\r\n perc = 0;\r\n } else {\r\n if (keyData.o.x.constructor === Array) {\r\n if (!keyframeMetadata.__fnct) {\r\n keyframeMetadata.__fnct = [];\r\n }\r\n if (!keyframeMetadata.__fnct[i]) {\r\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\r\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\r\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\r\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\r\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\r\n keyframeMetadata.__fnct[i] = fnc;\r\n } else {\r\n fnc = keyframeMetadata.__fnct[i];\r\n }\r\n } else if (!keyframeMetadata.__fnct) {\r\n outX = keyData.o.x;\r\n outY = keyData.o.y;\r\n inX = keyData.i.x;\r\n inY = keyData.i.y;\r\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\r\n keyData.keyframeMetadata = fnc;\r\n } else {\r\n fnc = keyframeMetadata.__fnct;\r\n }\r\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\r\n }\r\n }\r\n\r\n endValue = nextKeyData.s || keyData.e;\r\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\r\n\r\n if (this.propType === 'multidimensional') {\r\n newValue[i] = keyValue;\r\n } else {\r\n newValue = keyValue;\r\n }\r\n }\r\n }\r\n }\r\n caching.lastIndex = iterationIndex;\r\n return newValue;\r\n }\r\n\r\n // based on @Toji's https://github.com/toji/gl-matrix/\r\n function slerp(a, b, t) {\r\n var out = [];\r\n var ax = a[0];\r\n var ay = a[1];\r\n var az = a[2];\r\n var aw = a[3];\r\n var bx = b[0];\r\n var by = b[1];\r\n var bz = b[2];\r\n var bw = b[3];\r\n\r\n var omega;\r\n var cosom;\r\n var sinom;\r\n var scale0;\r\n var scale1;\r\n\r\n cosom = ax * bx + ay * by + az * bz + aw * bw;\r\n if (cosom < 0.0) {\r\n cosom = -cosom;\r\n bx = -bx;\r\n by = -by;\r\n bz = -bz;\r\n bw = -bw;\r\n }\r\n if ((1.0 - cosom) > 0.000001) {\r\n omega = Math.acos(cosom);\r\n sinom = Math.sin(omega);\r\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\r\n scale1 = Math.sin(t * omega) / sinom;\r\n } else {\r\n scale0 = 1.0 - t;\r\n scale1 = t;\r\n }\r\n out[0] = scale0 * ax + scale1 * bx;\r\n out[1] = scale0 * ay + scale1 * by;\r\n out[2] = scale0 * az + scale1 * bz;\r\n out[3] = scale0 * aw + scale1 * bw;\r\n\r\n return out;\r\n }\r\n\r\n function quaternionToEuler(out, quat) {\r\n var qx = quat[0];\r\n var qy = quat[1];\r\n var qz = quat[2];\r\n var qw = quat[3];\r\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\r\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\r\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\r\n out[0] = heading / degToRads;\r\n out[1] = attitude / degToRads;\r\n out[2] = bank / degToRads;\r\n }\r\n\r\n function createQuaternion(values) {\r\n var heading = values[0] * degToRads;\r\n var attitude = values[1] * degToRads;\r\n var bank = values[2] * degToRads;\r\n var c1 = Math.cos(heading / 2);\r\n var c2 = Math.cos(attitude / 2);\r\n var c3 = Math.cos(bank / 2);\r\n var s1 = Math.sin(heading / 2);\r\n var s2 = Math.sin(attitude / 2);\r\n var s3 = Math.sin(bank / 2);\r\n var w = c1 * c2 * c3 - s1 * s2 * s3;\r\n var x = s1 * s2 * c3 + c1 * c2 * s3;\r\n var y = s1 * c2 * c3 + c1 * s2 * s3;\r\n var z = c1 * s2 * c3 - s1 * c2 * s3;\r\n\r\n return [x, y, z, w];\r\n }\r\n\r\n function getValueAtCurrentTime() {\r\n var frameNum = this.comp.renderedFrame - this.offsetTime;\r\n var initTime = this.keyframes[0].t - this.offsetTime;\r\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\r\n if (!(frameNum === this._caching.lastFrame || (this._caching.lastFrame !== initFrame && ((this._caching.lastFrame >= endTime && frameNum >= endTime) || (this._caching.lastFrame < initTime && frameNum < initTime))))) {\r\n if (this._caching.lastFrame >= frameNum) {\r\n this._caching._lastKeyframeIndex = -1;\r\n this._caching.lastIndex = 0;\r\n }\r\n\r\n var renderResult = this.interpolateValue(frameNum, this._caching);\r\n this.pv = renderResult;\r\n }\r\n this._caching.lastFrame = frameNum;\r\n return this.pv;\r\n }\r\n\r\n function setVValue(val) {\r\n var multipliedValue;\r\n if (this.propType === 'unidimensional') {\r\n multipliedValue = val * this.mult;\r\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\r\n this.v = multipliedValue;\r\n this._mdf = true;\r\n }\r\n } else {\r\n var i = 0;\r\n var len = this.v.length;\r\n while (i < len) {\r\n multipliedValue = val[i] * this.mult;\r\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\r\n this.v[i] = multipliedValue;\r\n this._mdf = true;\r\n }\r\n i += 1;\r\n }\r\n }\r\n }\r\n\r\n function processEffectsSequence() {\r\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\r\n return;\r\n }\r\n if (this.lock) {\r\n this.setVValue(this.pv);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = this._isFirstFrame;\r\n var i;\r\n var len = this.effectsSequence.length;\r\n var finalValue = this.kf ? this.pv : this.data.k;\r\n for (i = 0; i < len; i += 1) {\r\n finalValue = this.effectsSequence[i](finalValue);\r\n }\r\n this.setVValue(finalValue);\r\n this._isFirstFrame = false;\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function addEffect(effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.container.addDynamicProperty(this);\r\n }\r\n\r\n function ValueProperty(elem, data, mult, container) {\r\n this.propType = 'unidimensional';\r\n this.mult = mult || 1;\r\n this.data = data;\r\n this.v = mult ? data.k * mult : data.k;\r\n this.pv = data.k;\r\n this._mdf = false;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.k = false;\r\n this.kf = false;\r\n this.vel = 0;\r\n this.effectsSequence = [];\r\n this._isFirstFrame = true;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function MultiDimensionalProperty(elem, data, mult, container) {\r\n this.propType = 'multidimensional';\r\n this.mult = mult || 1;\r\n this.data = data;\r\n this._mdf = false;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.k = false;\r\n this.kf = false;\r\n this.frameId = -1;\r\n var i;\r\n var len = data.k.length;\r\n this.v = createTypedArray('float32', len);\r\n this.pv = createTypedArray('float32', len);\r\n this.vel = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n this.v[i] = data.k[i] * this.mult;\r\n this.pv[i] = data.k[i];\r\n }\r\n this._isFirstFrame = true;\r\n this.effectsSequence = [];\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function KeyframedValueProperty(elem, data, mult, container) {\r\n this.propType = 'unidimensional';\r\n this.keyframes = data.k;\r\n this.keyframesMetadata = [];\r\n this.offsetTime = elem.data.st;\r\n this.frameId = -1;\r\n this._caching = {\r\n lastFrame: initFrame, lastIndex: 0, value: 0, _lastKeyframeIndex: -1,\r\n };\r\n this.k = true;\r\n this.kf = true;\r\n this.data = data;\r\n this.mult = mult || 1;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.v = initFrame;\r\n this.pv = initFrame;\r\n this._isFirstFrame = true;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.interpolateValue = interpolateValue;\r\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\r\n this.propType = 'multidimensional';\r\n var i;\r\n var len = data.k.length;\r\n var s;\r\n var e;\r\n var to;\r\n var ti;\r\n for (i = 0; i < len - 1; i += 1) {\r\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\r\n s = data.k[i].s;\r\n e = data.k[i + 1].s;\r\n to = data.k[i].to;\r\n ti = data.k[i].ti;\r\n if ((s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1])) || (s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2]))) {\r\n data.k[i].to = null;\r\n data.k[i].ti = null;\r\n }\r\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\r\n if (s.length === 2 || (s[2] === e[2] && to[2] === 0 && ti[2] === 0)) {\r\n data.k[i].to = null;\r\n data.k[i].ti = null;\r\n }\r\n }\r\n }\r\n }\r\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\r\n this.data = data;\r\n this.keyframes = data.k;\r\n this.keyframesMetadata = [];\r\n this.offsetTime = elem.data.st;\r\n this.k = true;\r\n this.kf = true;\r\n this._isFirstFrame = true;\r\n this.mult = mult || 1;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.interpolateValue = interpolateValue;\r\n this.frameId = -1;\r\n var arrLen = data.k[0].s.length;\r\n this.v = createTypedArray('float32', arrLen);\r\n this.pv = createTypedArray('float32', arrLen);\r\n for (i = 0; i < arrLen; i += 1) {\r\n this.v[i] = initFrame;\r\n this.pv[i] = initFrame;\r\n }\r\n this._caching = { lastFrame: initFrame, lastIndex: 0, value: createTypedArray('float32', arrLen) };\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function getProp(elem, data, type, mult, container) {\r\n var p;\r\n if (!data.k.length) {\r\n p = new ValueProperty(elem, data, mult, container);\r\n } else if (typeof (data.k[0]) === 'number') {\r\n p = new MultiDimensionalProperty(elem, data, mult, container);\r\n } else {\r\n switch (type) {\r\n case 0:\r\n p = new KeyframedValueProperty(elem, data, mult, container);\r\n break;\r\n case 1:\r\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n if (p.effectsSequence.length) {\r\n container.addDynamicProperty(p);\r\n }\r\n return p;\r\n }\r\n\r\n var ob = {\r\n getProp: getProp,\r\n };\r\n return ob;\r\n}());\r\n\r\n/* global Matrix, degToRads, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n/* exported TransformPropertyFactory */\r\n\r\nvar TransformPropertyFactory = (function () {\r\n var defaultVector = [0, 0];\r\n\r\n function applyToMatrix(mat) {\r\n var _mdf = this._mdf;\r\n this.iterateDynamicProperties();\r\n this._mdf = this._mdf || _mdf;\r\n if (this.a) {\r\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n }\r\n if (this.s) {\r\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n }\r\n if (this.sk) {\r\n mat.skewFromAxis(-this.sk.v, this.sa.v);\r\n }\r\n if (this.r) {\r\n mat.rotate(-this.r.v);\r\n } else {\r\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2])\r\n .rotateY(this.or.v[1])\r\n .rotateX(this.or.v[0]);\r\n }\r\n if (this.data.p.s) {\r\n if (this.data.p.z) {\r\n mat.translate(this.px.v, this.py.v, -this.pz.v);\r\n } else {\r\n mat.translate(this.px.v, this.py.v, 0);\r\n }\r\n } else {\r\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\r\n }\r\n }\r\n function processKeys(forceRender) {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n if (this._isDirty) {\r\n this.precalculateMatrix();\r\n this._isDirty = false;\r\n }\r\n\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf || forceRender) {\r\n var frameRate;\r\n this.v.cloneFromProps(this.pre.props);\r\n if (this.appliedTransformations < 1) {\r\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n }\r\n if (this.appliedTransformations < 2) {\r\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n }\r\n if (this.sk && this.appliedTransformations < 3) {\r\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\r\n }\r\n if (this.r && this.appliedTransformations < 4) {\r\n this.v.rotate(-this.r.v);\r\n } else if (!this.r && this.appliedTransformations < 4) {\r\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2])\r\n .rotateY(this.or.v[1])\r\n .rotateX(this.or.v[0]);\r\n }\r\n if (this.autoOriented) {\r\n var v1;\r\n var v2;\r\n frameRate = this.elem.globalData.frameRate;\r\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\r\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\r\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\r\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\r\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\r\n v1 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t / frameRate), 0);\r\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\r\n } else {\r\n v1 = this.p.pv;\r\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\r\n }\r\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\r\n v1 = [];\r\n v2 = [];\r\n var px = this.px;\r\n var py = this.py;\r\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\r\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\r\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\r\n v2[0] = px.getValueAtTime((px.keyframes[0].t) / frameRate, 0);\r\n v2[1] = py.getValueAtTime((py.keyframes[0].t) / frameRate, 0);\r\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\r\n v1[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t / frameRate), 0);\r\n v1[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t / frameRate), 0);\r\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\r\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\r\n } else {\r\n v1 = [px.pv, py.pv];\r\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\r\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\r\n }\r\n } else {\r\n v2 = defaultVector;\r\n v1 = v2;\r\n }\r\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\r\n }\r\n if (this.data.p && this.data.p.s) {\r\n if (this.data.p.z) {\r\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\r\n } else {\r\n this.v.translate(this.px.v, this.py.v, 0);\r\n }\r\n } else {\r\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\r\n }\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function precalculateMatrix() {\r\n if (!this.a.k) {\r\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n this.appliedTransformations = 1;\r\n } else {\r\n return;\r\n }\r\n if (!this.s.effectsSequence.length) {\r\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n this.appliedTransformations = 2;\r\n } else {\r\n return;\r\n }\r\n if (this.sk) {\r\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\r\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\r\n this.appliedTransformations = 3;\r\n } else {\r\n return;\r\n }\r\n }\r\n if (this.r) {\r\n if (!this.r.effectsSequence.length) {\r\n this.pre.rotate(-this.r.v);\r\n this.appliedTransformations = 4;\r\n }\r\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\r\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2])\r\n .rotateY(this.or.v[1])\r\n .rotateX(this.or.v[0]);\r\n this.appliedTransformations = 4;\r\n }\r\n }\r\n\r\n function autoOrient() {\r\n //\r\n // var prevP = this.getValueAtTime();\r\n }\r\n\r\n function addDynamicProperty(prop) {\r\n this._addDynamicProperty(prop);\r\n this.elem.addDynamicProperty(prop);\r\n this._isDirty = true;\r\n }\r\n\r\n function TransformProperty(elem, data, container) {\r\n this.elem = elem;\r\n this.frameId = -1;\r\n this.propType = 'transform';\r\n this.data = data;\r\n this.v = new Matrix();\r\n // Precalculated matrix with non animated properties\r\n this.pre = new Matrix();\r\n this.appliedTransformations = 0;\r\n this.initDynamicPropertyContainer(container || elem);\r\n if (data.p && data.p.s) {\r\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\r\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\r\n if (data.p.z) {\r\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\r\n }\r\n } else {\r\n this.p = PropertyFactory.getProp(elem, data.p || { k: [0, 0, 0] }, 1, 0, this);\r\n }\r\n if (data.rx) {\r\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\r\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\r\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\r\n if (data.or.k[0].ti) {\r\n var i;\r\n var len = data.or.k.length;\r\n for (i = 0; i < len; i += 1) {\r\n data.or.k[i].to = null;\r\n data.or.k[i].ti = null;\r\n }\r\n }\r\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this);\r\n // sh Indicates it needs to be capped between -180 and 180\r\n this.or.sh = true;\r\n } else {\r\n this.r = PropertyFactory.getProp(elem, data.r || { k: 0 }, 0, degToRads, this);\r\n }\r\n if (data.sk) {\r\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\r\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\r\n }\r\n this.a = PropertyFactory.getProp(elem, data.a || { k: [0, 0, 0] }, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s || { k: [100, 100, 100] }, 1, 0.01, this);\r\n // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\r\n if (data.o) {\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\r\n } else {\r\n this.o = { _mdf: false, v: 1 };\r\n }\r\n this._isDirty = true;\r\n if (!this.dynamicProperties.length) {\r\n this.getValue(true);\r\n }\r\n }\r\n\r\n TransformProperty.prototype = {\r\n applyToMatrix: applyToMatrix,\r\n getValue: processKeys,\r\n precalculateMatrix: precalculateMatrix,\r\n autoOrient: autoOrient,\r\n };\r\n\r\n extendPrototype([DynamicPropertyContainer], TransformProperty);\r\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\r\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\r\n\r\n function getTransformProperty(elem, data, container) {\r\n return new TransformProperty(elem, data, container);\r\n }\r\n\r\n return {\r\n getTransformProperty: getTransformProperty,\r\n };\r\n}());\r\n\r\n/* global createSizedArray, createSizedArray, pointPool */\r\n\r\nfunction ShapePath() {\r\n this.c = false;\r\n this._length = 0;\r\n this._maxLength = 8;\r\n this.v = createSizedArray(this._maxLength);\r\n this.o = createSizedArray(this._maxLength);\r\n this.i = createSizedArray(this._maxLength);\r\n}\r\n\r\nShapePath.prototype.setPathData = function (closed, len) {\r\n this.c = closed;\r\n this.setLength(len);\r\n var i = 0;\r\n while (i < len) {\r\n this.v[i] = pointPool.newElement();\r\n this.o[i] = pointPool.newElement();\r\n this.i[i] = pointPool.newElement();\r\n i += 1;\r\n }\r\n};\r\n\r\nShapePath.prototype.setLength = function (len) {\r\n while (this._maxLength < len) {\r\n this.doubleArrayLength();\r\n }\r\n this._length = len;\r\n};\r\n\r\nShapePath.prototype.doubleArrayLength = function () {\r\n this.v = this.v.concat(createSizedArray(this._maxLength));\r\n this.i = this.i.concat(createSizedArray(this._maxLength));\r\n this.o = this.o.concat(createSizedArray(this._maxLength));\r\n this._maxLength *= 2;\r\n};\r\n\r\nShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\r\n var arr;\r\n this._length = Math.max(this._length, pos + 1);\r\n if (this._length >= this._maxLength) {\r\n this.doubleArrayLength();\r\n }\r\n switch (type) {\r\n case 'v':\r\n arr = this.v;\r\n break;\r\n case 'i':\r\n arr = this.i;\r\n break;\r\n case 'o':\r\n arr = this.o;\r\n break;\r\n default:\r\n arr = [];\r\n break;\r\n }\r\n if (!arr[pos] || (arr[pos] && !replace)) {\r\n arr[pos] = pointPool.newElement();\r\n }\r\n arr[pos][0] = x;\r\n arr[pos][1] = y;\r\n};\r\n\r\nShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\r\n this.setXYAt(vX, vY, 'v', pos, replace);\r\n this.setXYAt(oX, oY, 'o', pos, replace);\r\n this.setXYAt(iX, iY, 'i', pos, replace);\r\n};\r\n\r\nShapePath.prototype.reverse = function () {\r\n var newPath = new ShapePath();\r\n newPath.setPathData(this.c, this._length);\r\n var vertices = this.v;\r\n var outPoints = this.o;\r\n var inPoints = this.i;\r\n var init = 0;\r\n if (this.c) {\r\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\r\n init = 1;\r\n }\r\n var cnt = this._length - 1;\r\n var len = this._length;\r\n\r\n var i;\r\n for (i = init; i < len; i += 1) {\r\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\r\n cnt -= 1;\r\n }\r\n return newPath;\r\n};\r\n\r\n/* global extendPrototype, roundCorner, BezierFactory, shapePool, degToRads,\r\n shapeCollectionPool, PropertyFactory, bmMin, DynamicPropertyContainer */\r\n/* exported ShapePropertyFactory */\r\n\r\nvar ShapePropertyFactory = (function () {\r\n var initFrame = -999999;\r\n\r\n function interpolateShape(frameNum, previousValue, caching) {\r\n var iterationIndex = caching.lastIndex;\r\n var keyPropS;\r\n var keyPropE;\r\n var isHold;\r\n var j;\r\n var k;\r\n var jLen;\r\n var kLen;\r\n var perc;\r\n var vertexValue;\r\n var kf = this.keyframes;\r\n if (frameNum < kf[0].t - this.offsetTime) {\r\n keyPropS = kf[0].s[0];\r\n isHold = true;\r\n iterationIndex = 0;\r\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\r\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\r\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\r\n isHold = true;\r\n } else {\r\n var i = iterationIndex;\r\n var len = kf.length - 1;\r\n var flag = true;\r\n var keyData;\r\n var nextKeyData;\r\n var keyframeMetadata;\r\n while (flag) {\r\n keyData = kf[i];\r\n nextKeyData = kf[i + 1];\r\n if ((nextKeyData.t - this.offsetTime) > frameNum) {\r\n break;\r\n }\r\n if (i < len - 1) {\r\n i += 1;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n keyframeMetadata = this.keyframesMetadata[i] || {};\r\n isHold = keyData.h === 1;\r\n iterationIndex = i;\r\n if (!isHold) {\r\n if (frameNum >= nextKeyData.t - this.offsetTime) {\r\n perc = 1;\r\n } else if (frameNum < keyData.t - this.offsetTime) {\r\n perc = 0;\r\n } else {\r\n var fnc;\r\n if (keyframeMetadata.__fnct) {\r\n fnc = keyframeMetadata.__fnct;\r\n } else {\r\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\r\n keyframeMetadata.__fnct = fnc;\r\n }\r\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / ((nextKeyData.t - this.offsetTime) - (keyData.t - this.offsetTime)));\r\n }\r\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\r\n }\r\n keyPropS = keyData.s[0];\r\n }\r\n jLen = previousValue._length;\r\n kLen = keyPropS.i[0].length;\r\n caching.lastIndex = iterationIndex;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n for (k = 0; k < kLen; k += 1) {\r\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\r\n previousValue.i[j][k] = vertexValue;\r\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\r\n previousValue.o[j][k] = vertexValue;\r\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\r\n previousValue.v[j][k] = vertexValue;\r\n }\r\n }\r\n }\r\n\r\n function interpolateShapeCurrentTime() {\r\n var frameNum = this.comp.renderedFrame - this.offsetTime;\r\n var initTime = this.keyframes[0].t - this.offsetTime;\r\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\r\n var lastFrame = this._caching.lastFrame;\r\n if (!(lastFrame !== initFrame && ((lastFrame < initTime && frameNum < initTime) || (lastFrame > endTime && frameNum > endTime)))) {\r\n /// /\r\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\r\n this.interpolateShape(frameNum, this.pv, this._caching);\r\n /// /\r\n }\r\n this._caching.lastFrame = frameNum;\r\n return this.pv;\r\n }\r\n\r\n function resetShape() {\r\n this.paths = this.localShapeCollection;\r\n }\r\n\r\n function shapesEqual(shape1, shape2) {\r\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\r\n return false;\r\n }\r\n var i;\r\n var len = shape1._length;\r\n for (i = 0; i < len; i += 1) {\r\n if (shape1.v[i][0] !== shape2.v[i][0]\r\n || shape1.v[i][1] !== shape2.v[i][1]\r\n || shape1.o[i][0] !== shape2.o[i][0]\r\n || shape1.o[i][1] !== shape2.o[i][1]\r\n || shape1.i[i][0] !== shape2.i[i][0]\r\n || shape1.i[i][1] !== shape2.i[i][1]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n function setVValue(newPath) {\r\n if (!shapesEqual(this.v, newPath)) {\r\n this.v = shapePool.clone(newPath);\r\n this.localShapeCollection.releaseShapes();\r\n this.localShapeCollection.addShape(this.v);\r\n this._mdf = true;\r\n this.paths = this.localShapeCollection;\r\n }\r\n }\r\n\r\n function processEffectsSequence() {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n } if (!this.effectsSequence.length) {\r\n this._mdf = false;\r\n return;\r\n }\r\n if (this.lock) {\r\n this.setVValue(this.pv);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = false;\r\n var finalValue;\r\n if (this.kf) {\r\n finalValue = this.pv;\r\n } else if (this.data.ks) {\r\n finalValue = this.data.ks.k;\r\n } else {\r\n finalValue = this.data.pt.k;\r\n }\r\n var i;\r\n var len = this.effectsSequence.length;\r\n for (i = 0; i < len; i += 1) {\r\n finalValue = this.effectsSequence[i](finalValue);\r\n }\r\n this.setVValue(finalValue);\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function ShapeProperty(elem, data, type) {\r\n this.propType = 'shape';\r\n this.comp = elem.comp;\r\n this.container = elem;\r\n this.elem = elem;\r\n this.data = data;\r\n this.k = false;\r\n this.kf = false;\r\n this._mdf = false;\r\n var pathData = type === 3 ? data.pt.k : data.ks.k;\r\n this.v = shapePool.clone(pathData);\r\n this.pv = shapePool.clone(this.v);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.paths.addShape(this.v);\r\n this.reset = resetShape;\r\n this.effectsSequence = [];\r\n }\r\n\r\n function addEffect(effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.container.addDynamicProperty(this);\r\n }\r\n\r\n ShapeProperty.prototype.interpolateShape = interpolateShape;\r\n ShapeProperty.prototype.getValue = processEffectsSequence;\r\n ShapeProperty.prototype.setVValue = setVValue;\r\n ShapeProperty.prototype.addEffect = addEffect;\r\n\r\n function KeyframedShapeProperty(elem, data, type) {\r\n this.propType = 'shape';\r\n this.comp = elem.comp;\r\n this.elem = elem;\r\n this.container = elem;\r\n this.offsetTime = elem.data.st;\r\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\r\n this.keyframesMetadata = [];\r\n this.k = true;\r\n this.kf = true;\r\n var len = this.keyframes[0].s[0].i.length;\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(this.keyframes[0].s[0].c, len);\r\n this.pv = shapePool.clone(this.v);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.paths.addShape(this.v);\r\n this.lastFrame = initFrame;\r\n this.reset = resetShape;\r\n this._caching = { lastFrame: initFrame, lastIndex: 0 };\r\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\r\n }\r\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\r\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\r\n KeyframedShapeProperty.prototype.setVValue = setVValue;\r\n KeyframedShapeProperty.prototype.addEffect = addEffect;\r\n\r\n var EllShapeProperty = (function () {\r\n var cPoint = roundCorner;\r\n\r\n function EllShapePropertyFactory(elem, data) {\r\n /* this.v = {\r\n v: createSizedArray(4),\r\n i: createSizedArray(4),\r\n o: createSizedArray(4),\r\n c: true\r\n }; */\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(true, 4);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.localShapeCollection.addShape(this.v);\r\n this.d = data.d;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.frameId = -1;\r\n this.initDynamicPropertyContainer(elem);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertEllToPath();\r\n }\r\n }\r\n\r\n EllShapePropertyFactory.prototype = {\r\n reset: resetShape,\r\n getValue: function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf) {\r\n this.convertEllToPath();\r\n }\r\n },\r\n convertEllToPath: function () {\r\n var p0 = this.p.v[0];\r\n var p1 = this.p.v[1];\r\n var s0 = this.s.v[0] / 2;\r\n var s1 = this.s.v[1] / 2;\r\n var _cw = this.d !== 3;\r\n var _v = this.v;\r\n _v.v[0][0] = p0;\r\n _v.v[0][1] = p1 - s1;\r\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.v[1][1] = p1;\r\n _v.v[2][0] = p0;\r\n _v.v[2][1] = p1 + s1;\r\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.v[3][1] = p1;\r\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\r\n _v.i[0][1] = p1 - s1;\r\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.i[1][1] = p1 - s1 * cPoint;\r\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\r\n _v.i[2][1] = p1 + s1;\r\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.i[3][1] = p1 + s1 * cPoint;\r\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\r\n _v.o[0][1] = p1 - s1;\r\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.o[1][1] = p1 + s1 * cPoint;\r\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\r\n _v.o[2][1] = p1 + s1;\r\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.o[3][1] = p1 - s1 * cPoint;\r\n },\r\n };\r\n\r\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\r\n\r\n return EllShapePropertyFactory;\r\n }());\r\n\r\n var StarShapeProperty = (function () {\r\n function StarShapePropertyFactory(elem, data) {\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(true, 0);\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.data = data;\r\n this.frameId = -1;\r\n this.d = data.d;\r\n this.initDynamicPropertyContainer(elem);\r\n if (data.sy === 1) {\r\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\r\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\r\n this.convertToPath = this.convertStarToPath;\r\n } else {\r\n this.convertToPath = this.convertPolygonToPath;\r\n }\r\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\r\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\r\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.localShapeCollection.addShape(this.v);\r\n this.paths = this.localShapeCollection;\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertToPath();\r\n }\r\n }\r\n\r\n StarShapePropertyFactory.prototype = {\r\n reset: resetShape,\r\n getValue: function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n if (this._mdf) {\r\n this.convertToPath();\r\n }\r\n },\r\n convertStarToPath: function () {\r\n var numPts = Math.floor(this.pt.v) * 2;\r\n var angle = (Math.PI * 2) / numPts;\r\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\r\n var longFlag = true;\r\n var longRad = this.or.v;\r\n var shortRad = this.ir.v;\r\n var longRound = this.os.v;\r\n var shortRound = this.is.v;\r\n var longPerimSegment = (2 * Math.PI * longRad) / (numPts * 2);\r\n var shortPerimSegment = (2 * Math.PI * shortRad) / (numPts * 2);\r\n var i;\r\n var rad;\r\n var roundness;\r\n var perimSegment;\r\n var currentAng = -Math.PI / 2;\r\n currentAng += this.r.v;\r\n var dir = this.data.d === 3 ? -1 : 1;\r\n this.v._length = 0;\r\n for (i = 0; i < numPts; i += 1) {\r\n rad = longFlag ? longRad : shortRad;\r\n roundness = longFlag ? longRound : shortRound;\r\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\r\n var x = rad * Math.cos(currentAng);\r\n var y = rad * Math.sin(currentAng);\r\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\r\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\r\n x += +this.p.v[0];\r\n y += +this.p.v[1];\r\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\r\n\r\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\r\n longFlag = !longFlag;\r\n currentAng += angle * dir;\r\n }\r\n },\r\n convertPolygonToPath: function () {\r\n var numPts = Math.floor(this.pt.v);\r\n var angle = (Math.PI * 2) / numPts;\r\n var rad = this.or.v;\r\n var roundness = this.os.v;\r\n var perimSegment = (2 * Math.PI * rad) / (numPts * 4);\r\n var i;\r\n var currentAng = -Math.PI * 0.5;\r\n var dir = this.data.d === 3 ? -1 : 1;\r\n currentAng += this.r.v;\r\n this.v._length = 0;\r\n for (i = 0; i < numPts; i += 1) {\r\n var x = rad * Math.cos(currentAng);\r\n var y = rad * Math.sin(currentAng);\r\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\r\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\r\n x += +this.p.v[0];\r\n y += +this.p.v[1];\r\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\r\n currentAng += angle * dir;\r\n }\r\n this.paths.length = 0;\r\n this.paths[0] = this.v;\r\n },\r\n\r\n };\r\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\r\n\r\n return StarShapePropertyFactory;\r\n }());\r\n\r\n var RectShapeProperty = (function () {\r\n function RectShapePropertyFactory(elem, data) {\r\n this.v = shapePool.newElement();\r\n this.v.c = true;\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.localShapeCollection.addShape(this.v);\r\n this.paths = this.localShapeCollection;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.frameId = -1;\r\n this.d = data.d;\r\n this.initDynamicPropertyContainer(elem);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\r\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertRectToPath();\r\n }\r\n }\r\n\r\n RectShapePropertyFactory.prototype = {\r\n convertRectToPath: function () {\r\n var p0 = this.p.v[0];\r\n var p1 = this.p.v[1];\r\n var v0 = this.s.v[0] / 2;\r\n var v1 = this.s.v[1] / 2;\r\n var round = bmMin(v0, v1, this.r.v);\r\n var cPoint = round * (1 - roundCorner);\r\n this.v._length = 0;\r\n\r\n if (this.d === 2 || this.d === 1) {\r\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\r\n if (round !== 0) {\r\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\r\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\r\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\r\n } else {\r\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\r\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\r\n }\r\n } else {\r\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\r\n if (round !== 0) {\r\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\r\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\r\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\r\n } else {\r\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\r\n }\r\n }\r\n },\r\n getValue: function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n if (this._mdf) {\r\n this.convertRectToPath();\r\n }\r\n },\r\n reset: resetShape,\r\n };\r\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\r\n\r\n return RectShapePropertyFactory;\r\n }());\r\n\r\n function getShapeProp(elem, data, type) {\r\n var prop;\r\n if (type === 3 || type === 4) {\r\n var dataProp = type === 3 ? data.pt : data.ks;\r\n var keys = dataProp.k;\r\n if (keys.length) {\r\n prop = new KeyframedShapeProperty(elem, data, type);\r\n } else {\r\n prop = new ShapeProperty(elem, data, type);\r\n }\r\n } else if (type === 5) {\r\n prop = new RectShapeProperty(elem, data);\r\n } else if (type === 6) {\r\n prop = new EllShapeProperty(elem, data);\r\n } else if (type === 7) {\r\n prop = new StarShapeProperty(elem, data);\r\n }\r\n if (prop.k) {\r\n elem.addDynamicProperty(prop);\r\n }\r\n return prop;\r\n }\r\n\r\n function getConstructorFunction() {\r\n return ShapeProperty;\r\n }\r\n\r\n function getKeyframedConstructorFunction() {\r\n return KeyframedShapeProperty;\r\n }\r\n\r\n var ob = {};\r\n ob.getShapeProp = getShapeProp;\r\n ob.getConstructorFunction = getConstructorFunction;\r\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\r\n return ob;\r\n}());\r\n\r\n/* global shapeCollectionPool, initialDefaultFrame, extendPrototype, DynamicPropertyContainer */\r\n/* exported ShapeModifiers */\r\n\r\nvar ShapeModifiers = (function () {\r\n var ob = {};\r\n var modifiers = {};\r\n ob.registerModifier = registerModifier;\r\n ob.getModifier = getModifier;\r\n\r\n function registerModifier(nm, factory) {\r\n if (!modifiers[nm]) {\r\n modifiers[nm] = factory;\r\n }\r\n }\r\n\r\n function getModifier(nm, elem, data) {\r\n return new modifiers[nm](elem, data);\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\nfunction ShapeModifier() {}\r\nShapeModifier.prototype.initModifierProperties = function () {};\r\nShapeModifier.prototype.addShapeToModifier = function () {};\r\nShapeModifier.prototype.addShape = function (data) {\r\n if (!this.closed) {\r\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\r\n data.sh.container.addDynamicProperty(data.sh);\r\n var shapeData = { shape: data.sh, data: data, localShapeCollection: shapeCollectionPool.newShapeCollection() };\r\n this.shapes.push(shapeData);\r\n this.addShapeToModifier(shapeData);\r\n if (this._isAnimated) {\r\n data.setAsAnimated();\r\n }\r\n }\r\n};\r\nShapeModifier.prototype.init = function (elem, data) {\r\n this.shapes = [];\r\n this.elem = elem;\r\n this.initDynamicPropertyContainer(elem);\r\n this.initModifierProperties(elem, data);\r\n this.frameId = initialDefaultFrame;\r\n this.closed = false;\r\n this.k = false;\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.getValue(true);\r\n }\r\n};\r\nShapeModifier.prototype.processKeys = function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n};\r\n\r\nextendPrototype([DynamicPropertyContainer], ShapeModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, PropertyFactory, segmentsLengthPool, bez, shapePool, ShapeModifiers */\r\n\r\nfunction TrimModifier() {\r\n}\r\nextendPrototype([ShapeModifier], TrimModifier);\r\nTrimModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\r\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\r\n this.sValue = 0;\r\n this.eValue = 0;\r\n this.getValue = this.processKeys;\r\n this.m = data.m;\r\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\r\n};\r\n\r\nTrimModifier.prototype.addShapeToModifier = function (shapeData) {\r\n shapeData.pathsData = [];\r\n};\r\n\r\nTrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\r\n var segments = [];\r\n if (e <= 1) {\r\n segments.push({\r\n s: s,\r\n e: e,\r\n });\r\n } else if (s >= 1) {\r\n segments.push({\r\n s: s - 1,\r\n e: e - 1,\r\n });\r\n } else {\r\n segments.push({\r\n s: s,\r\n e: 1,\r\n });\r\n segments.push({\r\n s: 0,\r\n e: e - 1,\r\n });\r\n }\r\n var shapeSegments = [];\r\n var i;\r\n var len = segments.length;\r\n var segmentOb;\r\n for (i = 0; i < len; i += 1) {\r\n segmentOb = segments[i];\r\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\r\n var shapeS;\r\n var shapeE;\r\n if (segmentOb.s * totalModifierLength <= addedLength) {\r\n shapeS = 0;\r\n } else {\r\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\r\n }\r\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\r\n shapeE = 1;\r\n } else {\r\n shapeE = ((segmentOb.e * totalModifierLength - addedLength) / shapeLength);\r\n }\r\n shapeSegments.push([shapeS, shapeE]);\r\n }\r\n }\r\n if (!shapeSegments.length) {\r\n shapeSegments.push([0, 0]);\r\n }\r\n return shapeSegments;\r\n};\r\n\r\nTrimModifier.prototype.releasePathsData = function (pathsData) {\r\n var i;\r\n var len = pathsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n segmentsLengthPool.release(pathsData[i]);\r\n }\r\n pathsData.length = 0;\r\n return pathsData;\r\n};\r\n\r\nTrimModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var s;\r\n var e;\r\n if (this._mdf || _isFirstFrame) {\r\n var o = (this.o.v % 360) / 360;\r\n if (o < 0) {\r\n o += 1;\r\n }\r\n if (this.s.v > 1) {\r\n s = 1 + o;\r\n } else if (this.s.v < 0) {\r\n s = 0 + o;\r\n } else {\r\n s = this.s.v + o;\r\n }\r\n if (this.e.v > 1) {\r\n e = 1 + o;\r\n } else if (this.e.v < 0) {\r\n e = 0 + o;\r\n } else {\r\n e = this.e.v + o;\r\n }\r\n\r\n if (s > e) {\r\n var _s = s;\r\n s = e;\r\n e = _s;\r\n }\r\n s = Math.round(s * 10000) * 0.0001;\r\n e = Math.round(e * 10000) * 0.0001;\r\n this.sValue = s;\r\n this.eValue = e;\r\n } else {\r\n s = this.sValue;\r\n e = this.eValue;\r\n }\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var pathsData;\r\n var pathData;\r\n var totalShapeLength;\r\n var totalModifierLength = 0;\r\n\r\n if (e === s) {\r\n for (i = 0; i < len; i += 1) {\r\n this.shapes[i].localShapeCollection.releaseShapes();\r\n this.shapes[i].shape._mdf = true;\r\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\r\n if (this._mdf) {\r\n this.shapes[i].pathsData.length = 0;\r\n }\r\n }\r\n } else if (!((e === 1 && s === 0) || (e === 0 && s === 1))) {\r\n var segments = [];\r\n var shapeData;\r\n var localShapeCollection;\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\r\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n } else {\r\n shapePaths = shapeData.shape.paths;\r\n jLen = shapePaths._length;\r\n totalShapeLength = 0;\r\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\r\n totalShapeLength = shapeData.totalShapeLength;\r\n } else {\r\n pathsData = this.releasePathsData(shapeData.pathsData);\r\n for (j = 0; j < jLen; j += 1) {\r\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\r\n pathsData.push(pathData);\r\n totalShapeLength += pathData.totalLength;\r\n }\r\n shapeData.totalShapeLength = totalShapeLength;\r\n shapeData.pathsData = pathsData;\r\n }\r\n\r\n totalModifierLength += totalShapeLength;\r\n shapeData.shape._mdf = true;\r\n }\r\n }\r\n var shapeS = s;\r\n var shapeE = e;\r\n var addedLength = 0;\r\n var edges;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n shapeData = this.shapes[i];\r\n if (shapeData.shape._mdf) {\r\n localShapeCollection = shapeData.localShapeCollection;\r\n localShapeCollection.releaseShapes();\r\n // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\r\n if (this.m === 2 && len > 1) {\r\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\r\n addedLength += shapeData.totalShapeLength;\r\n } else {\r\n edges = [[shapeS, shapeE]];\r\n }\r\n jLen = edges.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n shapeS = edges[j][0];\r\n shapeE = edges[j][1];\r\n segments.length = 0;\r\n if (shapeE <= 1) {\r\n segments.push({\r\n s: shapeData.totalShapeLength * shapeS,\r\n e: shapeData.totalShapeLength * shapeE,\r\n });\r\n } else if (shapeS >= 1) {\r\n segments.push({\r\n s: shapeData.totalShapeLength * (shapeS - 1),\r\n e: shapeData.totalShapeLength * (shapeE - 1),\r\n });\r\n } else {\r\n segments.push({\r\n s: shapeData.totalShapeLength * shapeS,\r\n e: shapeData.totalShapeLength,\r\n });\r\n segments.push({\r\n s: 0,\r\n e: shapeData.totalShapeLength * (shapeE - 1),\r\n });\r\n }\r\n var newShapesData = this.addShapes(shapeData, segments[0]);\r\n if (segments[0].s !== segments[0].e) {\r\n if (segments.length > 1) {\r\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\r\n if (lastShapeInCollection.c) {\r\n var lastShape = newShapesData.pop();\r\n this.addPaths(newShapesData, localShapeCollection);\r\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\r\n } else {\r\n this.addPaths(newShapesData, localShapeCollection);\r\n newShapesData = this.addShapes(shapeData, segments[1]);\r\n }\r\n }\r\n this.addPaths(newShapesData, localShapeCollection);\r\n }\r\n }\r\n shapeData.shape.paths = localShapeCollection;\r\n }\r\n }\r\n } else if (this._mdf) {\r\n for (i = 0; i < len; i += 1) {\r\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\r\n // Don't remove this even if it's losing cached info.\r\n this.shapes[i].pathsData.length = 0;\r\n this.shapes[i].shape._mdf = true;\r\n }\r\n }\r\n};\r\n\r\nTrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\r\n var i;\r\n var len = newPaths.length;\r\n for (i = 0; i < len; i += 1) {\r\n localShapeCollection.addShape(newPaths[i]);\r\n }\r\n};\r\n\r\nTrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\r\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\r\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\r\n if (newShape) {\r\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\r\n }\r\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\r\n};\r\n\r\nTrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\r\n shapePath.setXYAt(points[1], points[5], 'o', pos);\r\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\r\n if (newShape) {\r\n shapePath.setXYAt(points[0], points[4], 'v', pos);\r\n }\r\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\r\n};\r\n\r\nTrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\r\n var pathsData = shapeData.pathsData;\r\n var shapePaths = shapeData.shape.paths.shapes;\r\n var i;\r\n var len = shapeData.shape.paths._length;\r\n var j;\r\n var jLen;\r\n var addedLength = 0;\r\n var currentLengthData;\r\n var segmentCount;\r\n var lengths;\r\n var segment;\r\n var shapes = [];\r\n var initPos;\r\n var newShape = true;\r\n if (!shapePath) {\r\n shapePath = shapePool.newElement();\r\n segmentCount = 0;\r\n initPos = 0;\r\n } else {\r\n segmentCount = shapePath._length;\r\n initPos = shapePath._length;\r\n }\r\n shapes.push(shapePath);\r\n for (i = 0; i < len; i += 1) {\r\n lengths = pathsData[i].lengths;\r\n shapePath.c = shapePaths[i].c;\r\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\r\n for (j = 1; j < jLen; j += 1) {\r\n currentLengthData = lengths[j - 1];\r\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\r\n addedLength += currentLengthData.addedLength;\r\n shapePath.c = false;\r\n } else if (addedLength > shapeSegment.e) {\r\n shapePath.c = false;\r\n break;\r\n } else {\r\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\r\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\r\n newShape = false;\r\n } else {\r\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\r\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);\r\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n newShape = false;\r\n shapePath.c = false;\r\n }\r\n addedLength += currentLengthData.addedLength;\r\n segmentCount += 1;\r\n }\r\n }\r\n if (shapePaths[i].c && lengths.length) {\r\n currentLengthData = lengths[j - 1];\r\n if (addedLength <= shapeSegment.e) {\r\n var segmentLength = lengths[j - 1].addedLength;\r\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\r\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\r\n newShape = false;\r\n } else {\r\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\r\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);\r\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n newShape = false;\r\n shapePath.c = false;\r\n }\r\n } else {\r\n shapePath.c = false;\r\n }\r\n addedLength += currentLengthData.addedLength;\r\n segmentCount += 1;\r\n }\r\n if (shapePath._length) {\r\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\r\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\r\n }\r\n if (addedLength > shapeSegment.e) {\r\n break;\r\n }\r\n if (i < len - 1) {\r\n shapePath = shapePool.newElement();\r\n newShape = true;\r\n shapes.push(shapePath);\r\n segmentCount = 0;\r\n }\r\n }\r\n return shapes;\r\n};\r\n\r\nShapeModifiers.registerModifier('tm', TrimModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, PropertyFactory, shapePool, roundCorner, ShapeModifiers */\r\n\r\nfunction RoundCornersModifier() {}\r\nextendPrototype([ShapeModifier], RoundCornersModifier);\r\nRoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\r\n this._isAnimated = !!this.rd.effectsSequence.length;\r\n};\r\n\r\nRoundCornersModifier.prototype.processPath = function (path, round) {\r\n var clonedPath = shapePool.newElement();\r\n clonedPath.c = path.c;\r\n var i;\r\n var len = path._length;\r\n var currentV;\r\n var currentI;\r\n var currentO;\r\n var closerV;\r\n var distance;\r\n var newPosPerc;\r\n var index = 0;\r\n var vX;\r\n var vY;\r\n var oX;\r\n var oY;\r\n var iX;\r\n var iY;\r\n for (i = 0; i < len; i += 1) {\r\n currentV = path.v[i];\r\n currentO = path.o[i];\r\n currentI = path.i[i];\r\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\r\n if ((i === 0 || i === len - 1) && !path.c) {\r\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\r\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\r\n index += 1;\r\n } else {\r\n if (i === 0) {\r\n closerV = path.v[len - 1];\r\n } else {\r\n closerV = path.v[i - 1];\r\n }\r\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\r\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\r\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\r\n vX = iX;\r\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\r\n vY = iY;\r\n oX = vX - (vX - currentV[0]) * roundCorner;\r\n oY = vY - (vY - currentV[1]) * roundCorner;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\r\n index += 1;\r\n\r\n if (i === len - 1) {\r\n closerV = path.v[0];\r\n } else {\r\n closerV = path.v[i + 1];\r\n }\r\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\r\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\r\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\r\n vX = oX;\r\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\r\n vY = oY;\r\n iX = vX - (vX - currentV[0]) * roundCorner;\r\n iY = vY - (vY - currentV[1]) * roundCorner;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\r\n index += 1;\r\n }\r\n } else {\r\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\r\n index += 1;\r\n }\r\n }\r\n return clonedPath;\r\n};\r\n\r\nRoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var rd = this.rd.v;\r\n\r\n if (rd !== 0) {\r\n var shapeData;\r\n var localShapeCollection;\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n localShapeCollection.releaseShapes();\r\n shapeData.shape._mdf = true;\r\n shapePaths = shapeData.shape.paths.shapes;\r\n jLen = shapeData.shape.paths._length;\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\r\n }\r\n }\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n};\r\n\r\nShapeModifiers.registerModifier('rd', RoundCornersModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, PropertyFactory, shapePool, ShapeModifiers */\r\n\r\nfunction PuckerAndBloatModifier() {}\r\nextendPrototype([ShapeModifier], PuckerAndBloatModifier);\r\nPuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\r\n this._isAnimated = !!this.amount.effectsSequence.length;\r\n};\r\n\r\nPuckerAndBloatModifier.prototype.processPath = function (path, amount) {\r\n var percent = amount / 100;\r\n var centerPoint = [0, 0];\r\n var pathLength = path._length;\r\n var i = 0;\r\n for (i = 0; i < pathLength; i += 1) {\r\n centerPoint[0] += path.v[i][0];\r\n centerPoint[1] += path.v[i][1];\r\n }\r\n centerPoint[0] /= pathLength;\r\n centerPoint[1] /= pathLength;\r\n var clonedPath = shapePool.newElement();\r\n clonedPath.c = path.c;\r\n var vX;\r\n var vY;\r\n var oX;\r\n var oY;\r\n var iX;\r\n var iY;\r\n for (i = 0; i < pathLength; i += 1) {\r\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\r\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\r\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\r\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\r\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\r\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\r\n }\r\n return clonedPath;\r\n};\r\n\r\nPuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var amount = this.amount.v;\r\n\r\n if (amount !== 0) {\r\n var shapeData;\r\n var localShapeCollection;\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n localShapeCollection.releaseShapes();\r\n shapeData.shape._mdf = true;\r\n shapePaths = shapeData.shape.paths.shapes;\r\n jLen = shapeData.shape.paths._length;\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\r\n }\r\n }\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n};\r\nShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, TransformPropertyFactory, PropertyFactory, Matrix, ShapeModifiers */\r\n\r\nfunction RepeaterModifier() {}\r\nextendPrototype([ShapeModifier], RepeaterModifier);\r\n\r\nRepeaterModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\r\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\r\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\r\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\r\n this.data = data;\r\n if (!this.dynamicProperties.length) {\r\n this.getValue(true);\r\n }\r\n this._isAnimated = !!this.dynamicProperties.length;\r\n this.pMatrix = new Matrix();\r\n this.rMatrix = new Matrix();\r\n this.sMatrix = new Matrix();\r\n this.tMatrix = new Matrix();\r\n this.matrix = new Matrix();\r\n};\r\n\r\nRepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\r\n var dir = inv ? -1 : 1;\r\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\r\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\r\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\r\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\r\n rMatrix.rotate(-transform.r.v * dir * perc);\r\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\r\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\r\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\r\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\r\n};\r\n\r\nRepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\r\n this.elem = elem;\r\n this.arr = arr;\r\n this.pos = pos;\r\n this.elemsData = elemsData;\r\n this._currentCopies = 0;\r\n this._elements = [];\r\n this._groups = [];\r\n this.frameId = -1;\r\n this.initDynamicPropertyContainer(elem);\r\n this.initModifierProperties(elem, arr[pos]);\r\n while (pos > 0) {\r\n pos -= 1;\r\n // this._elements.unshift(arr.splice(pos,1)[0]);\r\n this._elements.unshift(arr[pos]);\r\n }\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.getValue(true);\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.resetElements = function (elements) {\r\n var i;\r\n var len = elements.length;\r\n for (i = 0; i < len; i += 1) {\r\n elements[i]._processed = false;\r\n if (elements[i].ty === 'gr') {\r\n this.resetElements(elements[i].it);\r\n }\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.cloneElements = function (elements) {\r\n var newElements = JSON.parse(JSON.stringify(elements));\r\n this.resetElements(newElements);\r\n return newElements;\r\n};\r\n\r\nRepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\r\n var i;\r\n var len = elements.length;\r\n for (i = 0; i < len; i += 1) {\r\n elements[i]._render = renderFlag;\r\n if (elements[i].ty === 'gr') {\r\n this.changeGroupRender(elements[i].it, renderFlag);\r\n }\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var items;\r\n var itemsTransform;\r\n var i;\r\n var dir;\r\n var cont;\r\n var hasReloaded = false;\r\n if (this._mdf || _isFirstFrame) {\r\n var copies = Math.ceil(this.c.v);\r\n if (this._groups.length < copies) {\r\n while (this._groups.length < copies) {\r\n var group = {\r\n it: this.cloneElements(this._elements),\r\n ty: 'gr',\r\n };\r\n group.it.push({\r\n a: { a: 0, ix: 1, k: [0, 0] }, nm: 'Transform', o: { a: 0, ix: 7, k: 100 }, p: { a: 0, ix: 2, k: [0, 0] }, r: { a: 1, ix: 6, k: [{ s: 0, e: 0, t: 0 }, { s: 0, e: 0, t: 1 }] }, s: { a: 0, ix: 3, k: [100, 100] }, sa: { a: 0, ix: 5, k: 0 }, sk: { a: 0, ix: 4, k: 0 }, ty: 'tr',\r\n });\r\n\r\n this.arr.splice(0, 0, group);\r\n this._groups.splice(0, 0, group);\r\n this._currentCopies += 1;\r\n }\r\n this.elem.reloadShapes();\r\n hasReloaded = true;\r\n }\r\n cont = 0;\r\n var renderFlag;\r\n for (i = 0; i <= this._groups.length - 1; i += 1) {\r\n renderFlag = cont < copies;\r\n this._groups[i]._render = renderFlag;\r\n this.changeGroupRender(this._groups[i].it, renderFlag);\r\n if (!renderFlag) {\r\n var elems = this.elemsData[i].it;\r\n var transformData = elems[elems.length - 1];\r\n if (transformData.transform.op.v !== 0) {\r\n transformData.transform.op._mdf = true;\r\n transformData.transform.op.v = 0;\r\n } else {\r\n transformData.transform.op._mdf = false;\r\n }\r\n }\r\n cont += 1;\r\n }\r\n\r\n this._currentCopies = copies;\r\n /// /\r\n\r\n var offset = this.o.v;\r\n var offsetModulo = offset % 1;\r\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\r\n var pProps = this.pMatrix.props;\r\n var rProps = this.rMatrix.props;\r\n var sProps = this.sMatrix.props;\r\n this.pMatrix.reset();\r\n this.rMatrix.reset();\r\n this.sMatrix.reset();\r\n this.tMatrix.reset();\r\n this.matrix.reset();\r\n var iteration = 0;\r\n\r\n if (offset > 0) {\r\n while (iteration < roundOffset) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\r\n iteration += 1;\r\n }\r\n if (offsetModulo) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\r\n iteration += offsetModulo;\r\n }\r\n } else if (offset < 0) {\r\n while (iteration > roundOffset) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\r\n iteration -= 1;\r\n }\r\n if (offsetModulo) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\r\n iteration -= offsetModulo;\r\n }\r\n }\r\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\r\n dir = this.data.m === 1 ? 1 : -1;\r\n cont = this._currentCopies;\r\n var j;\r\n var jLen;\r\n while (cont) {\r\n items = this.elemsData[i].it;\r\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\r\n jLen = itemsTransform.length;\r\n items[items.length - 1].transform.mProps._mdf = true;\r\n items[items.length - 1].transform.op._mdf = true;\r\n items[items.length - 1].transform.op.v = this._currentCopies === 1\r\n ? this.so.v\r\n : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\r\n\r\n if (iteration !== 0) {\r\n if ((i !== 0 && dir === 1) || (i !== this._currentCopies - 1 && dir === -1)) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\r\n }\r\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\r\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\r\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsTransform[j] = this.matrix.props[j];\r\n }\r\n this.matrix.reset();\r\n } else {\r\n this.matrix.reset();\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsTransform[j] = this.matrix.props[j];\r\n }\r\n }\r\n iteration += 1;\r\n cont -= 1;\r\n i += dir;\r\n }\r\n } else {\r\n cont = this._currentCopies;\r\n i = 0;\r\n dir = 1;\r\n while (cont) {\r\n items = this.elemsData[i].it;\r\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\r\n items[items.length - 1].transform.mProps._mdf = false;\r\n items[items.length - 1].transform.op._mdf = false;\r\n cont -= 1;\r\n i += dir;\r\n }\r\n }\r\n return hasReloaded;\r\n};\r\n\r\nRepeaterModifier.prototype.addShape = function () {};\r\n\r\nShapeModifiers.registerModifier('rp', RepeaterModifier);\r\n\r\n/* global createSizedArray, shapePool */\r\n\r\nfunction ShapeCollection() {\r\n this._length = 0;\r\n this._maxLength = 4;\r\n this.shapes = createSizedArray(this._maxLength);\r\n}\r\n\r\nShapeCollection.prototype.addShape = function (shapeData) {\r\n if (this._length === this._maxLength) {\r\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\r\n this._maxLength *= 2;\r\n }\r\n this.shapes[this._length] = shapeData;\r\n this._length += 1;\r\n};\r\n\r\nShapeCollection.prototype.releaseShapes = function () {\r\n var i;\r\n for (i = 0; i < this._length; i += 1) {\r\n shapePool.release(this.shapes[i]);\r\n }\r\n this._length = 0;\r\n};\r\n\r\n/* global createSizedArray, createTypedArray, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction DashProperty(elem, data, renderer, container) {\r\n this.elem = elem;\r\n this.frameId = -1;\r\n this.dataProps = createSizedArray(data.length);\r\n this.renderer = renderer;\r\n this.k = false;\r\n this.dashStr = '';\r\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\r\n this.dashoffset = createTypedArray('float32', 1);\r\n this.initDynamicPropertyContainer(container);\r\n var i;\r\n var len = data.length || 0;\r\n var prop;\r\n for (i = 0; i < len; i += 1) {\r\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\r\n this.k = prop.k || this.k;\r\n this.dataProps[i] = { n: data[i].n, p: prop };\r\n }\r\n if (!this.k) {\r\n this.getValue(true);\r\n }\r\n this._isAnimated = this.k;\r\n}\r\n\r\nDashProperty.prototype.getValue = function (forceRender) {\r\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n this._mdf = this._mdf || forceRender;\r\n if (this._mdf) {\r\n var i = 0;\r\n var len = this.dataProps.length;\r\n if (this.renderer === 'svg') {\r\n this.dashStr = '';\r\n }\r\n for (i = 0; i < len; i += 1) {\r\n if (this.dataProps[i].n !== 'o') {\r\n if (this.renderer === 'svg') {\r\n this.dashStr += ' ' + this.dataProps[i].p.v;\r\n } else {\r\n this.dashArray[i] = this.dataProps[i].p.v;\r\n }\r\n } else {\r\n this.dashoffset[0] = this.dataProps[i].p.v;\r\n }\r\n }\r\n }\r\n};\r\nextendPrototype([DynamicPropertyContainer], DashProperty);\r\n\r\n/* global createTypedArray, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\nfunction GradientProperty(elem, data, container) {\r\n this.data = data;\r\n this.c = createTypedArray('uint8c', data.p * 4);\r\n var cLength = data.k.k[0].s ? (data.k.k[0].s.length - data.p * 4) : data.k.k.length - data.p * 4;\r\n this.o = createTypedArray('float32', cLength);\r\n this._cmdf = false;\r\n this._omdf = false;\r\n this._collapsable = this.checkCollapsable();\r\n this._hasOpacity = cLength;\r\n this.initDynamicPropertyContainer(container);\r\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\r\n this.k = this.prop.k;\r\n this.getValue(true);\r\n}\r\n\r\nGradientProperty.prototype.comparePoints = function (values, points) {\r\n var i = 0;\r\n var len = this.o.length / 2;\r\n var diff;\r\n while (i < len) {\r\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\r\n if (diff > 0.01) {\r\n return false;\r\n }\r\n i += 1;\r\n }\r\n return true;\r\n};\r\n\r\nGradientProperty.prototype.checkCollapsable = function () {\r\n if (this.o.length / 2 !== this.c.length / 4) {\r\n return false;\r\n }\r\n if (this.data.k.k[0].s) {\r\n var i = 0;\r\n var len = this.data.k.k.length;\r\n while (i < len) {\r\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\r\n return false;\r\n }\r\n i += 1;\r\n }\r\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\r\n return false;\r\n }\r\n return true;\r\n};\r\n\r\nGradientProperty.prototype.getValue = function (forceRender) {\r\n this.prop.getValue();\r\n this._mdf = false;\r\n this._cmdf = false;\r\n this._omdf = false;\r\n if (this.prop._mdf || forceRender) {\r\n var i;\r\n var len = this.data.p * 4;\r\n var mult;\r\n var val;\r\n for (i = 0; i < len; i += 1) {\r\n mult = i % 4 === 0 ? 100 : 255;\r\n val = Math.round(this.prop.v[i] * mult);\r\n if (this.c[i] !== val) {\r\n this.c[i] = val;\r\n this._cmdf = !forceRender;\r\n }\r\n }\r\n if (this.o.length) {\r\n len = this.prop.v.length;\r\n for (i = this.data.p * 4; i < len; i += 1) {\r\n mult = i % 2 === 0 ? 100 : 1;\r\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\r\n if (this.o[i - this.data.p * 4] !== val) {\r\n this.o[i - this.data.p * 4] = val;\r\n this._omdf = !forceRender;\r\n }\r\n }\r\n }\r\n this._mdf = !forceRender;\r\n }\r\n};\r\n\r\nextendPrototype([DynamicPropertyContainer], GradientProperty);\r\n\r\n/* exported buildShapeString */\r\n\r\nvar buildShapeString = function (pathNodes, length, closed, mat) {\r\n if (length === 0) {\r\n return '';\r\n }\r\n var _o = pathNodes.o;\r\n var _i = pathNodes.i;\r\n var _v = pathNodes.v;\r\n var i;\r\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\r\n for (i = 1; i < length; i += 1) {\r\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\r\n }\r\n if (closed && length) {\r\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\r\n shapeString += 'z';\r\n }\r\n return shapeString;\r\n};\r\n\r\n/* global Howl */\r\n/* exported audioControllerFactory */\r\n\r\nvar audioControllerFactory = (function () {\r\n function AudioController(audioFactory) {\r\n this.audios = [];\r\n this.audioFactory = audioFactory;\r\n this._volume = 1;\r\n this._isMuted = false;\r\n }\r\n\r\n AudioController.prototype = {\r\n addAudio: function (audio) {\r\n this.audios.push(audio);\r\n },\r\n pause: function () {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].pause();\r\n }\r\n },\r\n resume: function () {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].resume();\r\n }\r\n },\r\n setRate: function (rateValue) {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].setRate(rateValue);\r\n }\r\n },\r\n createAudio: function (assetPath) {\r\n if (this.audioFactory) {\r\n return this.audioFactory(assetPath);\r\n } if (Howl) {\r\n return new Howl({\r\n src: [assetPath],\r\n });\r\n }\r\n return {\r\n isPlaying: false,\r\n play: function () { this.isPlaying = true; },\r\n seek: function () { this.isPlaying = false; },\r\n playing: function () {},\r\n rate: function () {},\r\n setVolume: function () {},\r\n };\r\n },\r\n setAudioFactory: function (audioFactory) {\r\n this.audioFactory = audioFactory;\r\n },\r\n setVolume: function (value) {\r\n this._volume = value;\r\n this._updateVolume();\r\n },\r\n mute: function () {\r\n this._isMuted = true;\r\n this._updateVolume();\r\n },\r\n unmute: function () {\r\n this._isMuted = false;\r\n this._updateVolume();\r\n },\r\n getVolume: function () {\r\n return this._volume;\r\n },\r\n _updateVolume: function () {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\r\n }\r\n },\r\n };\r\n\r\n return function () {\r\n return new AudioController();\r\n };\r\n}());\r\n\r\n/* global createTag, createNS, isSafari, dataManager */\r\n/* exported ImagePreloader */\r\n\r\nvar ImagePreloader = (function () {\r\n var proxyImage = (function () {\r\n var canvas = createTag('canvas');\r\n canvas.width = 1;\r\n canvas.height = 1;\r\n var ctx = canvas.getContext('2d');\r\n ctx.fillStyle = 'rgba(0,0,0,0)';\r\n ctx.fillRect(0, 0, 1, 1);\r\n return canvas;\r\n }());\r\n\r\n function imageLoaded() {\r\n this.loadedAssets += 1;\r\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\r\n if (this.imagesLoadedCb) {\r\n this.imagesLoadedCb(null);\r\n }\r\n }\r\n }\r\n function footageLoaded() {\r\n this.loadedFootagesCount += 1;\r\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\r\n if (this.imagesLoadedCb) {\r\n this.imagesLoadedCb(null);\r\n }\r\n }\r\n }\r\n\r\n function getAssetsPath(assetData, assetsPath, originalPath) {\r\n var path = '';\r\n if (assetData.e) {\r\n path = assetData.p;\r\n } else if (assetsPath) {\r\n var imagePath = assetData.p;\r\n if (imagePath.indexOf('images/') !== -1) {\r\n imagePath = imagePath.split('/')[1];\r\n }\r\n path = assetsPath + imagePath;\r\n } else {\r\n path = originalPath;\r\n path += assetData.u ? assetData.u : '';\r\n path += assetData.p;\r\n }\r\n return path;\r\n }\r\n\r\n function testImageLoaded(img) {\r\n var _count = 0;\r\n var intervalId = setInterval(function () {\r\n var box = img.getBBox();\r\n if (box.width || _count > 500) {\r\n this._imageLoaded();\r\n clearInterval(intervalId);\r\n }\r\n _count += 1;\r\n }.bind(this), 50);\r\n }\r\n\r\n function createImageData(assetData) {\r\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\r\n var img = createNS('image');\r\n if (isSafari) {\r\n this.testImageLoaded(img);\r\n } else {\r\n img.addEventListener('load', this._imageLoaded, false);\r\n }\r\n img.addEventListener('error', function () {\r\n ob.img = proxyImage;\r\n this._imageLoaded();\r\n }.bind(this), false);\r\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\r\n if (this._elementHelper.append) {\r\n this._elementHelper.append(img);\r\n } else {\r\n this._elementHelper.appendChild(img);\r\n }\r\n var ob = {\r\n img: img,\r\n assetData: assetData,\r\n };\r\n return ob;\r\n }\r\n\r\n function createImgData(assetData) {\r\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\r\n var img = createTag('img');\r\n img.crossOrigin = 'anonymous';\r\n img.addEventListener('load', this._imageLoaded, false);\r\n img.addEventListener('error', function () {\r\n ob.img = proxyImage;\r\n this._imageLoaded();\r\n }.bind(this), false);\r\n img.src = path;\r\n var ob = {\r\n img: img,\r\n assetData: assetData,\r\n };\r\n return ob;\r\n }\r\n\r\n function createFootageData(data) {\r\n var ob = {\r\n assetData: data,\r\n };\r\n var path = getAssetsPath(data, this.assetsPath, this.path);\r\n dataManager.loadData(path, function (footageData) {\r\n ob.img = footageData;\r\n this._footageLoaded();\r\n }.bind(this), function () {\r\n ob.img = {};\r\n this._footageLoaded();\r\n }.bind(this));\r\n return ob;\r\n }\r\n\r\n function loadAssets(assets, cb) {\r\n this.imagesLoadedCb = cb;\r\n var i;\r\n var len = assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (!assets[i].layers) {\r\n if (!assets[i].t || assets[i].t === 'seq') {\r\n this.totalImages += 1;\r\n this.images.push(this._createImageData(assets[i]));\r\n } else if (assets[i].t === 3) {\r\n this.totalFootages += 1;\r\n this.images.push(this.createFootageData(assets[i]));\r\n }\r\n }\r\n }\r\n }\r\n\r\n function setPath(path) {\r\n this.path = path || '';\r\n }\r\n\r\n function setAssetsPath(path) {\r\n this.assetsPath = path || '';\r\n }\r\n\r\n function getAsset(assetData) {\r\n var i = 0;\r\n var len = this.images.length;\r\n while (i < len) {\r\n if (this.images[i].assetData === assetData) {\r\n return this.images[i].img;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n\r\n function destroy() {\r\n this.imagesLoadedCb = null;\r\n this.images.length = 0;\r\n }\r\n\r\n function loadedImages() {\r\n return this.totalImages === this.loadedAssets;\r\n }\r\n\r\n function loadedFootages() {\r\n return this.totalFootages === this.loadedFootagesCount;\r\n }\r\n\r\n function setCacheType(type, elementHelper) {\r\n if (type === 'svg') {\r\n this._elementHelper = elementHelper;\r\n this._createImageData = this.createImageData.bind(this);\r\n } else {\r\n this._createImageData = this.createImgData.bind(this);\r\n }\r\n }\r\n\r\n function ImagePreloaderFactory() {\r\n this._imageLoaded = imageLoaded.bind(this);\r\n this._footageLoaded = footageLoaded.bind(this);\r\n this.testImageLoaded = testImageLoaded.bind(this);\r\n this.createFootageData = createFootageData.bind(this);\r\n this.assetsPath = '';\r\n this.path = '';\r\n this.totalImages = 0;\r\n this.totalFootages = 0;\r\n this.loadedAssets = 0;\r\n this.loadedFootagesCount = 0;\r\n this.imagesLoadedCb = null;\r\n this.images = [];\r\n }\r\n\r\n ImagePreloaderFactory.prototype = {\r\n loadAssets: loadAssets,\r\n setAssetsPath: setAssetsPath,\r\n setPath: setPath,\r\n loadedImages: loadedImages,\r\n loadedFootages: loadedFootages,\r\n destroy: destroy,\r\n getAsset: getAsset,\r\n createImgData: createImgData,\r\n createImageData: createImageData,\r\n imageLoaded: imageLoaded,\r\n footageLoaded: footageLoaded,\r\n setCacheType: setCacheType,\r\n };\r\n\r\n return ImagePreloaderFactory;\r\n}());\r\n\r\n/* exported featureSupport */\r\n\r\nvar featureSupport = (function () {\r\n var ob = {\r\n maskType: true,\r\n };\r\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\r\n ob.maskType = false;\r\n }\r\n return ob;\r\n}());\r\n\r\n/* global createNS */\r\n/* exported filtersFactory */\r\n\r\nvar filtersFactory = (function () {\r\n var ob = {};\r\n ob.createFilter = createFilter;\r\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\r\n\r\n function createFilter(filId, skipCoordinates) {\r\n var fil = createNS('filter');\r\n fil.setAttribute('id', filId);\r\n if (skipCoordinates !== true) {\r\n fil.setAttribute('filterUnits', 'objectBoundingBox');\r\n fil.setAttribute('x', '0%');\r\n fil.setAttribute('y', '0%');\r\n fil.setAttribute('width', '100%');\r\n fil.setAttribute('height', '100%');\r\n }\r\n return fil;\r\n }\r\n\r\n function createAlphaToLuminanceFilter() {\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\r\n return feColorMatrix;\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* global createSizedArray, PropertyFactory, TextAnimatorDataProperty, bez, addHueToRGB,\r\n addSaturationToRGB, addBrightnessToRGB, LetterProps, Matrix, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction TextAnimatorProperty(textData, renderType, elem) {\r\n this._isFirstFrame = true;\r\n this._hasMaskedPath = false;\r\n this._frameId = -1;\r\n this._textData = textData;\r\n this._renderType = renderType;\r\n this._elem = elem;\r\n this._animatorsData = createSizedArray(this._textData.a.length);\r\n this._pathData = {};\r\n this._moreOptions = {\r\n alignment: {},\r\n };\r\n this.renderedLetters = [];\r\n this.lettersChangedFlag = false;\r\n this.initDynamicPropertyContainer(elem);\r\n}\r\n\r\nTextAnimatorProperty.prototype.searchProperties = function () {\r\n var i;\r\n var len = this._textData.a.length;\r\n var animatorProps;\r\n var getProp = PropertyFactory.getProp;\r\n for (i = 0; i < len; i += 1) {\r\n animatorProps = this._textData.a[i];\r\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\r\n }\r\n if (this._textData.p && 'm' in this._textData.p) {\r\n this._pathData = {\r\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\r\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\r\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\r\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\r\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\r\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m),\r\n };\r\n this._hasMaskedPath = true;\r\n } else {\r\n this._hasMaskedPath = false;\r\n }\r\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\r\n};\r\n\r\nTextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\r\n this.lettersChangedFlag = lettersChangedFlag;\r\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\r\n return;\r\n }\r\n this._isFirstFrame = false;\r\n var alignment = this._moreOptions.alignment.v;\r\n var animators = this._animatorsData;\r\n var textData = this._textData;\r\n var matrixHelper = this.mHelper;\r\n var renderType = this._renderType;\r\n var renderedLettersCount = this.renderedLetters.length;\r\n var xPos;\r\n var yPos;\r\n var i;\r\n var len;\r\n var letters = documentData.l;\r\n var pathInfo;\r\n var currentLength;\r\n var currentPoint;\r\n var segmentLength;\r\n var flag;\r\n var pointInd;\r\n var segmentInd;\r\n var prevPoint;\r\n var points;\r\n var segments;\r\n var partialLength;\r\n var totalLength;\r\n var perc;\r\n var tanAngle;\r\n var mask;\r\n if (this._hasMaskedPath) {\r\n mask = this._pathData.m;\r\n if (!this._pathData.n || this._pathData._mdf) {\r\n var paths = mask.v;\r\n if (this._pathData.r.v) {\r\n paths = paths.reverse();\r\n }\r\n // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\r\n pathInfo = {\r\n tLength: 0,\r\n segments: [],\r\n };\r\n len = paths._length - 1;\r\n var bezierData;\r\n totalLength = 0;\r\n for (i = 0; i < len; i += 1) {\r\n bezierData = bez.buildBezierData(paths.v[i],\r\n paths.v[i + 1],\r\n [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]],\r\n [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\r\n pathInfo.tLength += bezierData.segmentLength;\r\n pathInfo.segments.push(bezierData);\r\n totalLength += bezierData.segmentLength;\r\n }\r\n i = len;\r\n if (mask.v.c) {\r\n bezierData = bez.buildBezierData(paths.v[i],\r\n paths.v[0],\r\n [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]],\r\n [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\r\n pathInfo.tLength += bezierData.segmentLength;\r\n pathInfo.segments.push(bezierData);\r\n totalLength += bezierData.segmentLength;\r\n }\r\n this._pathData.pi = pathInfo;\r\n }\r\n pathInfo = this._pathData.pi;\r\n\r\n currentLength = this._pathData.f.v;\r\n segmentInd = 0;\r\n pointInd = 1;\r\n segmentLength = 0;\r\n flag = true;\r\n segments = pathInfo.segments;\r\n if (currentLength < 0 && mask.v.c) {\r\n if (pathInfo.tLength < Math.abs(currentLength)) {\r\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\r\n }\r\n segmentInd = segments.length - 1;\r\n points = segments[segmentInd].points;\r\n pointInd = points.length - 1;\r\n while (currentLength < 0) {\r\n currentLength += points[pointInd].partialLength;\r\n pointInd -= 1;\r\n if (pointInd < 0) {\r\n segmentInd -= 1;\r\n points = segments[segmentInd].points;\r\n pointInd = points.length - 1;\r\n }\r\n }\r\n }\r\n points = segments[segmentInd].points;\r\n prevPoint = points[pointInd - 1];\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n }\r\n\r\n len = letters.length;\r\n xPos = 0;\r\n yPos = 0;\r\n var yOff = documentData.finalSize * 1.2 * 0.714;\r\n var firstLine = true;\r\n var animatorProps;\r\n var animatorSelector;\r\n var j;\r\n var jLen;\r\n var letterValue;\r\n\r\n jLen = animators.length;\r\n\r\n var mult;\r\n var ind = -1;\r\n var offf;\r\n var xPathPos;\r\n var yPathPos;\r\n var initPathPos = currentLength;\r\n var initSegmentInd = segmentInd;\r\n var initPointInd = pointInd;\r\n var currentLine = -1;\r\n var elemOpacity;\r\n var sc;\r\n var sw;\r\n var fc;\r\n var k;\r\n var letterSw;\r\n var letterSc;\r\n var letterFc;\r\n var letterM = '';\r\n var letterP = this.defaultPropsArray;\r\n var letterO;\r\n\r\n //\r\n if (documentData.j === 2 || documentData.j === 1) {\r\n var animatorJustifyOffset = 0;\r\n var animatorFirstCharOffset = 0;\r\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\r\n var lastIndex = 0;\r\n var isNewLine = true;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (letters[i].n) {\r\n if (animatorJustifyOffset) {\r\n animatorJustifyOffset += animatorFirstCharOffset;\r\n }\r\n while (lastIndex < i) {\r\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\r\n lastIndex += 1;\r\n }\r\n animatorJustifyOffset = 0;\r\n isNewLine = true;\r\n } else {\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.t.propType) {\r\n if (isNewLine && documentData.j === 2) {\r\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\r\n }\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\r\n } else {\r\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\r\n }\r\n }\r\n }\r\n isNewLine = false;\r\n }\r\n }\r\n if (animatorJustifyOffset) {\r\n animatorJustifyOffset += animatorFirstCharOffset;\r\n }\r\n while (lastIndex < i) {\r\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\r\n lastIndex += 1;\r\n }\r\n }\r\n //\r\n\r\n for (i = 0; i < len; i += 1) {\r\n matrixHelper.reset();\r\n elemOpacity = 1;\r\n if (letters[i].n) {\r\n xPos = 0;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n currentLength = initPathPos;\r\n firstLine = false;\r\n if (this._hasMaskedPath) {\r\n segmentInd = initSegmentInd;\r\n pointInd = initPointInd;\r\n points = segments[segmentInd].points;\r\n prevPoint = points[pointInd - 1];\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n segmentLength = 0;\r\n }\r\n letterM = '';\r\n letterFc = '';\r\n letterSw = '';\r\n letterO = '';\r\n letterP = this.defaultPropsArray;\r\n } else {\r\n if (this._hasMaskedPath) {\r\n if (currentLine !== letters[i].line) {\r\n switch (documentData.j) {\r\n case 1:\r\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\r\n break;\r\n case 2:\r\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\r\n break;\r\n default:\r\n break;\r\n }\r\n currentLine = letters[i].line;\r\n }\r\n if (ind !== letters[i].ind) {\r\n if (letters[ind]) {\r\n currentLength += letters[ind].extra;\r\n }\r\n currentLength += letters[i].an / 2;\r\n ind = letters[i].ind;\r\n }\r\n currentLength += (alignment[0] * letters[i].an) * 0.005;\r\n var animatorOffset = 0;\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.p.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n animatorOffset += animatorProps.p.v[0] * mult[0];\r\n } else {\r\n animatorOffset += animatorProps.p.v[0] * mult;\r\n }\r\n }\r\n if (animatorProps.a.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n animatorOffset += animatorProps.a.v[0] * mult[0];\r\n } else {\r\n animatorOffset += animatorProps.a.v[0] * mult;\r\n }\r\n }\r\n }\r\n flag = true;\r\n // Force alignment only works with a single line for now\r\n if (this._pathData.a.v) {\r\n currentLength = letters[0].an * 0.5 + ((totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind) / (len - 1);\r\n currentLength += this._pathData.f.v;\r\n }\r\n while (flag) {\r\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\r\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\r\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\r\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\r\n matrixHelper.translate((-alignment[0] * letters[i].an) * 0.005, -(alignment[1] * yOff) * 0.01);\r\n flag = false;\r\n } else if (points) {\r\n segmentLength += currentPoint.partialLength;\r\n pointInd += 1;\r\n if (pointInd >= points.length) {\r\n pointInd = 0;\r\n segmentInd += 1;\r\n if (!segments[segmentInd]) {\r\n if (mask.v.c) {\r\n pointInd = 0;\r\n segmentInd = 0;\r\n points = segments[segmentInd].points;\r\n } else {\r\n segmentLength -= currentPoint.partialLength;\r\n points = null;\r\n }\r\n } else {\r\n points = segments[segmentInd].points;\r\n }\r\n }\r\n if (points) {\r\n prevPoint = currentPoint;\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n }\r\n }\r\n }\r\n offf = letters[i].an / 2 - letters[i].add;\r\n matrixHelper.translate(-offf, 0, 0);\r\n } else {\r\n offf = letters[i].an / 2 - letters[i].add;\r\n matrixHelper.translate(-offf, 0, 0);\r\n\r\n // Grouping alignment\r\n matrixHelper.translate((-alignment[0] * letters[i].an) * 0.005, (-alignment[1] * yOff) * 0.01, 0);\r\n }\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.t.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\r\n if (xPos !== 0 || documentData.j !== 0) {\r\n if (this._hasMaskedPath) {\r\n if (mult.length) {\r\n currentLength += animatorProps.t.v * mult[0];\r\n } else {\r\n currentLength += animatorProps.t.v * mult;\r\n }\r\n } else if (mult.length) {\r\n xPos += animatorProps.t.v * mult[0];\r\n } else {\r\n xPos += animatorProps.t.v * mult;\r\n }\r\n }\r\n }\r\n }\r\n if (documentData.strokeWidthAnim) {\r\n sw = documentData.sw || 0;\r\n }\r\n if (documentData.strokeColorAnim) {\r\n if (documentData.sc) {\r\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\r\n } else {\r\n sc = [0, 0, 0];\r\n }\r\n }\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\r\n }\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.a.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n if (mult.length) {\r\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\r\n } else {\r\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\r\n }\r\n }\r\n }\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.s.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n matrixHelper.scale(1 + ((animatorProps.s.v[0] - 1) * mult[0]), 1 + ((animatorProps.s.v[1] - 1) * mult[1]), 1);\r\n } else {\r\n matrixHelper.scale(1 + ((animatorProps.s.v[0] - 1) * mult), 1 + ((animatorProps.s.v[1] - 1) * mult), 1);\r\n }\r\n }\r\n }\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (animatorProps.sk.propType) {\r\n if (mult.length) {\r\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\r\n } else {\r\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\r\n }\r\n }\r\n if (animatorProps.r.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\r\n } else {\r\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\r\n }\r\n }\r\n if (animatorProps.ry.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\r\n } else {\r\n matrixHelper.rotateY(animatorProps.ry.v * mult);\r\n }\r\n }\r\n if (animatorProps.rx.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\r\n } else {\r\n matrixHelper.rotateX(animatorProps.rx.v * mult);\r\n }\r\n }\r\n if (animatorProps.o.propType) {\r\n if (mult.length) {\r\n elemOpacity += ((animatorProps.o.v) * mult[0] - elemOpacity) * mult[0];\r\n } else {\r\n elemOpacity += ((animatorProps.o.v) * mult - elemOpacity) * mult;\r\n }\r\n }\r\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\r\n if (mult.length) {\r\n sw += animatorProps.sw.v * mult[0];\r\n } else {\r\n sw += animatorProps.sw.v * mult;\r\n }\r\n }\r\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\r\n for (k = 0; k < 3; k += 1) {\r\n if (mult.length) {\r\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\r\n } else {\r\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\r\n }\r\n }\r\n }\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n if (animatorProps.fc.propType) {\r\n for (k = 0; k < 3; k += 1) {\r\n if (mult.length) {\r\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\r\n } else {\r\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\r\n }\r\n }\r\n }\r\n if (animatorProps.fh.propType) {\r\n if (mult.length) {\r\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\r\n } else {\r\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\r\n }\r\n }\r\n if (animatorProps.fs.propType) {\r\n if (mult.length) {\r\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\r\n } else {\r\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\r\n }\r\n }\r\n if (animatorProps.fb.propType) {\r\n if (mult.length) {\r\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\r\n } else {\r\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n\r\n if (animatorProps.p.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (this._hasMaskedPath) {\r\n if (mult.length) {\r\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\r\n } else {\r\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\r\n }\r\n } else if (mult.length) {\r\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\r\n } else {\r\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\r\n }\r\n }\r\n }\r\n if (documentData.strokeWidthAnim) {\r\n letterSw = sw < 0 ? 0 : sw;\r\n }\r\n if (documentData.strokeColorAnim) {\r\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\r\n }\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\r\n }\r\n\r\n if (this._hasMaskedPath) {\r\n matrixHelper.translate(0, -documentData.ls);\r\n\r\n matrixHelper.translate(0, (alignment[1] * yOff) * 0.01 + yPos, 0);\r\n if (this._pathData.p.v) {\r\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\r\n var rot = (Math.atan(tanAngle) * 180) / Math.PI;\r\n if (currentPoint.point[0] < prevPoint.point[0]) {\r\n rot += 180;\r\n }\r\n matrixHelper.rotate((-rot * Math.PI) / 180);\r\n }\r\n matrixHelper.translate(xPathPos, yPathPos, 0);\r\n currentLength -= (alignment[0] * letters[i].an) * 0.005;\r\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\r\n currentLength += letters[i].an / 2;\r\n currentLength += (documentData.tr * 0.001) * documentData.finalSize;\r\n }\r\n } else {\r\n matrixHelper.translate(xPos, yPos, 0);\r\n\r\n if (documentData.ps) {\r\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\r\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\r\n }\r\n switch (documentData.j) {\r\n case 1:\r\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\r\n break;\r\n case 2:\r\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\r\n break;\r\n default:\r\n break;\r\n }\r\n matrixHelper.translate(0, -documentData.ls);\r\n matrixHelper.translate(offf, 0, 0);\r\n matrixHelper.translate((alignment[0] * letters[i].an) * 0.005, (alignment[1] * yOff) * 0.01, 0);\r\n xPos += letters[i].l + (documentData.tr * 0.001) * documentData.finalSize;\r\n }\r\n if (renderType === 'html') {\r\n letterM = matrixHelper.toCSS();\r\n } else if (renderType === 'svg') {\r\n letterM = matrixHelper.to2dCSS();\r\n } else {\r\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\r\n }\r\n letterO = elemOpacity;\r\n }\r\n\r\n if (renderedLettersCount <= i) {\r\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\r\n this.renderedLetters.push(letterValue);\r\n renderedLettersCount += 1;\r\n this.lettersChangedFlag = true;\r\n } else {\r\n letterValue = this.renderedLetters[i];\r\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\r\n }\r\n }\r\n};\r\n\r\nTextAnimatorProperty.prototype.getValue = function () {\r\n if (this._elem.globalData.frameId === this._frameId) {\r\n return;\r\n }\r\n this._frameId = this._elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n};\r\n\r\nTextAnimatorProperty.prototype.mHelper = new Matrix();\r\nTextAnimatorProperty.prototype.defaultPropsArray = [];\r\nextendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\r\n\r\n/* global PropertyFactory, degToRads, TextSelectorProp */\r\n/* exported TextAnimatorDataProperty */\r\n\r\nfunction TextAnimatorDataProperty(elem, animatorProps, container) {\r\n var defaultData = { propType: false };\r\n var getProp = PropertyFactory.getProp;\r\n var textAnimatorAnimatables = animatorProps.a;\r\n this.a = {\r\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\r\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\r\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\r\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\r\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\r\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\r\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\r\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\r\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\r\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\r\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\r\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\r\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\r\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\r\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\r\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData,\r\n };\r\n\r\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\r\n this.s.t = animatorProps.s.t;\r\n}\r\n\r\nfunction LetterProps(o, sw, sc, fc, m, p) {\r\n this.o = o;\r\n this.sw = sw;\r\n this.sc = sc;\r\n this.fc = fc;\r\n this.m = m;\r\n this.p = p;\r\n this._mdf = {\r\n o: true,\r\n sw: !!sw,\r\n sc: !!sc,\r\n fc: !!fc,\r\n m: true,\r\n p: true,\r\n };\r\n}\r\n\r\nLetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\r\n this._mdf.o = false;\r\n this._mdf.sw = false;\r\n this._mdf.sc = false;\r\n this._mdf.fc = false;\r\n this._mdf.m = false;\r\n this._mdf.p = false;\r\n var updated = false;\r\n\r\n if (this.o !== o) {\r\n this.o = o;\r\n this._mdf.o = true;\r\n updated = true;\r\n }\r\n if (this.sw !== sw) {\r\n this.sw = sw;\r\n this._mdf.sw = true;\r\n updated = true;\r\n }\r\n if (this.sc !== sc) {\r\n this.sc = sc;\r\n this._mdf.sc = true;\r\n updated = true;\r\n }\r\n if (this.fc !== fc) {\r\n this.fc = fc;\r\n this._mdf.fc = true;\r\n updated = true;\r\n }\r\n if (this.m !== m) {\r\n this.m = m;\r\n this._mdf.m = true;\r\n updated = true;\r\n }\r\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\r\n this.p = p;\r\n this._mdf.p = true;\r\n updated = true;\r\n }\r\n return updated;\r\n};\r\n\r\n/* global FontManager, initialDefaultFrame, getFontProperties */\r\n/* exported TextProperty */\r\n\r\nfunction TextProperty(elem, data) {\r\n this._frameId = initialDefaultFrame;\r\n this.pv = '';\r\n this.v = '';\r\n this.kf = false;\r\n this._isFirstFrame = true;\r\n this._mdf = false;\r\n this.data = data;\r\n this.elem = elem;\r\n this.comp = this.elem.comp;\r\n this.keysIndex = 0;\r\n this.canResize = false;\r\n this.minimumFontSize = 1;\r\n this.effectsSequence = [];\r\n this.currentData = {\r\n ascent: 0,\r\n boxWidth: this.defaultBoxWidth,\r\n f: '',\r\n fStyle: '',\r\n fWeight: '',\r\n fc: '',\r\n j: '',\r\n justifyOffset: '',\r\n l: [],\r\n lh: 0,\r\n lineWidths: [],\r\n ls: '',\r\n of: '',\r\n s: '',\r\n sc: '',\r\n sw: 0,\r\n t: 0,\r\n tr: 0,\r\n sz: 0,\r\n ps: null,\r\n fillColorAnim: false,\r\n strokeColorAnim: false,\r\n strokeWidthAnim: false,\r\n yOffset: 0,\r\n finalSize: 0,\r\n finalText: [],\r\n finalLineHeight: 0,\r\n __complete: false,\r\n\r\n };\r\n this.copyData(this.currentData, this.data.d.k[0].s);\r\n\r\n if (!this.searchProperty()) {\r\n this.completeTextData(this.currentData);\r\n }\r\n}\r\n\r\nTextProperty.prototype.defaultBoxWidth = [0, 0];\r\n\r\nTextProperty.prototype.copyData = function (obj, data) {\r\n for (var s in data) {\r\n if (Object.prototype.hasOwnProperty.call(data, s)) {\r\n obj[s] = data[s];\r\n }\r\n }\r\n return obj;\r\n};\r\n\r\nTextProperty.prototype.setCurrentData = function (data) {\r\n if (!data.__complete) {\r\n this.completeTextData(data);\r\n }\r\n this.currentData = data;\r\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\r\n this._mdf = true;\r\n};\r\n\r\nTextProperty.prototype.searchProperty = function () {\r\n return this.searchKeyframes();\r\n};\r\n\r\nTextProperty.prototype.searchKeyframes = function () {\r\n this.kf = this.data.d.k.length > 1;\r\n if (this.kf) {\r\n this.addEffect(this.getKeyframeValue.bind(this));\r\n }\r\n return this.kf;\r\n};\r\n\r\nTextProperty.prototype.addEffect = function (effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nTextProperty.prototype.getValue = function (_finalValue) {\r\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\r\n return;\r\n }\r\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\r\n var currentValue = this.currentData;\r\n var currentIndex = this.keysIndex;\r\n if (this.lock) {\r\n this.setCurrentData(this.currentData);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = false;\r\n var i; var\r\n len = this.effectsSequence.length;\r\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\r\n for (i = 0; i < len; i += 1) {\r\n // Checking if index changed to prevent creating a new object every time the expression updates.\r\n if (currentIndex !== this.keysIndex) {\r\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\r\n } else {\r\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\r\n }\r\n }\r\n if (currentValue !== finalValue) {\r\n this.setCurrentData(finalValue);\r\n }\r\n this.v = this.currentData;\r\n this.pv = this.v;\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n};\r\n\r\nTextProperty.prototype.getKeyframeValue = function () {\r\n var textKeys = this.data.d.k;\r\n var frameNum = this.elem.comp.renderedFrame;\r\n var i = 0; var\r\n len = textKeys.length;\r\n while (i <= len - 1) {\r\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\r\n break;\r\n }\r\n i += 1;\r\n }\r\n if (this.keysIndex !== i) {\r\n this.keysIndex = i;\r\n }\r\n return this.data.d.k[this.keysIndex].s;\r\n};\r\n\r\nTextProperty.prototype.buildFinalText = function (text) {\r\n var charactersArray = [];\r\n var i = 0;\r\n var len = text.length;\r\n var charCode;\r\n var secondCharCode;\r\n var shouldCombine = false;\r\n while (i < len) {\r\n charCode = text.charCodeAt(i);\r\n if (FontManager.isCombinedCharacter(charCode)) {\r\n charactersArray[charactersArray.length - 1] += text.charAt(i);\r\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\r\n secondCharCode = text.charCodeAt(i + 1);\r\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\r\n if (shouldCombine || FontManager.isModifier(charCode, secondCharCode)) {\r\n charactersArray[charactersArray.length - 1] += text.substr(i, 2);\r\n shouldCombine = false;\r\n } else {\r\n charactersArray.push(text.substr(i, 2));\r\n }\r\n i += 1;\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n } else if (charCode > 0xDBFF) {\r\n secondCharCode = text.charCodeAt(i + 1);\r\n if (FontManager.isZeroWidthJoiner(charCode, secondCharCode)) {\r\n shouldCombine = true;\r\n charactersArray[charactersArray.length - 1] += text.substr(i, 2);\r\n i += 1;\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\r\n charactersArray[charactersArray.length - 1] += text.charAt(i);\r\n shouldCombine = true;\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n i += 1;\r\n }\r\n return charactersArray;\r\n};\r\n\r\nTextProperty.prototype.completeTextData = function (documentData) {\r\n documentData.__complete = true;\r\n var fontManager = this.elem.globalData.fontManager;\r\n var data = this.data;\r\n var letters = [];\r\n var i; var\r\n len;\r\n var newLineFlag; var index = 0; var\r\n val;\r\n var anchorGrouping = data.m.g;\r\n var currentSize = 0; var currentPos = 0; var currentLine = 0; var\r\n lineWidths = [];\r\n var lineWidth = 0;\r\n var maxLineWidth = 0;\r\n var j; var\r\n jLen;\r\n var fontData = fontManager.getFontByName(documentData.f);\r\n var charData; var\r\n cLength = 0;\r\n\r\n var fontProps = getFontProperties(fontData);\r\n documentData.fWeight = fontProps.weight;\r\n documentData.fStyle = fontProps.style;\r\n documentData.finalSize = documentData.s;\r\n documentData.finalText = this.buildFinalText(documentData.t);\r\n len = documentData.finalText.length;\r\n documentData.finalLineHeight = documentData.lh;\r\n var trackingOffset = (documentData.tr / 1000) * documentData.finalSize;\r\n var charCode;\r\n if (documentData.sz) {\r\n var flag = true;\r\n var boxWidth = documentData.sz[0];\r\n var boxHeight = documentData.sz[1];\r\n var currentHeight; var\r\n finalText;\r\n while (flag) {\r\n finalText = this.buildFinalText(documentData.t);\r\n currentHeight = 0;\r\n lineWidth = 0;\r\n len = finalText.length;\r\n trackingOffset = (documentData.tr / 1000) * documentData.finalSize;\r\n var lastSpaceIndex = -1;\r\n for (i = 0; i < len; i += 1) {\r\n charCode = finalText[i].charCodeAt(0);\r\n newLineFlag = false;\r\n if (finalText[i] === ' ') {\r\n lastSpaceIndex = i;\r\n } else if (charCode === 13 || charCode === 3) {\r\n lineWidth = 0;\r\n newLineFlag = true;\r\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n }\r\n if (fontManager.chars) {\r\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\r\n cLength = newLineFlag ? 0 : (charData.w * documentData.finalSize) / 100;\r\n } else {\r\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\r\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\r\n }\r\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\r\n if (lastSpaceIndex === -1) {\r\n len += 1;\r\n } else {\r\n i = lastSpaceIndex;\r\n }\r\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r');\r\n // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\r\n lastSpaceIndex = -1;\r\n lineWidth = 0;\r\n } else {\r\n lineWidth += cLength;\r\n lineWidth += trackingOffset;\r\n }\r\n }\r\n currentHeight += (fontData.ascent * documentData.finalSize) / 100;\r\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\r\n documentData.finalSize -= 1;\r\n documentData.finalLineHeight = (documentData.finalSize * documentData.lh) / documentData.s;\r\n } else {\r\n documentData.finalText = finalText;\r\n len = documentData.finalText.length;\r\n flag = false;\r\n }\r\n }\r\n }\r\n lineWidth = -trackingOffset;\r\n cLength = 0;\r\n var uncollapsedSpaces = 0;\r\n var currentChar;\r\n for (i = 0; i < len; i += 1) {\r\n newLineFlag = false;\r\n currentChar = documentData.finalText[i];\r\n charCode = currentChar.charCodeAt(0);\r\n if (charCode === 13 || charCode === 3) {\r\n uncollapsedSpaces = 0;\r\n lineWidths.push(lineWidth);\r\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n lineWidth = -2 * trackingOffset;\r\n val = '';\r\n newLineFlag = true;\r\n currentLine += 1;\r\n } else {\r\n val = currentChar;\r\n }\r\n if (fontManager.chars) {\r\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\r\n cLength = newLineFlag ? 0 : (charData.w * documentData.finalSize) / 100;\r\n } else {\r\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\r\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\r\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\r\n }\r\n\r\n //\r\n if (currentChar === ' ') {\r\n uncollapsedSpaces += cLength + trackingOffset;\r\n } else {\r\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\r\n uncollapsedSpaces = 0;\r\n }\r\n letters.push({\r\n l: cLength, an: cLength, add: currentSize, n: newLineFlag, anIndexes: [], val: val, line: currentLine, animatorJustifyOffset: 0,\r\n });\r\n if (anchorGrouping == 2) { // eslint-disable-line eqeqeq\r\n currentSize += cLength;\r\n if (val === '' || val === ' ' || i === len - 1) {\r\n if (val === '' || val === ' ') {\r\n currentSize -= cLength;\r\n }\r\n while (currentPos <= i) {\r\n letters[currentPos].an = currentSize;\r\n letters[currentPos].ind = index;\r\n letters[currentPos].extra = cLength;\r\n currentPos += 1;\r\n }\r\n index += 1;\r\n currentSize = 0;\r\n }\r\n } else if (anchorGrouping == 3) { // eslint-disable-line eqeqeq\r\n currentSize += cLength;\r\n if (val === '' || i === len - 1) {\r\n if (val === '') {\r\n currentSize -= cLength;\r\n }\r\n while (currentPos <= i) {\r\n letters[currentPos].an = currentSize;\r\n letters[currentPos].ind = index;\r\n letters[currentPos].extra = cLength;\r\n currentPos += 1;\r\n }\r\n currentSize = 0;\r\n index += 1;\r\n }\r\n } else {\r\n letters[index].ind = index;\r\n letters[index].extra = 0;\r\n index += 1;\r\n }\r\n }\r\n documentData.l = letters;\r\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n lineWidths.push(lineWidth);\r\n if (documentData.sz) {\r\n documentData.boxWidth = documentData.sz[0];\r\n documentData.justifyOffset = 0;\r\n } else {\r\n documentData.boxWidth = maxLineWidth;\r\n switch (documentData.j) {\r\n case 1:\r\n documentData.justifyOffset = -documentData.boxWidth;\r\n break;\r\n case 2:\r\n documentData.justifyOffset = -documentData.boxWidth / 2;\r\n break;\r\n default:\r\n documentData.justifyOffset = 0;\r\n }\r\n }\r\n documentData.lineWidths = lineWidths;\r\n\r\n var animators = data.a; var animatorData; var\r\n letterData;\r\n jLen = animators.length;\r\n var based; var ind; var\r\n indexes = [];\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorData = animators[j];\r\n if (animatorData.a.sc) {\r\n documentData.strokeColorAnim = true;\r\n }\r\n if (animatorData.a.sw) {\r\n documentData.strokeWidthAnim = true;\r\n }\r\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\r\n documentData.fillColorAnim = true;\r\n }\r\n ind = 0;\r\n based = animatorData.s.b;\r\n for (i = 0; i < len; i += 1) {\r\n letterData = letters[i];\r\n letterData.anIndexes[j] = ind;\r\n if ((based == 1 && letterData.val !== '') || (based == 2 && letterData.val !== '' && letterData.val !== ' ') || (based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1)) || (based == 4 && (letterData.n || i == len - 1))) { // eslint-disable-line eqeqeq\r\n if (animatorData.s.rn === 1) {\r\n indexes.push(ind);\r\n }\r\n ind += 1;\r\n }\r\n }\r\n data.a[j].s.totalChars = ind;\r\n var currentInd = -1; var\r\n newInd;\r\n if (animatorData.s.rn === 1) {\r\n for (i = 0; i < len; i += 1) {\r\n letterData = letters[i];\r\n if (currentInd != letterData.anIndexes[j]) { // eslint-disable-line eqeqeq\r\n currentInd = letterData.anIndexes[j];\r\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\r\n }\r\n letterData.anIndexes[j] = newInd;\r\n }\r\n }\r\n }\r\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n documentData.ls = documentData.ls || 0;\r\n documentData.ascent = (fontData.ascent * documentData.finalSize) / 100;\r\n};\r\n\r\nTextProperty.prototype.updateDocumentData = function (newData, index) {\r\n index = index === undefined ? this.keysIndex : index;\r\n var dData = this.copyData({}, this.data.d.k[index].s);\r\n dData = this.copyData(dData, newData);\r\n this.data.d.k[index].s = dData;\r\n this.recalculate(index);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nTextProperty.prototype.recalculate = function (index) {\r\n var dData = this.data.d.k[index].s;\r\n dData.__complete = false;\r\n this.keysIndex = 0;\r\n this._isFirstFrame = true;\r\n this.getValue(dData);\r\n};\r\n\r\nTextProperty.prototype.canResizeFont = function (_canResize) {\r\n this.canResize = _canResize;\r\n this.recalculate(this.keysIndex);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nTextProperty.prototype.setMinimumFontSize = function (_fontValue) {\r\n this.minimumFontSize = Math.floor(_fontValue) || 1;\r\n this.recalculate(this.keysIndex);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\n/* global extendPrototype, BezierFactory, PropertyFactory, DynamicPropertyContainer */\r\n/* exported TextSelectorProp */\r\n\r\nvar TextSelectorProp = (function () {\r\n var max = Math.max;\r\n var min = Math.min;\r\n var floor = Math.floor;\r\n\r\n function TextSelectorPropFactory(elem, data) {\r\n this._currentTextLength = -1;\r\n this.k = false;\r\n this.data = data;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.finalS = 0;\r\n this.finalE = 0;\r\n this.initDynamicPropertyContainer(elem);\r\n this.s = PropertyFactory.getProp(elem, data.s || { k: 0 }, 0, 0, this);\r\n if ('e' in data) {\r\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\r\n } else {\r\n this.e = { v: 100 };\r\n }\r\n this.o = PropertyFactory.getProp(elem, data.o || { k: 0 }, 0, 0, this);\r\n this.xe = PropertyFactory.getProp(elem, data.xe || { k: 0 }, 0, 0, this);\r\n this.ne = PropertyFactory.getProp(elem, data.ne || { k: 0 }, 0, 0, this);\r\n this.sm = PropertyFactory.getProp(elem, data.sm || { k: 100 }, 0, 0, this);\r\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\r\n if (!this.dynamicProperties.length) {\r\n this.getValue();\r\n }\r\n }\r\n\r\n TextSelectorPropFactory.prototype = {\r\n getMult: function (ind) {\r\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\r\n this.getValue();\r\n }\r\n // var easer = bez.getEasingCurve(this.ne.v/100,0,1-this.xe.v/100,1);\r\n var x1 = 0;\r\n var y1 = 0;\r\n var x2 = 1;\r\n var y2 = 1;\r\n if (this.ne.v > 0) {\r\n x1 = this.ne.v / 100.0;\r\n } else {\r\n y1 = -this.ne.v / 100.0;\r\n }\r\n if (this.xe.v > 0) {\r\n x2 = 1.0 - this.xe.v / 100.0;\r\n } else {\r\n y2 = 1.0 + this.xe.v / 100.0;\r\n }\r\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\r\n\r\n var mult = 0;\r\n var s = this.finalS;\r\n var e = this.finalE;\r\n var type = this.data.sh;\r\n if (type === 2) {\r\n if (e === s) {\r\n mult = ind >= e ? 1 : 0;\r\n } else {\r\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n }\r\n mult = easer(mult);\r\n } else if (type === 3) {\r\n if (e === s) {\r\n mult = ind >= e ? 0 : 1;\r\n } else {\r\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n }\r\n\r\n mult = easer(mult);\r\n } else if (type === 4) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n if (mult < 0.5) {\r\n mult *= 2;\r\n } else {\r\n mult = 1 - 2 * (mult - 0.5);\r\n }\r\n }\r\n mult = easer(mult);\r\n } else if (type === 5) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n var tot = e - s;\r\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\r\n ind = min(max(0, ind + 0.5 - s), e - s);\r\n var x = -tot / 2 + ind;\r\n var a = tot / 2;\r\n mult = Math.sqrt(1 - (x * x) / (a * a));\r\n }\r\n mult = easer(mult);\r\n } else if (type === 6) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n ind = min(max(0, ind + 0.5 - s), e - s);\r\n mult = (1 + (Math.cos((Math.PI + Math.PI * 2 * (ind) / (e - s))))) / 2; // eslint-disable-line\r\n }\r\n mult = easer(mult);\r\n } else {\r\n if (ind >= floor(s)) {\r\n if (ind - s < 0) {\r\n mult = max(0, min(min(e, 1) - (s - ind), 1));\r\n } else {\r\n mult = max(0, min(e - ind, 1));\r\n }\r\n }\r\n mult = easer(mult);\r\n }\r\n // Smoothness implementation.\r\n // The smoothness represents a reduced range of the original [0; 1] range.\r\n // if smoothness is 25%, the new range will be [0.375; 0.625]\r\n // Steps are:\r\n // - find the lower value of the new range (threshold)\r\n // - if multiplier is smaller than that value, floor it to 0\r\n // - if it is larger,\r\n // - subtract the threshold\r\n // - divide it by the smoothness (this will return the range to [0; 1])\r\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\r\n if (this.sm.v !== 100) {\r\n var smoothness = this.sm.v * 0.01;\r\n if (smoothness === 0) {\r\n smoothness = 0.00000001;\r\n }\r\n var threshold = 0.5 - smoothness * 0.5;\r\n if (mult < threshold) {\r\n mult = 0;\r\n } else {\r\n mult = (mult - threshold) / smoothness;\r\n if (mult > 1) {\r\n mult = 1;\r\n }\r\n }\r\n }\r\n return mult * this.a.v;\r\n },\r\n getValue: function (newCharsFlag) {\r\n this.iterateDynamicProperties();\r\n this._mdf = newCharsFlag || this._mdf;\r\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\r\n if (newCharsFlag && this.data.r === 2) {\r\n this.e.v = this._currentTextLength;\r\n }\r\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\r\n var o = this.o.v / divisor;\r\n var s = this.s.v / divisor + o;\r\n var e = (this.e.v / divisor) + o;\r\n if (s > e) {\r\n var _s = s;\r\n s = e;\r\n e = _s;\r\n }\r\n this.finalS = s;\r\n this.finalE = e;\r\n },\r\n };\r\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\r\n\r\n function getTextSelectorProp(elem, data, arr) {\r\n return new TextSelectorPropFactory(elem, data, arr);\r\n }\r\n\r\n return {\r\n getTextSelectorProp: getTextSelectorProp,\r\n };\r\n}());\r\n\r\n/* global createSizedArray, pooling */\r\n/* exported poolFactory */\r\n\r\nvar poolFactory = (function () {\r\n return function (initialLength, _create, _release) {\r\n var _length = 0;\r\n var _maxLength = initialLength;\r\n var pool = createSizedArray(_maxLength);\r\n\r\n var ob = {\r\n newElement: newElement,\r\n release: release,\r\n };\r\n\r\n function newElement() {\r\n var element;\r\n if (_length) {\r\n _length -= 1;\r\n element = pool[_length];\r\n } else {\r\n element = _create();\r\n }\r\n return element;\r\n }\r\n\r\n function release(element) {\r\n if (_length === _maxLength) {\r\n pool = pooling.double(pool);\r\n _maxLength *= 2;\r\n }\r\n if (_release) {\r\n _release(element);\r\n }\r\n pool[_length] = element;\r\n _length += 1;\r\n }\r\n\r\n return ob;\r\n };\r\n}());\r\n\r\n/* global createSizedArray */\r\n/* exported pooling */\r\n\r\nvar pooling = (function () {\r\n function double(arr) {\r\n return arr.concat(createSizedArray(arr.length));\r\n }\r\n\r\n return {\r\n double: double,\r\n };\r\n}());\r\n\r\n/* global createTypedArray, poolFactory */\r\n/* exported pointPool */\r\n\r\nvar pointPool = (function () {\r\n function create() {\r\n return createTypedArray('float32', 2);\r\n }\r\n return poolFactory(8, create);\r\n}());\r\n\r\n/* global ShapePath, pointPool, poolFactory */\r\n/* exported shapePool */\r\n\r\nvar shapePool = (function () {\r\n function create() {\r\n return new ShapePath();\r\n }\r\n\r\n function release(shapePath) {\r\n var len = shapePath._length;\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n pointPool.release(shapePath.v[i]);\r\n pointPool.release(shapePath.i[i]);\r\n pointPool.release(shapePath.o[i]);\r\n shapePath.v[i] = null;\r\n shapePath.i[i] = null;\r\n shapePath.o[i] = null;\r\n }\r\n shapePath._length = 0;\r\n shapePath.c = false;\r\n }\r\n\r\n function clone(shape) {\r\n var cloned = factory.newElement();\r\n var i;\r\n var len = shape._length === undefined ? shape.v.length : shape._length;\r\n cloned.setLength(len);\r\n cloned.c = shape.c;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\r\n }\r\n return cloned;\r\n }\r\n\r\n var factory = poolFactory(4, create, release);\r\n factory.clone = clone;\r\n\r\n return factory;\r\n}());\r\n\r\n/* global createSizedArray, ShapeCollection, shapePool, pooling */\r\n/* exported shapeCollectionPool */\r\n\r\nvar shapeCollectionPool = (function () {\r\n var ob = {\r\n newShapeCollection: newShapeCollection,\r\n release: release,\r\n };\r\n\r\n var _length = 0;\r\n var _maxLength = 4;\r\n var pool = createSizedArray(_maxLength);\r\n\r\n function newShapeCollection() {\r\n var shapeCollection;\r\n if (_length) {\r\n _length -= 1;\r\n shapeCollection = pool[_length];\r\n } else {\r\n shapeCollection = new ShapeCollection();\r\n }\r\n return shapeCollection;\r\n }\r\n\r\n function release(shapeCollection) {\r\n var i;\r\n var len = shapeCollection._length;\r\n for (i = 0; i < len; i += 1) {\r\n shapePool.release(shapeCollection.shapes[i]);\r\n }\r\n shapeCollection._length = 0;\r\n\r\n if (_length === _maxLength) {\r\n pool = pooling.double(pool);\r\n _maxLength *= 2;\r\n }\r\n pool[_length] = shapeCollection;\r\n _length += 1;\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* global poolFactory, bezierLengthPool */\r\n/* exported segmentsLengthPool */\r\n\r\nvar segmentsLengthPool = (function () {\r\n function create() {\r\n return {\r\n lengths: [],\r\n totalLength: 0,\r\n };\r\n }\r\n\r\n function release(element) {\r\n var i;\r\n var len = element.lengths.length;\r\n for (i = 0; i < len; i += 1) {\r\n bezierLengthPool.release(element.lengths[i]);\r\n }\r\n element.lengths.length = 0;\r\n }\r\n\r\n return poolFactory(8, create, release);\r\n}());\r\n\r\n/* global createTypedArray, defaultCurveSegments, poolFactory */\r\n/* exported bezierLengthPool */\r\n\r\nvar bezierLengthPool = (function () {\r\n function create() {\r\n return {\r\n addedLength: 0,\r\n percents: createTypedArray('float32', defaultCurveSegments),\r\n lengths: createTypedArray('float32', defaultCurveSegments),\r\n };\r\n }\r\n return poolFactory(8, create);\r\n}());\r\n\r\n/* exported markerParser */\r\n\r\nvar markerParser = (\r\n\r\n function () {\r\n function parsePayloadLines(payload) {\r\n var lines = payload.split('\\r\\n');\r\n var keys = {};\r\n var line;\r\n var keysCount = 0;\r\n for (var i = 0; i < lines.length; i += 1) {\r\n line = lines[i].split(':');\r\n if (line.length === 2) {\r\n keys[line[0]] = line[1].trim();\r\n keysCount += 1;\r\n }\r\n }\r\n if (keysCount === 0) {\r\n throw new Error();\r\n }\r\n return keys;\r\n }\r\n\r\n return function (_markers) {\r\n var markers = [];\r\n for (var i = 0; i < _markers.length; i += 1) {\r\n var _marker = _markers[i];\r\n var markerData = {\r\n time: _marker.tm,\r\n duration: _marker.dr,\r\n };\r\n try {\r\n markerData.payload = JSON.parse(_markers[i].cm);\r\n } catch (_) {\r\n try {\r\n markerData.payload = parsePayloadLines(_markers[i].cm);\r\n } catch (__) {\r\n markerData.payload = {\r\n name: _markers[i],\r\n };\r\n }\r\n }\r\n markers.push(markerData);\r\n }\r\n return markers;\r\n };\r\n }());\r\n\r\n/* global AudioElement, FootageElement, FontManager */\r\n\r\nfunction BaseRenderer() {}\r\nBaseRenderer.prototype.checkLayers = function (num) {\r\n var i;\r\n var len = this.layers.length;\r\n var data;\r\n this.completeLayers = true;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (!this.elements[i]) {\r\n data = this.layers[i];\r\n if (data.ip - data.st <= (num - this.layers[i].st) && data.op - data.st > (num - this.layers[i].st)) {\r\n this.buildItem(i);\r\n }\r\n }\r\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\r\n }\r\n this.checkPendingElements();\r\n};\r\n\r\nBaseRenderer.prototype.createItem = function (layer) {\r\n switch (layer.ty) {\r\n case 2:\r\n return this.createImage(layer);\r\n case 0:\r\n return this.createComp(layer);\r\n case 1:\r\n return this.createSolid(layer);\r\n case 3:\r\n return this.createNull(layer);\r\n case 4:\r\n return this.createShape(layer);\r\n case 5:\r\n return this.createText(layer);\r\n case 6:\r\n return this.createAudio(layer);\r\n case 13:\r\n return this.createCamera(layer);\r\n case 15:\r\n return this.createFootage(layer);\r\n default:\r\n return this.createNull(layer);\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.createCamera = function () {\r\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\r\n};\r\n\r\nBaseRenderer.prototype.createAudio = function (data) {\r\n return new AudioElement(data, this.globalData, this);\r\n};\r\n\r\nBaseRenderer.prototype.createFootage = function (data) {\r\n return new FootageElement(data, this.globalData, this);\r\n};\r\n\r\nBaseRenderer.prototype.buildAllItems = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.buildItem(i);\r\n }\r\n this.checkPendingElements();\r\n};\r\n\r\nBaseRenderer.prototype.includeLayers = function (newLayers) {\r\n this.completeLayers = false;\r\n var i;\r\n var len = newLayers.length;\r\n var j;\r\n var jLen = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n j = 0;\r\n while (j < jLen) {\r\n if (this.layers[j].id === newLayers[i].id) {\r\n this.layers[j] = newLayers[i];\r\n break;\r\n }\r\n j += 1;\r\n }\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.setProjectInterface = function (pInterface) {\r\n this.globalData.projectInterface = pInterface;\r\n};\r\n\r\nBaseRenderer.prototype.initItems = function () {\r\n if (!this.globalData.progressiveLoad) {\r\n this.buildAllItems();\r\n }\r\n};\r\nBaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\r\n var elements = this.elements;\r\n var layers = this.layers;\r\n var i = 0;\r\n var len = layers.length;\r\n while (i < len) {\r\n if (layers[i].ind == parentName) { // eslint-disable-line eqeqeq\r\n if (!elements[i] || elements[i] === true) {\r\n this.buildItem(i);\r\n this.addPendingElement(element);\r\n } else {\r\n hierarchy.push(elements[i]);\r\n elements[i].setAsParent();\r\n if (layers[i].parent !== undefined) {\r\n this.buildElementParenting(element, layers[i].parent, hierarchy);\r\n } else {\r\n element.setHierarchy(hierarchy);\r\n }\r\n }\r\n }\r\n i += 1;\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.addPendingElement = function (element) {\r\n this.pendingElements.push(element);\r\n};\r\n\r\nBaseRenderer.prototype.searchExtraCompositions = function (assets) {\r\n var i;\r\n var len = assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (assets[i].xt) {\r\n var comp = this.createComp(assets[i]);\r\n comp.initExpressions();\r\n this.globalData.projectInterface.registerComposition(comp);\r\n }\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\r\n this.globalData.fontManager = new FontManager();\r\n this.globalData.fontManager.addChars(animData.chars);\r\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\r\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\r\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\r\n this.globalData.imageLoader = this.animationItem.imagePreloader;\r\n this.globalData.audioController = this.animationItem.audioController;\r\n this.globalData.frameId = 0;\r\n this.globalData.frameRate = animData.fr;\r\n this.globalData.nm = animData.nm;\r\n this.globalData.compSize = {\r\n w: animData.w,\r\n h: animData.h,\r\n };\r\n};\r\n\r\n/* global createElementID, extendPrototype, BaseRenderer, NullElement, SVGShapeElement, SVGTextLottieElement,\r\nIImageElement, SVGCompElement, ISolidElement, createNS, locationHref, createSizedArray, expressionsPlugin */\r\n\r\nfunction SVGRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.layers = null;\r\n this.renderedFrame = -1;\r\n this.svgElement = createNS('svg');\r\n var ariaLabel = '';\r\n if (config && config.title) {\r\n var titleElement = createNS('title');\r\n var titleId = createElementID();\r\n titleElement.setAttribute('id', titleId);\r\n titleElement.textContent = config.title;\r\n this.svgElement.appendChild(titleElement);\r\n ariaLabel += titleId;\r\n }\r\n if (config && config.description) {\r\n var descElement = createNS('desc');\r\n var descId = createElementID();\r\n descElement.setAttribute('id', descId);\r\n descElement.textContent = config.description;\r\n this.svgElement.appendChild(descElement);\r\n ariaLabel += ' ' + descId;\r\n }\r\n if (ariaLabel) {\r\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\r\n }\r\n var defs = createNS('defs');\r\n this.svgElement.appendChild(defs);\r\n var maskElement = createNS('g');\r\n this.svgElement.appendChild(maskElement);\r\n this.layerElement = maskElement;\r\n this.renderConfig = {\r\n preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',\r\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\r\n contentVisibility: (config && config.contentVisibility) || 'visible',\r\n progressiveLoad: (config && config.progressiveLoad) || false,\r\n hideOnTransparent: !((config && config.hideOnTransparent === false)),\r\n viewBoxOnly: (config && config.viewBoxOnly) || false,\r\n viewBoxSize: (config && config.viewBoxSize) || false,\r\n className: (config && config.className) || '',\r\n id: (config && config.id) || '',\r\n focusable: config && config.focusable,\r\n filterSize: {\r\n width: (config && config.filterSize && config.filterSize.width) || '100%',\r\n height: (config && config.filterSize && config.filterSize.height) || '100%',\r\n x: (config && config.filterSize && config.filterSize.x) || '0%',\r\n y: (config && config.filterSize && config.filterSize.y) || '0%',\r\n },\r\n };\r\n\r\n this.globalData = {\r\n _mdf: false,\r\n frameNum: -1,\r\n defs: defs,\r\n renderConfig: this.renderConfig,\r\n };\r\n this.elements = [];\r\n this.pendingElements = [];\r\n this.destroyed = false;\r\n this.rendererType = 'svg';\r\n}\r\n\r\nextendPrototype([BaseRenderer], SVGRenderer);\r\n\r\nSVGRenderer.prototype.createNull = function (data) {\r\n return new NullElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createShape = function (data) {\r\n return new SVGShapeElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createText = function (data) {\r\n return new SVGTextLottieElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createImage = function (data) {\r\n return new IImageElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createComp = function (data) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createSolid = function (data) {\r\n return new ISolidElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.configAnimation = function (animData) {\r\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\r\n if (this.renderConfig.viewBoxSize) {\r\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\r\n } else {\r\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\r\n }\r\n\r\n if (!this.renderConfig.viewBoxOnly) {\r\n this.svgElement.setAttribute('width', animData.w);\r\n this.svgElement.setAttribute('height', animData.h);\r\n this.svgElement.style.width = '100%';\r\n this.svgElement.style.height = '100%';\r\n this.svgElement.style.transform = 'translate3d(0,0,0)';\r\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\r\n }\r\n if (this.renderConfig.className) {\r\n this.svgElement.setAttribute('class', this.renderConfig.className);\r\n }\r\n if (this.renderConfig.id) {\r\n this.svgElement.setAttribute('id', this.renderConfig.id);\r\n }\r\n if (this.renderConfig.focusable !== undefined) {\r\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\r\n }\r\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio);\r\n // this.layerElement.style.transform = 'translate3d(0,0,0)';\r\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\r\n this.animationItem.wrapper.appendChild(this.svgElement);\r\n // Mask animation\r\n var defs = this.globalData.defs;\r\n\r\n this.setupGlobalData(animData, defs);\r\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\r\n this.data = animData;\r\n\r\n var maskElement = createNS('clipPath');\r\n var rect = createNS('rect');\r\n rect.setAttribute('width', animData.w);\r\n rect.setAttribute('height', animData.h);\r\n rect.setAttribute('x', 0);\r\n rect.setAttribute('y', 0);\r\n var maskId = createElementID();\r\n maskElement.setAttribute('id', maskId);\r\n maskElement.appendChild(rect);\r\n this.layerElement.setAttribute('clip-path', 'url(' + locationHref + '#' + maskId + ')');\r\n\r\n defs.appendChild(maskElement);\r\n this.layers = animData.layers;\r\n this.elements = createSizedArray(animData.layers.length);\r\n};\r\n\r\nSVGRenderer.prototype.destroy = function () {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.wrapper.innerText = '';\r\n }\r\n this.layerElement = null;\r\n this.globalData.defs = null;\r\n var i;\r\n var len = this.layers ? this.layers.length : 0;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n this.elements.length = 0;\r\n this.destroyed = true;\r\n this.animationItem = null;\r\n};\r\n\r\nSVGRenderer.prototype.updateContainerSize = function () {\r\n};\r\n\r\nSVGRenderer.prototype.buildItem = function (pos) {\r\n var elements = this.elements;\r\n if (elements[pos] || this.layers[pos].ty === 99) {\r\n return;\r\n }\r\n elements[pos] = true;\r\n var element = this.createItem(this.layers[pos]);\r\n\r\n elements[pos] = element;\r\n if (expressionsPlugin) {\r\n if (this.layers[pos].ty === 0) {\r\n this.globalData.projectInterface.registerComposition(element);\r\n }\r\n element.initExpressions();\r\n }\r\n this.appendElementInPos(element, pos);\r\n if (this.layers[pos].tt) {\r\n if (!this.elements[pos - 1] || this.elements[pos - 1] === true) {\r\n this.buildItem(pos - 1);\r\n this.addPendingElement(element);\r\n } else {\r\n element.setMatte(elements[pos - 1].layerId);\r\n }\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n if (element.data.tt) {\r\n var i = 0;\r\n var len = this.elements.length;\r\n while (i < len) {\r\n if (this.elements[i] === element) {\r\n element.setMatte(this.elements[i - 1].layerId);\r\n break;\r\n }\r\n i += 1;\r\n }\r\n }\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.renderFrame = function (num) {\r\n if (this.renderedFrame === num || this.destroyed) {\r\n return;\r\n }\r\n if (num === null) {\r\n num = this.renderedFrame;\r\n } else {\r\n this.renderedFrame = num;\r\n }\r\n // console.log('-------');\r\n // console.log('FRAME ',num);\r\n this.globalData.frameNum = num;\r\n this.globalData.frameId += 1;\r\n this.globalData.projectInterface.currentFrame = num;\r\n this.globalData._mdf = false;\r\n var i;\r\n var len = this.layers.length;\r\n if (!this.completeLayers) {\r\n this.checkLayers(num);\r\n }\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(num - this.layers[i].st);\r\n }\r\n }\r\n if (this.globalData._mdf) {\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.appendElementInPos = function (element, pos) {\r\n var newElement = element.getBaseElement();\r\n if (!newElement) {\r\n return;\r\n }\r\n var i = 0;\r\n var nextElement;\r\n while (i < pos) {\r\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\r\n nextElement = this.elements[i].getBaseElement();\r\n }\r\n i += 1;\r\n }\r\n if (nextElement) {\r\n this.layerElement.insertBefore(newElement, nextElement);\r\n } else {\r\n this.layerElement.appendChild(newElement);\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.hide = function () {\r\n this.layerElement.style.display = 'none';\r\n};\r\n\r\nSVGRenderer.prototype.show = function () {\r\n this.layerElement.style.display = 'block';\r\n};\r\n\r\n/* global CVContextData, Matrix, extendPrototype, BaseRenderer, CVShapeElement, CVTextElement,\r\nCVImageElement, CVCompElement, CVSolidElement, SVGRenderer, createTag, createSizedArray */\r\n\r\nfunction CanvasRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.renderConfig = {\r\n clearCanvas: (config && config.clearCanvas !== undefined) ? config.clearCanvas : true,\r\n context: (config && config.context) || null,\r\n progressiveLoad: (config && config.progressiveLoad) || false,\r\n preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',\r\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\r\n contentVisibility: (config && config.contentVisibility) || 'visible',\r\n className: (config && config.className) || '',\r\n id: (config && config.id) || '',\r\n };\r\n this.renderConfig.dpr = (config && config.dpr) || 1;\r\n if (this.animationItem.wrapper) {\r\n this.renderConfig.dpr = (config && config.dpr) || window.devicePixelRatio || 1;\r\n }\r\n this.renderedFrame = -1;\r\n this.globalData = {\r\n frameNum: -1,\r\n _mdf: false,\r\n renderConfig: this.renderConfig,\r\n currentGlobalAlpha: -1,\r\n };\r\n this.contextData = new CVContextData();\r\n this.elements = [];\r\n this.pendingElements = [];\r\n this.transformMat = new Matrix();\r\n this.completeLayers = false;\r\n this.rendererType = 'canvas';\r\n}\r\nextendPrototype([BaseRenderer], CanvasRenderer);\r\n\r\nCanvasRenderer.prototype.createShape = function (data) {\r\n return new CVShapeElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createText = function (data) {\r\n return new CVTextElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createImage = function (data) {\r\n return new CVImageElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createComp = function (data) {\r\n return new CVCompElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createSolid = function (data) {\r\n return new CVSolidElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createNull = SVGRenderer.prototype.createNull;\r\n\r\nCanvasRenderer.prototype.ctxTransform = function (props) {\r\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\r\n return;\r\n }\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\r\n return;\r\n }\r\n this.transformMat.cloneFromProps(props);\r\n var cProps = this.contextData.cTr.props;\r\n this.transformMat.transform(cProps[0], cProps[1], cProps[2], cProps[3], cProps[4], cProps[5], cProps[6], cProps[7], cProps[8], cProps[9], cProps[10], cProps[11], cProps[12], cProps[13], cProps[14], cProps[15]);\r\n // this.contextData.cTr.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);\r\n this.contextData.cTr.cloneFromProps(this.transformMat.props);\r\n var trProps = this.contextData.cTr.props;\r\n this.canvasContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\r\n};\r\n\r\nCanvasRenderer.prototype.ctxOpacity = function (op) {\r\n /* if(op === 1){\r\n return;\r\n } */\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\r\n this.globalData.currentGlobalAlpha = this.contextData.cO;\r\n return;\r\n }\r\n this.contextData.cO *= op < 0 ? 0 : op;\r\n if (this.globalData.currentGlobalAlpha !== this.contextData.cO) {\r\n this.canvasContext.globalAlpha = this.contextData.cO;\r\n this.globalData.currentGlobalAlpha = this.contextData.cO;\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.reset = function () {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.restore();\r\n return;\r\n }\r\n this.contextData.reset();\r\n};\r\n\r\nCanvasRenderer.prototype.save = function (actionFlag) {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.save();\r\n return;\r\n }\r\n if (actionFlag) {\r\n this.canvasContext.save();\r\n }\r\n var props = this.contextData.cTr.props;\r\n if (this.contextData._length <= this.contextData.cArrPos) {\r\n this.contextData.duplicate();\r\n }\r\n var i;\r\n var arr = this.contextData.saved[this.contextData.cArrPos];\r\n for (i = 0; i < 16; i += 1) {\r\n arr[i] = props[i];\r\n }\r\n this.contextData.savedOp[this.contextData.cArrPos] = this.contextData.cO;\r\n this.contextData.cArrPos += 1;\r\n};\r\n\r\nCanvasRenderer.prototype.restore = function (actionFlag) {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.restore();\r\n return;\r\n }\r\n if (actionFlag) {\r\n this.canvasContext.restore();\r\n this.globalData.blendMode = 'source-over';\r\n }\r\n this.contextData.cArrPos -= 1;\r\n var popped = this.contextData.saved[this.contextData.cArrPos];\r\n var i;\r\n var arr = this.contextData.cTr.props;\r\n for (i = 0; i < 16; i += 1) {\r\n arr[i] = popped[i];\r\n }\r\n this.canvasContext.setTransform(popped[0], popped[1], popped[4], popped[5], popped[12], popped[13]);\r\n popped = this.contextData.savedOp[this.contextData.cArrPos];\r\n this.contextData.cO = popped;\r\n if (this.globalData.currentGlobalAlpha !== popped) {\r\n this.canvasContext.globalAlpha = popped;\r\n this.globalData.currentGlobalAlpha = popped;\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.configAnimation = function (animData) {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.container = createTag('canvas');\r\n var containerStyle = this.animationItem.container.style;\r\n containerStyle.width = '100%';\r\n containerStyle.height = '100%';\r\n var origin = '0px 0px 0px';\r\n containerStyle.transformOrigin = origin;\r\n containerStyle.mozTransformOrigin = origin;\r\n containerStyle.webkitTransformOrigin = origin;\r\n containerStyle['-webkit-transform'] = origin;\r\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\r\n this.animationItem.wrapper.appendChild(this.animationItem.container);\r\n this.canvasContext = this.animationItem.container.getContext('2d');\r\n if (this.renderConfig.className) {\r\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\r\n }\r\n if (this.renderConfig.id) {\r\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\r\n }\r\n } else {\r\n this.canvasContext = this.renderConfig.context;\r\n }\r\n this.data = animData;\r\n this.layers = animData.layers;\r\n this.transformCanvas = {\r\n w: animData.w,\r\n h: animData.h,\r\n sx: 0,\r\n sy: 0,\r\n tx: 0,\r\n ty: 0,\r\n };\r\n this.setupGlobalData(animData, document.body);\r\n this.globalData.canvasContext = this.canvasContext;\r\n this.globalData.renderer = this;\r\n this.globalData.isDashed = false;\r\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\r\n this.globalData.transformCanvas = this.transformCanvas;\r\n this.elements = createSizedArray(animData.layers.length);\r\n\r\n this.updateContainerSize();\r\n};\r\n\r\nCanvasRenderer.prototype.updateContainerSize = function () {\r\n this.reset();\r\n var elementWidth;\r\n var elementHeight;\r\n if (this.animationItem.wrapper && this.animationItem.container) {\r\n elementWidth = this.animationItem.wrapper.offsetWidth;\r\n elementHeight = this.animationItem.wrapper.offsetHeight;\r\n this.animationItem.container.setAttribute('width', elementWidth * this.renderConfig.dpr);\r\n this.animationItem.container.setAttribute('height', elementHeight * this.renderConfig.dpr);\r\n } else {\r\n elementWidth = this.canvasContext.canvas.width * this.renderConfig.dpr;\r\n elementHeight = this.canvasContext.canvas.height * this.renderConfig.dpr;\r\n }\r\n var elementRel;\r\n var animationRel;\r\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\r\n var par = this.renderConfig.preserveAspectRatio.split(' ');\r\n var fillType = par[1] || 'meet';\r\n var pos = par[0] || 'xMidYMid';\r\n var xPos = pos.substr(0, 4);\r\n var yPos = pos.substr(4);\r\n elementRel = elementWidth / elementHeight;\r\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\r\n if ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice')) {\r\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n } else {\r\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n }\r\n\r\n if (xPos === 'xMid' && ((animationRel < elementRel && fillType === 'meet') || (animationRel > elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.tx = ((elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2) * this.renderConfig.dpr;\r\n } else if (xPos === 'xMax' && ((animationRel < elementRel && fillType === 'meet') || (animationRel > elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\r\n } else {\r\n this.transformCanvas.tx = 0;\r\n }\r\n if (yPos === 'YMid' && ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.ty = ((elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2) * this.renderConfig.dpr;\r\n } else if (yPos === 'YMax' && ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.ty = ((elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w))) * this.renderConfig.dpr;\r\n } else {\r\n this.transformCanvas.ty = 0;\r\n }\r\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\r\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n this.transformCanvas.tx = 0;\r\n this.transformCanvas.ty = 0;\r\n } else {\r\n this.transformCanvas.sx = this.renderConfig.dpr;\r\n this.transformCanvas.sy = this.renderConfig.dpr;\r\n this.transformCanvas.tx = 0;\r\n this.transformCanvas.ty = 0;\r\n }\r\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\r\n /* var i, len = this.elements.length;\r\n for(i=0;i<len;i+=1){\r\n if(this.elements[i] && this.elements[i].data.ty === 0){\r\n this.elements[i].resize(this.globalData.transformCanvas);\r\n }\r\n } */\r\n this.ctxTransform(this.transformCanvas.props);\r\n this.canvasContext.beginPath();\r\n this.canvasContext.rect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\r\n this.canvasContext.closePath();\r\n this.canvasContext.clip();\r\n\r\n this.renderFrame(this.renderedFrame, true);\r\n};\r\n\r\nCanvasRenderer.prototype.destroy = function () {\r\n if (this.renderConfig.clearCanvas && this.animationItem.wrapper) {\r\n this.animationItem.wrapper.innerText = '';\r\n }\r\n var i;\r\n var len = this.layers ? this.layers.length : 0;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n this.elements.length = 0;\r\n this.globalData.canvasContext = null;\r\n this.animationItem.container = null;\r\n this.destroyed = true;\r\n};\r\n\r\nCanvasRenderer.prototype.renderFrame = function (num, forceRender) {\r\n if ((this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender) || this.destroyed || num === -1) {\r\n return;\r\n }\r\n this.renderedFrame = num;\r\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\r\n this.globalData.frameId += 1;\r\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\r\n this.globalData.projectInterface.currentFrame = num;\r\n\r\n // console.log('--------');\r\n // console.log('NEW: ',num);\r\n var i;\r\n var len = this.layers.length;\r\n if (!this.completeLayers) {\r\n this.checkLayers(num);\r\n }\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(num - this.layers[i].st);\r\n }\r\n }\r\n if (this.globalData._mdf) {\r\n if (this.renderConfig.clearCanvas === true) {\r\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\r\n } else {\r\n this.save();\r\n }\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n if (this.renderConfig.clearCanvas !== true) {\r\n this.restore();\r\n }\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.buildItem = function (pos) {\r\n var elements = this.elements;\r\n if (elements[pos] || this.layers[pos].ty === 99) {\r\n return;\r\n }\r\n var element = this.createItem(this.layers[pos], this, this.globalData);\r\n elements[pos] = element;\r\n element.initExpressions();\r\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\r\n};\r\n\r\nCanvasRenderer.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.hide = function () {\r\n this.animationItem.container.style.display = 'none';\r\n};\r\n\r\nCanvasRenderer.prototype.show = function () {\r\n this.animationItem.container.style.display = 'block';\r\n};\r\n\r\n/* global extendPrototype, BaseRenderer, SVGRenderer, SVGShapeElement, HShapeElement, SVGTextLottieElement,\r\nHTextElement, HCameraElement, IImageElement, HImageElement, SVGCompElement, HCompElement, ISolidElement,\r\nHSolidElement, styleDiv, createTag, createNS */\r\n\r\nfunction HybridRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.layers = null;\r\n this.renderedFrame = -1;\r\n this.renderConfig = {\r\n className: (config && config.className) || '',\r\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\r\n hideOnTransparent: !(config && config.hideOnTransparent === false),\r\n filterSize: {\r\n width: (config && config.filterSize && config.filterSize.width) || '400%',\r\n height: (config && config.filterSize && config.filterSize.height) || '400%',\r\n x: (config && config.filterSize && config.filterSize.x) || '-100%',\r\n y: (config && config.filterSize && config.filterSize.y) || '-100%',\r\n },\r\n };\r\n this.globalData = {\r\n _mdf: false,\r\n frameNum: -1,\r\n renderConfig: this.renderConfig,\r\n };\r\n this.pendingElements = [];\r\n this.elements = [];\r\n this.threeDElements = [];\r\n this.destroyed = false;\r\n this.camera = null;\r\n this.supports3d = true;\r\n this.rendererType = 'html';\r\n}\r\n\r\nextendPrototype([BaseRenderer], HybridRenderer);\r\n\r\nHybridRenderer.prototype.buildItem = SVGRenderer.prototype.buildItem;\r\n\r\nHybridRenderer.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.appendElementInPos = function (element, pos) {\r\n var newDOMElement = element.getBaseElement();\r\n if (!newDOMElement) {\r\n return;\r\n }\r\n var layer = this.layers[pos];\r\n if (!layer.ddd || !this.supports3d) {\r\n if (this.threeDElements) {\r\n this.addTo3dContainer(newDOMElement, pos);\r\n } else {\r\n var i = 0;\r\n var nextDOMElement;\r\n var nextLayer;\r\n var tmpDOMElement;\r\n while (i < pos) {\r\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\r\n nextLayer = this.elements[i];\r\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\r\n nextDOMElement = tmpDOMElement || nextDOMElement;\r\n }\r\n i += 1;\r\n }\r\n if (nextDOMElement) {\r\n if (!layer.ddd || !this.supports3d) {\r\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\r\n }\r\n } else if (!layer.ddd || !this.supports3d) {\r\n this.layerElement.appendChild(newDOMElement);\r\n }\r\n }\r\n } else {\r\n this.addTo3dContainer(newDOMElement, pos);\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.createShape = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGShapeElement(data, this.globalData, this);\r\n }\r\n return new HShapeElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createText = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGTextLottieElement(data, this.globalData, this);\r\n }\r\n return new HTextElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createCamera = function (data) {\r\n this.camera = new HCameraElement(data, this.globalData, this);\r\n return this.camera;\r\n};\r\n\r\nHybridRenderer.prototype.createImage = function (data) {\r\n if (!this.supports3d) {\r\n return new IImageElement(data, this.globalData, this);\r\n }\r\n return new HImageElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createComp = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n }\r\n return new HCompElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createSolid = function (data) {\r\n if (!this.supports3d) {\r\n return new ISolidElement(data, this.globalData, this);\r\n }\r\n return new HSolidElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createNull = SVGRenderer.prototype.createNull;\r\n\r\nHybridRenderer.prototype.getThreeDContainerByPos = function (pos) {\r\n var i = 0;\r\n var len = this.threeDElements.length;\r\n while (i < len) {\r\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\r\n return this.threeDElements[i].perspectiveElem;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n};\r\n\r\nHybridRenderer.prototype.createThreeDContainer = function (pos, type) {\r\n var perspectiveElem = createTag('div');\r\n var style;\r\n var containerStyle;\r\n styleDiv(perspectiveElem);\r\n var container = createTag('div');\r\n styleDiv(container);\r\n if (type === '3d') {\r\n style = perspectiveElem.style;\r\n style.width = this.globalData.compSize.w + 'px';\r\n style.height = this.globalData.compSize.h + 'px';\r\n var center = '50% 50%';\r\n style.webkitTransformOrigin = center;\r\n style.mozTransformOrigin = center;\r\n style.transformOrigin = center;\r\n containerStyle = container.style;\r\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\r\n containerStyle.transform = matrix;\r\n containerStyle.webkitTransform = matrix;\r\n }\r\n\r\n perspectiveElem.appendChild(container);\r\n // this.resizerElem.appendChild(perspectiveElem);\r\n var threeDContainerData = {\r\n container: container,\r\n perspectiveElem: perspectiveElem,\r\n startPos: pos,\r\n endPos: pos,\r\n type: type,\r\n };\r\n this.threeDElements.push(threeDContainerData);\r\n return threeDContainerData;\r\n};\r\n\r\nHybridRenderer.prototype.build3dContainers = function () {\r\n var i;\r\n var len = this.layers.length;\r\n var lastThreeDContainerData;\r\n var currentContainer = '';\r\n for (i = 0; i < len; i += 1) {\r\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\r\n if (currentContainer !== '3d') {\r\n currentContainer = '3d';\r\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\r\n }\r\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\r\n } else {\r\n if (currentContainer !== '2d') {\r\n currentContainer = '2d';\r\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\r\n }\r\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\r\n }\r\n }\r\n len = this.threeDElements.length;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.addTo3dContainer = function (elem, pos) {\r\n var i = 0;\r\n var len = this.threeDElements.length;\r\n while (i < len) {\r\n if (pos <= this.threeDElements[i].endPos) {\r\n var j = this.threeDElements[i].startPos;\r\n var nextElement;\r\n while (j < pos) {\r\n if (this.elements[j] && this.elements[j].getBaseElement) {\r\n nextElement = this.elements[j].getBaseElement();\r\n }\r\n j += 1;\r\n }\r\n if (nextElement) {\r\n this.threeDElements[i].container.insertBefore(elem, nextElement);\r\n } else {\r\n this.threeDElements[i].container.appendChild(elem);\r\n }\r\n break;\r\n }\r\n i += 1;\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.configAnimation = function (animData) {\r\n var resizerElem = createTag('div');\r\n var wrapper = this.animationItem.wrapper;\r\n var style = resizerElem.style;\r\n style.width = animData.w + 'px';\r\n style.height = animData.h + 'px';\r\n this.resizerElem = resizerElem;\r\n styleDiv(resizerElem);\r\n style.transformStyle = 'flat';\r\n style.mozTransformStyle = 'flat';\r\n style.webkitTransformStyle = 'flat';\r\n if (this.renderConfig.className) {\r\n resizerElem.setAttribute('class', this.renderConfig.className);\r\n }\r\n wrapper.appendChild(resizerElem);\r\n\r\n style.overflow = 'hidden';\r\n var svg = createNS('svg');\r\n svg.setAttribute('width', '1');\r\n svg.setAttribute('height', '1');\r\n styleDiv(svg);\r\n this.resizerElem.appendChild(svg);\r\n var defs = createNS('defs');\r\n svg.appendChild(defs);\r\n this.data = animData;\r\n // Mask animation\r\n this.setupGlobalData(animData, svg);\r\n this.globalData.defs = defs;\r\n this.layers = animData.layers;\r\n this.layerElement = this.resizerElem;\r\n this.build3dContainers();\r\n this.updateContainerSize();\r\n};\r\n\r\nHybridRenderer.prototype.destroy = function () {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.wrapper.innerText = '';\r\n }\r\n this.animationItem.container = null;\r\n this.globalData.defs = null;\r\n var i;\r\n var len = this.layers ? this.layers.length : 0;\r\n for (i = 0; i < len; i += 1) {\r\n this.elements[i].destroy();\r\n }\r\n this.elements.length = 0;\r\n this.destroyed = true;\r\n this.animationItem = null;\r\n};\r\n\r\nHybridRenderer.prototype.updateContainerSize = function () {\r\n var elementWidth = this.animationItem.wrapper.offsetWidth;\r\n var elementHeight = this.animationItem.wrapper.offsetHeight;\r\n var elementRel = elementWidth / elementHeight;\r\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\r\n var sx;\r\n var sy;\r\n var tx;\r\n var ty;\r\n if (animationRel > elementRel) {\r\n sx = elementWidth / (this.globalData.compSize.w);\r\n sy = elementWidth / (this.globalData.compSize.w);\r\n tx = 0;\r\n ty = ((elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2);\r\n } else {\r\n sx = elementHeight / (this.globalData.compSize.h);\r\n sy = elementHeight / (this.globalData.compSize.h);\r\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\r\n ty = 0;\r\n }\r\n var style = this.resizerElem.style;\r\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\r\n style.transform = style.webkitTransform;\r\n};\r\n\r\nHybridRenderer.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\r\n\r\nHybridRenderer.prototype.hide = function () {\r\n this.resizerElem.style.display = 'none';\r\n};\r\n\r\nHybridRenderer.prototype.show = function () {\r\n this.resizerElem.style.display = 'block';\r\n};\r\n\r\nHybridRenderer.prototype.initItems = function () {\r\n this.buildAllItems();\r\n if (this.camera) {\r\n this.camera.setup();\r\n } else {\r\n var cWidth = this.globalData.compSize.w;\r\n var cHeight = this.globalData.compSize.h;\r\n var i;\r\n var len = this.threeDElements.length;\r\n for (i = 0; i < len; i += 1) {\r\n var style = this.threeDElements[i].perspectiveElem.style;\r\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\r\n style.perspective = style.webkitPerspective;\r\n }\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.searchExtraCompositions = function (assets) {\r\n var i;\r\n var len = assets.length;\r\n var floatingContainer = createTag('div');\r\n for (i = 0; i < len; i += 1) {\r\n if (assets[i].xt) {\r\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\r\n comp.initExpressions();\r\n this.globalData.projectInterface.registerComposition(comp);\r\n }\r\n }\r\n};\r\n\r\n/* global createSizedArray, createElementID, PropertyFactory, ShapePropertyFactory, createNS, locationHref */\r\n\r\nfunction MaskElement(data, element, globalData) {\r\n this.data = data;\r\n this.element = element;\r\n this.globalData = globalData;\r\n this.storedData = [];\r\n this.masksProperties = this.data.masksProperties || [];\r\n this.maskElement = null;\r\n var defs = this.globalData.defs;\r\n var i;\r\n var len = this.masksProperties ? this.masksProperties.length : 0;\r\n this.viewData = createSizedArray(len);\r\n this.solidPath = '';\r\n\r\n var path;\r\n var properties = this.masksProperties;\r\n var count = 0;\r\n var currentMasks = [];\r\n var j;\r\n var jLen;\r\n var layerId = createElementID();\r\n var rect;\r\n var expansor;\r\n var feMorph;\r\n var x;\r\n var maskType = 'clipPath';\r\n var maskRef = 'clip-path';\r\n for (i = 0; i < len; i += 1) {\r\n if ((properties[i].mode !== 'a' && properties[i].mode !== 'n') || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\r\n maskType = 'mask';\r\n maskRef = 'mask';\r\n }\r\n\r\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\r\n rect = createNS('rect');\r\n rect.setAttribute('fill', '#ffffff');\r\n rect.setAttribute('width', this.element.comp.data.w || 0);\r\n rect.setAttribute('height', this.element.comp.data.h || 0);\r\n currentMasks.push(rect);\r\n } else {\r\n rect = null;\r\n }\r\n\r\n path = createNS('path');\r\n if (properties[i].mode === 'n') {\r\n // TODO move this to a factory or to a constructor\r\n this.viewData[i] = {\r\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\r\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\r\n elem: path,\r\n lastPath: '',\r\n };\r\n defs.appendChild(path);\r\n } else {\r\n count += 1;\r\n\r\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\r\n path.setAttribute('clip-rule', 'nonzero');\r\n var filterID;\r\n\r\n if (properties[i].x.k !== 0) {\r\n maskType = 'mask';\r\n maskRef = 'mask';\r\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\r\n filterID = createElementID();\r\n expansor = createNS('filter');\r\n expansor.setAttribute('id', filterID);\r\n feMorph = createNS('feMorphology');\r\n feMorph.setAttribute('operator', 'erode');\r\n feMorph.setAttribute('in', 'SourceGraphic');\r\n feMorph.setAttribute('radius', '0');\r\n expansor.appendChild(feMorph);\r\n defs.appendChild(expansor);\r\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\r\n } else {\r\n feMorph = null;\r\n x = null;\r\n }\r\n\r\n // TODO move this to a factory or to a constructor\r\n this.storedData[i] = {\r\n elem: path,\r\n x: x,\r\n expan: feMorph,\r\n lastPath: '',\r\n lastOperator: '',\r\n filterId: filterID,\r\n lastRadius: 0,\r\n };\r\n if (properties[i].mode === 'i') {\r\n jLen = currentMasks.length;\r\n var g = createNS('g');\r\n for (j = 0; j < jLen; j += 1) {\r\n g.appendChild(currentMasks[j]);\r\n }\r\n var mask = createNS('mask');\r\n mask.setAttribute('mask-type', 'alpha');\r\n mask.setAttribute('id', layerId + '_' + count);\r\n mask.appendChild(path);\r\n defs.appendChild(mask);\r\n g.setAttribute('mask', 'url(' + locationHref + '#' + layerId + '_' + count + ')');\r\n\r\n currentMasks.length = 0;\r\n currentMasks.push(g);\r\n } else {\r\n currentMasks.push(path);\r\n }\r\n if (properties[i].inv && !this.solidPath) {\r\n this.solidPath = this.createLayerSolidPath();\r\n }\r\n // TODO move this to a factory or to a constructor\r\n this.viewData[i] = {\r\n elem: path,\r\n lastPath: '',\r\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\r\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\r\n invRect: rect,\r\n };\r\n if (!this.viewData[i].prop.k) {\r\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\r\n }\r\n }\r\n }\r\n\r\n this.maskElement = createNS(maskType);\r\n\r\n len = currentMasks.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.maskElement.appendChild(currentMasks[i]);\r\n }\r\n\r\n if (count > 0) {\r\n this.maskElement.setAttribute('id', layerId);\r\n this.element.maskedElement.setAttribute(maskRef, 'url(' + locationHref + '#' + layerId + ')');\r\n defs.appendChild(this.maskElement);\r\n }\r\n if (this.viewData.length) {\r\n this.element.addRenderableComponent(this);\r\n }\r\n}\r\n\r\nMaskElement.prototype.getMaskProperty = function (pos) {\r\n return this.viewData[pos].prop;\r\n};\r\n\r\nMaskElement.prototype.renderFrame = function (isFirstFrame) {\r\n var finalMat = this.element.finalTransform.mat;\r\n var i;\r\n var len = this.masksProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.viewData[i].prop._mdf || isFirstFrame) {\r\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\r\n }\r\n if (this.viewData[i].op._mdf || isFirstFrame) {\r\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\r\n }\r\n if (this.masksProperties[i].mode !== 'n') {\r\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\r\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\r\n }\r\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\r\n var feMorph = this.storedData[i].expan;\r\n if (this.storedData[i].x.v < 0) {\r\n if (this.storedData[i].lastOperator !== 'erode') {\r\n this.storedData[i].lastOperator = 'erode';\r\n this.storedData[i].elem.setAttribute('filter', 'url(' + locationHref + '#' + this.storedData[i].filterId + ')');\r\n }\r\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\r\n } else {\r\n if (this.storedData[i].lastOperator !== 'dilate') {\r\n this.storedData[i].lastOperator = 'dilate';\r\n this.storedData[i].elem.setAttribute('filter', null);\r\n }\r\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nMaskElement.prototype.getMaskelement = function () {\r\n return this.maskElement;\r\n};\r\n\r\nMaskElement.prototype.createLayerSolidPath = function () {\r\n var path = 'M0,0 ';\r\n path += ' h' + this.globalData.compSize.w;\r\n path += ' v' + this.globalData.compSize.h;\r\n path += ' h-' + this.globalData.compSize.w;\r\n path += ' v-' + this.globalData.compSize.h + ' ';\r\n return path;\r\n};\r\n\r\nMaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\r\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\r\n var i;\r\n var len;\r\n len = pathNodes._length;\r\n for (i = 1; i < len; i += 1) {\r\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\r\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\r\n }\r\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\r\n if (pathNodes.c && len > 1) {\r\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\r\n }\r\n // pathNodes.__renderedString = pathString;\r\n\r\n if (viewData.lastPath !== pathString) {\r\n var pathShapeValue = '';\r\n if (viewData.elem) {\r\n if (pathNodes.c) {\r\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\r\n }\r\n viewData.elem.setAttribute('d', pathShapeValue);\r\n }\r\n viewData.lastPath = pathString;\r\n }\r\n};\r\n\r\nMaskElement.prototype.destroy = function () {\r\n this.element = null;\r\n this.globalData = null;\r\n this.maskElement = null;\r\n this.data = null;\r\n this.masksProperties = null;\r\n};\r\n\r\n/**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\r\n\r\nfunction HierarchyElement() {}\r\n\r\nHierarchyElement.prototype = {\r\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\r\n initHierarchy: function () {\r\n // element's parent list\r\n this.hierarchy = [];\r\n // if element is parent of another layer _isParent will be true\r\n this._isParent = false;\r\n this.checkParenting();\r\n },\r\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\r\n setHierarchy: function (hierarchy) {\r\n this.hierarchy = hierarchy;\r\n },\r\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\r\n setAsParent: function () {\r\n this._isParent = true;\r\n },\r\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\r\n checkParenting: function () {\r\n if (this.data.parent !== undefined) {\r\n this.comp.buildElementParenting(this, this.data.parent, []);\r\n }\r\n },\r\n};\r\n\r\n/**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\r\n\r\nfunction FrameElement() {}\r\n\r\nFrameElement.prototype = {\r\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\r\n initFrame: function () {\r\n // set to true when inpoint is rendered\r\n this._isFirstFrame = false;\r\n // list of animated properties\r\n this.dynamicProperties = [];\r\n // If layer has been modified in current tick this will be true\r\n this._mdf = false;\r\n },\r\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\r\n prepareProperties: function (num, isVisible) {\r\n var i;\r\n var len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (isVisible || (this._isParent && this.dynamicProperties[i].propType === 'transform')) {\r\n this.dynamicProperties[i].getValue();\r\n if (this.dynamicProperties[i]._mdf) {\r\n this.globalData._mdf = true;\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n },\r\n addDynamicProperty: function (prop) {\r\n if (this.dynamicProperties.indexOf(prop) === -1) {\r\n this.dynamicProperties.push(prop);\r\n }\r\n },\r\n};\r\n\r\n/* global TransformPropertyFactory, Matrix */\r\n\r\nfunction TransformElement() {}\r\n\r\nTransformElement.prototype = {\r\n initTransform: function () {\r\n this.finalTransform = {\r\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : { o: 0 },\r\n _matMdf: false,\r\n _opMdf: false,\r\n mat: new Matrix(),\r\n };\r\n if (this.data.ao) {\r\n this.finalTransform.mProp.autoOriented = true;\r\n }\r\n\r\n // TODO: check TYPE 11: Guided elements\r\n if (this.data.ty !== 11) {\r\n // this.createElements();\r\n }\r\n },\r\n renderTransform: function () {\r\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\r\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\r\n\r\n if (this.hierarchy) {\r\n var mat;\r\n var finalMat = this.finalTransform.mat;\r\n var i = 0;\r\n var len = this.hierarchy.length;\r\n // Checking if any of the transformation matrices in the hierarchy chain has changed.\r\n if (!this.finalTransform._matMdf) {\r\n while (i < len) {\r\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\r\n this.finalTransform._matMdf = true;\r\n break;\r\n }\r\n i += 1;\r\n }\r\n }\r\n\r\n if (this.finalTransform._matMdf) {\r\n mat = this.finalTransform.mProp.v.props;\r\n finalMat.cloneFromProps(mat);\r\n for (i = 0; i < len; i += 1) {\r\n mat = this.hierarchy[i].finalTransform.mProp.v.props;\r\n finalMat.transform(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5], mat[6], mat[7], mat[8], mat[9], mat[10], mat[11], mat[12], mat[13], mat[14], mat[15]);\r\n }\r\n }\r\n }\r\n },\r\n globalToLocal: function (pt) {\r\n var transforms = [];\r\n transforms.push(this.finalTransform);\r\n var flag = true;\r\n var comp = this.comp;\r\n while (flag) {\r\n if (comp.finalTransform) {\r\n if (comp.data.hasMask) {\r\n transforms.splice(0, 0, comp.finalTransform);\r\n }\r\n comp = comp.comp;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n var i;\r\n var len = transforms.length;\r\n var ptNew;\r\n for (i = 0; i < len; i += 1) {\r\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0);\r\n // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\r\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\r\n }\r\n return pt;\r\n },\r\n mHelper: new Matrix(),\r\n};\r\n\r\nfunction RenderableElement() {\r\n\r\n}\r\n\r\nRenderableElement.prototype = {\r\n initRenderable: function () {\r\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\r\n this.isInRange = false;\r\n // layer's display state\r\n this.hidden = false;\r\n // If layer's transparency equals 0, it can be hidden\r\n this.isTransparent = false;\r\n // list of animated components\r\n this.renderableComponents = [];\r\n },\r\n addRenderableComponent: function (component) {\r\n if (this.renderableComponents.indexOf(component) === -1) {\r\n this.renderableComponents.push(component);\r\n }\r\n },\r\n removeRenderableComponent: function (component) {\r\n if (this.renderableComponents.indexOf(component) !== -1) {\r\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\r\n }\r\n },\r\n prepareRenderableFrame: function (num) {\r\n this.checkLayerLimits(num);\r\n },\r\n checkTransparency: function () {\r\n if (this.finalTransform.mProp.o.v <= 0) {\r\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\r\n this.isTransparent = true;\r\n this.hide();\r\n }\r\n } else if (this.isTransparent) {\r\n this.isTransparent = false;\r\n this.show();\r\n }\r\n },\r\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\r\n checkLayerLimits: function (num) {\r\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\r\n if (this.isInRange !== true) {\r\n this.globalData._mdf = true;\r\n this._mdf = true;\r\n this.isInRange = true;\r\n this.show();\r\n }\r\n } else if (this.isInRange !== false) {\r\n this.globalData._mdf = true;\r\n this.isInRange = false;\r\n this.hide();\r\n }\r\n },\r\n renderRenderable: function () {\r\n var i;\r\n var len = this.renderableComponents.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\r\n }\r\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\r\n },\r\n sourceRectAtTime: function () {\r\n return {\r\n top: 0,\r\n left: 0,\r\n width: 100,\r\n height: 100,\r\n };\r\n },\r\n getLayerSize: function () {\r\n if (this.data.ty === 5) {\r\n return { w: this.data.textData.width, h: this.data.textData.height };\r\n }\r\n return { w: this.data.width, h: this.data.height };\r\n },\r\n};\r\n\r\n/* global extendPrototype, RenderableElement, createProxyFunction */\r\n\r\nfunction RenderableDOMElement() {}\r\n\r\n(function () {\r\n var _prototype = {\r\n initElement: function (data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n this.initRenderable();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n this.createContent();\r\n this.hide();\r\n },\r\n hide: function () {\r\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style.display = 'none';\r\n this.hidden = true;\r\n }\r\n },\r\n show: function () {\r\n if (this.isInRange && !this.isTransparent) {\r\n if (!this.data.hd) {\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style.display = 'block';\r\n }\r\n this.hidden = false;\r\n this._isFirstFrame = true;\r\n }\r\n },\r\n renderFrame: function () {\r\n // If it is exported as hidden (data.hd === true) no need to render\r\n // If it is not visible no need to render\r\n if (this.data.hd || this.hidden) {\r\n return;\r\n }\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.renderElement();\r\n this.renderInnerContent();\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n renderInnerContent: function () {},\r\n prepareFrame: function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n this.checkTransparency();\r\n },\r\n destroy: function () {\r\n this.innerElem = null;\r\n this.destroyBaseElement();\r\n },\r\n };\r\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\r\n}());\r\n\r\n/* exported ProcessedElement */\r\n\r\nfunction ProcessedElement(element, position) {\r\n this.elem = element;\r\n this.pos = position;\r\n}\r\n\r\n/* global createNS */\r\n\r\nfunction SVGStyleData(data, level) {\r\n this.data = data;\r\n this.type = data.ty;\r\n this.d = '';\r\n this.lvl = level;\r\n this._mdf = false;\r\n this.closed = data.hd === true;\r\n this.pElem = createNS('path');\r\n this.msElem = null;\r\n}\r\n\r\nSVGStyleData.prototype.reset = function () {\r\n this.d = '';\r\n this._mdf = false;\r\n};\r\n\r\nfunction SVGShapeData(transformers, level, shape) {\r\n this.caches = [];\r\n this.styles = [];\r\n this.transformers = transformers;\r\n this.lStr = '';\r\n this.sh = shape;\r\n this.lvl = level;\r\n // TODO find if there are some cases where _isAnimated can be false.\r\n // For now, since shapes add up with other shapes. They have to be calculated every time.\r\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\r\n this._isAnimated = !!shape.k;\r\n // TODO: commenting this for now since all shapes are animated\r\n var i = 0;\r\n var len = transformers.length;\r\n while (i < len) {\r\n if (transformers[i].mProps.dynamicProperties.length) {\r\n this._isAnimated = true;\r\n break;\r\n }\r\n i += 1;\r\n }\r\n}\r\n\r\nSVGShapeData.prototype.setAsAnimated = function () {\r\n this._isAnimated = true;\r\n};\r\n\r\n/* exported SVGTransformData */\r\n\r\nfunction SVGTransformData(mProps, op, container) {\r\n this.transform = {\r\n mProps: mProps,\r\n op: op,\r\n container: container,\r\n };\r\n this.elements = [];\r\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\r\n}\r\n\r\n/* global DashProperty, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction SVGStrokeStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\r\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\r\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\r\n this.style = styleOb;\r\n this._isAnimated = !!this._isAnimated;\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\r\n\r\n/* global PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction SVGFillStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\r\n this.style = styleOb;\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGFillStyleData);\r\n\r\n/* global PropertyFactory, degToRads, GradientProperty, createElementID, createNS, locationHref,\r\nextendPrototype, DynamicPropertyContainer, lineCapEnum, lineJoinEnum */\r\n\r\nfunction SVGGradientFillStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.initGradientData(elem, data, styleOb);\r\n}\r\n\r\nSVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\r\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\r\n this.h = PropertyFactory.getProp(elem, data.h || { k: 0 }, 0, 0.01, this);\r\n this.a = PropertyFactory.getProp(elem, data.a || { k: 0 }, 0, degToRads, this);\r\n this.g = new GradientProperty(elem, data.g, this);\r\n this.style = styleOb;\r\n this.stops = [];\r\n this.setGradientData(styleOb.pElem, data);\r\n this.setGradientOpacity(data, styleOb);\r\n this._isAnimated = !!this._isAnimated;\r\n};\r\n\r\nSVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\r\n var gradientId = createElementID();\r\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\r\n gfill.setAttribute('id', gradientId);\r\n gfill.setAttribute('spreadMethod', 'pad');\r\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n var stops = [];\r\n var stop;\r\n var j;\r\n var jLen;\r\n jLen = data.g.p * 4;\r\n for (j = 0; j < jLen; j += 4) {\r\n stop = createNS('stop');\r\n gfill.appendChild(stop);\r\n stops.push(stop);\r\n }\r\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + locationHref + '#' + gradientId + ')');\r\n this.gf = gfill;\r\n this.cst = stops;\r\n};\r\n\r\nSVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\r\n if (this.g._hasOpacity && !this.g._collapsable) {\r\n var stop;\r\n var j;\r\n var jLen;\r\n var mask = createNS('mask');\r\n var maskElement = createNS('path');\r\n mask.appendChild(maskElement);\r\n var opacityId = createElementID();\r\n var maskId = createElementID();\r\n mask.setAttribute('id', maskId);\r\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\r\n opFill.setAttribute('id', opacityId);\r\n opFill.setAttribute('spreadMethod', 'pad');\r\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\r\n var stops = this.stops;\r\n for (j = data.g.p * 4; j < jLen; j += 2) {\r\n stop = createNS('stop');\r\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\r\n opFill.appendChild(stop);\r\n stops.push(stop);\r\n }\r\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + locationHref + '#' + opacityId + ')');\r\n if (data.ty === 'gs') {\r\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\r\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\r\n if (data.lj === 1) {\r\n maskElement.setAttribute('stroke-miterlimit', data.ml);\r\n }\r\n }\r\n this.of = opFill;\r\n this.ms = mask;\r\n this.ost = stops;\r\n this.maskId = maskId;\r\n styleOb.msElem = maskElement;\r\n }\r\n};\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\r\n\r\n/* global PropertyFactory, DashProperty, extendPrototype, SVGGradientFillStyleData, DynamicPropertyContainer */\r\n\r\nfunction SVGGradientStrokeStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\r\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\r\n this.initGradientData(elem, data, styleOb);\r\n this._isAnimated = !!this._isAnimated;\r\n}\r\n\r\nextendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\r\n\r\n/* global createNS */\r\n/* exported ShapeGroupData */\r\n\r\nfunction ShapeGroupData() {\r\n this.it = [];\r\n this.prevViewData = [];\r\n this.gr = createNS('g');\r\n}\r\n\r\n/* global Matrix, buildShapeString, bmFloor */\r\n/* exported SVGElementsRenderer */\r\n\r\nvar SVGElementsRenderer = (function () {\r\n var _identityMatrix = new Matrix();\r\n var _matrixHelper = new Matrix();\r\n\r\n var ob = {\r\n createRenderFunction: createRenderFunction,\r\n };\r\n\r\n function createRenderFunction(data) {\r\n switch (data.ty) {\r\n case 'fl':\r\n return renderFill;\r\n case 'gf':\r\n return renderGradient;\r\n case 'gs':\r\n return renderGradientStroke;\r\n case 'st':\r\n return renderStroke;\r\n case 'sh':\r\n case 'el':\r\n case 'rc':\r\n case 'sr':\r\n return renderPath;\r\n case 'tr':\r\n return renderContentTransform;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n function renderContentTransform(styleData, itemData, isFirstFrame) {\r\n if (isFirstFrame || itemData.transform.op._mdf) {\r\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\r\n }\r\n if (isFirstFrame || itemData.transform.mProps._mdf) {\r\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\r\n }\r\n }\r\n\r\n function renderPath(styleData, itemData, isFirstFrame) {\r\n var j;\r\n var jLen;\r\n var pathStringTransformed;\r\n var redraw;\r\n var pathNodes;\r\n var l;\r\n var lLen = itemData.styles.length;\r\n var lvl = itemData.lvl;\r\n var paths;\r\n var mat;\r\n var props;\r\n var iterations;\r\n var k;\r\n for (l = 0; l < lLen; l += 1) {\r\n redraw = itemData.sh._mdf || isFirstFrame;\r\n if (itemData.styles[l].lvl < lvl) {\r\n mat = _matrixHelper.reset();\r\n iterations = lvl - itemData.styles[l].lvl;\r\n k = itemData.transformers.length - 1;\r\n while (!redraw && iterations > 0) {\r\n redraw = itemData.transformers[k].mProps._mdf || redraw;\r\n iterations -= 1;\r\n k -= 1;\r\n }\r\n if (redraw) {\r\n iterations = lvl - itemData.styles[l].lvl;\r\n k = itemData.transformers.length - 1;\r\n while (iterations > 0) {\r\n props = itemData.transformers[k].mProps.v.props;\r\n mat.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]);\r\n iterations -= 1;\r\n k -= 1;\r\n }\r\n }\r\n } else {\r\n mat = _identityMatrix;\r\n }\r\n paths = itemData.sh.paths;\r\n jLen = paths._length;\r\n if (redraw) {\r\n pathStringTransformed = '';\r\n for (j = 0; j < jLen; j += 1) {\r\n pathNodes = paths.shapes[j];\r\n if (pathNodes && pathNodes._length) {\r\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\r\n }\r\n }\r\n itemData.caches[l] = pathStringTransformed;\r\n } else {\r\n pathStringTransformed = itemData.caches[l];\r\n }\r\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\r\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\r\n }\r\n }\r\n\r\n function renderFill(styleData, itemData, isFirstFrame) {\r\n var styleElem = itemData.style;\r\n\r\n if (itemData.c._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\r\n }\r\n if (itemData.o._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\r\n }\r\n }\r\n\r\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\r\n renderGradient(styleData, itemData, isFirstFrame);\r\n renderStroke(styleData, itemData, isFirstFrame);\r\n }\r\n\r\n function renderGradient(styleData, itemData, isFirstFrame) {\r\n var gfill = itemData.gf;\r\n var hasOpacity = itemData.g._hasOpacity;\r\n var pt1 = itemData.s.v;\r\n var pt2 = itemData.e.v;\r\n\r\n if (itemData.o._mdf || isFirstFrame) {\r\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\r\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\r\n }\r\n if (itemData.s._mdf || isFirstFrame) {\r\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\r\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\r\n gfill.setAttribute(attr1, pt1[0]);\r\n gfill.setAttribute(attr2, pt1[1]);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute(attr1, pt1[0]);\r\n itemData.of.setAttribute(attr2, pt1[1]);\r\n }\r\n }\r\n var stops;\r\n var i;\r\n var len;\r\n var stop;\r\n if (itemData.g._cmdf || isFirstFrame) {\r\n stops = itemData.cst;\r\n var cValues = itemData.g.c;\r\n len = stops.length;\r\n for (i = 0; i < len; i += 1) {\r\n stop = stops[i];\r\n stop.setAttribute('offset', cValues[i * 4] + '%');\r\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\r\n }\r\n }\r\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\r\n var oValues = itemData.g.o;\r\n if (itemData.g._collapsable) {\r\n stops = itemData.cst;\r\n } else {\r\n stops = itemData.ost;\r\n }\r\n len = stops.length;\r\n for (i = 0; i < len; i += 1) {\r\n stop = stops[i];\r\n if (!itemData.g._collapsable) {\r\n stop.setAttribute('offset', oValues[i * 2] + '%');\r\n }\r\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\r\n }\r\n }\r\n if (styleData.t === 1) {\r\n if (itemData.e._mdf || isFirstFrame) {\r\n gfill.setAttribute('x2', pt2[0]);\r\n gfill.setAttribute('y2', pt2[1]);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('x2', pt2[0]);\r\n itemData.of.setAttribute('y2', pt2[1]);\r\n }\r\n }\r\n } else {\r\n var rad;\r\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\r\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n gfill.setAttribute('r', rad);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('r', rad);\r\n }\r\n }\r\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\r\n if (!rad) {\r\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n }\r\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\r\n\r\n var percent = itemData.h.v;\r\n if (percent >= 1) {\r\n percent = 0.99;\r\n } else if (percent <= -1) {\r\n percent = -0.99;\r\n }\r\n var dist = rad * percent;\r\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\r\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\r\n gfill.setAttribute('fx', x);\r\n gfill.setAttribute('fy', y);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('fx', x);\r\n itemData.of.setAttribute('fy', y);\r\n }\r\n }\r\n // gfill.setAttribute('fy','200');\r\n }\r\n }\r\n\r\n function renderStroke(styleData, itemData, isFirstFrame) {\r\n var styleElem = itemData.style;\r\n var d = itemData.d;\r\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\r\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\r\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\r\n }\r\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\r\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\r\n }\r\n if (itemData.o._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\r\n }\r\n if (itemData.w._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\r\n if (styleElem.msElem) {\r\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\r\n }\r\n }\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* global Matrix */\r\n\r\nfunction ShapeTransformManager() {\r\n this.sequences = {};\r\n this.sequenceList = [];\r\n this.transform_key_count = 0;\r\n}\r\n\r\nShapeTransformManager.prototype = {\r\n addTransformSequence: function (transforms) {\r\n var i;\r\n var len = transforms.length;\r\n var key = '_';\r\n for (i = 0; i < len; i += 1) {\r\n key += transforms[i].transform.key + '_';\r\n }\r\n var sequence = this.sequences[key];\r\n if (!sequence) {\r\n sequence = {\r\n transforms: [].concat(transforms),\r\n finalTransform: new Matrix(),\r\n _mdf: false,\r\n };\r\n this.sequences[key] = sequence;\r\n this.sequenceList.push(sequence);\r\n }\r\n return sequence;\r\n },\r\n processSequence: function (sequence, isFirstFrame) {\r\n var i = 0;\r\n var len = sequence.transforms.length;\r\n var _mdf = isFirstFrame;\r\n while (i < len && !isFirstFrame) {\r\n if (sequence.transforms[i].transform.mProps._mdf) {\r\n _mdf = true;\r\n break;\r\n }\r\n i += 1;\r\n }\r\n if (_mdf) {\r\n var props;\r\n sequence.finalTransform.reset();\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n props = sequence.transforms[i].transform.mProps.v.props;\r\n sequence.finalTransform.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]);\r\n }\r\n }\r\n sequence._mdf = _mdf;\r\n },\r\n processSequences: function (isFirstFrame) {\r\n var i;\r\n var len = this.sequenceList.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.processSequence(this.sequenceList[i], isFirstFrame);\r\n }\r\n },\r\n getNewKey: function () {\r\n this.transform_key_count += 1;\r\n return '_' + this.transform_key_count;\r\n },\r\n};\r\n\r\n/* global ShapePropertyFactory, SVGShapeData */\r\n\r\nfunction CVShapeData(element, data, styles, transformsManager) {\r\n this.styledShapes = [];\r\n this.tr = [0, 0, 0, 0, 0, 0];\r\n var ty = 4;\r\n if (data.ty === 'rc') {\r\n ty = 5;\r\n } else if (data.ty === 'el') {\r\n ty = 6;\r\n } else if (data.ty === 'sr') {\r\n ty = 7;\r\n }\r\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\r\n var i;\r\n var len = styles.length;\r\n var styledShape;\r\n for (i = 0; i < len; i += 1) {\r\n if (!styles[i].closed) {\r\n styledShape = {\r\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\r\n trNodes: [],\r\n };\r\n this.styledShapes.push(styledShape);\r\n styles[i].elements.push(styledShape);\r\n }\r\n }\r\n}\r\n\r\nCVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\r\n\r\n/* global LayerExpressionInterface, EffectsExpressionInterface, CompExpressionInterface, ShapeExpressionInterface,\r\nTextExpressionInterface, getBlendMode,createElementID, EffectsManager */\r\n\r\nfunction BaseElement() {\r\n}\r\n\r\nBaseElement.prototype = {\r\n checkMasks: function () {\r\n if (!this.data.hasMask) {\r\n return false;\r\n }\r\n var i = 0;\r\n var len = this.data.masksProperties.length;\r\n while (i < len) {\r\n if ((this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false)) {\r\n return true;\r\n }\r\n i += 1;\r\n }\r\n return false;\r\n },\r\n initExpressions: function () {\r\n this.layerInterface = LayerExpressionInterface(this);\r\n if (this.data.hasMask && this.maskManager) {\r\n this.layerInterface.registerMaskInterface(this.maskManager);\r\n }\r\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\r\n this.layerInterface.registerEffectsInterface(effectsInterface);\r\n\r\n if (this.data.ty === 0 || this.data.xt) {\r\n this.compInterface = CompExpressionInterface(this);\r\n } else if (this.data.ty === 4) {\r\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\r\n this.layerInterface.content = this.layerInterface.shapeInterface;\r\n } else if (this.data.ty === 5) {\r\n this.layerInterface.textInterface = TextExpressionInterface(this);\r\n this.layerInterface.text = this.layerInterface.textInterface;\r\n }\r\n },\r\n setBlendMode: function () {\r\n var blendModeValue = getBlendMode(this.data.bm);\r\n var elem = this.baseElement || this.layerElement;\r\n\r\n elem.style['mix-blend-mode'] = blendModeValue;\r\n },\r\n initBaseData: function (data, globalData, comp) {\r\n this.globalData = globalData;\r\n this.comp = comp;\r\n this.data = data;\r\n this.layerId = createElementID();\r\n\r\n // Stretch factor for old animations missing this property.\r\n if (!this.data.sr) {\r\n this.data.sr = 1;\r\n }\r\n // effects manager\r\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\r\n },\r\n getType: function () {\r\n return this.type;\r\n },\r\n sourceRectAtTime: function () {},\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HierarchyElement, FrameElement */\r\n\r\nfunction NullElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initFrame();\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n}\r\n\r\nNullElement.prototype.prepareFrame = function (num) {\r\n this.prepareProperties(num, true);\r\n};\r\n\r\nNullElement.prototype.renderFrame = function () {\r\n};\r\n\r\nNullElement.prototype.getBaseElement = function () {\r\n return null;\r\n};\r\n\r\nNullElement.prototype.destroy = function () {\r\n};\r\n\r\nNullElement.prototype.sourceRectAtTime = function () {\r\n};\r\n\r\nNullElement.prototype.hide = function () {\r\n};\r\n\r\nextendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\r\n\r\n/* global filtersFactory, featureSupport, filtersFactory, createElementID, createNS, MaskElement, SVGEffects, locationHref */\r\n\r\nfunction SVGBaseElement() {\r\n}\r\n\r\nSVGBaseElement.prototype = {\r\n initRendererElement: function () {\r\n this.layerElement = createNS('g');\r\n },\r\n createContainerElements: function () {\r\n this.matteElement = createNS('g');\r\n this.transformedElement = this.layerElement;\r\n this.maskedElement = this.layerElement;\r\n this._sizeChanged = false;\r\n var layerElementParent = null;\r\n // If this layer acts as a mask for the following layer\r\n var filId;\r\n var fil;\r\n var gg;\r\n if (this.data.td) {\r\n if (this.data.td == 3 || this.data.td == 1) { // eslint-disable-line eqeqeq\r\n var masker = createNS('mask');\r\n masker.setAttribute('id', this.layerId);\r\n masker.setAttribute('mask-type', this.data.td == 3 ? 'luminance' : 'alpha'); // eslint-disable-line eqeqeq\r\n masker.appendChild(this.layerElement);\r\n layerElementParent = masker;\r\n this.globalData.defs.appendChild(masker);\r\n // This is only for IE and Edge when mask if of type alpha\r\n if (!featureSupport.maskType && this.data.td == 1) { // eslint-disable-line eqeqeq\r\n masker.setAttribute('mask-type', 'luminance');\r\n filId = createElementID();\r\n fil = filtersFactory.createFilter(filId);\r\n this.globalData.defs.appendChild(fil);\r\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\r\n gg = createNS('g');\r\n gg.appendChild(this.layerElement);\r\n layerElementParent = gg;\r\n masker.appendChild(gg);\r\n gg.setAttribute('filter', 'url(' + locationHref + '#' + filId + ')');\r\n }\r\n } else if (this.data.td == 2) { // eslint-disable-line eqeqeq\r\n var maskGroup = createNS('mask');\r\n maskGroup.setAttribute('id', this.layerId);\r\n maskGroup.setAttribute('mask-type', 'alpha');\r\n var maskGrouper = createNS('g');\r\n maskGroup.appendChild(maskGrouper);\r\n filId = createElementID();\r\n fil = filtersFactory.createFilter(filId);\r\n /// /\r\n\r\n // This solution doesn't work on Android when meta tag with viewport attribute is set\r\n /* var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values','1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1');\r\n fil.appendChild(feColorMatrix); */\r\n /// /\r\n var feCTr = createNS('feComponentTransfer');\r\n feCTr.setAttribute('in', 'SourceGraphic');\r\n fil.appendChild(feCTr);\r\n var feFunc = createNS('feFuncA');\r\n feFunc.setAttribute('type', 'table');\r\n feFunc.setAttribute('tableValues', '1.0 0.0');\r\n feCTr.appendChild(feFunc);\r\n /// /\r\n this.globalData.defs.appendChild(fil);\r\n var alphaRect = createNS('rect');\r\n alphaRect.setAttribute('width', this.comp.data.w);\r\n alphaRect.setAttribute('height', this.comp.data.h);\r\n alphaRect.setAttribute('x', '0');\r\n alphaRect.setAttribute('y', '0');\r\n alphaRect.setAttribute('fill', '#ffffff');\r\n alphaRect.setAttribute('opacity', '0');\r\n maskGrouper.setAttribute('filter', 'url(' + locationHref + '#' + filId + ')');\r\n maskGrouper.appendChild(alphaRect);\r\n maskGrouper.appendChild(this.layerElement);\r\n layerElementParent = maskGrouper;\r\n if (!featureSupport.maskType) {\r\n maskGroup.setAttribute('mask-type', 'luminance');\r\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\r\n gg = createNS('g');\r\n maskGrouper.appendChild(alphaRect);\r\n gg.appendChild(this.layerElement);\r\n layerElementParent = gg;\r\n maskGrouper.appendChild(gg);\r\n }\r\n this.globalData.defs.appendChild(maskGroup);\r\n }\r\n } else if (this.data.tt) {\r\n this.matteElement.appendChild(this.layerElement);\r\n layerElementParent = this.matteElement;\r\n this.baseElement = this.matteElement;\r\n } else {\r\n this.baseElement = this.layerElement;\r\n }\r\n if (this.data.ln) {\r\n this.layerElement.setAttribute('id', this.data.ln);\r\n }\r\n if (this.data.cl) {\r\n this.layerElement.setAttribute('class', this.data.cl);\r\n }\r\n // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\r\n if (this.data.ty === 0 && !this.data.hd) {\r\n var cp = createNS('clipPath');\r\n var pt = createNS('path');\r\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\r\n var clipId = createElementID();\r\n cp.setAttribute('id', clipId);\r\n cp.appendChild(pt);\r\n this.globalData.defs.appendChild(cp);\r\n\r\n if (this.checkMasks()) {\r\n var cpGroup = createNS('g');\r\n cpGroup.setAttribute('clip-path', 'url(' + locationHref + '#' + clipId + ')');\r\n cpGroup.appendChild(this.layerElement);\r\n this.transformedElement = cpGroup;\r\n if (layerElementParent) {\r\n layerElementParent.appendChild(this.transformedElement);\r\n } else {\r\n this.baseElement = this.transformedElement;\r\n }\r\n } else {\r\n this.layerElement.setAttribute('clip-path', 'url(' + locationHref + '#' + clipId + ')');\r\n }\r\n }\r\n if (this.data.bm !== 0) {\r\n this.setBlendMode();\r\n }\r\n },\r\n renderElement: function () {\r\n if (this.finalTransform._matMdf) {\r\n this.transformedElement.setAttribute('transform', this.finalTransform.mat.to2dCSS());\r\n }\r\n if (this.finalTransform._opMdf) {\r\n this.transformedElement.setAttribute('opacity', this.finalTransform.mProp.o.v);\r\n }\r\n },\r\n destroyBaseElement: function () {\r\n this.layerElement = null;\r\n this.matteElement = null;\r\n this.maskManager.destroy();\r\n },\r\n getBaseElement: function () {\r\n if (this.data.hd) {\r\n return null;\r\n }\r\n return this.baseElement;\r\n },\r\n createRenderableComponents: function () {\r\n this.maskManager = new MaskElement(this.data, this, this.globalData);\r\n this.renderableEffectsManager = new SVGEffects(this);\r\n },\r\n setMatte: function (id) {\r\n if (!this.matteElement) {\r\n return;\r\n }\r\n this.matteElement.setAttribute('mask', 'url(' + locationHref + '#' + id + ')');\r\n },\r\n};\r\n\r\n/* global ProcessedElement */\r\n\r\nfunction IShapeElement() {\r\n}\r\n\r\nIShapeElement.prototype = {\r\n addShapeToModifiers: function (data) {\r\n var i;\r\n var len = this.shapeModifiers.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.shapeModifiers[i].addShape(data);\r\n }\r\n },\r\n isShapeInAnimatedModifiers: function (data) {\r\n var i = 0;\r\n var len = this.shapeModifiers.length;\r\n while (i < len) {\r\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n renderModifiers: function () {\r\n if (!this.shapeModifiers.length) {\r\n return;\r\n }\r\n var i;\r\n var len = this.shapes.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.shapes[i].sh.reset();\r\n }\r\n\r\n len = this.shapeModifiers.length;\r\n var shouldBreakProcess;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame);\r\n // workaround to fix cases where a repeater resets the shape so the following processes get called twice\r\n // TODO: find a better solution for this\r\n if (shouldBreakProcess) {\r\n break;\r\n }\r\n }\r\n },\r\n\r\n searchProcessedElement: function (elem) {\r\n var elements = this.processedElements;\r\n var i = 0;\r\n var len = elements.length;\r\n while (i < len) {\r\n if (elements[i].elem === elem) {\r\n return elements[i].pos;\r\n }\r\n i += 1;\r\n }\r\n return 0;\r\n },\r\n addProcessedElement: function (elem, pos) {\r\n var elements = this.processedElements;\r\n var i = elements.length;\r\n while (i) {\r\n i -= 1;\r\n if (elements[i].elem === elem) {\r\n elements[i].pos = pos;\r\n return;\r\n }\r\n }\r\n elements.push(new ProcessedElement(elem, pos));\r\n },\r\n prepareFrame: function (num) {\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n },\r\n};\r\n\r\n/* global TextProperty, TextAnimatorProperty, buildShapeString, LetterProps */\r\n\r\nfunction ITextElement() {\r\n}\r\n\r\nITextElement.prototype.initElement = function (data, globalData, comp) {\r\n this.lettersChangedFlag = true;\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\r\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n this.initRenderable();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n this.createContent();\r\n this.hide();\r\n this.textAnimator.searchProperties(this.dynamicProperties);\r\n};\r\n\r\nITextElement.prototype.prepareFrame = function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\r\n this.buildNewText();\r\n this.textProperty._isFirstFrame = false;\r\n this.textProperty._mdf = false;\r\n }\r\n};\r\n\r\nITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\r\n var j;\r\n var jLen = shapes.length;\r\n var pathNodes;\r\n var shapeStr = '';\r\n for (j = 0; j < jLen; j += 1) {\r\n pathNodes = shapes[j].ks.k;\r\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\r\n }\r\n return shapeStr;\r\n};\r\n\r\nITextElement.prototype.updateDocumentData = function (newData, index) {\r\n this.textProperty.updateDocumentData(newData, index);\r\n};\r\n\r\nITextElement.prototype.canResizeFont = function (_canResize) {\r\n this.textProperty.canResizeFont(_canResize);\r\n};\r\n\r\nITextElement.prototype.setMinimumFontSize = function (_fontSize) {\r\n this.textProperty.setMinimumFontSize(_fontSize);\r\n};\r\n\r\nITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\r\n if (documentData.ps) {\r\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\r\n }\r\n matrixHelper.translate(0, -documentData.ls, 0);\r\n switch (documentData.j) {\r\n case 1:\r\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\r\n break;\r\n case 2:\r\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\r\n break;\r\n default:\r\n break;\r\n }\r\n matrixHelper.translate(xPos, yPos, 0);\r\n};\r\n\r\nITextElement.prototype.buildColor = function (colorData) {\r\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\r\n};\r\n\r\nITextElement.prototype.emptyProp = new LetterProps();\r\n\r\nITextElement.prototype.destroy = function () {\r\n\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement */\r\n\r\nfunction ICompElement() {}\r\n\r\nextendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\r\n\r\nICompElement.prototype.initElement = function (data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initTransform(data, globalData, comp);\r\n this.initRenderable();\r\n this.initHierarchy();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n if (this.data.xt || !globalData.progressiveLoad) {\r\n this.buildAllItems();\r\n }\r\n this.hide();\r\n};\r\n\r\n/* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n}; */\r\n\r\nICompElement.prototype.prepareFrame = function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n if (!this.isInRange && !this.data.xt) {\r\n return;\r\n }\r\n\r\n if (!this.tm._placeholder) {\r\n var timeRemapped = this.tm.v;\r\n if (timeRemapped === this.data.op) {\r\n timeRemapped = this.data.op - 1;\r\n }\r\n this.renderedFrame = timeRemapped;\r\n } else {\r\n this.renderedFrame = num / this.data.sr;\r\n }\r\n var i;\r\n var len = this.elements.length;\r\n if (!this.completeLayers) {\r\n this.checkLayers(this.renderedFrame);\r\n }\r\n // This iteration needs to be backwards because of how expressions connect between each other\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\r\n if (this.elements[i]._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.renderInnerContent = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.setElements = function (elems) {\r\n this.elements = elems;\r\n};\r\n\r\nICompElement.prototype.getElements = function () {\r\n return this.elements;\r\n};\r\n\r\nICompElement.prototype.destroyElements = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.destroy = function () {\r\n this.destroyElements();\r\n this.destroyBaseElement();\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, createNS */\r\n\r\nfunction IImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initElement(data, globalData, comp);\r\n this.sourceRect = {\r\n top: 0, left: 0, width: this.assetData.w, height: this.assetData.h,\r\n };\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\r\n\r\nIImageElement.prototype.createContent = function () {\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n\r\n this.innerElem = createNS('image');\r\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\r\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\r\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\r\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\r\n\r\n this.layerElement.appendChild(this.innerElem);\r\n};\r\n\r\nIImageElement.prototype.sourceRectAtTime = function () {\r\n return this.sourceRect;\r\n};\r\n\r\n/* global extendPrototype, IImageElement, createNS */\r\n\r\nfunction ISolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([IImageElement], ISolidElement);\r\n\r\nISolidElement.prototype.createContent = function () {\r\n var rect = createNS('rect');\r\n /// /rect.style.width = this.data.sw;\r\n /// /rect.style.height = this.data.sh;\r\n /// /rect.style.fill = this.data.sc;\r\n rect.setAttribute('width', this.data.sw);\r\n rect.setAttribute('height', this.data.sh);\r\n rect.setAttribute('fill', this.data.sc);\r\n this.layerElement.appendChild(rect);\r\n};\r\n\r\n/* global PropertyFactory, extendPrototype, RenderableElement, BaseElement, FrameElement */\r\n\r\nfunction AudioElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initRenderable();\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initBaseData(data, globalData, comp);\r\n this._isPlaying = false;\r\n this._canPlay = false;\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n this.audio = this.globalData.audioController.createAudio(assetPath);\r\n this._currentTime = 0;\r\n this.globalData.audioController.addAudio(this);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nAudioElement.prototype.prepareFrame = function (num) {\r\n this.prepareRenderableFrame(num, true);\r\n this.prepareProperties(num, true);\r\n if (!this.tm._placeholder) {\r\n var timeRemapped = this.tm.v;\r\n this._currentTime = timeRemapped;\r\n } else {\r\n this._currentTime = num / this.data.sr;\r\n }\r\n};\r\n\r\nextendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\r\n\r\nAudioElement.prototype.renderFrame = function () {\r\n if (this.isInRange && this._canPlay) {\r\n if (!this._isPlaying) {\r\n this.audio.play();\r\n this.audio.seek(this._currentTime / this.globalData.frameRate);\r\n this._isPlaying = true;\r\n } else if (!this.audio.playing()\r\n || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1\r\n ) {\r\n this.audio.seek(this._currentTime / this.globalData.frameRate);\r\n }\r\n }\r\n};\r\n\r\nAudioElement.prototype.show = function () {\r\n // this.audio.play()\r\n};\r\n\r\nAudioElement.prototype.hide = function () {\r\n this.audio.pause();\r\n this._isPlaying = false;\r\n};\r\n\r\nAudioElement.prototype.pause = function () {\r\n this.audio.pause();\r\n this._isPlaying = false;\r\n this._canPlay = false;\r\n};\r\n\r\nAudioElement.prototype.resume = function () {\r\n this._canPlay = true;\r\n};\r\n\r\nAudioElement.prototype.setRate = function (rateValue) {\r\n this.audio.rate(rateValue);\r\n};\r\n\r\nAudioElement.prototype.volume = function (volumeValue) {\r\n this.audio.volume(volumeValue);\r\n};\r\n\r\nAudioElement.prototype.getBaseElement = function () {\r\n return null;\r\n};\r\n\r\nAudioElement.prototype.destroy = function () {\r\n};\r\n\r\nAudioElement.prototype.sourceRectAtTime = function () {\r\n};\r\n\r\nAudioElement.prototype.initExpressions = function () {\r\n};\r\n\r\n/* global extendPrototype, RenderableElement, BaseElement, FrameElement, FootageInterface */\r\n\r\nfunction FootageElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initRenderable();\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\r\n this.initBaseData(data, globalData, comp);\r\n}\r\n\r\nFootageElement.prototype.prepareFrame = function () {\r\n};\r\n\r\nextendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\r\n\r\nFootageElement.prototype.getBaseElement = function () {\r\n return null;\r\n};\r\n\r\nFootageElement.prototype.renderFrame = function () {\r\n};\r\n\r\nFootageElement.prototype.destroy = function () {\r\n};\r\n\r\nFootageElement.prototype.initExpressions = function () {\r\n this.layerInterface = FootageInterface(this);\r\n};\r\n\r\nFootageElement.prototype.getFootageData = function () {\r\n return this.footageData;\r\n};\r\n\r\n/* global createSizedArray, PropertyFactory, extendPrototype, SVGRenderer, ICompElement, SVGBaseElement */\r\n\r\nfunction SVGCompElement(data, globalData, comp) {\r\n this.layers = data.layers;\r\n this.supports3d = true;\r\n this.completeLayers = false;\r\n this.pendingElements = [];\r\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\r\n // this.layerElement = createNS('g');\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nextendPrototype([SVGRenderer, ICompElement, SVGBaseElement], SVGCompElement);\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement,\r\nRenderableDOMElement, ITextElement, createSizedArray, createNS */\r\n\r\nfunction SVGTextLottieElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.renderType = 'svg';\r\n this.initElement(data, globalData, comp);\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\r\n\r\nSVGTextLottieElement.prototype.createContent = function () {\r\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\r\n this.textContainer = createNS('text');\r\n }\r\n};\r\n\r\nSVGTextLottieElement.prototype.buildTextContents = function (textArray) {\r\n var i = 0;\r\n var len = textArray.length;\r\n var textContents = [];\r\n var currentTextContent = '';\r\n while (i < len) {\r\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\r\n textContents.push(currentTextContent);\r\n currentTextContent = '';\r\n } else {\r\n currentTextContent += textArray[i];\r\n }\r\n i += 1;\r\n }\r\n textContents.push(currentTextContent);\r\n return textContents;\r\n};\r\n\r\nSVGTextLottieElement.prototype.buildNewText = function () {\r\n var i;\r\n var len;\r\n\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\r\n if (documentData.fc) {\r\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\r\n } else {\r\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\r\n }\r\n if (documentData.sc) {\r\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\r\n this.layerElement.setAttribute('stroke-width', documentData.sw);\r\n }\r\n this.layerElement.setAttribute('font-size', documentData.finalSize);\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n if (fontData.fClass) {\r\n this.layerElement.setAttribute('class', fontData.fClass);\r\n } else {\r\n this.layerElement.setAttribute('font-family', fontData.fFamily);\r\n var fWeight = documentData.fWeight;\r\n var fStyle = documentData.fStyle;\r\n this.layerElement.setAttribute('font-style', fStyle);\r\n this.layerElement.setAttribute('font-weight', fWeight);\r\n }\r\n this.layerElement.setAttribute('aria-label', documentData.t);\r\n\r\n var letters = documentData.l || [];\r\n var usesGlyphs = !!this.globalData.fontManager.chars;\r\n len = letters.length;\r\n\r\n var tSpan;\r\n var matrixHelper = this.mHelper;\r\n var shapes;\r\n var shapeStr = '';\r\n var singleShape = this.data.singleShape;\r\n var xPos = 0;\r\n var yPos = 0;\r\n var firstLine = true;\r\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\r\n if (singleShape && !usesGlyphs && !documentData.sz) {\r\n var tElement = this.textContainer;\r\n var justify = 'start';\r\n switch (documentData.j) {\r\n case 1:\r\n justify = 'end';\r\n break;\r\n case 2:\r\n justify = 'middle';\r\n break;\r\n default:\r\n justify = 'start';\r\n break;\r\n }\r\n tElement.setAttribute('text-anchor', justify);\r\n tElement.setAttribute('letter-spacing', trackingOffset);\r\n var textContent = this.buildTextContents(documentData.finalText);\r\n len = textContent.length;\r\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\r\n for (i = 0; i < len; i += 1) {\r\n tSpan = this.textSpans[i] || createNS('tspan');\r\n tSpan.textContent = textContent[i];\r\n tSpan.setAttribute('x', 0);\r\n tSpan.setAttribute('y', yPos);\r\n tSpan.style.display = 'inherit';\r\n tElement.appendChild(tSpan);\r\n this.textSpans[i] = tSpan;\r\n yPos += documentData.finalLineHeight;\r\n }\r\n\r\n this.layerElement.appendChild(tElement);\r\n } else {\r\n var cachedSpansLength = this.textSpans.length;\r\n var shapeData;\r\n var charData;\r\n for (i = 0; i < len; i += 1) {\r\n if (!usesGlyphs || !singleShape || i === 0) {\r\n tSpan = cachedSpansLength > i ? this.textSpans[i] : createNS(usesGlyphs ? 'path' : 'text');\r\n if (cachedSpansLength <= i) {\r\n tSpan.setAttribute('stroke-linecap', 'butt');\r\n tSpan.setAttribute('stroke-linejoin', 'round');\r\n tSpan.setAttribute('stroke-miterlimit', '4');\r\n this.textSpans[i] = tSpan;\r\n this.layerElement.appendChild(tSpan);\r\n }\r\n tSpan.style.display = 'inherit';\r\n }\r\n\r\n matrixHelper.reset();\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n if (singleShape) {\r\n if (letters[i].n) {\r\n xPos = -trackingOffset;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n firstLine = false;\r\n }\r\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n xPos += letters[i].l || 0;\r\n // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\r\n xPos += trackingOffset;\r\n }\r\n if (usesGlyphs) {\r\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n shapeData = (charData && charData.data) || {};\r\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\r\n if (!singleShape) {\r\n tSpan.setAttribute('d', this.createPathShape(matrixHelper, shapes));\r\n } else {\r\n shapeStr += this.createPathShape(matrixHelper, shapes);\r\n }\r\n } else {\r\n if (singleShape) {\r\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\r\n }\r\n tSpan.textContent = letters[i].val;\r\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\r\n }\r\n //\r\n }\r\n if (singleShape && tSpan) {\r\n tSpan.setAttribute('d', shapeStr);\r\n }\r\n }\r\n while (i < this.textSpans.length) {\r\n this.textSpans[i].style.display = 'none';\r\n i += 1;\r\n }\r\n\r\n this._sizeChanged = true;\r\n};\r\n\r\nSVGTextLottieElement.prototype.sourceRectAtTime = function () {\r\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\r\n this.renderInnerContent();\r\n if (this._sizeChanged) {\r\n this._sizeChanged = false;\r\n var textBox = this.layerElement.getBBox();\r\n this.bbox = {\r\n top: textBox.y,\r\n left: textBox.x,\r\n width: textBox.width,\r\n height: textBox.height,\r\n };\r\n }\r\n return this.bbox;\r\n};\r\n\r\nSVGTextLottieElement.prototype.renderInnerContent = function () {\r\n if (!this.data.singleShape) {\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\r\n this._sizeChanged = true;\r\n var i;\r\n var len;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n\r\n var letters = this.textProperty.currentData.l;\r\n\r\n len = letters.length;\r\n var renderedLetter;\r\n var textSpan;\r\n for (i = 0; i < len; i += 1) {\r\n if (!letters[i].n) {\r\n renderedLetter = renderedLetters[i];\r\n textSpan = this.textSpans[i];\r\n if (renderedLetter._mdf.m) {\r\n textSpan.setAttribute('transform', renderedLetter.m);\r\n }\r\n if (renderedLetter._mdf.o) {\r\n textSpan.setAttribute('opacity', renderedLetter.o);\r\n }\r\n if (renderedLetter._mdf.sw) {\r\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\r\n }\r\n if (renderedLetter._mdf.sc) {\r\n textSpan.setAttribute('stroke', renderedLetter.sc);\r\n }\r\n if (renderedLetter._mdf.fc) {\r\n textSpan.setAttribute('fill', renderedLetter.fc);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement,\r\nFrameElement, RenderableDOMElement, Matrix, SVGStyleData, SVGStrokeStyleData, SVGFillStyleData,\r\nSVGGradientFillStyleData, SVGGradientStrokeStyleData, locationHref, getBlendMode, ShapeGroupData,\r\nTransformPropertyFactory, SVGTransformData, ShapePropertyFactory, SVGShapeData, SVGElementsRenderer, ShapeModifiers,\r\nlineCapEnum, lineJoinEnum */\r\n\r\nfunction SVGShapeElement(data, globalData, comp) {\r\n // List of drawable elements\r\n this.shapes = [];\r\n // Full shape data\r\n this.shapesData = data.shapes;\r\n // List of styles that will be applied to shapes\r\n this.stylesList = [];\r\n // List of modifiers that will be applied to shapes\r\n this.shapeModifiers = [];\r\n // List of items in shape tree\r\n this.itemsData = [];\r\n // List of items in previous shape tree\r\n this.processedElements = [];\r\n // List of animated components\r\n this.animatedContents = [];\r\n this.initElement(data, globalData, comp);\r\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n // List of elements that have been created\r\n this.prevViewData = [];\r\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\r\n\r\nSVGShapeElement.prototype.initSecondaryElement = function () {\r\n};\r\n\r\nSVGShapeElement.prototype.identityMatrix = new Matrix();\r\n\r\nSVGShapeElement.prototype.buildExpressionInterface = function () {};\r\n\r\nSVGShapeElement.prototype.createContent = function () {\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\r\n this.filterUniqueShapes();\r\n};\r\n\r\n/*\r\nThis method searches for multiple shapes that affect a single element and one of them is animated\r\n*/\r\nSVGShapeElement.prototype.filterUniqueShapes = function () {\r\n var i;\r\n var len = this.shapes.length;\r\n var shape;\r\n var j;\r\n var jLen = this.stylesList.length;\r\n var style;\r\n var tempShapes = [];\r\n var areAnimated = false;\r\n for (j = 0; j < jLen; j += 1) {\r\n style = this.stylesList[j];\r\n areAnimated = false;\r\n tempShapes.length = 0;\r\n for (i = 0; i < len; i += 1) {\r\n shape = this.shapes[i];\r\n if (shape.styles.indexOf(style) !== -1) {\r\n tempShapes.push(shape);\r\n areAnimated = shape._isAnimated || areAnimated;\r\n }\r\n }\r\n if (tempShapes.length > 1 && areAnimated) {\r\n this.setShapesAsAnimated(tempShapes);\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\r\n var i;\r\n var len = shapes.length;\r\n for (i = 0; i < len; i += 1) {\r\n shapes[i].setAsAnimated();\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.createStyleElement = function (data, level) {\r\n // TODO: prevent drawing of hidden styles\r\n var elementData;\r\n var styleOb = new SVGStyleData(data, level);\r\n\r\n var pathElement = styleOb.pElem;\r\n if (data.ty === 'st') {\r\n elementData = new SVGStrokeStyleData(this, data, styleOb);\r\n } else if (data.ty === 'fl') {\r\n elementData = new SVGFillStyleData(this, data, styleOb);\r\n } else if (data.ty === 'gf' || data.ty === 'gs') {\r\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\r\n elementData = new GradientConstructor(this, data, styleOb);\r\n this.globalData.defs.appendChild(elementData.gf);\r\n if (elementData.maskId) {\r\n this.globalData.defs.appendChild(elementData.ms);\r\n this.globalData.defs.appendChild(elementData.of);\r\n pathElement.setAttribute('mask', 'url(' + locationHref + '#' + elementData.maskId + ')');\r\n }\r\n }\r\n\r\n if (data.ty === 'st' || data.ty === 'gs') {\r\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\r\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\r\n pathElement.setAttribute('fill-opacity', '0');\r\n if (data.lj === 1) {\r\n pathElement.setAttribute('stroke-miterlimit', data.ml);\r\n }\r\n }\r\n\r\n if (data.r === 2) {\r\n pathElement.setAttribute('fill-rule', 'evenodd');\r\n }\r\n\r\n if (data.ln) {\r\n pathElement.setAttribute('id', data.ln);\r\n }\r\n if (data.cl) {\r\n pathElement.setAttribute('class', data.cl);\r\n }\r\n if (data.bm) {\r\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n }\r\n this.stylesList.push(styleOb);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createGroupElement = function (data) {\r\n var elementData = new ShapeGroupData();\r\n if (data.ln) {\r\n elementData.gr.setAttribute('id', data.ln);\r\n }\r\n if (data.cl) {\r\n elementData.gr.setAttribute('class', data.cl);\r\n }\r\n if (data.bm) {\r\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n }\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createTransformElement = function (data, container) {\r\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\r\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\r\n var ty = 4;\r\n if (data.ty === 'rc') {\r\n ty = 5;\r\n } else if (data.ty === 'el') {\r\n ty = 6;\r\n } else if (data.ty === 'sr') {\r\n ty = 7;\r\n }\r\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\r\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\r\n this.shapes.push(elementData);\r\n this.addShapeToModifiers(elementData);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\r\n var i = 0;\r\n var len = this.animatedContents.length;\r\n while (i < len) {\r\n if (this.animatedContents[i].element === element) {\r\n return;\r\n }\r\n i += 1;\r\n }\r\n this.animatedContents.push({\r\n fn: SVGElementsRenderer.createRenderFunction(data),\r\n element: element,\r\n data: data,\r\n });\r\n};\r\n\r\nSVGShapeElement.prototype.setElementStyles = function (elementData) {\r\n var arr = elementData.styles;\r\n var j;\r\n var jLen = this.stylesList.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (!this.stylesList[j].closed) {\r\n arr.push(this.stylesList[j]);\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.reloadShapes = function () {\r\n this._isFirstFrame = true;\r\n var i;\r\n var len = this.itemsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.prevViewData[i] = this.itemsData[i];\r\n }\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\r\n this.filterUniqueShapes();\r\n len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n }\r\n this.renderModifiers();\r\n};\r\n\r\nSVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\r\n var ownTransformers = [].concat(transformers);\r\n var i;\r\n var len = arr.length - 1;\r\n var j;\r\n var jLen;\r\n var ownStyles = [];\r\n var ownModifiers = [];\r\n var currentTransform;\r\n var modifier;\r\n var processedPos;\r\n for (i = len; i >= 0; i -= 1) {\r\n processedPos = this.searchProcessedElement(arr[i]);\r\n if (!processedPos) {\r\n arr[i]._render = render;\r\n } else {\r\n itemsData[i] = prevViewData[processedPos - 1];\r\n }\r\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createStyleElement(arr[i], level);\r\n } else {\r\n itemsData[i].style.closed = false;\r\n }\r\n if (arr[i]._render) {\r\n if (itemsData[i].style.pElem.parentNode !== container) {\r\n container.appendChild(itemsData[i].style.pElem);\r\n }\r\n }\r\n ownStyles.push(itemsData[i].style);\r\n } else if (arr[i].ty === 'gr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createGroupElement(arr[i]);\r\n } else {\r\n jLen = itemsData[i].it.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\r\n }\r\n }\r\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\r\n if (arr[i]._render) {\r\n if (itemsData[i].gr.parentNode !== container) {\r\n container.appendChild(itemsData[i].gr);\r\n }\r\n }\r\n } else if (arr[i].ty === 'tr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createTransformElement(arr[i], container);\r\n }\r\n currentTransform = itemsData[i].transform;\r\n ownTransformers.push(currentTransform);\r\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\r\n }\r\n this.setElementStyles(itemsData[i]);\r\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n modifier.init(this, arr[i]);\r\n itemsData[i] = modifier;\r\n this.shapeModifiers.push(modifier);\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = false;\r\n }\r\n ownModifiers.push(modifier);\r\n } else if (arr[i].ty === 'rp') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n itemsData[i] = modifier;\r\n modifier.init(this, arr, i, itemsData);\r\n this.shapeModifiers.push(modifier);\r\n render = false;\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = true;\r\n }\r\n ownModifiers.push(modifier);\r\n }\r\n this.addProcessedElement(arr[i], i + 1);\r\n }\r\n len = ownStyles.length;\r\n for (i = 0; i < len; i += 1) {\r\n ownStyles[i].closed = true;\r\n }\r\n len = ownModifiers.length;\r\n for (i = 0; i < len; i += 1) {\r\n ownModifiers[i].closed = true;\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.renderInnerContent = function () {\r\n this.renderModifiers();\r\n var i;\r\n var len = this.stylesList.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.stylesList[i].reset();\r\n }\r\n this.renderShape();\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\r\n if (this.stylesList[i].msElem) {\r\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d);\r\n // Adding M0 0 fixes same mask bug on all browsers\r\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\r\n }\r\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.renderShape = function () {\r\n var i;\r\n var len = this.animatedContents.length;\r\n var animatedContent;\r\n for (i = 0; i < len; i += 1) {\r\n animatedContent = this.animatedContents[i];\r\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\r\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.destroy = function () {\r\n this.destroyBaseElement();\r\n this.shapesData = null;\r\n this.itemsData = null;\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGTintFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\r\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', 'f1');\r\n filter.appendChild(feColorMatrix);\r\n feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', 'f2');\r\n filter.appendChild(feColorMatrix);\r\n this.matrixFilter = feColorMatrix;\r\n if (filterManager.effectElements[2].p.v !== 100 || filterManager.effectElements[2].p.k) {\r\n var feMerge = createNS('feMerge');\r\n filter.appendChild(feMerge);\r\n var feMergeNode;\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in', 'SourceGraphic');\r\n feMerge.appendChild(feMergeNode);\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in', 'f2');\r\n feMerge.appendChild(feMergeNode);\r\n }\r\n}\r\n\r\nSVGTintFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var colorBlack = this.filterManager.effectElements[0].p.v;\r\n var colorWhite = this.filterManager.effectElements[1].p.v;\r\n var opacity = this.filterManager.effectElements[2].p.v / 100;\r\n this.matrixFilter.setAttribute('values', (colorWhite[0] - colorBlack[0]) + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 ' + opacity + ' 0');\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGFillFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\r\n filter.appendChild(feColorMatrix);\r\n this.matrixFilter = feColorMatrix;\r\n}\r\nSVGFillFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var color = this.filterManager.effectElements[2].p.v;\r\n var opacity = this.filterManager.effectElements[6].p.v;\r\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGGaussianBlurEffect(filter, filterManager) {\r\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\r\n filter.setAttribute('x', '-100%');\r\n filter.setAttribute('y', '-100%');\r\n filter.setAttribute('width', '300%');\r\n filter.setAttribute('height', '300%');\r\n\r\n this.filterManager = filterManager;\r\n var feGaussianBlur = createNS('feGaussianBlur');\r\n filter.appendChild(feGaussianBlur);\r\n this.feGaussianBlur = feGaussianBlur;\r\n}\r\n\r\nSVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n // Empirical value, matching AE's blur appearance.\r\n var kBlurrinessToSigma = 0.3;\r\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma;\r\n\r\n // Dimensions mapping:\r\n //\r\n // 1 -> horizontal & vertical\r\n // 2 -> horizontal only\r\n // 3 -> vertical only\r\n //\r\n var dimensions = this.filterManager.effectElements[1].p.v;\r\n var sigmaX = (dimensions == 3) ? 0 : sigma; // eslint-disable-line eqeqeq\r\n var sigmaY = (dimensions == 2) ? 0 : sigma; // eslint-disable-line eqeqeq\r\n\r\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY);\r\n\r\n // Repeat edges mapping:\r\n //\r\n // 0 -> off -> duplicate\r\n // 1 -> on -> wrap\r\n var edgeMode = (this.filterManager.effectElements[2].p.v == 1) ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\r\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\r\n }\r\n};\r\n\r\n/* global createNS, createElementID, locationHref, bmFloor */\r\n\r\nfunction SVGStrokeEffect(elem, filterManager) {\r\n this.initialized = false;\r\n this.filterManager = filterManager;\r\n this.elem = elem;\r\n this.paths = [];\r\n}\r\n\r\nSVGStrokeEffect.prototype.initialize = function () {\r\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\r\n var path;\r\n var groupPath;\r\n var i;\r\n var len;\r\n if (this.filterManager.effectElements[1].p.v === 1) {\r\n len = this.elem.maskManager.masksProperties.length;\r\n i = 0;\r\n } else {\r\n i = this.filterManager.effectElements[0].p.v - 1;\r\n len = i + 1;\r\n }\r\n groupPath = createNS('g');\r\n groupPath.setAttribute('fill', 'none');\r\n groupPath.setAttribute('stroke-linecap', 'round');\r\n groupPath.setAttribute('stroke-dashoffset', 1);\r\n for (i; i < len; i += 1) {\r\n path = createNS('path');\r\n groupPath.appendChild(path);\r\n this.paths.push({ p: path, m: i });\r\n }\r\n if (this.filterManager.effectElements[10].p.v === 3) {\r\n var mask = createNS('mask');\r\n var id = createElementID();\r\n mask.setAttribute('id', id);\r\n mask.setAttribute('mask-type', 'alpha');\r\n mask.appendChild(groupPath);\r\n this.elem.globalData.defs.appendChild(mask);\r\n var g = createNS('g');\r\n g.setAttribute('mask', 'url(' + locationHref + '#' + id + ')');\r\n while (elemChildren[0]) {\r\n g.appendChild(elemChildren[0]);\r\n }\r\n this.elem.layerElement.appendChild(g);\r\n this.masker = mask;\r\n groupPath.setAttribute('stroke', '#fff');\r\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\r\n if (this.filterManager.effectElements[10].p.v === 2) {\r\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\r\n while (elemChildren.length) {\r\n this.elem.layerElement.removeChild(elemChildren[0]);\r\n }\r\n }\r\n this.elem.layerElement.appendChild(groupPath);\r\n this.elem.layerElement.removeAttribute('mask');\r\n groupPath.setAttribute('stroke', '#fff');\r\n }\r\n this.initialized = true;\r\n this.pathMasker = groupPath;\r\n};\r\n\r\nSVGStrokeEffect.prototype.renderFrame = function (forceRender) {\r\n if (!this.initialized) {\r\n this.initialize();\r\n }\r\n var i;\r\n var len = this.paths.length;\r\n var mask;\r\n var path;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.paths[i].m !== -1) {\r\n mask = this.elem.maskManager.viewData[this.paths[i].m];\r\n path = this.paths[i].p;\r\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\r\n path.setAttribute('d', mask.lastPath);\r\n }\r\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\r\n var dasharrayValue;\r\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\r\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\r\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\r\n var l = path.getTotalLength();\r\n dasharrayValue = '0 0 0 ' + l * s + ' ';\r\n var lineLength = l * (e - s);\r\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\r\n var units = Math.floor(lineLength / segment);\r\n var j;\r\n for (j = 0; j < units; j += 1) {\r\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\r\n }\r\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\r\n } else {\r\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\r\n }\r\n path.setAttribute('stroke-dasharray', dasharrayValue);\r\n }\r\n }\r\n }\r\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\r\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\r\n }\r\n\r\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\r\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\r\n }\r\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\r\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\r\n var color = this.filterManager.effectElements[3].p.v;\r\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\r\n }\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGTritoneFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\r\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', 'f1');\r\n filter.appendChild(feColorMatrix);\r\n var feComponentTransfer = createNS('feComponentTransfer');\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n this.matrixFilter = feComponentTransfer;\r\n var feFuncR = createNS('feFuncR');\r\n feFuncR.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncR);\r\n this.feFuncR = feFuncR;\r\n var feFuncG = createNS('feFuncG');\r\n feFuncG.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncG);\r\n this.feFuncG = feFuncG;\r\n var feFuncB = createNS('feFuncB');\r\n feFuncB.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncB);\r\n this.feFuncB = feFuncB;\r\n}\r\n\r\nSVGTritoneFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var color1 = this.filterManager.effectElements[0].p.v;\r\n var color2 = this.filterManager.effectElements[1].p.v;\r\n var color3 = this.filterManager.effectElements[2].p.v;\r\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\r\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\r\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\r\n this.feFuncR.setAttribute('tableValues', tableR);\r\n this.feFuncG.setAttribute('tableValues', tableG);\r\n this.feFuncB.setAttribute('tableValues', tableB);\r\n // var opacity = this.filterManager.effectElements[2].p.v/100;\r\n // this.matrixFilter.setAttribute('values',(colorWhite[0]- colorBlack[0])+' 0 0 0 '+ colorBlack[0] +' '+ (colorWhite[1]- colorBlack[1]) +' 0 0 0 '+ colorBlack[1] +' '+ (colorWhite[2]- colorBlack[2]) +' 0 0 0 '+ colorBlack[2] +' 0 0 0 ' + opacity + ' 0');\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGProLevelsFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var effectElements = this.filterManager.effectElements;\r\n var feComponentTransfer = createNS('feComponentTransfer');\r\n\r\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\r\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\r\n }\r\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\r\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\r\n }\r\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\r\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\r\n }\r\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\r\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\r\n }\r\n\r\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n feComponentTransfer = createNS('feComponentTransfer');\r\n }\r\n\r\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\r\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\r\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\r\n }\r\n}\r\n\r\nSVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\r\n var feFunc = createNS(type);\r\n feFunc.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFunc);\r\n return feFunc;\r\n};\r\n\r\nSVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\r\n var cnt = 0;\r\n var segments = 256;\r\n var perc;\r\n var min = Math.min(inputBlack, inputWhite);\r\n var max = Math.max(inputBlack, inputWhite);\r\n var table = Array.call(null, { length: segments });\r\n var colorValue;\r\n var pos = 0;\r\n var outputDelta = outputWhite - outputBlack;\r\n var inputDelta = inputWhite - inputBlack;\r\n while (cnt <= 256) {\r\n perc = cnt / 256;\r\n if (perc <= min) {\r\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\r\n } else if (perc >= max) {\r\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\r\n } else {\r\n colorValue = (outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma));\r\n }\r\n table[pos] = colorValue;\r\n pos += 1;\r\n cnt += 256 / (segments - 1);\r\n }\r\n return table.join(' ');\r\n};\r\n\r\nSVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var val;\r\n var effectElements = this.filterManager.effectElements;\r\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\r\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\r\n this.feFuncRComposed.setAttribute('tableValues', val);\r\n this.feFuncGComposed.setAttribute('tableValues', val);\r\n this.feFuncBComposed.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\r\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\r\n this.feFuncR.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\r\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\r\n this.feFuncG.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\r\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\r\n this.feFuncB.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\r\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\r\n this.feFuncA.setAttribute('tableValues', val);\r\n }\r\n }\r\n};\r\n\r\n/* global createNS, rgbToHex, degToRads */\r\n\r\nfunction SVGDropShadowEffect(filter, filterManager) {\r\n var filterSize = filterManager.container.globalData.renderConfig.filterSize;\r\n filter.setAttribute('x', filterSize.x);\r\n filter.setAttribute('y', filterSize.y);\r\n filter.setAttribute('width', filterSize.width);\r\n filter.setAttribute('height', filterSize.height);\r\n this.filterManager = filterManager;\r\n\r\n var feGaussianBlur = createNS('feGaussianBlur');\r\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\r\n feGaussianBlur.setAttribute('result', 'drop_shadow_1');\r\n feGaussianBlur.setAttribute('stdDeviation', '0');\r\n this.feGaussianBlur = feGaussianBlur;\r\n filter.appendChild(feGaussianBlur);\r\n\r\n var feOffset = createNS('feOffset');\r\n feOffset.setAttribute('dx', '25');\r\n feOffset.setAttribute('dy', '0');\r\n feOffset.setAttribute('in', 'drop_shadow_1');\r\n feOffset.setAttribute('result', 'drop_shadow_2');\r\n this.feOffset = feOffset;\r\n filter.appendChild(feOffset);\r\n var feFlood = createNS('feFlood');\r\n feFlood.setAttribute('flood-color', '#00ff00');\r\n feFlood.setAttribute('flood-opacity', '1');\r\n feFlood.setAttribute('result', 'drop_shadow_3');\r\n this.feFlood = feFlood;\r\n filter.appendChild(feFlood);\r\n\r\n var feComposite = createNS('feComposite');\r\n feComposite.setAttribute('in', 'drop_shadow_3');\r\n feComposite.setAttribute('in2', 'drop_shadow_2');\r\n feComposite.setAttribute('operator', 'in');\r\n feComposite.setAttribute('result', 'drop_shadow_4');\r\n filter.appendChild(feComposite);\r\n\r\n var feMerge = createNS('feMerge');\r\n filter.appendChild(feMerge);\r\n var feMergeNode;\r\n feMergeNode = createNS('feMergeNode');\r\n feMerge.appendChild(feMergeNode);\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in', 'SourceGraphic');\r\n this.feMergeNode = feMergeNode;\r\n this.feMerge = feMerge;\r\n this.originalNodeAdded = false;\r\n feMerge.appendChild(feMergeNode);\r\n}\r\n\r\nSVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\r\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\r\n }\r\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\r\n var col = this.filterManager.effectElements[0].p.v;\r\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\r\n }\r\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\r\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\r\n }\r\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\r\n var distance = this.filterManager.effectElements[3].p.v;\r\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\r\n var x = distance * Math.cos(angle);\r\n var y = distance * Math.sin(angle);\r\n this.feOffset.setAttribute('dx', x);\r\n this.feOffset.setAttribute('dy', y);\r\n }\r\n /* if(forceRender || this.filterManager.effectElements[5].p._mdf){\r\n if(this.filterManager.effectElements[5].p.v === 1 && this.originalNodeAdded) {\r\n this.feMerge.removeChild(this.feMergeNode);\r\n this.originalNodeAdded = false;\r\n } else if(this.filterManager.effectElements[5].p.v === 0 && !this.originalNodeAdded) {\r\n this.feMerge.appendChild(this.feMergeNode);\r\n this.originalNodeAdded = true;\r\n }\r\n } */\r\n }\r\n};\r\n\r\n/* global createElementID, createNS */\r\n\r\nvar _svgMatteSymbols = [];\r\n\r\nfunction SVGMatte3Effect(filterElem, filterManager, elem) {\r\n this.initialized = false;\r\n this.filterManager = filterManager;\r\n this.filterElem = filterElem;\r\n this.elem = elem;\r\n elem.matteElement = createNS('g');\r\n elem.matteElement.appendChild(elem.layerElement);\r\n elem.matteElement.appendChild(elem.transformedElement);\r\n elem.baseElement = elem.matteElement;\r\n}\r\n\r\nSVGMatte3Effect.prototype.findSymbol = function (mask) {\r\n var i = 0;\r\n var len = _svgMatteSymbols.length;\r\n while (i < len) {\r\n if (_svgMatteSymbols[i] === mask) {\r\n return _svgMatteSymbols[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n};\r\n\r\nSVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\r\n var parentNode = mask.layerElement.parentNode;\r\n if (!parentNode) {\r\n return;\r\n }\r\n var children = parentNode.children;\r\n var i = 0;\r\n var len = children.length;\r\n while (i < len) {\r\n if (children[i] === mask.layerElement) {\r\n break;\r\n }\r\n i += 1;\r\n }\r\n var nextChild;\r\n if (i <= len - 2) {\r\n nextChild = children[i + 1];\r\n }\r\n var useElem = createNS('use');\r\n useElem.setAttribute('href', '#' + symbolId);\r\n if (nextChild) {\r\n parentNode.insertBefore(useElem, nextChild);\r\n } else {\r\n parentNode.appendChild(useElem);\r\n }\r\n};\r\n\r\nSVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\r\n if (!this.findSymbol(mask)) {\r\n var symbolId = createElementID();\r\n var masker = createNS('mask');\r\n masker.setAttribute('id', mask.layerId);\r\n masker.setAttribute('mask-type', 'alpha');\r\n _svgMatteSymbols.push(mask);\r\n var defs = elem.globalData.defs;\r\n defs.appendChild(masker);\r\n var symbol = createNS('symbol');\r\n symbol.setAttribute('id', symbolId);\r\n this.replaceInParent(mask, symbolId);\r\n symbol.appendChild(mask.layerElement);\r\n defs.appendChild(symbol);\r\n var useElem = createNS('use');\r\n useElem.setAttribute('href', '#' + symbolId);\r\n masker.appendChild(useElem);\r\n mask.data.hd = false;\r\n mask.show();\r\n }\r\n elem.setMatte(mask.layerId);\r\n};\r\n\r\nSVGMatte3Effect.prototype.initialize = function () {\r\n var ind = this.filterManager.effectElements[0].p.v;\r\n var elements = this.elem.comp.elements;\r\n var i = 0;\r\n var len = elements.length;\r\n while (i < len) {\r\n if (elements[i] && elements[i].data.ind === ind) {\r\n this.setElementAsMask(this.elem, elements[i]);\r\n }\r\n i += 1;\r\n }\r\n this.initialized = true;\r\n};\r\n\r\nSVGMatte3Effect.prototype.renderFrame = function () {\r\n if (!this.initialized) {\r\n this.initialize();\r\n }\r\n};\r\n\r\n/* global createElementID, filtersFactory, SVGTintFilter, SVGFillFilter, SVGStrokeEffect, SVGTritoneFilter,\r\nSVGProLevelsFilter, SVGDropShadowEffect, SVGMatte3Effect, SVGGaussianBlurEffect, locationHref */\r\n\r\nfunction SVGEffects(elem) {\r\n var i;\r\n var len = elem.data.ef ? elem.data.ef.length : 0;\r\n var filId = createElementID();\r\n var fil = filtersFactory.createFilter(filId, true);\r\n var count = 0;\r\n this.filters = [];\r\n var filterManager;\r\n for (i = 0; i < len; i += 1) {\r\n filterManager = null;\r\n if (elem.data.ef[i].ty === 20) {\r\n count += 1;\r\n filterManager = new SVGTintFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 21) {\r\n count += 1;\r\n filterManager = new SVGFillFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 22) {\r\n filterManager = new SVGStrokeEffect(elem, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 23) {\r\n count += 1;\r\n filterManager = new SVGTritoneFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 24) {\r\n count += 1;\r\n filterManager = new SVGProLevelsFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 25) {\r\n count += 1;\r\n filterManager = new SVGDropShadowEffect(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 28) {\r\n // count += 1;\r\n filterManager = new SVGMatte3Effect(fil, elem.effectsManager.effectElements[i], elem);\r\n } else if (elem.data.ef[i].ty === 29) {\r\n count += 1;\r\n filterManager = new SVGGaussianBlurEffect(fil, elem.effectsManager.effectElements[i]);\r\n }\r\n if (filterManager) {\r\n this.filters.push(filterManager);\r\n }\r\n }\r\n if (count) {\r\n elem.globalData.defs.appendChild(fil);\r\n elem.layerElement.setAttribute('filter', 'url(' + locationHref + '#' + filId + ')');\r\n }\r\n if (this.filters.length) {\r\n elem.addRenderableComponent(this);\r\n }\r\n}\r\n\r\nSVGEffects.prototype.renderFrame = function (_isFirstFrame) {\r\n var i;\r\n var len = this.filters.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.filters[i].renderFrame(_isFirstFrame);\r\n }\r\n};\r\n\r\n/* global Matrix, createTypedArray */\r\n\r\nfunction CVContextData() {\r\n this.saved = [];\r\n this.cArrPos = 0;\r\n this.cTr = new Matrix();\r\n this.cO = 1;\r\n var i;\r\n var len = 15;\r\n this.savedOp = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n this.saved[i] = createTypedArray('float32', 16);\r\n }\r\n this._length = len;\r\n}\r\n\r\nCVContextData.prototype.duplicate = function () {\r\n var newLength = this._length * 2;\r\n var currentSavedOp = this.savedOp;\r\n this.savedOp = createTypedArray('float32', newLength);\r\n this.savedOp.set(currentSavedOp);\r\n var i = 0;\r\n for (i = this._length; i < newLength; i += 1) {\r\n this.saved[i] = createTypedArray('float32', 16);\r\n }\r\n this._length = newLength;\r\n};\r\n\r\nCVContextData.prototype.reset = function () {\r\n this.cArrPos = 0;\r\n this.cTr.reset();\r\n this.cO = 1;\r\n};\r\n\r\n/* global CVEffects, getBlendMode, CVMaskElement, Matrix */\r\n\r\nfunction CVBaseElement() {\r\n}\r\n\r\nCVBaseElement.prototype = {\r\n createElements: function () {},\r\n initRendererElement: function () {},\r\n createContainerElements: function () {\r\n this.canvasContext = this.globalData.canvasContext;\r\n this.renderableEffectsManager = new CVEffects(this);\r\n },\r\n createContent: function () {},\r\n setBlendMode: function () {\r\n var globalData = this.globalData;\r\n if (globalData.blendMode !== this.data.bm) {\r\n globalData.blendMode = this.data.bm;\r\n var blendModeValue = getBlendMode(this.data.bm);\r\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\r\n }\r\n },\r\n createRenderableComponents: function () {\r\n this.maskManager = new CVMaskElement(this.data, this);\r\n },\r\n hideElement: function () {\r\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\r\n this.hidden = true;\r\n }\r\n },\r\n showElement: function () {\r\n if (this.isInRange && !this.isTransparent) {\r\n this.hidden = false;\r\n this._isFirstFrame = true;\r\n this.maskManager._isFirstFrame = true;\r\n }\r\n },\r\n renderFrame: function () {\r\n if (this.hidden || this.data.hd) {\r\n return;\r\n }\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.setBlendMode();\r\n var forceRealStack = this.data.ty === 0;\r\n this.globalData.renderer.save(forceRealStack);\r\n this.globalData.renderer.ctxTransform(this.finalTransform.mat.props);\r\n this.globalData.renderer.ctxOpacity(this.finalTransform.mProp.o.v);\r\n this.renderInnerContent();\r\n this.globalData.renderer.restore(forceRealStack);\r\n if (this.maskManager.hasMasks) {\r\n this.globalData.renderer.restore(true);\r\n }\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n destroy: function () {\r\n this.canvasContext = null;\r\n this.data = null;\r\n this.globalData = null;\r\n this.maskManager.destroy();\r\n },\r\n mHelper: new Matrix(),\r\n};\r\nCVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\r\nCVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, CVBaseElement,HierarchyElement, FrameElement,\r\nRenderableElement, SVGShapeElement, IImageElement, createTag */\r\n\r\nfunction CVImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.img = globalData.imageLoader.getAsset(this.assetData);\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\r\n\r\nCVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\r\nCVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\r\n\r\nCVImageElement.prototype.createContent = function () {\r\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\r\n var canvas = createTag('canvas');\r\n canvas.width = this.assetData.w;\r\n canvas.height = this.assetData.h;\r\n var ctx = canvas.getContext('2d');\r\n\r\n var imgW = this.img.width;\r\n var imgH = this.img.height;\r\n var imgRel = imgW / imgH;\r\n var canvasRel = this.assetData.w / this.assetData.h;\r\n var widthCrop;\r\n var heightCrop;\r\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\r\n if ((imgRel > canvasRel && par === 'xMidYMid slice') || (imgRel < canvasRel && par !== 'xMidYMid slice')) {\r\n heightCrop = imgH;\r\n widthCrop = heightCrop * canvasRel;\r\n } else {\r\n widthCrop = imgW;\r\n heightCrop = widthCrop / canvasRel;\r\n }\r\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\r\n this.img = canvas;\r\n }\r\n};\r\n\r\nCVImageElement.prototype.renderInnerContent = function () {\r\n this.canvasContext.drawImage(this.img, 0, 0);\r\n};\r\n\r\nCVImageElement.prototype.destroy = function () {\r\n this.img = null;\r\n};\r\n\r\n/* global createSizedArray, PropertyFactory, extendPrototype, CanvasRenderer, ICompElement, CVBaseElement */\r\n\r\nfunction CVCompElement(data, globalData, comp) {\r\n this.completeLayers = false;\r\n this.layers = data.layers;\r\n this.pendingElements = [];\r\n this.elements = createSizedArray(this.layers.length);\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nextendPrototype([CanvasRenderer, ICompElement, CVBaseElement], CVCompElement);\r\n\r\nCVCompElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.beginPath();\r\n ctx.moveTo(0, 0);\r\n ctx.lineTo(this.data.w, 0);\r\n ctx.lineTo(this.data.w, this.data.h);\r\n ctx.lineTo(0, this.data.h);\r\n ctx.lineTo(0, 0);\r\n ctx.clip();\r\n var i;\r\n var len = this.layers.length;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n};\r\n\r\nCVCompElement.prototype.destroy = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n this.layers = null;\r\n this.elements = null;\r\n};\r\n\r\n/* global createSizedArray, ShapePropertyFactory, MaskElement */\r\n\r\nfunction CVMaskElement(data, element) {\r\n this.data = data;\r\n this.element = element;\r\n this.masksProperties = this.data.masksProperties || [];\r\n this.viewData = createSizedArray(this.masksProperties.length);\r\n var i;\r\n var len = this.masksProperties.length;\r\n var hasMasks = false;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.masksProperties[i].mode !== 'n') {\r\n hasMasks = true;\r\n }\r\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\r\n }\r\n this.hasMasks = hasMasks;\r\n if (hasMasks) {\r\n this.element.addRenderableComponent(this);\r\n }\r\n}\r\n\r\nCVMaskElement.prototype.renderFrame = function () {\r\n if (!this.hasMasks) {\r\n return;\r\n }\r\n var transform = this.element.finalTransform.mat;\r\n var ctx = this.element.canvasContext;\r\n var i;\r\n var len = this.masksProperties.length;\r\n var pt;\r\n var pts;\r\n var data;\r\n ctx.beginPath();\r\n for (i = 0; i < len; i += 1) {\r\n if (this.masksProperties[i].mode !== 'n') {\r\n if (this.masksProperties[i].inv) {\r\n ctx.moveTo(0, 0);\r\n ctx.lineTo(this.element.globalData.compSize.w, 0);\r\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\r\n ctx.lineTo(0, this.element.globalData.compSize.h);\r\n ctx.lineTo(0, 0);\r\n }\r\n data = this.viewData[i].v;\r\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\r\n ctx.moveTo(pt[0], pt[1]);\r\n var j;\r\n var jLen = data._length;\r\n for (j = 1; j < jLen; j += 1) {\r\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\r\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\r\n }\r\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\r\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\r\n }\r\n }\r\n this.element.globalData.renderer.save(true);\r\n ctx.clip();\r\n};\r\n\r\nCVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\r\n\r\nCVMaskElement.prototype.destroy = function () {\r\n this.element = null;\r\n};\r\n\r\n/* global ShapeTransformManager, extendPrototype, BaseElement, TransformElement, CVBaseElement, IShapeElement,\r\nHierarchyElement, FrameElement, RenderableElement, RenderableDOMElement, PropertyFactory, degToRads, GradientProperty,\r\nDashProperty, TransformPropertyFactory, CVShapeData, ShapeModifiers, bmFloor, lineCapEnum, lineJoinEnum */\r\n\r\nfunction CVShapeElement(data, globalData, comp) {\r\n this.shapes = [];\r\n this.shapesData = data.shapes;\r\n this.stylesList = [];\r\n this.itemsData = [];\r\n this.prevViewData = [];\r\n this.shapeModifiers = [];\r\n this.processedElements = [];\r\n this.transformsManager = new ShapeTransformManager();\r\n this.initElement(data, globalData, comp);\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\r\n\r\nCVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\r\n\r\nCVShapeElement.prototype.transformHelper = { opacity: 1, _opMdf: false };\r\n\r\nCVShapeElement.prototype.dashResetter = [];\r\n\r\nCVShapeElement.prototype.createContent = function () {\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\r\n};\r\n\r\nCVShapeElement.prototype.createStyleElement = function (data, transforms) {\r\n var styleElem = {\r\n data: data,\r\n type: data.ty,\r\n preTransforms: this.transformsManager.addTransformSequence(transforms),\r\n transforms: [],\r\n elements: [],\r\n closed: data.hd === true,\r\n };\r\n var elementData = {};\r\n if (data.ty === 'fl' || data.ty === 'st') {\r\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\r\n if (!elementData.c.k) {\r\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\r\n }\r\n } else if (data.ty === 'gf' || data.ty === 'gs') {\r\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\r\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\r\n elementData.h = PropertyFactory.getProp(this, data.h || { k: 0 }, 0, 0.01, this);\r\n elementData.a = PropertyFactory.getProp(this, data.a || { k: 0 }, 0, degToRads, this);\r\n elementData.g = new GradientProperty(this, data.g, this);\r\n }\r\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\r\n if (data.ty === 'st' || data.ty === 'gs') {\r\n styleElem.lc = lineCapEnum[data.lc || 2];\r\n styleElem.lj = lineJoinEnum[data.lj || 2];\r\n if (data.lj == 1) { // eslint-disable-line eqeqeq\r\n styleElem.ml = data.ml;\r\n }\r\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\r\n if (!elementData.w.k) {\r\n styleElem.wi = elementData.w.v;\r\n }\r\n if (data.d) {\r\n var d = new DashProperty(this, data.d, 'canvas', this);\r\n elementData.d = d;\r\n if (!elementData.d.k) {\r\n styleElem.da = elementData.d.dashArray;\r\n styleElem.do = elementData.d.dashoffset[0];\r\n }\r\n }\r\n } else {\r\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\r\n }\r\n this.stylesList.push(styleElem);\r\n elementData.style = styleElem;\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.createGroupElement = function () {\r\n var elementData = {\r\n it: [],\r\n prevViewData: [],\r\n };\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.createTransformElement = function (data) {\r\n var elementData = {\r\n transform: {\r\n opacity: 1,\r\n _opMdf: false,\r\n key: this.transformsManager.getNewKey(),\r\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\r\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this),\r\n },\r\n };\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.createShapeElement = function (data) {\r\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\r\n\r\n this.shapes.push(elementData);\r\n this.addShapeToModifiers(elementData);\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.reloadShapes = function () {\r\n this._isFirstFrame = true;\r\n var i;\r\n var len = this.itemsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.prevViewData[i] = this.itemsData[i];\r\n }\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\r\n len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n }\r\n this.renderModifiers();\r\n this.transformsManager.processSequences(this._isFirstFrame);\r\n};\r\n\r\nCVShapeElement.prototype.addTransformToStyleList = function (transform) {\r\n var i;\r\n var len = this.stylesList.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (!this.stylesList[i].closed) {\r\n this.stylesList[i].transforms.push(transform);\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.removeTransformFromStyleList = function () {\r\n var i;\r\n var len = this.stylesList.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (!this.stylesList[i].closed) {\r\n this.stylesList[i].transforms.pop();\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.closeStyles = function (styles) {\r\n var i;\r\n var len = styles.length;\r\n for (i = 0; i < len; i += 1) {\r\n styles[i].closed = true;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\r\n var i;\r\n var len = arr.length - 1;\r\n var j;\r\n var jLen;\r\n var ownStyles = [];\r\n var ownModifiers = [];\r\n var processedPos;\r\n var modifier;\r\n var currentTransform;\r\n var ownTransforms = [].concat(transforms);\r\n for (i = len; i >= 0; i -= 1) {\r\n processedPos = this.searchProcessedElement(arr[i]);\r\n if (!processedPos) {\r\n arr[i]._shouldRender = shouldRender;\r\n } else {\r\n itemsData[i] = prevViewData[processedPos - 1];\r\n }\r\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\r\n } else {\r\n itemsData[i].style.closed = false;\r\n }\r\n\r\n ownStyles.push(itemsData[i].style);\r\n } else if (arr[i].ty === 'gr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createGroupElement(arr[i]);\r\n } else {\r\n jLen = itemsData[i].it.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\r\n }\r\n }\r\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\r\n } else if (arr[i].ty === 'tr') {\r\n if (!processedPos) {\r\n currentTransform = this.createTransformElement(arr[i]);\r\n itemsData[i] = currentTransform;\r\n }\r\n ownTransforms.push(itemsData[i]);\r\n this.addTransformToStyleList(itemsData[i]);\r\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createShapeElement(arr[i]);\r\n }\r\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n modifier.init(this, arr[i]);\r\n itemsData[i] = modifier;\r\n this.shapeModifiers.push(modifier);\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = false;\r\n }\r\n ownModifiers.push(modifier);\r\n } else if (arr[i].ty === 'rp') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n itemsData[i] = modifier;\r\n modifier.init(this, arr, i, itemsData);\r\n this.shapeModifiers.push(modifier);\r\n shouldRender = false;\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = true;\r\n }\r\n ownModifiers.push(modifier);\r\n }\r\n this.addProcessedElement(arr[i], i + 1);\r\n }\r\n this.removeTransformFromStyleList();\r\n this.closeStyles(ownStyles);\r\n len = ownModifiers.length;\r\n for (i = 0; i < len; i += 1) {\r\n ownModifiers[i].closed = true;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderInnerContent = function () {\r\n this.transformHelper.opacity = 1;\r\n this.transformHelper._opMdf = false;\r\n this.renderModifiers();\r\n this.transformsManager.processSequences(this._isFirstFrame);\r\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\r\n};\r\n\r\nCVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\r\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\r\n groupTransform.opacity = parentTransform.opacity;\r\n groupTransform.opacity *= groupTransform.op.v;\r\n groupTransform._opMdf = true;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.drawLayer = function () {\r\n var i;\r\n var len = this.stylesList.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n var elems;\r\n var nodes;\r\n var renderer = this.globalData.renderer;\r\n var ctx = this.globalData.canvasContext;\r\n var type;\r\n var currentStyle;\r\n for (i = 0; i < len; i += 1) {\r\n currentStyle = this.stylesList[i];\r\n type = currentStyle.type;\r\n\r\n // Skipping style when\r\n // Stroke width equals 0\r\n // style should not be rendered (extra unused repeaters)\r\n // current opacity equals 0\r\n // global opacity equals 0\r\n if (!(((type === 'st' || type === 'gs') && currentStyle.wi === 0) || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\r\n renderer.save();\r\n elems = currentStyle.elements;\r\n if (type === 'st' || type === 'gs') {\r\n ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\r\n ctx.lineWidth = currentStyle.wi;\r\n ctx.lineCap = currentStyle.lc;\r\n ctx.lineJoin = currentStyle.lj;\r\n ctx.miterLimit = currentStyle.ml || 0;\r\n } else {\r\n ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\r\n }\r\n renderer.ctxOpacity(currentStyle.coOp);\r\n if (type !== 'st' && type !== 'gs') {\r\n ctx.beginPath();\r\n }\r\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\r\n jLen = elems.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (type === 'st' || type === 'gs') {\r\n ctx.beginPath();\r\n if (currentStyle.da) {\r\n ctx.setLineDash(currentStyle.da);\r\n ctx.lineDashOffset = currentStyle.do;\r\n }\r\n }\r\n nodes = elems[j].trNodes;\r\n kLen = nodes.length;\r\n\r\n for (k = 0; k < kLen; k += 1) {\r\n if (nodes[k].t === 'm') {\r\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\r\n } else if (nodes[k].t === 'c') {\r\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\r\n } else {\r\n ctx.closePath();\r\n }\r\n }\r\n if (type === 'st' || type === 'gs') {\r\n ctx.stroke();\r\n if (currentStyle.da) {\r\n ctx.setLineDash(this.dashResetter);\r\n }\r\n }\r\n }\r\n if (type !== 'st' && type !== 'gs') {\r\n ctx.fill(currentStyle.r);\r\n }\r\n renderer.restore();\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\r\n var i;\r\n var len = items.length - 1;\r\n var groupTransform;\r\n groupTransform = parentTransform;\r\n for (i = len; i >= 0; i -= 1) {\r\n if (items[i].ty === 'tr') {\r\n groupTransform = data[i].transform;\r\n this.renderShapeTransform(parentTransform, groupTransform);\r\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\r\n this.renderPath(items[i], data[i]);\r\n } else if (items[i].ty === 'fl') {\r\n this.renderFill(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'st') {\r\n this.renderStroke(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\r\n this.renderGradientFill(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'gr') {\r\n this.renderShape(groupTransform, items[i].it, data[i].it);\r\n } else if (items[i].ty === 'tm') {\r\n //\r\n }\r\n }\r\n if (isMain) {\r\n this.drawLayer();\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\r\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\r\n var shapeNodes = styledShape.trNodes;\r\n var paths = shape.paths;\r\n var i;\r\n var len;\r\n var j;\r\n var jLen = paths._length;\r\n shapeNodes.length = 0;\r\n var groupTransformMat = styledShape.transforms.finalTransform;\r\n for (j = 0; j < jLen; j += 1) {\r\n var pathNodes = paths.shapes[j];\r\n if (pathNodes && pathNodes.v) {\r\n len = pathNodes._length;\r\n for (i = 1; i < len; i += 1) {\r\n if (i === 1) {\r\n shapeNodes.push({\r\n t: 'm',\r\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0),\r\n });\r\n }\r\n shapeNodes.push({\r\n t: 'c',\r\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i]),\r\n });\r\n }\r\n if (len === 1) {\r\n shapeNodes.push({\r\n t: 'm',\r\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0),\r\n });\r\n }\r\n if (pathNodes.c && len) {\r\n shapeNodes.push({\r\n t: 'c',\r\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0]),\r\n });\r\n shapeNodes.push({\r\n t: 'z',\r\n });\r\n }\r\n }\r\n }\r\n styledShape.trNodes = shapeNodes;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderPath = function (pathData, itemData) {\r\n if (pathData.hd !== true && pathData._shouldRender) {\r\n var i;\r\n var len = itemData.styledShapes.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n\r\n if (itemData.c._mdf || this._isFirstFrame) {\r\n styleElem.co = 'rgb('\r\n + bmFloor(itemData.c.v[0]) + ','\r\n + bmFloor(itemData.c.v[1]) + ','\r\n + bmFloor(itemData.c.v[2]) + ')';\r\n }\r\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n var grd;\r\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || (styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf))) {\r\n var ctx = this.globalData.canvasContext;\r\n var pt1 = itemData.s.v;\r\n var pt2 = itemData.e.v;\r\n if (styleData.t === 1) {\r\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\r\n } else {\r\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\r\n\r\n var percent = itemData.h.v;\r\n if (percent >= 1) {\r\n percent = 0.99;\r\n } else if (percent <= -1) {\r\n percent = -0.99;\r\n }\r\n var dist = rad * percent;\r\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\r\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\r\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\r\n }\r\n\r\n var i;\r\n var len = styleData.g.p;\r\n var cValues = itemData.g.c;\r\n var opacity = 1;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\r\n opacity = itemData.g.o[i * 2 + 1];\r\n }\r\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\r\n }\r\n styleElem.grd = grd;\r\n }\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n};\r\n\r\nCVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n var d = itemData.d;\r\n if (d && (d._mdf || this._isFirstFrame)) {\r\n styleElem.da = d.dashArray;\r\n styleElem.do = d.dashoffset[0];\r\n }\r\n if (itemData.c._mdf || this._isFirstFrame) {\r\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\r\n }\r\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n }\r\n if (itemData.w._mdf || this._isFirstFrame) {\r\n styleElem.wi = itemData.w.v;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.destroy = function () {\r\n this.shapesData = null;\r\n this.globalData = null;\r\n this.canvasContext = null;\r\n this.stylesList.length = 0;\r\n this.itemsData.length = 0;\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement,\r\nSVGShapeElement, IImageElement */\r\n\r\nfunction CVSolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\r\n\r\nCVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\r\nCVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\r\n\r\nCVSolidElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.fillStyle = this.data.sc;\r\n ctx.fillRect(0, 0, this.data.sw, this.data.sh);\r\n //\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement,\r\nRenderableElement, ITextElement, createTag, createSizedArray */\r\n\r\nfunction CVTextElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.yOffset = 0;\r\n this.fillColorAnim = false;\r\n this.strokeColorAnim = false;\r\n this.strokeWidthAnim = false;\r\n this.stroke = false;\r\n this.fill = false;\r\n this.justifyOffset = 0;\r\n this.currentRender = null;\r\n this.renderType = 'canvas';\r\n this.values = {\r\n fill: 'rgba(0,0,0,0)',\r\n stroke: 'rgba(0,0,0,0)',\r\n sWidth: 0,\r\n fValue: '',\r\n };\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\r\n\r\nCVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\r\n\r\nCVTextElement.prototype.buildNewText = function () {\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\r\n\r\n var hasFill = false;\r\n if (documentData.fc) {\r\n hasFill = true;\r\n this.values.fill = this.buildColor(documentData.fc);\r\n } else {\r\n this.values.fill = 'rgba(0,0,0,0)';\r\n }\r\n this.fill = hasFill;\r\n var hasStroke = false;\r\n if (documentData.sc) {\r\n hasStroke = true;\r\n this.values.stroke = this.buildColor(documentData.sc);\r\n this.values.sWidth = documentData.sw;\r\n }\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n var i;\r\n var len;\r\n var letters = documentData.l;\r\n var matrixHelper = this.mHelper;\r\n this.stroke = hasStroke;\r\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\r\n len = documentData.finalText.length;\r\n // this.tHelper.font = this.values.fValue;\r\n var charData;\r\n var shapeData;\r\n var k;\r\n var kLen;\r\n var shapes;\r\n var j;\r\n var jLen;\r\n var pathNodes;\r\n var commands;\r\n var pathArr;\r\n var singleShape = this.data.singleShape;\r\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\r\n var xPos = 0;\r\n var yPos = 0;\r\n var firstLine = true;\r\n var cnt = 0;\r\n for (i = 0; i < len; i += 1) {\r\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n shapeData = (charData && charData.data) || {};\r\n matrixHelper.reset();\r\n if (singleShape && letters[i].n) {\r\n xPos = -trackingOffset;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n firstLine = false;\r\n }\r\n\r\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\r\n jLen = shapes.length;\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n if (singleShape) {\r\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n }\r\n commands = createSizedArray(jLen);\r\n for (j = 0; j < jLen; j += 1) {\r\n kLen = shapes[j].ks.k.i.length;\r\n pathNodes = shapes[j].ks.k;\r\n pathArr = [];\r\n for (k = 1; k < kLen; k += 1) {\r\n if (k === 1) {\r\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\r\n }\r\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\r\n }\r\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\r\n commands[j] = pathArr;\r\n }\r\n if (singleShape) {\r\n xPos += letters[i].l;\r\n xPos += trackingOffset;\r\n }\r\n if (this.textSpans[cnt]) {\r\n this.textSpans[cnt].elem = commands;\r\n } else {\r\n this.textSpans[cnt] = { elem: commands };\r\n }\r\n cnt += 1;\r\n }\r\n};\r\n\r\nCVTextElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.font = this.values.fValue;\r\n ctx.lineCap = 'butt';\r\n ctx.lineJoin = 'miter';\r\n ctx.miterLimit = 4;\r\n\r\n if (!this.data.singleShape) {\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n }\r\n\r\n var i;\r\n var len;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n\r\n var letters = this.textProperty.currentData.l;\r\n\r\n len = letters.length;\r\n var renderedLetter;\r\n var lastFill = null;\r\n var lastStroke = null;\r\n var lastStrokeW = null;\r\n var commands;\r\n var pathArr;\r\n for (i = 0; i < len; i += 1) {\r\n if (!letters[i].n) {\r\n renderedLetter = renderedLetters[i];\r\n if (renderedLetter) {\r\n this.globalData.renderer.save();\r\n this.globalData.renderer.ctxTransform(renderedLetter.p);\r\n this.globalData.renderer.ctxOpacity(renderedLetter.o);\r\n }\r\n if (this.fill) {\r\n if (renderedLetter && renderedLetter.fc) {\r\n if (lastFill !== renderedLetter.fc) {\r\n lastFill = renderedLetter.fc;\r\n ctx.fillStyle = renderedLetter.fc;\r\n }\r\n } else if (lastFill !== this.values.fill) {\r\n lastFill = this.values.fill;\r\n ctx.fillStyle = this.values.fill;\r\n }\r\n commands = this.textSpans[i].elem;\r\n jLen = commands.length;\r\n this.globalData.canvasContext.beginPath();\r\n for (j = 0; j < jLen; j += 1) {\r\n pathArr = commands[j];\r\n kLen = pathArr.length;\r\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\r\n for (k = 2; k < kLen; k += 6) {\r\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\r\n }\r\n }\r\n this.globalData.canvasContext.closePath();\r\n this.globalData.canvasContext.fill();\r\n /// ctx.fillText(this.textSpans[i].val,0,0);\r\n }\r\n if (this.stroke) {\r\n if (renderedLetter && renderedLetter.sw) {\r\n if (lastStrokeW !== renderedLetter.sw) {\r\n lastStrokeW = renderedLetter.sw;\r\n ctx.lineWidth = renderedLetter.sw;\r\n }\r\n } else if (lastStrokeW !== this.values.sWidth) {\r\n lastStrokeW = this.values.sWidth;\r\n ctx.lineWidth = this.values.sWidth;\r\n }\r\n if (renderedLetter && renderedLetter.sc) {\r\n if (lastStroke !== renderedLetter.sc) {\r\n lastStroke = renderedLetter.sc;\r\n ctx.strokeStyle = renderedLetter.sc;\r\n }\r\n } else if (lastStroke !== this.values.stroke) {\r\n lastStroke = this.values.stroke;\r\n ctx.strokeStyle = this.values.stroke;\r\n }\r\n commands = this.textSpans[i].elem;\r\n jLen = commands.length;\r\n this.globalData.canvasContext.beginPath();\r\n for (j = 0; j < jLen; j += 1) {\r\n pathArr = commands[j];\r\n kLen = pathArr.length;\r\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\r\n for (k = 2; k < kLen; k += 6) {\r\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\r\n }\r\n }\r\n this.globalData.canvasContext.closePath();\r\n this.globalData.canvasContext.stroke();\r\n /// ctx.strokeText(letters[i].val,0,0);\r\n }\r\n if (renderedLetter) {\r\n this.globalData.renderer.restore();\r\n }\r\n }\r\n }\r\n};\r\n\r\nfunction CVEffects() {\r\n\r\n}\r\nCVEffects.prototype.renderFrame = function () {};\r\n\r\n/* global createTag, createNS, styleDiv, CVEffects, MaskElement, SVGBaseElement, HybridRenderer */\r\n\r\nfunction HBaseElement() {}\r\nHBaseElement.prototype = {\r\n checkBlendMode: function () {},\r\n initRendererElement: function () {\r\n this.baseElement = createTag(this.data.tg || 'div');\r\n if (this.data.hasMask) {\r\n this.svgElement = createNS('svg');\r\n this.layerElement = createNS('g');\r\n this.maskedElement = this.layerElement;\r\n this.svgElement.appendChild(this.layerElement);\r\n this.baseElement.appendChild(this.svgElement);\r\n } else {\r\n this.layerElement = this.baseElement;\r\n }\r\n styleDiv(this.baseElement);\r\n },\r\n createContainerElements: function () {\r\n this.renderableEffectsManager = new CVEffects(this);\r\n this.transformedElement = this.baseElement;\r\n this.maskedElement = this.layerElement;\r\n if (this.data.ln) {\r\n this.layerElement.setAttribute('id', this.data.ln);\r\n }\r\n if (this.data.cl) {\r\n this.layerElement.setAttribute('class', this.data.cl);\r\n }\r\n if (this.data.bm !== 0) {\r\n this.setBlendMode();\r\n }\r\n },\r\n renderElement: function () {\r\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\r\n if (this.finalTransform._matMdf) {\r\n var matrixValue = this.finalTransform.mat.toCSS();\r\n transformedElementStyle.transform = matrixValue;\r\n transformedElementStyle.webkitTransform = matrixValue;\r\n }\r\n if (this.finalTransform._opMdf) {\r\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\r\n }\r\n },\r\n renderFrame: function () {\r\n // If it is exported as hidden (data.hd === true) no need to render\r\n // If it is not visible no need to render\r\n if (this.data.hd || this.hidden) {\r\n return;\r\n }\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.renderElement();\r\n this.renderInnerContent();\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n destroy: function () {\r\n this.layerElement = null;\r\n this.transformedElement = null;\r\n if (this.matteElement) {\r\n this.matteElement = null;\r\n }\r\n if (this.maskManager) {\r\n this.maskManager.destroy();\r\n this.maskManager = null;\r\n }\r\n },\r\n createRenderableComponents: function () {\r\n this.maskManager = new MaskElement(this.data, this, this.globalData);\r\n },\r\n addEffects: function () {\r\n },\r\n setMatte: function () {},\r\n};\r\nHBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\r\nHBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\r\nHBaseElement.prototype.buildElementParenting = HybridRenderer.prototype.buildElementParenting;\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement,\r\nRenderableDOMElement, createNS, createTag */\r\n\r\nfunction HSolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\r\n\r\nHSolidElement.prototype.createContent = function () {\r\n var rect;\r\n if (this.data.hasMask) {\r\n rect = createNS('rect');\r\n rect.setAttribute('width', this.data.sw);\r\n rect.setAttribute('height', this.data.sh);\r\n rect.setAttribute('fill', this.data.sc);\r\n this.svgElement.setAttribute('width', this.data.sw);\r\n this.svgElement.setAttribute('height', this.data.sh);\r\n } else {\r\n rect = createTag('div');\r\n rect.style.width = this.data.sw + 'px';\r\n rect.style.height = this.data.sh + 'px';\r\n rect.style.backgroundColor = this.data.sc;\r\n }\r\n this.layerElement.appendChild(rect);\r\n};\r\n\r\n/* global createSizedArray, PropertyFactory, extendPrototype, HybridRenderer, ICompElement, HBaseElement */\r\n\r\nfunction HCompElement(data, globalData, comp) {\r\n this.layers = data.layers;\r\n this.supports3d = !data.hasMask;\r\n this.completeLayers = false;\r\n this.pendingElements = [];\r\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nextendPrototype([HybridRenderer, ICompElement, HBaseElement], HCompElement);\r\nHCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\r\n\r\nHCompElement.prototype.createContainerElements = function () {\r\n this._createBaseContainerElements();\r\n // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\r\n if (this.data.hasMask) {\r\n this.svgElement.setAttribute('width', this.data.w);\r\n this.svgElement.setAttribute('height', this.data.h);\r\n this.transformedElement = this.baseElement;\r\n } else {\r\n this.transformedElement = this.layerElement;\r\n }\r\n};\r\n\r\nHCompElement.prototype.addTo3dContainer = function (elem, pos) {\r\n var j = 0;\r\n var nextElement;\r\n while (j < pos) {\r\n if (this.elements[j] && this.elements[j].getBaseElement) {\r\n nextElement = this.elements[j].getBaseElement();\r\n }\r\n j += 1;\r\n }\r\n if (nextElement) {\r\n this.layerElement.insertBefore(elem, nextElement);\r\n } else {\r\n this.layerElement.appendChild(elem);\r\n }\r\n};\r\n\r\n/* global createNS, extendPrototype, BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement,\r\nHierarchyElement, FrameElement, RenderableElement, createNS, bmMin, bmSqrt, bmMin, bmMax, bmPow */\r\n\r\nfunction HShapeElement(data, globalData, comp) {\r\n // List of drawable elements\r\n this.shapes = [];\r\n // Full shape data\r\n this.shapesData = data.shapes;\r\n // List of styles that will be applied to shapes\r\n this.stylesList = [];\r\n // List of modifiers that will be applied to shapes\r\n this.shapeModifiers = [];\r\n // List of items in shape tree\r\n this.itemsData = [];\r\n // List of items in previous shape tree\r\n this.processedElements = [];\r\n // List of animated components\r\n this.animatedContents = [];\r\n this.shapesContainer = createNS('g');\r\n this.initElement(data, globalData, comp);\r\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n // List of elements that have been created\r\n this.prevViewData = [];\r\n this.currentBBox = {\r\n x: 999999,\r\n y: -999999,\r\n h: 0,\r\n w: 0,\r\n };\r\n}\r\nextendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\r\nHShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\r\n\r\nHShapeElement.prototype.createContent = function () {\r\n var cont;\r\n this.baseElement.style.fontSize = 0;\r\n if (this.data.hasMask) {\r\n this.layerElement.appendChild(this.shapesContainer);\r\n cont = this.svgElement;\r\n } else {\r\n cont = createNS('svg');\r\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\r\n cont.setAttribute('width', size.w);\r\n cont.setAttribute('height', size.h);\r\n cont.appendChild(this.shapesContainer);\r\n this.layerElement.appendChild(cont);\r\n }\r\n\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\r\n this.filterUniqueShapes();\r\n this.shapeCont = cont;\r\n};\r\n\r\nHShapeElement.prototype.getTransformedPoint = function (transformers, point) {\r\n var i;\r\n var len = transformers.length;\r\n for (i = 0; i < len; i += 1) {\r\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\r\n }\r\n return point;\r\n};\r\n\r\nHShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\r\n var shape = item.sh.v;\r\n var transformers = item.transformers;\r\n var i;\r\n var len = shape._length;\r\n var vPoint;\r\n var oPoint;\r\n var nextIPoint;\r\n var nextVPoint;\r\n if (len <= 1) {\r\n return;\r\n }\r\n for (i = 0; i < len - 1; i += 1) {\r\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\r\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\r\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\r\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\r\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\r\n }\r\n if (shape.c) {\r\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\r\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\r\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\r\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\r\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\r\n }\r\n};\r\n\r\nHShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\r\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\r\n var bounds = this.shapeBoundingBox;\r\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\r\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\r\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\r\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\r\n};\r\n\r\nHShapeElement.prototype.shapeBoundingBox = {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0,\r\n};\r\n\r\nHShapeElement.prototype.tempBoundingBox = {\r\n x: 0,\r\n xMax: 0,\r\n y: 0,\r\n yMax: 0,\r\n width: 0,\r\n height: 0,\r\n};\r\n\r\nHShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\r\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\r\n\r\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) { // eslint-disable-line no-plusplus\r\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\r\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\r\n c = 3 * p1[i] - 3 * p0[i];\r\n\r\n b |= 0; // eslint-disable-line no-bitwise\r\n a |= 0; // eslint-disable-line no-bitwise\r\n c |= 0; // eslint-disable-line no-bitwise\r\n\r\n if (a === 0 && b === 0) {\r\n //\r\n } else if (a === 0) {\r\n t = -c / b;\r\n\r\n if (t > 0 && t < 1) {\r\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\r\n }\r\n } else {\r\n b2ac = b * b - 4 * c * a;\r\n\r\n if (b2ac >= 0) {\r\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\r\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\r\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\r\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\r\n }\r\n }\r\n }\r\n\r\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\r\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\r\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\r\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\r\n};\r\n\r\nHShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\r\n return bmPow(1 - t, 3) * p0[i]\r\n + 3 * bmPow(1 - t, 2) * t * p1[i]\r\n + 3 * (1 - t) * bmPow(t, 2) * p2[i]\r\n + bmPow(t, 3) * p3[i];\r\n};\r\n\r\nHShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\r\n var i;\r\n var len = itemsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (itemsData[i] && itemsData[i].sh) {\r\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\r\n } else if (itemsData[i] && itemsData[i].it) {\r\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\r\n }\r\n }\r\n};\r\n\r\nHShapeElement.prototype.currentBoxContains = function (box) {\r\n return this.currentBBox.x <= box.x\r\n && this.currentBBox.y <= box.y\r\n && this.currentBBox.width + this.currentBBox.x >= box.x + box.width\r\n && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\r\n};\r\n\r\nHShapeElement.prototype.renderInnerContent = function () {\r\n this._renderShapeFrame();\r\n\r\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\r\n var tempBoundingBox = this.tempBoundingBox;\r\n var max = 999999;\r\n tempBoundingBox.x = max;\r\n tempBoundingBox.xMax = -max;\r\n tempBoundingBox.y = max;\r\n tempBoundingBox.yMax = -max;\r\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\r\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\r\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y;\r\n // var tempBoundingBox = this.shapeCont.getBBox();\r\n if (this.currentBoxContains(tempBoundingBox)) {\r\n return;\r\n }\r\n var changed = false;\r\n if (this.currentBBox.w !== tempBoundingBox.width) {\r\n this.currentBBox.w = tempBoundingBox.width;\r\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\r\n changed = true;\r\n }\r\n if (this.currentBBox.h !== tempBoundingBox.height) {\r\n this.currentBBox.h = tempBoundingBox.height;\r\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\r\n changed = true;\r\n }\r\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\r\n this.currentBBox.w = tempBoundingBox.width;\r\n this.currentBBox.h = tempBoundingBox.height;\r\n this.currentBBox.x = tempBoundingBox.x;\r\n this.currentBBox.y = tempBoundingBox.y;\r\n\r\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\r\n var shapeStyle = this.shapeCont.style;\r\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\r\n shapeStyle.transform = shapeTransform;\r\n shapeStyle.webkitTransform = shapeTransform;\r\n }\r\n }\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement,\r\nRenderableDOMElement, ITextElement, createSizedArray, createTag, styleDiv, createNS, lineJoinEnum, lineCapEnum */\r\n\r\nfunction HTextElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.textPaths = [];\r\n this.currentBBox = {\r\n x: 999999,\r\n y: -999999,\r\n h: 0,\r\n w: 0,\r\n };\r\n this.renderType = 'svg';\r\n this.isMasked = false;\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\r\n\r\nHTextElement.prototype.createContent = function () {\r\n this.isMasked = this.checkMasks();\r\n if (this.isMasked) {\r\n this.renderType = 'svg';\r\n this.compW = this.comp.data.w;\r\n this.compH = this.comp.data.h;\r\n this.svgElement.setAttribute('width', this.compW);\r\n this.svgElement.setAttribute('height', this.compH);\r\n var g = createNS('g');\r\n this.maskedElement.appendChild(g);\r\n this.innerElem = g;\r\n } else {\r\n this.renderType = 'html';\r\n this.innerElem = this.layerElement;\r\n }\r\n\r\n this.checkParenting();\r\n};\r\n\r\nHTextElement.prototype.buildNewText = function () {\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\r\n var innerElemStyle = this.innerElem.style;\r\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\r\n innerElemStyle.fill = textColor;\r\n innerElemStyle.color = textColor;\r\n if (documentData.sc) {\r\n innerElemStyle.stroke = this.buildColor(documentData.sc);\r\n innerElemStyle.strokeWidth = documentData.sw + 'px';\r\n }\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n if (!this.globalData.fontManager.chars) {\r\n innerElemStyle.fontSize = documentData.finalSize + 'px';\r\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\r\n if (fontData.fClass) {\r\n this.innerElem.className = fontData.fClass;\r\n } else {\r\n innerElemStyle.fontFamily = fontData.fFamily;\r\n var fWeight = documentData.fWeight;\r\n var fStyle = documentData.fStyle;\r\n innerElemStyle.fontStyle = fStyle;\r\n innerElemStyle.fontWeight = fWeight;\r\n }\r\n }\r\n var i;\r\n var len;\r\n\r\n var letters = documentData.l;\r\n len = letters.length;\r\n var tSpan;\r\n var tParent;\r\n var tCont;\r\n var matrixHelper = this.mHelper;\r\n var shapes;\r\n var shapeStr = '';\r\n var cnt = 0;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.globalData.fontManager.chars) {\r\n if (!this.textPaths[cnt]) {\r\n tSpan = createNS('path');\r\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\r\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\r\n tSpan.setAttribute('stroke-miterlimit', '4');\r\n } else {\r\n tSpan = this.textPaths[cnt];\r\n }\r\n if (!this.isMasked) {\r\n if (this.textSpans[cnt]) {\r\n tParent = this.textSpans[cnt];\r\n tCont = tParent.children[0];\r\n } else {\r\n tParent = createTag('div');\r\n tParent.style.lineHeight = 0;\r\n tCont = createNS('svg');\r\n tCont.appendChild(tSpan);\r\n styleDiv(tParent);\r\n }\r\n }\r\n } else if (!this.isMasked) {\r\n if (this.textSpans[cnt]) {\r\n tParent = this.textSpans[cnt];\r\n tSpan = this.textPaths[cnt];\r\n } else {\r\n tParent = createTag('span');\r\n styleDiv(tParent);\r\n tSpan = createTag('span');\r\n styleDiv(tSpan);\r\n tParent.appendChild(tSpan);\r\n }\r\n } else {\r\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\r\n }\r\n // tSpan.setAttribute('visibility', 'hidden');\r\n if (this.globalData.fontManager.chars) {\r\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n var shapeData;\r\n if (charData) {\r\n shapeData = charData.data;\r\n } else {\r\n shapeData = null;\r\n }\r\n matrixHelper.reset();\r\n if (shapeData && shapeData.shapes) {\r\n shapes = shapeData.shapes[0].it;\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n shapeStr = this.createPathShape(matrixHelper, shapes);\r\n tSpan.setAttribute('d', shapeStr);\r\n }\r\n if (!this.isMasked) {\r\n this.innerElem.appendChild(tParent);\r\n if (shapeData && shapeData.shapes) {\r\n // document.body.appendChild is needed to get exact measure of shape\r\n document.body.appendChild(tCont);\r\n var boundingBox = tCont.getBBox();\r\n tCont.setAttribute('width', boundingBox.width + 2);\r\n tCont.setAttribute('height', boundingBox.height + 2);\r\n tCont.setAttribute('viewBox', (boundingBox.x - 1) + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\r\n var tContStyle = tCont.style;\r\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\r\n tContStyle.transform = tContTranslation;\r\n tContStyle.webkitTransform = tContTranslation;\r\n\r\n letters[i].yOffset = boundingBox.y - 1;\r\n } else {\r\n tCont.setAttribute('width', 1);\r\n tCont.setAttribute('height', 1);\r\n }\r\n tParent.appendChild(tCont);\r\n } else {\r\n this.innerElem.appendChild(tSpan);\r\n }\r\n } else {\r\n tSpan.textContent = letters[i].val;\r\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\r\n if (!this.isMasked) {\r\n this.innerElem.appendChild(tParent);\r\n //\r\n var tStyle = tSpan.style;\r\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\r\n tStyle.transform = tSpanTranslation;\r\n tStyle.webkitTransform = tSpanTranslation;\r\n } else {\r\n this.innerElem.appendChild(tSpan);\r\n }\r\n }\r\n //\r\n if (!this.isMasked) {\r\n this.textSpans[cnt] = tParent;\r\n } else {\r\n this.textSpans[cnt] = tSpan;\r\n }\r\n this.textSpans[cnt].style.display = 'block';\r\n this.textPaths[cnt] = tSpan;\r\n cnt += 1;\r\n }\r\n while (cnt < this.textSpans.length) {\r\n this.textSpans[cnt].style.display = 'none';\r\n cnt += 1;\r\n }\r\n};\r\n\r\nHTextElement.prototype.renderInnerContent = function () {\r\n var svgStyle;\r\n if (this.data.singleShape) {\r\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\r\n return;\r\n } if (this.isMasked && this.finalTransform._matMdf) {\r\n // Todo Benchmark if using this is better than getBBox\r\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\r\n svgStyle = this.svgElement.style;\r\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\r\n svgStyle.transform = translation;\r\n svgStyle.webkitTransform = translation;\r\n }\r\n }\r\n\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\r\n return;\r\n }\r\n var i;\r\n var len;\r\n var count = 0;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n\r\n var letters = this.textProperty.currentData.l;\r\n\r\n len = letters.length;\r\n var renderedLetter;\r\n var textSpan;\r\n var textPath;\r\n for (i = 0; i < len; i += 1) {\r\n if (letters[i].n) {\r\n count += 1;\r\n } else {\r\n textSpan = this.textSpans[i];\r\n textPath = this.textPaths[i];\r\n renderedLetter = renderedLetters[count];\r\n count += 1;\r\n if (renderedLetter._mdf.m) {\r\n if (!this.isMasked) {\r\n textSpan.style.webkitTransform = renderedLetter.m;\r\n textSpan.style.transform = renderedLetter.m;\r\n } else {\r\n textSpan.setAttribute('transform', renderedLetter.m);\r\n }\r\n }\r\n /// /textSpan.setAttribute('opacity',renderedLetter.o);\r\n textSpan.style.opacity = renderedLetter.o;\r\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\r\n textPath.setAttribute('stroke-width', renderedLetter.sw);\r\n }\r\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\r\n textPath.setAttribute('stroke', renderedLetter.sc);\r\n }\r\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\r\n textPath.setAttribute('fill', renderedLetter.fc);\r\n textPath.style.color = renderedLetter.fc;\r\n }\r\n }\r\n }\r\n\r\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\r\n var boundingBox = this.innerElem.getBBox();\r\n\r\n if (this.currentBBox.w !== boundingBox.width) {\r\n this.currentBBox.w = boundingBox.width;\r\n this.svgElement.setAttribute('width', boundingBox.width);\r\n }\r\n if (this.currentBBox.h !== boundingBox.height) {\r\n this.currentBBox.h = boundingBox.height;\r\n this.svgElement.setAttribute('height', boundingBox.height);\r\n }\r\n\r\n var margin = 1;\r\n if (this.currentBBox.w !== (boundingBox.width + margin * 2) || this.currentBBox.h !== (boundingBox.height + margin * 2) || this.currentBBox.x !== (boundingBox.x - margin) || this.currentBBox.y !== (boundingBox.y - margin)) {\r\n this.currentBBox.w = boundingBox.width + margin * 2;\r\n this.currentBBox.h = boundingBox.height + margin * 2;\r\n this.currentBBox.x = boundingBox.x - margin;\r\n this.currentBBox.y = boundingBox.y - margin;\r\n\r\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\r\n svgStyle = this.svgElement.style;\r\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\r\n svgStyle.transform = svgTransform;\r\n svgStyle.webkitTransform = svgTransform;\r\n }\r\n }\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement,\r\nFrameElement, RenderableElement, createNS */\r\n\r\nfunction HImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initElement(data, globalData, comp);\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\r\n\r\nHImageElement.prototype.createContent = function () {\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n var img = new Image();\r\n\r\n if (this.data.hasMask) {\r\n this.imageElem = createNS('image');\r\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\r\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\r\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\r\n this.layerElement.appendChild(this.imageElem);\r\n this.baseElement.setAttribute('width', this.assetData.w);\r\n this.baseElement.setAttribute('height', this.assetData.h);\r\n } else {\r\n this.layerElement.appendChild(img);\r\n }\r\n img.crossOrigin = 'anonymous';\r\n img.src = assetPath;\r\n if (this.data.ln) {\r\n this.baseElement.setAttribute('id', this.data.ln);\r\n }\r\n};\r\n\r\n/* global PropertyFactory, degToRads, Matrix, extendPrototype, BaseElement, FrameElement, HierarchyElement */\r\n\r\nfunction HCameraElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initHierarchy();\r\n var getProp = PropertyFactory.getProp;\r\n this.pe = getProp(this, data.pe, 0, 0, this);\r\n if (data.ks.p.s) {\r\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\r\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\r\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\r\n } else {\r\n this.p = getProp(this, data.ks.p, 1, 0, this);\r\n }\r\n if (data.ks.a) {\r\n this.a = getProp(this, data.ks.a, 1, 0, this);\r\n }\r\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\r\n var i;\r\n var len = data.ks.or.k.length;\r\n for (i = 0; i < len; i += 1) {\r\n data.ks.or.k[i].to = null;\r\n data.ks.or.k[i].ti = null;\r\n }\r\n }\r\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\r\n this.or.sh = true;\r\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\r\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\r\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\r\n this.mat = new Matrix();\r\n this._prevMat = new Matrix();\r\n this._isFirstFrame = true;\r\n\r\n // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\r\n this.finalTransform = {\r\n mProp: this,\r\n };\r\n}\r\nextendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\r\n\r\nHCameraElement.prototype.setup = function () {\r\n var i;\r\n var len = this.comp.threeDElements.length;\r\n var comp;\r\n var perspectiveStyle;\r\n var containerStyle;\r\n for (i = 0; i < len; i += 1) {\r\n // [perspectiveElem,container]\r\n comp = this.comp.threeDElements[i];\r\n if (comp.type === '3d') {\r\n perspectiveStyle = comp.perspectiveElem.style;\r\n containerStyle = comp.container.style;\r\n var perspective = this.pe.v + 'px';\r\n var origin = '0px 0px 0px';\r\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\r\n perspectiveStyle.perspective = perspective;\r\n perspectiveStyle.webkitPerspective = perspective;\r\n containerStyle.transformOrigin = origin;\r\n containerStyle.mozTransformOrigin = origin;\r\n containerStyle.webkitTransformOrigin = origin;\r\n perspectiveStyle.transform = matrix;\r\n perspectiveStyle.webkitTransform = matrix;\r\n }\r\n }\r\n};\r\n\r\nHCameraElement.prototype.createElements = function () {\r\n};\r\n\r\nHCameraElement.prototype.hide = function () {\r\n};\r\n\r\nHCameraElement.prototype.renderFrame = function () {\r\n var _mdf = this._isFirstFrame;\r\n var i;\r\n var len;\r\n if (this.hierarchy) {\r\n len = this.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\r\n }\r\n }\r\n if (_mdf || this.pe._mdf || (this.p && this.p._mdf) || (this.px && (this.px._mdf || this.py._mdf || this.pz._mdf)) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || (this.a && this.a._mdf)) {\r\n this.mat.reset();\r\n\r\n if (this.hierarchy) {\r\n len = this.hierarchy.length - 1;\r\n for (i = len; i >= 0; i -= 1) {\r\n var mTransf = this.hierarchy[i].finalTransform.mProp;\r\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\r\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\r\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\r\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\r\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\r\n }\r\n }\r\n if (this.p) {\r\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\r\n } else {\r\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\r\n }\r\n if (this.a) {\r\n var diffVector;\r\n if (this.p) {\r\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\r\n } else {\r\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\r\n }\r\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2));\r\n // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\r\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\r\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\r\n var mRotationX = (Math.atan2(lookDir[1], lookLengthOnXZ));\r\n var mRotationY = (Math.atan2(lookDir[0], -lookDir[2]));\r\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\r\n }\r\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\r\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\r\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\r\n this.mat.translate(0, 0, this.pe.v);\r\n\r\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\r\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\r\n len = this.comp.threeDElements.length;\r\n var comp;\r\n var perspectiveStyle;\r\n var containerStyle;\r\n for (i = 0; i < len; i += 1) {\r\n comp = this.comp.threeDElements[i];\r\n if (comp.type === '3d') {\r\n if (hasMatrixChanged) {\r\n var matValue = this.mat.toCSS();\r\n containerStyle = comp.container.style;\r\n containerStyle.transform = matValue;\r\n containerStyle.webkitTransform = matValue;\r\n }\r\n if (this.pe._mdf) {\r\n perspectiveStyle = comp.perspectiveElem.style;\r\n perspectiveStyle.perspective = this.pe.v + 'px';\r\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\r\n }\r\n }\r\n }\r\n this.mat.clone(this._prevMat);\r\n }\r\n }\r\n this._isFirstFrame = false;\r\n};\r\n\r\nHCameraElement.prototype.prepareFrame = function (num) {\r\n this.prepareProperties(num, true);\r\n};\r\n\r\nHCameraElement.prototype.destroy = function () {\r\n};\r\nHCameraElement.prototype.getBaseElement = function () { return null; };\r\n\r\nfunction HEffects() {\r\n}\r\nHEffects.prototype.renderFrame = function () {};\r\n\r\n/* global createTag, AnimationItem */\r\n/* exported animationManager */\r\n\r\nvar animationManager = (function () {\r\n var moduleOb = {};\r\n var registeredAnimations = [];\r\n var initTime = 0;\r\n var len = 0;\r\n var playingAnimationsNum = 0;\r\n var _stopped = true;\r\n var _isFrozen = false;\r\n\r\n function removeElement(ev) {\r\n var i = 0;\r\n var animItem = ev.target;\r\n while (i < len) {\r\n if (registeredAnimations[i].animation === animItem) {\r\n registeredAnimations.splice(i, 1);\r\n i -= 1;\r\n len -= 1;\r\n if (!animItem.isPaused) {\r\n subtractPlayingCount();\r\n }\r\n }\r\n i += 1;\r\n }\r\n }\r\n\r\n function registerAnimation(element, animationData) {\r\n if (!element) {\r\n return null;\r\n }\r\n var i = 0;\r\n while (i < len) {\r\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\r\n return registeredAnimations[i].animation;\r\n }\r\n i += 1;\r\n }\r\n var animItem = new AnimationItem();\r\n setupAnimation(animItem, element);\r\n animItem.setData(element, animationData);\r\n return animItem;\r\n }\r\n\r\n function getRegisteredAnimations() {\r\n var i;\r\n var lenAnims = registeredAnimations.length;\r\n var animations = [];\r\n for (i = 0; i < lenAnims; i += 1) {\r\n animations.push(registeredAnimations[i].animation);\r\n }\r\n return animations;\r\n }\r\n\r\n function addPlayingCount() {\r\n playingAnimationsNum += 1;\r\n activate();\r\n }\r\n\r\n function subtractPlayingCount() {\r\n playingAnimationsNum -= 1;\r\n }\r\n\r\n function setupAnimation(animItem, element) {\r\n animItem.addEventListener('destroy', removeElement);\r\n animItem.addEventListener('_active', addPlayingCount);\r\n animItem.addEventListener('_idle', subtractPlayingCount);\r\n registeredAnimations.push({ elem: element, animation: animItem });\r\n len += 1;\r\n }\r\n\r\n function loadAnimation(params) {\r\n var animItem = new AnimationItem();\r\n setupAnimation(animItem, null);\r\n animItem.setParams(params);\r\n return animItem;\r\n }\r\n\r\n function setSpeed(val, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setSpeed(val, animation);\r\n }\r\n }\r\n\r\n function setDirection(val, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setDirection(val, animation);\r\n }\r\n }\r\n\r\n function play(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.play(animation);\r\n }\r\n }\r\n function resume(nowTime) {\r\n var elapsedTime = nowTime - initTime;\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.advanceTime(elapsedTime);\r\n }\r\n initTime = nowTime;\r\n if (playingAnimationsNum && !_isFrozen) {\r\n window.requestAnimationFrame(resume);\r\n } else {\r\n _stopped = true;\r\n }\r\n }\r\n\r\n function first(nowTime) {\r\n initTime = nowTime;\r\n window.requestAnimationFrame(resume);\r\n }\r\n\r\n function pause(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.pause(animation);\r\n }\r\n }\r\n\r\n function goToAndStop(value, isFrame, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\r\n }\r\n }\r\n\r\n function stop(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.stop(animation);\r\n }\r\n }\r\n\r\n function togglePause(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.togglePause(animation);\r\n }\r\n }\r\n\r\n function destroy(animation) {\r\n var i;\r\n for (i = (len - 1); i >= 0; i -= 1) {\r\n registeredAnimations[i].animation.destroy(animation);\r\n }\r\n }\r\n\r\n function searchAnimations(animationData, standalone, renderer) {\r\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')),\r\n [].slice.call(document.getElementsByClassName('bodymovin')));\r\n var i;\r\n var lenAnims = animElements.length;\r\n for (i = 0; i < lenAnims; i += 1) {\r\n if (renderer) {\r\n animElements[i].setAttribute('data-bm-type', renderer);\r\n }\r\n registerAnimation(animElements[i], animationData);\r\n }\r\n if (standalone && lenAnims === 0) {\r\n if (!renderer) {\r\n renderer = 'svg';\r\n }\r\n var body = document.getElementsByTagName('body')[0];\r\n body.innerText = '';\r\n var div = createTag('div');\r\n div.style.width = '100%';\r\n div.style.height = '100%';\r\n div.setAttribute('data-bm-type', renderer);\r\n body.appendChild(div);\r\n registerAnimation(div, animationData);\r\n }\r\n }\r\n\r\n function resize() {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.resize();\r\n }\r\n }\r\n\r\n function activate() {\r\n if (!_isFrozen && playingAnimationsNum) {\r\n if (_stopped) {\r\n window.requestAnimationFrame(first);\r\n _stopped = false;\r\n }\r\n }\r\n }\r\n\r\n function freeze() {\r\n _isFrozen = true;\r\n }\r\n\r\n function unfreeze() {\r\n _isFrozen = false;\r\n activate();\r\n }\r\n\r\n function setVolume(val, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setVolume(val, animation);\r\n }\r\n }\r\n\r\n function mute(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.mute(animation);\r\n }\r\n }\r\n\r\n function unmute(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.unmute(animation);\r\n }\r\n }\r\n\r\n moduleOb.registerAnimation = registerAnimation;\r\n moduleOb.loadAnimation = loadAnimation;\r\n moduleOb.setSpeed = setSpeed;\r\n moduleOb.setDirection = setDirection;\r\n moduleOb.play = play;\r\n moduleOb.pause = pause;\r\n moduleOb.stop = stop;\r\n moduleOb.togglePause = togglePause;\r\n moduleOb.searchAnimations = searchAnimations;\r\n moduleOb.resize = resize;\r\n // moduleOb.start = start;\r\n moduleOb.goToAndStop = goToAndStop;\r\n moduleOb.destroy = destroy;\r\n moduleOb.freeze = freeze;\r\n moduleOb.unfreeze = unfreeze;\r\n moduleOb.setVolume = setVolume;\r\n moduleOb.mute = mute;\r\n moduleOb.unmute = unmute;\r\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\r\n return moduleOb;\r\n}());\r\n\r\n/* global createElementID, subframeEnabled, ProjectInterface, ImagePreloader, audioControllerFactory, extendPrototype, BaseEvent,\r\nCanvasRenderer, SVGRenderer, HybridRenderer, dataManager, expressionsPlugin, BMEnterFrameEvent, BMCompleteLoopEvent,\r\nBMCompleteEvent, BMSegmentStartEvent, BMDestroyEvent, BMEnterFrameEvent, BMCompleteLoopEvent, BMCompleteEvent, BMSegmentStartEvent,\r\nBMDestroyEvent, BMRenderFrameErrorEvent, BMConfigErrorEvent, markerParser */\r\n\r\nvar AnimationItem = function () {\r\n this._cbs = [];\r\n this.name = '';\r\n this.path = '';\r\n this.isLoaded = false;\r\n this.currentFrame = 0;\r\n this.currentRawFrame = 0;\r\n this.firstFrame = 0;\r\n this.totalFrames = 0;\r\n this.frameRate = 0;\r\n this.frameMult = 0;\r\n this.playSpeed = 1;\r\n this.playDirection = 1;\r\n this.playCount = 0;\r\n this.animationData = {};\r\n this.assets = [];\r\n this.isPaused = true;\r\n this.autoplay = false;\r\n this.loop = true;\r\n this.renderer = null;\r\n this.animationID = createElementID();\r\n this.assetsPath = '';\r\n this.timeCompleted = 0;\r\n this.segmentPos = 0;\r\n this.isSubframeEnabled = subframeEnabled;\r\n this.segments = [];\r\n this._idle = true;\r\n this._completedLoop = false;\r\n this.projectInterface = ProjectInterface();\r\n this.imagePreloader = new ImagePreloader();\r\n this.audioController = audioControllerFactory();\r\n this.markers = [];\r\n this.configAnimation = this.configAnimation.bind(this);\r\n this.onSetupError = this.onSetupError.bind(this);\r\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\r\n};\r\n\r\nextendPrototype([BaseEvent], AnimationItem);\r\n\r\nAnimationItem.prototype.setParams = function (params) {\r\n if (params.wrapper || params.container) {\r\n this.wrapper = params.wrapper || params.container;\r\n }\r\n var animType = 'svg';\r\n if (params.animType) {\r\n animType = params.animType;\r\n } else if (params.renderer) {\r\n animType = params.renderer;\r\n }\r\n switch (animType) {\r\n case 'canvas':\r\n this.renderer = new CanvasRenderer(this, params.rendererSettings);\r\n break;\r\n case 'svg':\r\n this.renderer = new SVGRenderer(this, params.rendererSettings);\r\n break;\r\n default:\r\n this.renderer = new HybridRenderer(this, params.rendererSettings);\r\n break;\r\n }\r\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\r\n this.renderer.setProjectInterface(this.projectInterface);\r\n this.animType = animType;\r\n if (params.loop === ''\r\n || params.loop === null\r\n || params.loop === undefined\r\n || params.loop === true) {\r\n this.loop = true;\r\n } else if (params.loop === false) {\r\n this.loop = false;\r\n } else {\r\n this.loop = parseInt(params.loop, 10);\r\n }\r\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\r\n this.name = params.name ? params.name : '';\r\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\r\n this.assetsPath = params.assetsPath;\r\n this.initialSegment = params.initialSegment;\r\n if (params.audioFactory) {\r\n this.audioController.setAudioFactory(params.audioFactory);\r\n }\r\n if (params.animationData) {\r\n this.setupAnimation(params.animationData);\r\n } else if (params.path) {\r\n if (params.path.lastIndexOf('\\\\') !== -1) {\r\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\r\n } else {\r\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\r\n }\r\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\r\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\r\n dataManager.loadAnimation(\r\n params.path,\r\n this.configAnimation,\r\n this.onSetupError\r\n );\r\n }\r\n};\r\n\r\nAnimationItem.prototype.onSetupError = function () {\r\n this.trigger('data_failed');\r\n};\r\n\r\nAnimationItem.prototype.setupAnimation = function (data) {\r\n dataManager.completeAnimation(\r\n data,\r\n this.configAnimation\r\n );\r\n};\r\n\r\nAnimationItem.prototype.setData = function (wrapper, animationData) {\r\n if (animationData) {\r\n if (typeof animationData !== 'object') {\r\n animationData = JSON.parse(animationData);\r\n }\r\n }\r\n var params = {\r\n wrapper: wrapper,\r\n animationData: animationData,\r\n };\r\n var wrapperAttributes = wrapper.attributes;\r\n\r\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-animation-path').value\r\n : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-path').value\r\n : wrapperAttributes.getNamedItem('bm-path')\r\n ? wrapperAttributes.getNamedItem('bm-path').value\r\n : '';\r\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-type').value\r\n : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-type').value\r\n : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('bm-type').value\r\n : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value\r\n : wrapperAttributes.getNamedItem('bm-renderer')\r\n ? wrapperAttributes.getNamedItem('bm-renderer').value\r\n : 'canvas';\r\n\r\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-loop').value\r\n : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-loop').value\r\n : wrapperAttributes.getNamedItem('bm-loop')\r\n ? wrapperAttributes.getNamedItem('bm-loop').value\r\n : '';\r\n if (loop === 'false') {\r\n params.loop = false;\r\n } else if (loop === 'true') {\r\n params.loop = true;\r\n } else if (loop !== '') {\r\n params.loop = parseInt(loop, 10);\r\n }\r\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value\r\n : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value\r\n : wrapperAttributes.getNamedItem('bm-autoplay')\r\n ? wrapperAttributes.getNamedItem('bm-autoplay').value\r\n : true;\r\n params.autoplay = autoplay !== 'false';\r\n\r\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-name').value\r\n : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-name').value\r\n : wrapperAttributes.getNamedItem('bm-name')\r\n ? wrapperAttributes.getNamedItem('bm-name').value\r\n : '';\r\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value\r\n : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value\r\n : wrapperAttributes.getNamedItem('bm-prerender')\r\n ? wrapperAttributes.getNamedItem('bm-prerender').value\r\n : '';\r\n\r\n if (prerender === 'false') {\r\n params.prerender = false;\r\n }\r\n this.setParams(params);\r\n};\r\n\r\nAnimationItem.prototype.includeLayers = function (data) {\r\n if (data.op > this.animationData.op) {\r\n this.animationData.op = data.op;\r\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\r\n }\r\n var layers = this.animationData.layers;\r\n var i;\r\n var len = layers.length;\r\n var newLayers = data.layers;\r\n var j;\r\n var jLen = newLayers.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n i = 0;\r\n while (i < len) {\r\n if (layers[i].id === newLayers[j].id) {\r\n layers[i] = newLayers[j];\r\n break;\r\n }\r\n i += 1;\r\n }\r\n }\r\n if (data.chars || data.fonts) {\r\n this.renderer.globalData.fontManager.addChars(data.chars);\r\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\r\n }\r\n if (data.assets) {\r\n len = data.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.animationData.assets.push(data.assets[i]);\r\n }\r\n }\r\n this.animationData.__complete = false;\r\n dataManager.completeAnimation(\r\n this.animationData,\r\n this.onSegmentComplete\r\n );\r\n};\r\n\r\nAnimationItem.prototype.onSegmentComplete = function (data) {\r\n this.animationData = data;\r\n if (expressionsPlugin) {\r\n expressionsPlugin.initExpressions(this);\r\n }\r\n this.loadNextSegment();\r\n};\r\n\r\nAnimationItem.prototype.loadNextSegment = function () {\r\n var segments = this.animationData.segments;\r\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\r\n this.trigger('data_ready');\r\n this.timeCompleted = this.totalFrames;\r\n return;\r\n }\r\n var segment = segments.shift();\r\n this.timeCompleted = segment.time * this.frameRate;\r\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\r\n this.segmentPos += 1;\r\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\r\n this.trigger('data_failed');\r\n }.bind(this));\r\n};\r\n\r\nAnimationItem.prototype.loadSegments = function () {\r\n var segments = this.animationData.segments;\r\n if (!segments) {\r\n this.timeCompleted = this.totalFrames;\r\n }\r\n this.loadNextSegment();\r\n};\r\n\r\nAnimationItem.prototype.imagesLoaded = function () {\r\n this.trigger('loaded_images');\r\n this.checkLoaded();\r\n};\r\n\r\nAnimationItem.prototype.preloadImages = function () {\r\n this.imagePreloader.setAssetsPath(this.assetsPath);\r\n this.imagePreloader.setPath(this.path);\r\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\r\n};\r\n\r\nAnimationItem.prototype.configAnimation = function (animData) {\r\n if (!this.renderer) {\r\n return;\r\n }\r\n try {\r\n this.animationData = animData;\r\n if (this.initialSegment) {\r\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\r\n this.firstFrame = Math.round(this.initialSegment[0]);\r\n } else {\r\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\r\n this.firstFrame = Math.round(this.animationData.ip);\r\n }\r\n this.renderer.configAnimation(animData);\r\n if (!animData.assets) {\r\n animData.assets = [];\r\n }\r\n\r\n this.assets = this.animationData.assets;\r\n this.frameRate = this.animationData.fr;\r\n this.frameMult = this.animationData.fr / 1000;\r\n this.renderer.searchExtraCompositions(animData.assets);\r\n this.markers = markerParser(animData.markers || []);\r\n this.trigger('config_ready');\r\n this.preloadImages();\r\n this.loadSegments();\r\n this.updaFrameModifier();\r\n this.waitForFontsLoaded();\r\n if (this.isPaused) {\r\n this.audioController.pause();\r\n }\r\n } catch (error) {\r\n this.triggerConfigError(error);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.waitForFontsLoaded = function () {\r\n if (!this.renderer) {\r\n return;\r\n }\r\n if (this.renderer.globalData.fontManager.isLoaded) {\r\n this.checkLoaded();\r\n } else {\r\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.checkLoaded = function () {\r\n if (!this.isLoaded\r\n && this.renderer.globalData.fontManager.isLoaded\r\n && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas')\r\n && (this.imagePreloader.loadedFootages())\r\n ) {\r\n this.isLoaded = true;\r\n if (expressionsPlugin) {\r\n expressionsPlugin.initExpressions(this);\r\n }\r\n this.renderer.initItems();\r\n setTimeout(function () {\r\n this.trigger('DOMLoaded');\r\n }.bind(this), 0);\r\n this.gotoFrame();\r\n if (this.autoplay) {\r\n this.play();\r\n }\r\n }\r\n};\r\n\r\nAnimationItem.prototype.resize = function () {\r\n this.renderer.updateContainerSize();\r\n};\r\n\r\nAnimationItem.prototype.setSubframe = function (flag) {\r\n this.isSubframeEnabled = !!flag;\r\n};\r\n\r\nAnimationItem.prototype.gotoFrame = function () {\r\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\r\n\r\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\r\n this.currentFrame = this.timeCompleted;\r\n }\r\n this.trigger('enterFrame');\r\n this.renderFrame();\r\n this.trigger('drawnFrame');\r\n};\r\n\r\nAnimationItem.prototype.renderFrame = function () {\r\n if (this.isLoaded === false || !this.renderer) {\r\n return;\r\n }\r\n try {\r\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\r\n } catch (error) {\r\n this.triggerRenderFrameError(error);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.play = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n if (this.isPaused === true) {\r\n this.isPaused = false;\r\n this.audioController.resume();\r\n if (this._idle) {\r\n this._idle = false;\r\n this.trigger('_active');\r\n }\r\n }\r\n};\r\n\r\nAnimationItem.prototype.pause = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n if (this.isPaused === false) {\r\n this.isPaused = true;\r\n this._idle = true;\r\n this.trigger('_idle');\r\n this.audioController.pause();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.togglePause = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n if (this.isPaused === true) {\r\n this.play();\r\n } else {\r\n this.pause();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.stop = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.pause();\r\n this.playCount = 0;\r\n this._completedLoop = false;\r\n this.setCurrentRawFrameValue(0);\r\n};\r\n\r\nAnimationItem.prototype.getMarkerData = function (markerName) {\r\n var marker;\r\n for (var i = 0; i < this.markers.length; i += 1) {\r\n marker = this.markers[i];\r\n if (marker.payload && marker.payload.name === markerName) {\r\n return marker;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nAnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n var numValue = Number(value);\r\n if (isNaN(numValue)) {\r\n var marker = this.getMarkerData(value);\r\n if (marker) {\r\n this.goToAndStop(marker.time, true);\r\n }\r\n } else if (isFrame) {\r\n this.setCurrentRawFrameValue(value);\r\n } else {\r\n this.setCurrentRawFrameValue(value * this.frameModifier);\r\n }\r\n this.pause();\r\n};\r\n\r\nAnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n var numValue = Number(value);\r\n if (isNaN(numValue)) {\r\n var marker = this.getMarkerData(value);\r\n if (marker) {\r\n if (!marker.duration) {\r\n this.goToAndStop(marker.time, true);\r\n } else {\r\n this.playSegments([marker.time, marker.time + marker.duration], true);\r\n }\r\n }\r\n } else {\r\n this.goToAndStop(numValue, isFrame, name);\r\n }\r\n this.play();\r\n};\r\n\r\nAnimationItem.prototype.advanceTime = function (value) {\r\n if (this.isPaused === true || this.isLoaded === false) {\r\n return;\r\n }\r\n var nextValue = this.currentRawFrame + value * this.frameModifier;\r\n var _isComplete = false;\r\n // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\r\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\r\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\r\n if (!this.loop || this.playCount === this.loop) {\r\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\r\n _isComplete = true;\r\n nextValue = this.totalFrames - 1;\r\n }\r\n } else if (nextValue >= this.totalFrames) {\r\n this.playCount += 1;\r\n if (!this.checkSegments(nextValue % this.totalFrames)) {\r\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\r\n this._completedLoop = true;\r\n this.trigger('loopComplete');\r\n }\r\n } else {\r\n this.setCurrentRawFrameValue(nextValue);\r\n }\r\n } else if (nextValue < 0) {\r\n if (!this.checkSegments(nextValue % this.totalFrames)) {\r\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) { // eslint-disable-line no-plusplus\r\n this.setCurrentRawFrameValue(this.totalFrames + (nextValue % this.totalFrames));\r\n if (!this._completedLoop) {\r\n this._completedLoop = true;\r\n } else {\r\n this.trigger('loopComplete');\r\n }\r\n } else {\r\n _isComplete = true;\r\n nextValue = 0;\r\n }\r\n }\r\n } else {\r\n this.setCurrentRawFrameValue(nextValue);\r\n }\r\n if (_isComplete) {\r\n this.setCurrentRawFrameValue(nextValue);\r\n this.pause();\r\n this.trigger('complete');\r\n }\r\n};\r\n\r\nAnimationItem.prototype.adjustSegment = function (arr, offset) {\r\n this.playCount = 0;\r\n if (arr[1] < arr[0]) {\r\n if (this.frameModifier > 0) {\r\n if (this.playSpeed < 0) {\r\n this.setSpeed(-this.playSpeed);\r\n } else {\r\n this.setDirection(-1);\r\n }\r\n }\r\n this.totalFrames = arr[0] - arr[1];\r\n this.timeCompleted = this.totalFrames;\r\n this.firstFrame = arr[1];\r\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\r\n } else if (arr[1] > arr[0]) {\r\n if (this.frameModifier < 0) {\r\n if (this.playSpeed < 0) {\r\n this.setSpeed(-this.playSpeed);\r\n } else {\r\n this.setDirection(1);\r\n }\r\n }\r\n this.totalFrames = arr[1] - arr[0];\r\n this.timeCompleted = this.totalFrames;\r\n this.firstFrame = arr[0];\r\n this.setCurrentRawFrameValue(0.001 + offset);\r\n }\r\n this.trigger('segmentStart');\r\n};\r\nAnimationItem.prototype.setSegment = function (init, end) {\r\n var pendingFrame = -1;\r\n if (this.isPaused) {\r\n if (this.currentRawFrame + this.firstFrame < init) {\r\n pendingFrame = init;\r\n } else if (this.currentRawFrame + this.firstFrame > end) {\r\n pendingFrame = end - init;\r\n }\r\n }\r\n\r\n this.firstFrame = init;\r\n this.totalFrames = end - init;\r\n this.timeCompleted = this.totalFrames;\r\n if (pendingFrame !== -1) {\r\n this.goToAndStop(pendingFrame, true);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.playSegments = function (arr, forceFlag) {\r\n if (forceFlag) {\r\n this.segments.length = 0;\r\n }\r\n if (typeof arr[0] === 'object') {\r\n var i;\r\n var len = arr.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.segments.push(arr[i]);\r\n }\r\n } else {\r\n this.segments.push(arr);\r\n }\r\n if (this.segments.length && forceFlag) {\r\n this.adjustSegment(this.segments.shift(), 0);\r\n }\r\n if (this.isPaused) {\r\n this.play();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.resetSegments = function (forceFlag) {\r\n this.segments.length = 0;\r\n this.segments.push([this.animationData.ip, this.animationData.op]);\r\n if (forceFlag) {\r\n this.checkSegments(0);\r\n }\r\n};\r\nAnimationItem.prototype.checkSegments = function (offset) {\r\n if (this.segments.length) {\r\n this.adjustSegment(this.segments.shift(), offset);\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nAnimationItem.prototype.destroy = function (name) {\r\n if ((name && this.name !== name) || !this.renderer) {\r\n return;\r\n }\r\n this.renderer.destroy();\r\n this.imagePreloader.destroy();\r\n this.trigger('destroy');\r\n this._cbs = null;\r\n this.onEnterFrame = null;\r\n this.onLoopComplete = null;\r\n this.onComplete = null;\r\n this.onSegmentStart = null;\r\n this.onDestroy = null;\r\n this.renderer = null;\r\n this.renderer = null;\r\n this.imagePreloader = null;\r\n this.projectInterface = null;\r\n};\r\n\r\nAnimationItem.prototype.setCurrentRawFrameValue = function (value) {\r\n this.currentRawFrame = value;\r\n this.gotoFrame();\r\n};\r\n\r\nAnimationItem.prototype.setSpeed = function (val) {\r\n this.playSpeed = val;\r\n this.updaFrameModifier();\r\n};\r\n\r\nAnimationItem.prototype.setDirection = function (val) {\r\n this.playDirection = val < 0 ? -1 : 1;\r\n this.updaFrameModifier();\r\n};\r\n\r\nAnimationItem.prototype.setVolume = function (val, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.audioController.setVolume(val);\r\n};\r\n\r\nAnimationItem.prototype.getVolume = function () {\r\n return this.audioController.getVolume();\r\n};\r\n\r\nAnimationItem.prototype.mute = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.audioController.mute();\r\n};\r\n\r\nAnimationItem.prototype.unmute = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.audioController.unmute();\r\n};\r\n\r\nAnimationItem.prototype.updaFrameModifier = function () {\r\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\r\n this.audioController.setRate(this.playSpeed * this.playDirection);\r\n};\r\n\r\nAnimationItem.prototype.getPath = function () {\r\n return this.path;\r\n};\r\n\r\nAnimationItem.prototype.getAssetsPath = function (assetData) {\r\n var path = '';\r\n if (assetData.e) {\r\n path = assetData.p;\r\n } else if (this.assetsPath) {\r\n var imagePath = assetData.p;\r\n if (imagePath.indexOf('images/') !== -1) {\r\n imagePath = imagePath.split('/')[1];\r\n }\r\n path = this.assetsPath + imagePath;\r\n } else {\r\n path = this.path;\r\n path += assetData.u ? assetData.u : '';\r\n path += assetData.p;\r\n }\r\n return path;\r\n};\r\n\r\nAnimationItem.prototype.getAssetData = function (id) {\r\n var i = 0;\r\n var len = this.assets.length;\r\n while (i < len) {\r\n if (id === this.assets[i].id) {\r\n return this.assets[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n};\r\n\r\nAnimationItem.prototype.hide = function () {\r\n this.renderer.hide();\r\n};\r\n\r\nAnimationItem.prototype.show = function () {\r\n this.renderer.show();\r\n};\r\n\r\nAnimationItem.prototype.getDuration = function (isFrame) {\r\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\r\n};\r\n\r\nAnimationItem.prototype.trigger = function (name) {\r\n if (this._cbs && this._cbs[name]) {\r\n switch (name) {\r\n case 'enterFrame':\r\n case 'drawnFrame':\r\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\r\n break;\r\n case 'loopComplete':\r\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\r\n break;\r\n case 'complete':\r\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\r\n break;\r\n case 'segmentStart':\r\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\r\n break;\r\n case 'destroy':\r\n this.triggerEvent(name, new BMDestroyEvent(name, this));\r\n break;\r\n default:\r\n this.triggerEvent(name);\r\n }\r\n }\r\n if (name === 'enterFrame' && this.onEnterFrame) {\r\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\r\n }\r\n if (name === 'loopComplete' && this.onLoopComplete) {\r\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\r\n }\r\n if (name === 'complete' && this.onComplete) {\r\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\r\n }\r\n if (name === 'segmentStart' && this.onSegmentStart) {\r\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\r\n }\r\n if (name === 'destroy' && this.onDestroy) {\r\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\r\n }\r\n};\r\n\r\nAnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\r\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\r\n this.triggerEvent('error', error);\r\n\r\n if (this.onError) {\r\n this.onError.call(this, error);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.triggerConfigError = function (nativeError) {\r\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\r\n this.triggerEvent('error', error);\r\n\r\n if (this.onError) {\r\n this.onError.call(this, error);\r\n }\r\n};\r\n\r\n/* global CompExpressionInterface, expressionsPlugin: writable */\r\n/* exported expressionsPlugin */\r\n\r\nvar Expressions = (function () {\r\n var ob = {};\r\n ob.initExpressions = initExpressions;\r\n\r\n function initExpressions(animation) {\r\n var stackCount = 0;\r\n var registers = [];\r\n\r\n function pushExpression() {\r\n stackCount += 1;\r\n }\r\n\r\n function popExpression() {\r\n stackCount -= 1;\r\n if (stackCount === 0) {\r\n releaseInstances();\r\n }\r\n }\r\n\r\n function registerExpressionProperty(expression) {\r\n if (registers.indexOf(expression) === -1) {\r\n registers.push(expression);\r\n }\r\n }\r\n\r\n function releaseInstances() {\r\n var i;\r\n var len = registers.length;\r\n for (i = 0; i < len; i += 1) {\r\n registers[i].release();\r\n }\r\n registers.length = 0;\r\n }\r\n\r\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\r\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\r\n animation.renderer.globalData.pushExpression = pushExpression;\r\n animation.renderer.globalData.popExpression = popExpression;\r\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\r\n }\r\n return ob;\r\n}());\r\n\r\nexpressionsPlugin = Expressions;\r\n\r\n/* eslint-disable camelcase, no-unused-vars */\r\n/* global BMMath, BezierFactory, createTypedArray, degToRads, shapePool */\r\n\r\nvar ExpressionManager = (function () {\r\n 'use strict';\r\n\r\n var ob = {};\r\n var Math = BMMath;\r\n var window = null;\r\n var document = null;\r\n var XMLHttpRequest = null;\r\n var fetch = null;\r\n var frames = null;\r\n\r\n function $bm_isInstanceOfArray(arr) {\r\n return arr.constructor === Array || arr.constructor === Float32Array;\r\n }\r\n\r\n function isNumerable(tOfV, v) {\r\n return tOfV === 'number' || tOfV === 'boolean' || tOfV === 'string' || v instanceof Number;\r\n }\r\n\r\n function $bm_neg(a) {\r\n var tOfA = typeof a;\r\n if (tOfA === 'number' || tOfA === 'boolean' || a instanceof Number) {\r\n return -a;\r\n }\r\n if ($bm_isInstanceOfArray(a)) {\r\n var i;\r\n var lenA = a.length;\r\n var retArr = [];\r\n for (i = 0; i < lenA; i += 1) {\r\n retArr[i] = -a[i];\r\n }\r\n return retArr;\r\n }\r\n if (a.propType) {\r\n return a.v;\r\n }\r\n return -a;\r\n }\r\n\r\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\r\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\r\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\r\n\r\n function sum(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n if (tOfA === 'string' || tOfB === 'string') {\r\n return a + b;\r\n }\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a + b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n a = a.slice(0);\r\n a[0] += b;\r\n return a;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n b = b.slice(0);\r\n b[0] = a + b[0];\r\n return b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\r\n var i = 0;\r\n var lenA = a.length;\r\n var lenB = b.length;\r\n var retArr = [];\r\n while (i < lenA || i < lenB) {\r\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\r\n retArr[i] = a[i] + b[i];\r\n } else {\r\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\r\n }\r\n i += 1;\r\n }\r\n return retArr;\r\n }\r\n return 0;\r\n }\r\n var add = sum;\r\n\r\n function sub(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n if (tOfA === 'string') {\r\n a = parseInt(a, 10);\r\n }\r\n if (tOfB === 'string') {\r\n b = parseInt(b, 10);\r\n }\r\n return a - b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n a = a.slice(0);\r\n a[0] -= b;\r\n return a;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n b = b.slice(0);\r\n b[0] = a - b[0];\r\n return b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\r\n var i = 0;\r\n var lenA = a.length;\r\n var lenB = b.length;\r\n var retArr = [];\r\n while (i < lenA || i < lenB) {\r\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\r\n retArr[i] = a[i] - b[i];\r\n } else {\r\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\r\n }\r\n i += 1;\r\n }\r\n return retArr;\r\n }\r\n return 0;\r\n }\r\n\r\n function mul(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n var arr;\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a * b;\r\n }\r\n\r\n var i;\r\n var len;\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n len = a.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a[i] * b;\r\n }\r\n return arr;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n len = b.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a * b[i];\r\n }\r\n return arr;\r\n }\r\n return 0;\r\n }\r\n\r\n function div(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n var arr;\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a / b;\r\n }\r\n var i;\r\n var len;\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n len = a.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a[i] / b;\r\n }\r\n return arr;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n len = b.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a / b[i];\r\n }\r\n return arr;\r\n }\r\n return 0;\r\n }\r\n function mod(a, b) {\r\n if (typeof a === 'string') {\r\n a = parseInt(a, 10);\r\n }\r\n if (typeof b === 'string') {\r\n b = parseInt(b, 10);\r\n }\r\n return a % b;\r\n }\r\n var $bm_sum = sum;\r\n var $bm_sub = sub;\r\n var $bm_mul = mul;\r\n var $bm_div = div;\r\n var $bm_mod = mod;\r\n\r\n function clamp(num, min, max) {\r\n if (min > max) {\r\n var mm = max;\r\n max = min;\r\n min = mm;\r\n }\r\n return Math.min(Math.max(num, min), max);\r\n }\r\n\r\n function radiansToDegrees(val) {\r\n return val / degToRads;\r\n }\r\n var radians_to_degrees = radiansToDegrees;\r\n\r\n function degreesToRadians(val) {\r\n return val * degToRads;\r\n }\r\n var degrees_to_radians = radiansToDegrees;\r\n\r\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\r\n\r\n function length(arr1, arr2) {\r\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\r\n arr2 = arr2 || 0;\r\n return Math.abs(arr1 - arr2);\r\n }\r\n if (!arr2) {\r\n arr2 = helperLengthArray;\r\n }\r\n var i;\r\n var len = Math.min(arr1.length, arr2.length);\r\n var addedLength = 0;\r\n for (i = 0; i < len; i += 1) {\r\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\r\n }\r\n return Math.sqrt(addedLength);\r\n }\r\n\r\n function normalize(vec) {\r\n return div(vec, length(vec));\r\n }\r\n\r\n function rgbToHsl(val) {\r\n var r = val[0]; var g = val[1]; var b = val[2];\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var h;\r\n var s;\r\n var l = (max + min) / 2;\r\n\r\n if (max === min) {\r\n h = 0; // achromatic\r\n s = 0; // achromatic\r\n } else {\r\n var d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n switch (max) {\r\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\r\n case g: h = (b - r) / d + 2; break;\r\n case b: h = (r - g) / d + 4; break;\r\n default: break;\r\n }\r\n h /= 6;\r\n }\r\n\r\n return [h, s, l, val[3]];\r\n }\r\n\r\n function hue2rgb(p, q, t) {\r\n if (t < 0) t += 1;\r\n if (t > 1) t -= 1;\r\n if (t < 1 / 6) return p + (q - p) * 6 * t;\r\n if (t < 1 / 2) return q;\r\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\r\n return p;\r\n }\r\n\r\n function hslToRgb(val) {\r\n var h = val[0];\r\n var s = val[1];\r\n var l = val[2];\r\n\r\n var r;\r\n var g;\r\n var b;\r\n\r\n if (s === 0) {\r\n r = l; // achromatic\r\n b = l; // achromatic\r\n g = l; // achromatic\r\n } else {\r\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n var p = 2 * l - q;\r\n r = hue2rgb(p, q, h + 1 / 3);\r\n g = hue2rgb(p, q, h);\r\n b = hue2rgb(p, q, h - 1 / 3);\r\n }\r\n\r\n return [r, g, b, val[3]];\r\n }\r\n\r\n function linear(t, tMin, tMax, value1, value2) {\r\n if (value1 === undefined || value2 === undefined) {\r\n value1 = tMin;\r\n value2 = tMax;\r\n tMin = 0;\r\n tMax = 1;\r\n }\r\n if (tMax < tMin) {\r\n var _tMin = tMax;\r\n tMax = tMin;\r\n tMin = _tMin;\r\n }\r\n if (t <= tMin) {\r\n return value1;\r\n } if (t >= tMax) {\r\n return value2;\r\n }\r\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\r\n if (!value1.length) {\r\n return value1 + (value2 - value1) * perc;\r\n }\r\n var i;\r\n var len = value1.length;\r\n var arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\r\n }\r\n return arr;\r\n }\r\n function random(min, max) {\r\n if (max === undefined) {\r\n if (min === undefined) {\r\n min = 0;\r\n max = 1;\r\n } else {\r\n max = min;\r\n min = undefined;\r\n }\r\n }\r\n if (max.length) {\r\n var i;\r\n var len = max.length;\r\n if (!min) {\r\n min = createTypedArray('float32', len);\r\n }\r\n var arr = createTypedArray('float32', len);\r\n var rnd = BMMath.random();\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = min[i] + rnd * (max[i] - min[i]);\r\n }\r\n return arr;\r\n }\r\n if (min === undefined) {\r\n min = 0;\r\n }\r\n var rndm = BMMath.random();\r\n return min + rndm * (max - min);\r\n }\r\n\r\n function createPath(points, inTangents, outTangents, closed) {\r\n var i;\r\n var len = points.length;\r\n var path = shapePool.newElement();\r\n path.setPathData(!!closed, len);\r\n var arrPlaceholder = [0, 0];\r\n var inVertexPoint;\r\n var outVertexPoint;\r\n for (i = 0; i < len; i += 1) {\r\n inVertexPoint = (inTangents && inTangents[i]) ? inTangents[i] : arrPlaceholder;\r\n outVertexPoint = (outTangents && outTangents[i]) ? outTangents[i] : arrPlaceholder;\r\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\r\n }\r\n return path;\r\n }\r\n\r\n function initiateExpression(elem, data, property) {\r\n var val = data.x;\r\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\r\n var _needsRandom = val.indexOf('random') !== -1;\r\n var elemType = elem.data.ty;\r\n var transform;\r\n var $bm_transform;\r\n var content;\r\n var effect;\r\n var thisProperty = property;\r\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\r\n Object.defineProperty(thisProperty, 'value', {\r\n get: function () {\r\n return thisProperty.v;\r\n },\r\n });\r\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\r\n elem.comp.displayStartTime = 0;\r\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\r\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\r\n var width = elem.data.sw ? elem.data.sw : 0;\r\n var height = elem.data.sh ? elem.data.sh : 0;\r\n var name = elem.data.nm;\r\n var loopIn;\r\n var loop_in;\r\n var loopOut;\r\n var loop_out;\r\n var smooth;\r\n var toWorld;\r\n var fromWorld;\r\n var fromComp;\r\n var toComp;\r\n var fromCompToSurface;\r\n var position;\r\n var rotation;\r\n var anchorPoint;\r\n var scale;\r\n var thisLayer;\r\n var thisComp;\r\n var mask;\r\n var valueAtTime;\r\n var velocityAtTime;\r\n\r\n var scoped_bm_rt;\r\n // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\r\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\r\n var numKeys = property.kf ? data.k.length : 0;\r\n\r\n var active = !this.data || this.data.hd !== true;\r\n\r\n var wiggle = function wiggle(freq, amp) {\r\n var iWiggle;\r\n var j;\r\n var lenWiggle = this.pv.length ? this.pv.length : 1;\r\n var addedAmps = createTypedArray('float32', lenWiggle);\r\n freq = 5;\r\n var iterations = Math.floor(time * freq);\r\n iWiggle = 0;\r\n j = 0;\r\n while (iWiggle < iterations) {\r\n // var rnd = BMMath.random();\r\n for (j = 0; j < lenWiggle; j += 1) {\r\n addedAmps[j] += -amp + amp * 2 * BMMath.random();\r\n // addedAmps[j] += -amp + amp*2*rnd;\r\n }\r\n iWiggle += 1;\r\n }\r\n // var rnd2 = BMMath.random();\r\n var periods = time * freq;\r\n var perc = periods - Math.floor(periods);\r\n var arr = createTypedArray('float32', lenWiggle);\r\n if (lenWiggle > 1) {\r\n for (j = 0; j < lenWiggle; j += 1) {\r\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc;\r\n // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\r\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\r\n }\r\n return arr;\r\n }\r\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\r\n }.bind(this);\r\n\r\n if (thisProperty.loopIn) {\r\n loopIn = thisProperty.loopIn.bind(thisProperty);\r\n loop_in = loopIn;\r\n }\r\n\r\n if (thisProperty.loopOut) {\r\n loopOut = thisProperty.loopOut.bind(thisProperty);\r\n loop_out = loopOut;\r\n }\r\n\r\n if (thisProperty.smooth) {\r\n smooth = thisProperty.smooth.bind(thisProperty);\r\n }\r\n\r\n function loopInDuration(type, duration) {\r\n return loopIn(type, duration, true);\r\n }\r\n\r\n function loopOutDuration(type, duration) {\r\n return loopOut(type, duration, true);\r\n }\r\n\r\n if (this.getValueAtTime) {\r\n valueAtTime = this.getValueAtTime.bind(this);\r\n }\r\n\r\n if (this.getVelocityAtTime) {\r\n velocityAtTime = this.getVelocityAtTime.bind(this);\r\n }\r\n\r\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\r\n\r\n function lookAt(elem1, elem2) {\r\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\r\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\r\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\r\n return [yaw, pitch, 0];\r\n }\r\n\r\n function easeOut(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function easeIn(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function ease(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function applyEase(fn, t, tMin, tMax, val1, val2) {\r\n if (val1 === undefined) {\r\n val1 = tMin;\r\n val2 = tMax;\r\n } else {\r\n t = (t - tMin) / (tMax - tMin);\r\n }\r\n if (t > 1) {\r\n t = 1;\r\n } else if (t < 0) {\r\n t = 0;\r\n }\r\n var mult = fn(t);\r\n if ($bm_isInstanceOfArray(val1)) {\r\n var iKey;\r\n var lenKey = val1.length;\r\n var arr = createTypedArray('float32', lenKey);\r\n for (iKey = 0; iKey < lenKey; iKey += 1) {\r\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\r\n }\r\n return arr;\r\n }\r\n return (val2 - val1) * mult + val1;\r\n }\r\n\r\n function nearestKey(time) {\r\n var iKey;\r\n var lenKey = data.k.length;\r\n var index;\r\n var keyTime;\r\n if (!data.k.length || typeof (data.k[0]) === 'number') {\r\n index = 0;\r\n keyTime = 0;\r\n } else {\r\n index = -1;\r\n time *= elem.comp.globalData.frameRate;\r\n if (time < data.k[0].t) {\r\n index = 1;\r\n keyTime = data.k[0].t;\r\n } else {\r\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\r\n if (time === data.k[iKey].t) {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n break;\r\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\r\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\r\n index = iKey + 2;\r\n keyTime = data.k[iKey + 1].t;\r\n } else {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n }\r\n break;\r\n }\r\n }\r\n if (index === -1) {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n }\r\n }\r\n }\r\n var obKey = {};\r\n obKey.index = index;\r\n obKey.time = keyTime / elem.comp.globalData.frameRate;\r\n return obKey;\r\n }\r\n\r\n function key(ind) {\r\n var obKey;\r\n var iKey;\r\n var lenKey;\r\n if (!data.k.length || typeof (data.k[0]) === 'number') {\r\n throw new Error('The property has no keyframe at index ' + ind);\r\n }\r\n ind -= 1;\r\n obKey = {\r\n time: data.k[ind].t / elem.comp.globalData.frameRate,\r\n value: [],\r\n };\r\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\r\n\r\n lenKey = arr.length;\r\n for (iKey = 0; iKey < lenKey; iKey += 1) {\r\n obKey[iKey] = arr[iKey];\r\n obKey.value[iKey] = arr[iKey];\r\n }\r\n return obKey;\r\n }\r\n\r\n function framesToTime(fr, fps) {\r\n if (!fps) {\r\n fps = elem.comp.globalData.frameRate;\r\n }\r\n return fr / fps;\r\n }\r\n\r\n function timeToFrames(t, fps) {\r\n if (!t && t !== 0) {\r\n t = time;\r\n }\r\n if (!fps) {\r\n fps = elem.comp.globalData.frameRate;\r\n }\r\n return t * fps;\r\n }\r\n\r\n function seedRandom(seed) {\r\n BMMath.seedrandom(randSeed + seed);\r\n }\r\n\r\n function sourceRectAtTime() {\r\n return elem.sourceRectAtTime();\r\n }\r\n\r\n function substring(init, end) {\r\n if (typeof value === 'string') {\r\n if (end === undefined) {\r\n return value.substring(init);\r\n }\r\n return value.substring(init, end);\r\n }\r\n return '';\r\n }\r\n\r\n function substr(init, end) {\r\n if (typeof value === 'string') {\r\n if (end === undefined) {\r\n return value.substr(init);\r\n }\r\n return value.substr(init, end);\r\n }\r\n return '';\r\n }\r\n\r\n function posterizeTime(framesPerSecond) {\r\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\r\n value = valueAtTime(time);\r\n }\r\n\r\n var time;\r\n var velocity;\r\n var value;\r\n var text;\r\n var textIndex;\r\n var textTotal;\r\n var selectorValue;\r\n var index = elem.data.ind;\r\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\r\n var parent;\r\n var randSeed = Math.floor(Math.random() * 1000000);\r\n var globalData = elem.globalData;\r\n function executeExpression(_value) {\r\n // globalData.pushExpression();\r\n value = _value;\r\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\r\n return value;\r\n }\r\n if (this.propType === 'textSelector') {\r\n textIndex = this.textIndex;\r\n textTotal = this.textTotal;\r\n selectorValue = this.selectorValue;\r\n }\r\n if (!thisLayer) {\r\n text = elem.layerInterface.text;\r\n thisLayer = elem.layerInterface;\r\n thisComp = elem.comp.compInterface;\r\n toWorld = thisLayer.toWorld.bind(thisLayer);\r\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\r\n fromComp = thisLayer.fromComp.bind(thisLayer);\r\n toComp = thisLayer.toComp.bind(thisLayer);\r\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\r\n fromCompToSurface = fromComp;\r\n }\r\n if (!transform) {\r\n transform = elem.layerInterface('ADBE Transform Group');\r\n $bm_transform = transform;\r\n if (transform) {\r\n anchorPoint = transform.anchorPoint;\r\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\r\n }\r\n }\r\n\r\n if (elemType === 4 && !content) {\r\n content = thisLayer('ADBE Root Vectors Group');\r\n }\r\n if (!effect) {\r\n effect = thisLayer(4);\r\n }\r\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\r\n if (hasParent && !parent) {\r\n parent = elem.hierarchy[0].layerInterface;\r\n }\r\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\r\n if (_needsRandom) {\r\n seedRandom(randSeed + time);\r\n }\r\n if (needsVelocity) {\r\n velocity = velocityAtTime(time);\r\n }\r\n expression_function();\r\n this.frameExpressionId = elem.globalData.frameId;\r\n\r\n // TODO: Check if it's possible to return on ShapeInterface the .v value\r\n if (scoped_bm_rt.propType === 'shape') {\r\n scoped_bm_rt = scoped_bm_rt.v;\r\n }\r\n // globalData.popExpression();\r\n return scoped_bm_rt;\r\n }\r\n return executeExpression;\r\n }\r\n\r\n ob.initiateExpression = initiateExpression;\r\n return ob;\r\n}());\r\n\r\n/* global ExpressionManager, createTypedArray */\r\n/* exported expressionHelpers */\r\n\r\nvar expressionHelpers = (function () {\r\n function searchExpressions(elem, data, prop) {\r\n if (data.x) {\r\n prop.k = true;\r\n prop.x = true;\r\n prop.initiateExpression = ExpressionManager.initiateExpression;\r\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\r\n }\r\n }\r\n\r\n function getValueAtTime(frameNum) {\r\n frameNum *= this.elem.globalData.frameRate;\r\n frameNum -= this.offsetTime;\r\n if (frameNum !== this._cachingAtTime.lastFrame) {\r\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\r\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\r\n this._cachingAtTime.lastFrame = frameNum;\r\n }\r\n return this._cachingAtTime.value;\r\n }\r\n\r\n function getSpeedAtTime(frameNum) {\r\n var delta = -0.01;\r\n var v1 = this.getValueAtTime(frameNum);\r\n var v2 = this.getValueAtTime(frameNum + delta);\r\n var speed = 0;\r\n if (v1.length) {\r\n var i;\r\n for (i = 0; i < v1.length; i += 1) {\r\n speed += Math.pow(v2[i] - v1[i], 2);\r\n }\r\n speed = Math.sqrt(speed) * 100;\r\n } else {\r\n speed = 0;\r\n }\r\n return speed;\r\n }\r\n\r\n function getVelocityAtTime(frameNum) {\r\n if (this.vel !== undefined) {\r\n return this.vel;\r\n }\r\n var delta = -0.001;\r\n // frameNum += this.elem.data.st;\r\n var v1 = this.getValueAtTime(frameNum);\r\n var v2 = this.getValueAtTime(frameNum + delta);\r\n var velocity;\r\n if (v1.length) {\r\n velocity = createTypedArray('float32', v1.length);\r\n var i;\r\n for (i = 0; i < v1.length; i += 1) {\r\n // removing frameRate\r\n // if needed, don't add it here\r\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\r\n velocity[i] = (v2[i] - v1[i]) / delta;\r\n }\r\n } else {\r\n velocity = (v2 - v1) / delta;\r\n }\r\n return velocity;\r\n }\r\n\r\n function getStaticValueAtTime() {\r\n return this.pv;\r\n }\r\n\r\n function setGroupProperty(propertyGroup) {\r\n this.propertyGroup = propertyGroup;\r\n }\r\n\r\n return {\r\n searchExpressions: searchExpressions,\r\n getSpeedAtTime: getSpeedAtTime,\r\n getVelocityAtTime: getVelocityAtTime,\r\n getValueAtTime: getValueAtTime,\r\n getStaticValueAtTime: getStaticValueAtTime,\r\n setGroupProperty: setGroupProperty,\r\n };\r\n}());\r\n\r\n/* global createTypedArray, Matrix, TransformPropertyFactory, expressionHelpers, PropertyFactory, expressionHelpers,\r\ninitialDefaultFrame, shapePool, ShapePropertyFactory, bez, extendPrototype, ExpressionManager, createSizedArray */\r\n\r\n(function addPropertyDecorator() {\r\n function loopOut(type, duration, durationFlag) {\r\n if (!this.k || !this.keyframes) {\r\n return this.pv;\r\n }\r\n type = type ? type.toLowerCase() : '';\r\n var currentFrame = this.comp.renderedFrame;\r\n var keyframes = this.keyframes;\r\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\r\n if (currentFrame <= lastKeyFrame) {\r\n return this.pv;\r\n }\r\n var cycleDuration;\r\n var firstKeyFrame;\r\n if (!durationFlag) {\r\n if (!duration || duration > keyframes.length - 1) {\r\n duration = keyframes.length - 1;\r\n }\r\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\r\n cycleDuration = lastKeyFrame - firstKeyFrame;\r\n } else {\r\n if (!duration) {\r\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\r\n } else {\r\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\r\n }\r\n firstKeyFrame = lastKeyFrame - cycleDuration;\r\n }\r\n var i;\r\n var len;\r\n var ret;\r\n if (type === 'pingpong') {\r\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\r\n if (iterations % 2 !== 0) {\r\n return this.getValueAtTime(((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n }\r\n } else if (type === 'offset') {\r\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\r\n if (this.pv.length) {\r\n ret = new Array(initV.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\r\n }\r\n return ret;\r\n }\r\n return (endV - initV) * repeats + current;\r\n } else if (type === 'continue') {\r\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\r\n if (this.pv.length) {\r\n ret = new Array(lastValue.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\r\n }\r\n return ret;\r\n }\r\n return lastValue + (lastValue - nextLastValue) * (((currentFrame - lastKeyFrame)) / 0.001);\r\n }\r\n return this.getValueAtTime((((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n\r\n }\r\n\r\n function loopIn(type, duration, durationFlag) {\r\n if (!this.k) {\r\n return this.pv;\r\n }\r\n type = type ? type.toLowerCase() : '';\r\n var currentFrame = this.comp.renderedFrame;\r\n var keyframes = this.keyframes;\r\n var firstKeyFrame = keyframes[0].t;\r\n if (currentFrame >= firstKeyFrame) {\r\n return this.pv;\r\n }\r\n var cycleDuration;\r\n var lastKeyFrame;\r\n if (!durationFlag) {\r\n if (!duration || duration > keyframes.length - 1) {\r\n duration = keyframes.length - 1;\r\n }\r\n lastKeyFrame = keyframes[duration].t;\r\n cycleDuration = lastKeyFrame - firstKeyFrame;\r\n } else {\r\n if (!duration) {\r\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\r\n } else {\r\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\r\n }\r\n lastKeyFrame = firstKeyFrame + cycleDuration;\r\n }\r\n var i;\r\n var len;\r\n var ret;\r\n if (type === 'pingpong') {\r\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\r\n if (iterations % 2 === 0) {\r\n return this.getValueAtTime((((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n }\r\n } else if (type === 'offset') {\r\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var current = this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration) + firstKeyFrame) / this.comp.globalData.frameRate, 0);\r\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\r\n if (this.pv.length) {\r\n ret = new Array(initV.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\r\n }\r\n return ret;\r\n }\r\n return current - (endV - initV) * repeats;\r\n } else if (type === 'continue') {\r\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\r\n if (this.pv.length) {\r\n ret = new Array(firstValue.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = firstValue[i] + ((firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame)) / 0.001;\r\n }\r\n return ret;\r\n }\r\n return firstValue + ((firstValue - nextFirstValue) * (firstKeyFrame - currentFrame)) / 0.001;\r\n }\r\n return this.getValueAtTime(((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame))) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n\r\n }\r\n\r\n function smooth(width, samples) {\r\n if (!this.k) {\r\n return this.pv;\r\n }\r\n width = (width || 0.4) * 0.5;\r\n samples = Math.floor(samples || 5);\r\n if (samples <= 1) {\r\n return this.pv;\r\n }\r\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\r\n var initFrame = currentTime - width;\r\n var endFrame = currentTime + width;\r\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\r\n var i = 0;\r\n var j = 0;\r\n var value;\r\n if (this.pv.length) {\r\n value = createTypedArray('float32', this.pv.length);\r\n } else {\r\n value = 0;\r\n }\r\n var sampleValue;\r\n while (i < samples) {\r\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\r\n if (this.pv.length) {\r\n for (j = 0; j < this.pv.length; j += 1) {\r\n value[j] += sampleValue[j];\r\n }\r\n } else {\r\n value += sampleValue;\r\n }\r\n i += 1;\r\n }\r\n if (this.pv.length) {\r\n for (j = 0; j < this.pv.length; j += 1) {\r\n value[j] /= samples;\r\n }\r\n } else {\r\n value /= samples;\r\n }\r\n return value;\r\n }\r\n\r\n function getTransformValueAtTime(time) {\r\n if (!this._transformCachingAtTime) {\r\n this._transformCachingAtTime = {\r\n v: new Matrix(),\r\n };\r\n }\r\n /// /\r\n var matrix = this._transformCachingAtTime.v;\r\n matrix.cloneFromProps(this.pre.props);\r\n if (this.appliedTransformations < 1) {\r\n var anchor = this.a.getValueAtTime(time);\r\n matrix.translate(\r\n -anchor[0] * this.a.mult,\r\n -anchor[1] * this.a.mult,\r\n anchor[2] * this.a.mult\r\n );\r\n }\r\n if (this.appliedTransformations < 2) {\r\n var scale = this.s.getValueAtTime(time);\r\n matrix.scale(\r\n scale[0] * this.s.mult,\r\n scale[1] * this.s.mult,\r\n scale[2] * this.s.mult\r\n );\r\n }\r\n if (this.sk && this.appliedTransformations < 3) {\r\n var skew = this.sk.getValueAtTime(time);\r\n var skewAxis = this.sa.getValueAtTime(time);\r\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\r\n }\r\n if (this.r && this.appliedTransformations < 4) {\r\n var rotation = this.r.getValueAtTime(time);\r\n matrix.rotate(-rotation * this.r.mult);\r\n } else if (!this.r && this.appliedTransformations < 4) {\r\n var rotationZ = this.rz.getValueAtTime(time);\r\n var rotationY = this.ry.getValueAtTime(time);\r\n var rotationX = this.rx.getValueAtTime(time);\r\n var orientation = this.or.getValueAtTime(time);\r\n matrix.rotateZ(-rotationZ * this.rz.mult)\r\n .rotateY(rotationY * this.ry.mult)\r\n .rotateX(rotationX * this.rx.mult)\r\n .rotateZ(-orientation[2] * this.or.mult)\r\n .rotateY(orientation[1] * this.or.mult)\r\n .rotateX(orientation[0] * this.or.mult);\r\n }\r\n if (this.data.p && this.data.p.s) {\r\n var positionX = this.px.getValueAtTime(time);\r\n var positionY = this.py.getValueAtTime(time);\r\n if (this.data.p.z) {\r\n var positionZ = this.pz.getValueAtTime(time);\r\n matrix.translate(\r\n positionX * this.px.mult,\r\n positionY * this.py.mult,\r\n -positionZ * this.pz.mult\r\n );\r\n } else {\r\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\r\n }\r\n } else {\r\n var position = this.p.getValueAtTime(time);\r\n matrix.translate(\r\n position[0] * this.p.mult,\r\n position[1] * this.p.mult,\r\n -position[2] * this.p.mult\r\n );\r\n }\r\n return matrix;\r\n /// /\r\n }\r\n\r\n function getTransformStaticValueAtTime() {\r\n return this.v.clone(new Matrix());\r\n }\r\n\r\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\r\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\r\n var prop = getTransformProperty(elem, data, container);\r\n if (prop.dynamicProperties.length) {\r\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\r\n } else {\r\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\r\n }\r\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\r\n return prop;\r\n };\r\n\r\n var propertyGetProp = PropertyFactory.getProp;\r\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\r\n var prop = propertyGetProp(elem, data, type, mult, container);\r\n // prop.getVelocityAtTime = getVelocityAtTime;\r\n // prop.loopOut = loopOut;\r\n // prop.loopIn = loopIn;\r\n if (prop.kf) {\r\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\r\n } else {\r\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\r\n }\r\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\r\n prop.loopOut = loopOut;\r\n prop.loopIn = loopIn;\r\n prop.smooth = smooth;\r\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\r\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\r\n prop.numKeys = data.a === 1 ? data.k.length : 0;\r\n prop.propertyIndex = data.ix;\r\n var value = 0;\r\n if (type !== 0) {\r\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\r\n }\r\n prop._cachingAtTime = {\r\n lastFrame: initialDefaultFrame,\r\n lastIndex: 0,\r\n value: value,\r\n };\r\n expressionHelpers.searchExpressions(elem, data, prop);\r\n if (prop.k) {\r\n container.addDynamicProperty(prop);\r\n }\r\n\r\n return prop;\r\n };\r\n\r\n function getShapeValueAtTime(frameNum) {\r\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\r\n if (!this._cachingAtTime) {\r\n this._cachingAtTime = {\r\n shapeValue: shapePool.clone(this.pv),\r\n lastIndex: 0,\r\n lastTime: initialDefaultFrame,\r\n };\r\n }\r\n\r\n frameNum *= this.elem.globalData.frameRate;\r\n frameNum -= this.offsetTime;\r\n if (frameNum !== this._cachingAtTime.lastTime) {\r\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\r\n this._cachingAtTime.lastTime = frameNum;\r\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\r\n }\r\n return this._cachingAtTime.shapeValue;\r\n }\r\n\r\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\r\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\r\n\r\n function ShapeExpressions() {}\r\n ShapeExpressions.prototype = {\r\n vertices: function (prop, time) {\r\n if (this.k) {\r\n this.getValue();\r\n }\r\n var shapePath = this.v;\r\n if (time !== undefined) {\r\n shapePath = this.getValueAtTime(time, 0);\r\n }\r\n var i;\r\n var len = shapePath._length;\r\n var vertices = shapePath[prop];\r\n var points = shapePath.v;\r\n var arr = createSizedArray(len);\r\n for (i = 0; i < len; i += 1) {\r\n if (prop === 'i' || prop === 'o') {\r\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\r\n } else {\r\n arr[i] = [vertices[i][0], vertices[i][1]];\r\n }\r\n }\r\n return arr;\r\n },\r\n points: function (time) {\r\n return this.vertices('v', time);\r\n },\r\n inTangents: function (time) {\r\n return this.vertices('i', time);\r\n },\r\n outTangents: function (time) {\r\n return this.vertices('o', time);\r\n },\r\n isClosed: function () {\r\n return this.v.c;\r\n },\r\n pointOnPath: function (perc, time) {\r\n var shapePath = this.v;\r\n if (time !== undefined) {\r\n shapePath = this.getValueAtTime(time, 0);\r\n }\r\n if (!this._segmentsLength) {\r\n this._segmentsLength = bez.getSegmentsLength(shapePath);\r\n }\r\n\r\n var segmentsLength = this._segmentsLength;\r\n var lengths = segmentsLength.lengths;\r\n var lengthPos = segmentsLength.totalLength * perc;\r\n var i = 0;\r\n var len = lengths.length;\r\n var accumulatedLength = 0;\r\n var pt;\r\n while (i < len) {\r\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\r\n var initIndex = i;\r\n var endIndex = (shapePath.c && i === len - 1) ? 0 : i + 1;\r\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\r\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\r\n break;\r\n } else {\r\n accumulatedLength += lengths[i].addedLength;\r\n }\r\n i += 1;\r\n }\r\n if (!pt) {\r\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\r\n }\r\n return pt;\r\n },\r\n vectorOnPath: function (perc, time, vectorType) {\r\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\r\n if (perc == 1) { // eslint-disable-line eqeqeq\r\n perc = this.v.c;\r\n } else if (perc == 0) { // eslint-disable-line eqeqeq\r\n perc = 0.999;\r\n }\r\n var pt1 = this.pointOnPath(perc, time);\r\n var pt2 = this.pointOnPath(perc + 0.001, time);\r\n var xLength = pt2[0] - pt1[0];\r\n var yLength = pt2[1] - pt1[1];\r\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\r\n if (magnitude === 0) {\r\n return [0, 0];\r\n }\r\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\r\n return unitVector;\r\n },\r\n tangentOnPath: function (perc, time) {\r\n return this.vectorOnPath(perc, time, 'tangent');\r\n },\r\n normalOnPath: function (perc, time) {\r\n return this.vectorOnPath(perc, time, 'normal');\r\n },\r\n setGroupProperty: expressionHelpers.setGroupProperty,\r\n getValueAtTime: expressionHelpers.getStaticValueAtTime,\r\n };\r\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\r\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\r\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\r\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\r\n\r\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\r\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\r\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\r\n prop.propertyIndex = data.ix;\r\n prop.lock = false;\r\n if (type === 3) {\r\n expressionHelpers.searchExpressions(elem, data.pt, prop);\r\n } else if (type === 4) {\r\n expressionHelpers.searchExpressions(elem, data.ks, prop);\r\n }\r\n if (prop.k) {\r\n elem.addDynamicProperty(prop);\r\n }\r\n return prop;\r\n };\r\n}());\r\n\r\n/* global ExpressionManager, TextProperty */\r\n\r\n(function addDecorator() {\r\n function searchExpressions() {\r\n if (this.data.d.x) {\r\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\r\n this.addEffect(this.getExpressionValue.bind(this));\r\n return true;\r\n }\r\n return null;\r\n }\r\n\r\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\r\n var newValue = this.calculateExpression(text);\r\n if (currentValue.t !== newValue) {\r\n var newData = {};\r\n this.copyData(newData, currentValue);\r\n newData.t = newValue.toString();\r\n newData.__complete = false;\r\n return newData;\r\n }\r\n return currentValue;\r\n };\r\n\r\n TextProperty.prototype.searchProperty = function () {\r\n var isKeyframed = this.searchKeyframes();\r\n var hasExpressions = this.searchExpressions();\r\n this.kf = isKeyframed || hasExpressions;\r\n return this.kf;\r\n };\r\n\r\n TextProperty.prototype.searchExpressions = searchExpressions;\r\n}());\r\n\r\n/* global propertyGroupFactory, PropertyInterface */\r\n/* exported ShapePathInterface */\r\n\r\nvar ShapePathInterface = (\r\n\r\n function () {\r\n return function pathInterfaceFactory(shape, view, propertyGroup) {\r\n var prop = view.sh;\r\n\r\n function interfaceFunction(val) {\r\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\r\n return interfaceFunction.path;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n path: {\r\n get: function () {\r\n if (prop.k) {\r\n prop.getValue();\r\n }\r\n return prop;\r\n },\r\n },\r\n shape: {\r\n get: function () {\r\n if (prop.k) {\r\n prop.getValue();\r\n }\r\n return prop;\r\n },\r\n },\r\n _name: { value: shape.nm },\r\n ix: { value: shape.ix },\r\n propertyIndex: { value: shape.ix },\r\n mn: { value: shape.mn },\r\n propertyGroup: { value: propertyGroup },\r\n });\r\n return interfaceFunction;\r\n };\r\n }()\r\n);\r\n\r\n/* exported propertyGroupFactory */\r\n\r\nvar propertyGroupFactory = (function () {\r\n return function (interfaceFunction, parentPropertyGroup) {\r\n return function (val) {\r\n val = val === undefined ? 1 : val;\r\n if (val <= 0) {\r\n return interfaceFunction;\r\n }\r\n return parentPropertyGroup(val - 1);\r\n };\r\n };\r\n}());\r\n\r\n/* exported PropertyInterface */\r\n\r\nvar PropertyInterface = (function () {\r\n return function (propertyName, propertyGroup) {\r\n var interfaceFunction = {\r\n _name: propertyName,\r\n };\r\n\r\n function _propertyGroup(val) {\r\n val = val === undefined ? 1 : val;\r\n if (val <= 0) {\r\n return interfaceFunction;\r\n }\r\n return propertyGroup(val - 1);\r\n }\r\n\r\n return _propertyGroup;\r\n };\r\n}());\r\n\r\n/* global ExpressionPropertyInterface, PropertyInterface, propertyGroupFactory, ShapePathInterface */\r\n/* exported ShapeExpressionInterface */\r\n\r\nvar ShapeExpressionInterface = (function () {\r\n function iterateElements(shapes, view, propertyGroup) {\r\n var arr = [];\r\n var i;\r\n var len = shapes ? shapes.length : 0;\r\n for (i = 0; i < len; i += 1) {\r\n if (shapes[i].ty === 'gr') {\r\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'fl') {\r\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'st') {\r\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'tm') {\r\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'tr') {\r\n // arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\r\n } else if (shapes[i].ty === 'el') {\r\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'sr') {\r\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'sh') {\r\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rc') {\r\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rd') {\r\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rp') {\r\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'gf') {\r\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else {\r\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n function contentsInterfaceFactory(shape, view, propertyGroup) {\r\n var interfaces;\r\n var interfaceFunction = function _interfaceFunction(value) {\r\n var i = 0;\r\n var len = interfaces.length;\r\n while (i < len) {\r\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\r\n return interfaces[i];\r\n }\r\n i += 1;\r\n }\r\n if (typeof value === 'number') {\r\n return interfaces[value - 1];\r\n }\r\n return null;\r\n };\r\n\r\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\r\n interfaceFunction.numProperties = interfaces.length;\r\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\r\n interfaceFunction.transform = transformInterface;\r\n interfaceFunction.propertyIndex = shape.cix;\r\n interfaceFunction._name = shape.nm;\r\n\r\n return interfaceFunction;\r\n }\r\n\r\n function groupInterfaceFactory(shape, view, propertyGroup) {\r\n var interfaceFunction = function _interfaceFunction(value) {\r\n switch (value) {\r\n case 'ADBE Vectors Group':\r\n case 'Contents':\r\n case 2:\r\n return interfaceFunction.content;\r\n // Not necessary for now. Keeping them here in case a new case appears\r\n // case 'ADBE Vector Transform Group':\r\n // case 3:\r\n default:\r\n return interfaceFunction.transform;\r\n }\r\n };\r\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\r\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\r\n interfaceFunction.content = content;\r\n interfaceFunction.transform = transformInterface;\r\n Object.defineProperty(interfaceFunction, '_name', {\r\n get: function () {\r\n return shape.nm;\r\n },\r\n });\r\n // interfaceFunction.content = interfaceFunction;\r\n interfaceFunction.numProperties = shape.np;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n interfaceFunction.nm = shape.nm;\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function fillInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(val) {\r\n if (val === 'Color' || val === 'color') {\r\n return interfaceFunction.color;\r\n } if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n return null;\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n color: {\r\n get: ExpressionPropertyInterface(view.c),\r\n },\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.o),\r\n },\r\n _name: { value: shape.nm },\r\n mn: { value: shape.mn },\r\n });\r\n\r\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\r\n return interfaceFunction;\r\n }\r\n\r\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(val) {\r\n if (val === 'Start Point' || val === 'start point') {\r\n return interfaceFunction.startPoint;\r\n }\r\n if (val === 'End Point' || val === 'end point') {\r\n return interfaceFunction.endPoint;\r\n }\r\n if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n return null;\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n startPoint: {\r\n get: ExpressionPropertyInterface(view.s),\r\n },\r\n endPoint: {\r\n get: ExpressionPropertyInterface(view.e),\r\n },\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.o),\r\n },\r\n type: {\r\n get: function () {\r\n return 'a';\r\n },\r\n },\r\n _name: { value: shape.nm },\r\n mn: { value: shape.mn },\r\n });\r\n\r\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\r\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\r\n return interfaceFunction;\r\n }\r\n function defaultInterfaceFactory() {\r\n function interfaceFunction() {\r\n return null;\r\n }\r\n return interfaceFunction;\r\n }\r\n\r\n function strokeInterfaceFactory(shape, view, propertyGroup) {\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\r\n function addPropertyToDashOb(i) {\r\n Object.defineProperty(dashOb, shape.d[i].nm, {\r\n get: ExpressionPropertyInterface(view.d.dataProps[i].p),\r\n });\r\n }\r\n var i;\r\n var len = shape.d ? shape.d.length : 0;\r\n var dashOb = {};\r\n for (i = 0; i < len; i += 1) {\r\n addPropertyToDashOb(i);\r\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\r\n }\r\n\r\n function interfaceFunction(val) {\r\n if (val === 'Color' || val === 'color') {\r\n return interfaceFunction.color;\r\n } if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n } if (val === 'Stroke Width' || val === 'stroke width') {\r\n return interfaceFunction.strokeWidth;\r\n }\r\n return null;\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n color: {\r\n get: ExpressionPropertyInterface(view.c),\r\n },\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.o),\r\n },\r\n strokeWidth: {\r\n get: ExpressionPropertyInterface(view.w),\r\n },\r\n dash: {\r\n get: function () {\r\n return dashOb;\r\n },\r\n },\r\n _name: { value: shape.nm },\r\n mn: { value: shape.mn },\r\n });\r\n\r\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\r\n return interfaceFunction;\r\n }\r\n\r\n function trimInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(val) {\r\n if (val === shape.e.ix || val === 'End' || val === 'end') {\r\n return interfaceFunction.end;\r\n }\r\n if (val === shape.s.ix) {\r\n return interfaceFunction.start;\r\n }\r\n if (val === shape.o.ix) {\r\n return interfaceFunction.offset;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n interfaceFunction.propertyIndex = shape.ix;\r\n\r\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\r\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\r\n interfaceFunction.propertyIndex = shape.ix;\r\n interfaceFunction.propertyGroup = propertyGroup;\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n start: {\r\n get: ExpressionPropertyInterface(view.s),\r\n },\r\n end: {\r\n get: ExpressionPropertyInterface(view.e),\r\n },\r\n offset: {\r\n get: ExpressionPropertyInterface(view.o),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function transformInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.a.ix === value || value === 'Anchor Point') {\r\n return interfaceFunction.anchorPoint;\r\n }\r\n if (shape.o.ix === value || value === 'Opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n if (shape.p.ix === value || value === 'Position') {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\r\n return interfaceFunction.rotation;\r\n }\r\n if (shape.s.ix === value || value === 'Scale') {\r\n return interfaceFunction.scale;\r\n }\r\n if ((shape.sk && shape.sk.ix === value) || value === 'Skew') {\r\n return interfaceFunction.skew;\r\n }\r\n if ((shape.sa && shape.sa.ix === value) || value === 'Skew Axis') {\r\n return interfaceFunction.skewAxis;\r\n }\r\n return null;\r\n }\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\r\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\r\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n if (view.transform.mProps.sk) {\r\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\r\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\r\n }\r\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.o),\r\n },\r\n position: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.p),\r\n },\r\n anchorPoint: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.a),\r\n },\r\n scale: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.s),\r\n },\r\n rotation: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.r),\r\n },\r\n skew: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.sk),\r\n },\r\n skewAxis: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.sa),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.ty = 'tr';\r\n interfaceFunction.mn = shape.mn;\r\n interfaceFunction.propertyGroup = propertyGroup;\r\n return interfaceFunction;\r\n }\r\n\r\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.s.ix === value) {\r\n return interfaceFunction.size;\r\n }\r\n return null;\r\n }\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n interfaceFunction.propertyIndex = shape.ix;\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n size: {\r\n get: ExpressionPropertyInterface(prop.s),\r\n },\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function starInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.r.ix === value) {\r\n return interfaceFunction.rotation;\r\n }\r\n if (shape.pt.ix === value) {\r\n return interfaceFunction.points;\r\n }\r\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\r\n return interfaceFunction.outerRadius;\r\n }\r\n if (shape.os.ix === value) {\r\n return interfaceFunction.outerRoundness;\r\n }\r\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\r\n return interfaceFunction.innerRadius;\r\n }\r\n if (shape.is && shape.is.ix === value) {\r\n return interfaceFunction.innerRoundness;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\r\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\r\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n if (shape.ir) {\r\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\r\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\r\n }\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p),\r\n },\r\n rotation: {\r\n get: ExpressionPropertyInterface(prop.r),\r\n },\r\n points: {\r\n get: ExpressionPropertyInterface(prop.pt),\r\n },\r\n outerRadius: {\r\n get: ExpressionPropertyInterface(prop.or),\r\n },\r\n outerRoundness: {\r\n get: ExpressionPropertyInterface(prop.os),\r\n },\r\n innerRadius: {\r\n get: ExpressionPropertyInterface(prop.ir),\r\n },\r\n innerRoundness: {\r\n get: ExpressionPropertyInterface(prop.is),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function rectInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.r.ix === value) {\r\n return interfaceFunction.roundness;\r\n }\r\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\r\n return interfaceFunction.size;\r\n }\r\n return null;\r\n }\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\r\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p),\r\n },\r\n roundness: {\r\n get: ExpressionPropertyInterface(prop.r),\r\n },\r\n size: {\r\n get: ExpressionPropertyInterface(prop.s),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function roundedInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.r.ix === value || value === 'Round Corners 1') {\r\n return interfaceFunction.radius;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var prop = view;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n radius: {\r\n get: ExpressionPropertyInterface(prop.rd),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.c.ix === value || value === 'Copies') {\r\n return interfaceFunction.copies;\r\n } if (shape.o.ix === value || value === 'Offset') {\r\n return interfaceFunction.offset;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var prop = view;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\r\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n copies: {\r\n get: ExpressionPropertyInterface(prop.c),\r\n },\r\n offset: {\r\n get: ExpressionPropertyInterface(prop.o),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n return function (shapes, view, propertyGroup) {\r\n var interfaces;\r\n function _interfaceFunction(value) {\r\n if (typeof value === 'number') {\r\n value = value === undefined ? 1 : value;\r\n if (value === 0) {\r\n return propertyGroup;\r\n }\r\n return interfaces[value - 1];\r\n }\r\n var i = 0;\r\n var len = interfaces.length;\r\n while (i < len) {\r\n if (interfaces[i]._name === value) {\r\n return interfaces[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n function parentGroupWrapper() {\r\n return propertyGroup;\r\n }\r\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\r\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\r\n _interfaceFunction.numProperties = interfaces.length;\r\n _interfaceFunction._name = 'Contents';\r\n return _interfaceFunction;\r\n };\r\n}());\r\n\r\n/* exported TextExpressionInterface */\r\n\r\nvar TextExpressionInterface = (function () {\r\n return function (elem) {\r\n var _prevValue;\r\n var _sourceText;\r\n function _thisLayerFunction(name) {\r\n switch (name) {\r\n case 'ADBE Text Document':\r\n return _thisLayerFunction.sourceText;\r\n default:\r\n return null;\r\n }\r\n }\r\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\r\n get: function () {\r\n elem.textProperty.getValue();\r\n var stringValue = elem.textProperty.currentData.t;\r\n if (stringValue !== _prevValue) {\r\n elem.textProperty.currentData.t = _prevValue;\r\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\r\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\r\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\r\n }\r\n return _sourceText;\r\n },\r\n });\r\n return _thisLayerFunction;\r\n };\r\n}());\r\n\r\n/* global Matrix, MaskManagerInterface, TransformExpressionInterface, getDescriptor */\r\n/* exported LayerExpressionInterface */\r\n\r\nvar LayerExpressionInterface = (function () {\r\n function getMatrix(time) {\r\n var toWorldMat = new Matrix();\r\n if (time !== undefined) {\r\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\r\n propMatrix.clone(toWorldMat);\r\n } else {\r\n var transformMat = this._elem.finalTransform.mProp;\r\n transformMat.applyToMatrix(toWorldMat);\r\n }\r\n return toWorldMat;\r\n }\r\n\r\n function toWorldVec(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n toWorldMat.props[12] = 0;\r\n toWorldMat.props[13] = 0;\r\n toWorldMat.props[14] = 0;\r\n return this.applyPoint(toWorldMat, arr);\r\n }\r\n\r\n function toWorld(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n return this.applyPoint(toWorldMat, arr);\r\n }\r\n\r\n function fromWorldVec(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n toWorldMat.props[12] = 0;\r\n toWorldMat.props[13] = 0;\r\n toWorldMat.props[14] = 0;\r\n return this.invertPoint(toWorldMat, arr);\r\n }\r\n\r\n function fromWorld(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n return this.invertPoint(toWorldMat, arr);\r\n }\r\n\r\n function applyPoint(matrix, arr) {\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\r\n }\r\n }\r\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\r\n }\r\n\r\n function invertPoint(matrix, arr) {\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\r\n }\r\n }\r\n return matrix.inversePoint(arr);\r\n }\r\n\r\n function fromComp(arr) {\r\n var toWorldMat = new Matrix();\r\n toWorldMat.reset();\r\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\r\n }\r\n return toWorldMat.inversePoint(arr);\r\n }\r\n return toWorldMat.inversePoint(arr);\r\n }\r\n\r\n function sampleImage() {\r\n return [1, 1, 1, 1];\r\n }\r\n\r\n return function (elem) {\r\n var transformInterface;\r\n\r\n function _registerMaskInterface(maskManager) {\r\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\r\n }\r\n function _registerEffectsInterface(effects) {\r\n _thisLayerFunction.effect = effects;\r\n }\r\n\r\n function _thisLayerFunction(name) {\r\n switch (name) {\r\n case 'ADBE Root Vectors Group':\r\n case 'Contents':\r\n case 2:\r\n return _thisLayerFunction.shapeInterface;\r\n case 1:\r\n case 6:\r\n case 'Transform':\r\n case 'transform':\r\n case 'ADBE Transform Group':\r\n return transformInterface;\r\n case 4:\r\n case 'ADBE Effect Parade':\r\n case 'effects':\r\n case 'Effects':\r\n return _thisLayerFunction.effect;\r\n case 'ADBE Text Properties':\r\n return _thisLayerFunction.textInterface;\r\n default:\r\n return null;\r\n }\r\n }\r\n _thisLayerFunction.getMatrix = getMatrix;\r\n _thisLayerFunction.invertPoint = invertPoint;\r\n _thisLayerFunction.applyPoint = applyPoint;\r\n _thisLayerFunction.toWorld = toWorld;\r\n _thisLayerFunction.toWorldVec = toWorldVec;\r\n _thisLayerFunction.fromWorld = fromWorld;\r\n _thisLayerFunction.fromWorldVec = fromWorldVec;\r\n _thisLayerFunction.toComp = toWorld;\r\n _thisLayerFunction.fromComp = fromComp;\r\n _thisLayerFunction.sampleImage = sampleImage;\r\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\r\n _thisLayerFunction._elem = elem;\r\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\r\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\r\n Object.defineProperties(_thisLayerFunction, {\r\n hasParent: {\r\n get: function () {\r\n return elem.hierarchy.length;\r\n },\r\n },\r\n parent: {\r\n get: function () {\r\n return elem.hierarchy[0].layerInterface;\r\n },\r\n },\r\n rotation: getDescriptor(transformInterface, 'rotation'),\r\n scale: getDescriptor(transformInterface, 'scale'),\r\n position: getDescriptor(transformInterface, 'position'),\r\n opacity: getDescriptor(transformInterface, 'opacity'),\r\n anchorPoint: anchorPointDescriptor,\r\n anchor_point: anchorPointDescriptor,\r\n transform: {\r\n get: function () {\r\n return transformInterface;\r\n },\r\n },\r\n active: {\r\n get: function () {\r\n return elem.isInRange;\r\n },\r\n },\r\n });\r\n\r\n _thisLayerFunction.startTime = elem.data.st;\r\n _thisLayerFunction.index = elem.data.ind;\r\n _thisLayerFunction.source = elem.data.refId;\r\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\r\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\r\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\r\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\r\n _thisLayerFunction._name = elem.data.nm;\r\n\r\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\r\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\r\n return _thisLayerFunction;\r\n };\r\n}());\r\n\r\n/* global */\r\n/* exported FootageInterface */\r\n\r\nvar FootageInterface = (function () {\r\n var outlineInterfaceFactory = (function (elem) {\r\n var currentPropertyName = '';\r\n var currentProperty = elem.getFootageData();\r\n function init() {\r\n currentPropertyName = '';\r\n currentProperty = elem.getFootageData();\r\n return searchProperty;\r\n }\r\n function searchProperty(value) {\r\n if (currentProperty[value]) {\r\n currentPropertyName = value;\r\n currentProperty = currentProperty[value];\r\n if (typeof currentProperty === 'object') {\r\n return searchProperty;\r\n }\r\n return currentProperty;\r\n }\r\n var propertyNameIndex = value.indexOf(currentPropertyName);\r\n if (propertyNameIndex !== -1) {\r\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\r\n currentProperty = currentProperty[index];\r\n if (typeof currentProperty === 'object') {\r\n return searchProperty;\r\n }\r\n return currentProperty;\r\n }\r\n return '';\r\n }\r\n return init;\r\n });\r\n\r\n var dataInterfaceFactory = function (elem) {\r\n function interfaceFunction(value) {\r\n if (value === 'Outline') {\r\n return interfaceFunction.outlineInterface();\r\n }\r\n return null;\r\n }\r\n\r\n interfaceFunction._name = 'Outline';\r\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\r\n return interfaceFunction;\r\n };\r\n\r\n return function (elem) {\r\n function _interfaceFunction(value) {\r\n if (value === 'Data') {\r\n return _interfaceFunction.dataInterface;\r\n }\r\n return null;\r\n }\r\n\r\n _interfaceFunction._name = 'Data';\r\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\r\n return _interfaceFunction;\r\n };\r\n}());\r\n\r\n/* exported CompExpressionInterface */\r\n\r\nvar CompExpressionInterface = (function () {\r\n return function (comp) {\r\n function _thisLayerFunction(name) {\r\n var i = 0;\r\n var len = comp.layers.length;\r\n while (i < len) {\r\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\r\n return comp.elements[i].layerInterface;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n // return {active:false};\r\n }\r\n Object.defineProperty(_thisLayerFunction, '_name', { value: comp.data.nm });\r\n _thisLayerFunction.layer = _thisLayerFunction;\r\n _thisLayerFunction.pixelAspect = 1;\r\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\r\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\r\n _thisLayerFunction.pixelAspect = 1;\r\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\r\n _thisLayerFunction.displayStartTime = 0;\r\n _thisLayerFunction.numLayers = comp.layers.length;\r\n return _thisLayerFunction;\r\n };\r\n}());\r\n\r\n/* global ExpressionPropertyInterface */\r\n/* exported TransformExpressionInterface */\r\n\r\nvar TransformExpressionInterface = (function () {\r\n return function (transform) {\r\n function _thisFunction(name) {\r\n switch (name) {\r\n case 'scale':\r\n case 'Scale':\r\n case 'ADBE Scale':\r\n case 6:\r\n return _thisFunction.scale;\r\n case 'rotation':\r\n case 'Rotation':\r\n case 'ADBE Rotation':\r\n case 'ADBE Rotate Z':\r\n case 10:\r\n return _thisFunction.rotation;\r\n case 'ADBE Rotate X':\r\n return _thisFunction.xRotation;\r\n case 'ADBE Rotate Y':\r\n return _thisFunction.yRotation;\r\n case 'position':\r\n case 'Position':\r\n case 'ADBE Position':\r\n case 2:\r\n return _thisFunction.position;\r\n case 'ADBE Position_0':\r\n return _thisFunction.xPosition;\r\n case 'ADBE Position_1':\r\n return _thisFunction.yPosition;\r\n case 'ADBE Position_2':\r\n return _thisFunction.zPosition;\r\n case 'anchorPoint':\r\n case 'AnchorPoint':\r\n case 'Anchor Point':\r\n case 'ADBE AnchorPoint':\r\n case 1:\r\n return _thisFunction.anchorPoint;\r\n case 'opacity':\r\n case 'Opacity':\r\n case 11:\r\n return _thisFunction.opacity;\r\n default:\r\n return null;\r\n }\r\n }\r\n Object.defineProperty(_thisFunction, 'rotation', {\r\n get: ExpressionPropertyInterface(transform.r || transform.rz),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'zRotation', {\r\n get: ExpressionPropertyInterface(transform.rz || transform.r),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'xRotation', {\r\n get: ExpressionPropertyInterface(transform.rx),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'yRotation', {\r\n get: ExpressionPropertyInterface(transform.ry),\r\n });\r\n Object.defineProperty(_thisFunction, 'scale', {\r\n get: ExpressionPropertyInterface(transform.s),\r\n });\r\n var _px;\r\n var _py;\r\n var _pz;\r\n var _transformFactory;\r\n if (transform.p) {\r\n _transformFactory = ExpressionPropertyInterface(transform.p);\r\n } else {\r\n _px = ExpressionPropertyInterface(transform.px);\r\n _py = ExpressionPropertyInterface(transform.py);\r\n if (transform.pz) {\r\n _pz = ExpressionPropertyInterface(transform.pz);\r\n }\r\n }\r\n Object.defineProperty(_thisFunction, 'position', {\r\n get: function () {\r\n if (transform.p) {\r\n return _transformFactory();\r\n }\r\n return [\r\n _px(),\r\n _py(),\r\n _pz ? _pz() : 0];\r\n },\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'xPosition', {\r\n get: ExpressionPropertyInterface(transform.px),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'yPosition', {\r\n get: ExpressionPropertyInterface(transform.py),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'zPosition', {\r\n get: ExpressionPropertyInterface(transform.pz),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'anchorPoint', {\r\n get: ExpressionPropertyInterface(transform.a),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'opacity', {\r\n get: ExpressionPropertyInterface(transform.o),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'skew', {\r\n get: ExpressionPropertyInterface(transform.sk),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'skewAxis', {\r\n get: ExpressionPropertyInterface(transform.sa),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'orientation', {\r\n get: ExpressionPropertyInterface(transform.or),\r\n });\r\n\r\n return _thisFunction;\r\n };\r\n}());\r\n\r\n/* exported ProjectInterface */\r\n\r\nvar ProjectInterface = (function () {\r\n function registerComposition(comp) {\r\n this.compositions.push(comp);\r\n }\r\n\r\n return function () {\r\n function _thisProjectFunction(name) {\r\n var i = 0;\r\n var len = this.compositions.length;\r\n while (i < len) {\r\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\r\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\r\n this.compositions[i].prepareFrame(this.currentFrame);\r\n }\r\n return this.compositions[i].compInterface;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n\r\n _thisProjectFunction.compositions = [];\r\n _thisProjectFunction.currentFrame = 0;\r\n\r\n _thisProjectFunction.registerComposition = registerComposition;\r\n\r\n return _thisProjectFunction;\r\n };\r\n}());\r\n\r\n/* global propertyGroupFactory, ExpressionPropertyInterface, PropertyInterface */\r\n/* exported EffectsExpressionInterface */\r\n\r\nvar EffectsExpressionInterface = (function () {\r\n var ob = {\r\n createEffectsInterface: createEffectsInterface,\r\n };\r\n\r\n function createEffectsInterface(elem, propertyGroup) {\r\n if (elem.effectsManager) {\r\n var effectElements = [];\r\n var effectsData = elem.data.ef;\r\n var i;\r\n var len = elem.effectsManager.effectElements.length;\r\n for (i = 0; i < len; i += 1) {\r\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\r\n }\r\n\r\n var effects = elem.data.ef || [];\r\n var groupInterface = function (name) {\r\n i = 0;\r\n len = effects.length;\r\n while (i < len) {\r\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\r\n return effectElements[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n };\r\n Object.defineProperty(groupInterface, 'numProperties', {\r\n get: function () {\r\n return effects.length;\r\n },\r\n });\r\n return groupInterface;\r\n }\r\n return null;\r\n }\r\n\r\n function createGroupInterface(data, elements, propertyGroup, elem) {\r\n function groupInterface(name) {\r\n var effects = data.ef;\r\n var i = 0;\r\n var len = effects.length;\r\n while (i < len) {\r\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\r\n if (effects[i].ty === 5) {\r\n return effectElements[i];\r\n }\r\n return effectElements[i]();\r\n }\r\n i += 1;\r\n }\r\n throw new Error();\r\n }\r\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\r\n\r\n var effectElements = [];\r\n var i;\r\n var len = data.ef.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (data.ef[i].ty === 5) {\r\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\r\n } else {\r\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\r\n }\r\n }\r\n\r\n if (data.mn === 'ADBE Color Control') {\r\n Object.defineProperty(groupInterface, 'color', {\r\n get: function () {\r\n return effectElements[0]();\r\n },\r\n });\r\n }\r\n Object.defineProperties(groupInterface, {\r\n numProperties: {\r\n get: function () {\r\n return data.np;\r\n },\r\n },\r\n _name: { value: data.nm },\r\n propertyGroup: { value: _propertyGroup },\r\n });\r\n groupInterface.enabled = data.en !== 0;\r\n groupInterface.active = groupInterface.enabled;\r\n return groupInterface;\r\n }\r\n\r\n function createValueInterface(element, type, elem, propertyGroup) {\r\n var expressionProperty = ExpressionPropertyInterface(element.p);\r\n function interfaceFunction() {\r\n if (type === 10) {\r\n return elem.comp.compInterface(element.p.v);\r\n }\r\n return expressionProperty();\r\n }\r\n\r\n if (element.p.setGroupProperty) {\r\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\r\n }\r\n\r\n return interfaceFunction;\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* global createSizedArray */\r\n/* exported MaskManagerInterface */\r\n\r\nvar MaskManagerInterface = (function () {\r\n function MaskInterface(mask, data) {\r\n this._mask = mask;\r\n this._data = data;\r\n }\r\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\r\n get: function () {\r\n if (this._mask.prop.k) {\r\n this._mask.prop.getValue();\r\n }\r\n return this._mask.prop;\r\n },\r\n });\r\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\r\n get: function () {\r\n if (this._mask.op.k) {\r\n this._mask.op.getValue();\r\n }\r\n return this._mask.op.v * 100;\r\n },\r\n });\r\n\r\n var MaskManager = function (maskManager) {\r\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\r\n var i;\r\n var len = maskManager.viewData.length;\r\n for (i = 0; i < len; i += 1) {\r\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\r\n }\r\n\r\n var maskFunction = function (name) {\r\n i = 0;\r\n while (i < len) {\r\n if (maskManager.masksProperties[i].nm === name) {\r\n return _masksInterfaces[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n };\r\n return maskFunction;\r\n };\r\n return MaskManager;\r\n}());\r\n\r\n/* global createTypedArray */\r\n/* exported ExpressionPropertyInterface */\r\n\r\nvar ExpressionPropertyInterface = (function () {\r\n var defaultUnidimensionalValue = { pv: 0, v: 0, mult: 1 };\r\n var defaultMultidimensionalValue = { pv: [0, 0, 0], v: [0, 0, 0], mult: 1 };\r\n\r\n function completeProperty(expressionValue, property, type) {\r\n Object.defineProperty(expressionValue, 'velocity', {\r\n get: function () {\r\n return property.getVelocityAtTime(property.comp.currentFrame);\r\n },\r\n });\r\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\r\n expressionValue.key = function (pos) {\r\n if (!expressionValue.numKeys) {\r\n return 0;\r\n }\r\n var value = '';\r\n if ('s' in property.keyframes[pos - 1]) {\r\n value = property.keyframes[pos - 1].s;\r\n } else if ('e' in property.keyframes[pos - 2]) {\r\n value = property.keyframes[pos - 2].e;\r\n } else {\r\n value = property.keyframes[pos - 2].s;\r\n }\r\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\r\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\r\n valueProp.value = type === 'unidimensional' ? value[0] : value;\r\n return valueProp;\r\n };\r\n expressionValue.valueAtTime = property.getValueAtTime;\r\n expressionValue.speedAtTime = property.getSpeedAtTime;\r\n expressionValue.velocityAtTime = property.getVelocityAtTime;\r\n expressionValue.propertyGroup = property.propertyGroup;\r\n }\r\n\r\n function UnidimensionalPropertyInterface(property) {\r\n if (!property || !('pv' in property)) {\r\n property = defaultUnidimensionalValue;\r\n }\r\n var mult = 1 / property.mult;\r\n var val = property.pv * mult;\r\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\r\n expressionValue.value = val;\r\n completeProperty(expressionValue, property, 'unidimensional');\r\n\r\n return function () {\r\n if (property.k) {\r\n property.getValue();\r\n }\r\n val = property.v * mult;\r\n if (expressionValue.value !== val) {\r\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\r\n expressionValue.value = val;\r\n completeProperty(expressionValue, property, 'unidimensional');\r\n }\r\n return expressionValue;\r\n };\r\n }\r\n\r\n function MultidimensionalPropertyInterface(property) {\r\n if (!property || !('pv' in property)) {\r\n property = defaultMultidimensionalValue;\r\n }\r\n var mult = 1 / property.mult;\r\n var len = (property.data && property.data.l) || property.pv.length;\r\n var expressionValue = createTypedArray('float32', len);\r\n var arrValue = createTypedArray('float32', len);\r\n expressionValue.value = arrValue;\r\n completeProperty(expressionValue, property, 'multidimensional');\r\n\r\n return function () {\r\n if (property.k) {\r\n property.getValue();\r\n }\r\n for (var i = 0; i < len; i += 1) {\r\n arrValue[i] = property.v[i] * mult;\r\n expressionValue[i] = arrValue[i];\r\n }\r\n return expressionValue;\r\n };\r\n }\r\n\r\n // TODO: try to avoid using this getter\r\n function defaultGetter() {\r\n return defaultUnidimensionalValue;\r\n }\r\n\r\n return function (property) {\r\n if (!property) {\r\n return defaultGetter;\r\n } if (property.propType === 'unidimensional') {\r\n return UnidimensionalPropertyInterface(property);\r\n }\r\n return MultidimensionalPropertyInterface(property);\r\n };\r\n}());\r\n\r\n/* global expressionHelpers, TextSelectorProp, ExpressionManager */\r\n/* exported TextExpressionSelectorPropFactory */\r\n\r\nvar TextExpressionSelectorPropFactory = (function () { // eslint-disable-line no-unused-vars\r\n function getValueProxy(index, total) {\r\n this.textIndex = index + 1;\r\n this.textTotal = total;\r\n this.v = this.getValue() * this.mult;\r\n return this.v;\r\n }\r\n\r\n return function (elem, data) {\r\n this.pv = 1;\r\n this.comp = elem.comp;\r\n this.elem = elem;\r\n this.mult = 0.01;\r\n this.propType = 'textSelector';\r\n this.textTotal = data.totalChars;\r\n this.selectorValue = 100;\r\n this.lastValue = [1, 1, 1];\r\n this.k = true;\r\n this.x = true;\r\n this.getValue = ExpressionManager.initiateExpression.bind(this)(elem, data, this);\r\n this.getMult = getValueProxy;\r\n this.getVelocityAtTime = expressionHelpers.getVelocityAtTime;\r\n if (this.kf) {\r\n this.getValueAtTime = expressionHelpers.getValueAtTime.bind(this);\r\n } else {\r\n this.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(this);\r\n }\r\n this.setGroupProperty = expressionHelpers.setGroupProperty;\r\n };\r\n}());\r\n\r\nvar propertyGetTextProp = TextSelectorProp.getTextSelectorProp;\r\nTextSelectorProp.getTextSelectorProp = function (elem, data, arr) {\r\n if (data.t === 1) {\r\n return new TextExpressionSelectorPropFactory(elem, data, arr); // eslint-disable-line no-undef\r\n }\r\n return propertyGetTextProp(elem, data, arr);\r\n};\r\n\r\n/* global PropertyFactory */\r\n/* exported SliderEffect, AngleEffect, ColorEffect, PointEffect, LayerIndexEffect, MaskIndexEffect, CheckboxEffect, NoValueEffect */\r\n\r\nfunction SliderEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction AngleEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction ColorEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\r\n}\r\nfunction PointEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\r\n}\r\nfunction LayerIndexEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction MaskIndexEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction CheckboxEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction NoValueEffect() {\r\n this.p = {};\r\n}\r\n\r\n/* global extendPrototype, SliderEffect, AngleEffect, ColorEffect, PointEffect, CheckboxEffect, LayerIndexEffect,\r\nMaskIndexEffect, NoValueEffect, DynamicPropertyContainer */\r\n\r\nfunction EffectsManager(data, element) {\r\n var effects = data.ef || [];\r\n this.effectElements = [];\r\n var i;\r\n var len = effects.length;\r\n var effectItem;\r\n for (i = 0; i < len; i += 1) {\r\n effectItem = new GroupEffect(effects[i], element);\r\n this.effectElements.push(effectItem);\r\n }\r\n}\r\n\r\nfunction GroupEffect(data, element) {\r\n this.init(data, element);\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], GroupEffect);\r\n\r\nGroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\r\n\r\nGroupEffect.prototype.init = function (data, element) {\r\n this.data = data;\r\n this.effectElements = [];\r\n this.initDynamicPropertyContainer(element);\r\n var i;\r\n var len = this.data.ef.length;\r\n var eff;\r\n var effects = this.data.ef;\r\n for (i = 0; i < len; i += 1) {\r\n eff = null;\r\n switch (effects[i].ty) {\r\n case 0:\r\n eff = new SliderEffect(effects[i], element, this);\r\n break;\r\n case 1:\r\n eff = new AngleEffect(effects[i], element, this);\r\n break;\r\n case 2:\r\n eff = new ColorEffect(effects[i], element, this);\r\n break;\r\n case 3:\r\n eff = new PointEffect(effects[i], element, this);\r\n break;\r\n case 4:\r\n case 7:\r\n eff = new CheckboxEffect(effects[i], element, this);\r\n break;\r\n case 10:\r\n eff = new LayerIndexEffect(effects[i], element, this);\r\n break;\r\n case 11:\r\n eff = new MaskIndexEffect(effects[i], element, this);\r\n break;\r\n case 5:\r\n eff = new EffectsManager(effects[i], element, this);\r\n break;\r\n // case 6:\r\n default:\r\n eff = new NoValueEffect(effects[i], element, this);\r\n break;\r\n }\r\n if (eff) {\r\n this.effectElements.push(eff);\r\n }\r\n }\r\n};\r\n\r\n\r\nvar lottie = {};\r\n\r\nfunction setLocationHref(href) {\r\n locationHref = href;\r\n}\r\n\r\nfunction searchAnimations() {\r\n if (standalone === true) {\r\n animationManager.searchAnimations(animationData, standalone, renderer);\r\n } else {\r\n animationManager.searchAnimations();\r\n }\r\n}\r\n\r\nfunction setSubframeRendering(flag) {\r\n subframeEnabled = flag;\r\n}\r\n\r\nfunction setIDPrefix(prefix) {\r\n idPrefix = prefix;\r\n}\r\n\r\nfunction loadAnimation(params) {\r\n if (standalone === true) {\r\n params.animationData = JSON.parse(animationData);\r\n }\r\n return animationManager.loadAnimation(params);\r\n}\r\n\r\nfunction setQuality(value) {\r\n if (typeof value === 'string') {\r\n switch (value) {\r\n case 'high':\r\n defaultCurveSegments = 200;\r\n break;\r\n default:\r\n case 'medium':\r\n defaultCurveSegments = 50;\r\n break;\r\n case 'low':\r\n defaultCurveSegments = 10;\r\n break;\r\n }\r\n } else if (!isNaN(value) && value > 1) {\r\n defaultCurveSegments = value;\r\n }\r\n if (defaultCurveSegments >= 50) {\r\n roundValues(false);\r\n } else {\r\n roundValues(true);\r\n }\r\n}\r\n\r\nfunction inBrowser() {\r\n return typeof navigator !== 'undefined';\r\n}\r\n\r\nfunction installPlugin(type, plugin) {\r\n if (type === 'expressions') {\r\n expressionsPlugin = plugin;\r\n }\r\n}\r\n\r\nfunction getFactory(name) {\r\n switch (name) {\r\n case 'propertyFactory':\r\n return PropertyFactory;\r\n case 'shapePropertyFactory':\r\n return ShapePropertyFactory;\r\n case 'matrix':\r\n return Matrix;\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nlottie.play = animationManager.play;\r\nlottie.pause = animationManager.pause;\r\nlottie.setLocationHref = setLocationHref;\r\nlottie.togglePause = animationManager.togglePause;\r\nlottie.setSpeed = animationManager.setSpeed;\r\nlottie.setDirection = animationManager.setDirection;\r\nlottie.stop = animationManager.stop;\r\nlottie.searchAnimations = searchAnimations;\r\nlottie.registerAnimation = animationManager.registerAnimation;\r\nlottie.loadAnimation = loadAnimation;\r\nlottie.setSubframeRendering = setSubframeRendering;\r\nlottie.resize = animationManager.resize;\r\n// lottie.start = start;\r\nlottie.goToAndStop = animationManager.goToAndStop;\r\nlottie.destroy = animationManager.destroy;\r\nlottie.setQuality = setQuality;\r\nlottie.inBrowser = inBrowser;\r\nlottie.installPlugin = installPlugin;\r\nlottie.freeze = animationManager.freeze;\r\nlottie.unfreeze = animationManager.unfreeze;\r\nlottie.setVolume = animationManager.setVolume;\r\nlottie.mute = animationManager.mute;\r\nlottie.unmute = animationManager.unmute;\r\nlottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\r\nlottie.useWebWorker = function (flag) {\r\n _useWebWorker = flag;\r\n};\r\nlottie.setIDPrefix = setIDPrefix;\r\nlottie.__getFactory = getFactory;\r\nlottie.version = '5.8.1';\r\n\r\nfunction checkReady() {\r\n if (document.readyState === 'complete') {\r\n clearInterval(readyStateCheckInterval);\r\n searchAnimations();\r\n }\r\n}\r\n\r\nfunction getQueryVariable(variable) {\r\n var vars = queryString.split('&');\r\n for (var i = 0; i < vars.length; i += 1) {\r\n var pair = vars[i].split('=');\r\n if (decodeURIComponent(pair[0]) == variable) { // eslint-disable-line eqeqeq\r\n return decodeURIComponent(pair[1]);\r\n }\r\n }\r\n return null;\r\n}\r\nvar standalone = '__[STANDALONE]__';\r\nvar animationData = '__[ANIMATIONDATA]__';\r\nvar renderer = '';\r\nvar queryString;\r\nif (standalone) {\r\n var scripts = document.getElementsByTagName('script');\r\n var index = scripts.length - 1;\r\n var myScript = scripts[index] || {\r\n src: '',\r\n };\r\n queryString = myScript.src.replace(/^[^\\?]+\\??/, ''); // eslint-disable-line no-useless-escape\r\n renderer = getQueryVariable('renderer');\r\n}\r\nvar readyStateCheckInterval = setInterval(checkReady, 100);\r\n\nreturn lottie;\n}));","/**\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","// 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\n// import ResizeObserver from \"resize-observer-polyfill\";\nimport styles from \"./lottie-player.styles\";\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\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<string, any>): 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<Record<string, any>> {\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 * 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 * 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 if (!this.shadowRoot) {\n return;\n }\n\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 },\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 // 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 } 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 * 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` <div\n id=\"animation-container\"\n class=${className}\n lang=\"en\"\n aria-label=${this.description}\n role=\"img\"\n >\n <div\n id=\"animation\"\n class=${animationClass}\n style=\"background:${this.background};\"\n >\n ${this.currentState === PlayerState.Error\n ? html`<div class=\"error\">⚠️</div>`\n : undefined}\n </div>\n ${this.controls ? this.renderControls() : undefined}\n </div>`;\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 <div\n id=\"lottie-controls\"\n aria-label=\"lottie-animation-controls\"\n class=\"toolbar\"\n >\n <button\n id=\"lottie-play-button\"\n @click=${this.togglePlay}\n class=${isPlaying || isPaused ? \"active\" : \"\"}\n style=\"align-items:center;\"\n tabindex=\"0\"\n aria-label=\"play-pause\"\n >\n ${isPlaying\n ? html`<svg\n width=\"24\"\n height=\"24\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path\n d=\"M14.016 5.016H18v13.969h-3.984V5.016zM6 18.984V5.015h3.984v13.969H6z\"\n />\n </svg>`\n : html`<svg\n width=\"24\"\n height=\"24\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M8.016 5.016L18.985 12 8.016 18.984V5.015z\" />\n </svg>`}\n </button>\n <button\n id=\"lottie-stop-button\"\n @click=${this.stop}\n class=${isStopped ? \"active\" : \"\"}\n style=\"align-items:center;\"\n tabindex=\"0\"\n aria-label=\"stop\"\n >\n <svg width=\"24\" height=\"24\" aria-hidden=\"true\" focusable=\"false\">\n <path d=\"M6 6h12v12H6V6z\" />\n </svg>\n </button>\n <input\n id=\"lottie-seeker-input\"\n class=\"seeker\"\n type=\"range\"\n min=\"0\"\n step=\"1\"\n max=\"100\"\n .value=${this.seeker}\n @input=${this._handleSeekChange}\n @mousedown=${() => {\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 <button\n id=\"lottie-loop-toggle\"\n @click=${this.toggleLooping}\n class=${this.loop ? \"active\" : \"\"}\n style=\"align-items:center;\"\n tabindex=\"0\"\n aria-label=\"loop-toggle\"\n >\n <svg width=\"24\" height=\"24\" aria-hidden=\"true\" focusable=\"false\">\n <path\n d=\"M17.016 17.016v-4.031h1.969v6h-12v3l-3.984-3.984 3.984-3.984v3h10.031zM6.984 6.984v4.031H5.015v-6h12v-3l3.984 3.984-3.984 3.984v-3H6.984z\"\n />\n </svg>\n </button>\n </div>\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"],"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","undefined","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","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","root","factory","navigator","svgNS","locationHref","initialDefaultFrame","_useWebWorker","subframeEnabled","idPrefix","expressionsPlugin","isSafari","userAgent","cachedColors","bmRnd","bmPow","pow","bmSqrt","sqrt","bmFloor","floor","bmMax","max","bmMin","min","BMMath","ProjectInterface","propertyNames","len","abs","val","absArr","createSizedArray","defaultCurveSegments","degToRads","PI","roundCorner","roundValues","flag","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","BaseEvent","triggerEvent","eventName","args","_cbs","callbacks","callback","bind","createTypedArray","createRegularArray","arr","Uint8ClampedArray","Float32Array","Int16Array","createNS","createElementNS","createTag","DynamicPropertyContainer","addDynamicProperty","prop","dynamicProperties","_isAnimated","iterateDynamicProperties","_mdf","getValue","initDynamicPropertyContainer","getBlendMode","blendModeEnums","lineCapEnum","lineJoinEnum","Matrix","_cos","cos","_sin","sin","_tan","tan","_rnd","reset","rotate","angle","mCos","mSin","_t","rotateX","rotateY","rotateZ","shear","sx","sy","skew","ax","ay","skewFromAxis","scale","sz","setTransform","translate","tx","ty","tz","transform","a2","b2","c2","d2","e2","f2","g2","h2","i2","j2","l2","m2","n2","o2","p2","_p","_identityCalculated","a1","b1","c1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","p1","isIdentity","_identity","equals","matr","clone","cloneFromProps","applyToPoint","x","z","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","pt","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","pt1","pt2","pt3","p0","p4","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","pool","math","global","width","startdenom","significance","overflow","mask","ARC4","keylen","me","S","count","copy","obj","depth","typ","mixkey","seed","smear","stringseed","charCodeAt","tostring","fromCharCode","shortseed","entropy","out","Uint8Array","crypto","msCrypto","getRandomValues","browser","plugins","Date","screen","autoseed","arc4","prng","int32","quick","double","pass","is_math_call","BezierFactory","ob","nm","str","replace","beziers","bezEasing","BezierEasing","kSampleStepSize","float32ArraySupported","A","aA1","aA2","B","C","calcBezier","aT","getSlope","points","_mSampleValues","_precomputed","mX1","mY1","mX2","mY2","_precompute","_getTForX","_calcSampleValues","aX","mSampleValues","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","extendPrototype","sources","destination","sourcePrototype","getDescriptor","object","createProxyFunction","ProxyFunction","bezFunction","pointOnLine2D","x1","y1","x2","y2","x3","y3","det1","getBezierLength","pt4","ptCoord","perc","ptDistance","curveSegments","addedLength","point","lastPoint","lengthData","bezierLengthPool","newElement","percents","lengths","BezierData","segmentLength","PointData","partial","partialLength","storedData","buildBezierData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","dir","bezierSegmentPoints","getSegmentsLength","shapeData","segmentsLength","segmentsLengthPool","closed","pathV","pathO","pathI","_length","totalLength","getNewSegment","startPerc","endPerc","t0","t1","u0","u1","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","getPointInSegment","percent","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","lastTime","vendors","requestAnimationFrame","cancelAnimationFrame","currTime","getTime","timeToCall","id","setTimeout","clearTimeout","bez","dataManager","workerFn","workerInstance","_counterId","processes","workerProxy","onmessage","postMessage","path","_workerSelf","setupWorker","fn","Worker","Blob","blob","url","URL","createObjectURL","createWorker","completeLayers","layers","comps","layerData","jLen","kLen","completed","tt","td","hasMask","maskProps","masksProperties","convertPathsToAbsoluteValues","findCompLayers","refId","completeShapes","shapes","completeText","__used","ks","it","checkVersion","minimum","animVersionString","animVersion","minimumVersion","checkText","iterateLayers","textLayer","documentData","animationData","assets","checkChars","chars","pathData","paths","__converted","checkPathProperties","checkColors","iterateShapes","checkShapes","completeClosingShapes","cl","singleShape","moduleOb","__complete","dataFunctionManager","assetLoader","formatResponse","xhr","contentTypeHeader","getResponseHeader","responseType","response","responseText","load","fullPath","errorCallback","XMLHttpRequest","err","onreadystatechange","readyState","status","open","send","completeData","payload","animation","process","onComplete","onError","createProcess","loadAnimation","processId","location","origin","pathname","loadData","completeAnimation","anim","getFontProperties","fontData","fStyle","fWeight","weight","FontManager","emptyChar","w","size","combinedCharacters","surrogateModifiers","zeroWidthJoiner","setUpNode","font","family","fontFamily","innerText","fontSize","fontVariant","fontStyle","fontWeight","letterSpacing","offsetWidth","familyArray","enabledFamilies","join","trimFontOptions","createHelper","def","tHelper","fontProps","fFamily","fClass","getContext","Font","fonts","typekitLoaded","isLoaded","_warned","initTime","now","setIsLoadedBinded","setIsLoaded","checkLoadedFontsBinded","checkLoadedFonts","isModifier","firstCharCode","secondCharCode","sum","isZeroWidthJoiner","isCombinedCharacter","char","fontPrototype","addChars","found","ch","addFonts","defs","list","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","loaded","monoCase","sansCase","fPath","fOrigin","href","rel","src","sc","helper","getCharData","console","warn","getFontByName","fName","measureText","fontName","doubleSize","getComputedTextLength","singleSize","loadedCount","removeChild","PropertyFactory","initFrame","mathAbs","interpolateValue","frameNum","caching","newValue","offsetTime","propType","pv","keyData","nextKeyData","keyframeMetadata","fnc","iterationIndex","keyframes","keyframesMetadata","endValue","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","az","aw","bx","by","bz","bw","acos","slerp","atan2","asin","c3","s1","s2","s3","getValueAtCurrentTime","comp","renderedFrame","endTime","_caching","renderResult","setVValue","multipliedValue","mult","processEffectsSequence","elem","globalData","frameId","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","ValueProperty","vel","MultiDimensionalProperty","KeyframedValueProperty","st","KeyframedMultidimensionalProperty","arrLen","getProp","TransformPropertyFactory","defaultVector","TransformProperty","pre","appliedTransformations","px","py","pz","rx","ry","rz","or","sk","sa","_isDirty","applyToMatrix","mat","forceRender","precalculateMatrix","frameRate","autoOriented","v1","v2","getValueAtTime","autoOrient","_addDynamicProperty","getTransformProperty","ShapePath","_maxLength","setPathData","setLength","pointPool","doubleArrayLength","setXYAt","pos","setTripleAt","vX","vY","oX","oY","iX","iY","newPath","vertices","outPoints","inPoints","init","cnt","ShapePropertyFactory","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","localShapeCollection","shape1","shape2","shapesEqual","shapePool","releaseShapes","addShape","ShapeProperty","shapeCollectionPool","newShapeCollection","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","s0","_cw","StarShapeProperty","StarShapePropertyFactory","ir","is","convertToPath","convertStarToPath","convertPolygonToPath","os","rad","roundness","perimSegment","numPts","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","ShapeModifiers","modifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","RoundCornersModifier","PuckerAndBloatModifier","RepeaterModifier","ShapeCollection","DashProperty","renderer","dataProps","dashStr","dashArray","dashoffset","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","initModifierProperties","addShapeToModifier","shape","setAsAnimated","processKeys","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segments","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","release","processShapes","shapePaths","_s","totalShapeLength","edges","newShapesData","addShapes","lastShape","addPaths","newPaths","addSegment","shapePath","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","segment","rd","processPath","clonedPath","currentV","currentI","currentO","closerV","distance","newPosPerc","amount","centerPoint","pathLength","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","matrix","applyTransforms","inv","scaleX","scaleY","elemsData","_currentCopies","_elements","_groups","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","comparePoints","buildShapeString","pathNodes","_o","_i","shapeString","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","audio","pause","setRate","rateValue","createAudio","assetPath","Howl","isPlaying","play","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","ImagePreloader","proxyImage","canvas","height","ctx","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","assetsPath","originalPath","imagePath","u","testImageLoaded","img","intervalId","setInterval","getBBox","_imageLoaded","clearInterval","createFootageData","footageData","_footageLoaded","ImagePreloaderFactory","images","loadAssets","cb","_createImageData","setAssetsPath","setPath","loadedImages","loadedFootages","destroy","getAsset","createImgData","crossOrigin","createImageData","setAttributeNS","_elementHelper","setCacheType","elementHelper","featureSupport","maskType","filtersFactory","filId","skipCoordinates","fil","feColorMatrix","TextAnimatorProperty","textData","renderType","_hasMaskedPath","_frameId","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","TextAnimatorDataProperty","animatorProps","defaultData","textAnimatorAnimatables","sw","fc","fh","fs","fb","TextSelectorProp","getTextSelectorProp","LetterProps","TextProperty","keysIndex","canResize","minimumFontSize","currentData","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","of","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","searchProperties","maskManager","getMaskProperty","getMeasures","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","prevPoint","tanAngle","animators","matrixHelper","mHelper","renderedLettersCount","letters","tLength","pi","letterValue","yOff","firstLine","offf","xPathPos","yPathPos","elemOpacity","letterSw","letterSc","letterFc","letterO","initPathPos","initSegmentInd","initPointInd","currentLine","letterM","letterP","defaultPropsArray","animatorJustifyOffset","animatorFirstCharOffset","justifyOffsetMult","isNewLine","getMult","anIndexes","totalChars","line","extra","an","animatorOffset","add","rot","atan","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","text","charCode","charactersArray","shouldCombine","charAt","substr","newLineFlag","charData","fontManager","anchorGrouping","currentSize","currentPos","lineWidth","maxLineWidth","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","animatorData","letterData","based","indexes","rn","newInd","currentInd","updateDocumentData","newData","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorPropFactory","_currentTextLength","finalS","finalE","xe","ne","sm","textProperty","easer","tot","smoothness","threshold","newCharsFlag","divisor","poolFactory","initialLength","_create","_release","pooling","cloned","shapeCollection","markerParser","parsePayloadLines","lines","keys","keysCount","trim","_markers","markers","markerData","time","tm","duration","dr","cm","BaseRenderer","SVGRenderer","animationItem","config","ariaLabel","title","titleElement","titleId","description","descElement","descId","maskElement","layerElement","renderConfig","preserveAspectRatio","imagePreserveAspectRatio","contentVisibility","progressiveLoad","hideOnTransparent","viewBoxOnly","viewBoxSize","className","focusable","filterSize","pendingElements","destroyed","rendererType","CanvasRenderer","clearCanvas","context","dpr","wrapper","devicePixelRatio","currentGlobalAlpha","contextData","CVContextData","transformMat","HybridRenderer","threeDElements","camera","supports3d","MaskElement","viewData","solidPath","rect","expansor","feMorph","currentMasks","layerId","maskRef","getShapeProp","lastPath","filterID","expan","lastOperator","filterId","lastRadius","createLayerSolidPath","invRect","drawPath","maskedElement","addRenderableComponent","HierarchyElement","FrameElement","TransformElement","RenderableElement","RenderableDOMElement","ProcessedElement","SVGStyleData","level","lvl","hd","pElem","msElem","SVGShapeData","transformers","caches","lStr","SVGTransformData","SVGStrokeStyleData","styleOb","SVGFillStyleData","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","checkLayers","num","ip","buildItem","checkPendingElements","createItem","layer","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","createFootage","AudioElement","FootageElement","buildAllItems","includeLayers","newLayers","setProjectInterface","pInterface","projectInterface","initItems","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","searchExtraCompositions","xt","initExpressions","registerComposition","setupGlobalData","animData","fontsContainer","getAssetData","imageLoader","imagePreloader","audioController","fr","compSize","NullElement","SVGShapeElement","SVGTextLottieElement","IImageElement","SVGCompElement","ISolidElement","configAnimation","maskId","updateContainerSize","appendElementInPos","setMatte","checkParenting","renderFrame","currentFrame","prepareFrame","getBaseElement","nextElement","hide","show","CVShapeElement","CVTextElement","CVImageElement","CVCompElement","CVSolidElement","ctxTransform","cProps","cTr","trProps","canvasContext","ctxOpacity","globalAlpha","cO","restore","save","actionFlag","cArrPos","duplicate","saved","savedOp","blendMode","popped","containerStyle","mozTransformOrigin","transformCanvas","isDashed","elementWidth","elementHeight","elementRel","animationRel","offsetHeight","par","fillType","beginPath","closePath","clip","clearRect","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","getThreeDContainerByPos","HShapeElement","HTextElement","HCameraElement","HImageElement","HCompElement","HSolidElement","startPos","endPos","perspectiveElem","createThreeDContainer","center","webkitTransform","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","setup","cWidth","cHeight","webkitPerspective","perspective","floatingContainer","isFirstFrame","finalMat","finalTransform","mProp","getMaskelement","pathString","pathShapeValue","initHierarchy","_isParent","prepareProperties","isVisible","initTransform","_matMdf","_opMdf","ao","renderTransform","globalToLocal","transforms","ptNew","initRenderable","isInRange","hidden","isTransparent","renderableComponents","component","removeRenderableComponent","prepareRenderableFrame","checkLayerLimits","checkTransparency","renderRenderable","sourceRectAtTime","getLayerSize","initElement","initBaseData","initRendererElement","createContainerElements","createRenderableComponents","createContent","baseElement","renderElement","renderInnerContent","innerElem","destroyBaseElement","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","stop","gf","cst","opacityId","opFill","lc","lj","ml","ms","ost","SVGElementsRenderer","_identityMatrix","_matrixHelper","renderContentTransform","styleData","itemData","renderPath","pathStringTransformed","redraw","iterations","lLen","renderFill","styleElem","renderGradientStroke","renderGradient","renderStroke","hasOpacity","attr1","attr2","cValues","oValues","ang","dist","createRenderFunction","ShapeTransformManager","sequences","sequenceList","transform_key_count","CVShapeData","transformsManager","styledShapes","styledShape","addTransformSequence","trNodes","BaseElement","SVGBaseElement","IShapeElement","ITextElement","ICompElement","sourceRect","_isPlaying","_canPlay","_currentTime","_placeholder","textSpans","shapesData","stylesList","shapeModifiers","itemsData","processedElements","animatedContents","SVGTintFilter","filterManager","matrixFilter","effectElements","feMergeNode","feMerge","SVGFillFilter","SVGGaussianBlurEffect","feGaussianBlur","SVGStrokeEffect","initialized","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","feOffset","feFlood","feComposite","originalNodeAdded","sequence","processSequence","processSequences","getNewKey","checkMasks","layerInterface","LayerExpressionInterface","registerMaskInterface","effectsInterface","EffectsExpressionInterface","createEffectsInterface","registerEffectsInterface","compInterface","CompExpressionInterface","shapeInterface","ShapeExpressionInterface","textInterface","TextExpressionInterface","setBlendMode","blendModeValue","bm","sr","effectsManager","EffectsManager","getType","matteElement","transformedElement","_sizeChanged","gg","layerElementParent","masker","createFilter","createAlphaToLuminanceFilter","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","ln","cp","clipId","cpGroup","renderableEffectsManager","SVGEffects","addShapeToModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","searchProcessedElement","addProcessedElement","textAnimator","buildNewText","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","lineNumber","buildColor","colorData","emptyProp","timeRemapped","setElements","getElements","destroyElements","pr","volumeValue","FootageInterface","getFootageData","textContainer","buildTextContents","textArray","textContents","currentTextContent","tSpan","usesGlyphs","cachedSpansLength","tElement","justify","textBox","bbox","renderedLetter","textSpan","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","setElementStyles","currentTransform","modifier","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","colorBlack","colorWhite","opacity","sigma","dimensions","sigmaX","sigmaY","edgeMode","initialize","groupPath","elemChildren","children","pathMasker","dasharrayValue","getTotalLength","lineLength","units","color1","color2","color3","tableR","tableG","tableB","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","table","outputDelta","inputDelta","col","_svgMatteSymbols","SVGMatte3Effect","filterElem","ef","filters","CVBaseElement","CVMaskElement","hasMasks","stroke","currentRender","sWidth","fValue","CVEffects","HBaseElement","shapesContainer","currentBBox","textPaths","isMasked","pe","_prevMat","HEffects","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","symbol","newLength","currentSavedOp","createElements","globalCompositeOperation","hideElement","showElement","forceRealStack","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","drawImage","moveTo","lineTo","bezierCurveTo","transformHelper","dashResetter","preTransforms","co","wi","da","do","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","nodes","currentStyle","coOp","strokeStyle","grd","lineCap","lineJoin","miterLimit","setLineDash","lineDashOffset","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","hasFill","hasStroke","commands","pathArr","lastFill","lastStroke","lastStrokeW","checkBlendMode","tg","transformedElementStyle","matrixValue","addEffects","backgroundColor","_createBaseContainerElements","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","boundingBox","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","bounds","shapeBoundingBox","xMax","right","yMax","bottom","tempBoundingBox","p3","b2ac","t2","calculateF","calculateBoundingBox","currentBoxContains","box","changed","shapeStyle","shapeTransform","compW","compH","innerElemStyle","textColor","strokeWidth","lineHeight","tParent","tCont","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","margin","svgTransform","Image","imageElem","perspectiveStyle","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","animationManager","registeredAnimations","playingAnimationsNum","_stopped","_isFrozen","removeElement","ev","animItem","isPaused","subtractPlayingCount","registerAnimation","AnimationItem","setupAnimation","setData","addPlayingCount","activate","nowTime","elapsedTime","advanceTime","first","params","setParams","setSpeed","setDirection","togglePause","searchAnimations","standalone","animElements","getElementsByClassName","lenAnims","getElementsByTagName","div","resize","goToAndStop","isFrame","freeze","unfreeze","getRegisteredAnimations","animations","currentRawFrame","frameMult","playSpeed","playDirection","playCount","autoplay","loop","animationID","timeCompleted","segmentPos","isSubframeEnabled","_idle","_completedLoop","onSetupError","onSegmentComplete","animType","rendererSettings","parseInt","autoloadSegments","initialSegment","lastIndexOf","fileName","trigger","wrapperAttributes","getNamedItem","prerender","loadNextSegment","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","updaFrameModifier","waitForFontsLoaded","triggerConfigError","gotoFrame","setSubframe","triggerRenderFrameError","setCurrentRawFrameValue","getMarkerData","markerName","numValue","isNaN","frameModifier","goToAndPlay","playSegments","nextValue","_isComplete","checkSegments","adjustSegment","setSegment","pendingFrame","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onSegmentStart","onDestroy","getPath","getDuration","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","ExpressionManager","fetch","frames","$bm_isInstanceOfArray","isNumerable","tOfV","$bm_neg","tOfA","lenA","retArr","easeInBez","easeOutBez","easeInOutBez","tOfB","lenB","sub","mul","$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","needsVelocity","_needsRandom","elemType","$bm_transform","effect","thisProperty","valueAtTime","frameDuration","displayStartTime","inPoint","outPoint","loopIn","loop_in","loopOut","loop_out","smooth","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","rotation","anchorPoint","thisLayer","thisComp","velocityAtTime","scoped_bm_rt","expression_function","eval","numKeys","active","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","loopInDuration","loopOutDuration","getVelocityAtTime","velocity","textIndex","textTotal","selectorValue","lookAt","elem1","elem2","fVec","pitch","easeOut","val1","val2","applyEase","easeIn","ease","iKey","lenKey","nearestKey","obKey","framesToTime","fps","timeToFrames","seedRandom","seedrandom","randSeed","substring","posterizeTime","framesPerSecond","hasParent","executeExpression","_value","frameExpressionId","expressionHelpers","searchExpressions","getSpeedAtTime","speed","delta","_cachingAtTime","getStaticValueAtTime","setGroupProperty","propertyGroup","durationFlag","cycleDuration","firstKeyFrame","ret","lastKeyFrame","initV","endV","current","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","anchor","skewAxis","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","propertyIndex","ShapePropertyConstructorFunction","getConstructorFunction","KeyframedShapePropertyConstructorFunction","getKeyframedConstructorFunction","ShapeExpressions","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","tangentOnPath","normalOnPath","shapeValue","propertyGetShapeProp","trims","getExpressionValue","calculateExpression","isKeyframed","hasExpressions","ShapePathInterface","view","interfaceFunction","_propertyGroup","propertyGroupFactory","PropertyInterface","defineProperties","mn","parentPropertyGroup","propertyName","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","interfaces","numProperties","transformInterface","transformInterfaceFactory","cix","contentsInterfaceFactory","np","ExpressionPropertyInterface","startPoint","endPoint","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","outerRadius","outerRoundness","innerRoundness","innerRadius","radius","_interfaceFunction","_prevValue","_sourceText","_thisLayerFunction","sourceText","stringValue","getMatrix","toWorldMat","toWorldVec","applyPoint","fromWorldVec","invertPoint","sampleImage","anchorPointDescriptor","TransformExpressionInterface","anchor_point","startTime","source","MaskManagerInterface","effects","dataInterfaceFactory","outlineInterface","currentPropertyName","currentProperty","propertyNameIndex","outlineInterfaceFactory","dataInterface","pixelAspect","numLayers","_thisFunction","xRotation","yRotation","xPosition","yPosition","zPosition","_px","_py","_pz","_transformFactory","compositions","_thisProjectFunction","effectsData","createGroupInterface","groupInterface","createValueInterface","enabled","en","expressionProperty","MaskInterface","_mask","_data","_masksInterfaces","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","valueProp","speedAtTime","defaultGetter","UnidimensionalPropertyInterface","arrValue","MultidimensionalPropertyInterface","TextExpressionSelectorPropFactory","getValueProxy","total","propertyGetTextProp","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","effectItem","GroupEffect","eff","lottie","setLocationHref","setSubframeRendering","setIDPrefix","prefix","setQuality","inBrowser","installPlugin","plugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","variable","vars","queryString","pair","decodeURIComponent","useWebWorker","__getFactory","version","scripts","myScript","module","exports","bodymovin","PlayerState","PlayMode","PlayerEvents","parseSrc","isLottie","json","every","field","fromURL","srcUrl","Loading","Normal","_this","srcParsed","jsonData","srcAttrib","_lottie","webworkers","_attachEventListeners","currentState","dispatchEvent","CustomEvent","getLottie","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","renderControls","IntersectionObserver","entries","isIntersecting","Frozen","observe","Rendered","isStopped","_handleSeekChange","_prevState","Frame","detail","Complete","Bounce","Loop","intermission","Ready","Load","hover","Freeze","LottiePlayer"],"mappings":"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"}