{"version":3,"file":"lottie-player.js","sources":["../node_modules/tslib/tslib.es6.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/@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/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 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","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=window.ShadowRoot&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,e=Symbol(),n=new Map;class s{constructor(t,n){if(this._$cssResult$=!0,n!==e)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t}get styleSheet(){let e=n.get(this.cssText);return t&&void 0===e&&(n.set(this.cssText,e=new CSSStyleSheet),e.replaceSync(this.cssText)),e}toString(){return this.cssText}}const o=t=>new s(\"string\"==typeof t?t:t+\"\",e),r=(t,...n)=>{const o=1===t.length?t[0]:n.reduce(((e,n,s)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(n)+t[s+1]),t[0]);return new s(o,e)},i=(e,n)=>{t?e.adoptedStyleSheets=n.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):n.forEach((t=>{const n=document.createElement(\"style\"),s=window.litNonce;void 0!==s&&n.setAttribute(\"nonce\",s),n.textContent=t.cssText,e.appendChild(n)}))},S=t?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const n of t.cssRules)e+=n.cssText;return o(e)})(t):t;export{s as CSSResult,i as adoptStyles,r as css,S as getCompatibleStyle,t as supportsAdoptingStyleSheets,o as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as i}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var s;const e=window.trustedTypes,r=e?e.emptyScript:\"\",h=window.reactiveElementPolyfillSupport,o={toAttribute(t,i){switch(i){case Boolean:t=t?r:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,i){let s=t;switch(i){case Boolean:s=null!==t;break;case Number:s=null===t?null:Number(t);break;case Object:case Array:try{s=JSON.parse(t)}catch(t){s=null}}return s}},n=(t,i)=>i!==t&&(i==i||t==t),l={attribute:!0,type:String,converter:o,reflect:!1,hasChanged:n};class a extends HTMLElement{constructor(){super(),this._$Et=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Ei=null,this.o()}static addInitializer(t){var i;null!==(i=this.l)&&void 0!==i||(this.l=[]),this.l.push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((i,s)=>{const e=this._$Eh(s,i);void 0!==e&&(this._$Eu.set(e,s),t.push(e))})),t}static createProperty(t,i=l){if(i.state&&(i.attribute=!1),this.finalize(),this.elementProperties.set(t,i),!i.noAccessor&&!this.prototype.hasOwnProperty(t)){const s=\"symbol\"==typeof t?Symbol():\"__\"+t,e=this.getPropertyDescriptor(t,s,i);void 0!==e&&Object.defineProperty(this.prototype,t,e)}}static getPropertyDescriptor(t,i,s){return{get(){return this[i]},set(e){const r=this[t];this[i]=e,this.requestUpdate(t,r,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||l}static finalize(){if(this.hasOwnProperty(\"finalized\"))return!1;this.finalized=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),this.elementProperties=new Map(t.elementProperties),this._$Eu=new Map,this.hasOwnProperty(\"properties\")){const t=this.properties,i=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const s of i)this.createProperty(s,t[s])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(i){const s=[];if(Array.isArray(i)){const e=new Set(i.flat(1/0).reverse());for(const i of e)s.unshift(t(i))}else void 0!==i&&s.push(t(i));return s}static _$Eh(t,i){const s=i.attribute;return!1===s?void 0:\"string\"==typeof s?s:\"string\"==typeof t?t.toLowerCase():void 0}o(){var t;this._$Ep=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Em(),this.requestUpdate(),null===(t=this.constructor.l)||void 0===t||t.forEach((t=>t(this)))}addController(t){var i,s;(null!==(i=this._$Eg)&&void 0!==i?i:this._$Eg=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(s=t.hostConnected)||void 0===s||s.call(t))}removeController(t){var i;null===(i=this._$Eg)||void 0===i||i.splice(this._$Eg.indexOf(t)>>>0,1)}_$Em(){this.constructor.elementProperties.forEach(((t,i)=>{this.hasOwnProperty(i)&&(this._$Et.set(i,this[i]),delete this[i])}))}createRenderRoot(){var t;const s=null!==(t=this.shadowRoot)&&void 0!==t?t:this.attachShadow(this.constructor.shadowRootOptions);return i(s,this.constructor.elementStyles),s}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostConnected)||void 0===i?void 0:i.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostDisconnected)||void 0===i?void 0:i.call(t)}))}attributeChangedCallback(t,i,s){this._$AK(t,s)}_$ES(t,i,s=l){var e,r;const h=this.constructor._$Eh(t,s);if(void 0!==h&&!0===s.reflect){const n=(null!==(r=null===(e=s.converter)||void 0===e?void 0:e.toAttribute)&&void 0!==r?r:o.toAttribute)(i,s.type);this._$Ei=t,null==n?this.removeAttribute(h):this.setAttribute(h,n),this._$Ei=null}}_$AK(t,i){var s,e,r;const h=this.constructor,n=h._$Eu.get(t);if(void 0!==n&&this._$Ei!==n){const t=h.getPropertyOptions(n),l=t.converter,a=null!==(r=null!==(e=null===(s=l)||void 0===s?void 0:s.fromAttribute)&&void 0!==e?e:\"function\"==typeof l?l:null)&&void 0!==r?r:o.fromAttribute;this._$Ei=n,this[n]=a(i,t.type),this._$Ei=null}}requestUpdate(t,i,s){let e=!0;void 0!==t&&(((s=s||this.constructor.getPropertyOptions(t)).hasChanged||n)(this[t],i)?(this._$AL.has(t)||this._$AL.set(t,i),!0===s.reflect&&this._$Ei!==t&&(void 0===this._$E_&&(this._$E_=new Map),this._$E_.set(t,s))):e=!1),!this.isUpdatePending&&e&&(this._$Ep=this._$EC())}async _$EC(){this.isUpdatePending=!0;try{await this._$Ep}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Et&&(this._$Et.forEach(((t,i)=>this[i]=t)),this._$Et=void 0);let i=!1;const s=this._$AL;try{i=this.shouldUpdate(s),i?(this.willUpdate(s),null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostUpdate)||void 0===i?void 0:i.call(t)})),this.update(s)):this._$EU()}catch(t){throw i=!1,this._$EU(),t}i&&this._$AE(s)}willUpdate(t){}_$AE(t){var i;null===(i=this._$Eg)||void 0===i||i.forEach((t=>{var i;return null===(i=t.hostUpdated)||void 0===i?void 0:i.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$Ep}shouldUpdate(t){return!0}update(t){void 0!==this._$E_&&(this._$E_.forEach(((t,i)=>this._$ES(i,this[i],t))),this._$E_=void 0),this._$EU()}updated(t){}firstUpdated(t){}}a.finalized=!0,a.elementProperties=new Map,a.elementStyles=[],a.shadowRootOptions={mode:\"open\"},null==h||h({ReactiveElement:a}),(null!==(s=globalThis.reactiveElementVersions)&&void 0!==s?s:globalThis.reactiveElementVersions=[]).push(\"1.2.1\");export{a as ReactiveElement,o as defaultConverter,n as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nvar t;const i=globalThis.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=`lit$${(Math.random()+\"\").slice(9)}$`,o=\"?\"+e,n=`<${o}>`,l=document,h=(t=\"\")=>l.createComment(t),r=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,d=Array.isArray,u=t=>{var i;return d(t)||\"function\"==typeof(null===(i=t)||void 0===i?void 0:i[Symbol.iterator])},c=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,a=/>/g,f=/>|[ \t\\n\f\\r](?:([^\\s\"'>=/]+)([ \t\\n\f\\r]*=[ \t\\n\f\\r]*(?:[^ \t\\n\f\\r\"'`<>=]|(\"|')|))|$)/g,_=/'/g,m=/\"/g,g=/^(?:script|style|textarea)$/i,p=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),$=p(1),y=p(2),b=Symbol.for(\"lit-noChange\"),w=Symbol.for(\"lit-nothing\"),T=new WeakMap,x=(t,i,s)=>{var e,o;const n=null!==(e=null==s?void 0:s.renderBefore)&&void 0!==e?e:i;let l=n._$litPart$;if(void 0===l){const t=null!==(o=null==s?void 0:s.renderBefore)&&void 0!==o?o:null;n._$litPart$=l=new N(i.insertBefore(h(),t),t,void 0,null!=s?s:{})}return l._$AI(t),l},A=l.createTreeWalker(l,129,null,!1),C=(t,i)=>{const o=t.length-1,l=[];let h,r=2===i?\"\":\"\",d=c;for(let i=0;i\"===u[0]?(d=null!=h?h:c,p=-1):void 0===u[1]?p=-2:(p=d.lastIndex-u[2].length,o=u[1],d=void 0===u[3]?f:'\"'===u[3]?m:_):d===m||d===_?d=f:d===v||d===a?d=c:(d=f,h=void 0);const y=d===f&&t[i+1].startsWith(\"/>\")?\" \":\"\";r+=d===c?s+n:p>=0?(l.push(o),s.slice(0,p)+\"$lit$\"+s.slice(p)+e+y):s+e+(-2===p?(l.push(void 0),i):y)}const u=r+(t[o]||\"\")+(2===i?\"\":\"\");if(!Array.isArray(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return[void 0!==s?s.createHTML(u):u,l]};class E{constructor({strings:t,_$litType$:s},n){let l;this.parts=[];let r=0,d=0;const u=t.length-1,c=this.parts,[v,a]=C(t,s);if(this.el=E.createElement(v,n),A.currentNode=this.el.content,2===s){const t=this.el.content,i=t.firstChild;i.remove(),t.append(...i.childNodes)}for(;null!==(l=A.nextNode())&&c.length0){l.textContent=i?i.emptyScript:\"\";for(let i=0;i2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=w}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,i=this,s,e){const o=this.strings;let n=!1;if(void 0===o)t=P(this,t,i,0),n=!r(t)||t!==this._$AH&&t!==b,n&&(this._$AH=t);else{const e=t;let l,h;for(t=o[0],l=0;l{t._$AK(e,i)},_$AL:t=>t._$AL};(null!==(o=globalThis.litElementVersions)&&void 0!==o?o:globalThis.litElementVersions=[]).push(\"3.1.2\");export{s as LitElement,r as UpdatingElement,h as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","(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= 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\tfill: var(--lottie-player-toolbar-icon-hover-color);\n }\n\n\n .toolbar button:focus{\n\toutline: 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 {\n customElement,\n property,\n query\n} from \"lit/decorators.js\";\n\nimport {\n TemplateResult\n} from 'lit/html.js';\n\nimport {\n LitElement,\n html,\n} from \"lit\";\n\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): boolean {\n const mandatory: string[] = [\"v\", \"ip\", \"op\", \"layers\", \"fr\", \"w\", \"h\"];\n\n return mandatory.every((field: string) =>\n Object.prototype.hasOwnProperty.call(json, field)\n );\n}\n\nasync function fromURL(url: string): Promise> {\n if (typeof url !== \"string\") {\n throw new Error(`The url value must be a string`);\n }\n\n let json;\n\n try {\n // Try construct an absolute URL from the src URL\n const srcUrl: URL = new URL(url);\n\n // Fetch the JSON file from the URL\n const result: any = await fetch(srcUrl.toString());\n\n json = await result.json();\n } catch (err) {\n throw new Error(\n `An error occurred while trying to load the Lottie file from URL`\n );\n }\n\n return json;\n}\n/**\n * LottiePlayer web component class\n *\n * @export\n * @class LottiePlayer\n * @extends {LitElement}\n */\n@customElement(\"lottie-player\")\nexport class LottiePlayer extends LitElement {\n /**\n * Autoplay animation on load.\n */\n @property({ type: Boolean })\n public autoplay: boolean = false;\n\n /**\n * Background color.\n */\n @property({ type: String, reflect: true })\n public background?: string = \"transparent\";\n\n /**\n * Show controls.\n */\n @property({ type: Boolean })\n public controls: boolean = false;\n\n /**\n * Number of times to loop animation.\n */\n @property({ type: Number })\n public count?: number;\n\n /**\n * Player state.\n */\n @property({ type: String })\n public currentState: PlayerState = PlayerState.Loading;\n\n /**\n * Animation speed.\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.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 // Remove intersection observer for detecting component being out-of-view.\n if (this._io) {\n this._io.disconnect();\n this._io = undefined;\n }\n\n // Remove resize observer for detecting resize/reflow events affecting element.\n // if (this._ro) {\n // this._ro.disconnect();\n // this._ro = undefined;\n // }\n\n // Remove the attached Visibility API's change event listener.\n document.removeEventListener(\"visibilitychange\", () =>\n this._onVisibilityChange()\n );\n\n // Destroy the animation instance and element\n this.destroy();\n }\n\n public render(): TemplateResult | void {\n const className: string = this.controls ? \"main controls\" : \"main\";\n const animationClass: string = this.controls\n ? \"animation controls\"\n : \"animation\";\n\n return html` \n \n ${this.currentState === PlayerState.Error\n ? html`
⚠️
`\n : undefined}\n \n ${this.controls ? this.renderControls() : undefined}\n `;\n }\n\n /**\n * Initialize everything on component first render.\n */\n protected firstUpdated(): void {\n // Add intersection observer for detecting component being out-of-view.\n if (\"IntersectionObserver\" in window) {\n this._io = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n if (entries[0].isIntersecting) {\n if (this.currentState === PlayerState.Frozen) {\n this.play();\n }\n } else if (this.currentState === PlayerState.Playing) {\n this.freeze();\n }\n }\n );\n\n this._io.observe(this.container);\n }\n\n // Add listener for Visibility API's change event.\n if (typeof document.hidden !== \"undefined\") {\n document.addEventListener(\"visibilitychange\", () =>\n this._onVisibilityChange()\n );\n }\n\n // Setup lottie player\n if (this.src) {\n this.load(this.src);\n }\n this.dispatchEvent(new CustomEvent(PlayerEvents.Rendered));\n }\n\n protected renderControls(): TemplateResult {\n const isPlaying: boolean = this.currentState === PlayerState.Playing;\n const isPaused: boolean = this.currentState === PlayerState.Paused;\n const isStopped: boolean = this.currentState === PlayerState.Stopped;\n\n return html`\n \n \n ${isPlaying\n ? html`\n \n `\n : html`\n \n `}\n \n \n \n \n {\n this._prevState = this.currentState;\n this.freeze();\n }}\n @mouseup=${() => {\n this._prevState === PlayerState.Playing && this.play();\n }}\n aria-valuemin=\"1\"\n aria-valuemax=\"100\"\n role=\"slider\"\n aria-valuenow=${this.seeker}\n tabindex=\"0\"\n aria-label=\"lottie-seek-input\"\n />\n \n \n \n \n \n \n `;\n }\n\n /**\n * Handle visibility change events.\n */\n private _onVisibilityChange(): void {\n if (document.hidden === true && this.currentState === PlayerState.Playing) {\n this.freeze();\n } else if (this.currentState === PlayerState.Frozen) {\n this.play();\n }\n }\n\n /**\n * Handles click and drag actions on the progress track.\n */\n private _handleSeekChange(e: any): void {\n if (!this._lottie || isNaN(e.target.value)) {\n return;\n }\n\n const frame: number = (e.target.value / 100) * this._lottie.totalFrames;\n\n this.seek(frame);\n }\n\n private _attachEventListeners(): void {\n this._lottie.addEventListener(\"enterFrame\", () => {\n this.seeker =\n (this._lottie.currentFrame / this._lottie.totalFrames) * 100;\n\n this.dispatchEvent(\n new CustomEvent(PlayerEvents.Frame, {\n detail: {\n frame: this._lottie.currentFrame,\n seeker: this.seeker,\n },\n })\n );\n });\n\n // Handle animation play complete\n this._lottie.addEventListener(\"complete\", () => {\n if (this.currentState !== PlayerState.Playing) {\n this.dispatchEvent(new CustomEvent(PlayerEvents.Complete));\n\n return;\n }\n\n if (!this.loop || (this.count && this._counter >= this.count)) {\n this.dispatchEvent(new CustomEvent(PlayerEvents.Complete));\n\n if (this.mode === PlayMode.Bounce) {\n if (this._lottie.currentFrame === 0) {\n return ;\n }\n } else {\n return;\n }\n }\n\n if (this.mode === PlayMode.Bounce) {\n if (this.count) {\n this._counter += 0.5;\n }\n\n setTimeout(() => {\n this.dispatchEvent(new CustomEvent(PlayerEvents.Loop));\n\n if (this.currentState === PlayerState.Playing) {\n this._lottie.setDirection(this._lottie.playDirection * -1);\n this._lottie.play();\n }\n }, this.intermission);\n } else {\n if (this.count) {\n this._counter += 1;\n }\n\n window.setTimeout(() => {\n this.dispatchEvent(new CustomEvent(PlayerEvents.Loop));\n\n if (this.currentState === PlayerState.Playing) {\n if (this.direction === -1) {\n // Prevents flickering\n this.seek('99%');\n this.play();\n } else {\n this._lottie.stop();\n this._lottie.play(); \n }\n }\n }, this.intermission);\n }\n });\n\n // Handle lottie-web ready event\n this._lottie.addEventListener(\"DOMLoaded\", () => {\n // Set initial playback speed and direction\n this.setSpeed(this.speed);\n this.setDirection(this.direction);\n\n // Start playing if autoplay is enabled\n if (this.autoplay) {\n if (this.direction === -1)\n 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","customElement","tagName","classOrDescriptor","clazz","window","customElements","define","descriptor","elements","finisher","standardProperty","options","element","createProperty","placement","originalKey","initializer","property","protoOrDescriptor","name","proto","legacyPrototypeMethod","standardPrototypeMethod","decorateProperty","_ref","info","ctor","eventOptions","query","selector","cache","renderRoot","querySelector","configurable","queryAll","_name","querySelectorAll","queryAsync","async","updateComplete","slotAssignedElements","HTMLSlotElement","assignedElements","slot","opts","assignedNodes","filter","node","nodeType","Node","ELEMENT_NODE","queryAssignedElements","slotSelector","slotEl","matches","queryAssignedNodes","slotOrOptions","flatten","assignedNodesOptions","supportsAdoptingStyleSheets","ShadowRoot","ShadyCSS","nativeShadow","Document","CSSStyleSheet","constructionToken","styleSheetCache","Map","CSSResult","cssText","safeToken","_$cssResult$","Error","styleSheet","replaceSync","toString","unsafeCSS","css","strings","values","reduce","acc","idx","adoptStyles","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","_initializers","observedAttributes","finalize","attributes","elementProperties","attr","__attributeNameForProperty","__attributeToPropertyMap","noAccessor","getPropertyDescriptor","oldValue","requestUpdate","finalized","superCtor","getPrototypeOf","props","properties","propKeys","getOwnPropertyNames","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","propName","getPropertyOptions","shouldRequestUpdate","__reflectingProperties","isUpdatePending","__enqueueUpdate","scheduleUpdate","performUpdate","hasUpdated","shouldUpdate","changedProperties","willUpdate","hostUpdate","update","__markUpdated","_$didUpdate","_changedProperties","hostUpdated","firstUpdated","updated","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","nodeIndex","attrNameIndex","partCount","parts","el","currentNode","content","svgElement","firstChild","remove","append","childNodes","nextNode","hasAttributes","attrsToRemove","getAttributeNames","endsWith","realName","statics","getAttribute","split","index","PropertyPart","BooleanAttributePart","EventPart","AttributePart","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","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","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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"}