{ "version": 3, "sources": ["../node_modules/@lottiefiles/lottie-player/node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/css-tag.js", "../node_modules/@lottiefiles/lottie-player/node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/reactive-element.js", "../node_modules/@lottiefiles/lottie-player/node_modules/.pnpm/lit-html@2.4.0/node_modules/lit-html/lit-html.js", "../node_modules/@lottiefiles/lottie-player/node_modules/.pnpm/lit-element@3.2.2/node_modules/lit-element/lit-element.js", "../node_modules/@lottiefiles/lottie-player/node_modules/.pnpm/lit-html@2.4.0/node_modules/lit-html/is-server.js", "../node_modules/@lottiefiles/lottie-player/node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/decorators/custom-element.js", "../node_modules/@lottiefiles/lottie-player/node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/decorators/property.js", "../node_modules/@lottiefiles/lottie-player/node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/decorators/state.js", "../node_modules/@lottiefiles/lottie-player/node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/decorators/base.js", "../node_modules/@lottiefiles/lottie-player/node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/decorators/event-options.js", "../node_modules/@lottiefiles/lottie-player/node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/decorators/query.js", "../node_modules/@lottiefiles/lottie-player/node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/decorators/query-all.js", "../node_modules/@lottiefiles/lottie-player/node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/decorators/query-async.js", "../node_modules/@lottiefiles/lottie-player/node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/decorators/query-assigned-elements.js", "../node_modules/@lottiefiles/lottie-player/node_modules/.pnpm/@lit+reactive-element@1.4.2/node_modules/@lit/reactive-element/decorators/query-assigned-nodes.js", "../node_modules/@lottiefiles/lottie-player/node_modules/.pnpm/lottie-web@5.10.0/node_modules/lottie-web/build/player/lottie.js", "../node_modules/@lottiefiles/lottie-player/src/lottie-player.styles.ts", "../node_modules/@lottiefiles/lottie-player/src/lottie-player.ts", "../node_modules/@lottiefiles/lottie-interactivity/src/main.js", "../modules/holiday2022/Lottie/default/index.js", "../node_modules/luminous-lightbox/src/js/util/dom.js", "../node_modules/luminous-lightbox/src/js/injectBaseStylesheet.js", "../node_modules/luminous-lightbox/src/js/util/throwIfMissing.js", "../node_modules/luminous-lightbox/src/js/Lightbox.js", "../node_modules/luminous-lightbox/src/js/Luminous.js", "../node_modules/luminous-lightbox/src/js/LuminousGallery.js", "../modules/holiday2022/gallery/default/index.js"], "sourcesContent": ["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=window,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),n=new WeakMap;class o{constructor(t,e,n){if(this._$cssResult$=!0,n!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=n.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&n.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new o(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const n=1===t.length?t[0]:e.reduce(((e,s,n)=>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.\")})(s)+t[n+1]),t[0]);return new o(n,t,s)},S=(s,n)=>{e?s.adoptedStyleSheets=n.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):n.forEach((e=>{const n=document.createElement(\"style\"),o=t.litNonce;void 0!==o&&n.setAttribute(\"nonce\",o),n.textContent=e.cssText,s.appendChild(n)}))},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{o as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r 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,r=e.trustedTypes,h=r?r.emptyScript:\"\",o=e.reactiveElementPolyfillSupport,n={toAttribute(t,i){switch(i){case Boolean:t=t?h: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}},a=(t,i)=>i!==t&&(i==i||t==t),l={attribute:!0,type:String,converter:n,reflect:!1,hasChanged:a};class d extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(t){var i;this.finalize(),(null!==(i=this.h)&&void 0!==i?i:this.h=[]).push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((i,s)=>{const e=this._$Ep(s,i);void 0!==e&&(this._$Ev.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(),void 0!==t.h&&(this.h=[...t.h]),this.elementProperties=new Map(t.elementProperties),this._$Ev=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 _$Ep(t,i){const s=i.attribute;return!1===s?void 0:\"string\"==typeof s?s:\"string\"==typeof t?t.toLowerCase():void 0}u(){var t;this._$E_=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Eg(),this.requestUpdate(),null===(t=this.constructor.h)||void 0===t||t.forEach((t=>t(this)))}addController(t){var i,s;(null!==(i=this._$ES)&&void 0!==i?i:this._$ES=[]).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._$ES)||void 0===i||i.splice(this._$ES.indexOf(t)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach(((t,i)=>{this.hasOwnProperty(i)&&(this._$Ei.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._$ES)||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._$ES)||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)}_$EO(t,i,s=l){var e;const r=this.constructor._$Ep(t,s);if(void 0!==r&&!0===s.reflect){const h=(void 0!==(null===(e=s.converter)||void 0===e?void 0:e.toAttribute)?s.converter:n).toAttribute(i,s.type);this._$El=t,null==h?this.removeAttribute(r):this.setAttribute(r,h),this._$El=null}}_$AK(t,i){var s;const e=this.constructor,r=e._$Ev.get(t);if(void 0!==r&&this._$El!==r){const t=e.getPropertyOptions(r),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==(null===(s=t.converter)||void 0===s?void 0:s.fromAttribute)?t.converter:n;this._$El=r,this[r]=h.fromAttribute(i,t.type),this._$El=null}}requestUpdate(t,i,s){let e=!0;void 0!==t&&(((s=s||this.constructor.getPropertyOptions(t)).hasChanged||a)(this[t],i)?(this._$AL.has(t)||this._$AL.set(t,i),!0===s.reflect&&this._$El!==t&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(t,s))):e=!1),!this.isUpdatePending&&e&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}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._$Ei&&(this._$Ei.forEach(((t,i)=>this[i]=t)),this._$Ei=void 0);let i=!1;const s=this._$AL;try{i=this.shouldUpdate(s),i?(this.willUpdate(s),null===(t=this._$ES)||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._$Ek()}catch(t){throw i=!1,this._$Ek(),t}i&&this._$AE(s)}willUpdate(t){}_$AE(t){var i;null===(i=this._$ES)||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)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(t){return!0}update(t){void 0!==this._$EC&&(this._$EC.forEach(((t,i)=>this._$EO(i,this[i],t))),this._$EC=void 0),this._$Ek()}updated(t){}firstUpdated(t){}}d.finalized=!0,d.elementProperties=new Map,d.elementStyles=[],d.shadowRootOptions={mode:\"open\"},null==o||o({ReactiveElement:d}),(null!==(s=e.reactiveElementVersions)&&void 0!==s?s:e.reactiveElementVersions=[]).push(\"1.4.2\");export{d as ReactiveElement,n as defaultConverter,a 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=window,s=i.trustedTypes,e=s?s.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,o=`lit$${(Math.random()+\"\").slice(9)}$`,n=\"?\"+o,l=`<${n}>`,h=document,r=(t=\"\")=>h.createComment(t),d=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,u=Array.isArray,c=t=>u(t)||\"function\"==typeof(null==t?void 0:t[Symbol.iterator]),v=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,a=/-->/g,f=/>/g,_=RegExp(\">|[ \\t\\n\\f\\r](?:([^\\\\s\\\"'>=/]+)([ \\t\\n\\f\\r]*=[ \\t\\n\\f\\r]*(?:[^ \\t\\n\\f\\r\\\"'`<>=]|(\\\"|')|))|$)\",\"g\"),m=/'/g,p=/\"/g,$=/^(?:script|style|textarea|title)$/i,g=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),y=g(1),w=g(2),x=Symbol.for(\"lit-noChange\"),b=Symbol.for(\"lit-nothing\"),T=new WeakMap,A=h.createTreeWalker(h,129,null,!1),E=(t,i)=>{const s=t.length-1,n=[];let h,r=2===i?\"\":\"\",d=v;for(let i=0;i\"===u[0]?(d=null!=h?h:v,c=-1):void 0===u[1]?c=-2:(c=d.lastIndex-u[2].length,e=u[1],d=void 0===u[3]?_:'\"'===u[3]?p:m):d===p||d===m?d=_:d===a||d===f?d=v:(d=_,h=void 0);const y=d===_&&t[i+1].startsWith(\"/>\")?\" \":\"\";r+=d===v?s+l:c>=0?(n.push(e),s.slice(0,c)+\"$lit$\"+s.slice(c)+o+y):s+o+(-2===c?(n.push(void 0),i):y)}const u=r+(t[s]||\"\")+(2===i?\"\":\"\");if(!Array.isArray(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return[void 0!==e?e.createHTML(u):u,n]};class C{constructor({strings:t,_$litType$:i},e){let l;this.parts=[];let h=0,d=0;const u=t.length-1,c=this.parts,[v,a]=E(t,i);if(this.el=C.createElement(v,e),A.currentNode=this.el.content,2===i){const t=this.el.content,i=t.firstChild;i.remove(),t.append(...i.childNodes)}for(;null!==(l=A.nextNode())&&c.length0){l.textContent=s?s.emptyScript:\"\";for(let s=0;s2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=b}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=!d(t)||t!==this._$AH&&t!==x,n&&(this._$AH=t);else{const e=t;let l,h;for(t=o[0],l=0;l{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(r(),t),t,void 0,null!=s?s:{})}return l._$AI(t),l};export{L as _$LH,y as html,x as noChange,b as nothing,Z as render,w as svg};\n//# sourceMappingURL=lit-html.js.map\n", "import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as i}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var l,o;const r=t;class s extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var t,e;const i=super.createRenderRoot();return null!==(t=(e=this.renderOptions).renderBefore)&&void 0!==t||(e.renderBefore=i.firstChild),i}update(t){const i=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(i,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!1)}render(){return i}}s.finalized=!0,s._$litElement$=!0,null===(l=globalThis.litElementHydrateSupport)||void 0===l||l.call(globalThis,{LitElement:s});const n=globalThis.litElementPolyfillSupport;null==n||n({LitElement:s});const h={_$AK:(t,e,i)=>{t._$AK(e,i)},_$AL:t=>t._$AL};(null!==(o=globalThis.litElementVersions)&&void 0!==o?o:globalThis.litElementVersions=[]).push(\"3.2.2\");export{s as LitElement,r as UpdatingElement,h as _$LE};\n//# sourceMappingURL=lit-element.js.map\n", "/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst o=!1;export{o as isServer};\n//# sourceMappingURL=is-server.js.map\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=e=>n=>\"function\"==typeof n?((e,n)=>(customElements.define(e,n),n))(e,n):((e,n)=>{const{kind:t,elements:s}=n;return{kind:t,elements:s,finisher(n){customElements.define(e,n)}}})(e,n);export{e as customElement};\n//# sourceMappingURL=custom-element.js.map\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst i=(i,e)=>\"method\"===e.kind&&e.descriptor&&!(\"value\"in e.descriptor)?{...e,finisher(n){n.createProperty(e.key,i)}}:{kind:\"field\",key:Symbol(),placement:\"own\",descriptor:{},originalKey:e.key,initializer(){\"function\"==typeof e.initializer&&(this[e.key]=e.initializer.call(this))},finisher(n){n.createProperty(e.key,i)}};function e(e){return(n,t)=>void 0!==t?((i,e,n)=>{e.constructor.createProperty(n,i)})(e,n,t):i(e,n)}export{e as property};\n//# sourceMappingURL=property.js.map\n", "import{property as r}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function t(t){return r({...t,state:!0})}export{t as state};\n//# sourceMappingURL=state.js.map\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,o)=>{Object.defineProperty(t,o,e)},t=(e,t)=>({kind:\"method\",placement:\"prototype\",key:t.key,descriptor:e}),o=({finisher:e,descriptor:t})=>(o,n)=>{var r;if(void 0===n){const n=null!==(r=o.originalKey)&&void 0!==r?r:o.key,i=null!=t?{kind:\"method\",placement:\"prototype\",key:n,descriptor:t(o.key)}:{...o,key:n};return null!=e&&(i.finisher=function(t){e(t,n)}),i}{const r=o.constructor;void 0!==t&&Object.defineProperty(o,n,t(n)),null==e||e(r,n)}};export{o as decorateProperty,e as legacyPrototypeMethod,t as standardPrototypeMethod};\n//# sourceMappingURL=base.js.map\n", "import{decorateProperty as r}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e){return r({finisher:(r,t)=>{Object.assign(r.prototype[t],e)}})}export{e as eventOptions};\n//# sourceMappingURL=event-options.js.map\n", "import{decorateProperty as o}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function i(i,n){return o({descriptor:o=>{const t={get(){var o,n;return null!==(n=null===(o=this.renderRoot)||void 0===o?void 0:o.querySelector(i))&&void 0!==n?n:null},enumerable:!0,configurable:!0};if(n){const n=\"symbol\"==typeof o?Symbol():\"__\"+o;t.get=function(){var o,t;return void 0===this[n]&&(this[n]=null!==(t=null===(o=this.renderRoot)||void 0===o?void 0:o.querySelector(i))&&void 0!==t?t:null),this[n]}}return t}})}export{i as query};\n//# sourceMappingURL=query.js.map\n", "import{decorateProperty as r}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e){return r({descriptor:r=>({get(){var r,o;return null!==(o=null===(r=this.renderRoot)||void 0===r?void 0:r.querySelectorAll(e))&&void 0!==o?o:[]},enumerable:!0,configurable:!0})})}export{e as queryAll};\n//# sourceMappingURL=query-all.js.map\n", "import{decorateProperty as r}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nfunction e(e){return r({descriptor:r=>({async get(){var r;return await this.updateComplete,null===(r=this.renderRoot)||void 0===r?void 0:r.querySelector(e)},enumerable:!0,configurable:!0})})}export{e as queryAsync};\n//# sourceMappingURL=query-async.js.map\n", "import{decorateProperty as o}from\"./base.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var n;const e=null!=(null===(n=window.HTMLSlotElement)||void 0===n?void 0:n.prototype.assignedElements)?(o,n)=>o.assignedElements(n):(o,n)=>o.assignedNodes(n).filter((o=>o.nodeType===Node.ELEMENT_NODE));function l(n){const{slot:l,selector:t}=null!=n?n:{};return o({descriptor:o=>({get(){var o;const r=\"slot\"+(l?`[name=${l}]`:\":not([name])\"),i=null===(o=this.renderRoot)||void 0===o?void 0:o.querySelector(r),s=null!=i?e(i,n):[];return t?s.filter((o=>o.matches(t))):s},enumerable:!0,configurable:!0})})}export{l as queryAssignedElements};\n//# sourceMappingURL=query-assigned-elements.js.map\n", "import{decorateProperty as e}from\"./base.js\";import{queryAssignedElements as t}from\"./query-assigned-elements.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function o(o,n,r){let l,s=o;return\"object\"==typeof o?(s=o.slot,l=o):l={flatten:n},r?t({slot:s,flatten:n,selector:r}):e({descriptor:e=>({get(){var e,t;const o=\"slot\"+(s?`[name=${s}]`:\":not([name])\"),n=null===(e=this.renderRoot)||void 0===e?void 0:e.querySelector(o);return null!==(t=null==n?void 0:n.assignedNodes(l))&&void 0!==t?t:[]},enumerable:!0,configurable:!0})})}export{o as queryAssignedNodes};\n//# sourceMappingURL=query-assigned-nodes.js.map\n", "(typeof navigator !== \"undefined\") && (function (global, factory) {\r\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\r\n typeof define === 'function' && define.amd ? define(factory) :\r\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\r\n})(this, (function () { 'use strict';\r\n\r\n var svgNS = 'http://www.w3.org/2000/svg';\r\n var locationHref = '';\r\n var _useWebWorker = false;\r\n var initialDefaultFrame = -999999;\r\n\r\n var setWebWorker = function setWebWorker(flag) {\r\n _useWebWorker = !!flag;\r\n };\r\n\r\n var getWebWorker = function getWebWorker() {\r\n return _useWebWorker;\r\n };\r\n\r\n var setLocationHref = function setLocationHref(value) {\r\n locationHref = value;\r\n };\r\n\r\n var getLocationHref = function getLocationHref() {\r\n return locationHref;\r\n };\r\n\r\n function createTag(type) {\r\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\r\n return document.createElement(type);\r\n }\r\n\r\n function extendPrototype(sources, destination) {\r\n var i;\r\n var len = sources.length;\r\n var sourcePrototype;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n sourcePrototype = sources[i].prototype;\r\n\r\n for (var attr in sourcePrototype) {\r\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\r\n }\r\n }\r\n }\r\n\r\n function getDescriptor(object, prop) {\r\n return Object.getOwnPropertyDescriptor(object, prop);\r\n }\r\n\r\n function createProxyFunction(prototype) {\r\n function ProxyFunction() {}\r\n\r\n ProxyFunction.prototype = prototype;\r\n return ProxyFunction;\r\n }\r\n\r\n // import Howl from '../../3rd_party/howler';\r\n var audioControllerFactory = function () {\r\n function AudioController(audioFactory) {\r\n this.audios = [];\r\n this.audioFactory = audioFactory;\r\n this._volume = 1;\r\n this._isMuted = false;\r\n }\r\n\r\n AudioController.prototype = {\r\n addAudio: function addAudio(audio) {\r\n this.audios.push(audio);\r\n },\r\n pause: function pause() {\r\n var i;\r\n var len = this.audios.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].pause();\r\n }\r\n },\r\n resume: function resume() {\r\n var i;\r\n var len = this.audios.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].resume();\r\n }\r\n },\r\n setRate: function setRate(rateValue) {\r\n var i;\r\n var len = this.audios.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].setRate(rateValue);\r\n }\r\n },\r\n createAudio: function createAudio(assetPath) {\r\n if (this.audioFactory) {\r\n return this.audioFactory(assetPath);\r\n }\r\n\r\n if (window.Howl) {\r\n return new window.Howl({\r\n src: [assetPath]\r\n });\r\n }\r\n\r\n return {\r\n isPlaying: false,\r\n play: function play() {\r\n this.isPlaying = true;\r\n },\r\n seek: function seek() {\r\n this.isPlaying = false;\r\n },\r\n playing: function playing() {},\r\n rate: function rate() {},\r\n setVolume: function setVolume() {}\r\n };\r\n },\r\n setAudioFactory: function setAudioFactory(audioFactory) {\r\n this.audioFactory = audioFactory;\r\n },\r\n setVolume: function setVolume(value) {\r\n this._volume = value;\r\n\r\n this._updateVolume();\r\n },\r\n mute: function mute() {\r\n this._isMuted = true;\r\n\r\n this._updateVolume();\r\n },\r\n unmute: function unmute() {\r\n this._isMuted = false;\r\n\r\n this._updateVolume();\r\n },\r\n getVolume: function getVolume() {\r\n return this._volume;\r\n },\r\n _updateVolume: function _updateVolume() {\r\n var i;\r\n var len = this.audios.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\r\n }\r\n }\r\n };\r\n return function () {\r\n return new AudioController();\r\n };\r\n }();\r\n\r\n var createTypedArray = function () {\r\n function createRegularArray(type, len) {\r\n var i = 0;\r\n var arr = [];\r\n var value;\r\n\r\n switch (type) {\r\n case 'int16':\r\n case 'uint8c':\r\n value = 1;\r\n break;\r\n\r\n default:\r\n value = 1.1;\r\n break;\r\n }\r\n\r\n for (i = 0; i < len; i += 1) {\r\n arr.push(value);\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n function createTypedArrayFactory(type, len) {\r\n if (type === 'float32') {\r\n return new Float32Array(len);\r\n }\r\n\r\n if (type === 'int16') {\r\n return new Int16Array(len);\r\n }\r\n\r\n if (type === 'uint8c') {\r\n return new Uint8ClampedArray(len);\r\n }\r\n\r\n return createRegularArray(type, len);\r\n }\r\n\r\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\r\n return createTypedArrayFactory;\r\n }\r\n\r\n return createRegularArray;\r\n }();\r\n\r\n function createSizedArray(len) {\r\n return Array.apply(null, {\r\n length: len\r\n });\r\n }\r\n\r\n function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\r\n var subframeEnabled = true;\r\n var expressionsPlugin = null;\r\n var expressionsInterfaces = null;\r\n var idPrefix$1 = '';\r\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\r\n var _shouldRoundValues = false;\r\n var bmPow = Math.pow;\r\n var bmSqrt = Math.sqrt;\r\n var bmFloor = Math.floor;\r\n var bmMax = Math.max;\r\n var bmMin = Math.min;\r\n var BMMath = {};\r\n\r\n (function () {\r\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\r\n var i;\r\n var len = propertyNames.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\r\n }\r\n })();\r\n\r\n function ProjectInterface$1() {\r\n return {};\r\n }\r\n\r\n BMMath.random = Math.random;\r\n\r\n BMMath.abs = function (val) {\r\n var tOfVal = _typeof$6(val);\r\n\r\n if (tOfVal === 'object' && val.length) {\r\n var absArr = createSizedArray(val.length);\r\n var i;\r\n var len = val.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n absArr[i] = Math.abs(val[i]);\r\n }\r\n\r\n return absArr;\r\n }\r\n\r\n return Math.abs(val);\r\n };\r\n\r\n var defaultCurveSegments = 150;\r\n var degToRads = Math.PI / 180;\r\n var roundCorner = 0.5519;\r\n\r\n function roundValues(flag) {\r\n _shouldRoundValues = !!flag;\r\n }\r\n\r\n function bmRnd(value) {\r\n if (_shouldRoundValues) {\r\n return Math.round(value);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n function styleDiv(element) {\r\n element.style.position = 'absolute';\r\n element.style.top = 0;\r\n element.style.left = 0;\r\n element.style.display = 'block';\r\n element.style.transformOrigin = '0 0';\r\n element.style.webkitTransformOrigin = '0 0';\r\n element.style.backfaceVisibility = 'visible';\r\n element.style.webkitBackfaceVisibility = 'visible';\r\n element.style.transformStyle = 'preserve-3d';\r\n element.style.webkitTransformStyle = 'preserve-3d';\r\n element.style.mozTransformStyle = 'preserve-3d';\r\n }\r\n\r\n function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\r\n this.type = type;\r\n this.currentTime = currentTime;\r\n this.totalTime = totalTime;\r\n this.direction = frameMultiplier < 0 ? -1 : 1;\r\n }\r\n\r\n function BMCompleteEvent(type, frameMultiplier) {\r\n this.type = type;\r\n this.direction = frameMultiplier < 0 ? -1 : 1;\r\n }\r\n\r\n function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\r\n this.type = type;\r\n this.currentLoop = currentLoop;\r\n this.totalLoops = totalLoops;\r\n this.direction = frameMultiplier < 0 ? -1 : 1;\r\n }\r\n\r\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\r\n this.type = type;\r\n this.firstFrame = firstFrame;\r\n this.totalFrames = totalFrames;\r\n }\r\n\r\n function BMDestroyEvent(type, target) {\r\n this.type = type;\r\n this.target = target;\r\n }\r\n\r\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\r\n this.type = 'renderFrameError';\r\n this.nativeError = nativeError;\r\n this.currentTime = currentTime;\r\n }\r\n\r\n function BMConfigErrorEvent(nativeError) {\r\n this.type = 'configError';\r\n this.nativeError = nativeError;\r\n }\r\n\r\n function BMAnimationConfigErrorEvent(type, nativeError) {\r\n this.type = type;\r\n this.nativeError = nativeError;\r\n }\r\n\r\n var createElementID = function () {\r\n var _count = 0;\r\n return function createID() {\r\n _count += 1;\r\n return idPrefix$1 + '__lottie_element_' + _count;\r\n };\r\n }();\r\n\r\n function HSVtoRGB(h, s, v) {\r\n var r;\r\n var g;\r\n var b;\r\n var i;\r\n var f;\r\n var p;\r\n var q;\r\n var t;\r\n i = Math.floor(h * 6);\r\n f = h * 6 - i;\r\n p = v * (1 - s);\r\n q = v * (1 - f * s);\r\n t = v * (1 - (1 - f) * s);\r\n\r\n switch (i % 6) {\r\n case 0:\r\n r = v;\r\n g = t;\r\n b = p;\r\n break;\r\n\r\n case 1:\r\n r = q;\r\n g = v;\r\n b = p;\r\n break;\r\n\r\n case 2:\r\n r = p;\r\n g = v;\r\n b = t;\r\n break;\r\n\r\n case 3:\r\n r = p;\r\n g = q;\r\n b = v;\r\n break;\r\n\r\n case 4:\r\n r = t;\r\n g = p;\r\n b = v;\r\n break;\r\n\r\n case 5:\r\n r = v;\r\n g = p;\r\n b = q;\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n return [r, g, b];\r\n }\r\n\r\n function RGBtoHSV(r, g, b) {\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var d = max - min;\r\n var h;\r\n var s = max === 0 ? 0 : d / max;\r\n var v = max / 255;\r\n\r\n switch (max) {\r\n case min:\r\n h = 0;\r\n break;\r\n\r\n case r:\r\n h = g - b + d * (g < b ? 6 : 0);\r\n h /= 6 * d;\r\n break;\r\n\r\n case g:\r\n h = b - r + d * 2;\r\n h /= 6 * d;\r\n break;\r\n\r\n case b:\r\n h = r - g + d * 4;\r\n h /= 6 * d;\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n return [h, s, v];\r\n }\r\n\r\n function addSaturationToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[1] += offset;\r\n\r\n if (hsv[1] > 1) {\r\n hsv[1] = 1;\r\n } else if (hsv[1] <= 0) {\r\n hsv[1] = 0;\r\n }\r\n\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n }\r\n\r\n function addBrightnessToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[2] += offset;\r\n\r\n if (hsv[2] > 1) {\r\n hsv[2] = 1;\r\n } else if (hsv[2] < 0) {\r\n hsv[2] = 0;\r\n }\r\n\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n }\r\n\r\n function addHueToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[0] += offset / 360;\r\n\r\n if (hsv[0] > 1) {\r\n hsv[0] -= 1;\r\n } else if (hsv[0] < 0) {\r\n hsv[0] += 1;\r\n }\r\n\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n }\r\n\r\n var rgbToHex = function () {\r\n var colorMap = [];\r\n var i;\r\n var hex;\r\n\r\n for (i = 0; i < 256; i += 1) {\r\n hex = i.toString(16);\r\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\r\n }\r\n\r\n return function (r, g, b) {\r\n if (r < 0) {\r\n r = 0;\r\n }\r\n\r\n if (g < 0) {\r\n g = 0;\r\n }\r\n\r\n if (b < 0) {\r\n b = 0;\r\n }\r\n\r\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\r\n };\r\n }();\r\n\r\n var setSubframeEnabled = function setSubframeEnabled(flag) {\r\n subframeEnabled = !!flag;\r\n };\r\n\r\n var getSubframeEnabled = function getSubframeEnabled() {\r\n return subframeEnabled;\r\n };\r\n\r\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\r\n expressionsPlugin = value;\r\n };\r\n\r\n var getExpressionsPlugin = function getExpressionsPlugin() {\r\n return expressionsPlugin;\r\n };\r\n\r\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\r\n expressionsInterfaces = value;\r\n };\r\n\r\n var getExpressionInterfaces = function getExpressionInterfaces() {\r\n return expressionsInterfaces;\r\n };\r\n\r\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\r\n defaultCurveSegments = value;\r\n };\r\n\r\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\r\n return defaultCurveSegments;\r\n };\r\n\r\n var setIdPrefix = function setIdPrefix(value) {\r\n idPrefix$1 = value;\r\n };\r\n\r\n var getIdPrefix = function getIdPrefix() {\r\n return idPrefix$1;\r\n };\r\n\r\n function createNS(type) {\r\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\r\n return document.createElementNS(svgNS, type);\r\n }\r\n\r\n function _typeof$5(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\r\n\r\n var dataManager = function () {\r\n var _counterId = 1;\r\n var processes = [];\r\n var workerFn;\r\n var workerInstance;\r\n var workerProxy = {\r\n onmessage: function onmessage() {},\r\n postMessage: function postMessage(path) {\r\n workerFn({\r\n data: path\r\n });\r\n }\r\n };\r\n var _workerSelf = {\r\n postMessage: function postMessage(data) {\r\n workerProxy.onmessage({\r\n data: data\r\n });\r\n }\r\n };\r\n\r\n function createWorker(fn) {\r\n if (window.Worker && window.Blob && getWebWorker()) {\r\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\r\n type: 'text/javascript'\r\n }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\r\n\r\n var url = URL.createObjectURL(blob);\r\n return new Worker(url);\r\n }\r\n\r\n workerFn = fn;\r\n return workerProxy;\r\n }\r\n\r\n function setupWorker() {\r\n if (!workerInstance) {\r\n workerInstance = createWorker(function workerStart(e) {\r\n function dataFunctionManager() {\r\n function completeLayers(layers, comps) {\r\n var layerData;\r\n var i;\r\n var len = layers.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n layerData = layers[i];\r\n\r\n if ('ks' in layerData && !layerData.completed) {\r\n layerData.completed = true;\r\n\r\n if (layerData.hasMask) {\r\n var maskProps = layerData.masksProperties;\r\n jLen = maskProps.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n if (maskProps[j].pt.k.i) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\r\n } else {\r\n kLen = maskProps[j].pt.k.length;\r\n\r\n for (k = 0; k < kLen; k += 1) {\r\n if (maskProps[j].pt.k[k].s) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\r\n }\r\n\r\n if (maskProps[j].pt.k[k].e) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (layerData.ty === 0) {\r\n layerData.layers = findCompLayers(layerData.refId, comps);\r\n completeLayers(layerData.layers, comps);\r\n } else if (layerData.ty === 4) {\r\n completeShapes(layerData.shapes);\r\n } else if (layerData.ty === 5) {\r\n completeText(layerData);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function completeChars(chars, assets) {\r\n if (chars) {\r\n var i = 0;\r\n var len = chars.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (chars[i].t === 1) {\r\n // var compData = findComp(chars[i].data.refId, assets);\r\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\r\n // chars[i].data.op = 99999;\r\n // chars[i].data.st = 0;\r\n // chars[i].data.sr = 1;\r\n // chars[i].w = compData.w;\r\n // chars[i].data.ks = {\r\n // a: { k: [0, 0, 0], a: 0 },\r\n // p: { k: [0, -compData.h, 0], a: 0 },\r\n // r: { k: 0, a: 0 },\r\n // s: { k: [100, 100], a: 0 },\r\n // o: { k: 100, a: 0 },\r\n // };\r\n\r\n completeLayers(chars[i].data.layers, assets);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function findComp(id, comps) {\r\n var i = 0;\r\n var len = comps.length;\r\n\r\n while (i < len) {\r\n if (comps[i].id === id) {\r\n return comps[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function findCompLayers(id, comps) {\r\n var comp = findComp(id, comps);\r\n\r\n if (comp) {\r\n if (!comp.layers.__used) {\r\n comp.layers.__used = true;\r\n return comp.layers;\r\n }\r\n\r\n return JSON.parse(JSON.stringify(comp.layers));\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function completeShapes(arr) {\r\n var i;\r\n var len = arr.length;\r\n var j;\r\n var jLen;\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (arr[i].ty === 'sh') {\r\n if (arr[i].ks.k.i) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k);\r\n } else {\r\n jLen = arr[i].ks.k.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n if (arr[i].ks.k[j].s) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\r\n }\r\n\r\n if (arr[i].ks.k[j].e) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\r\n }\r\n }\r\n }\r\n } else if (arr[i].ty === 'gr') {\r\n completeShapes(arr[i].it);\r\n }\r\n }\r\n }\r\n\r\n function convertPathsToAbsoluteValues(path) {\r\n var i;\r\n var len = path.i.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n path.i[i][0] += path.v[i][0];\r\n path.i[i][1] += path.v[i][1];\r\n path.o[i][0] += path.v[i][0];\r\n path.o[i][1] += path.v[i][1];\r\n }\r\n }\r\n\r\n function checkVersion(minimum, animVersionString) {\r\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\r\n\r\n if (minimum[0] > animVersion[0]) {\r\n return true;\r\n }\r\n\r\n if (animVersion[0] > minimum[0]) {\r\n return false;\r\n }\r\n\r\n if (minimum[1] > animVersion[1]) {\r\n return true;\r\n }\r\n\r\n if (animVersion[1] > minimum[1]) {\r\n return false;\r\n }\r\n\r\n if (minimum[2] > animVersion[2]) {\r\n return true;\r\n }\r\n\r\n if (animVersion[2] > minimum[2]) {\r\n return false;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var checkText = function () {\r\n var minimumVersion = [4, 4, 14];\r\n\r\n function updateTextLayer(textLayer) {\r\n var documentData = textLayer.t.d;\r\n textLayer.t.d = {\r\n k: [{\r\n s: documentData,\r\n t: 0\r\n }]\r\n };\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var i;\r\n var len = layers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (layers[i].ty === 5) {\r\n updateTextLayer(layers[i]);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }();\r\n\r\n var checkChars = function () {\r\n var minimumVersion = [4, 7, 99];\r\n return function (animationData) {\r\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\r\n var i;\r\n var len = animationData.chars.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n var charData = animationData.chars[i];\r\n\r\n if (charData.data && charData.data.shapes) {\r\n completeShapes(charData.data.shapes);\r\n charData.data.ip = 0;\r\n charData.data.op = 99999;\r\n charData.data.st = 0;\r\n charData.data.sr = 1;\r\n charData.data.ks = {\r\n p: {\r\n k: [0, 0],\r\n a: 0\r\n },\r\n s: {\r\n k: [100, 100],\r\n a: 0\r\n },\r\n a: {\r\n k: [0, 0],\r\n a: 0\r\n },\r\n r: {\r\n k: 0,\r\n a: 0\r\n },\r\n o: {\r\n k: 100,\r\n a: 0\r\n }\r\n };\r\n\r\n if (!animationData.chars[i].t) {\r\n charData.data.shapes.push({\r\n ty: 'no'\r\n });\r\n charData.data.shapes[0].it.push({\r\n p: {\r\n k: [0, 0],\r\n a: 0\r\n },\r\n s: {\r\n k: [100, 100],\r\n a: 0\r\n },\r\n a: {\r\n k: [0, 0],\r\n a: 0\r\n },\r\n r: {\r\n k: 0,\r\n a: 0\r\n },\r\n o: {\r\n k: 100,\r\n a: 0\r\n },\r\n sk: {\r\n k: 0,\r\n a: 0\r\n },\r\n sa: {\r\n k: 0,\r\n a: 0\r\n },\r\n ty: 'tr'\r\n });\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }();\r\n\r\n var checkPathProperties = function () {\r\n var minimumVersion = [5, 7, 15];\r\n\r\n function updateTextLayer(textLayer) {\r\n var pathData = textLayer.t.p;\r\n\r\n if (typeof pathData.a === 'number') {\r\n pathData.a = {\r\n a: 0,\r\n k: pathData.a\r\n };\r\n }\r\n\r\n if (typeof pathData.p === 'number') {\r\n pathData.p = {\r\n a: 0,\r\n k: pathData.p\r\n };\r\n }\r\n\r\n if (typeof pathData.r === 'number') {\r\n pathData.r = {\r\n a: 0,\r\n k: pathData.r\r\n };\r\n }\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var i;\r\n var len = layers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (layers[i].ty === 5) {\r\n updateTextLayer(layers[i]);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }();\r\n\r\n var checkColors = function () {\r\n var minimumVersion = [4, 1, 9];\r\n\r\n function iterateShapes(shapes) {\r\n var i;\r\n var len = shapes.length;\r\n var j;\r\n var jLen;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (shapes[i].ty === 'gr') {\r\n iterateShapes(shapes[i].it);\r\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\r\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\r\n jLen = shapes[i].c.k.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n if (shapes[i].c.k[j].s) {\r\n shapes[i].c.k[j].s[0] /= 255;\r\n shapes[i].c.k[j].s[1] /= 255;\r\n shapes[i].c.k[j].s[2] /= 255;\r\n shapes[i].c.k[j].s[3] /= 255;\r\n }\r\n\r\n if (shapes[i].c.k[j].e) {\r\n shapes[i].c.k[j].e[0] /= 255;\r\n shapes[i].c.k[j].e[1] /= 255;\r\n shapes[i].c.k[j].e[2] /= 255;\r\n shapes[i].c.k[j].e[3] /= 255;\r\n }\r\n }\r\n } else {\r\n shapes[i].c.k[0] /= 255;\r\n shapes[i].c.k[1] /= 255;\r\n shapes[i].c.k[2] /= 255;\r\n shapes[i].c.k[3] /= 255;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var i;\r\n var len = layers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (layers[i].ty === 4) {\r\n iterateShapes(layers[i].shapes);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }();\r\n\r\n var checkShapes = function () {\r\n var minimumVersion = [4, 4, 18];\r\n\r\n function completeClosingShapes(arr) {\r\n var i;\r\n var len = arr.length;\r\n var j;\r\n var jLen;\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (arr[i].ty === 'sh') {\r\n if (arr[i].ks.k.i) {\r\n arr[i].ks.k.c = arr[i].closed;\r\n } else {\r\n jLen = arr[i].ks.k.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n if (arr[i].ks.k[j].s) {\r\n arr[i].ks.k[j].s[0].c = arr[i].closed;\r\n }\r\n\r\n if (arr[i].ks.k[j].e) {\r\n arr[i].ks.k[j].e[0].c = arr[i].closed;\r\n }\r\n }\r\n }\r\n } else if (arr[i].ty === 'gr') {\r\n completeClosingShapes(arr[i].it);\r\n }\r\n }\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var layerData;\r\n var i;\r\n var len = layers.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n layerData = layers[i];\r\n\r\n if (layerData.hasMask) {\r\n var maskProps = layerData.masksProperties;\r\n jLen = maskProps.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n if (maskProps[j].pt.k.i) {\r\n maskProps[j].pt.k.c = maskProps[j].cl;\r\n } else {\r\n kLen = maskProps[j].pt.k.length;\r\n\r\n for (k = 0; k < kLen; k += 1) {\r\n if (maskProps[j].pt.k[k].s) {\r\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\r\n }\r\n\r\n if (maskProps[j].pt.k[k].e) {\r\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (layerData.ty === 4) {\r\n completeClosingShapes(layerData.shapes);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }();\r\n\r\n function completeData(animationData) {\r\n if (animationData.__complete) {\r\n return;\r\n }\r\n\r\n checkColors(animationData);\r\n checkText(animationData);\r\n checkChars(animationData);\r\n checkPathProperties(animationData);\r\n checkShapes(animationData);\r\n completeLayers(animationData.layers, animationData.assets);\r\n completeChars(animationData.chars, animationData.assets);\r\n animationData.__complete = true;\r\n }\r\n\r\n function completeText(data) {\r\n if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\r\n }\r\n }\r\n\r\n var moduleOb = {};\r\n moduleOb.completeData = completeData;\r\n moduleOb.checkColors = checkColors;\r\n moduleOb.checkChars = checkChars;\r\n moduleOb.checkPathProperties = checkPathProperties;\r\n moduleOb.checkShapes = checkShapes;\r\n moduleOb.completeLayers = completeLayers;\r\n return moduleOb;\r\n }\r\n\r\n if (!_workerSelf.dataManager) {\r\n _workerSelf.dataManager = dataFunctionManager();\r\n }\r\n\r\n if (!_workerSelf.assetLoader) {\r\n _workerSelf.assetLoader = function () {\r\n function formatResponse(xhr) {\r\n // using typeof doubles the time of execution of this method,\r\n // so if available, it's better to use the header to validate the type\r\n var contentTypeHeader = xhr.getResponseHeader('content-type');\r\n\r\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\r\n return xhr.response;\r\n }\r\n\r\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\r\n return xhr.response;\r\n }\r\n\r\n if (xhr.response && typeof xhr.response === 'string') {\r\n return JSON.parse(xhr.response);\r\n }\r\n\r\n if (xhr.responseText) {\r\n return JSON.parse(xhr.responseText);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function loadAsset(path, fullPath, callback, errorCallback) {\r\n var response;\r\n var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\r\n\r\n try {\r\n // This crashes on Android WebView prior to KitKat\r\n xhr.responseType = 'json';\r\n } catch (err) {} // eslint-disable-line no-empty\r\n\r\n\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status === 200) {\r\n response = formatResponse(xhr);\r\n callback(response);\r\n } else {\r\n try {\r\n response = formatResponse(xhr);\r\n callback(response);\r\n } catch (err) {\r\n if (errorCallback) {\r\n errorCallback(err);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n try {\r\n // Hack to workaround banner validation\r\n xhr.open(['G', 'E', 'T'].join(''), path, true);\r\n } catch (error) {\r\n // Hack to workaround banner validation\r\n xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\r\n }\r\n\r\n xhr.send();\r\n }\r\n\r\n return {\r\n load: loadAsset\r\n };\r\n }();\r\n }\r\n\r\n if (e.data.type === 'loadAnimation') {\r\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\r\n _workerSelf.dataManager.completeData(data);\r\n\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n payload: data,\r\n status: 'success'\r\n });\r\n }, function () {\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n status: 'error'\r\n });\r\n });\r\n } else if (e.data.type === 'complete') {\r\n var animation = e.data.animation;\r\n\r\n _workerSelf.dataManager.completeData(animation);\r\n\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n payload: animation,\r\n status: 'success'\r\n });\r\n } else if (e.data.type === 'loadData') {\r\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n payload: data,\r\n status: 'success'\r\n });\r\n }, function () {\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n status: 'error'\r\n });\r\n });\r\n }\r\n });\r\n\r\n workerInstance.onmessage = function (event) {\r\n var data = event.data;\r\n var id = data.id;\r\n var process = processes[id];\r\n processes[id] = null;\r\n\r\n if (data.status === 'success') {\r\n process.onComplete(data.payload);\r\n } else if (process.onError) {\r\n process.onError();\r\n }\r\n };\r\n }\r\n }\r\n\r\n function createProcess(onComplete, onError) {\r\n _counterId += 1;\r\n var id = 'processId_' + _counterId;\r\n processes[id] = {\r\n onComplete: onComplete,\r\n onError: onError\r\n };\r\n return id;\r\n }\r\n\r\n function loadAnimation(path, onComplete, onError) {\r\n setupWorker();\r\n var processId = createProcess(onComplete, onError);\r\n workerInstance.postMessage({\r\n type: 'loadAnimation',\r\n path: path,\r\n fullPath: window.location.origin + window.location.pathname,\r\n id: processId\r\n });\r\n }\r\n\r\n function loadData(path, onComplete, onError) {\r\n setupWorker();\r\n var processId = createProcess(onComplete, onError);\r\n workerInstance.postMessage({\r\n type: 'loadData',\r\n path: path,\r\n fullPath: window.location.origin + window.location.pathname,\r\n id: processId\r\n });\r\n }\r\n\r\n function completeAnimation(anim, onComplete, onError) {\r\n setupWorker();\r\n var processId = createProcess(onComplete, onError);\r\n workerInstance.postMessage({\r\n type: 'complete',\r\n animation: anim,\r\n id: processId\r\n });\r\n }\r\n\r\n return {\r\n loadAnimation: loadAnimation,\r\n loadData: loadData,\r\n completeAnimation: completeAnimation\r\n };\r\n }();\r\n\r\n var ImagePreloader = function () {\r\n var proxyImage = function () {\r\n var canvas = createTag('canvas');\r\n canvas.width = 1;\r\n canvas.height = 1;\r\n var ctx = canvas.getContext('2d');\r\n ctx.fillStyle = 'rgba(0,0,0,0)';\r\n ctx.fillRect(0, 0, 1, 1);\r\n return canvas;\r\n }();\r\n\r\n function imageLoaded() {\r\n this.loadedAssets += 1;\r\n\r\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\r\n if (this.imagesLoadedCb) {\r\n this.imagesLoadedCb(null);\r\n }\r\n }\r\n }\r\n\r\n function footageLoaded() {\r\n this.loadedFootagesCount += 1;\r\n\r\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\r\n if (this.imagesLoadedCb) {\r\n this.imagesLoadedCb(null);\r\n }\r\n }\r\n }\r\n\r\n function getAssetsPath(assetData, assetsPath, originalPath) {\r\n var path = '';\r\n\r\n if (assetData.e) {\r\n path = assetData.p;\r\n } else if (assetsPath) {\r\n var imagePath = assetData.p;\r\n\r\n if (imagePath.indexOf('images/') !== -1) {\r\n imagePath = imagePath.split('/')[1];\r\n }\r\n\r\n path = assetsPath + imagePath;\r\n } else {\r\n path = originalPath;\r\n path += assetData.u ? assetData.u : '';\r\n path += assetData.p;\r\n }\r\n\r\n return path;\r\n }\r\n\r\n function testImageLoaded(img) {\r\n var _count = 0;\r\n var intervalId = setInterval(function () {\r\n var box = img.getBBox();\r\n\r\n if (box.width || _count > 500) {\r\n this._imageLoaded();\r\n\r\n clearInterval(intervalId);\r\n }\r\n\r\n _count += 1;\r\n }.bind(this), 50);\r\n }\r\n\r\n function createImageData(assetData) {\r\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\r\n var img = createNS('image');\r\n\r\n if (isSafari) {\r\n this.testImageLoaded(img);\r\n } else {\r\n img.addEventListener('load', this._imageLoaded, false);\r\n }\r\n\r\n img.addEventListener('error', function () {\r\n ob.img = proxyImage;\r\n\r\n this._imageLoaded();\r\n }.bind(this), false);\r\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\r\n\r\n if (this._elementHelper.append) {\r\n this._elementHelper.append(img);\r\n } else {\r\n this._elementHelper.appendChild(img);\r\n }\r\n\r\n var ob = {\r\n img: img,\r\n assetData: assetData\r\n };\r\n return ob;\r\n }\r\n\r\n function createImgData(assetData) {\r\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\r\n var img = createTag('img');\r\n img.crossOrigin = 'anonymous';\r\n img.addEventListener('load', this._imageLoaded, false);\r\n img.addEventListener('error', function () {\r\n ob.img = proxyImage;\r\n\r\n this._imageLoaded();\r\n }.bind(this), false);\r\n img.src = path;\r\n var ob = {\r\n img: img,\r\n assetData: assetData\r\n };\r\n return ob;\r\n }\r\n\r\n function createFootageData(data) {\r\n var ob = {\r\n assetData: data\r\n };\r\n var path = getAssetsPath(data, this.assetsPath, this.path);\r\n dataManager.loadData(path, function (footageData) {\r\n ob.img = footageData;\r\n\r\n this._footageLoaded();\r\n }.bind(this), function () {\r\n ob.img = {};\r\n\r\n this._footageLoaded();\r\n }.bind(this));\r\n return ob;\r\n }\r\n\r\n function loadAssets(assets, cb) {\r\n this.imagesLoadedCb = cb;\r\n var i;\r\n var len = assets.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (!assets[i].layers) {\r\n if (!assets[i].t || assets[i].t === 'seq') {\r\n this.totalImages += 1;\r\n this.images.push(this._createImageData(assets[i]));\r\n } else if (assets[i].t === 3) {\r\n this.totalFootages += 1;\r\n this.images.push(this.createFootageData(assets[i]));\r\n }\r\n }\r\n }\r\n }\r\n\r\n function setPath(path) {\r\n this.path = path || '';\r\n }\r\n\r\n function setAssetsPath(path) {\r\n this.assetsPath = path || '';\r\n }\r\n\r\n function getAsset(assetData) {\r\n var i = 0;\r\n var len = this.images.length;\r\n\r\n while (i < len) {\r\n if (this.images[i].assetData === assetData) {\r\n return this.images[i].img;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function destroy() {\r\n this.imagesLoadedCb = null;\r\n this.images.length = 0;\r\n }\r\n\r\n function loadedImages() {\r\n return this.totalImages === this.loadedAssets;\r\n }\r\n\r\n function loadedFootages() {\r\n return this.totalFootages === this.loadedFootagesCount;\r\n }\r\n\r\n function setCacheType(type, elementHelper) {\r\n if (type === 'svg') {\r\n this._elementHelper = elementHelper;\r\n this._createImageData = this.createImageData.bind(this);\r\n } else {\r\n this._createImageData = this.createImgData.bind(this);\r\n }\r\n }\r\n\r\n function ImagePreloaderFactory() {\r\n this._imageLoaded = imageLoaded.bind(this);\r\n this._footageLoaded = footageLoaded.bind(this);\r\n this.testImageLoaded = testImageLoaded.bind(this);\r\n this.createFootageData = createFootageData.bind(this);\r\n this.assetsPath = '';\r\n this.path = '';\r\n this.totalImages = 0;\r\n this.totalFootages = 0;\r\n this.loadedAssets = 0;\r\n this.loadedFootagesCount = 0;\r\n this.imagesLoadedCb = null;\r\n this.images = [];\r\n }\r\n\r\n ImagePreloaderFactory.prototype = {\r\n loadAssets: loadAssets,\r\n setAssetsPath: setAssetsPath,\r\n setPath: setPath,\r\n loadedImages: loadedImages,\r\n loadedFootages: loadedFootages,\r\n destroy: destroy,\r\n getAsset: getAsset,\r\n createImgData: createImgData,\r\n createImageData: createImageData,\r\n imageLoaded: imageLoaded,\r\n footageLoaded: footageLoaded,\r\n setCacheType: setCacheType\r\n };\r\n return ImagePreloaderFactory;\r\n }();\r\n\r\n function BaseEvent() {}\r\n\r\n BaseEvent.prototype = {\r\n triggerEvent: function triggerEvent(eventName, args) {\r\n if (this._cbs[eventName]) {\r\n var callbacks = this._cbs[eventName];\r\n\r\n for (var i = 0; i < callbacks.length; i += 1) {\r\n callbacks[i](args);\r\n }\r\n }\r\n },\r\n addEventListener: function addEventListener(eventName, callback) {\r\n if (!this._cbs[eventName]) {\r\n this._cbs[eventName] = [];\r\n }\r\n\r\n this._cbs[eventName].push(callback);\r\n\r\n return function () {\r\n this.removeEventListener(eventName, callback);\r\n }.bind(this);\r\n },\r\n removeEventListener: function removeEventListener(eventName, callback) {\r\n if (!callback) {\r\n this._cbs[eventName] = null;\r\n } else if (this._cbs[eventName]) {\r\n var i = 0;\r\n var len = this._cbs[eventName].length;\r\n\r\n while (i < len) {\r\n if (this._cbs[eventName][i] === callback) {\r\n this._cbs[eventName].splice(i, 1);\r\n\r\n i -= 1;\r\n len -= 1;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n if (!this._cbs[eventName].length) {\r\n this._cbs[eventName] = null;\r\n }\r\n }\r\n }\r\n };\r\n\r\n var markerParser = function () {\r\n function parsePayloadLines(payload) {\r\n var lines = payload.split('\\r\\n');\r\n var keys = {};\r\n var line;\r\n var keysCount = 0;\r\n\r\n for (var i = 0; i < lines.length; i += 1) {\r\n line = lines[i].split(':');\r\n\r\n if (line.length === 2) {\r\n keys[line[0]] = line[1].trim();\r\n keysCount += 1;\r\n }\r\n }\r\n\r\n if (keysCount === 0) {\r\n throw new Error();\r\n }\r\n\r\n return keys;\r\n }\r\n\r\n return function (_markers) {\r\n var markers = [];\r\n\r\n for (var i = 0; i < _markers.length; i += 1) {\r\n var _marker = _markers[i];\r\n var markerData = {\r\n time: _marker.tm,\r\n duration: _marker.dr\r\n };\r\n\r\n try {\r\n markerData.payload = JSON.parse(_markers[i].cm);\r\n } catch (_) {\r\n try {\r\n markerData.payload = parsePayloadLines(_markers[i].cm);\r\n } catch (__) {\r\n markerData.payload = {\r\n name: _markers[i].cm\r\n };\r\n }\r\n }\r\n\r\n markers.push(markerData);\r\n }\r\n\r\n return markers;\r\n };\r\n }();\r\n\r\n var ProjectInterface = function () {\r\n function registerComposition(comp) {\r\n this.compositions.push(comp);\r\n }\r\n\r\n return function () {\r\n function _thisProjectFunction(name) {\r\n var i = 0;\r\n var len = this.compositions.length;\r\n\r\n while (i < len) {\r\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\r\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\r\n this.compositions[i].prepareFrame(this.currentFrame);\r\n }\r\n\r\n return this.compositions[i].compInterface;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n _thisProjectFunction.compositions = [];\r\n _thisProjectFunction.currentFrame = 0;\r\n _thisProjectFunction.registerComposition = registerComposition;\r\n return _thisProjectFunction;\r\n };\r\n }();\r\n\r\n var renderers = {};\r\n\r\n var registerRenderer = function registerRenderer(key, value) {\r\n renderers[key] = value;\r\n };\r\n\r\n function getRenderer(key) {\r\n return renderers[key];\r\n }\r\n\r\n function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\r\n\r\n var AnimationItem = function AnimationItem() {\r\n this._cbs = [];\r\n this.name = '';\r\n this.path = '';\r\n this.isLoaded = false;\r\n this.currentFrame = 0;\r\n this.currentRawFrame = 0;\r\n this.firstFrame = 0;\r\n this.totalFrames = 0;\r\n this.frameRate = 0;\r\n this.frameMult = 0;\r\n this.playSpeed = 1;\r\n this.playDirection = 1;\r\n this.playCount = 0;\r\n this.animationData = {};\r\n this.assets = [];\r\n this.isPaused = true;\r\n this.autoplay = false;\r\n this.loop = true;\r\n this.renderer = null;\r\n this.animationID = createElementID();\r\n this.assetsPath = '';\r\n this.timeCompleted = 0;\r\n this.segmentPos = 0;\r\n this.isSubframeEnabled = getSubframeEnabled();\r\n this.segments = [];\r\n this._idle = true;\r\n this._completedLoop = false;\r\n this.projectInterface = ProjectInterface();\r\n this.imagePreloader = new ImagePreloader();\r\n this.audioController = audioControllerFactory();\r\n this.markers = [];\r\n this.configAnimation = this.configAnimation.bind(this);\r\n this.onSetupError = this.onSetupError.bind(this);\r\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\r\n this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\r\n };\r\n\r\n extendPrototype([BaseEvent], AnimationItem);\r\n\r\n AnimationItem.prototype.setParams = function (params) {\r\n if (params.wrapper || params.container) {\r\n this.wrapper = params.wrapper || params.container;\r\n }\r\n\r\n var animType = 'svg';\r\n\r\n if (params.animType) {\r\n animType = params.animType;\r\n } else if (params.renderer) {\r\n animType = params.renderer;\r\n }\r\n\r\n var RendererClass = getRenderer(animType);\r\n this.renderer = new RendererClass(this, params.rendererSettings);\r\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\r\n this.renderer.setProjectInterface(this.projectInterface);\r\n this.animType = animType;\r\n\r\n if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\r\n this.loop = true;\r\n } else if (params.loop === false) {\r\n this.loop = false;\r\n } else {\r\n this.loop = parseInt(params.loop, 10);\r\n }\r\n\r\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\r\n this.name = params.name ? params.name : '';\r\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\r\n this.assetsPath = params.assetsPath;\r\n this.initialSegment = params.initialSegment;\r\n\r\n if (params.audioFactory) {\r\n this.audioController.setAudioFactory(params.audioFactory);\r\n }\r\n\r\n if (params.animationData) {\r\n this.setupAnimation(params.animationData);\r\n } else if (params.path) {\r\n if (params.path.lastIndexOf('\\\\') !== -1) {\r\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\r\n } else {\r\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\r\n }\r\n\r\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\r\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\r\n dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\r\n }\r\n };\r\n\r\n AnimationItem.prototype.onSetupError = function () {\r\n this.trigger('data_failed');\r\n };\r\n\r\n AnimationItem.prototype.setupAnimation = function (data) {\r\n dataManager.completeAnimation(data, this.configAnimation);\r\n };\r\n\r\n AnimationItem.prototype.setData = function (wrapper, animationData) {\r\n if (animationData) {\r\n if (_typeof$4(animationData) !== 'object') {\r\n animationData = JSON.parse(animationData);\r\n }\r\n }\r\n\r\n var params = {\r\n wrapper: wrapper,\r\n animationData: animationData\r\n };\r\n var wrapperAttributes = wrapper.attributes;\r\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\r\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : 'canvas';\r\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\r\n\r\n if (loop === 'false') {\r\n params.loop = false;\r\n } else if (loop === 'true') {\r\n params.loop = true;\r\n } else if (loop !== '') {\r\n params.loop = parseInt(loop, 10);\r\n }\r\n\r\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\r\n params.autoplay = autoplay !== 'false';\r\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\r\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\r\n\r\n if (prerender === 'false') {\r\n params.prerender = false;\r\n }\r\n\r\n this.setParams(params);\r\n };\r\n\r\n AnimationItem.prototype.includeLayers = function (data) {\r\n if (data.op > this.animationData.op) {\r\n this.animationData.op = data.op;\r\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\r\n }\r\n\r\n var layers = this.animationData.layers;\r\n var i;\r\n var len = layers.length;\r\n var newLayers = data.layers;\r\n var j;\r\n var jLen = newLayers.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n i = 0;\r\n\r\n while (i < len) {\r\n if (layers[i].id === newLayers[j].id) {\r\n layers[i] = newLayers[j];\r\n break;\r\n }\r\n\r\n i += 1;\r\n }\r\n }\r\n\r\n if (data.chars || data.fonts) {\r\n this.renderer.globalData.fontManager.addChars(data.chars);\r\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\r\n }\r\n\r\n if (data.assets) {\r\n len = data.assets.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.animationData.assets.push(data.assets[i]);\r\n }\r\n }\r\n\r\n this.animationData.__complete = false;\r\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\r\n };\r\n\r\n AnimationItem.prototype.onSegmentComplete = function (data) {\r\n this.animationData = data;\r\n var expressionsPlugin = getExpressionsPlugin();\r\n\r\n if (expressionsPlugin) {\r\n expressionsPlugin.initExpressions(this);\r\n }\r\n\r\n this.loadNextSegment();\r\n };\r\n\r\n AnimationItem.prototype.loadNextSegment = function () {\r\n var segments = this.animationData.segments;\r\n\r\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\r\n this.trigger('data_ready');\r\n this.timeCompleted = this.totalFrames;\r\n return;\r\n }\r\n\r\n var segment = segments.shift();\r\n this.timeCompleted = segment.time * this.frameRate;\r\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\r\n this.segmentPos += 1;\r\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\r\n this.trigger('data_failed');\r\n }.bind(this));\r\n };\r\n\r\n AnimationItem.prototype.loadSegments = function () {\r\n var segments = this.animationData.segments;\r\n\r\n if (!segments) {\r\n this.timeCompleted = this.totalFrames;\r\n }\r\n\r\n this.loadNextSegment();\r\n };\r\n\r\n AnimationItem.prototype.imagesLoaded = function () {\r\n this.trigger('loaded_images');\r\n this.checkLoaded();\r\n };\r\n\r\n AnimationItem.prototype.preloadImages = function () {\r\n this.imagePreloader.setAssetsPath(this.assetsPath);\r\n this.imagePreloader.setPath(this.path);\r\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\r\n };\r\n\r\n AnimationItem.prototype.configAnimation = function (animData) {\r\n if (!this.renderer) {\r\n return;\r\n }\r\n\r\n try {\r\n this.animationData = animData;\r\n\r\n if (this.initialSegment) {\r\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\r\n this.firstFrame = Math.round(this.initialSegment[0]);\r\n } else {\r\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\r\n this.firstFrame = Math.round(this.animationData.ip);\r\n }\r\n\r\n this.renderer.configAnimation(animData);\r\n\r\n if (!animData.assets) {\r\n animData.assets = [];\r\n }\r\n\r\n this.assets = this.animationData.assets;\r\n this.frameRate = this.animationData.fr;\r\n this.frameMult = this.animationData.fr / 1000;\r\n this.renderer.searchExtraCompositions(animData.assets);\r\n this.markers = markerParser(animData.markers || []);\r\n this.trigger('config_ready');\r\n this.preloadImages();\r\n this.loadSegments();\r\n this.updaFrameModifier();\r\n this.waitForFontsLoaded();\r\n\r\n if (this.isPaused) {\r\n this.audioController.pause();\r\n }\r\n } catch (error) {\r\n this.triggerConfigError(error);\r\n }\r\n };\r\n\r\n AnimationItem.prototype.waitForFontsLoaded = function () {\r\n if (!this.renderer) {\r\n return;\r\n }\r\n\r\n if (this.renderer.globalData.fontManager.isLoaded) {\r\n this.checkLoaded();\r\n } else {\r\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\r\n }\r\n };\r\n\r\n AnimationItem.prototype.checkLoaded = function () {\r\n if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\r\n this.isLoaded = true;\r\n var expressionsPlugin = getExpressionsPlugin();\r\n\r\n if (expressionsPlugin) {\r\n expressionsPlugin.initExpressions(this);\r\n }\r\n\r\n this.renderer.initItems();\r\n setTimeout(function () {\r\n this.trigger('DOMLoaded');\r\n }.bind(this), 0);\r\n this.gotoFrame();\r\n\r\n if (this.autoplay) {\r\n this.play();\r\n }\r\n }\r\n };\r\n\r\n AnimationItem.prototype.resize = function (width, height) {\r\n // Adding this validation for backwards compatibility in case an event object was being passed down\r\n var _width = typeof width === 'number' ? width : undefined;\r\n\r\n var _height = typeof height === 'number' ? height : undefined;\r\n\r\n this.renderer.updateContainerSize(_width, _height);\r\n };\r\n\r\n AnimationItem.prototype.setSubframe = function (flag) {\r\n this.isSubframeEnabled = !!flag;\r\n };\r\n\r\n AnimationItem.prototype.gotoFrame = function () {\r\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\r\n\r\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\r\n this.currentFrame = this.timeCompleted;\r\n }\r\n\r\n this.trigger('enterFrame');\r\n this.renderFrame();\r\n this.trigger('drawnFrame');\r\n };\r\n\r\n AnimationItem.prototype.renderFrame = function () {\r\n if (this.isLoaded === false || !this.renderer) {\r\n return;\r\n }\r\n\r\n try {\r\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\r\n } catch (error) {\r\n this.triggerRenderFrameError(error);\r\n }\r\n };\r\n\r\n AnimationItem.prototype.play = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n if (this.isPaused === true) {\r\n this.isPaused = false;\r\n this.trigger('_pause');\r\n this.audioController.resume();\r\n\r\n if (this._idle) {\r\n this._idle = false;\r\n this.trigger('_active');\r\n }\r\n }\r\n };\r\n\r\n AnimationItem.prototype.pause = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n if (this.isPaused === false) {\r\n this.isPaused = true;\r\n this.trigger('_play');\r\n this._idle = true;\r\n this.trigger('_idle');\r\n this.audioController.pause();\r\n }\r\n };\r\n\r\n AnimationItem.prototype.togglePause = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n if (this.isPaused === true) {\r\n this.play();\r\n } else {\r\n this.pause();\r\n }\r\n };\r\n\r\n AnimationItem.prototype.stop = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n this.pause();\r\n this.playCount = 0;\r\n this._completedLoop = false;\r\n this.setCurrentRawFrameValue(0);\r\n };\r\n\r\n AnimationItem.prototype.getMarkerData = function (markerName) {\r\n var marker;\r\n\r\n for (var i = 0; i < this.markers.length; i += 1) {\r\n marker = this.markers[i];\r\n\r\n if (marker.payload && marker.payload.name === markerName) {\r\n return marker;\r\n }\r\n }\r\n\r\n return null;\r\n };\r\n\r\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n var numValue = Number(value);\r\n\r\n if (isNaN(numValue)) {\r\n var marker = this.getMarkerData(value);\r\n\r\n if (marker) {\r\n this.goToAndStop(marker.time, true);\r\n }\r\n } else if (isFrame) {\r\n this.setCurrentRawFrameValue(value);\r\n } else {\r\n this.setCurrentRawFrameValue(value * this.frameModifier);\r\n }\r\n\r\n this.pause();\r\n };\r\n\r\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n var numValue = Number(value);\r\n\r\n if (isNaN(numValue)) {\r\n var marker = this.getMarkerData(value);\r\n\r\n if (marker) {\r\n if (!marker.duration) {\r\n this.goToAndStop(marker.time, true);\r\n } else {\r\n this.playSegments([marker.time, marker.time + marker.duration], true);\r\n }\r\n }\r\n } else {\r\n this.goToAndStop(numValue, isFrame, name);\r\n }\r\n\r\n this.play();\r\n };\r\n\r\n AnimationItem.prototype.advanceTime = function (value) {\r\n if (this.isPaused === true || this.isLoaded === false) {\r\n return;\r\n }\r\n\r\n var nextValue = this.currentRawFrame + value * this.frameModifier;\r\n var _isComplete = false; // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\r\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\r\n\r\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\r\n if (!this.loop || this.playCount === this.loop) {\r\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\r\n _isComplete = true;\r\n nextValue = this.totalFrames - 1;\r\n }\r\n } else if (nextValue >= this.totalFrames) {\r\n this.playCount += 1;\r\n\r\n if (!this.checkSegments(nextValue % this.totalFrames)) {\r\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\r\n this._completedLoop = true;\r\n this.trigger('loopComplete');\r\n }\r\n } else {\r\n this.setCurrentRawFrameValue(nextValue);\r\n }\r\n } else if (nextValue < 0) {\r\n if (!this.checkSegments(nextValue % this.totalFrames)) {\r\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\r\n // eslint-disable-line no-plusplus\r\n this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\r\n\r\n if (!this._completedLoop) {\r\n this._completedLoop = true;\r\n } else {\r\n this.trigger('loopComplete');\r\n }\r\n } else {\r\n _isComplete = true;\r\n nextValue = 0;\r\n }\r\n }\r\n } else {\r\n this.setCurrentRawFrameValue(nextValue);\r\n }\r\n\r\n if (_isComplete) {\r\n this.setCurrentRawFrameValue(nextValue);\r\n this.pause();\r\n this.trigger('complete');\r\n }\r\n };\r\n\r\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\r\n this.playCount = 0;\r\n\r\n if (arr[1] < arr[0]) {\r\n if (this.frameModifier > 0) {\r\n if (this.playSpeed < 0) {\r\n this.setSpeed(-this.playSpeed);\r\n } else {\r\n this.setDirection(-1);\r\n }\r\n }\r\n\r\n this.totalFrames = arr[0] - arr[1];\r\n this.timeCompleted = this.totalFrames;\r\n this.firstFrame = arr[1];\r\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\r\n } else if (arr[1] > arr[0]) {\r\n if (this.frameModifier < 0) {\r\n if (this.playSpeed < 0) {\r\n this.setSpeed(-this.playSpeed);\r\n } else {\r\n this.setDirection(1);\r\n }\r\n }\r\n\r\n this.totalFrames = arr[1] - arr[0];\r\n this.timeCompleted = this.totalFrames;\r\n this.firstFrame = arr[0];\r\n this.setCurrentRawFrameValue(0.001 + offset);\r\n }\r\n\r\n this.trigger('segmentStart');\r\n };\r\n\r\n AnimationItem.prototype.setSegment = function (init, end) {\r\n var pendingFrame = -1;\r\n\r\n if (this.isPaused) {\r\n if (this.currentRawFrame + this.firstFrame < init) {\r\n pendingFrame = init;\r\n } else if (this.currentRawFrame + this.firstFrame > end) {\r\n pendingFrame = end - init;\r\n }\r\n }\r\n\r\n this.firstFrame = init;\r\n this.totalFrames = end - init;\r\n this.timeCompleted = this.totalFrames;\r\n\r\n if (pendingFrame !== -1) {\r\n this.goToAndStop(pendingFrame, true);\r\n }\r\n };\r\n\r\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\r\n if (forceFlag) {\r\n this.segments.length = 0;\r\n }\r\n\r\n if (_typeof$4(arr[0]) === 'object') {\r\n var i;\r\n var len = arr.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.segments.push(arr[i]);\r\n }\r\n } else {\r\n this.segments.push(arr);\r\n }\r\n\r\n if (this.segments.length && forceFlag) {\r\n this.adjustSegment(this.segments.shift(), 0);\r\n }\r\n\r\n if (this.isPaused) {\r\n this.play();\r\n }\r\n };\r\n\r\n AnimationItem.prototype.resetSegments = function (forceFlag) {\r\n this.segments.length = 0;\r\n this.segments.push([this.animationData.ip, this.animationData.op]);\r\n\r\n if (forceFlag) {\r\n this.checkSegments(0);\r\n }\r\n };\r\n\r\n AnimationItem.prototype.checkSegments = function (offset) {\r\n if (this.segments.length) {\r\n this.adjustSegment(this.segments.shift(), offset);\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n AnimationItem.prototype.destroy = function (name) {\r\n if (name && this.name !== name || !this.renderer) {\r\n return;\r\n }\r\n\r\n this.renderer.destroy();\r\n this.imagePreloader.destroy();\r\n this.trigger('destroy');\r\n this._cbs = null;\r\n this.onEnterFrame = null;\r\n this.onLoopComplete = null;\r\n this.onComplete = null;\r\n this.onSegmentStart = null;\r\n this.onDestroy = null;\r\n this.renderer = null;\r\n this.renderer = null;\r\n this.imagePreloader = null;\r\n this.projectInterface = null;\r\n };\r\n\r\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\r\n this.currentRawFrame = value;\r\n this.gotoFrame();\r\n };\r\n\r\n AnimationItem.prototype.setSpeed = function (val) {\r\n this.playSpeed = val;\r\n this.updaFrameModifier();\r\n };\r\n\r\n AnimationItem.prototype.setDirection = function (val) {\r\n this.playDirection = val < 0 ? -1 : 1;\r\n this.updaFrameModifier();\r\n };\r\n\r\n AnimationItem.prototype.setVolume = function (val, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n this.audioController.setVolume(val);\r\n };\r\n\r\n AnimationItem.prototype.getVolume = function () {\r\n return this.audioController.getVolume();\r\n };\r\n\r\n AnimationItem.prototype.mute = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n this.audioController.mute();\r\n };\r\n\r\n AnimationItem.prototype.unmute = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n\r\n this.audioController.unmute();\r\n };\r\n\r\n AnimationItem.prototype.updaFrameModifier = function () {\r\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\r\n this.audioController.setRate(this.playSpeed * this.playDirection);\r\n };\r\n\r\n AnimationItem.prototype.getPath = function () {\r\n return this.path;\r\n };\r\n\r\n AnimationItem.prototype.getAssetsPath = function (assetData) {\r\n var path = '';\r\n\r\n if (assetData.e) {\r\n path = assetData.p;\r\n } else if (this.assetsPath) {\r\n var imagePath = assetData.p;\r\n\r\n if (imagePath.indexOf('images/') !== -1) {\r\n imagePath = imagePath.split('/')[1];\r\n }\r\n\r\n path = this.assetsPath + imagePath;\r\n } else {\r\n path = this.path;\r\n path += assetData.u ? assetData.u : '';\r\n path += assetData.p;\r\n }\r\n\r\n return path;\r\n };\r\n\r\n AnimationItem.prototype.getAssetData = function (id) {\r\n var i = 0;\r\n var len = this.assets.length;\r\n\r\n while (i < len) {\r\n if (id === this.assets[i].id) {\r\n return this.assets[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n AnimationItem.prototype.hide = function () {\r\n this.renderer.hide();\r\n };\r\n\r\n AnimationItem.prototype.show = function () {\r\n this.renderer.show();\r\n };\r\n\r\n AnimationItem.prototype.getDuration = function (isFrame) {\r\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\r\n };\r\n\r\n AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\r\n try {\r\n var element = this.renderer.getElementByPath(path);\r\n element.updateDocumentData(documentData, index);\r\n } catch (error) {// TODO: decide how to handle catch case\r\n }\r\n };\r\n\r\n AnimationItem.prototype.trigger = function (name) {\r\n if (this._cbs && this._cbs[name]) {\r\n switch (name) {\r\n case 'enterFrame':\r\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\r\n break;\r\n\r\n case 'drawnFrame':\r\n this.drawnFrameEvent.currentTime = this.currentFrame;\r\n this.drawnFrameEvent.totalTime = this.totalFrames;\r\n this.drawnFrameEvent.direction = this.frameModifier;\r\n this.triggerEvent(name, this.drawnFrameEvent);\r\n break;\r\n\r\n case 'loopComplete':\r\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\r\n break;\r\n\r\n case 'complete':\r\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\r\n break;\r\n\r\n case 'segmentStart':\r\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\r\n break;\r\n\r\n case 'destroy':\r\n this.triggerEvent(name, new BMDestroyEvent(name, this));\r\n break;\r\n\r\n default:\r\n this.triggerEvent(name);\r\n }\r\n }\r\n\r\n if (name === 'enterFrame' && this.onEnterFrame) {\r\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\r\n }\r\n\r\n if (name === 'loopComplete' && this.onLoopComplete) {\r\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\r\n }\r\n\r\n if (name === 'complete' && this.onComplete) {\r\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\r\n }\r\n\r\n if (name === 'segmentStart' && this.onSegmentStart) {\r\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\r\n }\r\n\r\n if (name === 'destroy' && this.onDestroy) {\r\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\r\n }\r\n };\r\n\r\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\r\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\r\n this.triggerEvent('error', error);\r\n\r\n if (this.onError) {\r\n this.onError.call(this, error);\r\n }\r\n };\r\n\r\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\r\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\r\n this.triggerEvent('error', error);\r\n\r\n if (this.onError) {\r\n this.onError.call(this, error);\r\n }\r\n };\r\n\r\n var animationManager = function () {\r\n var moduleOb = {};\r\n var registeredAnimations = [];\r\n var initTime = 0;\r\n var len = 0;\r\n var playingAnimationsNum = 0;\r\n var _stopped = true;\r\n var _isFrozen = false;\r\n\r\n function removeElement(ev) {\r\n var i = 0;\r\n var animItem = ev.target;\r\n\r\n while (i < len) {\r\n if (registeredAnimations[i].animation === animItem) {\r\n registeredAnimations.splice(i, 1);\r\n i -= 1;\r\n len -= 1;\r\n\r\n if (!animItem.isPaused) {\r\n subtractPlayingCount();\r\n }\r\n }\r\n\r\n i += 1;\r\n }\r\n }\r\n\r\n function registerAnimation(element, animationData) {\r\n if (!element) {\r\n return null;\r\n }\r\n\r\n var i = 0;\r\n\r\n while (i < len) {\r\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\r\n return registeredAnimations[i].animation;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n var animItem = new AnimationItem();\r\n setupAnimation(animItem, element);\r\n animItem.setData(element, animationData);\r\n return animItem;\r\n }\r\n\r\n function getRegisteredAnimations() {\r\n var i;\r\n var lenAnims = registeredAnimations.length;\r\n var animations = [];\r\n\r\n for (i = 0; i < lenAnims; i += 1) {\r\n animations.push(registeredAnimations[i].animation);\r\n }\r\n\r\n return animations;\r\n }\r\n\r\n function addPlayingCount() {\r\n playingAnimationsNum += 1;\r\n activate();\r\n }\r\n\r\n function subtractPlayingCount() {\r\n playingAnimationsNum -= 1;\r\n }\r\n\r\n function setupAnimation(animItem, element) {\r\n animItem.addEventListener('destroy', removeElement);\r\n animItem.addEventListener('_active', addPlayingCount);\r\n animItem.addEventListener('_idle', subtractPlayingCount);\r\n registeredAnimations.push({\r\n elem: element,\r\n animation: animItem\r\n });\r\n len += 1;\r\n }\r\n\r\n function loadAnimation(params) {\r\n var animItem = new AnimationItem();\r\n setupAnimation(animItem, null);\r\n animItem.setParams(params);\r\n return animItem;\r\n }\r\n\r\n function setSpeed(val, animation) {\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setSpeed(val, animation);\r\n }\r\n }\r\n\r\n function setDirection(val, animation) {\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setDirection(val, animation);\r\n }\r\n }\r\n\r\n function play(animation) {\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.play(animation);\r\n }\r\n }\r\n\r\n function resume(nowTime) {\r\n var elapsedTime = nowTime - initTime;\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.advanceTime(elapsedTime);\r\n }\r\n\r\n initTime = nowTime;\r\n\r\n if (playingAnimationsNum && !_isFrozen) {\r\n window.requestAnimationFrame(resume);\r\n } else {\r\n _stopped = true;\r\n }\r\n }\r\n\r\n function first(nowTime) {\r\n initTime = nowTime;\r\n window.requestAnimationFrame(resume);\r\n }\r\n\r\n function pause(animation) {\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.pause(animation);\r\n }\r\n }\r\n\r\n function goToAndStop(value, isFrame, animation) {\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\r\n }\r\n }\r\n\r\n function stop(animation) {\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.stop(animation);\r\n }\r\n }\r\n\r\n function togglePause(animation) {\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.togglePause(animation);\r\n }\r\n }\r\n\r\n function destroy(animation) {\r\n var i;\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n registeredAnimations[i].animation.destroy(animation);\r\n }\r\n }\r\n\r\n function searchAnimations(animationData, standalone, renderer) {\r\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\r\n var i;\r\n var lenAnims = animElements.length;\r\n\r\n for (i = 0; i < lenAnims; i += 1) {\r\n if (renderer) {\r\n animElements[i].setAttribute('data-bm-type', renderer);\r\n }\r\n\r\n registerAnimation(animElements[i], animationData);\r\n }\r\n\r\n if (standalone && lenAnims === 0) {\r\n if (!renderer) {\r\n renderer = 'svg';\r\n }\r\n\r\n var body = document.getElementsByTagName('body')[0];\r\n body.innerText = '';\r\n var div = createTag('div');\r\n div.style.width = '100%';\r\n div.style.height = '100%';\r\n div.setAttribute('data-bm-type', renderer);\r\n body.appendChild(div);\r\n registerAnimation(div, animationData);\r\n }\r\n }\r\n\r\n function resize() {\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.resize();\r\n }\r\n }\r\n\r\n function activate() {\r\n if (!_isFrozen && playingAnimationsNum) {\r\n if (_stopped) {\r\n window.requestAnimationFrame(first);\r\n _stopped = false;\r\n }\r\n }\r\n }\r\n\r\n function freeze() {\r\n _isFrozen = true;\r\n }\r\n\r\n function unfreeze() {\r\n _isFrozen = false;\r\n activate();\r\n }\r\n\r\n function setVolume(val, animation) {\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setVolume(val, animation);\r\n }\r\n }\r\n\r\n function mute(animation) {\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.mute(animation);\r\n }\r\n }\r\n\r\n function unmute(animation) {\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.unmute(animation);\r\n }\r\n }\r\n\r\n moduleOb.registerAnimation = registerAnimation;\r\n moduleOb.loadAnimation = loadAnimation;\r\n moduleOb.setSpeed = setSpeed;\r\n moduleOb.setDirection = setDirection;\r\n moduleOb.play = play;\r\n moduleOb.pause = pause;\r\n moduleOb.stop = stop;\r\n moduleOb.togglePause = togglePause;\r\n moduleOb.searchAnimations = searchAnimations;\r\n moduleOb.resize = resize; // moduleOb.start = start;\r\n\r\n moduleOb.goToAndStop = goToAndStop;\r\n moduleOb.destroy = destroy;\r\n moduleOb.freeze = freeze;\r\n moduleOb.unfreeze = unfreeze;\r\n moduleOb.setVolume = setVolume;\r\n moduleOb.mute = mute;\r\n moduleOb.unmute = unmute;\r\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\r\n return moduleOb;\r\n }();\r\n\r\n /* eslint-disable */\r\n var BezierFactory = function () {\r\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Ga\u00EBtan Renaudeau 2014 - 2015 \u2013 MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\r\n var ob = {};\r\n ob.getBezierEasing = getBezierEasing;\r\n var beziers = {};\r\n\r\n function getBezierEasing(a, b, c, d, nm) {\r\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\r\n\r\n if (beziers[str]) {\r\n return beziers[str];\r\n }\r\n\r\n var bezEasing = new BezierEasing([a, b, c, d]);\r\n beziers[str] = bezEasing;\r\n return bezEasing;\r\n } // These values are established by empiricism with tests (tradeoff: performance VS precision)\r\n\r\n\r\n var NEWTON_ITERATIONS = 4;\r\n var NEWTON_MIN_SLOPE = 0.001;\r\n var SUBDIVISION_PRECISION = 0.0000001;\r\n var SUBDIVISION_MAX_ITERATIONS = 10;\r\n var kSplineTableSize = 11;\r\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\r\n var float32ArraySupported = typeof Float32Array === 'function';\r\n\r\n function A(aA1, aA2) {\r\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\r\n }\r\n\r\n function B(aA1, aA2) {\r\n return 3.0 * aA2 - 6.0 * aA1;\r\n }\r\n\r\n function C(aA1) {\r\n return 3.0 * aA1;\r\n } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\r\n\r\n\r\n function calcBezier(aT, aA1, aA2) {\r\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\r\n } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\r\n\r\n\r\n function getSlope(aT, aA1, aA2) {\r\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\r\n }\r\n\r\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\r\n var currentX,\r\n currentT,\r\n i = 0;\r\n\r\n do {\r\n currentT = aA + (aB - aA) / 2.0;\r\n currentX = calcBezier(currentT, mX1, mX2) - aX;\r\n\r\n if (currentX > 0.0) {\r\n aB = currentT;\r\n } else {\r\n aA = currentT;\r\n }\r\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\r\n\r\n return currentT;\r\n }\r\n\r\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\r\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\r\n var currentSlope = getSlope(aGuessT, mX1, mX2);\r\n if (currentSlope === 0.0) return aGuessT;\r\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\r\n aGuessT -= currentX / currentSlope;\r\n }\r\n\r\n return aGuessT;\r\n }\r\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\r\n\r\n\r\n function BezierEasing(points) {\r\n this._p = points;\r\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\r\n this._precomputed = false;\r\n this.get = this.get.bind(this);\r\n }\r\n\r\n BezierEasing.prototype = {\r\n get: function get(x) {\r\n var mX1 = this._p[0],\r\n mY1 = this._p[1],\r\n mX2 = this._p[2],\r\n mY2 = this._p[3];\r\n if (!this._precomputed) this._precompute();\r\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\r\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\r\n\r\n if (x === 0) return 0;\r\n if (x === 1) return 1;\r\n return calcBezier(this._getTForX(x), mY1, mY2);\r\n },\r\n // Private part\r\n _precompute: function _precompute() {\r\n var mX1 = this._p[0],\r\n mY1 = this._p[1],\r\n mX2 = this._p[2],\r\n mY2 = this._p[3];\r\n this._precomputed = true;\r\n\r\n if (mX1 !== mY1 || mX2 !== mY2) {\r\n this._calcSampleValues();\r\n }\r\n },\r\n _calcSampleValues: function _calcSampleValues() {\r\n var mX1 = this._p[0],\r\n mX2 = this._p[2];\r\n\r\n for (var i = 0; i < kSplineTableSize; ++i) {\r\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\r\n }\r\n },\r\n\r\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\r\n _getTForX: function _getTForX(aX) {\r\n var mX1 = this._p[0],\r\n mX2 = this._p[2],\r\n mSampleValues = this._mSampleValues;\r\n var intervalStart = 0.0;\r\n var currentSample = 1;\r\n var lastSample = kSplineTableSize - 1;\r\n\r\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\r\n intervalStart += kSampleStepSize;\r\n }\r\n\r\n --currentSample; // Interpolate to provide an initial guess for t\r\n\r\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\r\n var guessForT = intervalStart + dist * kSampleStepSize;\r\n var initialSlope = getSlope(guessForT, mX1, mX2);\r\n\r\n if (initialSlope >= NEWTON_MIN_SLOPE) {\r\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\r\n }\r\n\r\n if (initialSlope === 0.0) {\r\n return guessForT;\r\n }\r\n\r\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\r\n }\r\n };\r\n return ob;\r\n }();\r\n\r\n var pooling = function () {\r\n function _double(arr) {\r\n return arr.concat(createSizedArray(arr.length));\r\n }\r\n\r\n return {\r\n \"double\": _double\r\n };\r\n }();\r\n\r\n var poolFactory = function () {\r\n return function (initialLength, _create, _release) {\r\n var _length = 0;\r\n var _maxLength = initialLength;\r\n var pool = createSizedArray(_maxLength);\r\n var ob = {\r\n newElement: newElement,\r\n release: release\r\n };\r\n\r\n function newElement() {\r\n var element;\r\n\r\n if (_length) {\r\n _length -= 1;\r\n element = pool[_length];\r\n } else {\r\n element = _create();\r\n }\r\n\r\n return element;\r\n }\r\n\r\n function release(element) {\r\n if (_length === _maxLength) {\r\n pool = pooling[\"double\"](pool);\r\n _maxLength *= 2;\r\n }\r\n\r\n if (_release) {\r\n _release(element);\r\n }\r\n\r\n pool[_length] = element;\r\n _length += 1;\r\n }\r\n\r\n return ob;\r\n };\r\n }();\r\n\r\n var bezierLengthPool = function () {\r\n function create() {\r\n return {\r\n addedLength: 0,\r\n percents: createTypedArray('float32', getDefaultCurveSegments()),\r\n lengths: createTypedArray('float32', getDefaultCurveSegments())\r\n };\r\n }\r\n\r\n return poolFactory(8, create);\r\n }();\r\n\r\n var segmentsLengthPool = function () {\r\n function create() {\r\n return {\r\n lengths: [],\r\n totalLength: 0\r\n };\r\n }\r\n\r\n function release(element) {\r\n var i;\r\n var len = element.lengths.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n bezierLengthPool.release(element.lengths[i]);\r\n }\r\n\r\n element.lengths.length = 0;\r\n }\r\n\r\n return poolFactory(8, create, release);\r\n }();\r\n\r\n function bezFunction() {\r\n var math = Math;\r\n\r\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\r\n var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\r\n return det1 > -0.001 && det1 < 0.001;\r\n }\r\n\r\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\r\n if (z1 === 0 && z2 === 0 && z3 === 0) {\r\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\r\n }\r\n\r\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\r\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\r\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\r\n var diffDist;\r\n\r\n if (dist1 > dist2) {\r\n if (dist1 > dist3) {\r\n diffDist = dist1 - dist2 - dist3;\r\n } else {\r\n diffDist = dist3 - dist2 - dist1;\r\n }\r\n } else if (dist3 > dist2) {\r\n diffDist = dist3 - dist2 - dist1;\r\n } else {\r\n diffDist = dist2 - dist1 - dist3;\r\n }\r\n\r\n return diffDist > -0.0001 && diffDist < 0.0001;\r\n }\r\n\r\n var getBezierLength = function () {\r\n return function (pt1, pt2, pt3, pt4) {\r\n var curveSegments = getDefaultCurveSegments();\r\n var k;\r\n var i;\r\n var len;\r\n var ptCoord;\r\n var perc;\r\n var addedLength = 0;\r\n var ptDistance;\r\n var point = [];\r\n var lastPoint = [];\r\n var lengthData = bezierLengthPool.newElement();\r\n len = pt3.length;\r\n\r\n for (k = 0; k < curveSegments; k += 1) {\r\n perc = k / (curveSegments - 1);\r\n ptDistance = 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\r\n point[i] = ptCoord;\r\n\r\n if (lastPoint[i] !== null) {\r\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\r\n }\r\n\r\n lastPoint[i] = point[i];\r\n }\r\n\r\n if (ptDistance) {\r\n ptDistance = bmSqrt(ptDistance);\r\n addedLength += ptDistance;\r\n }\r\n\r\n lengthData.percents[k] = perc;\r\n lengthData.lengths[k] = addedLength;\r\n }\r\n\r\n lengthData.addedLength = addedLength;\r\n return lengthData;\r\n };\r\n }();\r\n\r\n function getSegmentsLength(shapeData) {\r\n var segmentsLength = segmentsLengthPool.newElement();\r\n var closed = shapeData.c;\r\n var pathV = shapeData.v;\r\n var pathO = shapeData.o;\r\n var pathI = shapeData.i;\r\n var i;\r\n var len = shapeData._length;\r\n var lengths = segmentsLength.lengths;\r\n var totalLength = 0;\r\n\r\n for (i = 0; i < len - 1; i += 1) {\r\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\r\n totalLength += lengths[i].addedLength;\r\n }\r\n\r\n if (closed && len) {\r\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\r\n totalLength += lengths[i].addedLength;\r\n }\r\n\r\n segmentsLength.totalLength = totalLength;\r\n return segmentsLength;\r\n }\r\n\r\n function BezierData(length) {\r\n this.segmentLength = 0;\r\n this.points = new Array(length);\r\n }\r\n\r\n function PointData(partial, point) {\r\n this.partialLength = partial;\r\n this.point = point;\r\n }\r\n\r\n var buildBezierData = function () {\r\n var storedData = {};\r\n return function (pt1, pt2, pt3, pt4) {\r\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\r\n\r\n if (!storedData[bezierName]) {\r\n var curveSegments = getDefaultCurveSegments();\r\n var k;\r\n var i;\r\n var len;\r\n var ptCoord;\r\n var perc;\r\n var addedLength = 0;\r\n var ptDistance;\r\n var point;\r\n var lastPoint = null;\r\n\r\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\r\n curveSegments = 2;\r\n }\r\n\r\n var bezierData = new BezierData(curveSegments);\r\n len = pt3.length;\r\n\r\n for (k = 0; k < curveSegments; k += 1) {\r\n point = createSizedArray(len);\r\n perc = k / (curveSegments - 1);\r\n ptDistance = 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\r\n point[i] = ptCoord;\r\n\r\n if (lastPoint !== null) {\r\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\r\n }\r\n }\r\n\r\n ptDistance = bmSqrt(ptDistance);\r\n addedLength += ptDistance;\r\n bezierData.points[k] = new PointData(ptDistance, point);\r\n lastPoint = point;\r\n }\r\n\r\n bezierData.segmentLength = addedLength;\r\n storedData[bezierName] = bezierData;\r\n }\r\n\r\n return storedData[bezierName];\r\n };\r\n }();\r\n\r\n function getDistancePerc(perc, bezierData) {\r\n var percents = bezierData.percents;\r\n var lengths = bezierData.lengths;\r\n var len = percents.length;\r\n var initPos = bmFloor((len - 1) * perc);\r\n var lengthPos = perc * bezierData.addedLength;\r\n var lPerc = 0;\r\n\r\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\r\n return percents[initPos];\r\n }\r\n\r\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\r\n var flag = true;\r\n\r\n while (flag) {\r\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\r\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\r\n flag = false;\r\n } else {\r\n initPos += dir;\r\n }\r\n\r\n if (initPos < 0 || initPos >= len - 1) {\r\n // FIX for TypedArrays that don't store floating point values with enough accuracy\r\n if (initPos === len - 1) {\r\n return percents[initPos];\r\n }\r\n\r\n flag = false;\r\n }\r\n }\r\n\r\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\r\n }\r\n\r\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\r\n var t1 = getDistancePerc(percent, bezierData);\r\n var u1 = 1 - t1;\r\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\r\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\r\n return [ptX, ptY];\r\n }\r\n\r\n var bezierSegmentPoints = createTypedArray('float32', 8);\r\n\r\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\r\n if (startPerc < 0) {\r\n startPerc = 0;\r\n } else if (startPerc > 1) {\r\n startPerc = 1;\r\n }\r\n\r\n var t0 = getDistancePerc(startPerc, bezierData);\r\n endPerc = endPerc > 1 ? 1 : endPerc;\r\n var t1 = getDistancePerc(endPerc, bezierData);\r\n var i;\r\n var len = pt1.length;\r\n var u0 = 1 - t0;\r\n var u1 = 1 - t1;\r\n var u0u0u0 = u0 * u0 * u0;\r\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\r\n\r\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\r\n\r\n var t0t0t0 = t0 * t0 * t0; //\r\n\r\n var u0u0u1 = u0 * u0 * u1;\r\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\r\n\r\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\r\n\r\n var t0t0t1 = t0 * t0 * t1; //\r\n\r\n var u0u1u1 = u0 * u1 * u1;\r\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\r\n\r\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\r\n\r\n var t0t1t1 = t0 * t1 * t1; //\r\n\r\n var u1u1u1 = u1 * u1 * u1;\r\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\r\n\r\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\r\n\r\n var t1t1t1 = t1 * t1 * t1;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n\r\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n\r\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n\r\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n }\r\n\r\n return bezierSegmentPoints;\r\n }\r\n\r\n return {\r\n getSegmentsLength: getSegmentsLength,\r\n getNewSegment: getNewSegment,\r\n getPointInSegment: getPointInSegment,\r\n buildBezierData: buildBezierData,\r\n pointOnLine2D: pointOnLine2D,\r\n pointOnLine3D: pointOnLine3D\r\n };\r\n }\r\n\r\n var bez = bezFunction();\r\n\r\n var PropertyFactory = function () {\r\n var initFrame = initialDefaultFrame;\r\n var mathAbs = Math.abs;\r\n\r\n function interpolateValue(frameNum, caching) {\r\n var offsetTime = this.offsetTime;\r\n var newValue;\r\n\r\n if (this.propType === 'multidimensional') {\r\n newValue = createTypedArray('float32', this.pv.length);\r\n }\r\n\r\n var iterationIndex = caching.lastIndex;\r\n var i = iterationIndex;\r\n var len = this.keyframes.length - 1;\r\n var flag = true;\r\n var keyData;\r\n var nextKeyData;\r\n var keyframeMetadata;\r\n\r\n while (flag) {\r\n keyData = this.keyframes[i];\r\n nextKeyData = this.keyframes[i + 1];\r\n\r\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\r\n if (keyData.h) {\r\n keyData = nextKeyData;\r\n }\r\n\r\n iterationIndex = 0;\r\n break;\r\n }\r\n\r\n if (nextKeyData.t - offsetTime > frameNum) {\r\n iterationIndex = i;\r\n break;\r\n }\r\n\r\n if (i < len - 1) {\r\n i += 1;\r\n } else {\r\n iterationIndex = 0;\r\n flag = false;\r\n }\r\n }\r\n\r\n keyframeMetadata = this.keyframesMetadata[i] || {};\r\n var k;\r\n var kLen;\r\n var perc;\r\n var jLen;\r\n var j;\r\n var fnc;\r\n var nextKeyTime = nextKeyData.t - offsetTime;\r\n var keyTime = keyData.t - offsetTime;\r\n var endValue;\r\n\r\n if (keyData.to) {\r\n if (!keyframeMetadata.bezierData) {\r\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\r\n }\r\n\r\n var bezierData = keyframeMetadata.bezierData;\r\n\r\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\r\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\r\n kLen = bezierData.points[ind].point.length;\r\n\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[ind].point[k];\r\n } // caching._lastKeyframeIndex = -1;\r\n\r\n } else {\r\n if (keyframeMetadata.__fnct) {\r\n fnc = keyframeMetadata.__fnct;\r\n } else {\r\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\r\n keyframeMetadata.__fnct = fnc;\r\n }\r\n\r\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\r\n var distanceInLine = bezierData.segmentLength * perc;\r\n var segmentPerc;\r\n var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\r\n j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\r\n flag = true;\r\n jLen = bezierData.points.length;\r\n\r\n while (flag) {\r\n addedLength += bezierData.points[j].partialLength;\r\n\r\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\r\n kLen = bezierData.points[j].point.length;\r\n\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[j].point[k];\r\n }\r\n\r\n break;\r\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\r\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\r\n kLen = bezierData.points[j].point.length;\r\n\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\r\n }\r\n\r\n break;\r\n }\r\n\r\n if (j < jLen - 1) {\r\n j += 1;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n\r\n caching._lastPoint = j;\r\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\r\n caching._lastKeyframeIndex = i;\r\n }\r\n } else {\r\n var outX;\r\n var outY;\r\n var inX;\r\n var inY;\r\n var keyValue;\r\n len = keyData.s.length;\r\n endValue = nextKeyData.s || keyData.e;\r\n\r\n if (this.sh && keyData.h !== 1) {\r\n if (frameNum >= nextKeyTime) {\r\n newValue[0] = endValue[0];\r\n newValue[1] = endValue[1];\r\n newValue[2] = endValue[2];\r\n } else if (frameNum <= keyTime) {\r\n newValue[0] = keyData.s[0];\r\n newValue[1] = keyData.s[1];\r\n newValue[2] = keyData.s[2];\r\n } else {\r\n var quatStart = createQuaternion(keyData.s);\r\n var quatEnd = createQuaternion(endValue);\r\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\r\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\r\n }\r\n } else {\r\n for (i = 0; i < len; i += 1) {\r\n if (keyData.h !== 1) {\r\n if (frameNum >= nextKeyTime) {\r\n perc = 1;\r\n } else if (frameNum < keyTime) {\r\n perc = 0;\r\n } else {\r\n if (keyData.o.x.constructor === Array) {\r\n if (!keyframeMetadata.__fnct) {\r\n keyframeMetadata.__fnct = [];\r\n }\r\n\r\n if (!keyframeMetadata.__fnct[i]) {\r\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\r\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\r\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\r\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\r\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\r\n keyframeMetadata.__fnct[i] = fnc;\r\n } else {\r\n fnc = keyframeMetadata.__fnct[i];\r\n }\r\n } else if (!keyframeMetadata.__fnct) {\r\n outX = keyData.o.x;\r\n outY = keyData.o.y;\r\n inX = keyData.i.x;\r\n inY = keyData.i.y;\r\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\r\n keyData.keyframeMetadata = fnc;\r\n } else {\r\n fnc = keyframeMetadata.__fnct;\r\n }\r\n\r\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\r\n }\r\n }\r\n\r\n endValue = nextKeyData.s || keyData.e;\r\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\r\n\r\n if (this.propType === 'multidimensional') {\r\n newValue[i] = keyValue;\r\n } else {\r\n newValue = keyValue;\r\n }\r\n }\r\n }\r\n }\r\n\r\n caching.lastIndex = iterationIndex;\r\n return newValue;\r\n } // based on @Toji's https://github.com/toji/gl-matrix/\r\n\r\n\r\n function slerp(a, b, t) {\r\n var out = [];\r\n var ax = a[0];\r\n var ay = a[1];\r\n var az = a[2];\r\n var aw = a[3];\r\n var bx = b[0];\r\n var by = b[1];\r\n var bz = b[2];\r\n var bw = b[3];\r\n var omega;\r\n var cosom;\r\n var sinom;\r\n var scale0;\r\n var scale1;\r\n cosom = ax * bx + ay * by + az * bz + aw * bw;\r\n\r\n if (cosom < 0.0) {\r\n cosom = -cosom;\r\n bx = -bx;\r\n by = -by;\r\n bz = -bz;\r\n bw = -bw;\r\n }\r\n\r\n if (1.0 - cosom > 0.000001) {\r\n omega = Math.acos(cosom);\r\n sinom = Math.sin(omega);\r\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\r\n scale1 = Math.sin(t * omega) / sinom;\r\n } else {\r\n scale0 = 1.0 - t;\r\n scale1 = t;\r\n }\r\n\r\n out[0] = scale0 * ax + scale1 * bx;\r\n out[1] = scale0 * ay + scale1 * by;\r\n out[2] = scale0 * az + scale1 * bz;\r\n out[3] = scale0 * aw + scale1 * bw;\r\n return out;\r\n }\r\n\r\n function quaternionToEuler(out, quat) {\r\n var qx = quat[0];\r\n var qy = quat[1];\r\n var qz = quat[2];\r\n var qw = quat[3];\r\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\r\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\r\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\r\n out[0] = heading / degToRads;\r\n out[1] = attitude / degToRads;\r\n out[2] = bank / degToRads;\r\n }\r\n\r\n function createQuaternion(values) {\r\n var heading = values[0] * degToRads;\r\n var attitude = values[1] * degToRads;\r\n var bank = values[2] * degToRads;\r\n var c1 = Math.cos(heading / 2);\r\n var c2 = Math.cos(attitude / 2);\r\n var c3 = Math.cos(bank / 2);\r\n var s1 = Math.sin(heading / 2);\r\n var s2 = Math.sin(attitude / 2);\r\n var s3 = Math.sin(bank / 2);\r\n var w = c1 * c2 * c3 - s1 * s2 * s3;\r\n var x = s1 * s2 * c3 + c1 * c2 * s3;\r\n var y = s1 * c2 * c3 + c1 * s2 * s3;\r\n var z = c1 * s2 * c3 - s1 * c2 * s3;\r\n return [x, y, z, w];\r\n }\r\n\r\n function getValueAtCurrentTime() {\r\n var frameNum = this.comp.renderedFrame - this.offsetTime;\r\n var initTime = this.keyframes[0].t - this.offsetTime;\r\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\r\n\r\n if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\r\n if (this._caching.lastFrame >= frameNum) {\r\n this._caching._lastKeyframeIndex = -1;\r\n this._caching.lastIndex = 0;\r\n }\r\n\r\n var renderResult = this.interpolateValue(frameNum, this._caching);\r\n this.pv = renderResult;\r\n }\r\n\r\n this._caching.lastFrame = frameNum;\r\n return this.pv;\r\n }\r\n\r\n function setVValue(val) {\r\n var multipliedValue;\r\n\r\n if (this.propType === 'unidimensional') {\r\n multipliedValue = val * this.mult;\r\n\r\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\r\n this.v = multipliedValue;\r\n this._mdf = true;\r\n }\r\n } else {\r\n var i = 0;\r\n var len = this.v.length;\r\n\r\n while (i < len) {\r\n multipliedValue = val[i] * this.mult;\r\n\r\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\r\n this.v[i] = multipliedValue;\r\n this._mdf = true;\r\n }\r\n\r\n i += 1;\r\n }\r\n }\r\n }\r\n\r\n function processEffectsSequence() {\r\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\r\n return;\r\n }\r\n\r\n if (this.lock) {\r\n this.setVValue(this.pv);\r\n return;\r\n }\r\n\r\n this.lock = true;\r\n this._mdf = this._isFirstFrame;\r\n var i;\r\n var len = this.effectsSequence.length;\r\n var finalValue = this.kf ? this.pv : this.data.k;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n finalValue = this.effectsSequence[i](finalValue);\r\n }\r\n\r\n this.setVValue(finalValue);\r\n this._isFirstFrame = false;\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function addEffect(effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.container.addDynamicProperty(this);\r\n }\r\n\r\n function ValueProperty(elem, data, mult, container) {\r\n this.propType = 'unidimensional';\r\n this.mult = mult || 1;\r\n this.data = data;\r\n this.v = mult ? data.k * mult : data.k;\r\n this.pv = data.k;\r\n this._mdf = false;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.k = false;\r\n this.kf = false;\r\n this.vel = 0;\r\n this.effectsSequence = [];\r\n this._isFirstFrame = true;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function MultiDimensionalProperty(elem, data, mult, container) {\r\n this.propType = 'multidimensional';\r\n this.mult = mult || 1;\r\n this.data = data;\r\n this._mdf = false;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.k = false;\r\n this.kf = false;\r\n this.frameId = -1;\r\n var i;\r\n var len = data.k.length;\r\n this.v = createTypedArray('float32', len);\r\n this.pv = createTypedArray('float32', len);\r\n this.vel = createTypedArray('float32', len);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.v[i] = data.k[i] * this.mult;\r\n this.pv[i] = data.k[i];\r\n }\r\n\r\n this._isFirstFrame = true;\r\n this.effectsSequence = [];\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function KeyframedValueProperty(elem, data, mult, container) {\r\n this.propType = 'unidimensional';\r\n this.keyframes = data.k;\r\n this.keyframesMetadata = [];\r\n this.offsetTime = elem.data.st;\r\n this.frameId = -1;\r\n this._caching = {\r\n lastFrame: initFrame,\r\n lastIndex: 0,\r\n value: 0,\r\n _lastKeyframeIndex: -1\r\n };\r\n this.k = true;\r\n this.kf = true;\r\n this.data = data;\r\n this.mult = mult || 1;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.v = initFrame;\r\n this.pv = initFrame;\r\n this._isFirstFrame = true;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.interpolateValue = interpolateValue;\r\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\r\n this.propType = 'multidimensional';\r\n var i;\r\n var len = data.k.length;\r\n var s;\r\n var e;\r\n var to;\r\n var ti;\r\n\r\n for (i = 0; i < len - 1; i += 1) {\r\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\r\n s = data.k[i].s;\r\n e = data.k[i + 1].s;\r\n to = data.k[i].to;\r\n ti = data.k[i].ti;\r\n\r\n if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\r\n data.k[i].to = null;\r\n data.k[i].ti = null;\r\n }\r\n\r\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\r\n if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\r\n data.k[i].to = null;\r\n data.k[i].ti = null;\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\r\n this.data = data;\r\n this.keyframes = data.k;\r\n this.keyframesMetadata = [];\r\n this.offsetTime = elem.data.st;\r\n this.k = true;\r\n this.kf = true;\r\n this._isFirstFrame = true;\r\n this.mult = mult || 1;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.interpolateValue = interpolateValue;\r\n this.frameId = -1;\r\n var arrLen = data.k[0].s.length;\r\n this.v = createTypedArray('float32', arrLen);\r\n this.pv = createTypedArray('float32', arrLen);\r\n\r\n for (i = 0; i < arrLen; i += 1) {\r\n this.v[i] = initFrame;\r\n this.pv[i] = initFrame;\r\n }\r\n\r\n this._caching = {\r\n lastFrame: initFrame,\r\n lastIndex: 0,\r\n value: createTypedArray('float32', arrLen)\r\n };\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function getProp(elem, data, type, mult, container) {\r\n var p;\r\n\r\n if (!data.k.length) {\r\n p = new ValueProperty(elem, data, mult, container);\r\n } else if (typeof data.k[0] === 'number') {\r\n p = new MultiDimensionalProperty(elem, data, mult, container);\r\n } else {\r\n switch (type) {\r\n case 0:\r\n p = new KeyframedValueProperty(elem, data, mult, container);\r\n break;\r\n\r\n case 1:\r\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n if (p.effectsSequence.length) {\r\n container.addDynamicProperty(p);\r\n }\r\n\r\n return p;\r\n }\r\n\r\n var ob = {\r\n getProp: getProp\r\n };\r\n return ob;\r\n }();\r\n\r\n function DynamicPropertyContainer() {}\r\n\r\n DynamicPropertyContainer.prototype = {\r\n addDynamicProperty: function addDynamicProperty(prop) {\r\n if (this.dynamicProperties.indexOf(prop) === -1) {\r\n this.dynamicProperties.push(prop);\r\n this.container.addDynamicProperty(this);\r\n this._isAnimated = true;\r\n }\r\n },\r\n iterateDynamicProperties: function iterateDynamicProperties() {\r\n this._mdf = false;\r\n var i;\r\n var len = this.dynamicProperties.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n\r\n if (this.dynamicProperties[i]._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n },\r\n initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\r\n this.container = container;\r\n this.dynamicProperties = [];\r\n this._mdf = false;\r\n this._isAnimated = false;\r\n }\r\n };\r\n\r\n var pointPool = function () {\r\n function create() {\r\n return createTypedArray('float32', 2);\r\n }\r\n\r\n return poolFactory(8, create);\r\n }();\r\n\r\n function ShapePath() {\r\n this.c = false;\r\n this._length = 0;\r\n this._maxLength = 8;\r\n this.v = createSizedArray(this._maxLength);\r\n this.o = createSizedArray(this._maxLength);\r\n this.i = createSizedArray(this._maxLength);\r\n }\r\n\r\n ShapePath.prototype.setPathData = function (closed, len) {\r\n this.c = closed;\r\n this.setLength(len);\r\n var i = 0;\r\n\r\n while (i < len) {\r\n this.v[i] = pointPool.newElement();\r\n this.o[i] = pointPool.newElement();\r\n this.i[i] = pointPool.newElement();\r\n i += 1;\r\n }\r\n };\r\n\r\n ShapePath.prototype.setLength = function (len) {\r\n while (this._maxLength < len) {\r\n this.doubleArrayLength();\r\n }\r\n\r\n this._length = len;\r\n };\r\n\r\n ShapePath.prototype.doubleArrayLength = function () {\r\n this.v = this.v.concat(createSizedArray(this._maxLength));\r\n this.i = this.i.concat(createSizedArray(this._maxLength));\r\n this.o = this.o.concat(createSizedArray(this._maxLength));\r\n this._maxLength *= 2;\r\n };\r\n\r\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\r\n var arr;\r\n this._length = Math.max(this._length, pos + 1);\r\n\r\n if (this._length >= this._maxLength) {\r\n this.doubleArrayLength();\r\n }\r\n\r\n switch (type) {\r\n case 'v':\r\n arr = this.v;\r\n break;\r\n\r\n case 'i':\r\n arr = this.i;\r\n break;\r\n\r\n case 'o':\r\n arr = this.o;\r\n break;\r\n\r\n default:\r\n arr = [];\r\n break;\r\n }\r\n\r\n if (!arr[pos] || arr[pos] && !replace) {\r\n arr[pos] = pointPool.newElement();\r\n }\r\n\r\n arr[pos][0] = x;\r\n arr[pos][1] = y;\r\n };\r\n\r\n ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\r\n this.setXYAt(vX, vY, 'v', pos, replace);\r\n this.setXYAt(oX, oY, 'o', pos, replace);\r\n this.setXYAt(iX, iY, 'i', pos, replace);\r\n };\r\n\r\n ShapePath.prototype.reverse = function () {\r\n var newPath = new ShapePath();\r\n newPath.setPathData(this.c, this._length);\r\n var vertices = this.v;\r\n var outPoints = this.o;\r\n var inPoints = this.i;\r\n var init = 0;\r\n\r\n if (this.c) {\r\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\r\n init = 1;\r\n }\r\n\r\n var cnt = this._length - 1;\r\n var len = this._length;\r\n var i;\r\n\r\n for (i = init; i < len; i += 1) {\r\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\r\n cnt -= 1;\r\n }\r\n\r\n return newPath;\r\n };\r\n\r\n ShapePath.prototype.length = function () {\r\n return this._length;\r\n };\r\n\r\n var shapePool = function () {\r\n function create() {\r\n return new ShapePath();\r\n }\r\n\r\n function release(shapePath) {\r\n var len = shapePath._length;\r\n var i;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n pointPool.release(shapePath.v[i]);\r\n pointPool.release(shapePath.i[i]);\r\n pointPool.release(shapePath.o[i]);\r\n shapePath.v[i] = null;\r\n shapePath.i[i] = null;\r\n shapePath.o[i] = null;\r\n }\r\n\r\n shapePath._length = 0;\r\n shapePath.c = false;\r\n }\r\n\r\n function clone(shape) {\r\n var cloned = factory.newElement();\r\n var i;\r\n var len = shape._length === undefined ? shape.v.length : shape._length;\r\n cloned.setLength(len);\r\n cloned.c = shape.c;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\r\n }\r\n\r\n return cloned;\r\n }\r\n\r\n var factory = poolFactory(4, create, release);\r\n factory.clone = clone;\r\n return factory;\r\n }();\r\n\r\n function ShapeCollection() {\r\n this._length = 0;\r\n this._maxLength = 4;\r\n this.shapes = createSizedArray(this._maxLength);\r\n }\r\n\r\n ShapeCollection.prototype.addShape = function (shapeData) {\r\n if (this._length === this._maxLength) {\r\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\r\n this._maxLength *= 2;\r\n }\r\n\r\n this.shapes[this._length] = shapeData;\r\n this._length += 1;\r\n };\r\n\r\n ShapeCollection.prototype.releaseShapes = function () {\r\n var i;\r\n\r\n for (i = 0; i < this._length; i += 1) {\r\n shapePool.release(this.shapes[i]);\r\n }\r\n\r\n this._length = 0;\r\n };\r\n\r\n var shapeCollectionPool = function () {\r\n var ob = {\r\n newShapeCollection: newShapeCollection,\r\n release: release\r\n };\r\n var _length = 0;\r\n var _maxLength = 4;\r\n var pool = createSizedArray(_maxLength);\r\n\r\n function newShapeCollection() {\r\n var shapeCollection;\r\n\r\n if (_length) {\r\n _length -= 1;\r\n shapeCollection = pool[_length];\r\n } else {\r\n shapeCollection = new ShapeCollection();\r\n }\r\n\r\n return shapeCollection;\r\n }\r\n\r\n function release(shapeCollection) {\r\n var i;\r\n var len = shapeCollection._length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n shapePool.release(shapeCollection.shapes[i]);\r\n }\r\n\r\n shapeCollection._length = 0;\r\n\r\n if (_length === _maxLength) {\r\n pool = pooling[\"double\"](pool);\r\n _maxLength *= 2;\r\n }\r\n\r\n pool[_length] = shapeCollection;\r\n _length += 1;\r\n }\r\n\r\n return ob;\r\n }();\r\n\r\n var ShapePropertyFactory = function () {\r\n var initFrame = -999999;\r\n\r\n function interpolateShape(frameNum, previousValue, caching) {\r\n var iterationIndex = caching.lastIndex;\r\n var keyPropS;\r\n var keyPropE;\r\n var isHold;\r\n var j;\r\n var k;\r\n var jLen;\r\n var kLen;\r\n var perc;\r\n var vertexValue;\r\n var kf = this.keyframes;\r\n\r\n if (frameNum < kf[0].t - this.offsetTime) {\r\n keyPropS = kf[0].s[0];\r\n isHold = true;\r\n iterationIndex = 0;\r\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\r\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\r\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\r\n\r\n isHold = true;\r\n } else {\r\n var i = iterationIndex;\r\n var len = kf.length - 1;\r\n var flag = true;\r\n var keyData;\r\n var nextKeyData;\r\n var keyframeMetadata;\r\n\r\n while (flag) {\r\n keyData = kf[i];\r\n nextKeyData = kf[i + 1];\r\n\r\n if (nextKeyData.t - this.offsetTime > frameNum) {\r\n break;\r\n }\r\n\r\n if (i < len - 1) {\r\n i += 1;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n\r\n keyframeMetadata = this.keyframesMetadata[i] || {};\r\n isHold = keyData.h === 1;\r\n iterationIndex = i;\r\n\r\n if (!isHold) {\r\n if (frameNum >= nextKeyData.t - this.offsetTime) {\r\n perc = 1;\r\n } else if (frameNum < keyData.t - this.offsetTime) {\r\n perc = 0;\r\n } else {\r\n var fnc;\r\n\r\n if (keyframeMetadata.__fnct) {\r\n fnc = keyframeMetadata.__fnct;\r\n } else {\r\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\r\n keyframeMetadata.__fnct = fnc;\r\n }\r\n\r\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\r\n }\r\n\r\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\r\n }\r\n\r\n keyPropS = keyData.s[0];\r\n }\r\n\r\n jLen = previousValue._length;\r\n kLen = keyPropS.i[0].length;\r\n caching.lastIndex = iterationIndex;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n for (k = 0; k < kLen; k += 1) {\r\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\r\n previousValue.i[j][k] = vertexValue;\r\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\r\n previousValue.o[j][k] = vertexValue;\r\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\r\n previousValue.v[j][k] = vertexValue;\r\n }\r\n }\r\n }\r\n\r\n function interpolateShapeCurrentTime() {\r\n var frameNum = this.comp.renderedFrame - this.offsetTime;\r\n var initTime = this.keyframes[0].t - this.offsetTime;\r\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\r\n var lastFrame = this._caching.lastFrame;\r\n\r\n if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\r\n /// /\r\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\r\n this.interpolateShape(frameNum, this.pv, this._caching); /// /\r\n }\r\n\r\n this._caching.lastFrame = frameNum;\r\n return this.pv;\r\n }\r\n\r\n function resetShape() {\r\n this.paths = this.localShapeCollection;\r\n }\r\n\r\n function shapesEqual(shape1, shape2) {\r\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\r\n return false;\r\n }\r\n\r\n var i;\r\n var len = shape1._length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function setVValue(newPath) {\r\n if (!shapesEqual(this.v, newPath)) {\r\n this.v = shapePool.clone(newPath);\r\n this.localShapeCollection.releaseShapes();\r\n this.localShapeCollection.addShape(this.v);\r\n this._mdf = true;\r\n this.paths = this.localShapeCollection;\r\n }\r\n }\r\n\r\n function processEffectsSequence() {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n\r\n if (!this.effectsSequence.length) {\r\n this._mdf = false;\r\n return;\r\n }\r\n\r\n if (this.lock) {\r\n this.setVValue(this.pv);\r\n return;\r\n }\r\n\r\n this.lock = true;\r\n this._mdf = false;\r\n var finalValue;\r\n\r\n if (this.kf) {\r\n finalValue = this.pv;\r\n } else if (this.data.ks) {\r\n finalValue = this.data.ks.k;\r\n } else {\r\n finalValue = this.data.pt.k;\r\n }\r\n\r\n var i;\r\n var len = this.effectsSequence.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n finalValue = this.effectsSequence[i](finalValue);\r\n }\r\n\r\n this.setVValue(finalValue);\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function ShapeProperty(elem, data, type) {\r\n this.propType = 'shape';\r\n this.comp = elem.comp;\r\n this.container = elem;\r\n this.elem = elem;\r\n this.data = data;\r\n this.k = false;\r\n this.kf = false;\r\n this._mdf = false;\r\n var pathData = type === 3 ? data.pt.k : data.ks.k;\r\n this.v = shapePool.clone(pathData);\r\n this.pv = shapePool.clone(this.v);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.paths.addShape(this.v);\r\n this.reset = resetShape;\r\n this.effectsSequence = [];\r\n }\r\n\r\n function addEffect(effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.container.addDynamicProperty(this);\r\n }\r\n\r\n ShapeProperty.prototype.interpolateShape = interpolateShape;\r\n ShapeProperty.prototype.getValue = processEffectsSequence;\r\n ShapeProperty.prototype.setVValue = setVValue;\r\n ShapeProperty.prototype.addEffect = addEffect;\r\n\r\n function KeyframedShapeProperty(elem, data, type) {\r\n this.propType = 'shape';\r\n this.comp = elem.comp;\r\n this.elem = elem;\r\n this.container = elem;\r\n this.offsetTime = elem.data.st;\r\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\r\n this.keyframesMetadata = [];\r\n this.k = true;\r\n this.kf = true;\r\n var len = this.keyframes[0].s[0].i.length;\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(this.keyframes[0].s[0].c, len);\r\n this.pv = shapePool.clone(this.v);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.paths.addShape(this.v);\r\n this.lastFrame = initFrame;\r\n this.reset = resetShape;\r\n this._caching = {\r\n lastFrame: initFrame,\r\n lastIndex: 0\r\n };\r\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\r\n }\r\n\r\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\r\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\r\n KeyframedShapeProperty.prototype.setVValue = setVValue;\r\n KeyframedShapeProperty.prototype.addEffect = addEffect;\r\n\r\n var EllShapeProperty = function () {\r\n var cPoint = roundCorner;\r\n\r\n function EllShapePropertyFactory(elem, data) {\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(true, 4);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.localShapeCollection.addShape(this.v);\r\n this.d = data.d;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.frameId = -1;\r\n this.initDynamicPropertyContainer(elem);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\r\n\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertEllToPath();\r\n }\r\n }\r\n\r\n EllShapePropertyFactory.prototype = {\r\n reset: resetShape,\r\n getValue: function getValue() {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf) {\r\n this.convertEllToPath();\r\n }\r\n },\r\n convertEllToPath: function convertEllToPath() {\r\n var p0 = this.p.v[0];\r\n var p1 = this.p.v[1];\r\n var s0 = this.s.v[0] / 2;\r\n var s1 = this.s.v[1] / 2;\r\n\r\n var _cw = this.d !== 3;\r\n\r\n var _v = this.v;\r\n _v.v[0][0] = p0;\r\n _v.v[0][1] = p1 - s1;\r\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.v[1][1] = p1;\r\n _v.v[2][0] = p0;\r\n _v.v[2][1] = p1 + s1;\r\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.v[3][1] = p1;\r\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\r\n _v.i[0][1] = p1 - s1;\r\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.i[1][1] = p1 - s1 * cPoint;\r\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\r\n _v.i[2][1] = p1 + s1;\r\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.i[3][1] = p1 + s1 * cPoint;\r\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\r\n _v.o[0][1] = p1 - s1;\r\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.o[1][1] = p1 + s1 * cPoint;\r\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\r\n _v.o[2][1] = p1 + s1;\r\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.o[3][1] = p1 - s1 * cPoint;\r\n }\r\n };\r\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\r\n return EllShapePropertyFactory;\r\n }();\r\n\r\n var StarShapeProperty = function () {\r\n function StarShapePropertyFactory(elem, data) {\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(true, 0);\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.data = data;\r\n this.frameId = -1;\r\n this.d = data.d;\r\n this.initDynamicPropertyContainer(elem);\r\n\r\n if (data.sy === 1) {\r\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\r\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\r\n this.convertToPath = this.convertStarToPath;\r\n } else {\r\n this.convertToPath = this.convertPolygonToPath;\r\n }\r\n\r\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\r\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\r\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.localShapeCollection.addShape(this.v);\r\n this.paths = this.localShapeCollection;\r\n\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertToPath();\r\n }\r\n }\r\n\r\n StarShapePropertyFactory.prototype = {\r\n reset: resetShape,\r\n getValue: function getValue() {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf) {\r\n this.convertToPath();\r\n }\r\n },\r\n convertStarToPath: function convertStarToPath() {\r\n var numPts = Math.floor(this.pt.v) * 2;\r\n var angle = Math.PI * 2 / numPts;\r\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\r\n\r\n var longFlag = true;\r\n var longRad = this.or.v;\r\n var shortRad = this.ir.v;\r\n var longRound = this.os.v;\r\n var shortRound = this.is.v;\r\n var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\r\n var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\r\n var i;\r\n var rad;\r\n var roundness;\r\n var perimSegment;\r\n var currentAng = -Math.PI / 2;\r\n currentAng += this.r.v;\r\n var dir = this.data.d === 3 ? -1 : 1;\r\n this.v._length = 0;\r\n\r\n for (i = 0; i < numPts; i += 1) {\r\n rad = longFlag ? longRad : shortRad;\r\n roundness = longFlag ? longRound : shortRound;\r\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\r\n var x = rad * Math.cos(currentAng);\r\n var y = rad * Math.sin(currentAng);\r\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\r\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\r\n x += +this.p.v[0];\r\n y += +this.p.v[1];\r\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\r\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\r\n\r\n longFlag = !longFlag;\r\n currentAng += angle * dir;\r\n }\r\n },\r\n convertPolygonToPath: function convertPolygonToPath() {\r\n var numPts = Math.floor(this.pt.v);\r\n var angle = Math.PI * 2 / numPts;\r\n var rad = this.or.v;\r\n var roundness = this.os.v;\r\n var perimSegment = 2 * Math.PI * rad / (numPts * 4);\r\n var i;\r\n var currentAng = -Math.PI * 0.5;\r\n var dir = this.data.d === 3 ? -1 : 1;\r\n currentAng += this.r.v;\r\n this.v._length = 0;\r\n\r\n for (i = 0; i < numPts; i += 1) {\r\n var x = rad * Math.cos(currentAng);\r\n var y = rad * Math.sin(currentAng);\r\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\r\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\r\n x += +this.p.v[0];\r\n y += +this.p.v[1];\r\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\r\n currentAng += angle * dir;\r\n }\r\n\r\n this.paths.length = 0;\r\n this.paths[0] = this.v;\r\n }\r\n };\r\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\r\n return StarShapePropertyFactory;\r\n }();\r\n\r\n var RectShapeProperty = function () {\r\n function RectShapePropertyFactory(elem, data) {\r\n this.v = shapePool.newElement();\r\n this.v.c = true;\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.localShapeCollection.addShape(this.v);\r\n this.paths = this.localShapeCollection;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.frameId = -1;\r\n this.d = data.d;\r\n this.initDynamicPropertyContainer(elem);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\r\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\r\n\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertRectToPath();\r\n }\r\n }\r\n\r\n RectShapePropertyFactory.prototype = {\r\n convertRectToPath: function convertRectToPath() {\r\n var p0 = this.p.v[0];\r\n var p1 = this.p.v[1];\r\n var v0 = this.s.v[0] / 2;\r\n var v1 = this.s.v[1] / 2;\r\n var round = bmMin(v0, v1, this.r.v);\r\n var cPoint = round * (1 - roundCorner);\r\n this.v._length = 0;\r\n\r\n if (this.d === 2 || this.d === 1) {\r\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\r\n\r\n if (round !== 0) {\r\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\r\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\r\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\r\n } else {\r\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\r\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\r\n }\r\n } else {\r\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\r\n\r\n if (round !== 0) {\r\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\r\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\r\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\r\n } else {\r\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\r\n }\r\n }\r\n },\r\n getValue: function getValue() {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf) {\r\n this.convertRectToPath();\r\n }\r\n },\r\n reset: resetShape\r\n };\r\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\r\n return RectShapePropertyFactory;\r\n }();\r\n\r\n function getShapeProp(elem, data, type) {\r\n var prop;\r\n\r\n if (type === 3 || type === 4) {\r\n var dataProp = type === 3 ? data.pt : data.ks;\r\n var keys = dataProp.k;\r\n\r\n if (keys.length) {\r\n prop = new KeyframedShapeProperty(elem, data, type);\r\n } else {\r\n prop = new ShapeProperty(elem, data, type);\r\n }\r\n } else if (type === 5) {\r\n prop = new RectShapeProperty(elem, data);\r\n } else if (type === 6) {\r\n prop = new EllShapeProperty(elem, data);\r\n } else if (type === 7) {\r\n prop = new StarShapeProperty(elem, data);\r\n }\r\n\r\n if (prop.k) {\r\n elem.addDynamicProperty(prop);\r\n }\r\n\r\n return prop;\r\n }\r\n\r\n function getConstructorFunction() {\r\n return ShapeProperty;\r\n }\r\n\r\n function getKeyframedConstructorFunction() {\r\n return KeyframedShapeProperty;\r\n }\r\n\r\n var ob = {};\r\n ob.getShapeProp = getShapeProp;\r\n ob.getConstructorFunction = getConstructorFunction;\r\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\r\n return ob;\r\n }();\r\n\r\n /*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\r\n\r\n /**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\r\n\r\n var Matrix = function () {\r\n var _cos = Math.cos;\r\n var _sin = Math.sin;\r\n var _tan = Math.tan;\r\n var _rnd = Math.round;\r\n\r\n function reset() {\r\n this.props[0] = 1;\r\n this.props[1] = 0;\r\n this.props[2] = 0;\r\n this.props[3] = 0;\r\n this.props[4] = 0;\r\n this.props[5] = 1;\r\n this.props[6] = 0;\r\n this.props[7] = 0;\r\n this.props[8] = 0;\r\n this.props[9] = 0;\r\n this.props[10] = 1;\r\n this.props[11] = 0;\r\n this.props[12] = 0;\r\n this.props[13] = 0;\r\n this.props[14] = 0;\r\n this.props[15] = 1;\r\n return this;\r\n }\r\n\r\n function rotate(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n\r\n var mCos = _cos(angle);\r\n\r\n var mSin = _sin(angle);\r\n\r\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateX(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n\r\n var mCos = _cos(angle);\r\n\r\n var mSin = _sin(angle);\r\n\r\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateY(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n\r\n var mCos = _cos(angle);\r\n\r\n var mSin = _sin(angle);\r\n\r\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateZ(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n\r\n var mCos = _cos(angle);\r\n\r\n var mSin = _sin(angle);\r\n\r\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function shear(sx, sy) {\r\n return this._t(1, sy, sx, 1, 0, 0);\r\n }\r\n\r\n function skew(ax, ay) {\r\n return this.shear(_tan(ax), _tan(ay));\r\n }\r\n\r\n function skewFromAxis(ax, angle) {\r\n var mCos = _cos(angle);\r\n\r\n var mSin = _sin(angle);\r\n\r\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\r\n }\r\n\r\n function scale(sx, sy, sz) {\r\n if (!sz && sz !== 0) {\r\n sz = 1;\r\n }\r\n\r\n if (sx === 1 && sy === 1 && sz === 1) {\r\n return this;\r\n }\r\n\r\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\r\n this.props[0] = a;\r\n this.props[1] = b;\r\n this.props[2] = c;\r\n this.props[3] = d;\r\n this.props[4] = e;\r\n this.props[5] = f;\r\n this.props[6] = g;\r\n this.props[7] = h;\r\n this.props[8] = i;\r\n this.props[9] = j;\r\n this.props[10] = k;\r\n this.props[11] = l;\r\n this.props[12] = m;\r\n this.props[13] = n;\r\n this.props[14] = o;\r\n this.props[15] = p;\r\n return this;\r\n }\r\n\r\n function translate(tx, ty, tz) {\r\n tz = tz || 0;\r\n\r\n if (tx !== 0 || ty !== 0 || tz !== 0) {\r\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\r\n var _p = this.props;\r\n\r\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\r\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\r\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\r\n _p[12] = _p[12] * a2 + _p[15] * m2;\r\n _p[13] = _p[13] * f2 + _p[15] * n2;\r\n _p[14] = _p[14] * k2 + _p[15] * o2;\r\n _p[15] *= p2; // }\r\n\r\n this._identityCalculated = false;\r\n return this;\r\n }\r\n\r\n var a1 = _p[0];\r\n var b1 = _p[1];\r\n var c1 = _p[2];\r\n var d1 = _p[3];\r\n var e1 = _p[4];\r\n var f1 = _p[5];\r\n var g1 = _p[6];\r\n var h1 = _p[7];\r\n var i1 = _p[8];\r\n var j1 = _p[9];\r\n var k1 = _p[10];\r\n var l1 = _p[11];\r\n var m1 = _p[12];\r\n var n1 = _p[13];\r\n var o1 = _p[14];\r\n var p1 = _p[15];\r\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\r\n\r\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\r\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\r\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\r\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\r\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\r\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\r\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\r\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\r\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\r\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\r\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\r\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\r\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\r\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\r\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\r\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\r\n this._identityCalculated = false;\r\n return this;\r\n }\r\n\r\n function isIdentity() {\r\n if (!this._identityCalculated) {\r\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\r\n this._identityCalculated = true;\r\n }\r\n\r\n return this._identity;\r\n }\r\n\r\n function equals(matr) {\r\n var i = 0;\r\n\r\n while (i < 16) {\r\n if (matr.props[i] !== this.props[i]) {\r\n return false;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function clone(matr) {\r\n var i;\r\n\r\n for (i = 0; i < 16; i += 1) {\r\n matr.props[i] = this.props[i];\r\n }\r\n\r\n return matr;\r\n }\r\n\r\n function cloneFromProps(props) {\r\n var i;\r\n\r\n for (i = 0; i < 16; i += 1) {\r\n this.props[i] = props[i];\r\n }\r\n }\r\n\r\n function applyToPoint(x, y, z) {\r\n return {\r\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\r\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\r\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\r\n };\r\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\r\n }\r\n\r\n function applyToX(x, y, z) {\r\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\r\n }\r\n\r\n function applyToY(x, y, z) {\r\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\r\n }\r\n\r\n function applyToZ(x, y, z) {\r\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\r\n }\r\n\r\n function getInverseMatrix() {\r\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\r\n var a = this.props[5] / determinant;\r\n var b = -this.props[1] / determinant;\r\n var c = -this.props[4] / determinant;\r\n var d = this.props[0] / determinant;\r\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\r\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\r\n var inverseMatrix = new Matrix();\r\n inverseMatrix.props[0] = a;\r\n inverseMatrix.props[1] = b;\r\n inverseMatrix.props[4] = c;\r\n inverseMatrix.props[5] = d;\r\n inverseMatrix.props[12] = e;\r\n inverseMatrix.props[13] = f;\r\n return inverseMatrix;\r\n }\r\n\r\n function inversePoint(pt) {\r\n var inverseMatrix = this.getInverseMatrix();\r\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\r\n }\r\n\r\n function inversePoints(pts) {\r\n var i;\r\n var len = pts.length;\r\n var retPts = [];\r\n\r\n for (i = 0; i < len; i += 1) {\r\n retPts[i] = inversePoint(pts[i]);\r\n }\r\n\r\n return retPts;\r\n }\r\n\r\n function applyToTriplePoints(pt1, pt2, pt3) {\r\n var arr = createTypedArray('float32', 6);\r\n\r\n if (this.isIdentity()) {\r\n arr[0] = pt1[0];\r\n arr[1] = pt1[1];\r\n arr[2] = pt2[0];\r\n arr[3] = pt2[1];\r\n arr[4] = pt3[0];\r\n arr[5] = pt3[1];\r\n } else {\r\n var p0 = this.props[0];\r\n var p1 = this.props[1];\r\n var p4 = this.props[4];\r\n var p5 = this.props[5];\r\n var p12 = this.props[12];\r\n var p13 = this.props[13];\r\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\r\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\r\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\r\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\r\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\r\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n function applyToPointArray(x, y, z) {\r\n var arr;\r\n\r\n if (this.isIdentity()) {\r\n arr = [x, y, z];\r\n } else {\r\n arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n function applyToPointStringified(x, y) {\r\n if (this.isIdentity()) {\r\n return x + ',' + y;\r\n }\r\n\r\n var _p = this.props;\r\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\r\n }\r\n\r\n function toCSS() {\r\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\r\n\r\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\r\n var i = 0;\r\n var props = this.props;\r\n var cssValue = 'matrix3d(';\r\n var v = 10000;\r\n\r\n while (i < 16) {\r\n cssValue += _rnd(props[i] * v) / v;\r\n cssValue += i === 15 ? ')' : ',';\r\n i += 1;\r\n }\r\n\r\n return cssValue;\r\n }\r\n\r\n function roundMatrixProperty(val) {\r\n var v = 10000;\r\n\r\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\r\n return _rnd(val * v) / v;\r\n }\r\n\r\n return val;\r\n }\r\n\r\n function to2dCSS() {\r\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\r\n\r\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\r\n var props = this.props;\r\n\r\n var _a = roundMatrixProperty(props[0]);\r\n\r\n var _b = roundMatrixProperty(props[1]);\r\n\r\n var _c = roundMatrixProperty(props[4]);\r\n\r\n var _d = roundMatrixProperty(props[5]);\r\n\r\n var _e = roundMatrixProperty(props[12]);\r\n\r\n var _f = roundMatrixProperty(props[13]);\r\n\r\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\r\n }\r\n\r\n return function () {\r\n this.reset = reset;\r\n this.rotate = rotate;\r\n this.rotateX = rotateX;\r\n this.rotateY = rotateY;\r\n this.rotateZ = rotateZ;\r\n this.skew = skew;\r\n this.skewFromAxis = skewFromAxis;\r\n this.shear = shear;\r\n this.scale = scale;\r\n this.setTransform = setTransform;\r\n this.translate = translate;\r\n this.transform = transform;\r\n this.applyToPoint = applyToPoint;\r\n this.applyToX = applyToX;\r\n this.applyToY = applyToY;\r\n this.applyToZ = applyToZ;\r\n this.applyToPointArray = applyToPointArray;\r\n this.applyToTriplePoints = applyToTriplePoints;\r\n this.applyToPointStringified = applyToPointStringified;\r\n this.toCSS = toCSS;\r\n this.to2dCSS = to2dCSS;\r\n this.clone = clone;\r\n this.cloneFromProps = cloneFromProps;\r\n this.equals = equals;\r\n this.inversePoints = inversePoints;\r\n this.inversePoint = inversePoint;\r\n this.getInverseMatrix = getInverseMatrix;\r\n this._t = this.transform;\r\n this.isIdentity = isIdentity;\r\n this._identity = true;\r\n this._identityCalculated = false;\r\n this.props = createTypedArray('float32', 16);\r\n this.reset();\r\n };\r\n }();\r\n\r\n function _typeof$3(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\r\n var lottie = {};\r\n var standalone = '__[STANDALONE]__';\r\n var animationData = '__[ANIMATIONDATA]__';\r\n var renderer = '';\r\n\r\n function setLocation(href) {\r\n setLocationHref(href);\r\n }\r\n\r\n function searchAnimations() {\r\n if (standalone === true) {\r\n animationManager.searchAnimations(animationData, standalone, renderer);\r\n } else {\r\n animationManager.searchAnimations();\r\n }\r\n }\r\n\r\n function setSubframeRendering(flag) {\r\n setSubframeEnabled(flag);\r\n }\r\n\r\n function setPrefix(prefix) {\r\n setIdPrefix(prefix);\r\n }\r\n\r\n function loadAnimation(params) {\r\n if (standalone === true) {\r\n params.animationData = JSON.parse(animationData);\r\n }\r\n\r\n return animationManager.loadAnimation(params);\r\n }\r\n\r\n function setQuality(value) {\r\n if (typeof value === 'string') {\r\n switch (value) {\r\n case 'high':\r\n setDefaultCurveSegments(200);\r\n break;\r\n\r\n default:\r\n case 'medium':\r\n setDefaultCurveSegments(50);\r\n break;\r\n\r\n case 'low':\r\n setDefaultCurveSegments(10);\r\n break;\r\n }\r\n } else if (!isNaN(value) && value > 1) {\r\n setDefaultCurveSegments(value);\r\n }\r\n\r\n if (getDefaultCurveSegments() >= 50) {\r\n roundValues(false);\r\n } else {\r\n roundValues(true);\r\n }\r\n }\r\n\r\n function inBrowser() {\r\n return typeof navigator !== 'undefined';\r\n }\r\n\r\n function installPlugin(type, plugin) {\r\n if (type === 'expressions') {\r\n setExpressionsPlugin(plugin);\r\n }\r\n }\r\n\r\n function getFactory(name) {\r\n switch (name) {\r\n case 'propertyFactory':\r\n return PropertyFactory;\r\n\r\n case 'shapePropertyFactory':\r\n return ShapePropertyFactory;\r\n\r\n case 'matrix':\r\n return Matrix;\r\n\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n lottie.play = animationManager.play;\r\n lottie.pause = animationManager.pause;\r\n lottie.setLocationHref = setLocation;\r\n lottie.togglePause = animationManager.togglePause;\r\n lottie.setSpeed = animationManager.setSpeed;\r\n lottie.setDirection = animationManager.setDirection;\r\n lottie.stop = animationManager.stop;\r\n lottie.searchAnimations = searchAnimations;\r\n lottie.registerAnimation = animationManager.registerAnimation;\r\n lottie.loadAnimation = loadAnimation;\r\n lottie.setSubframeRendering = setSubframeRendering;\r\n lottie.resize = animationManager.resize; // lottie.start = start;\r\n\r\n lottie.goToAndStop = animationManager.goToAndStop;\r\n lottie.destroy = animationManager.destroy;\r\n lottie.setQuality = setQuality;\r\n lottie.inBrowser = inBrowser;\r\n lottie.installPlugin = installPlugin;\r\n lottie.freeze = animationManager.freeze;\r\n lottie.unfreeze = animationManager.unfreeze;\r\n lottie.setVolume = animationManager.setVolume;\r\n lottie.mute = animationManager.mute;\r\n lottie.unmute = animationManager.unmute;\r\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\r\n lottie.useWebWorker = setWebWorker;\r\n lottie.setIDPrefix = setPrefix;\r\n lottie.__getFactory = getFactory;\r\n lottie.version = '5.10.0';\r\n\r\n function checkReady() {\r\n if (document.readyState === 'complete') {\r\n clearInterval(readyStateCheckInterval);\r\n searchAnimations();\r\n }\r\n }\r\n\r\n function getQueryVariable(variable) {\r\n var vars = queryString.split('&');\r\n\r\n for (var i = 0; i < vars.length; i += 1) {\r\n var pair = vars[i].split('=');\r\n\r\n if (decodeURIComponent(pair[0]) == variable) {\r\n // eslint-disable-line eqeqeq\r\n return decodeURIComponent(pair[1]);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var queryString = '';\r\n\r\n if (standalone) {\r\n var scripts = document.getElementsByTagName('script');\r\n var index = scripts.length - 1;\r\n var myScript = scripts[index] || {\r\n src: ''\r\n };\r\n queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\r\n\r\n renderer = getQueryVariable('renderer');\r\n }\r\n\r\n var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\r\n\r\n try {\r\n if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\r\n ) {\r\n window.bodymovin = lottie;\r\n }\r\n } catch (err) {//\r\n }\r\n\r\n var ShapeModifiers = function () {\r\n var ob = {};\r\n var modifiers = {};\r\n ob.registerModifier = registerModifier;\r\n ob.getModifier = getModifier;\r\n\r\n function registerModifier(nm, factory) {\r\n if (!modifiers[nm]) {\r\n modifiers[nm] = factory;\r\n }\r\n }\r\n\r\n function getModifier(nm, elem, data) {\r\n return new modifiers[nm](elem, data);\r\n }\r\n\r\n return ob;\r\n }();\r\n\r\n function ShapeModifier() {}\r\n\r\n ShapeModifier.prototype.initModifierProperties = function () {};\r\n\r\n ShapeModifier.prototype.addShapeToModifier = function () {};\r\n\r\n ShapeModifier.prototype.addShape = function (data) {\r\n if (!this.closed) {\r\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\r\n data.sh.container.addDynamicProperty(data.sh);\r\n var shapeData = {\r\n shape: data.sh,\r\n data: data,\r\n localShapeCollection: shapeCollectionPool.newShapeCollection()\r\n };\r\n this.shapes.push(shapeData);\r\n this.addShapeToModifier(shapeData);\r\n\r\n if (this._isAnimated) {\r\n data.setAsAnimated();\r\n }\r\n }\r\n };\r\n\r\n ShapeModifier.prototype.init = function (elem, data) {\r\n this.shapes = [];\r\n this.elem = elem;\r\n this.initDynamicPropertyContainer(elem);\r\n this.initModifierProperties(elem, data);\r\n this.frameId = initialDefaultFrame;\r\n this.closed = false;\r\n this.k = false;\r\n\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.getValue(true);\r\n }\r\n };\r\n\r\n ShapeModifier.prototype.processKeys = function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n };\r\n\r\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\r\n\r\n function TrimModifier() {}\r\n\r\n extendPrototype([ShapeModifier], TrimModifier);\r\n\r\n TrimModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\r\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\r\n this.sValue = 0;\r\n this.eValue = 0;\r\n this.getValue = this.processKeys;\r\n this.m = data.m;\r\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\r\n };\r\n\r\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\r\n shapeData.pathsData = [];\r\n };\r\n\r\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\r\n var segments = [];\r\n\r\n if (e <= 1) {\r\n segments.push({\r\n s: s,\r\n e: e\r\n });\r\n } else if (s >= 1) {\r\n segments.push({\r\n s: s - 1,\r\n e: e - 1\r\n });\r\n } else {\r\n segments.push({\r\n s: s,\r\n e: 1\r\n });\r\n segments.push({\r\n s: 0,\r\n e: e - 1\r\n });\r\n }\r\n\r\n var shapeSegments = [];\r\n var i;\r\n var len = segments.length;\r\n var segmentOb;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n segmentOb = segments[i];\r\n\r\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\r\n var shapeS;\r\n var shapeE;\r\n\r\n if (segmentOb.s * totalModifierLength <= addedLength) {\r\n shapeS = 0;\r\n } else {\r\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\r\n }\r\n\r\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\r\n shapeE = 1;\r\n } else {\r\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\r\n }\r\n\r\n shapeSegments.push([shapeS, shapeE]);\r\n }\r\n }\r\n\r\n if (!shapeSegments.length) {\r\n shapeSegments.push([0, 0]);\r\n }\r\n\r\n return shapeSegments;\r\n };\r\n\r\n TrimModifier.prototype.releasePathsData = function (pathsData) {\r\n var i;\r\n var len = pathsData.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n segmentsLengthPool.release(pathsData[i]);\r\n }\r\n\r\n pathsData.length = 0;\r\n return pathsData;\r\n };\r\n\r\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var s;\r\n var e;\r\n\r\n if (this._mdf || _isFirstFrame) {\r\n var o = this.o.v % 360 / 360;\r\n\r\n if (o < 0) {\r\n o += 1;\r\n }\r\n\r\n if (this.s.v > 1) {\r\n s = 1 + o;\r\n } else if (this.s.v < 0) {\r\n s = 0 + o;\r\n } else {\r\n s = this.s.v + o;\r\n }\r\n\r\n if (this.e.v > 1) {\r\n e = 1 + o;\r\n } else if (this.e.v < 0) {\r\n e = 0 + o;\r\n } else {\r\n e = this.e.v + o;\r\n }\r\n\r\n if (s > e) {\r\n var _s = s;\r\n s = e;\r\n e = _s;\r\n }\r\n\r\n s = Math.round(s * 10000) * 0.0001;\r\n e = Math.round(e * 10000) * 0.0001;\r\n this.sValue = s;\r\n this.eValue = e;\r\n } else {\r\n s = this.sValue;\r\n e = this.eValue;\r\n }\r\n\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var pathsData;\r\n var pathData;\r\n var totalShapeLength;\r\n var totalModifierLength = 0;\r\n\r\n if (e === s) {\r\n for (i = 0; i < len; i += 1) {\r\n this.shapes[i].localShapeCollection.releaseShapes();\r\n this.shapes[i].shape._mdf = true;\r\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\r\n\r\n if (this._mdf) {\r\n this.shapes[i].pathsData.length = 0;\r\n }\r\n }\r\n } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\r\n var segments = [];\r\n var shapeData;\r\n var localShapeCollection;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\r\n\r\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n } else {\r\n shapePaths = shapeData.shape.paths;\r\n jLen = shapePaths._length;\r\n totalShapeLength = 0;\r\n\r\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\r\n totalShapeLength = shapeData.totalShapeLength;\r\n } else {\r\n pathsData = this.releasePathsData(shapeData.pathsData);\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\r\n pathsData.push(pathData);\r\n totalShapeLength += pathData.totalLength;\r\n }\r\n\r\n shapeData.totalShapeLength = totalShapeLength;\r\n shapeData.pathsData = pathsData;\r\n }\r\n\r\n totalModifierLength += totalShapeLength;\r\n shapeData.shape._mdf = true;\r\n }\r\n }\r\n\r\n var shapeS = s;\r\n var shapeE = e;\r\n var addedLength = 0;\r\n var edges;\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n shapeData = this.shapes[i];\r\n\r\n if (shapeData.shape._mdf) {\r\n localShapeCollection = shapeData.localShapeCollection;\r\n localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\r\n\r\n if (this.m === 2 && len > 1) {\r\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\r\n addedLength += shapeData.totalShapeLength;\r\n } else {\r\n edges = [[shapeS, shapeE]];\r\n }\r\n\r\n jLen = edges.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n shapeS = edges[j][0];\r\n shapeE = edges[j][1];\r\n segments.length = 0;\r\n\r\n if (shapeE <= 1) {\r\n segments.push({\r\n s: shapeData.totalShapeLength * shapeS,\r\n e: shapeData.totalShapeLength * shapeE\r\n });\r\n } else if (shapeS >= 1) {\r\n segments.push({\r\n s: shapeData.totalShapeLength * (shapeS - 1),\r\n e: shapeData.totalShapeLength * (shapeE - 1)\r\n });\r\n } else {\r\n segments.push({\r\n s: shapeData.totalShapeLength * shapeS,\r\n e: shapeData.totalShapeLength\r\n });\r\n segments.push({\r\n s: 0,\r\n e: shapeData.totalShapeLength * (shapeE - 1)\r\n });\r\n }\r\n\r\n var newShapesData = this.addShapes(shapeData, segments[0]);\r\n\r\n if (segments[0].s !== segments[0].e) {\r\n if (segments.length > 1) {\r\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\r\n\r\n if (lastShapeInCollection.c) {\r\n var lastShape = newShapesData.pop();\r\n this.addPaths(newShapesData, localShapeCollection);\r\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\r\n } else {\r\n this.addPaths(newShapesData, localShapeCollection);\r\n newShapesData = this.addShapes(shapeData, segments[1]);\r\n }\r\n }\r\n\r\n this.addPaths(newShapesData, localShapeCollection);\r\n }\r\n }\r\n\r\n shapeData.shape.paths = localShapeCollection;\r\n }\r\n }\r\n } else if (this._mdf) {\r\n for (i = 0; i < len; i += 1) {\r\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\r\n // Don't remove this even if it's losing cached info.\r\n this.shapes[i].pathsData.length = 0;\r\n this.shapes[i].shape._mdf = true;\r\n }\r\n }\r\n };\r\n\r\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\r\n var i;\r\n var len = newPaths.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n localShapeCollection.addShape(newPaths[i]);\r\n }\r\n };\r\n\r\n TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\r\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\r\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\r\n\r\n if (newShape) {\r\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\r\n }\r\n\r\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\r\n };\r\n\r\n TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\r\n shapePath.setXYAt(points[1], points[5], 'o', pos);\r\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\r\n\r\n if (newShape) {\r\n shapePath.setXYAt(points[0], points[4], 'v', pos);\r\n }\r\n\r\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\r\n };\r\n\r\n TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\r\n var pathsData = shapeData.pathsData;\r\n var shapePaths = shapeData.shape.paths.shapes;\r\n var i;\r\n var len = shapeData.shape.paths._length;\r\n var j;\r\n var jLen;\r\n var addedLength = 0;\r\n var currentLengthData;\r\n var segmentCount;\r\n var lengths;\r\n var segment;\r\n var shapes = [];\r\n var initPos;\r\n var newShape = true;\r\n\r\n if (!shapePath) {\r\n shapePath = shapePool.newElement();\r\n segmentCount = 0;\r\n initPos = 0;\r\n } else {\r\n segmentCount = shapePath._length;\r\n initPos = shapePath._length;\r\n }\r\n\r\n shapes.push(shapePath);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n lengths = pathsData[i].lengths;\r\n shapePath.c = shapePaths[i].c;\r\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\r\n\r\n for (j = 1; j < jLen; j += 1) {\r\n currentLengthData = lengths[j - 1];\r\n\r\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\r\n addedLength += currentLengthData.addedLength;\r\n shapePath.c = false;\r\n } else if (addedLength > shapeSegment.e) {\r\n shapePath.c = false;\r\n break;\r\n } else {\r\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\r\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\r\n newShape = false;\r\n } else {\r\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\r\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n\r\n newShape = false;\r\n shapePath.c = false;\r\n }\r\n\r\n addedLength += currentLengthData.addedLength;\r\n segmentCount += 1;\r\n }\r\n }\r\n\r\n if (shapePaths[i].c && lengths.length) {\r\n currentLengthData = lengths[j - 1];\r\n\r\n if (addedLength <= shapeSegment.e) {\r\n var segmentLength = lengths[j - 1].addedLength;\r\n\r\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\r\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\r\n newShape = false;\r\n } else {\r\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\r\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n\r\n newShape = false;\r\n shapePath.c = false;\r\n }\r\n } else {\r\n shapePath.c = false;\r\n }\r\n\r\n addedLength += currentLengthData.addedLength;\r\n segmentCount += 1;\r\n }\r\n\r\n if (shapePath._length) {\r\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\r\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\r\n }\r\n\r\n if (addedLength > shapeSegment.e) {\r\n break;\r\n }\r\n\r\n if (i < len - 1) {\r\n shapePath = shapePool.newElement();\r\n newShape = true;\r\n shapes.push(shapePath);\r\n segmentCount = 0;\r\n }\r\n }\r\n\r\n return shapes;\r\n };\r\n\r\n function PuckerAndBloatModifier() {}\r\n\r\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\r\n\r\n PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\r\n this._isAnimated = !!this.amount.effectsSequence.length;\r\n };\r\n\r\n PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\r\n var percent = amount / 100;\r\n var centerPoint = [0, 0];\r\n var pathLength = path._length;\r\n var i = 0;\r\n\r\n for (i = 0; i < pathLength; i += 1) {\r\n centerPoint[0] += path.v[i][0];\r\n centerPoint[1] += path.v[i][1];\r\n }\r\n\r\n centerPoint[0] /= pathLength;\r\n centerPoint[1] /= pathLength;\r\n var clonedPath = shapePool.newElement();\r\n clonedPath.c = path.c;\r\n var vX;\r\n var vY;\r\n var oX;\r\n var oY;\r\n var iX;\r\n var iY;\r\n\r\n for (i = 0; i < pathLength; i += 1) {\r\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\r\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\r\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\r\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\r\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\r\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\r\n }\r\n\r\n return clonedPath;\r\n };\r\n\r\n PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var amount = this.amount.v;\r\n\r\n if (amount !== 0) {\r\n var shapeData;\r\n var localShapeCollection;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n\r\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n localShapeCollection.releaseShapes();\r\n shapeData.shape._mdf = true;\r\n shapePaths = shapeData.shape.paths.shapes;\r\n jLen = shapeData.shape.paths._length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\r\n }\r\n }\r\n\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n };\r\n\r\n var TransformPropertyFactory = function () {\r\n var defaultVector = [0, 0];\r\n\r\n function applyToMatrix(mat) {\r\n var _mdf = this._mdf;\r\n this.iterateDynamicProperties();\r\n this._mdf = this._mdf || _mdf;\r\n\r\n if (this.a) {\r\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n }\r\n\r\n if (this.s) {\r\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n }\r\n\r\n if (this.sk) {\r\n mat.skewFromAxis(-this.sk.v, this.sa.v);\r\n }\r\n\r\n if (this.r) {\r\n mat.rotate(-this.r.v);\r\n } else {\r\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\r\n }\r\n\r\n if (this.data.p.s) {\r\n if (this.data.p.z) {\r\n mat.translate(this.px.v, this.py.v, -this.pz.v);\r\n } else {\r\n mat.translate(this.px.v, this.py.v, 0);\r\n }\r\n } else {\r\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\r\n }\r\n }\r\n\r\n function processKeys(forceRender) {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n\r\n if (this._isDirty) {\r\n this.precalculateMatrix();\r\n this._isDirty = false;\r\n }\r\n\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf || forceRender) {\r\n var frameRate;\r\n this.v.cloneFromProps(this.pre.props);\r\n\r\n if (this.appliedTransformations < 1) {\r\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n }\r\n\r\n if (this.appliedTransformations < 2) {\r\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n }\r\n\r\n if (this.sk && this.appliedTransformations < 3) {\r\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\r\n }\r\n\r\n if (this.r && this.appliedTransformations < 4) {\r\n this.v.rotate(-this.r.v);\r\n } else if (!this.r && this.appliedTransformations < 4) {\r\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\r\n }\r\n\r\n if (this.autoOriented) {\r\n var v1;\r\n var v2;\r\n frameRate = this.elem.globalData.frameRate;\r\n\r\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\r\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\r\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\r\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\r\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\r\n v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\r\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\r\n } else {\r\n v1 = this.p.pv;\r\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\r\n }\r\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\r\n v1 = [];\r\n v2 = [];\r\n var px = this.px;\r\n var py = this.py;\r\n\r\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\r\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\r\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\r\n v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\r\n v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\r\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\r\n v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\r\n v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\r\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\r\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\r\n } else {\r\n v1 = [px.pv, py.pv];\r\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\r\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\r\n }\r\n } else {\r\n v2 = defaultVector;\r\n v1 = v2;\r\n }\r\n\r\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\r\n }\r\n\r\n if (this.data.p && this.data.p.s) {\r\n if (this.data.p.z) {\r\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\r\n } else {\r\n this.v.translate(this.px.v, this.py.v, 0);\r\n }\r\n } else {\r\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\r\n }\r\n }\r\n\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function precalculateMatrix() {\r\n if (!this.a.k) {\r\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n this.appliedTransformations = 1;\r\n } else {\r\n return;\r\n }\r\n\r\n if (!this.s.effectsSequence.length) {\r\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n this.appliedTransformations = 2;\r\n } else {\r\n return;\r\n }\r\n\r\n if (this.sk) {\r\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\r\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\r\n this.appliedTransformations = 3;\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n if (this.r) {\r\n if (!this.r.effectsSequence.length) {\r\n this.pre.rotate(-this.r.v);\r\n this.appliedTransformations = 4;\r\n }\r\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\r\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\r\n this.appliedTransformations = 4;\r\n }\r\n }\r\n\r\n function autoOrient() {//\r\n // var prevP = this.getValueAtTime();\r\n }\r\n\r\n function addDynamicProperty(prop) {\r\n this._addDynamicProperty(prop);\r\n\r\n this.elem.addDynamicProperty(prop);\r\n this._isDirty = true;\r\n }\r\n\r\n function TransformProperty(elem, data, container) {\r\n this.elem = elem;\r\n this.frameId = -1;\r\n this.propType = 'transform';\r\n this.data = data;\r\n this.v = new Matrix(); // Precalculated matrix with non animated properties\r\n\r\n this.pre = new Matrix();\r\n this.appliedTransformations = 0;\r\n this.initDynamicPropertyContainer(container || elem);\r\n\r\n if (data.p && data.p.s) {\r\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\r\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\r\n\r\n if (data.p.z) {\r\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\r\n }\r\n } else {\r\n this.p = PropertyFactory.getProp(elem, data.p || {\r\n k: [0, 0, 0]\r\n }, 1, 0, this);\r\n }\r\n\r\n if (data.rx) {\r\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\r\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\r\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\r\n\r\n if (data.or.k[0].ti) {\r\n var i;\r\n var len = data.or.k.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n data.or.k[i].to = null;\r\n data.or.k[i].ti = null;\r\n }\r\n }\r\n\r\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\r\n\r\n this.or.sh = true;\r\n } else {\r\n this.r = PropertyFactory.getProp(elem, data.r || {\r\n k: 0\r\n }, 0, degToRads, this);\r\n }\r\n\r\n if (data.sk) {\r\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\r\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\r\n }\r\n\r\n this.a = PropertyFactory.getProp(elem, data.a || {\r\n k: [0, 0, 0]\r\n }, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s || {\r\n k: [100, 100, 100]\r\n }, 1, 0.01, this); // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\r\n\r\n if (data.o) {\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\r\n } else {\r\n this.o = {\r\n _mdf: false,\r\n v: 1\r\n };\r\n }\r\n\r\n this._isDirty = true;\r\n\r\n if (!this.dynamicProperties.length) {\r\n this.getValue(true);\r\n }\r\n }\r\n\r\n TransformProperty.prototype = {\r\n applyToMatrix: applyToMatrix,\r\n getValue: processKeys,\r\n precalculateMatrix: precalculateMatrix,\r\n autoOrient: autoOrient\r\n };\r\n extendPrototype([DynamicPropertyContainer], TransformProperty);\r\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\r\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\r\n\r\n function getTransformProperty(elem, data, container) {\r\n return new TransformProperty(elem, data, container);\r\n }\r\n\r\n return {\r\n getTransformProperty: getTransformProperty\r\n };\r\n }();\r\n\r\n function RepeaterModifier() {}\r\n\r\n extendPrototype([ShapeModifier], RepeaterModifier);\r\n\r\n RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\r\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\r\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\r\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\r\n this.data = data;\r\n\r\n if (!this.dynamicProperties.length) {\r\n this.getValue(true);\r\n }\r\n\r\n this._isAnimated = !!this.dynamicProperties.length;\r\n this.pMatrix = new Matrix();\r\n this.rMatrix = new Matrix();\r\n this.sMatrix = new Matrix();\r\n this.tMatrix = new Matrix();\r\n this.matrix = new Matrix();\r\n };\r\n\r\n RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\r\n var dir = inv ? -1 : 1;\r\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\r\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\r\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\r\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\r\n rMatrix.rotate(-transform.r.v * dir * perc);\r\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\r\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\r\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\r\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\r\n };\r\n\r\n RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\r\n this.elem = elem;\r\n this.arr = arr;\r\n this.pos = pos;\r\n this.elemsData = elemsData;\r\n this._currentCopies = 0;\r\n this._elements = [];\r\n this._groups = [];\r\n this.frameId = -1;\r\n this.initDynamicPropertyContainer(elem);\r\n this.initModifierProperties(elem, arr[pos]);\r\n\r\n while (pos > 0) {\r\n pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\r\n\r\n this._elements.unshift(arr[pos]);\r\n }\r\n\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.getValue(true);\r\n }\r\n };\r\n\r\n RepeaterModifier.prototype.resetElements = function (elements) {\r\n var i;\r\n var len = elements.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n elements[i]._processed = false;\r\n\r\n if (elements[i].ty === 'gr') {\r\n this.resetElements(elements[i].it);\r\n }\r\n }\r\n };\r\n\r\n RepeaterModifier.prototype.cloneElements = function (elements) {\r\n var newElements = JSON.parse(JSON.stringify(elements));\r\n this.resetElements(newElements);\r\n return newElements;\r\n };\r\n\r\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\r\n var i;\r\n var len = elements.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n elements[i]._render = renderFlag;\r\n\r\n if (elements[i].ty === 'gr') {\r\n this.changeGroupRender(elements[i].it, renderFlag);\r\n }\r\n }\r\n };\r\n\r\n RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var items;\r\n var itemsTransform;\r\n var i;\r\n var dir;\r\n var cont;\r\n var hasReloaded = false;\r\n\r\n if (this._mdf || _isFirstFrame) {\r\n var copies = Math.ceil(this.c.v);\r\n\r\n if (this._groups.length < copies) {\r\n while (this._groups.length < copies) {\r\n var group = {\r\n it: this.cloneElements(this._elements),\r\n ty: 'gr'\r\n };\r\n group.it.push({\r\n a: {\r\n a: 0,\r\n ix: 1,\r\n k: [0, 0]\r\n },\r\n nm: 'Transform',\r\n o: {\r\n a: 0,\r\n ix: 7,\r\n k: 100\r\n },\r\n p: {\r\n a: 0,\r\n ix: 2,\r\n k: [0, 0]\r\n },\r\n r: {\r\n a: 1,\r\n ix: 6,\r\n k: [{\r\n s: 0,\r\n e: 0,\r\n t: 0\r\n }, {\r\n s: 0,\r\n e: 0,\r\n t: 1\r\n }]\r\n },\r\n s: {\r\n a: 0,\r\n ix: 3,\r\n k: [100, 100]\r\n },\r\n sa: {\r\n a: 0,\r\n ix: 5,\r\n k: 0\r\n },\r\n sk: {\r\n a: 0,\r\n ix: 4,\r\n k: 0\r\n },\r\n ty: 'tr'\r\n });\r\n this.arr.splice(0, 0, group);\r\n\r\n this._groups.splice(0, 0, group);\r\n\r\n this._currentCopies += 1;\r\n }\r\n\r\n this.elem.reloadShapes();\r\n hasReloaded = true;\r\n }\r\n\r\n cont = 0;\r\n var renderFlag;\r\n\r\n for (i = 0; i <= this._groups.length - 1; i += 1) {\r\n renderFlag = cont < copies;\r\n this._groups[i]._render = renderFlag;\r\n this.changeGroupRender(this._groups[i].it, renderFlag);\r\n\r\n if (!renderFlag) {\r\n var elems = this.elemsData[i].it;\r\n var transformData = elems[elems.length - 1];\r\n\r\n if (transformData.transform.op.v !== 0) {\r\n transformData.transform.op._mdf = true;\r\n transformData.transform.op.v = 0;\r\n } else {\r\n transformData.transform.op._mdf = false;\r\n }\r\n }\r\n\r\n cont += 1;\r\n }\r\n\r\n this._currentCopies = copies; /// /\r\n\r\n var offset = this.o.v;\r\n var offsetModulo = offset % 1;\r\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\r\n var pProps = this.pMatrix.props;\r\n var rProps = this.rMatrix.props;\r\n var sProps = this.sMatrix.props;\r\n this.pMatrix.reset();\r\n this.rMatrix.reset();\r\n this.sMatrix.reset();\r\n this.tMatrix.reset();\r\n this.matrix.reset();\r\n var iteration = 0;\r\n\r\n if (offset > 0) {\r\n while (iteration < roundOffset) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\r\n iteration += 1;\r\n }\r\n\r\n if (offsetModulo) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\r\n iteration += offsetModulo;\r\n }\r\n } else if (offset < 0) {\r\n while (iteration > roundOffset) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\r\n iteration -= 1;\r\n }\r\n\r\n if (offsetModulo) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\r\n iteration -= offsetModulo;\r\n }\r\n }\r\n\r\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\r\n dir = this.data.m === 1 ? 1 : -1;\r\n cont = this._currentCopies;\r\n var j;\r\n var jLen;\r\n\r\n while (cont) {\r\n items = this.elemsData[i].it;\r\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\r\n jLen = itemsTransform.length;\r\n items[items.length - 1].transform.mProps._mdf = true;\r\n items[items.length - 1].transform.op._mdf = true;\r\n items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\r\n\r\n if (iteration !== 0) {\r\n if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\r\n }\r\n\r\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\r\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\r\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsTransform[j] = this.matrix.props[j];\r\n }\r\n\r\n this.matrix.reset();\r\n } else {\r\n this.matrix.reset();\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsTransform[j] = this.matrix.props[j];\r\n }\r\n }\r\n\r\n iteration += 1;\r\n cont -= 1;\r\n i += dir;\r\n }\r\n } else {\r\n cont = this._currentCopies;\r\n i = 0;\r\n dir = 1;\r\n\r\n while (cont) {\r\n items = this.elemsData[i].it;\r\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\r\n items[items.length - 1].transform.mProps._mdf = false;\r\n items[items.length - 1].transform.op._mdf = false;\r\n cont -= 1;\r\n i += dir;\r\n }\r\n }\r\n\r\n return hasReloaded;\r\n };\r\n\r\n RepeaterModifier.prototype.addShape = function () {};\r\n\r\n function RoundCornersModifier() {}\r\n\r\n extendPrototype([ShapeModifier], RoundCornersModifier);\r\n\r\n RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\r\n this._isAnimated = !!this.rd.effectsSequence.length;\r\n };\r\n\r\n RoundCornersModifier.prototype.processPath = function (path, round) {\r\n var clonedPath = shapePool.newElement();\r\n clonedPath.c = path.c;\r\n var i;\r\n var len = path._length;\r\n var currentV;\r\n var currentI;\r\n var currentO;\r\n var closerV;\r\n var distance;\r\n var newPosPerc;\r\n var index = 0;\r\n var vX;\r\n var vY;\r\n var oX;\r\n var oY;\r\n var iX;\r\n var iY;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n currentV = path.v[i];\r\n currentO = path.o[i];\r\n currentI = path.i[i];\r\n\r\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\r\n if ((i === 0 || i === len - 1) && !path.c) {\r\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\r\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\r\n\r\n index += 1;\r\n } else {\r\n if (i === 0) {\r\n closerV = path.v[len - 1];\r\n } else {\r\n closerV = path.v[i - 1];\r\n }\r\n\r\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\r\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\r\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\r\n vX = iX;\r\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\r\n vY = iY;\r\n oX = vX - (vX - currentV[0]) * roundCorner;\r\n oY = vY - (vY - currentV[1]) * roundCorner;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\r\n index += 1;\r\n\r\n if (i === len - 1) {\r\n closerV = path.v[0];\r\n } else {\r\n closerV = path.v[i + 1];\r\n }\r\n\r\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\r\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\r\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\r\n vX = oX;\r\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\r\n vY = oY;\r\n iX = vX - (vX - currentV[0]) * roundCorner;\r\n iY = vY - (vY - currentV[1]) * roundCorner;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\r\n index += 1;\r\n }\r\n } else {\r\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\r\n index += 1;\r\n }\r\n }\r\n\r\n return clonedPath;\r\n };\r\n\r\n RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var rd = this.rd.v;\r\n\r\n if (rd !== 0) {\r\n var shapeData;\r\n var localShapeCollection;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n\r\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n localShapeCollection.releaseShapes();\r\n shapeData.shape._mdf = true;\r\n shapePaths = shapeData.shape.paths.shapes;\r\n jLen = shapeData.shape.paths._length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\r\n }\r\n }\r\n\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n };\r\n\r\n function floatEqual(a, b) {\r\n return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\r\n }\r\n\r\n function floatZero(f) {\r\n return Math.abs(f) <= 0.00001;\r\n }\r\n\r\n function lerp(p0, p1, amount) {\r\n return p0 * (1 - amount) + p1 * amount;\r\n }\r\n\r\n function lerpPoint(p0, p1, amount) {\r\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\r\n }\r\n\r\n function quadRoots(a, b, c) {\r\n // no root\r\n if (a === 0) return [];\r\n var s = b * b - 4 * a * c; // Complex roots\r\n\r\n if (s < 0) return [];\r\n var singleRoot = -b / (2 * a); // 1 root\r\n\r\n if (s === 0) return [singleRoot];\r\n var delta = Math.sqrt(s) / (2 * a); // 2 roots\r\n\r\n return [singleRoot - delta, singleRoot + delta];\r\n }\r\n\r\n function polynomialCoefficients(p0, p1, p2, p3) {\r\n return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\r\n }\r\n\r\n function singlePoint(p) {\r\n return new PolynomialBezier(p, p, p, p, false);\r\n }\r\n\r\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\r\n if (linearize && pointEqual(p0, p1)) {\r\n p1 = lerpPoint(p0, p3, 1 / 3);\r\n }\r\n\r\n if (linearize && pointEqual(p2, p3)) {\r\n p2 = lerpPoint(p0, p3, 2 / 3);\r\n }\r\n\r\n var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\r\n var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\r\n this.a = [coeffx[0], coeffy[0]];\r\n this.b = [coeffx[1], coeffy[1]];\r\n this.c = [coeffx[2], coeffy[2]];\r\n this.d = [coeffx[3], coeffy[3]];\r\n this.points = [p0, p1, p2, p3];\r\n }\r\n\r\n PolynomialBezier.prototype.point = function (t) {\r\n return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\r\n };\r\n\r\n PolynomialBezier.prototype.derivative = function (t) {\r\n return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\r\n };\r\n\r\n PolynomialBezier.prototype.tangentAngle = function (t) {\r\n var p = this.derivative(t);\r\n return Math.atan2(p[1], p[0]);\r\n };\r\n\r\n PolynomialBezier.prototype.normalAngle = function (t) {\r\n var p = this.derivative(t);\r\n return Math.atan2(p[0], p[1]);\r\n };\r\n\r\n PolynomialBezier.prototype.inflectionPoints = function () {\r\n var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\r\n if (floatZero(denom)) return [];\r\n var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\r\n var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\r\n if (square < 0) return [];\r\n var root = Math.sqrt(square);\r\n\r\n if (floatZero(root)) {\r\n if (root > 0 && root < 1) return [tcusp];\r\n return [];\r\n }\r\n\r\n return [tcusp - root, tcusp + root].filter(function (r) {\r\n return r > 0 && r < 1;\r\n });\r\n };\r\n\r\n PolynomialBezier.prototype.split = function (t) {\r\n if (t <= 0) return [singlePoint(this.points[0]), this];\r\n if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\r\n var p10 = lerpPoint(this.points[0], this.points[1], t);\r\n var p11 = lerpPoint(this.points[1], this.points[2], t);\r\n var p12 = lerpPoint(this.points[2], this.points[3], t);\r\n var p20 = lerpPoint(p10, p11, t);\r\n var p21 = lerpPoint(p11, p12, t);\r\n var p3 = lerpPoint(p20, p21, t);\r\n return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\r\n };\r\n\r\n function extrema(bez, comp) {\r\n var min = bez.points[0][comp];\r\n var max = bez.points[bez.points.length - 1][comp];\r\n\r\n if (min > max) {\r\n var e = max;\r\n max = min;\r\n min = e;\r\n } // Derivative roots to find min/max\r\n\r\n\r\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\r\n\r\n for (var i = 0; i < f.length; i += 1) {\r\n if (f[i] > 0 && f[i] < 1) {\r\n var val = bez.point(f[i])[comp];\r\n if (val < min) min = val;else if (val > max) max = val;\r\n }\r\n }\r\n\r\n return {\r\n min: min,\r\n max: max\r\n };\r\n }\r\n\r\n PolynomialBezier.prototype.bounds = function () {\r\n return {\r\n x: extrema(this, 0),\r\n y: extrema(this, 1)\r\n };\r\n };\r\n\r\n PolynomialBezier.prototype.boundingBox = function () {\r\n var bounds = this.bounds();\r\n return {\r\n left: bounds.x.min,\r\n right: bounds.x.max,\r\n top: bounds.y.min,\r\n bottom: bounds.y.max,\r\n width: bounds.x.max - bounds.x.min,\r\n height: bounds.y.max - bounds.y.min,\r\n cx: (bounds.x.max + bounds.x.min) / 2,\r\n cy: (bounds.y.max + bounds.y.min) / 2\r\n };\r\n };\r\n\r\n function intersectData(bez, t1, t2) {\r\n var box = bez.boundingBox();\r\n return {\r\n cx: box.cx,\r\n cy: box.cy,\r\n width: box.width,\r\n height: box.height,\r\n bez: bez,\r\n t: (t1 + t2) / 2,\r\n t1: t1,\r\n t2: t2\r\n };\r\n }\r\n\r\n function splitData(data) {\r\n var split = data.bez.split(0.5);\r\n return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\r\n }\r\n\r\n function boxIntersect(b1, b2) {\r\n return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\r\n }\r\n\r\n function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\r\n if (!boxIntersect(d1, d2)) return;\r\n\r\n if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\r\n intersections.push([d1.t, d2.t]);\r\n return;\r\n }\r\n\r\n var d1s = splitData(d1);\r\n var d2s = splitData(d2);\r\n intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\r\n intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\r\n intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\r\n intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\r\n }\r\n\r\n PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\r\n if (tolerance === undefined) tolerance = 2;\r\n if (maxRecursion === undefined) maxRecursion = 7;\r\n var intersections = [];\r\n intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\r\n return intersections;\r\n };\r\n\r\n PolynomialBezier.shapeSegment = function (shapePath, index) {\r\n var nextIndex = (index + 1) % shapePath.length();\r\n return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\r\n };\r\n\r\n PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\r\n var nextIndex = (index + 1) % shapePath.length();\r\n return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\r\n };\r\n\r\n function crossProduct(a, b) {\r\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\r\n }\r\n\r\n function lineIntersection(start1, end1, start2, end2) {\r\n var v1 = [start1[0], start1[1], 1];\r\n var v2 = [end1[0], end1[1], 1];\r\n var v3 = [start2[0], start2[1], 1];\r\n var v4 = [end2[0], end2[1], 1];\r\n var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\r\n if (floatZero(r[2])) return null;\r\n return [r[0] / r[2], r[1] / r[2]];\r\n }\r\n\r\n function polarOffset(p, angle, length) {\r\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\r\n }\r\n\r\n function pointDistance(p1, p2) {\r\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\r\n }\r\n\r\n function pointEqual(p1, p2) {\r\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\r\n }\r\n\r\n function ZigZagModifier() {}\r\n\r\n extendPrototype([ShapeModifier], ZigZagModifier);\r\n\r\n ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\r\n this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\r\n this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\r\n this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\r\n };\r\n\r\n function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\r\n var angO = angle - Math.PI / 2;\r\n var angI = angle + Math.PI / 2;\r\n var px = point[0] + Math.cos(angle) * direction * amplitude;\r\n var py = point[1] - Math.sin(angle) * direction * amplitude;\r\n outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\r\n }\r\n\r\n function getPerpendicularVector(pt1, pt2) {\r\n var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\r\n var rot = -Math.PI * 0.5;\r\n var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\r\n return rotatedVector;\r\n }\r\n\r\n function getProjectingAngle(path, cur) {\r\n var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\r\n var nextIndex = (cur + 1) % path.length();\r\n var prevPoint = path.v[prevIndex];\r\n var nextPoint = path.v[nextIndex];\r\n var pVector = getPerpendicularVector(prevPoint, nextPoint);\r\n return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\r\n }\r\n\r\n function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\r\n var angle = getProjectingAngle(path, cur);\r\n var point = path.v[cur % path._length];\r\n var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\r\n var nextPoint = path.v[(cur + 1) % path._length];\r\n var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\r\n var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\r\n setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\r\n }\r\n\r\n function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\r\n for (var i = 0; i < frequency; i += 1) {\r\n var t = (i + 1) / (frequency + 1);\r\n var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\r\n var angle = segment.normalAngle(t);\r\n var point = segment.point(t);\r\n setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\r\n direction = -direction;\r\n }\r\n\r\n return direction;\r\n }\r\n\r\n ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\r\n var count = path._length;\r\n var clonedPath = shapePool.newElement();\r\n clonedPath.c = path.c;\r\n\r\n if (!path.c) {\r\n count -= 1;\r\n }\r\n\r\n if (count === 0) return clonedPath;\r\n var direction = -1;\r\n var segment = PolynomialBezier.shapeSegment(path, 0);\r\n zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\r\n\r\n for (var i = 0; i < count; i += 1) {\r\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\r\n\r\n if (i === count - 1 && !path.c) {\r\n segment = null;\r\n } else {\r\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\r\n }\r\n\r\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\r\n }\r\n\r\n return clonedPath;\r\n };\r\n\r\n ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var amplitude = this.amplitude.v;\r\n var frequency = Math.max(0, Math.round(this.frequency.v));\r\n var pointType = this.pointsType.v;\r\n\r\n if (amplitude !== 0) {\r\n var shapeData;\r\n var localShapeCollection;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n\r\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n localShapeCollection.releaseShapes();\r\n shapeData.shape._mdf = true;\r\n shapePaths = shapeData.shape.paths.shapes;\r\n jLen = shapeData.shape.paths._length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\r\n }\r\n }\r\n\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n };\r\n\r\n function linearOffset(p1, p2, amount) {\r\n var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\r\n return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\r\n }\r\n\r\n function offsetSegment(segment, amount) {\r\n var p0;\r\n var p1a;\r\n var p1b;\r\n var p2b;\r\n var p2a;\r\n var p3;\r\n var e;\r\n e = linearOffset(segment.points[0], segment.points[1], amount);\r\n p0 = e[0];\r\n p1a = e[1];\r\n e = linearOffset(segment.points[1], segment.points[2], amount);\r\n p1b = e[0];\r\n p2b = e[1];\r\n e = linearOffset(segment.points[2], segment.points[3], amount);\r\n p2a = e[0];\r\n p3 = e[1];\r\n var p1 = lineIntersection(p0, p1a, p1b, p2b);\r\n if (p1 === null) p1 = p1a;\r\n var p2 = lineIntersection(p2a, p3, p1b, p2b);\r\n if (p2 === null) p2 = p2a;\r\n return new PolynomialBezier(p0, p1, p2, p3);\r\n }\r\n\r\n function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\r\n var p0 = seg1.points[3];\r\n var p1 = seg2.points[0]; // Bevel\r\n\r\n if (lineJoin === 3) return p0; // Connected, they don't need a joint\r\n\r\n if (pointEqual(p0, p1)) return p0; // Round\r\n\r\n if (lineJoin === 2) {\r\n var angleOut = -seg1.tangentAngle(1);\r\n var angleIn = -seg2.tangentAngle(0) + Math.PI;\r\n var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\r\n var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\r\n var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\r\n outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\r\n tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\r\n outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\r\n return p1;\r\n } // Miter\r\n\r\n\r\n var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\r\n var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\r\n var intersection = lineIntersection(t0, p0, p1, t1);\r\n\r\n if (intersection && pointDistance(intersection, p0) < miterLimit) {\r\n outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\r\n return intersection;\r\n }\r\n\r\n return p0;\r\n }\r\n\r\n function getIntersection(a, b) {\r\n var intersect = a.intersections(b);\r\n if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\r\n if (intersect.length) return intersect[0];\r\n return null;\r\n }\r\n\r\n function pruneSegmentIntersection(a, b) {\r\n var outa = a.slice();\r\n var outb = b.slice();\r\n var intersect = getIntersection(a[a.length - 1], b[0]);\r\n\r\n if (intersect) {\r\n outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\r\n outb[0] = b[0].split(intersect[1])[1];\r\n }\r\n\r\n if (a.length > 1 && b.length > 1) {\r\n intersect = getIntersection(a[0], b[b.length - 1]);\r\n\r\n if (intersect) {\r\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\r\n }\r\n }\r\n\r\n return [outa, outb];\r\n }\r\n\r\n function pruneIntersections(segments) {\r\n var e;\r\n\r\n for (var i = 1; i < segments.length; i += 1) {\r\n e = pruneSegmentIntersection(segments[i - 1], segments[i]);\r\n segments[i - 1] = e[0];\r\n segments[i] = e[1];\r\n }\r\n\r\n if (segments.length > 1) {\r\n e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\r\n segments[segments.length - 1] = e[0];\r\n segments[0] = e[1];\r\n }\r\n\r\n return segments;\r\n }\r\n\r\n function offsetSegmentSplit(segment, amount) {\r\n /*\r\n We split each bezier segment into smaller pieces based\r\n on inflection points, this ensures the control point\r\n polygon is convex.\r\n (A cubic bezier can have none, one, or two inflection points)\r\n */\r\n var flex = segment.inflectionPoints();\r\n var left;\r\n var right;\r\n var split;\r\n var mid;\r\n\r\n if (flex.length === 0) {\r\n return [offsetSegment(segment, amount)];\r\n }\r\n\r\n if (flex.length === 1 || floatEqual(flex[1], 1)) {\r\n split = segment.split(flex[0]);\r\n left = split[0];\r\n right = split[1];\r\n return [offsetSegment(left, amount), offsetSegment(right, amount)];\r\n }\r\n\r\n split = segment.split(flex[0]);\r\n left = split[0];\r\n var t = (flex[1] - flex[0]) / (1 - flex[0]);\r\n split = split[1].split(t);\r\n mid = split[0];\r\n right = split[1];\r\n return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\r\n }\r\n\r\n function OffsetPathModifier() {}\r\n\r\n extendPrototype([ShapeModifier], OffsetPathModifier);\r\n\r\n OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\r\n this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\r\n this.lineJoin = data.lj;\r\n this._isAnimated = this.amount.effectsSequence.length !== 0;\r\n };\r\n\r\n OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\r\n var outputBezier = shapePool.newElement();\r\n outputBezier.c = inputBezier.c;\r\n var count = inputBezier.length();\r\n\r\n if (!inputBezier.c) {\r\n count -= 1;\r\n }\r\n\r\n var i;\r\n var j;\r\n var segment;\r\n var multiSegments = [];\r\n\r\n for (i = 0; i < count; i += 1) {\r\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\r\n multiSegments.push(offsetSegmentSplit(segment, amount));\r\n }\r\n\r\n if (!inputBezier.c) {\r\n for (i = count - 1; i >= 0; i -= 1) {\r\n segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\r\n multiSegments.push(offsetSegmentSplit(segment, amount));\r\n }\r\n }\r\n\r\n multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\r\n\r\n var lastPoint = null;\r\n var lastSeg = null;\r\n\r\n for (i = 0; i < multiSegments.length; i += 1) {\r\n var multiSegment = multiSegments[i];\r\n if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\r\n lastSeg = multiSegment[multiSegment.length - 1];\r\n\r\n for (j = 0; j < multiSegment.length; j += 1) {\r\n segment = multiSegment[j];\r\n\r\n if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\r\n outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\r\n } else {\r\n outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\r\n }\r\n\r\n outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\r\n lastPoint = segment.points[3];\r\n }\r\n }\r\n\r\n if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\r\n return outputBezier;\r\n };\r\n\r\n OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var amount = this.amount.v;\r\n var miterLimit = this.miterLimit.v;\r\n var lineJoin = this.lineJoin;\r\n\r\n if (amount !== 0) {\r\n var shapeData;\r\n var localShapeCollection;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n\r\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n localShapeCollection.releaseShapes();\r\n shapeData.shape._mdf = true;\r\n shapePaths = shapeData.shape.paths.shapes;\r\n jLen = shapeData.shape.paths._length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\r\n }\r\n }\r\n\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n };\r\n\r\n function getFontProperties(fontData) {\r\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\r\n var fWeight = 'normal';\r\n var fStyle = 'normal';\r\n var len = styles.length;\r\n var styleName;\r\n\r\n for (var i = 0; i < len; i += 1) {\r\n styleName = styles[i].toLowerCase();\r\n\r\n switch (styleName) {\r\n case 'italic':\r\n fStyle = 'italic';\r\n break;\r\n\r\n case 'bold':\r\n fWeight = '700';\r\n break;\r\n\r\n case 'black':\r\n fWeight = '900';\r\n break;\r\n\r\n case 'medium':\r\n fWeight = '500';\r\n break;\r\n\r\n case 'regular':\r\n case 'normal':\r\n fWeight = '400';\r\n break;\r\n\r\n case 'light':\r\n case 'thin':\r\n fWeight = '200';\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n return {\r\n style: fStyle,\r\n weight: fontData.fWeight || fWeight\r\n };\r\n }\r\n\r\n var FontManager = function () {\r\n var maxWaitingTime = 5000;\r\n var emptyChar = {\r\n w: 0,\r\n size: 0,\r\n shapes: [],\r\n data: {\r\n shapes: []\r\n }\r\n };\r\n var combinedCharacters = []; // Hindi characters\r\n\r\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\r\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\r\n var zeroWidthJoiner = [65039, 8205];\r\n\r\n function trimFontOptions(font) {\r\n var familyArray = font.split(',');\r\n var i;\r\n var len = familyArray.length;\r\n var enabledFamilies = [];\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\r\n enabledFamilies.push(familyArray[i]);\r\n }\r\n }\r\n\r\n return enabledFamilies.join(',');\r\n }\r\n\r\n function setUpNode(font, family) {\r\n var parentNode = createTag('span'); // Node is invisible to screen readers.\r\n\r\n parentNode.setAttribute('aria-hidden', true);\r\n parentNode.style.fontFamily = family;\r\n var node = createTag('span'); // Characters that vary significantly among different fonts\r\n\r\n node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\r\n\r\n parentNode.style.position = 'absolute';\r\n parentNode.style.left = '-10000px';\r\n parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\r\n\r\n parentNode.style.fontSize = '300px'; // Reset any font properties\r\n\r\n parentNode.style.fontVariant = 'normal';\r\n parentNode.style.fontStyle = 'normal';\r\n parentNode.style.fontWeight = 'normal';\r\n parentNode.style.letterSpacing = '0';\r\n parentNode.appendChild(node);\r\n document.body.appendChild(parentNode); // Remember width with no applied web font\r\n\r\n var width = node.offsetWidth;\r\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\r\n return {\r\n node: node,\r\n w: width,\r\n parent: parentNode\r\n };\r\n }\r\n\r\n function checkLoadedFonts() {\r\n var i;\r\n var len = this.fonts.length;\r\n var node;\r\n var w;\r\n var loadedCount = len;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.fonts[i].loaded) {\r\n loadedCount -= 1;\r\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\r\n this.fonts[i].loaded = true;\r\n } else {\r\n node = this.fonts[i].monoCase.node;\r\n w = this.fonts[i].monoCase.w;\r\n\r\n if (node.offsetWidth !== w) {\r\n loadedCount -= 1;\r\n this.fonts[i].loaded = true;\r\n } else {\r\n node = this.fonts[i].sansCase.node;\r\n w = this.fonts[i].sansCase.w;\r\n\r\n if (node.offsetWidth !== w) {\r\n loadedCount -= 1;\r\n this.fonts[i].loaded = true;\r\n }\r\n }\r\n\r\n if (this.fonts[i].loaded) {\r\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\r\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\r\n }\r\n }\r\n }\r\n\r\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\r\n setTimeout(this.checkLoadedFontsBinded, 20);\r\n } else {\r\n setTimeout(this.setIsLoadedBinded, 10);\r\n }\r\n }\r\n\r\n function createHelper(fontData, def) {\r\n var engine = document.body && def ? 'svg' : 'canvas';\r\n var helper;\r\n var fontProps = getFontProperties(fontData);\r\n\r\n if (engine === 'svg') {\r\n var tHelper = createNS('text');\r\n tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\r\n\r\n tHelper.setAttribute('font-family', fontData.fFamily);\r\n tHelper.setAttribute('font-style', fontProps.style);\r\n tHelper.setAttribute('font-weight', fontProps.weight);\r\n tHelper.textContent = '1';\r\n\r\n if (fontData.fClass) {\r\n tHelper.style.fontFamily = 'inherit';\r\n tHelper.setAttribute('class', fontData.fClass);\r\n } else {\r\n tHelper.style.fontFamily = fontData.fFamily;\r\n }\r\n\r\n def.appendChild(tHelper);\r\n helper = tHelper;\r\n } else {\r\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\r\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\r\n helper = tCanvasHelper;\r\n }\r\n\r\n function measure(text) {\r\n if (engine === 'svg') {\r\n helper.textContent = text;\r\n return helper.getComputedTextLength();\r\n }\r\n\r\n return helper.measureText(text).width;\r\n }\r\n\r\n return {\r\n measureText: measure\r\n };\r\n }\r\n\r\n function addFonts(fontData, defs) {\r\n if (!fontData) {\r\n this.isLoaded = true;\r\n return;\r\n }\r\n\r\n if (this.chars) {\r\n this.isLoaded = true;\r\n this.fonts = fontData.list;\r\n return;\r\n }\r\n\r\n if (!document.body) {\r\n this.isLoaded = true;\r\n fontData.list.forEach(function (data) {\r\n data.helper = createHelper(data);\r\n data.cache = {};\r\n });\r\n this.fonts = fontData.list;\r\n return;\r\n }\r\n\r\n var fontArr = fontData.list;\r\n var i;\r\n var len = fontArr.length;\r\n var _pendingFonts = len;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n var shouldLoadFont = true;\r\n var loadedSelector;\r\n var j;\r\n fontArr[i].loaded = false;\r\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\r\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\r\n\r\n if (!fontArr[i].fPath) {\r\n fontArr[i].loaded = true;\r\n _pendingFonts -= 1;\r\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\r\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\r\n\r\n if (loadedSelector.length > 0) {\r\n shouldLoadFont = false;\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var s = createTag('style');\r\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n s.setAttribute('f-origin', fontArr[i].origin);\r\n s.setAttribute('f-family', fontArr[i].fFamily);\r\n s.type = 'text/css';\r\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\r\n defs.appendChild(s);\r\n }\r\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\r\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\r\n\r\n for (j = 0; j < loadedSelector.length; j += 1) {\r\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\r\n // Font is already loaded\r\n shouldLoadFont = false;\r\n }\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var l = createTag('link');\r\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n l.setAttribute('f-origin', fontArr[i].origin);\r\n l.type = 'text/css';\r\n l.rel = 'stylesheet';\r\n l.href = fontArr[i].fPath;\r\n document.body.appendChild(l);\r\n }\r\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\r\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\r\n\r\n for (j = 0; j < loadedSelector.length; j += 1) {\r\n if (fontArr[i].fPath === loadedSelector[j].src) {\r\n // Font is already loaded\r\n shouldLoadFont = false;\r\n }\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var sc = createTag('link');\r\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n sc.setAttribute('f-origin', fontArr[i].origin);\r\n sc.setAttribute('rel', 'stylesheet');\r\n sc.setAttribute('href', fontArr[i].fPath);\r\n defs.appendChild(sc);\r\n }\r\n }\r\n\r\n fontArr[i].helper = createHelper(fontArr[i], defs);\r\n fontArr[i].cache = {};\r\n this.fonts.push(fontArr[i]);\r\n }\r\n\r\n if (_pendingFonts === 0) {\r\n this.isLoaded = true;\r\n } else {\r\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\r\n // Adding this timeout seems to fix it\r\n setTimeout(this.checkLoadedFonts.bind(this), 100);\r\n }\r\n }\r\n\r\n function addChars(chars) {\r\n if (!chars) {\r\n return;\r\n }\r\n\r\n if (!this.chars) {\r\n this.chars = [];\r\n }\r\n\r\n var i;\r\n var len = chars.length;\r\n var j;\r\n var jLen = this.chars.length;\r\n var found;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n j = 0;\r\n found = false;\r\n\r\n while (j < jLen) {\r\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\r\n found = true;\r\n }\r\n\r\n j += 1;\r\n }\r\n\r\n if (!found) {\r\n this.chars.push(chars[i]);\r\n jLen += 1;\r\n }\r\n }\r\n }\r\n\r\n function getCharData(_char, style, font) {\r\n var i = 0;\r\n var len = this.chars.length;\r\n\r\n while (i < len) {\r\n if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\r\n return this.chars[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\r\n && !this._warned) {\r\n this._warned = true;\r\n console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\r\n }\r\n\r\n return emptyChar;\r\n }\r\n\r\n function measureText(_char2, fontName, size) {\r\n var fontData = this.getFontByName(fontName);\r\n\r\n var index = _char2.charCodeAt(0);\r\n\r\n if (!fontData.cache[index + 1]) {\r\n var tHelper = fontData.helper;\r\n\r\n if (_char2 === ' ') {\r\n var doubleSize = tHelper.measureText('|' + _char2 + '|');\r\n var singleSize = tHelper.measureText('||');\r\n fontData.cache[index + 1] = (doubleSize - singleSize) / 100;\r\n } else {\r\n fontData.cache[index + 1] = tHelper.measureText(_char2) / 100;\r\n }\r\n }\r\n\r\n return fontData.cache[index + 1] * size;\r\n }\r\n\r\n function getFontByName(name) {\r\n var i = 0;\r\n var len = this.fonts.length;\r\n\r\n while (i < len) {\r\n if (this.fonts[i].fName === name) {\r\n return this.fonts[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return this.fonts[0];\r\n }\r\n\r\n function isModifier(firstCharCode, secondCharCode) {\r\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\r\n return surrogateModifiers.indexOf(sum) !== -1;\r\n }\r\n\r\n function isZeroWidthJoiner(firstCharCode, secondCharCode) {\r\n if (!secondCharCode) {\r\n return firstCharCode === zeroWidthJoiner[1];\r\n }\r\n\r\n return firstCharCode === zeroWidthJoiner[0] && secondCharCode === zeroWidthJoiner[1];\r\n }\r\n\r\n function isCombinedCharacter(_char3) {\r\n return combinedCharacters.indexOf(_char3) !== -1;\r\n }\r\n\r\n function setIsLoaded() {\r\n this.isLoaded = true;\r\n }\r\n\r\n var Font = function Font() {\r\n this.fonts = [];\r\n this.chars = null;\r\n this.typekitLoaded = 0;\r\n this.isLoaded = false;\r\n this._warned = false;\r\n this.initTime = Date.now();\r\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\r\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\r\n };\r\n\r\n Font.isModifier = isModifier;\r\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\r\n Font.isCombinedCharacter = isCombinedCharacter;\r\n var fontPrototype = {\r\n addChars: addChars,\r\n addFonts: addFonts,\r\n getCharData: getCharData,\r\n getFontByName: getFontByName,\r\n measureText: measureText,\r\n checkLoadedFonts: checkLoadedFonts,\r\n setIsLoaded: setIsLoaded\r\n };\r\n Font.prototype = fontPrototype;\r\n return Font;\r\n }();\r\n\r\n function RenderableElement() {}\r\n\r\n RenderableElement.prototype = {\r\n initRenderable: function initRenderable() {\r\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\r\n this.isInRange = false; // layer's display state\r\n\r\n this.hidden = false; // If layer's transparency equals 0, it can be hidden\r\n\r\n this.isTransparent = false; // list of animated components\r\n\r\n this.renderableComponents = [];\r\n },\r\n addRenderableComponent: function addRenderableComponent(component) {\r\n if (this.renderableComponents.indexOf(component) === -1) {\r\n this.renderableComponents.push(component);\r\n }\r\n },\r\n removeRenderableComponent: function removeRenderableComponent(component) {\r\n if (this.renderableComponents.indexOf(component) !== -1) {\r\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\r\n }\r\n },\r\n prepareRenderableFrame: function prepareRenderableFrame(num) {\r\n this.checkLayerLimits(num);\r\n },\r\n checkTransparency: function checkTransparency() {\r\n if (this.finalTransform.mProp.o.v <= 0) {\r\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\r\n this.isTransparent = true;\r\n this.hide();\r\n }\r\n } else if (this.isTransparent) {\r\n this.isTransparent = false;\r\n this.show();\r\n }\r\n },\r\n\r\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\r\n checkLayerLimits: function checkLayerLimits(num) {\r\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\r\n if (this.isInRange !== true) {\r\n this.globalData._mdf = true;\r\n this._mdf = true;\r\n this.isInRange = true;\r\n this.show();\r\n }\r\n } else if (this.isInRange !== false) {\r\n this.globalData._mdf = true;\r\n this.isInRange = false;\r\n this.hide();\r\n }\r\n },\r\n renderRenderable: function renderRenderable() {\r\n var i;\r\n var len = this.renderableComponents.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\r\n }\r\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\r\n\r\n },\r\n sourceRectAtTime: function sourceRectAtTime() {\r\n return {\r\n top: 0,\r\n left: 0,\r\n width: 100,\r\n height: 100\r\n };\r\n },\r\n getLayerSize: function getLayerSize() {\r\n if (this.data.ty === 5) {\r\n return {\r\n w: this.data.textData.width,\r\n h: this.data.textData.height\r\n };\r\n }\r\n\r\n return {\r\n w: this.data.width,\r\n h: this.data.height\r\n };\r\n }\r\n };\r\n\r\n var getBlendMode = function () {\r\n var blendModeEnums = {\r\n 0: 'source-over',\r\n 1: 'multiply',\r\n 2: 'screen',\r\n 3: 'overlay',\r\n 4: 'darken',\r\n 5: 'lighten',\r\n 6: 'color-dodge',\r\n 7: 'color-burn',\r\n 8: 'hard-light',\r\n 9: 'soft-light',\r\n 10: 'difference',\r\n 11: 'exclusion',\r\n 12: 'hue',\r\n 13: 'saturation',\r\n 14: 'color',\r\n 15: 'luminosity'\r\n };\r\n return function (mode) {\r\n return blendModeEnums[mode] || '';\r\n };\r\n }();\r\n\r\n function SliderEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n }\r\n\r\n function AngleEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n }\r\n\r\n function ColorEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\r\n }\r\n\r\n function PointEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\r\n }\r\n\r\n function LayerIndexEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n }\r\n\r\n function MaskIndexEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n }\r\n\r\n function CheckboxEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n }\r\n\r\n function NoValueEffect() {\r\n this.p = {};\r\n }\r\n\r\n function EffectsManager(data, element) {\r\n var effects = data.ef || [];\r\n this.effectElements = [];\r\n var i;\r\n var len = effects.length;\r\n var effectItem;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n effectItem = new GroupEffect(effects[i], element);\r\n this.effectElements.push(effectItem);\r\n }\r\n }\r\n\r\n function GroupEffect(data, element) {\r\n this.init(data, element);\r\n }\r\n\r\n extendPrototype([DynamicPropertyContainer], GroupEffect);\r\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\r\n\r\n GroupEffect.prototype.init = function (data, element) {\r\n this.data = data;\r\n this.effectElements = [];\r\n this.initDynamicPropertyContainer(element);\r\n var i;\r\n var len = this.data.ef.length;\r\n var eff;\r\n var effects = this.data.ef;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n eff = null;\r\n\r\n switch (effects[i].ty) {\r\n case 0:\r\n eff = new SliderEffect(effects[i], element, this);\r\n break;\r\n\r\n case 1:\r\n eff = new AngleEffect(effects[i], element, this);\r\n break;\r\n\r\n case 2:\r\n eff = new ColorEffect(effects[i], element, this);\r\n break;\r\n\r\n case 3:\r\n eff = new PointEffect(effects[i], element, this);\r\n break;\r\n\r\n case 4:\r\n case 7:\r\n eff = new CheckboxEffect(effects[i], element, this);\r\n break;\r\n\r\n case 10:\r\n eff = new LayerIndexEffect(effects[i], element, this);\r\n break;\r\n\r\n case 11:\r\n eff = new MaskIndexEffect(effects[i], element, this);\r\n break;\r\n\r\n case 5:\r\n eff = new EffectsManager(effects[i], element, this);\r\n break;\r\n // case 6:\r\n\r\n default:\r\n eff = new NoValueEffect(effects[i], element, this);\r\n break;\r\n }\r\n\r\n if (eff) {\r\n this.effectElements.push(eff);\r\n }\r\n }\r\n };\r\n\r\n function BaseElement() {}\r\n\r\n BaseElement.prototype = {\r\n checkMasks: function checkMasks() {\r\n if (!this.data.hasMask) {\r\n return false;\r\n }\r\n\r\n var i = 0;\r\n var len = this.data.masksProperties.length;\r\n\r\n while (i < len) {\r\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\r\n return true;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return false;\r\n },\r\n initExpressions: function initExpressions() {\r\n var expressionsInterfaces = getExpressionInterfaces();\r\n\r\n if (!expressionsInterfaces) {\r\n return;\r\n }\r\n\r\n var LayerExpressionInterface = expressionsInterfaces('layer');\r\n var EffectsExpressionInterface = expressionsInterfaces('effects');\r\n var ShapeExpressionInterface = expressionsInterfaces('shape');\r\n var TextExpressionInterface = expressionsInterfaces('text');\r\n var CompExpressionInterface = expressionsInterfaces('comp');\r\n this.layerInterface = LayerExpressionInterface(this);\r\n\r\n if (this.data.hasMask && this.maskManager) {\r\n this.layerInterface.registerMaskInterface(this.maskManager);\r\n }\r\n\r\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\r\n this.layerInterface.registerEffectsInterface(effectsInterface);\r\n\r\n if (this.data.ty === 0 || this.data.xt) {\r\n this.compInterface = CompExpressionInterface(this);\r\n } else if (this.data.ty === 4) {\r\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\r\n this.layerInterface.content = this.layerInterface.shapeInterface;\r\n } else if (this.data.ty === 5) {\r\n this.layerInterface.textInterface = TextExpressionInterface(this);\r\n this.layerInterface.text = this.layerInterface.textInterface;\r\n }\r\n },\r\n setBlendMode: function setBlendMode() {\r\n var blendModeValue = getBlendMode(this.data.bm);\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style['mix-blend-mode'] = blendModeValue;\r\n },\r\n initBaseData: function initBaseData(data, globalData, comp) {\r\n this.globalData = globalData;\r\n this.comp = comp;\r\n this.data = data;\r\n this.layerId = createElementID(); // Stretch factor for old animations missing this property.\r\n\r\n if (!this.data.sr) {\r\n this.data.sr = 1;\r\n } // effects manager\r\n\r\n\r\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\r\n },\r\n getType: function getType() {\r\n return this.type;\r\n },\r\n sourceRectAtTime: function sourceRectAtTime() {}\r\n };\r\n\r\n /**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\r\n function FrameElement() {}\r\n\r\n FrameElement.prototype = {\r\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\r\n initFrame: function initFrame() {\r\n // set to true when inpoint is rendered\r\n this._isFirstFrame = false; // list of animated properties\r\n\r\n this.dynamicProperties = []; // If layer has been modified in current tick this will be true\r\n\r\n this._mdf = false;\r\n },\r\n\r\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\r\n prepareProperties: function prepareProperties(num, isVisible) {\r\n var i;\r\n var len = this.dynamicProperties.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\r\n this.dynamicProperties[i].getValue();\r\n\r\n if (this.dynamicProperties[i]._mdf) {\r\n this.globalData._mdf = true;\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n },\r\n addDynamicProperty: function addDynamicProperty(prop) {\r\n if (this.dynamicProperties.indexOf(prop) === -1) {\r\n this.dynamicProperties.push(prop);\r\n }\r\n }\r\n };\r\n\r\n function FootageElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initRenderable();\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\r\n this.initBaseData(data, globalData, comp);\r\n }\r\n\r\n FootageElement.prototype.prepareFrame = function () {};\r\n\r\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\r\n\r\n FootageElement.prototype.getBaseElement = function () {\r\n return null;\r\n };\r\n\r\n FootageElement.prototype.renderFrame = function () {};\r\n\r\n FootageElement.prototype.destroy = function () {};\r\n\r\n FootageElement.prototype.initExpressions = function () {\r\n var expressionsInterfaces = getExpressionInterfaces();\r\n\r\n if (!expressionsInterfaces) {\r\n return;\r\n }\r\n\r\n var FootageInterface = expressionsInterfaces('footage');\r\n this.layerInterface = FootageInterface(this);\r\n };\r\n\r\n FootageElement.prototype.getFootageData = function () {\r\n return this.footageData;\r\n };\r\n\r\n function AudioElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initRenderable();\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initBaseData(data, globalData, comp);\r\n this._isPlaying = false;\r\n this._canPlay = false;\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n this.audio = this.globalData.audioController.createAudio(assetPath);\r\n this._currentTime = 0;\r\n this.globalData.audioController.addAudio(this);\r\n this._volumeMultiplier = 1;\r\n this._volume = 1;\r\n this._previousVolume = null;\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\r\n _placeholder: true\r\n };\r\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\r\n k: [100]\r\n }, 1, 0.01, this);\r\n }\r\n\r\n AudioElement.prototype.prepareFrame = function (num) {\r\n this.prepareRenderableFrame(num, true);\r\n this.prepareProperties(num, true);\r\n\r\n if (!this.tm._placeholder) {\r\n var timeRemapped = this.tm.v;\r\n this._currentTime = timeRemapped;\r\n } else {\r\n this._currentTime = num / this.data.sr;\r\n }\r\n\r\n this._volume = this.lv.v[0];\r\n var totalVolume = this._volume * this._volumeMultiplier;\r\n\r\n if (this._previousVolume !== totalVolume) {\r\n this._previousVolume = totalVolume;\r\n this.audio.volume(totalVolume);\r\n }\r\n };\r\n\r\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\r\n\r\n AudioElement.prototype.renderFrame = function () {\r\n if (this.isInRange && this._canPlay) {\r\n if (!this._isPlaying) {\r\n this.audio.play();\r\n this.audio.seek(this._currentTime / this.globalData.frameRate);\r\n this._isPlaying = true;\r\n } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\r\n this.audio.seek(this._currentTime / this.globalData.frameRate);\r\n }\r\n }\r\n };\r\n\r\n AudioElement.prototype.show = function () {// this.audio.play()\r\n };\r\n\r\n AudioElement.prototype.hide = function () {\r\n this.audio.pause();\r\n this._isPlaying = false;\r\n };\r\n\r\n AudioElement.prototype.pause = function () {\r\n this.audio.pause();\r\n this._isPlaying = false;\r\n this._canPlay = false;\r\n };\r\n\r\n AudioElement.prototype.resume = function () {\r\n this._canPlay = true;\r\n };\r\n\r\n AudioElement.prototype.setRate = function (rateValue) {\r\n this.audio.rate(rateValue);\r\n };\r\n\r\n AudioElement.prototype.volume = function (volumeValue) {\r\n this._volumeMultiplier = volumeValue;\r\n this._previousVolume = volumeValue * this._volume;\r\n this.audio.volume(this._previousVolume);\r\n };\r\n\r\n AudioElement.prototype.getBaseElement = function () {\r\n return null;\r\n };\r\n\r\n AudioElement.prototype.destroy = function () {};\r\n\r\n AudioElement.prototype.sourceRectAtTime = function () {};\r\n\r\n AudioElement.prototype.initExpressions = function () {};\r\n\r\n function BaseRenderer() {}\r\n\r\n BaseRenderer.prototype.checkLayers = function (num) {\r\n var i;\r\n var len = this.layers.length;\r\n var data;\r\n this.completeLayers = true;\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (!this.elements[i]) {\r\n data = this.layers[i];\r\n\r\n if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\r\n this.buildItem(i);\r\n }\r\n }\r\n\r\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\r\n }\r\n\r\n this.checkPendingElements();\r\n };\r\n\r\n BaseRenderer.prototype.createItem = function (layer) {\r\n switch (layer.ty) {\r\n case 2:\r\n return this.createImage(layer);\r\n\r\n case 0:\r\n return this.createComp(layer);\r\n\r\n case 1:\r\n return this.createSolid(layer);\r\n\r\n case 3:\r\n return this.createNull(layer);\r\n\r\n case 4:\r\n return this.createShape(layer);\r\n\r\n case 5:\r\n return this.createText(layer);\r\n\r\n case 6:\r\n return this.createAudio(layer);\r\n\r\n case 13:\r\n return this.createCamera(layer);\r\n\r\n case 15:\r\n return this.createFootage(layer);\r\n\r\n default:\r\n return this.createNull(layer);\r\n }\r\n };\r\n\r\n BaseRenderer.prototype.createCamera = function () {\r\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\r\n };\r\n\r\n BaseRenderer.prototype.createAudio = function (data) {\r\n return new AudioElement(data, this.globalData, this);\r\n };\r\n\r\n BaseRenderer.prototype.createFootage = function (data) {\r\n return new FootageElement(data, this.globalData, this);\r\n };\r\n\r\n BaseRenderer.prototype.buildAllItems = function () {\r\n var i;\r\n var len = this.layers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.buildItem(i);\r\n }\r\n\r\n this.checkPendingElements();\r\n };\r\n\r\n BaseRenderer.prototype.includeLayers = function (newLayers) {\r\n this.completeLayers = false;\r\n var i;\r\n var len = newLayers.length;\r\n var j;\r\n var jLen = this.layers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n j = 0;\r\n\r\n while (j < jLen) {\r\n if (this.layers[j].id === newLayers[i].id) {\r\n this.layers[j] = newLayers[i];\r\n break;\r\n }\r\n\r\n j += 1;\r\n }\r\n }\r\n };\r\n\r\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\r\n this.globalData.projectInterface = pInterface;\r\n };\r\n\r\n BaseRenderer.prototype.initItems = function () {\r\n if (!this.globalData.progressiveLoad) {\r\n this.buildAllItems();\r\n }\r\n };\r\n\r\n BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\r\n var elements = this.elements;\r\n var layers = this.layers;\r\n var i = 0;\r\n var len = layers.length;\r\n\r\n while (i < len) {\r\n if (layers[i].ind == parentName) {\r\n // eslint-disable-line eqeqeq\r\n if (!elements[i] || elements[i] === true) {\r\n this.buildItem(i);\r\n this.addPendingElement(element);\r\n } else {\r\n hierarchy.push(elements[i]);\r\n elements[i].setAsParent();\r\n\r\n if (layers[i].parent !== undefined) {\r\n this.buildElementParenting(element, layers[i].parent, hierarchy);\r\n } else {\r\n element.setHierarchy(hierarchy);\r\n }\r\n }\r\n }\r\n\r\n i += 1;\r\n }\r\n };\r\n\r\n BaseRenderer.prototype.addPendingElement = function (element) {\r\n this.pendingElements.push(element);\r\n };\r\n\r\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\r\n var i;\r\n var len = assets.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (assets[i].xt) {\r\n var comp = this.createComp(assets[i]);\r\n comp.initExpressions();\r\n this.globalData.projectInterface.registerComposition(comp);\r\n }\r\n }\r\n };\r\n\r\n BaseRenderer.prototype.getElementByPath = function (path) {\r\n var pathValue = path.shift();\r\n var element;\r\n\r\n if (typeof pathValue === 'number') {\r\n element = this.elements[pathValue];\r\n } else {\r\n var i;\r\n var len = this.elements.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.elements[i].data.nm === pathValue) {\r\n element = this.elements[i];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (path.length === 0) {\r\n return element;\r\n }\r\n\r\n return element.getElementByPath(path);\r\n };\r\n\r\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\r\n this.globalData.fontManager = new FontManager();\r\n this.globalData.fontManager.addChars(animData.chars);\r\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\r\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\r\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\r\n this.globalData.imageLoader = this.animationItem.imagePreloader;\r\n this.globalData.audioController = this.animationItem.audioController;\r\n this.globalData.frameId = 0;\r\n this.globalData.frameRate = animData.fr;\r\n this.globalData.nm = animData.nm;\r\n this.globalData.compSize = {\r\n w: animData.w,\r\n h: animData.h\r\n };\r\n };\r\n\r\n function TransformElement() {}\r\n\r\n TransformElement.prototype = {\r\n initTransform: function initTransform() {\r\n this.finalTransform = {\r\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\r\n o: 0\r\n },\r\n _matMdf: false,\r\n _opMdf: false,\r\n mat: new Matrix()\r\n };\r\n\r\n if (this.data.ao) {\r\n this.finalTransform.mProp.autoOriented = true;\r\n } // TODO: check TYPE 11: Guided elements\r\n\r\n\r\n if (this.data.ty !== 11) {// this.createElements();\r\n }\r\n },\r\n renderTransform: function renderTransform() {\r\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\r\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\r\n\r\n if (this.hierarchy) {\r\n var mat;\r\n var finalMat = this.finalTransform.mat;\r\n var i = 0;\r\n var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\r\n\r\n if (!this.finalTransform._matMdf) {\r\n while (i < len) {\r\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\r\n this.finalTransform._matMdf = true;\r\n break;\r\n }\r\n\r\n i += 1;\r\n }\r\n }\r\n\r\n if (this.finalTransform._matMdf) {\r\n mat = this.finalTransform.mProp.v.props;\r\n finalMat.cloneFromProps(mat);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n mat = this.hierarchy[i].finalTransform.mProp.v.props;\r\n finalMat.transform(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5], mat[6], mat[7], mat[8], mat[9], mat[10], mat[11], mat[12], mat[13], mat[14], mat[15]);\r\n }\r\n }\r\n }\r\n },\r\n globalToLocal: function globalToLocal(pt) {\r\n var transforms = [];\r\n transforms.push(this.finalTransform);\r\n var flag = true;\r\n var comp = this.comp;\r\n\r\n while (flag) {\r\n if (comp.finalTransform) {\r\n if (comp.data.hasMask) {\r\n transforms.splice(0, 0, comp.finalTransform);\r\n }\r\n\r\n comp = comp.comp;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n\r\n var i;\r\n var len = transforms.length;\r\n var ptNew;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\r\n\r\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\r\n }\r\n\r\n return pt;\r\n },\r\n mHelper: new Matrix()\r\n };\r\n\r\n function MaskElement(data, element, globalData) {\r\n this.data = data;\r\n this.element = element;\r\n this.globalData = globalData;\r\n this.storedData = [];\r\n this.masksProperties = this.data.masksProperties || [];\r\n this.maskElement = null;\r\n var defs = this.globalData.defs;\r\n var i;\r\n var len = this.masksProperties ? this.masksProperties.length : 0;\r\n this.viewData = createSizedArray(len);\r\n this.solidPath = '';\r\n var path;\r\n var properties = this.masksProperties;\r\n var count = 0;\r\n var currentMasks = [];\r\n var j;\r\n var jLen;\r\n var layerId = createElementID();\r\n var rect;\r\n var expansor;\r\n var feMorph;\r\n var x;\r\n var maskType = 'clipPath';\r\n var maskRef = 'clip-path';\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\r\n maskType = 'mask';\r\n maskRef = 'mask';\r\n }\r\n\r\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\r\n rect = createNS('rect');\r\n rect.setAttribute('fill', '#ffffff');\r\n rect.setAttribute('width', this.element.comp.data.w || 0);\r\n rect.setAttribute('height', this.element.comp.data.h || 0);\r\n currentMasks.push(rect);\r\n } else {\r\n rect = null;\r\n }\r\n\r\n path = createNS('path');\r\n\r\n if (properties[i].mode === 'n') {\r\n // TODO move this to a factory or to a constructor\r\n this.viewData[i] = {\r\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\r\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\r\n elem: path,\r\n lastPath: ''\r\n };\r\n defs.appendChild(path);\r\n } else {\r\n count += 1;\r\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\r\n path.setAttribute('clip-rule', 'nonzero');\r\n var filterID;\r\n\r\n if (properties[i].x.k !== 0) {\r\n maskType = 'mask';\r\n maskRef = 'mask';\r\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\r\n filterID = createElementID();\r\n expansor = createNS('filter');\r\n expansor.setAttribute('id', filterID);\r\n feMorph = createNS('feMorphology');\r\n feMorph.setAttribute('operator', 'erode');\r\n feMorph.setAttribute('in', 'SourceGraphic');\r\n feMorph.setAttribute('radius', '0');\r\n expansor.appendChild(feMorph);\r\n defs.appendChild(expansor);\r\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\r\n } else {\r\n feMorph = null;\r\n x = null;\r\n } // TODO move this to a factory or to a constructor\r\n\r\n\r\n this.storedData[i] = {\r\n elem: path,\r\n x: x,\r\n expan: feMorph,\r\n lastPath: '',\r\n lastOperator: '',\r\n filterId: filterID,\r\n lastRadius: 0\r\n };\r\n\r\n if (properties[i].mode === 'i') {\r\n jLen = currentMasks.length;\r\n var g = createNS('g');\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n g.appendChild(currentMasks[j]);\r\n }\r\n\r\n var mask = createNS('mask');\r\n mask.setAttribute('mask-type', 'alpha');\r\n mask.setAttribute('id', layerId + '_' + count);\r\n mask.appendChild(path);\r\n defs.appendChild(mask);\r\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\r\n currentMasks.length = 0;\r\n currentMasks.push(g);\r\n } else {\r\n currentMasks.push(path);\r\n }\r\n\r\n if (properties[i].inv && !this.solidPath) {\r\n this.solidPath = this.createLayerSolidPath();\r\n } // TODO move this to a factory or to a constructor\r\n\r\n\r\n this.viewData[i] = {\r\n elem: path,\r\n lastPath: '',\r\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\r\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\r\n invRect: rect\r\n };\r\n\r\n if (!this.viewData[i].prop.k) {\r\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\r\n }\r\n }\r\n }\r\n\r\n this.maskElement = createNS(maskType);\r\n len = currentMasks.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.maskElement.appendChild(currentMasks[i]);\r\n }\r\n\r\n if (count > 0) {\r\n this.maskElement.setAttribute('id', layerId);\r\n this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\r\n defs.appendChild(this.maskElement);\r\n }\r\n\r\n if (this.viewData.length) {\r\n this.element.addRenderableComponent(this);\r\n }\r\n }\r\n\r\n MaskElement.prototype.getMaskProperty = function (pos) {\r\n return this.viewData[pos].prop;\r\n };\r\n\r\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\r\n var finalMat = this.element.finalTransform.mat;\r\n var i;\r\n var len = this.masksProperties.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.viewData[i].prop._mdf || isFirstFrame) {\r\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\r\n }\r\n\r\n if (this.viewData[i].op._mdf || isFirstFrame) {\r\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\r\n }\r\n\r\n if (this.masksProperties[i].mode !== 'n') {\r\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\r\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\r\n }\r\n\r\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\r\n var feMorph = this.storedData[i].expan;\r\n\r\n if (this.storedData[i].x.v < 0) {\r\n if (this.storedData[i].lastOperator !== 'erode') {\r\n this.storedData[i].lastOperator = 'erode';\r\n this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\r\n }\r\n\r\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\r\n } else {\r\n if (this.storedData[i].lastOperator !== 'dilate') {\r\n this.storedData[i].lastOperator = 'dilate';\r\n this.storedData[i].elem.setAttribute('filter', null);\r\n }\r\n\r\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n MaskElement.prototype.getMaskelement = function () {\r\n return this.maskElement;\r\n };\r\n\r\n MaskElement.prototype.createLayerSolidPath = function () {\r\n var path = 'M0,0 ';\r\n path += ' h' + this.globalData.compSize.w;\r\n path += ' v' + this.globalData.compSize.h;\r\n path += ' h-' + this.globalData.compSize.w;\r\n path += ' v-' + this.globalData.compSize.h + ' ';\r\n return path;\r\n };\r\n\r\n MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\r\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\r\n var i;\r\n var len;\r\n len = pathNodes._length;\r\n\r\n for (i = 1; i < len; i += 1) {\r\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\r\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\r\n } // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\r\n\r\n\r\n if (pathNodes.c && len > 1) {\r\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\r\n } // pathNodes.__renderedString = pathString;\r\n\r\n\r\n if (viewData.lastPath !== pathString) {\r\n var pathShapeValue = '';\r\n\r\n if (viewData.elem) {\r\n if (pathNodes.c) {\r\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\r\n }\r\n\r\n viewData.elem.setAttribute('d', pathShapeValue);\r\n }\r\n\r\n viewData.lastPath = pathString;\r\n }\r\n };\r\n\r\n MaskElement.prototype.destroy = function () {\r\n this.element = null;\r\n this.globalData = null;\r\n this.maskElement = null;\r\n this.data = null;\r\n this.masksProperties = null;\r\n };\r\n\r\n var filtersFactory = function () {\r\n var ob = {};\r\n ob.createFilter = createFilter;\r\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\r\n\r\n function createFilter(filId, skipCoordinates) {\r\n var fil = createNS('filter');\r\n fil.setAttribute('id', filId);\r\n\r\n if (skipCoordinates !== true) {\r\n fil.setAttribute('filterUnits', 'objectBoundingBox');\r\n fil.setAttribute('x', '0%');\r\n fil.setAttribute('y', '0%');\r\n fil.setAttribute('width', '100%');\r\n fil.setAttribute('height', '100%');\r\n }\r\n\r\n return fil;\r\n }\r\n\r\n function createAlphaToLuminanceFilter() {\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\r\n return feColorMatrix;\r\n }\r\n\r\n return ob;\r\n }();\r\n\r\n var featureSupport = function () {\r\n var ob = {\r\n maskType: true\r\n };\r\n\r\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\r\n ob.maskType = false;\r\n }\r\n\r\n return ob;\r\n }();\r\n\r\n var registeredEffects = {};\r\n var idPrefix = 'filter_result_';\r\n\r\n function SVGEffects(elem) {\r\n var i;\r\n var source = 'SourceGraphic';\r\n var len = elem.data.ef ? elem.data.ef.length : 0;\r\n var filId = createElementID();\r\n var fil = filtersFactory.createFilter(filId, true);\r\n var count = 0;\r\n this.filters = [];\r\n var filterManager;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n filterManager = null;\r\n var type = elem.data.ef[i].ty;\r\n\r\n if (registeredEffects[type]) {\r\n var Effect = registeredEffects[type].effect;\r\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\r\n source = idPrefix + count;\r\n\r\n if (registeredEffects[type].countsAsEffect) {\r\n count += 1;\r\n }\r\n }\r\n\r\n if (filterManager) {\r\n this.filters.push(filterManager);\r\n }\r\n }\r\n\r\n if (count) {\r\n elem.globalData.defs.appendChild(fil);\r\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\r\n }\r\n\r\n if (this.filters.length) {\r\n elem.addRenderableComponent(this);\r\n }\r\n }\r\n\r\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\r\n var i;\r\n var len = this.filters.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.filters[i].renderFrame(_isFirstFrame);\r\n }\r\n };\r\n\r\n function registerEffect(id, effect, countsAsEffect) {\r\n registeredEffects[id] = {\r\n effect: effect,\r\n countsAsEffect: countsAsEffect\r\n };\r\n }\r\n\r\n function SVGBaseElement() {}\r\n\r\n SVGBaseElement.prototype = {\r\n initRendererElement: function initRendererElement() {\r\n this.layerElement = createNS('g');\r\n },\r\n createContainerElements: function createContainerElements() {\r\n this.matteElement = createNS('g');\r\n this.transformedElement = this.layerElement;\r\n this.maskedElement = this.layerElement;\r\n this._sizeChanged = false;\r\n var layerElementParent = null; // If this layer acts as a mask for the following layer\r\n\r\n if (this.data.td) {\r\n this.matteMasks = {};\r\n var symbolElement = createNS('symbol');\r\n symbolElement.setAttribute('id', this.layerId);\r\n var gg = createNS('g');\r\n gg.appendChild(this.layerElement);\r\n symbolElement.appendChild(gg);\r\n layerElementParent = gg;\r\n this.globalData.defs.appendChild(symbolElement);\r\n } else if (this.data.tt) {\r\n this.matteElement.appendChild(this.layerElement);\r\n layerElementParent = this.matteElement;\r\n this.baseElement = this.matteElement;\r\n } else {\r\n this.baseElement = this.layerElement;\r\n }\r\n\r\n if (this.data.ln) {\r\n this.layerElement.setAttribute('id', this.data.ln);\r\n }\r\n\r\n if (this.data.cl) {\r\n this.layerElement.setAttribute('class', this.data.cl);\r\n } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\r\n\r\n\r\n if (this.data.ty === 0 && !this.data.hd) {\r\n var cp = createNS('clipPath');\r\n var pt = createNS('path');\r\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\r\n var clipId = createElementID();\r\n cp.setAttribute('id', clipId);\r\n cp.appendChild(pt);\r\n this.globalData.defs.appendChild(cp);\r\n\r\n if (this.checkMasks()) {\r\n var cpGroup = createNS('g');\r\n cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\r\n cpGroup.appendChild(this.layerElement);\r\n this.transformedElement = cpGroup;\r\n\r\n if (layerElementParent) {\r\n layerElementParent.appendChild(this.transformedElement);\r\n } else {\r\n this.baseElement = this.transformedElement;\r\n }\r\n } else {\r\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\r\n }\r\n }\r\n\r\n if (this.data.bm !== 0) {\r\n this.setBlendMode();\r\n }\r\n },\r\n renderElement: function renderElement() {\r\n if (this.finalTransform._matMdf) {\r\n this.transformedElement.setAttribute('transform', this.finalTransform.mat.to2dCSS());\r\n }\r\n\r\n if (this.finalTransform._opMdf) {\r\n this.transformedElement.setAttribute('opacity', this.finalTransform.mProp.o.v);\r\n }\r\n },\r\n destroyBaseElement: function destroyBaseElement() {\r\n this.layerElement = null;\r\n this.matteElement = null;\r\n this.maskManager.destroy();\r\n },\r\n getBaseElement: function getBaseElement() {\r\n if (this.data.hd) {\r\n return null;\r\n }\r\n\r\n return this.baseElement;\r\n },\r\n createRenderableComponents: function createRenderableComponents() {\r\n this.maskManager = new MaskElement(this.data, this, this.globalData);\r\n this.renderableEffectsManager = new SVGEffects(this);\r\n },\r\n getMatte: function getMatte(matteType) {\r\n if (!this.matteMasks[matteType]) {\r\n var id = this.layerId + '_' + matteType;\r\n var filId;\r\n var fil;\r\n var useElement;\r\n var gg;\r\n\r\n if (matteType === 1 || matteType === 3) {\r\n var masker = createNS('mask');\r\n masker.setAttribute('id', id);\r\n masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\r\n useElement = createNS('use');\r\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\r\n masker.appendChild(useElement);\r\n this.globalData.defs.appendChild(masker);\r\n\r\n if (!featureSupport.maskType && matteType === 1) {\r\n masker.setAttribute('mask-type', 'luminance');\r\n filId = createElementID();\r\n fil = filtersFactory.createFilter(filId);\r\n this.globalData.defs.appendChild(fil);\r\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\r\n gg = createNS('g');\r\n gg.appendChild(useElement);\r\n masker.appendChild(gg);\r\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\r\n }\r\n } else if (matteType === 2) {\r\n var maskGroup = createNS('mask');\r\n maskGroup.setAttribute('id', id);\r\n maskGroup.setAttribute('mask-type', 'alpha');\r\n var maskGrouper = createNS('g');\r\n maskGroup.appendChild(maskGrouper);\r\n filId = createElementID();\r\n fil = filtersFactory.createFilter(filId); /// /\r\n\r\n var feCTr = createNS('feComponentTransfer');\r\n feCTr.setAttribute('in', 'SourceGraphic');\r\n fil.appendChild(feCTr);\r\n var feFunc = createNS('feFuncA');\r\n feFunc.setAttribute('type', 'table');\r\n feFunc.setAttribute('tableValues', '1.0 0.0');\r\n feCTr.appendChild(feFunc); /// /\r\n\r\n this.globalData.defs.appendChild(fil);\r\n var alphaRect = createNS('rect');\r\n alphaRect.setAttribute('width', this.comp.data.w);\r\n alphaRect.setAttribute('height', this.comp.data.h);\r\n alphaRect.setAttribute('x', '0');\r\n alphaRect.setAttribute('y', '0');\r\n alphaRect.setAttribute('fill', '#ffffff');\r\n alphaRect.setAttribute('opacity', '0');\r\n maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\r\n maskGrouper.appendChild(alphaRect);\r\n useElement = createNS('use');\r\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\r\n maskGrouper.appendChild(useElement);\r\n\r\n if (!featureSupport.maskType) {\r\n maskGroup.setAttribute('mask-type', 'luminance');\r\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\r\n gg = createNS('g');\r\n maskGrouper.appendChild(alphaRect);\r\n gg.appendChild(this.layerElement);\r\n maskGrouper.appendChild(gg);\r\n }\r\n\r\n this.globalData.defs.appendChild(maskGroup);\r\n }\r\n\r\n this.matteMasks[matteType] = id;\r\n }\r\n\r\n return this.matteMasks[matteType];\r\n },\r\n setMatte: function setMatte(id) {\r\n if (!this.matteElement) {\r\n return;\r\n }\r\n\r\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\r\n }\r\n };\r\n\r\n /**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\r\n function HierarchyElement() {}\r\n\r\n HierarchyElement.prototype = {\r\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\r\n initHierarchy: function initHierarchy() {\r\n // element's parent list\r\n this.hierarchy = []; // if element is parent of another layer _isParent will be true\r\n\r\n this._isParent = false;\r\n this.checkParenting();\r\n },\r\n\r\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\r\n setHierarchy: function setHierarchy(hierarchy) {\r\n this.hierarchy = hierarchy;\r\n },\r\n\r\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\r\n setAsParent: function setAsParent() {\r\n this._isParent = true;\r\n },\r\n\r\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\r\n checkParenting: function checkParenting() {\r\n if (this.data.parent !== undefined) {\r\n this.comp.buildElementParenting(this, this.data.parent, []);\r\n }\r\n }\r\n };\r\n\r\n function RenderableDOMElement() {}\r\n\r\n (function () {\r\n var _prototype = {\r\n initElement: function initElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n this.initRenderable();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n this.createContent();\r\n this.hide();\r\n },\r\n hide: function hide() {\r\n // console.log('HIDE', this);\r\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style.display = 'none';\r\n this.hidden = true;\r\n }\r\n },\r\n show: function show() {\r\n // console.log('SHOW', this);\r\n if (this.isInRange && !this.isTransparent) {\r\n if (!this.data.hd) {\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style.display = 'block';\r\n }\r\n\r\n this.hidden = false;\r\n this._isFirstFrame = true;\r\n }\r\n },\r\n renderFrame: function renderFrame() {\r\n // If it is exported as hidden (data.hd === true) no need to render\r\n // If it is not visible no need to render\r\n if (this.data.hd || this.hidden) {\r\n return;\r\n }\r\n\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.renderElement();\r\n this.renderInnerContent();\r\n\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n renderInnerContent: function renderInnerContent() {},\r\n prepareFrame: function prepareFrame(num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n this.checkTransparency();\r\n },\r\n destroy: function destroy() {\r\n this.innerElem = null;\r\n this.destroyBaseElement();\r\n }\r\n };\r\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\r\n })();\r\n\r\n function IImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initElement(data, globalData, comp);\r\n this.sourceRect = {\r\n top: 0,\r\n left: 0,\r\n width: this.assetData.w,\r\n height: this.assetData.h\r\n };\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\r\n\r\n IImageElement.prototype.createContent = function () {\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n this.innerElem = createNS('image');\r\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\r\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\r\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\r\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\r\n this.layerElement.appendChild(this.innerElem);\r\n };\r\n\r\n IImageElement.prototype.sourceRectAtTime = function () {\r\n return this.sourceRect;\r\n };\r\n\r\n function ProcessedElement(element, position) {\r\n this.elem = element;\r\n this.pos = position;\r\n }\r\n\r\n function IShapeElement() {}\r\n\r\n IShapeElement.prototype = {\r\n addShapeToModifiers: function addShapeToModifiers(data) {\r\n var i;\r\n var len = this.shapeModifiers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.shapeModifiers[i].addShape(data);\r\n }\r\n },\r\n isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\r\n var i = 0;\r\n var len = this.shapeModifiers.length;\r\n\r\n while (i < len) {\r\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n },\r\n renderModifiers: function renderModifiers() {\r\n if (!this.shapeModifiers.length) {\r\n return;\r\n }\r\n\r\n var i;\r\n var len = this.shapes.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.shapes[i].sh.reset();\r\n }\r\n\r\n len = this.shapeModifiers.length;\r\n var shouldBreakProcess;\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // workaround to fix cases where a repeater resets the shape so the following processes get called twice\r\n // TODO: find a better solution for this\r\n\r\n if (shouldBreakProcess) {\r\n break;\r\n }\r\n }\r\n },\r\n searchProcessedElement: function searchProcessedElement(elem) {\r\n var elements = this.processedElements;\r\n var i = 0;\r\n var len = elements.length;\r\n\r\n while (i < len) {\r\n if (elements[i].elem === elem) {\r\n return elements[i].pos;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return 0;\r\n },\r\n addProcessedElement: function addProcessedElement(elem, pos) {\r\n var elements = this.processedElements;\r\n var i = elements.length;\r\n\r\n while (i) {\r\n i -= 1;\r\n\r\n if (elements[i].elem === elem) {\r\n elements[i].pos = pos;\r\n return;\r\n }\r\n }\r\n\r\n elements.push(new ProcessedElement(elem, pos));\r\n },\r\n prepareFrame: function prepareFrame(num) {\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n }\r\n };\r\n\r\n var lineCapEnum = {\r\n 1: 'butt',\r\n 2: 'round',\r\n 3: 'square'\r\n };\r\n var lineJoinEnum = {\r\n 1: 'miter',\r\n 2: 'round',\r\n 3: 'bevel'\r\n };\r\n\r\n function SVGShapeData(transformers, level, shape) {\r\n this.caches = [];\r\n this.styles = [];\r\n this.transformers = transformers;\r\n this.lStr = '';\r\n this.sh = shape;\r\n this.lvl = level; // TODO find if there are some cases where _isAnimated can be false.\r\n // For now, since shapes add up with other shapes. They have to be calculated every time.\r\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\r\n\r\n this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\r\n\r\n var i = 0;\r\n var len = transformers.length;\r\n\r\n while (i < len) {\r\n if (transformers[i].mProps.dynamicProperties.length) {\r\n this._isAnimated = true;\r\n break;\r\n }\r\n\r\n i += 1;\r\n }\r\n }\r\n\r\n SVGShapeData.prototype.setAsAnimated = function () {\r\n this._isAnimated = true;\r\n };\r\n\r\n function SVGStyleData(data, level) {\r\n this.data = data;\r\n this.type = data.ty;\r\n this.d = '';\r\n this.lvl = level;\r\n this._mdf = false;\r\n this.closed = data.hd === true;\r\n this.pElem = createNS('path');\r\n this.msElem = null;\r\n }\r\n\r\n SVGStyleData.prototype.reset = function () {\r\n this.d = '';\r\n this._mdf = false;\r\n };\r\n\r\n function DashProperty(elem, data, renderer, container) {\r\n this.elem = elem;\r\n this.frameId = -1;\r\n this.dataProps = createSizedArray(data.length);\r\n this.renderer = renderer;\r\n this.k = false;\r\n this.dashStr = '';\r\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\r\n this.dashoffset = createTypedArray('float32', 1);\r\n this.initDynamicPropertyContainer(container);\r\n var i;\r\n var len = data.length || 0;\r\n var prop;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\r\n this.k = prop.k || this.k;\r\n this.dataProps[i] = {\r\n n: data[i].n,\r\n p: prop\r\n };\r\n }\r\n\r\n if (!this.k) {\r\n this.getValue(true);\r\n }\r\n\r\n this._isAnimated = this.k;\r\n }\r\n\r\n DashProperty.prototype.getValue = function (forceRender) {\r\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\r\n return;\r\n }\r\n\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n this._mdf = this._mdf || forceRender;\r\n\r\n if (this._mdf) {\r\n var i = 0;\r\n var len = this.dataProps.length;\r\n\r\n if (this.renderer === 'svg') {\r\n this.dashStr = '';\r\n }\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.dataProps[i].n !== 'o') {\r\n if (this.renderer === 'svg') {\r\n this.dashStr += ' ' + this.dataProps[i].p.v;\r\n } else {\r\n this.dashArray[i] = this.dataProps[i].p.v;\r\n }\r\n } else {\r\n this.dashoffset[0] = this.dataProps[i].p.v;\r\n }\r\n }\r\n }\r\n };\r\n\r\n extendPrototype([DynamicPropertyContainer], DashProperty);\r\n\r\n function SVGStrokeStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\r\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\r\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\r\n this.style = styleOb;\r\n this._isAnimated = !!this._isAnimated;\r\n }\r\n\r\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\r\n\r\n function SVGFillStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\r\n this.style = styleOb;\r\n }\r\n\r\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\r\n\r\n function SVGNoStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.style = styleOb;\r\n }\r\n\r\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\r\n\r\n function GradientProperty(elem, data, container) {\r\n this.data = data;\r\n this.c = createTypedArray('uint8c', data.p * 4);\r\n var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\r\n this.o = createTypedArray('float32', cLength);\r\n this._cmdf = false;\r\n this._omdf = false;\r\n this._collapsable = this.checkCollapsable();\r\n this._hasOpacity = cLength;\r\n this.initDynamicPropertyContainer(container);\r\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\r\n this.k = this.prop.k;\r\n this.getValue(true);\r\n }\r\n\r\n GradientProperty.prototype.comparePoints = function (values, points) {\r\n var i = 0;\r\n var len = this.o.length / 2;\r\n var diff;\r\n\r\n while (i < len) {\r\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\r\n\r\n if (diff > 0.01) {\r\n return false;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n GradientProperty.prototype.checkCollapsable = function () {\r\n if (this.o.length / 2 !== this.c.length / 4) {\r\n return false;\r\n }\r\n\r\n if (this.data.k.k[0].s) {\r\n var i = 0;\r\n var len = this.data.k.k.length;\r\n\r\n while (i < len) {\r\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\r\n return false;\r\n }\r\n\r\n i += 1;\r\n }\r\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n GradientProperty.prototype.getValue = function (forceRender) {\r\n this.prop.getValue();\r\n this._mdf = false;\r\n this._cmdf = false;\r\n this._omdf = false;\r\n\r\n if (this.prop._mdf || forceRender) {\r\n var i;\r\n var len = this.data.p * 4;\r\n var mult;\r\n var val;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n mult = i % 4 === 0 ? 100 : 255;\r\n val = Math.round(this.prop.v[i] * mult);\r\n\r\n if (this.c[i] !== val) {\r\n this.c[i] = val;\r\n this._cmdf = !forceRender;\r\n }\r\n }\r\n\r\n if (this.o.length) {\r\n len = this.prop.v.length;\r\n\r\n for (i = this.data.p * 4; i < len; i += 1) {\r\n mult = i % 2 === 0 ? 100 : 1;\r\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\r\n\r\n if (this.o[i - this.data.p * 4] !== val) {\r\n this.o[i - this.data.p * 4] = val;\r\n this._omdf = !forceRender;\r\n }\r\n }\r\n }\r\n\r\n this._mdf = !forceRender;\r\n }\r\n };\r\n\r\n extendPrototype([DynamicPropertyContainer], GradientProperty);\r\n\r\n function SVGGradientFillStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.initGradientData(elem, data, styleOb);\r\n }\r\n\r\n SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\r\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\r\n this.h = PropertyFactory.getProp(elem, data.h || {\r\n k: 0\r\n }, 0, 0.01, this);\r\n this.a = PropertyFactory.getProp(elem, data.a || {\r\n k: 0\r\n }, 0, degToRads, this);\r\n this.g = new GradientProperty(elem, data.g, this);\r\n this.style = styleOb;\r\n this.stops = [];\r\n this.setGradientData(styleOb.pElem, data);\r\n this.setGradientOpacity(data, styleOb);\r\n this._isAnimated = !!this._isAnimated;\r\n };\r\n\r\n SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\r\n var gradientId = createElementID();\r\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\r\n gfill.setAttribute('id', gradientId);\r\n gfill.setAttribute('spreadMethod', 'pad');\r\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n var stops = [];\r\n var stop;\r\n var j;\r\n var jLen;\r\n jLen = data.g.p * 4;\r\n\r\n for (j = 0; j < jLen; j += 4) {\r\n stop = createNS('stop');\r\n gfill.appendChild(stop);\r\n stops.push(stop);\r\n }\r\n\r\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\r\n this.gf = gfill;\r\n this.cst = stops;\r\n };\r\n\r\n SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\r\n if (this.g._hasOpacity && !this.g._collapsable) {\r\n var stop;\r\n var j;\r\n var jLen;\r\n var mask = createNS('mask');\r\n var maskElement = createNS('path');\r\n mask.appendChild(maskElement);\r\n var opacityId = createElementID();\r\n var maskId = createElementID();\r\n mask.setAttribute('id', maskId);\r\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\r\n opFill.setAttribute('id', opacityId);\r\n opFill.setAttribute('spreadMethod', 'pad');\r\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\r\n var stops = this.stops;\r\n\r\n for (j = data.g.p * 4; j < jLen; j += 2) {\r\n stop = createNS('stop');\r\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\r\n opFill.appendChild(stop);\r\n stops.push(stop);\r\n }\r\n\r\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\r\n\r\n if (data.ty === 'gs') {\r\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\r\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\r\n\r\n if (data.lj === 1) {\r\n maskElement.setAttribute('stroke-miterlimit', data.ml);\r\n }\r\n }\r\n\r\n this.of = opFill;\r\n this.ms = mask;\r\n this.ost = stops;\r\n this.maskId = maskId;\r\n styleOb.msElem = maskElement;\r\n }\r\n };\r\n\r\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\r\n\r\n function SVGGradientStrokeStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\r\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\r\n this.initGradientData(elem, data, styleOb);\r\n this._isAnimated = !!this._isAnimated;\r\n }\r\n\r\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\r\n\r\n function ShapeGroupData() {\r\n this.it = [];\r\n this.prevViewData = [];\r\n this.gr = createNS('g');\r\n }\r\n\r\n function SVGTransformData(mProps, op, container) {\r\n this.transform = {\r\n mProps: mProps,\r\n op: op,\r\n container: container\r\n };\r\n this.elements = [];\r\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\r\n }\r\n\r\n var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\r\n if (length === 0) {\r\n return '';\r\n }\r\n\r\n var _o = pathNodes.o;\r\n var _i = pathNodes.i;\r\n var _v = pathNodes.v;\r\n var i;\r\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\r\n\r\n for (i = 1; i < length; i += 1) {\r\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\r\n }\r\n\r\n if (closed && length) {\r\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\r\n shapeString += 'z';\r\n }\r\n\r\n return shapeString;\r\n };\r\n\r\n var SVGElementsRenderer = function () {\r\n var _identityMatrix = new Matrix();\r\n\r\n var _matrixHelper = new Matrix();\r\n\r\n var ob = {\r\n createRenderFunction: createRenderFunction\r\n };\r\n\r\n function createRenderFunction(data) {\r\n switch (data.ty) {\r\n case 'fl':\r\n return renderFill;\r\n\r\n case 'gf':\r\n return renderGradient;\r\n\r\n case 'gs':\r\n return renderGradientStroke;\r\n\r\n case 'st':\r\n return renderStroke;\r\n\r\n case 'sh':\r\n case 'el':\r\n case 'rc':\r\n case 'sr':\r\n return renderPath;\r\n\r\n case 'tr':\r\n return renderContentTransform;\r\n\r\n case 'no':\r\n return renderNoop;\r\n\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n function renderContentTransform(styleData, itemData, isFirstFrame) {\r\n if (isFirstFrame || itemData.transform.op._mdf) {\r\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\r\n }\r\n\r\n if (isFirstFrame || itemData.transform.mProps._mdf) {\r\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\r\n }\r\n }\r\n\r\n function renderNoop() {}\r\n\r\n function renderPath(styleData, itemData, isFirstFrame) {\r\n var j;\r\n var jLen;\r\n var pathStringTransformed;\r\n var redraw;\r\n var pathNodes;\r\n var l;\r\n var lLen = itemData.styles.length;\r\n var lvl = itemData.lvl;\r\n var paths;\r\n var mat;\r\n var props;\r\n var iterations;\r\n var k;\r\n\r\n for (l = 0; l < lLen; l += 1) {\r\n redraw = itemData.sh._mdf || isFirstFrame;\r\n\r\n if (itemData.styles[l].lvl < lvl) {\r\n mat = _matrixHelper.reset();\r\n iterations = lvl - itemData.styles[l].lvl;\r\n k = itemData.transformers.length - 1;\r\n\r\n while (!redraw && iterations > 0) {\r\n redraw = itemData.transformers[k].mProps._mdf || redraw;\r\n iterations -= 1;\r\n k -= 1;\r\n }\r\n\r\n if (redraw) {\r\n iterations = lvl - itemData.styles[l].lvl;\r\n k = itemData.transformers.length - 1;\r\n\r\n while (iterations > 0) {\r\n props = itemData.transformers[k].mProps.v.props;\r\n mat.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]);\r\n iterations -= 1;\r\n k -= 1;\r\n }\r\n }\r\n } else {\r\n mat = _identityMatrix;\r\n }\r\n\r\n paths = itemData.sh.paths;\r\n jLen = paths._length;\r\n\r\n if (redraw) {\r\n pathStringTransformed = '';\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n pathNodes = paths.shapes[j];\r\n\r\n if (pathNodes && pathNodes._length) {\r\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\r\n }\r\n }\r\n\r\n itemData.caches[l] = pathStringTransformed;\r\n } else {\r\n pathStringTransformed = itemData.caches[l];\r\n }\r\n\r\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\r\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\r\n }\r\n }\r\n\r\n function renderFill(styleData, itemData, isFirstFrame) {\r\n var styleElem = itemData.style;\r\n\r\n if (itemData.c._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\r\n }\r\n\r\n if (itemData.o._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\r\n }\r\n }\r\n\r\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\r\n renderGradient(styleData, itemData, isFirstFrame);\r\n renderStroke(styleData, itemData, isFirstFrame);\r\n }\r\n\r\n function renderGradient(styleData, itemData, isFirstFrame) {\r\n var gfill = itemData.gf;\r\n var hasOpacity = itemData.g._hasOpacity;\r\n var pt1 = itemData.s.v;\r\n var pt2 = itemData.e.v;\r\n\r\n if (itemData.o._mdf || isFirstFrame) {\r\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\r\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\r\n }\r\n\r\n if (itemData.s._mdf || isFirstFrame) {\r\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\r\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\r\n gfill.setAttribute(attr1, pt1[0]);\r\n gfill.setAttribute(attr2, pt1[1]);\r\n\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute(attr1, pt1[0]);\r\n itemData.of.setAttribute(attr2, pt1[1]);\r\n }\r\n }\r\n\r\n var stops;\r\n var i;\r\n var len;\r\n var stop;\r\n\r\n if (itemData.g._cmdf || isFirstFrame) {\r\n stops = itemData.cst;\r\n var cValues = itemData.g.c;\r\n len = stops.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n stop = stops[i];\r\n stop.setAttribute('offset', cValues[i * 4] + '%');\r\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\r\n }\r\n }\r\n\r\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\r\n var oValues = itemData.g.o;\r\n\r\n if (itemData.g._collapsable) {\r\n stops = itemData.cst;\r\n } else {\r\n stops = itemData.ost;\r\n }\r\n\r\n len = stops.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n stop = stops[i];\r\n\r\n if (!itemData.g._collapsable) {\r\n stop.setAttribute('offset', oValues[i * 2] + '%');\r\n }\r\n\r\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\r\n }\r\n }\r\n\r\n if (styleData.t === 1) {\r\n if (itemData.e._mdf || isFirstFrame) {\r\n gfill.setAttribute('x2', pt2[0]);\r\n gfill.setAttribute('y2', pt2[1]);\r\n\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('x2', pt2[0]);\r\n itemData.of.setAttribute('y2', pt2[1]);\r\n }\r\n }\r\n } else {\r\n var rad;\r\n\r\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\r\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n gfill.setAttribute('r', rad);\r\n\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('r', rad);\r\n }\r\n }\r\n\r\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\r\n if (!rad) {\r\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n }\r\n\r\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\r\n var percent = itemData.h.v;\r\n\r\n if (percent >= 1) {\r\n percent = 0.99;\r\n } else if (percent <= -1) {\r\n percent = -0.99;\r\n }\r\n\r\n var dist = rad * percent;\r\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\r\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\r\n gfill.setAttribute('fx', x);\r\n gfill.setAttribute('fy', y);\r\n\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('fx', x);\r\n itemData.of.setAttribute('fy', y);\r\n }\r\n } // gfill.setAttribute('fy','200');\r\n\r\n }\r\n }\r\n\r\n function renderStroke(styleData, itemData, isFirstFrame) {\r\n var styleElem = itemData.style;\r\n var d = itemData.d;\r\n\r\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\r\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\r\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\r\n }\r\n\r\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\r\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\r\n }\r\n\r\n if (itemData.o._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\r\n }\r\n\r\n if (itemData.w._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\r\n\r\n if (styleElem.msElem) {\r\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\r\n }\r\n }\r\n }\r\n\r\n return ob;\r\n }();\r\n\r\n function SVGShapeElement(data, globalData, comp) {\r\n // List of drawable elements\r\n this.shapes = []; // Full shape data\r\n\r\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\r\n\r\n this.stylesList = []; // List of modifiers that will be applied to shapes\r\n\r\n this.shapeModifiers = []; // List of items in shape tree\r\n\r\n this.itemsData = []; // List of items in previous shape tree\r\n\r\n this.processedElements = []; // List of animated components\r\n\r\n this.animatedContents = [];\r\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n // List of elements that have been created\r\n\r\n this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\r\n\r\n SVGShapeElement.prototype.initSecondaryElement = function () {};\r\n\r\n SVGShapeElement.prototype.identityMatrix = new Matrix();\r\n\r\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\r\n\r\n SVGShapeElement.prototype.createContent = function () {\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\r\n this.filterUniqueShapes();\r\n };\r\n /*\r\n This method searches for multiple shapes that affect a single element and one of them is animated\r\n */\r\n\r\n\r\n SVGShapeElement.prototype.filterUniqueShapes = function () {\r\n var i;\r\n var len = this.shapes.length;\r\n var shape;\r\n var j;\r\n var jLen = this.stylesList.length;\r\n var style;\r\n var tempShapes = [];\r\n var areAnimated = false;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n style = this.stylesList[j];\r\n areAnimated = false;\r\n tempShapes.length = 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n shape = this.shapes[i];\r\n\r\n if (shape.styles.indexOf(style) !== -1) {\r\n tempShapes.push(shape);\r\n areAnimated = shape._isAnimated || areAnimated;\r\n }\r\n }\r\n\r\n if (tempShapes.length > 1 && areAnimated) {\r\n this.setShapesAsAnimated(tempShapes);\r\n }\r\n }\r\n };\r\n\r\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\r\n var i;\r\n var len = shapes.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n shapes[i].setAsAnimated();\r\n }\r\n };\r\n\r\n SVGShapeElement.prototype.createStyleElement = function (data, level) {\r\n // TODO: prevent drawing of hidden styles\r\n var elementData;\r\n var styleOb = new SVGStyleData(data, level);\r\n var pathElement = styleOb.pElem;\r\n\r\n if (data.ty === 'st') {\r\n elementData = new SVGStrokeStyleData(this, data, styleOb);\r\n } else if (data.ty === 'fl') {\r\n elementData = new SVGFillStyleData(this, data, styleOb);\r\n } else if (data.ty === 'gf' || data.ty === 'gs') {\r\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\r\n elementData = new GradientConstructor(this, data, styleOb);\r\n this.globalData.defs.appendChild(elementData.gf);\r\n\r\n if (elementData.maskId) {\r\n this.globalData.defs.appendChild(elementData.ms);\r\n this.globalData.defs.appendChild(elementData.of);\r\n pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\r\n }\r\n } else if (data.ty === 'no') {\r\n elementData = new SVGNoStyleData(this, data, styleOb);\r\n }\r\n\r\n if (data.ty === 'st' || data.ty === 'gs') {\r\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\r\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\r\n pathElement.setAttribute('fill-opacity', '0');\r\n\r\n if (data.lj === 1) {\r\n pathElement.setAttribute('stroke-miterlimit', data.ml);\r\n }\r\n }\r\n\r\n if (data.r === 2) {\r\n pathElement.setAttribute('fill-rule', 'evenodd');\r\n }\r\n\r\n if (data.ln) {\r\n pathElement.setAttribute('id', data.ln);\r\n }\r\n\r\n if (data.cl) {\r\n pathElement.setAttribute('class', data.cl);\r\n }\r\n\r\n if (data.bm) {\r\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n }\r\n\r\n this.stylesList.push(styleOb);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n };\r\n\r\n SVGShapeElement.prototype.createGroupElement = function (data) {\r\n var elementData = new ShapeGroupData();\r\n\r\n if (data.ln) {\r\n elementData.gr.setAttribute('id', data.ln);\r\n }\r\n\r\n if (data.cl) {\r\n elementData.gr.setAttribute('class', data.cl);\r\n }\r\n\r\n if (data.bm) {\r\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n }\r\n\r\n return elementData;\r\n };\r\n\r\n SVGShapeElement.prototype.createTransformElement = function (data, container) {\r\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\r\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n };\r\n\r\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\r\n var ty = 4;\r\n\r\n if (data.ty === 'rc') {\r\n ty = 5;\r\n } else if (data.ty === 'el') {\r\n ty = 6;\r\n } else if (data.ty === 'sr') {\r\n ty = 7;\r\n }\r\n\r\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\r\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\r\n this.shapes.push(elementData);\r\n this.addShapeToModifiers(elementData);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n };\r\n\r\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\r\n var i = 0;\r\n var len = this.animatedContents.length;\r\n\r\n while (i < len) {\r\n if (this.animatedContents[i].element === element) {\r\n return;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n this.animatedContents.push({\r\n fn: SVGElementsRenderer.createRenderFunction(data),\r\n element: element,\r\n data: data\r\n });\r\n };\r\n\r\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\r\n var arr = elementData.styles;\r\n var j;\r\n var jLen = this.stylesList.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n if (!this.stylesList[j].closed) {\r\n arr.push(this.stylesList[j]);\r\n }\r\n }\r\n };\r\n\r\n SVGShapeElement.prototype.reloadShapes = function () {\r\n this._isFirstFrame = true;\r\n var i;\r\n var len = this.itemsData.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.prevViewData[i] = this.itemsData[i];\r\n }\r\n\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\r\n this.filterUniqueShapes();\r\n len = this.dynamicProperties.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n }\r\n\r\n this.renderModifiers();\r\n };\r\n\r\n SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\r\n var ownTransformers = [].concat(transformers);\r\n var i;\r\n var len = arr.length - 1;\r\n var j;\r\n var jLen;\r\n var ownStyles = [];\r\n var ownModifiers = [];\r\n var currentTransform;\r\n var modifier;\r\n var processedPos;\r\n\r\n for (i = len; i >= 0; i -= 1) {\r\n processedPos = this.searchProcessedElement(arr[i]);\r\n\r\n if (!processedPos) {\r\n arr[i]._render = render;\r\n } else {\r\n itemsData[i] = prevViewData[processedPos - 1];\r\n }\r\n\r\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createStyleElement(arr[i], level);\r\n } else {\r\n itemsData[i].style.closed = false;\r\n }\r\n\r\n if (arr[i]._render) {\r\n if (itemsData[i].style.pElem.parentNode !== container) {\r\n container.appendChild(itemsData[i].style.pElem);\r\n }\r\n }\r\n\r\n ownStyles.push(itemsData[i].style);\r\n } else if (arr[i].ty === 'gr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createGroupElement(arr[i]);\r\n } else {\r\n jLen = itemsData[i].it.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\r\n }\r\n }\r\n\r\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\r\n\r\n if (arr[i]._render) {\r\n if (itemsData[i].gr.parentNode !== container) {\r\n container.appendChild(itemsData[i].gr);\r\n }\r\n }\r\n } else if (arr[i].ty === 'tr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createTransformElement(arr[i], container);\r\n }\r\n\r\n currentTransform = itemsData[i].transform;\r\n ownTransformers.push(currentTransform);\r\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\r\n }\r\n\r\n this.setElementStyles(itemsData[i]);\r\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n modifier.init(this, arr[i]);\r\n itemsData[i] = modifier;\r\n this.shapeModifiers.push(modifier);\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = false;\r\n }\r\n\r\n ownModifiers.push(modifier);\r\n } else if (arr[i].ty === 'rp') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n itemsData[i] = modifier;\r\n modifier.init(this, arr, i, itemsData);\r\n this.shapeModifiers.push(modifier);\r\n render = false;\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = true;\r\n }\r\n\r\n ownModifiers.push(modifier);\r\n }\r\n\r\n this.addProcessedElement(arr[i], i + 1);\r\n }\r\n\r\n len = ownStyles.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ownStyles[i].closed = true;\r\n }\r\n\r\n len = ownModifiers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ownModifiers[i].closed = true;\r\n }\r\n };\r\n\r\n SVGShapeElement.prototype.renderInnerContent = function () {\r\n this.renderModifiers();\r\n var i;\r\n var len = this.stylesList.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.stylesList[i].reset();\r\n }\r\n\r\n this.renderShape();\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\r\n if (this.stylesList[i].msElem) {\r\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); // Adding M0 0 fixes same mask bug on all browsers\r\n\r\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\r\n }\r\n\r\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\r\n }\r\n }\r\n };\r\n\r\n SVGShapeElement.prototype.renderShape = function () {\r\n var i;\r\n var len = this.animatedContents.length;\r\n var animatedContent;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n animatedContent = this.animatedContents[i];\r\n\r\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\r\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\r\n }\r\n }\r\n };\r\n\r\n SVGShapeElement.prototype.destroy = function () {\r\n this.destroyBaseElement();\r\n this.shapesData = null;\r\n this.itemsData = null;\r\n };\r\n\r\n function LetterProps(o, sw, sc, fc, m, p) {\r\n this.o = o;\r\n this.sw = sw;\r\n this.sc = sc;\r\n this.fc = fc;\r\n this.m = m;\r\n this.p = p;\r\n this._mdf = {\r\n o: true,\r\n sw: !!sw,\r\n sc: !!sc,\r\n fc: !!fc,\r\n m: true,\r\n p: true\r\n };\r\n }\r\n\r\n LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\r\n this._mdf.o = false;\r\n this._mdf.sw = false;\r\n this._mdf.sc = false;\r\n this._mdf.fc = false;\r\n this._mdf.m = false;\r\n this._mdf.p = false;\r\n var updated = false;\r\n\r\n if (this.o !== o) {\r\n this.o = o;\r\n this._mdf.o = true;\r\n updated = true;\r\n }\r\n\r\n if (this.sw !== sw) {\r\n this.sw = sw;\r\n this._mdf.sw = true;\r\n updated = true;\r\n }\r\n\r\n if (this.sc !== sc) {\r\n this.sc = sc;\r\n this._mdf.sc = true;\r\n updated = true;\r\n }\r\n\r\n if (this.fc !== fc) {\r\n this.fc = fc;\r\n this._mdf.fc = true;\r\n updated = true;\r\n }\r\n\r\n if (this.m !== m) {\r\n this.m = m;\r\n this._mdf.m = true;\r\n updated = true;\r\n }\r\n\r\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\r\n this.p = p;\r\n this._mdf.p = true;\r\n updated = true;\r\n }\r\n\r\n return updated;\r\n };\r\n\r\n function TextProperty(elem, data) {\r\n this._frameId = initialDefaultFrame;\r\n this.pv = '';\r\n this.v = '';\r\n this.kf = false;\r\n this._isFirstFrame = true;\r\n this._mdf = false;\r\n this.data = data;\r\n this.elem = elem;\r\n this.comp = this.elem.comp;\r\n this.keysIndex = 0;\r\n this.canResize = false;\r\n this.minimumFontSize = 1;\r\n this.effectsSequence = [];\r\n this.currentData = {\r\n ascent: 0,\r\n boxWidth: this.defaultBoxWidth,\r\n f: '',\r\n fStyle: '',\r\n fWeight: '',\r\n fc: '',\r\n j: '',\r\n justifyOffset: '',\r\n l: [],\r\n lh: 0,\r\n lineWidths: [],\r\n ls: '',\r\n of: '',\r\n s: '',\r\n sc: '',\r\n sw: 0,\r\n t: 0,\r\n tr: 0,\r\n sz: 0,\r\n ps: null,\r\n fillColorAnim: false,\r\n strokeColorAnim: false,\r\n strokeWidthAnim: false,\r\n yOffset: 0,\r\n finalSize: 0,\r\n finalText: [],\r\n finalLineHeight: 0,\r\n __complete: false\r\n };\r\n this.copyData(this.currentData, this.data.d.k[0].s);\r\n\r\n if (!this.searchProperty()) {\r\n this.completeTextData(this.currentData);\r\n }\r\n }\r\n\r\n TextProperty.prototype.defaultBoxWidth = [0, 0];\r\n\r\n TextProperty.prototype.copyData = function (obj, data) {\r\n for (var s in data) {\r\n if (Object.prototype.hasOwnProperty.call(data, s)) {\r\n obj[s] = data[s];\r\n }\r\n }\r\n\r\n return obj;\r\n };\r\n\r\n TextProperty.prototype.setCurrentData = function (data) {\r\n if (!data.__complete) {\r\n this.completeTextData(data);\r\n }\r\n\r\n this.currentData = data;\r\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\r\n this._mdf = true;\r\n };\r\n\r\n TextProperty.prototype.searchProperty = function () {\r\n return this.searchKeyframes();\r\n };\r\n\r\n TextProperty.prototype.searchKeyframes = function () {\r\n this.kf = this.data.d.k.length > 1;\r\n\r\n if (this.kf) {\r\n this.addEffect(this.getKeyframeValue.bind(this));\r\n }\r\n\r\n return this.kf;\r\n };\r\n\r\n TextProperty.prototype.addEffect = function (effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.elem.addDynamicProperty(this);\r\n };\r\n\r\n TextProperty.prototype.getValue = function (_finalValue) {\r\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\r\n return;\r\n }\r\n\r\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\r\n var currentValue = this.currentData;\r\n var currentIndex = this.keysIndex;\r\n\r\n if (this.lock) {\r\n this.setCurrentData(this.currentData);\r\n return;\r\n }\r\n\r\n this.lock = true;\r\n this._mdf = false;\r\n var i;\r\n var len = this.effectsSequence.length;\r\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n // Checking if index changed to prevent creating a new object every time the expression updates.\r\n if (currentIndex !== this.keysIndex) {\r\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\r\n } else {\r\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\r\n }\r\n }\r\n\r\n if (currentValue !== finalValue) {\r\n this.setCurrentData(finalValue);\r\n }\r\n\r\n this.v = this.currentData;\r\n this.pv = this.v;\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n };\r\n\r\n TextProperty.prototype.getKeyframeValue = function () {\r\n var textKeys = this.data.d.k;\r\n var frameNum = this.elem.comp.renderedFrame;\r\n var i = 0;\r\n var len = textKeys.length;\r\n\r\n while (i <= len - 1) {\r\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\r\n break;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n if (this.keysIndex !== i) {\r\n this.keysIndex = i;\r\n }\r\n\r\n return this.data.d.k[this.keysIndex].s;\r\n };\r\n\r\n TextProperty.prototype.buildFinalText = function (text) {\r\n var charactersArray = [];\r\n var i = 0;\r\n var len = text.length;\r\n var charCode;\r\n var secondCharCode;\r\n var shouldCombine = false;\r\n\r\n while (i < len) {\r\n charCode = text.charCodeAt(i);\r\n\r\n if (FontManager.isCombinedCharacter(charCode)) {\r\n charactersArray[charactersArray.length - 1] += text.charAt(i);\r\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\r\n secondCharCode = text.charCodeAt(i + 1);\r\n\r\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\r\n if (shouldCombine || FontManager.isModifier(charCode, secondCharCode)) {\r\n charactersArray[charactersArray.length - 1] += text.substr(i, 2);\r\n shouldCombine = false;\r\n } else {\r\n charactersArray.push(text.substr(i, 2));\r\n }\r\n\r\n i += 1;\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n } else if (charCode > 0xDBFF) {\r\n secondCharCode = text.charCodeAt(i + 1);\r\n\r\n if (FontManager.isZeroWidthJoiner(charCode, secondCharCode)) {\r\n shouldCombine = true;\r\n charactersArray[charactersArray.length - 1] += text.substr(i, 2);\r\n i += 1;\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\r\n charactersArray[charactersArray.length - 1] += text.charAt(i);\r\n shouldCombine = true;\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return charactersArray;\r\n };\r\n\r\n TextProperty.prototype.completeTextData = function (documentData) {\r\n documentData.__complete = true;\r\n var fontManager = this.elem.globalData.fontManager;\r\n var data = this.data;\r\n var letters = [];\r\n var i;\r\n var len;\r\n var newLineFlag;\r\n var index = 0;\r\n var val;\r\n var anchorGrouping = data.m.g;\r\n var currentSize = 0;\r\n var currentPos = 0;\r\n var currentLine = 0;\r\n var lineWidths = [];\r\n var lineWidth = 0;\r\n var maxLineWidth = 0;\r\n var j;\r\n var jLen;\r\n var fontData = fontManager.getFontByName(documentData.f);\r\n var charData;\r\n var cLength = 0;\r\n var fontProps = getFontProperties(fontData);\r\n documentData.fWeight = fontProps.weight;\r\n documentData.fStyle = fontProps.style;\r\n documentData.finalSize = documentData.s;\r\n documentData.finalText = this.buildFinalText(documentData.t);\r\n len = documentData.finalText.length;\r\n documentData.finalLineHeight = documentData.lh;\r\n var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\r\n var charCode;\r\n\r\n if (documentData.sz) {\r\n var flag = true;\r\n var boxWidth = documentData.sz[0];\r\n var boxHeight = documentData.sz[1];\r\n var currentHeight;\r\n var finalText;\r\n\r\n while (flag) {\r\n finalText = this.buildFinalText(documentData.t);\r\n currentHeight = 0;\r\n lineWidth = 0;\r\n len = finalText.length;\r\n trackingOffset = documentData.tr / 1000 * documentData.finalSize;\r\n var lastSpaceIndex = -1;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n charCode = finalText[i].charCodeAt(0);\r\n newLineFlag = false;\r\n\r\n if (finalText[i] === ' ') {\r\n lastSpaceIndex = i;\r\n } else if (charCode === 13 || charCode === 3) {\r\n lineWidth = 0;\r\n newLineFlag = true;\r\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n }\r\n\r\n if (fontManager.chars) {\r\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\r\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\r\n } else {\r\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\r\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\r\n }\r\n\r\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\r\n if (lastSpaceIndex === -1) {\r\n len += 1;\r\n } else {\r\n i = lastSpaceIndex;\r\n }\r\n\r\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\r\n\r\n lastSpaceIndex = -1;\r\n lineWidth = 0;\r\n } else {\r\n lineWidth += cLength;\r\n lineWidth += trackingOffset;\r\n }\r\n }\r\n\r\n currentHeight += fontData.ascent * documentData.finalSize / 100;\r\n\r\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\r\n documentData.finalSize -= 1;\r\n documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\r\n } else {\r\n documentData.finalText = finalText;\r\n len = documentData.finalText.length;\r\n flag = false;\r\n }\r\n }\r\n }\r\n\r\n lineWidth = -trackingOffset;\r\n cLength = 0;\r\n var uncollapsedSpaces = 0;\r\n var currentChar;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n newLineFlag = false;\r\n currentChar = documentData.finalText[i];\r\n charCode = currentChar.charCodeAt(0);\r\n\r\n if (charCode === 13 || charCode === 3) {\r\n uncollapsedSpaces = 0;\r\n lineWidths.push(lineWidth);\r\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n lineWidth = -2 * trackingOffset;\r\n val = '';\r\n newLineFlag = true;\r\n currentLine += 1;\r\n } else {\r\n val = currentChar;\r\n }\r\n\r\n if (fontManager.chars) {\r\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\r\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\r\n } else {\r\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\r\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\r\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\r\n } //\r\n\r\n\r\n if (currentChar === ' ') {\r\n uncollapsedSpaces += cLength + trackingOffset;\r\n } else {\r\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\r\n uncollapsedSpaces = 0;\r\n }\r\n\r\n letters.push({\r\n l: cLength,\r\n an: cLength,\r\n add: currentSize,\r\n n: newLineFlag,\r\n anIndexes: [],\r\n val: val,\r\n line: currentLine,\r\n animatorJustifyOffset: 0\r\n });\r\n\r\n if (anchorGrouping == 2) {\r\n // eslint-disable-line eqeqeq\r\n currentSize += cLength;\r\n\r\n if (val === '' || val === ' ' || i === len - 1) {\r\n if (val === '' || val === ' ') {\r\n currentSize -= cLength;\r\n }\r\n\r\n while (currentPos <= i) {\r\n letters[currentPos].an = currentSize;\r\n letters[currentPos].ind = index;\r\n letters[currentPos].extra = cLength;\r\n currentPos += 1;\r\n }\r\n\r\n index += 1;\r\n currentSize = 0;\r\n }\r\n } else if (anchorGrouping == 3) {\r\n // eslint-disable-line eqeqeq\r\n currentSize += cLength;\r\n\r\n if (val === '' || i === len - 1) {\r\n if (val === '') {\r\n currentSize -= cLength;\r\n }\r\n\r\n while (currentPos <= i) {\r\n letters[currentPos].an = currentSize;\r\n letters[currentPos].ind = index;\r\n letters[currentPos].extra = cLength;\r\n currentPos += 1;\r\n }\r\n\r\n currentSize = 0;\r\n index += 1;\r\n }\r\n } else {\r\n letters[index].ind = index;\r\n letters[index].extra = 0;\r\n index += 1;\r\n }\r\n }\r\n\r\n documentData.l = letters;\r\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n lineWidths.push(lineWidth);\r\n\r\n if (documentData.sz) {\r\n documentData.boxWidth = documentData.sz[0];\r\n documentData.justifyOffset = 0;\r\n } else {\r\n documentData.boxWidth = maxLineWidth;\r\n\r\n switch (documentData.j) {\r\n case 1:\r\n documentData.justifyOffset = -documentData.boxWidth;\r\n break;\r\n\r\n case 2:\r\n documentData.justifyOffset = -documentData.boxWidth / 2;\r\n break;\r\n\r\n default:\r\n documentData.justifyOffset = 0;\r\n }\r\n }\r\n\r\n documentData.lineWidths = lineWidths;\r\n var animators = data.a;\r\n var animatorData;\r\n var letterData;\r\n jLen = animators.length;\r\n var based;\r\n var ind;\r\n var indexes = [];\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorData = animators[j];\r\n\r\n if (animatorData.a.sc) {\r\n documentData.strokeColorAnim = true;\r\n }\r\n\r\n if (animatorData.a.sw) {\r\n documentData.strokeWidthAnim = true;\r\n }\r\n\r\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\r\n documentData.fillColorAnim = true;\r\n }\r\n\r\n ind = 0;\r\n based = animatorData.s.b;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n letterData = letters[i];\r\n letterData.anIndexes[j] = ind;\r\n\r\n if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\r\n // eslint-disable-line eqeqeq\r\n if (animatorData.s.rn === 1) {\r\n indexes.push(ind);\r\n }\r\n\r\n ind += 1;\r\n }\r\n }\r\n\r\n data.a[j].s.totalChars = ind;\r\n var currentInd = -1;\r\n var newInd;\r\n\r\n if (animatorData.s.rn === 1) {\r\n for (i = 0; i < len; i += 1) {\r\n letterData = letters[i];\r\n\r\n if (currentInd != letterData.anIndexes[j]) {\r\n // eslint-disable-line eqeqeq\r\n currentInd = letterData.anIndexes[j];\r\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\r\n }\r\n\r\n letterData.anIndexes[j] = newInd;\r\n }\r\n }\r\n }\r\n\r\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n documentData.ls = documentData.ls || 0;\r\n documentData.ascent = fontData.ascent * documentData.finalSize / 100;\r\n };\r\n\r\n TextProperty.prototype.updateDocumentData = function (newData, index) {\r\n index = index === undefined ? this.keysIndex : index;\r\n var dData = this.copyData({}, this.data.d.k[index].s);\r\n dData = this.copyData(dData, newData);\r\n this.data.d.k[index].s = dData;\r\n this.recalculate(index);\r\n this.elem.addDynamicProperty(this);\r\n };\r\n\r\n TextProperty.prototype.recalculate = function (index) {\r\n var dData = this.data.d.k[index].s;\r\n dData.__complete = false;\r\n this.keysIndex = 0;\r\n this._isFirstFrame = true;\r\n this.getValue(dData);\r\n };\r\n\r\n TextProperty.prototype.canResizeFont = function (_canResize) {\r\n this.canResize = _canResize;\r\n this.recalculate(this.keysIndex);\r\n this.elem.addDynamicProperty(this);\r\n };\r\n\r\n TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\r\n this.minimumFontSize = Math.floor(_fontValue) || 1;\r\n this.recalculate(this.keysIndex);\r\n this.elem.addDynamicProperty(this);\r\n };\r\n\r\n var TextSelectorProp = function () {\r\n var max = Math.max;\r\n var min = Math.min;\r\n var floor = Math.floor;\r\n\r\n function TextSelectorPropFactory(elem, data) {\r\n this._currentTextLength = -1;\r\n this.k = false;\r\n this.data = data;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.finalS = 0;\r\n this.finalE = 0;\r\n this.initDynamicPropertyContainer(elem);\r\n this.s = PropertyFactory.getProp(elem, data.s || {\r\n k: 0\r\n }, 0, 0, this);\r\n\r\n if ('e' in data) {\r\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\r\n } else {\r\n this.e = {\r\n v: 100\r\n };\r\n }\r\n\r\n this.o = PropertyFactory.getProp(elem, data.o || {\r\n k: 0\r\n }, 0, 0, this);\r\n this.xe = PropertyFactory.getProp(elem, data.xe || {\r\n k: 0\r\n }, 0, 0, this);\r\n this.ne = PropertyFactory.getProp(elem, data.ne || {\r\n k: 0\r\n }, 0, 0, this);\r\n this.sm = PropertyFactory.getProp(elem, data.sm || {\r\n k: 100\r\n }, 0, 0, this);\r\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\r\n\r\n if (!this.dynamicProperties.length) {\r\n this.getValue();\r\n }\r\n }\r\n\r\n TextSelectorPropFactory.prototype = {\r\n getMult: function getMult(ind) {\r\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\r\n this.getValue();\r\n }\r\n\r\n var x1 = 0;\r\n var y1 = 0;\r\n var x2 = 1;\r\n var y2 = 1;\r\n\r\n if (this.ne.v > 0) {\r\n x1 = this.ne.v / 100.0;\r\n } else {\r\n y1 = -this.ne.v / 100.0;\r\n }\r\n\r\n if (this.xe.v > 0) {\r\n x2 = 1.0 - this.xe.v / 100.0;\r\n } else {\r\n y2 = 1.0 + this.xe.v / 100.0;\r\n }\r\n\r\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\r\n var mult = 0;\r\n var s = this.finalS;\r\n var e = this.finalE;\r\n var type = this.data.sh;\r\n\r\n if (type === 2) {\r\n if (e === s) {\r\n mult = ind >= e ? 1 : 0;\r\n } else {\r\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n }\r\n\r\n mult = easer(mult);\r\n } else if (type === 3) {\r\n if (e === s) {\r\n mult = ind >= e ? 0 : 1;\r\n } else {\r\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n }\r\n\r\n mult = easer(mult);\r\n } else if (type === 4) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n\r\n if (mult < 0.5) {\r\n mult *= 2;\r\n } else {\r\n mult = 1 - 2 * (mult - 0.5);\r\n }\r\n }\r\n\r\n mult = easer(mult);\r\n } else if (type === 5) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n var tot = e - s;\r\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\r\n\r\n ind = min(max(0, ind + 0.5 - s), e - s);\r\n var x = -tot / 2 + ind;\r\n var a = tot / 2;\r\n mult = Math.sqrt(1 - x * x / (a * a));\r\n }\r\n\r\n mult = easer(mult);\r\n } else if (type === 6) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n ind = min(max(0, ind + 0.5 - s), e - s);\r\n mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\r\n }\r\n\r\n mult = easer(mult);\r\n } else {\r\n if (ind >= floor(s)) {\r\n if (ind - s < 0) {\r\n mult = max(0, min(min(e, 1) - (s - ind), 1));\r\n } else {\r\n mult = max(0, min(e - ind, 1));\r\n }\r\n }\r\n\r\n mult = easer(mult);\r\n } // Smoothness implementation.\r\n // The smoothness represents a reduced range of the original [0; 1] range.\r\n // if smoothness is 25%, the new range will be [0.375; 0.625]\r\n // Steps are:\r\n // - find the lower value of the new range (threshold)\r\n // - if multiplier is smaller than that value, floor it to 0\r\n // - if it is larger,\r\n // - subtract the threshold\r\n // - divide it by the smoothness (this will return the range to [0; 1])\r\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\r\n\r\n\r\n if (this.sm.v !== 100) {\r\n var smoothness = this.sm.v * 0.01;\r\n\r\n if (smoothness === 0) {\r\n smoothness = 0.00000001;\r\n }\r\n\r\n var threshold = 0.5 - smoothness * 0.5;\r\n\r\n if (mult < threshold) {\r\n mult = 0;\r\n } else {\r\n mult = (mult - threshold) / smoothness;\r\n\r\n if (mult > 1) {\r\n mult = 1;\r\n }\r\n }\r\n }\r\n\r\n return mult * this.a.v;\r\n },\r\n getValue: function getValue(newCharsFlag) {\r\n this.iterateDynamicProperties();\r\n this._mdf = newCharsFlag || this._mdf;\r\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\r\n\r\n if (newCharsFlag && this.data.r === 2) {\r\n this.e.v = this._currentTextLength;\r\n }\r\n\r\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\r\n var o = this.o.v / divisor;\r\n var s = this.s.v / divisor + o;\r\n var e = this.e.v / divisor + o;\r\n\r\n if (s > e) {\r\n var _s = s;\r\n s = e;\r\n e = _s;\r\n }\r\n\r\n this.finalS = s;\r\n this.finalE = e;\r\n }\r\n };\r\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\r\n\r\n function getTextSelectorProp(elem, data, arr) {\r\n return new TextSelectorPropFactory(elem, data, arr);\r\n }\r\n\r\n return {\r\n getTextSelectorProp: getTextSelectorProp\r\n };\r\n }();\r\n\r\n function TextAnimatorDataProperty(elem, animatorProps, container) {\r\n var defaultData = {\r\n propType: false\r\n };\r\n var getProp = PropertyFactory.getProp;\r\n var textAnimatorAnimatables = animatorProps.a;\r\n this.a = {\r\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\r\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\r\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\r\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\r\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\r\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\r\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\r\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\r\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\r\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\r\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\r\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\r\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\r\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\r\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\r\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\r\n };\r\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\r\n this.s.t = animatorProps.s.t;\r\n }\r\n\r\n function TextAnimatorProperty(textData, renderType, elem) {\r\n this._isFirstFrame = true;\r\n this._hasMaskedPath = false;\r\n this._frameId = -1;\r\n this._textData = textData;\r\n this._renderType = renderType;\r\n this._elem = elem;\r\n this._animatorsData = createSizedArray(this._textData.a.length);\r\n this._pathData = {};\r\n this._moreOptions = {\r\n alignment: {}\r\n };\r\n this.renderedLetters = [];\r\n this.lettersChangedFlag = false;\r\n this.initDynamicPropertyContainer(elem);\r\n }\r\n\r\n TextAnimatorProperty.prototype.searchProperties = function () {\r\n var i;\r\n var len = this._textData.a.length;\r\n var animatorProps;\r\n var getProp = PropertyFactory.getProp;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n animatorProps = this._textData.a[i];\r\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\r\n }\r\n\r\n if (this._textData.p && 'm' in this._textData.p) {\r\n this._pathData = {\r\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\r\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\r\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\r\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\r\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\r\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\r\n };\r\n this._hasMaskedPath = true;\r\n } else {\r\n this._hasMaskedPath = false;\r\n }\r\n\r\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\r\n };\r\n\r\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\r\n this.lettersChangedFlag = lettersChangedFlag;\r\n\r\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\r\n return;\r\n }\r\n\r\n this._isFirstFrame = false;\r\n var alignment = this._moreOptions.alignment.v;\r\n var animators = this._animatorsData;\r\n var textData = this._textData;\r\n var matrixHelper = this.mHelper;\r\n var renderType = this._renderType;\r\n var renderedLettersCount = this.renderedLetters.length;\r\n var xPos;\r\n var yPos;\r\n var i;\r\n var len;\r\n var letters = documentData.l;\r\n var pathInfo;\r\n var currentLength;\r\n var currentPoint;\r\n var segmentLength;\r\n var flag;\r\n var pointInd;\r\n var segmentInd;\r\n var prevPoint;\r\n var points;\r\n var segments;\r\n var partialLength;\r\n var totalLength;\r\n var perc;\r\n var tanAngle;\r\n var mask;\r\n\r\n if (this._hasMaskedPath) {\r\n mask = this._pathData.m;\r\n\r\n if (!this._pathData.n || this._pathData._mdf) {\r\n var paths = mask.v;\r\n\r\n if (this._pathData.r.v) {\r\n paths = paths.reverse();\r\n } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\r\n\r\n\r\n pathInfo = {\r\n tLength: 0,\r\n segments: []\r\n };\r\n len = paths._length - 1;\r\n var bezierData;\r\n totalLength = 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\r\n pathInfo.tLength += bezierData.segmentLength;\r\n pathInfo.segments.push(bezierData);\r\n totalLength += bezierData.segmentLength;\r\n }\r\n\r\n i = len;\r\n\r\n if (mask.v.c) {\r\n bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\r\n pathInfo.tLength += bezierData.segmentLength;\r\n pathInfo.segments.push(bezierData);\r\n totalLength += bezierData.segmentLength;\r\n }\r\n\r\n this._pathData.pi = pathInfo;\r\n }\r\n\r\n pathInfo = this._pathData.pi;\r\n currentLength = this._pathData.f.v;\r\n segmentInd = 0;\r\n pointInd = 1;\r\n segmentLength = 0;\r\n flag = true;\r\n segments = pathInfo.segments;\r\n\r\n if (currentLength < 0 && mask.v.c) {\r\n if (pathInfo.tLength < Math.abs(currentLength)) {\r\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\r\n }\r\n\r\n segmentInd = segments.length - 1;\r\n points = segments[segmentInd].points;\r\n pointInd = points.length - 1;\r\n\r\n while (currentLength < 0) {\r\n currentLength += points[pointInd].partialLength;\r\n pointInd -= 1;\r\n\r\n if (pointInd < 0) {\r\n segmentInd -= 1;\r\n points = segments[segmentInd].points;\r\n pointInd = points.length - 1;\r\n }\r\n }\r\n }\r\n\r\n points = segments[segmentInd].points;\r\n prevPoint = points[pointInd - 1];\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n }\r\n\r\n len = letters.length;\r\n xPos = 0;\r\n yPos = 0;\r\n var yOff = documentData.finalSize * 1.2 * 0.714;\r\n var firstLine = true;\r\n var animatorProps;\r\n var animatorSelector;\r\n var j;\r\n var jLen;\r\n var letterValue;\r\n jLen = animators.length;\r\n var mult;\r\n var ind = -1;\r\n var offf;\r\n var xPathPos;\r\n var yPathPos;\r\n var initPathPos = currentLength;\r\n var initSegmentInd = segmentInd;\r\n var initPointInd = pointInd;\r\n var currentLine = -1;\r\n var elemOpacity;\r\n var sc;\r\n var sw;\r\n var fc;\r\n var k;\r\n var letterSw;\r\n var letterSc;\r\n var letterFc;\r\n var letterM = '';\r\n var letterP = this.defaultPropsArray;\r\n var letterO; //\r\n\r\n if (documentData.j === 2 || documentData.j === 1) {\r\n var animatorJustifyOffset = 0;\r\n var animatorFirstCharOffset = 0;\r\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\r\n var lastIndex = 0;\r\n var isNewLine = true;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (letters[i].n) {\r\n if (animatorJustifyOffset) {\r\n animatorJustifyOffset += animatorFirstCharOffset;\r\n }\r\n\r\n while (lastIndex < i) {\r\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\r\n lastIndex += 1;\r\n }\r\n\r\n animatorJustifyOffset = 0;\r\n isNewLine = true;\r\n } else {\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n\r\n if (animatorProps.t.propType) {\r\n if (isNewLine && documentData.j === 2) {\r\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\r\n }\r\n\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n if (mult.length) {\r\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\r\n } else {\r\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\r\n }\r\n }\r\n }\r\n\r\n isNewLine = false;\r\n }\r\n }\r\n\r\n if (animatorJustifyOffset) {\r\n animatorJustifyOffset += animatorFirstCharOffset;\r\n }\r\n\r\n while (lastIndex < i) {\r\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\r\n lastIndex += 1;\r\n }\r\n } //\r\n\r\n\r\n for (i = 0; i < len; i += 1) {\r\n matrixHelper.reset();\r\n elemOpacity = 1;\r\n\r\n if (letters[i].n) {\r\n xPos = 0;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n currentLength = initPathPos;\r\n firstLine = false;\r\n\r\n if (this._hasMaskedPath) {\r\n segmentInd = initSegmentInd;\r\n pointInd = initPointInd;\r\n points = segments[segmentInd].points;\r\n prevPoint = points[pointInd - 1];\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n segmentLength = 0;\r\n }\r\n\r\n letterM = '';\r\n letterFc = '';\r\n letterSw = '';\r\n letterO = '';\r\n letterP = this.defaultPropsArray;\r\n } else {\r\n if (this._hasMaskedPath) {\r\n if (currentLine !== letters[i].line) {\r\n switch (documentData.j) {\r\n case 1:\r\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\r\n break;\r\n\r\n case 2:\r\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n currentLine = letters[i].line;\r\n }\r\n\r\n if (ind !== letters[i].ind) {\r\n if (letters[ind]) {\r\n currentLength += letters[ind].extra;\r\n }\r\n\r\n currentLength += letters[i].an / 2;\r\n ind = letters[i].ind;\r\n }\r\n\r\n currentLength += alignment[0] * letters[i].an * 0.005;\r\n var animatorOffset = 0;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n\r\n if (animatorProps.p.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n if (mult.length) {\r\n animatorOffset += animatorProps.p.v[0] * mult[0];\r\n } else {\r\n animatorOffset += animatorProps.p.v[0] * mult;\r\n }\r\n }\r\n\r\n if (animatorProps.a.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n if (mult.length) {\r\n animatorOffset += animatorProps.a.v[0] * mult[0];\r\n } else {\r\n animatorOffset += animatorProps.a.v[0] * mult;\r\n }\r\n }\r\n }\r\n\r\n flag = true; // Force alignment only works with a single line for now\r\n\r\n if (this._pathData.a.v) {\r\n currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\r\n currentLength += this._pathData.f.v;\r\n }\r\n\r\n while (flag) {\r\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\r\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\r\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\r\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\r\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\r\n flag = false;\r\n } else if (points) {\r\n segmentLength += currentPoint.partialLength;\r\n pointInd += 1;\r\n\r\n if (pointInd >= points.length) {\r\n pointInd = 0;\r\n segmentInd += 1;\r\n\r\n if (!segments[segmentInd]) {\r\n if (mask.v.c) {\r\n pointInd = 0;\r\n segmentInd = 0;\r\n points = segments[segmentInd].points;\r\n } else {\r\n segmentLength -= currentPoint.partialLength;\r\n points = null;\r\n }\r\n } else {\r\n points = segments[segmentInd].points;\r\n }\r\n }\r\n\r\n if (points) {\r\n prevPoint = currentPoint;\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n }\r\n }\r\n }\r\n\r\n offf = letters[i].an / 2 - letters[i].add;\r\n matrixHelper.translate(-offf, 0, 0);\r\n } else {\r\n offf = letters[i].an / 2 - letters[i].add;\r\n matrixHelper.translate(-offf, 0, 0); // Grouping alignment\r\n\r\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\r\n }\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n\r\n if (animatorProps.t.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\r\n\r\n if (xPos !== 0 || documentData.j !== 0) {\r\n if (this._hasMaskedPath) {\r\n if (mult.length) {\r\n currentLength += animatorProps.t.v * mult[0];\r\n } else {\r\n currentLength += animatorProps.t.v * mult;\r\n }\r\n } else if (mult.length) {\r\n xPos += animatorProps.t.v * mult[0];\r\n } else {\r\n xPos += animatorProps.t.v * mult;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (documentData.strokeWidthAnim) {\r\n sw = documentData.sw || 0;\r\n }\r\n\r\n if (documentData.strokeColorAnim) {\r\n if (documentData.sc) {\r\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\r\n } else {\r\n sc = [0, 0, 0];\r\n }\r\n }\r\n\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\r\n }\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n\r\n if (animatorProps.a.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n if (mult.length) {\r\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\r\n } else {\r\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\r\n }\r\n }\r\n }\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n\r\n if (animatorProps.s.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n if (mult.length) {\r\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\r\n } else {\r\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\r\n }\r\n }\r\n }\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n if (animatorProps.sk.propType) {\r\n if (mult.length) {\r\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\r\n } else {\r\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\r\n }\r\n }\r\n\r\n if (animatorProps.r.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\r\n } else {\r\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\r\n }\r\n }\r\n\r\n if (animatorProps.ry.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\r\n } else {\r\n matrixHelper.rotateY(animatorProps.ry.v * mult);\r\n }\r\n }\r\n\r\n if (animatorProps.rx.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\r\n } else {\r\n matrixHelper.rotateX(animatorProps.rx.v * mult);\r\n }\r\n }\r\n\r\n if (animatorProps.o.propType) {\r\n if (mult.length) {\r\n elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\r\n } else {\r\n elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\r\n }\r\n }\r\n\r\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\r\n if (mult.length) {\r\n sw += animatorProps.sw.v * mult[0];\r\n } else {\r\n sw += animatorProps.sw.v * mult;\r\n }\r\n }\r\n\r\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\r\n for (k = 0; k < 3; k += 1) {\r\n if (mult.length) {\r\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\r\n } else {\r\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\r\n }\r\n }\r\n }\r\n\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n if (animatorProps.fc.propType) {\r\n for (k = 0; k < 3; k += 1) {\r\n if (mult.length) {\r\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\r\n } else {\r\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\r\n }\r\n }\r\n }\r\n\r\n if (animatorProps.fh.propType) {\r\n if (mult.length) {\r\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\r\n } else {\r\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\r\n }\r\n }\r\n\r\n if (animatorProps.fs.propType) {\r\n if (mult.length) {\r\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\r\n } else {\r\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\r\n }\r\n }\r\n\r\n if (animatorProps.fb.propType) {\r\n if (mult.length) {\r\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\r\n } else {\r\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n\r\n if (animatorProps.p.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n if (this._hasMaskedPath) {\r\n if (mult.length) {\r\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\r\n } else {\r\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\r\n }\r\n } else if (mult.length) {\r\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\r\n } else {\r\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\r\n }\r\n }\r\n }\r\n\r\n if (documentData.strokeWidthAnim) {\r\n letterSw = sw < 0 ? 0 : sw;\r\n }\r\n\r\n if (documentData.strokeColorAnim) {\r\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\r\n }\r\n\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\r\n }\r\n\r\n if (this._hasMaskedPath) {\r\n matrixHelper.translate(0, -documentData.ls);\r\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\r\n\r\n if (this._pathData.p.v) {\r\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\r\n var rot = Math.atan(tanAngle) * 180 / Math.PI;\r\n\r\n if (currentPoint.point[0] < prevPoint.point[0]) {\r\n rot += 180;\r\n }\r\n\r\n matrixHelper.rotate(-rot * Math.PI / 180);\r\n }\r\n\r\n matrixHelper.translate(xPathPos, yPathPos, 0);\r\n currentLength -= alignment[0] * letters[i].an * 0.005;\r\n\r\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\r\n currentLength += letters[i].an / 2;\r\n currentLength += documentData.tr * 0.001 * documentData.finalSize;\r\n }\r\n } else {\r\n matrixHelper.translate(xPos, yPos, 0);\r\n\r\n if (documentData.ps) {\r\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\r\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\r\n }\r\n\r\n switch (documentData.j) {\r\n case 1:\r\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\r\n break;\r\n\r\n case 2:\r\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n matrixHelper.translate(0, -documentData.ls);\r\n matrixHelper.translate(offf, 0, 0);\r\n matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\r\n xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\r\n }\r\n\r\n if (renderType === 'html') {\r\n letterM = matrixHelper.toCSS();\r\n } else if (renderType === 'svg') {\r\n letterM = matrixHelper.to2dCSS();\r\n } else {\r\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\r\n }\r\n\r\n letterO = elemOpacity;\r\n }\r\n\r\n if (renderedLettersCount <= i) {\r\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\r\n this.renderedLetters.push(letterValue);\r\n renderedLettersCount += 1;\r\n this.lettersChangedFlag = true;\r\n } else {\r\n letterValue = this.renderedLetters[i];\r\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\r\n }\r\n }\r\n };\r\n\r\n TextAnimatorProperty.prototype.getValue = function () {\r\n if (this._elem.globalData.frameId === this._frameId) {\r\n return;\r\n }\r\n\r\n this._frameId = this._elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n };\r\n\r\n TextAnimatorProperty.prototype.mHelper = new Matrix();\r\n TextAnimatorProperty.prototype.defaultPropsArray = [];\r\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\r\n\r\n function ITextElement() {}\r\n\r\n ITextElement.prototype.initElement = function (data, globalData, comp) {\r\n this.lettersChangedFlag = true;\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\r\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n this.initRenderable();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n this.createContent();\r\n this.hide();\r\n this.textAnimator.searchProperties(this.dynamicProperties);\r\n };\r\n\r\n ITextElement.prototype.prepareFrame = function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n\r\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\r\n this.buildNewText();\r\n this.textProperty._isFirstFrame = false;\r\n this.textProperty._mdf = false;\r\n }\r\n };\r\n\r\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\r\n var j;\r\n var jLen = shapes.length;\r\n var pathNodes;\r\n var shapeStr = '';\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n if (shapes[j].ty === 'sh') {\r\n pathNodes = shapes[j].ks.k;\r\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\r\n }\r\n }\r\n\r\n return shapeStr;\r\n };\r\n\r\n ITextElement.prototype.updateDocumentData = function (newData, index) {\r\n this.textProperty.updateDocumentData(newData, index);\r\n };\r\n\r\n ITextElement.prototype.canResizeFont = function (_canResize) {\r\n this.textProperty.canResizeFont(_canResize);\r\n };\r\n\r\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\r\n this.textProperty.setMinimumFontSize(_fontSize);\r\n };\r\n\r\n ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\r\n if (documentData.ps) {\r\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\r\n }\r\n\r\n matrixHelper.translate(0, -documentData.ls, 0);\r\n\r\n switch (documentData.j) {\r\n case 1:\r\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\r\n break;\r\n\r\n case 2:\r\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n matrixHelper.translate(xPos, yPos, 0);\r\n };\r\n\r\n ITextElement.prototype.buildColor = function (colorData) {\r\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\r\n };\r\n\r\n ITextElement.prototype.emptyProp = new LetterProps();\r\n\r\n ITextElement.prototype.destroy = function () {};\r\n\r\n var emptyShapeData = {\r\n shapes: []\r\n };\r\n\r\n function SVGTextLottieElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.renderType = 'svg';\r\n this.initElement(data, globalData, comp);\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\r\n\r\n SVGTextLottieElement.prototype.createContent = function () {\r\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\r\n this.textContainer = createNS('text');\r\n }\r\n };\r\n\r\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\r\n var i = 0;\r\n var len = textArray.length;\r\n var textContents = [];\r\n var currentTextContent = '';\r\n\r\n while (i < len) {\r\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\r\n textContents.push(currentTextContent);\r\n currentTextContent = '';\r\n } else {\r\n currentTextContent += textArray[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n textContents.push(currentTextContent);\r\n return textContents;\r\n };\r\n\r\n SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\r\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\r\n // but since text internal content gets only rendered once and then it's never rerendered,\r\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\r\n // Avoiding cloning is preferred since cloning each character shape data is expensive\r\n if (data.shapes && data.shapes.length) {\r\n var shape = data.shapes[0];\r\n\r\n if (shape.it) {\r\n var shapeItem = shape.it[shape.it.length - 1];\r\n\r\n if (shapeItem.s) {\r\n shapeItem.s.k[0] = scale;\r\n shapeItem.s.k[1] = scale;\r\n }\r\n }\r\n }\r\n\r\n return data;\r\n };\r\n\r\n SVGTextLottieElement.prototype.buildNewText = function () {\r\n this.addDynamicProperty(this);\r\n var i;\r\n var len;\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\r\n\r\n if (documentData.fc) {\r\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\r\n } else {\r\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\r\n }\r\n\r\n if (documentData.sc) {\r\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\r\n this.layerElement.setAttribute('stroke-width', documentData.sw);\r\n }\r\n\r\n this.layerElement.setAttribute('font-size', documentData.finalSize);\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n\r\n if (fontData.fClass) {\r\n this.layerElement.setAttribute('class', fontData.fClass);\r\n } else {\r\n this.layerElement.setAttribute('font-family', fontData.fFamily);\r\n var fWeight = documentData.fWeight;\r\n var fStyle = documentData.fStyle;\r\n this.layerElement.setAttribute('font-style', fStyle);\r\n this.layerElement.setAttribute('font-weight', fWeight);\r\n }\r\n\r\n this.layerElement.setAttribute('aria-label', documentData.t);\r\n var letters = documentData.l || [];\r\n var usesGlyphs = !!this.globalData.fontManager.chars;\r\n len = letters.length;\r\n var tSpan;\r\n var matrixHelper = this.mHelper;\r\n var shapeStr = '';\r\n var singleShape = this.data.singleShape;\r\n var xPos = 0;\r\n var yPos = 0;\r\n var firstLine = true;\r\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\r\n\r\n if (singleShape && !usesGlyphs && !documentData.sz) {\r\n var tElement = this.textContainer;\r\n var justify = 'start';\r\n\r\n switch (documentData.j) {\r\n case 1:\r\n justify = 'end';\r\n break;\r\n\r\n case 2:\r\n justify = 'middle';\r\n break;\r\n\r\n default:\r\n justify = 'start';\r\n break;\r\n }\r\n\r\n tElement.setAttribute('text-anchor', justify);\r\n tElement.setAttribute('letter-spacing', trackingOffset);\r\n var textContent = this.buildTextContents(documentData.finalText);\r\n len = textContent.length;\r\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n tSpan = this.textSpans[i].span || createNS('tspan');\r\n tSpan.textContent = textContent[i];\r\n tSpan.setAttribute('x', 0);\r\n tSpan.setAttribute('y', yPos);\r\n tSpan.style.display = 'inherit';\r\n tElement.appendChild(tSpan);\r\n\r\n if (!this.textSpans[i]) {\r\n this.textSpans[i] = {\r\n span: null,\r\n glyph: null\r\n };\r\n }\r\n\r\n this.textSpans[i].span = tSpan;\r\n yPos += documentData.finalLineHeight;\r\n }\r\n\r\n this.layerElement.appendChild(tElement);\r\n } else {\r\n var cachedSpansLength = this.textSpans.length;\r\n var charData;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (!this.textSpans[i]) {\r\n this.textSpans[i] = {\r\n span: null,\r\n childSpan: null,\r\n glyph: null\r\n };\r\n }\r\n\r\n if (!usesGlyphs || !singleShape || i === 0) {\r\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\r\n\r\n if (cachedSpansLength <= i) {\r\n tSpan.setAttribute('stroke-linecap', 'butt');\r\n tSpan.setAttribute('stroke-linejoin', 'round');\r\n tSpan.setAttribute('stroke-miterlimit', '4');\r\n this.textSpans[i].span = tSpan;\r\n\r\n if (usesGlyphs) {\r\n var childSpan = createNS('g');\r\n tSpan.appendChild(childSpan);\r\n this.textSpans[i].childSpan = childSpan;\r\n }\r\n\r\n this.textSpans[i].span = tSpan;\r\n this.layerElement.appendChild(tSpan);\r\n }\r\n\r\n tSpan.style.display = 'inherit';\r\n }\r\n\r\n matrixHelper.reset();\r\n\r\n if (singleShape) {\r\n if (letters[i].n) {\r\n xPos = -trackingOffset;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n firstLine = false;\r\n }\r\n\r\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\r\n\r\n xPos += trackingOffset;\r\n }\r\n\r\n if (usesGlyphs) {\r\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n var glyphElement; // t === 1 means the character has been replaced with an animated shaped\r\n\r\n if (charData.t === 1) {\r\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\r\n } else {\r\n var data = emptyShapeData;\r\n\r\n if (charData.data && charData.data.shapes) {\r\n data = this.buildShapeData(charData.data, documentData.finalSize);\r\n }\r\n\r\n glyphElement = new SVGShapeElement(data, this.globalData, this);\r\n }\r\n\r\n if (this.textSpans[i].glyph) {\r\n var glyph = this.textSpans[i].glyph;\r\n this.textSpans[i].childSpan.removeChild(glyph.layerElement);\r\n glyph.destroy();\r\n }\r\n\r\n this.textSpans[i].glyph = glyphElement;\r\n glyphElement._debug = true;\r\n glyphElement.prepareFrame(0);\r\n glyphElement.renderFrame();\r\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\r\n // this might have issues with strokes and might need a different solution\r\n\r\n if (charData.t === 1) {\r\n this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\r\n }\r\n } else {\r\n if (singleShape) {\r\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\r\n }\r\n\r\n tSpan.textContent = letters[i].val;\r\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\r\n } //\r\n\r\n }\r\n\r\n if (singleShape && tSpan) {\r\n tSpan.setAttribute('d', shapeStr);\r\n }\r\n }\r\n\r\n while (i < this.textSpans.length) {\r\n this.textSpans[i].span.style.display = 'none';\r\n i += 1;\r\n }\r\n\r\n this._sizeChanged = true;\r\n };\r\n\r\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\r\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\r\n this.renderInnerContent();\r\n\r\n if (this._sizeChanged) {\r\n this._sizeChanged = false;\r\n var textBox = this.layerElement.getBBox();\r\n this.bbox = {\r\n top: textBox.y,\r\n left: textBox.x,\r\n width: textBox.width,\r\n height: textBox.height\r\n };\r\n }\r\n\r\n return this.bbox;\r\n };\r\n\r\n SVGTextLottieElement.prototype.getValue = function () {\r\n var i;\r\n var len = this.textSpans.length;\r\n var glyphElement;\r\n this.renderedFrame = this.comp.renderedFrame;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n glyphElement = this.textSpans[i].glyph;\r\n\r\n if (glyphElement) {\r\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\r\n\r\n if (glyphElement._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n };\r\n\r\n SVGTextLottieElement.prototype.renderInnerContent = function () {\r\n if (!this.data.singleShape || this._mdf) {\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n\r\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\r\n this._sizeChanged = true;\r\n var i;\r\n var len;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n var letters = this.textProperty.currentData.l;\r\n len = letters.length;\r\n var renderedLetter;\r\n var textSpan;\r\n var glyphElement;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (!letters[i].n) {\r\n renderedLetter = renderedLetters[i];\r\n textSpan = this.textSpans[i].span;\r\n glyphElement = this.textSpans[i].glyph;\r\n\r\n if (glyphElement) {\r\n glyphElement.renderFrame();\r\n }\r\n\r\n if (renderedLetter._mdf.m) {\r\n textSpan.setAttribute('transform', renderedLetter.m);\r\n }\r\n\r\n if (renderedLetter._mdf.o) {\r\n textSpan.setAttribute('opacity', renderedLetter.o);\r\n }\r\n\r\n if (renderedLetter._mdf.sw) {\r\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\r\n }\r\n\r\n if (renderedLetter._mdf.sc) {\r\n textSpan.setAttribute('stroke', renderedLetter.sc);\r\n }\r\n\r\n if (renderedLetter._mdf.fc) {\r\n textSpan.setAttribute('fill', renderedLetter.fc);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n function ISolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n }\r\n\r\n extendPrototype([IImageElement], ISolidElement);\r\n\r\n ISolidElement.prototype.createContent = function () {\r\n var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\r\n /// /rect.style.height = this.data.sh;\r\n /// /rect.style.fill = this.data.sc;\r\n\r\n rect.setAttribute('width', this.data.sw);\r\n rect.setAttribute('height', this.data.sh);\r\n rect.setAttribute('fill', this.data.sc);\r\n this.layerElement.appendChild(rect);\r\n };\r\n\r\n function NullElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initFrame();\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n }\r\n\r\n NullElement.prototype.prepareFrame = function (num) {\r\n this.prepareProperties(num, true);\r\n };\r\n\r\n NullElement.prototype.renderFrame = function () {};\r\n\r\n NullElement.prototype.getBaseElement = function () {\r\n return null;\r\n };\r\n\r\n NullElement.prototype.destroy = function () {};\r\n\r\n NullElement.prototype.sourceRectAtTime = function () {};\r\n\r\n NullElement.prototype.hide = function () {};\r\n\r\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\r\n\r\n function SVGRendererBase() {}\r\n\r\n extendPrototype([BaseRenderer], SVGRendererBase);\r\n\r\n SVGRendererBase.prototype.createNull = function (data) {\r\n return new NullElement(data, this.globalData, this);\r\n };\r\n\r\n SVGRendererBase.prototype.createShape = function (data) {\r\n return new SVGShapeElement(data, this.globalData, this);\r\n };\r\n\r\n SVGRendererBase.prototype.createText = function (data) {\r\n return new SVGTextLottieElement(data, this.globalData, this);\r\n };\r\n\r\n SVGRendererBase.prototype.createImage = function (data) {\r\n return new IImageElement(data, this.globalData, this);\r\n };\r\n\r\n SVGRendererBase.prototype.createSolid = function (data) {\r\n return new ISolidElement(data, this.globalData, this);\r\n };\r\n\r\n SVGRendererBase.prototype.configAnimation = function (animData) {\r\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\r\n this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\r\n\r\n if (this.renderConfig.viewBoxSize) {\r\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\r\n } else {\r\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\r\n }\r\n\r\n if (!this.renderConfig.viewBoxOnly) {\r\n this.svgElement.setAttribute('width', animData.w);\r\n this.svgElement.setAttribute('height', animData.h);\r\n this.svgElement.style.width = '100%';\r\n this.svgElement.style.height = '100%';\r\n this.svgElement.style.transform = 'translate3d(0,0,0)';\r\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\r\n }\r\n\r\n if (this.renderConfig.width) {\r\n this.svgElement.setAttribute('width', this.renderConfig.width);\r\n }\r\n\r\n if (this.renderConfig.height) {\r\n this.svgElement.setAttribute('height', this.renderConfig.height);\r\n }\r\n\r\n if (this.renderConfig.className) {\r\n this.svgElement.setAttribute('class', this.renderConfig.className);\r\n }\r\n\r\n if (this.renderConfig.id) {\r\n this.svgElement.setAttribute('id', this.renderConfig.id);\r\n }\r\n\r\n if (this.renderConfig.focusable !== undefined) {\r\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\r\n }\r\n\r\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // this.layerElement.style.transform = 'translate3d(0,0,0)';\r\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\r\n\r\n this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\r\n\r\n var defs = this.globalData.defs;\r\n this.setupGlobalData(animData, defs);\r\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\r\n this.data = animData;\r\n var maskElement = createNS('clipPath');\r\n var rect = createNS('rect');\r\n rect.setAttribute('width', animData.w);\r\n rect.setAttribute('height', animData.h);\r\n rect.setAttribute('x', 0);\r\n rect.setAttribute('y', 0);\r\n var maskId = createElementID();\r\n maskElement.setAttribute('id', maskId);\r\n maskElement.appendChild(rect);\r\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\r\n defs.appendChild(maskElement);\r\n this.layers = animData.layers;\r\n this.elements = createSizedArray(animData.layers.length);\r\n };\r\n\r\n SVGRendererBase.prototype.destroy = function () {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.wrapper.innerText = '';\r\n }\r\n\r\n this.layerElement = null;\r\n this.globalData.defs = null;\r\n var i;\r\n var len = this.layers ? this.layers.length : 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n\r\n this.elements.length = 0;\r\n this.destroyed = true;\r\n this.animationItem = null;\r\n };\r\n\r\n SVGRendererBase.prototype.updateContainerSize = function () {};\r\n\r\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\r\n var i = 0;\r\n var len = this.layers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.layers[i].ind === ind) {\r\n return i;\r\n }\r\n }\r\n\r\n return -1;\r\n };\r\n\r\n SVGRendererBase.prototype.buildItem = function (pos) {\r\n var elements = this.elements;\r\n\r\n if (elements[pos] || this.layers[pos].ty === 99) {\r\n return;\r\n }\r\n\r\n elements[pos] = true;\r\n var element = this.createItem(this.layers[pos]);\r\n elements[pos] = element;\r\n\r\n if (getExpressionsPlugin()) {\r\n if (this.layers[pos].ty === 0) {\r\n this.globalData.projectInterface.registerComposition(element);\r\n }\r\n\r\n element.initExpressions();\r\n }\r\n\r\n this.appendElementInPos(element, pos);\r\n\r\n if (this.layers[pos].tt) {\r\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\r\n\r\n if (elementIndex === -1) {\r\n return;\r\n }\r\n\r\n if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\r\n this.buildItem(elementIndex);\r\n this.addPendingElement(element);\r\n } else {\r\n var matteElement = elements[elementIndex];\r\n var matteMask = matteElement.getMatte(this.layers[pos].tt);\r\n element.setMatte(matteMask);\r\n }\r\n }\r\n };\r\n\r\n SVGRendererBase.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n\r\n if (element.data.tt) {\r\n var i = 0;\r\n var len = this.elements.length;\r\n\r\n while (i < len) {\r\n if (this.elements[i] === element) {\r\n var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\r\n var matteElement = this.elements[elementIndex];\r\n var matteMask = matteElement.getMatte(this.layers[i].tt);\r\n element.setMatte(matteMask);\r\n break;\r\n }\r\n\r\n i += 1;\r\n }\r\n }\r\n }\r\n };\r\n\r\n SVGRendererBase.prototype.renderFrame = function (num) {\r\n if (this.renderedFrame === num || this.destroyed) {\r\n return;\r\n }\r\n\r\n if (num === null) {\r\n num = this.renderedFrame;\r\n } else {\r\n this.renderedFrame = num;\r\n } // console.log('-------');\r\n // console.log('FRAME ',num);\r\n\r\n\r\n this.globalData.frameNum = num;\r\n this.globalData.frameId += 1;\r\n this.globalData.projectInterface.currentFrame = num;\r\n this.globalData._mdf = false;\r\n var i;\r\n var len = this.layers.length;\r\n\r\n if (!this.completeLayers) {\r\n this.checkLayers(num);\r\n }\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(num - this.layers[i].st);\r\n }\r\n }\r\n\r\n if (this.globalData._mdf) {\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n }\r\n };\r\n\r\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\r\n var newElement = element.getBaseElement();\r\n\r\n if (!newElement) {\r\n return;\r\n }\r\n\r\n var i = 0;\r\n var nextElement;\r\n\r\n while (i < pos) {\r\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\r\n nextElement = this.elements[i].getBaseElement();\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n if (nextElement) {\r\n this.layerElement.insertBefore(newElement, nextElement);\r\n } else {\r\n this.layerElement.appendChild(newElement);\r\n }\r\n };\r\n\r\n SVGRendererBase.prototype.hide = function () {\r\n this.layerElement.style.display = 'none';\r\n };\r\n\r\n SVGRendererBase.prototype.show = function () {\r\n this.layerElement.style.display = 'block';\r\n };\r\n\r\n function ICompElement() {}\r\n\r\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\r\n\r\n ICompElement.prototype.initElement = function (data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initTransform(data, globalData, comp);\r\n this.initRenderable();\r\n this.initHierarchy();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n\r\n if (this.data.xt || !globalData.progressiveLoad) {\r\n this.buildAllItems();\r\n }\r\n\r\n this.hide();\r\n };\r\n /* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n }; */\r\n\r\n\r\n ICompElement.prototype.prepareFrame = function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n\r\n if (!this.isInRange && !this.data.xt) {\r\n return;\r\n }\r\n\r\n if (!this.tm._placeholder) {\r\n var timeRemapped = this.tm.v;\r\n\r\n if (timeRemapped === this.data.op) {\r\n timeRemapped = this.data.op - 1;\r\n }\r\n\r\n this.renderedFrame = timeRemapped;\r\n } else {\r\n this.renderedFrame = num / this.data.sr;\r\n }\r\n\r\n var i;\r\n var len = this.elements.length;\r\n\r\n if (!this.completeLayers) {\r\n this.checkLayers(this.renderedFrame);\r\n } // This iteration needs to be backwards because of how expressions connect between each other\r\n\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\r\n\r\n if (this.elements[i]._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n };\r\n\r\n ICompElement.prototype.renderInnerContent = function () {\r\n var i;\r\n var len = this.layers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n };\r\n\r\n ICompElement.prototype.setElements = function (elems) {\r\n this.elements = elems;\r\n };\r\n\r\n ICompElement.prototype.getElements = function () {\r\n return this.elements;\r\n };\r\n\r\n ICompElement.prototype.destroyElements = function () {\r\n var i;\r\n var len = this.layers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n };\r\n\r\n ICompElement.prototype.destroy = function () {\r\n this.destroyElements();\r\n this.destroyBaseElement();\r\n };\r\n\r\n function SVGCompElement(data, globalData, comp) {\r\n this.layers = data.layers;\r\n this.supports3d = true;\r\n this.completeLayers = false;\r\n this.pendingElements = [];\r\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\r\n _placeholder: true\r\n };\r\n }\r\n\r\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\r\n\r\n SVGCompElement.prototype.createComp = function (data) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n };\r\n\r\n function SVGRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.layers = null;\r\n this.renderedFrame = -1;\r\n this.svgElement = createNS('svg');\r\n var ariaLabel = '';\r\n\r\n if (config && config.title) {\r\n var titleElement = createNS('title');\r\n var titleId = createElementID();\r\n titleElement.setAttribute('id', titleId);\r\n titleElement.textContent = config.title;\r\n this.svgElement.appendChild(titleElement);\r\n ariaLabel += titleId;\r\n }\r\n\r\n if (config && config.description) {\r\n var descElement = createNS('desc');\r\n var descId = createElementID();\r\n descElement.setAttribute('id', descId);\r\n descElement.textContent = config.description;\r\n this.svgElement.appendChild(descElement);\r\n ariaLabel += ' ' + descId;\r\n }\r\n\r\n if (ariaLabel) {\r\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\r\n }\r\n\r\n var defs = createNS('defs');\r\n this.svgElement.appendChild(defs);\r\n var maskElement = createNS('g');\r\n this.svgElement.appendChild(maskElement);\r\n this.layerElement = maskElement;\r\n this.renderConfig = {\r\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\r\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\r\n contentVisibility: config && config.contentVisibility || 'visible',\r\n progressiveLoad: config && config.progressiveLoad || false,\r\n hideOnTransparent: !(config && config.hideOnTransparent === false),\r\n viewBoxOnly: config && config.viewBoxOnly || false,\r\n viewBoxSize: config && config.viewBoxSize || false,\r\n className: config && config.className || '',\r\n id: config && config.id || '',\r\n focusable: config && config.focusable,\r\n filterSize: {\r\n width: config && config.filterSize && config.filterSize.width || '100%',\r\n height: config && config.filterSize && config.filterSize.height || '100%',\r\n x: config && config.filterSize && config.filterSize.x || '0%',\r\n y: config && config.filterSize && config.filterSize.y || '0%'\r\n },\r\n width: config && config.width,\r\n height: config && config.height,\r\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\r\n };\r\n this.globalData = {\r\n _mdf: false,\r\n frameNum: -1,\r\n defs: defs,\r\n renderConfig: this.renderConfig\r\n };\r\n this.elements = [];\r\n this.pendingElements = [];\r\n this.destroyed = false;\r\n this.rendererType = 'svg';\r\n }\r\n\r\n extendPrototype([SVGRendererBase], SVGRenderer);\r\n\r\n SVGRenderer.prototype.createComp = function (data) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n };\r\n\r\n function CVContextData() {\r\n this.saved = [];\r\n this.cArrPos = 0;\r\n this.cTr = new Matrix();\r\n this.cO = 1;\r\n var i;\r\n var len = 15;\r\n this.savedOp = createTypedArray('float32', len);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.saved[i] = createTypedArray('float32', 16);\r\n }\r\n\r\n this._length = len;\r\n }\r\n\r\n CVContextData.prototype.duplicate = function () {\r\n var newLength = this._length * 2;\r\n var currentSavedOp = this.savedOp;\r\n this.savedOp = createTypedArray('float32', newLength);\r\n this.savedOp.set(currentSavedOp);\r\n var i = 0;\r\n\r\n for (i = this._length; i < newLength; i += 1) {\r\n this.saved[i] = createTypedArray('float32', 16);\r\n }\r\n\r\n this._length = newLength;\r\n };\r\n\r\n CVContextData.prototype.reset = function () {\r\n this.cArrPos = 0;\r\n this.cTr.reset();\r\n this.cO = 1;\r\n };\r\n\r\n function ShapeTransformManager() {\r\n this.sequences = {};\r\n this.sequenceList = [];\r\n this.transform_key_count = 0;\r\n }\r\n\r\n ShapeTransformManager.prototype = {\r\n addTransformSequence: function addTransformSequence(transforms) {\r\n var i;\r\n var len = transforms.length;\r\n var key = '_';\r\n\r\n for (i = 0; i < len; i += 1) {\r\n key += transforms[i].transform.key + '_';\r\n }\r\n\r\n var sequence = this.sequences[key];\r\n\r\n if (!sequence) {\r\n sequence = {\r\n transforms: [].concat(transforms),\r\n finalTransform: new Matrix(),\r\n _mdf: false\r\n };\r\n this.sequences[key] = sequence;\r\n this.sequenceList.push(sequence);\r\n }\r\n\r\n return sequence;\r\n },\r\n processSequence: function processSequence(sequence, isFirstFrame) {\r\n var i = 0;\r\n var len = sequence.transforms.length;\r\n var _mdf = isFirstFrame;\r\n\r\n while (i < len && !isFirstFrame) {\r\n if (sequence.transforms[i].transform.mProps._mdf) {\r\n _mdf = true;\r\n break;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n if (_mdf) {\r\n var props;\r\n sequence.finalTransform.reset();\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n props = sequence.transforms[i].transform.mProps.v.props;\r\n sequence.finalTransform.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]);\r\n }\r\n }\r\n\r\n sequence._mdf = _mdf;\r\n },\r\n processSequences: function processSequences(isFirstFrame) {\r\n var i;\r\n var len = this.sequenceList.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.processSequence(this.sequenceList[i], isFirstFrame);\r\n }\r\n },\r\n getNewKey: function getNewKey() {\r\n this.transform_key_count += 1;\r\n return '_' + this.transform_key_count;\r\n }\r\n };\r\n\r\n function CVEffects() {}\r\n\r\n CVEffects.prototype.renderFrame = function () {};\r\n\r\n function CVMaskElement(data, element) {\r\n this.data = data;\r\n this.element = element;\r\n this.masksProperties = this.data.masksProperties || [];\r\n this.viewData = createSizedArray(this.masksProperties.length);\r\n var i;\r\n var len = this.masksProperties.length;\r\n var hasMasks = false;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.masksProperties[i].mode !== 'n') {\r\n hasMasks = true;\r\n }\r\n\r\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\r\n }\r\n\r\n this.hasMasks = hasMasks;\r\n\r\n if (hasMasks) {\r\n this.element.addRenderableComponent(this);\r\n }\r\n }\r\n\r\n CVMaskElement.prototype.renderFrame = function () {\r\n if (!this.hasMasks) {\r\n return;\r\n }\r\n\r\n var transform = this.element.finalTransform.mat;\r\n var ctx = this.element.canvasContext;\r\n var i;\r\n var len = this.masksProperties.length;\r\n var pt;\r\n var pts;\r\n var data;\r\n ctx.beginPath();\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.masksProperties[i].mode !== 'n') {\r\n if (this.masksProperties[i].inv) {\r\n ctx.moveTo(0, 0);\r\n ctx.lineTo(this.element.globalData.compSize.w, 0);\r\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\r\n ctx.lineTo(0, this.element.globalData.compSize.h);\r\n ctx.lineTo(0, 0);\r\n }\r\n\r\n data = this.viewData[i].v;\r\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\r\n ctx.moveTo(pt[0], pt[1]);\r\n var j;\r\n var jLen = data._length;\r\n\r\n for (j = 1; j < jLen; j += 1) {\r\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\r\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\r\n }\r\n\r\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\r\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\r\n }\r\n }\r\n\r\n this.element.globalData.renderer.save(true);\r\n ctx.clip();\r\n };\r\n\r\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\r\n\r\n CVMaskElement.prototype.destroy = function () {\r\n this.element = null;\r\n };\r\n\r\n function CVBaseElement() {}\r\n\r\n CVBaseElement.prototype = {\r\n createElements: function createElements() {},\r\n initRendererElement: function initRendererElement() {},\r\n createContainerElements: function createContainerElements() {\r\n this.canvasContext = this.globalData.canvasContext;\r\n this.renderableEffectsManager = new CVEffects(this);\r\n },\r\n createContent: function createContent() {},\r\n setBlendMode: function setBlendMode() {\r\n var globalData = this.globalData;\r\n\r\n if (globalData.blendMode !== this.data.bm) {\r\n globalData.blendMode = this.data.bm;\r\n var blendModeValue = getBlendMode(this.data.bm);\r\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\r\n }\r\n },\r\n createRenderableComponents: function createRenderableComponents() {\r\n this.maskManager = new CVMaskElement(this.data, this);\r\n },\r\n hideElement: function hideElement() {\r\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\r\n this.hidden = true;\r\n }\r\n },\r\n showElement: function showElement() {\r\n if (this.isInRange && !this.isTransparent) {\r\n this.hidden = false;\r\n this._isFirstFrame = true;\r\n this.maskManager._isFirstFrame = true;\r\n }\r\n },\r\n renderFrame: function renderFrame() {\r\n if (this.hidden || this.data.hd) {\r\n return;\r\n }\r\n\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.setBlendMode();\r\n var forceRealStack = this.data.ty === 0;\r\n this.globalData.renderer.save(forceRealStack);\r\n this.globalData.renderer.ctxTransform(this.finalTransform.mat.props);\r\n this.globalData.renderer.ctxOpacity(this.finalTransform.mProp.o.v);\r\n this.renderInnerContent();\r\n this.globalData.renderer.restore(forceRealStack);\r\n\r\n if (this.maskManager.hasMasks) {\r\n this.globalData.renderer.restore(true);\r\n }\r\n\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n destroy: function destroy() {\r\n this.canvasContext = null;\r\n this.data = null;\r\n this.globalData = null;\r\n this.maskManager.destroy();\r\n },\r\n mHelper: new Matrix()\r\n };\r\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\r\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\r\n\r\n function CVShapeData(element, data, styles, transformsManager) {\r\n this.styledShapes = [];\r\n this.tr = [0, 0, 0, 0, 0, 0];\r\n var ty = 4;\r\n\r\n if (data.ty === 'rc') {\r\n ty = 5;\r\n } else if (data.ty === 'el') {\r\n ty = 6;\r\n } else if (data.ty === 'sr') {\r\n ty = 7;\r\n }\r\n\r\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\r\n var i;\r\n var len = styles.length;\r\n var styledShape;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (!styles[i].closed) {\r\n styledShape = {\r\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\r\n trNodes: []\r\n };\r\n this.styledShapes.push(styledShape);\r\n styles[i].elements.push(styledShape);\r\n }\r\n }\r\n }\r\n\r\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\r\n\r\n function CVShapeElement(data, globalData, comp) {\r\n this.shapes = [];\r\n this.shapesData = data.shapes;\r\n this.stylesList = [];\r\n this.itemsData = [];\r\n this.prevViewData = [];\r\n this.shapeModifiers = [];\r\n this.processedElements = [];\r\n this.transformsManager = new ShapeTransformManager();\r\n this.initElement(data, globalData, comp);\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\r\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\r\n CVShapeElement.prototype.transformHelper = {\r\n opacity: 1,\r\n _opMdf: false\r\n };\r\n CVShapeElement.prototype.dashResetter = [];\r\n\r\n CVShapeElement.prototype.createContent = function () {\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\r\n };\r\n\r\n CVShapeElement.prototype.createStyleElement = function (data, transforms) {\r\n var styleElem = {\r\n data: data,\r\n type: data.ty,\r\n preTransforms: this.transformsManager.addTransformSequence(transforms),\r\n transforms: [],\r\n elements: [],\r\n closed: data.hd === true\r\n };\r\n var elementData = {};\r\n\r\n if (data.ty === 'fl' || data.ty === 'st') {\r\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\r\n\r\n if (!elementData.c.k) {\r\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\r\n }\r\n } else if (data.ty === 'gf' || data.ty === 'gs') {\r\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\r\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\r\n elementData.h = PropertyFactory.getProp(this, data.h || {\r\n k: 0\r\n }, 0, 0.01, this);\r\n elementData.a = PropertyFactory.getProp(this, data.a || {\r\n k: 0\r\n }, 0, degToRads, this);\r\n elementData.g = new GradientProperty(this, data.g, this);\r\n }\r\n\r\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\r\n\r\n if (data.ty === 'st' || data.ty === 'gs') {\r\n styleElem.lc = lineCapEnum[data.lc || 2];\r\n styleElem.lj = lineJoinEnum[data.lj || 2];\r\n\r\n if (data.lj == 1) {\r\n // eslint-disable-line eqeqeq\r\n styleElem.ml = data.ml;\r\n }\r\n\r\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\r\n\r\n if (!elementData.w.k) {\r\n styleElem.wi = elementData.w.v;\r\n }\r\n\r\n if (data.d) {\r\n var d = new DashProperty(this, data.d, 'canvas', this);\r\n elementData.d = d;\r\n\r\n if (!elementData.d.k) {\r\n styleElem.da = elementData.d.dashArray;\r\n styleElem[\"do\"] = elementData.d.dashoffset[0];\r\n }\r\n }\r\n } else {\r\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\r\n }\r\n\r\n this.stylesList.push(styleElem);\r\n elementData.style = styleElem;\r\n return elementData;\r\n };\r\n\r\n CVShapeElement.prototype.createGroupElement = function () {\r\n var elementData = {\r\n it: [],\r\n prevViewData: []\r\n };\r\n return elementData;\r\n };\r\n\r\n CVShapeElement.prototype.createTransformElement = function (data) {\r\n var elementData = {\r\n transform: {\r\n opacity: 1,\r\n _opMdf: false,\r\n key: this.transformsManager.getNewKey(),\r\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\r\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\r\n }\r\n };\r\n return elementData;\r\n };\r\n\r\n CVShapeElement.prototype.createShapeElement = function (data) {\r\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\r\n this.shapes.push(elementData);\r\n this.addShapeToModifiers(elementData);\r\n return elementData;\r\n };\r\n\r\n CVShapeElement.prototype.reloadShapes = function () {\r\n this._isFirstFrame = true;\r\n var i;\r\n var len = this.itemsData.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.prevViewData[i] = this.itemsData[i];\r\n }\r\n\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\r\n len = this.dynamicProperties.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n }\r\n\r\n this.renderModifiers();\r\n this.transformsManager.processSequences(this._isFirstFrame);\r\n };\r\n\r\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\r\n var i;\r\n var len = this.stylesList.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (!this.stylesList[i].closed) {\r\n this.stylesList[i].transforms.push(transform);\r\n }\r\n }\r\n };\r\n\r\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\r\n var i;\r\n var len = this.stylesList.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (!this.stylesList[i].closed) {\r\n this.stylesList[i].transforms.pop();\r\n }\r\n }\r\n };\r\n\r\n CVShapeElement.prototype.closeStyles = function (styles) {\r\n var i;\r\n var len = styles.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n styles[i].closed = true;\r\n }\r\n };\r\n\r\n CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\r\n var i;\r\n var len = arr.length - 1;\r\n var j;\r\n var jLen;\r\n var ownStyles = [];\r\n var ownModifiers = [];\r\n var processedPos;\r\n var modifier;\r\n var currentTransform;\r\n var ownTransforms = [].concat(transforms);\r\n\r\n for (i = len; i >= 0; i -= 1) {\r\n processedPos = this.searchProcessedElement(arr[i]);\r\n\r\n if (!processedPos) {\r\n arr[i]._shouldRender = shouldRender;\r\n } else {\r\n itemsData[i] = prevViewData[processedPos - 1];\r\n }\r\n\r\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\r\n } else {\r\n itemsData[i].style.closed = false;\r\n }\r\n\r\n ownStyles.push(itemsData[i].style);\r\n } else if (arr[i].ty === 'gr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createGroupElement(arr[i]);\r\n } else {\r\n jLen = itemsData[i].it.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\r\n }\r\n }\r\n\r\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\r\n } else if (arr[i].ty === 'tr') {\r\n if (!processedPos) {\r\n currentTransform = this.createTransformElement(arr[i]);\r\n itemsData[i] = currentTransform;\r\n }\r\n\r\n ownTransforms.push(itemsData[i]);\r\n this.addTransformToStyleList(itemsData[i]);\r\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createShapeElement(arr[i]);\r\n }\r\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n modifier.init(this, arr[i]);\r\n itemsData[i] = modifier;\r\n this.shapeModifiers.push(modifier);\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = false;\r\n }\r\n\r\n ownModifiers.push(modifier);\r\n } else if (arr[i].ty === 'rp') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n itemsData[i] = modifier;\r\n modifier.init(this, arr, i, itemsData);\r\n this.shapeModifiers.push(modifier);\r\n shouldRender = false;\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = true;\r\n }\r\n\r\n ownModifiers.push(modifier);\r\n }\r\n\r\n this.addProcessedElement(arr[i], i + 1);\r\n }\r\n\r\n this.removeTransformFromStyleList();\r\n this.closeStyles(ownStyles);\r\n len = ownModifiers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ownModifiers[i].closed = true;\r\n }\r\n };\r\n\r\n CVShapeElement.prototype.renderInnerContent = function () {\r\n this.transformHelper.opacity = 1;\r\n this.transformHelper._opMdf = false;\r\n this.renderModifiers();\r\n this.transformsManager.processSequences(this._isFirstFrame);\r\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\r\n };\r\n\r\n CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\r\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\r\n groupTransform.opacity = parentTransform.opacity;\r\n groupTransform.opacity *= groupTransform.op.v;\r\n groupTransform._opMdf = true;\r\n }\r\n };\r\n\r\n CVShapeElement.prototype.drawLayer = function () {\r\n var i;\r\n var len = this.stylesList.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n var elems;\r\n var nodes;\r\n var renderer = this.globalData.renderer;\r\n var ctx = this.globalData.canvasContext;\r\n var type;\r\n var currentStyle;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n currentStyle = this.stylesList[i];\r\n type = currentStyle.type; // Skipping style when\r\n // Stroke width equals 0\r\n // style should not be rendered (extra unused repeaters)\r\n // current opacity equals 0\r\n // global opacity equals 0\r\n\r\n if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\r\n renderer.save();\r\n elems = currentStyle.elements;\r\n\r\n if (type === 'st' || type === 'gs') {\r\n ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\r\n ctx.lineWidth = currentStyle.wi;\r\n ctx.lineCap = currentStyle.lc;\r\n ctx.lineJoin = currentStyle.lj;\r\n ctx.miterLimit = currentStyle.ml || 0;\r\n } else {\r\n ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\r\n }\r\n\r\n renderer.ctxOpacity(currentStyle.coOp);\r\n\r\n if (type !== 'st' && type !== 'gs') {\r\n ctx.beginPath();\r\n }\r\n\r\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\r\n jLen = elems.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n if (type === 'st' || type === 'gs') {\r\n ctx.beginPath();\r\n\r\n if (currentStyle.da) {\r\n ctx.setLineDash(currentStyle.da);\r\n ctx.lineDashOffset = currentStyle[\"do\"];\r\n }\r\n }\r\n\r\n nodes = elems[j].trNodes;\r\n kLen = nodes.length;\r\n\r\n for (k = 0; k < kLen; k += 1) {\r\n if (nodes[k].t === 'm') {\r\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\r\n } else if (nodes[k].t === 'c') {\r\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\r\n } else {\r\n ctx.closePath();\r\n }\r\n }\r\n\r\n if (type === 'st' || type === 'gs') {\r\n ctx.stroke();\r\n\r\n if (currentStyle.da) {\r\n ctx.setLineDash(this.dashResetter);\r\n }\r\n }\r\n }\r\n\r\n if (type !== 'st' && type !== 'gs') {\r\n ctx.fill(currentStyle.r);\r\n }\r\n\r\n renderer.restore();\r\n }\r\n }\r\n };\r\n\r\n CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\r\n var i;\r\n var len = items.length - 1;\r\n var groupTransform;\r\n groupTransform = parentTransform;\r\n\r\n for (i = len; i >= 0; i -= 1) {\r\n if (items[i].ty === 'tr') {\r\n groupTransform = data[i].transform;\r\n this.renderShapeTransform(parentTransform, groupTransform);\r\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\r\n this.renderPath(items[i], data[i]);\r\n } else if (items[i].ty === 'fl') {\r\n this.renderFill(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'st') {\r\n this.renderStroke(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\r\n this.renderGradientFill(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'gr') {\r\n this.renderShape(groupTransform, items[i].it, data[i].it);\r\n } else if (items[i].ty === 'tm') {//\r\n }\r\n }\r\n\r\n if (isMain) {\r\n this.drawLayer();\r\n }\r\n };\r\n\r\n CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\r\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\r\n var shapeNodes = styledShape.trNodes;\r\n var paths = shape.paths;\r\n var i;\r\n var len;\r\n var j;\r\n var jLen = paths._length;\r\n shapeNodes.length = 0;\r\n var groupTransformMat = styledShape.transforms.finalTransform;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n var pathNodes = paths.shapes[j];\r\n\r\n if (pathNodes && pathNodes.v) {\r\n len = pathNodes._length;\r\n\r\n for (i = 1; i < len; i += 1) {\r\n if (i === 1) {\r\n shapeNodes.push({\r\n t: 'm',\r\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\r\n });\r\n }\r\n\r\n shapeNodes.push({\r\n t: 'c',\r\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\r\n });\r\n }\r\n\r\n if (len === 1) {\r\n shapeNodes.push({\r\n t: 'm',\r\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\r\n });\r\n }\r\n\r\n if (pathNodes.c && len) {\r\n shapeNodes.push({\r\n t: 'c',\r\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\r\n });\r\n shapeNodes.push({\r\n t: 'z'\r\n });\r\n }\r\n }\r\n }\r\n\r\n styledShape.trNodes = shapeNodes;\r\n }\r\n };\r\n\r\n CVShapeElement.prototype.renderPath = function (pathData, itemData) {\r\n if (pathData.hd !== true && pathData._shouldRender) {\r\n var i;\r\n var len = itemData.styledShapes.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\r\n }\r\n }\r\n };\r\n\r\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n\r\n if (itemData.c._mdf || this._isFirstFrame) {\r\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\r\n }\r\n\r\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n }\r\n };\r\n\r\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n var grd;\r\n\r\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\r\n var ctx = this.globalData.canvasContext;\r\n var pt1 = itemData.s.v;\r\n var pt2 = itemData.e.v;\r\n\r\n if (styleData.t === 1) {\r\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\r\n } else {\r\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\r\n var percent = itemData.h.v;\r\n\r\n if (percent >= 1) {\r\n percent = 0.99;\r\n } else if (percent <= -1) {\r\n percent = -0.99;\r\n }\r\n\r\n var dist = rad * percent;\r\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\r\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\r\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\r\n }\r\n\r\n var i;\r\n var len = styleData.g.p;\r\n var cValues = itemData.g.c;\r\n var opacity = 1;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\r\n opacity = itemData.g.o[i * 2 + 1];\r\n }\r\n\r\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\r\n }\r\n\r\n styleElem.grd = grd;\r\n }\r\n\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n };\r\n\r\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n var d = itemData.d;\r\n\r\n if (d && (d._mdf || this._isFirstFrame)) {\r\n styleElem.da = d.dashArray;\r\n styleElem[\"do\"] = d.dashoffset[0];\r\n }\r\n\r\n if (itemData.c._mdf || this._isFirstFrame) {\r\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\r\n }\r\n\r\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n }\r\n\r\n if (itemData.w._mdf || this._isFirstFrame) {\r\n styleElem.wi = itemData.w.v;\r\n }\r\n };\r\n\r\n CVShapeElement.prototype.destroy = function () {\r\n this.shapesData = null;\r\n this.globalData = null;\r\n this.canvasContext = null;\r\n this.stylesList.length = 0;\r\n this.itemsData.length = 0;\r\n };\r\n\r\n function CVTextElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.yOffset = 0;\r\n this.fillColorAnim = false;\r\n this.strokeColorAnim = false;\r\n this.strokeWidthAnim = false;\r\n this.stroke = false;\r\n this.fill = false;\r\n this.justifyOffset = 0;\r\n this.currentRender = null;\r\n this.renderType = 'canvas';\r\n this.values = {\r\n fill: 'rgba(0,0,0,0)',\r\n stroke: 'rgba(0,0,0,0)',\r\n sWidth: 0,\r\n fValue: ''\r\n };\r\n this.initElement(data, globalData, comp);\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\r\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\r\n\r\n CVTextElement.prototype.buildNewText = function () {\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\r\n var hasFill = false;\r\n\r\n if (documentData.fc) {\r\n hasFill = true;\r\n this.values.fill = this.buildColor(documentData.fc);\r\n } else {\r\n this.values.fill = 'rgba(0,0,0,0)';\r\n }\r\n\r\n this.fill = hasFill;\r\n var hasStroke = false;\r\n\r\n if (documentData.sc) {\r\n hasStroke = true;\r\n this.values.stroke = this.buildColor(documentData.sc);\r\n this.values.sWidth = documentData.sw;\r\n }\r\n\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n var i;\r\n var len;\r\n var letters = documentData.l;\r\n var matrixHelper = this.mHelper;\r\n this.stroke = hasStroke;\r\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\r\n len = documentData.finalText.length; // this.tHelper.font = this.values.fValue;\r\n\r\n var charData;\r\n var shapeData;\r\n var k;\r\n var kLen;\r\n var shapes;\r\n var j;\r\n var jLen;\r\n var pathNodes;\r\n var commands;\r\n var pathArr;\r\n var singleShape = this.data.singleShape;\r\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\r\n var xPos = 0;\r\n var yPos = 0;\r\n var firstLine = true;\r\n var cnt = 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n shapeData = charData && charData.data || {};\r\n matrixHelper.reset();\r\n\r\n if (singleShape && letters[i].n) {\r\n xPos = -trackingOffset;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n firstLine = false;\r\n }\r\n\r\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\r\n jLen = shapes.length;\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n\r\n if (singleShape) {\r\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n }\r\n\r\n commands = createSizedArray(jLen - 1);\r\n var commandsCounter = 0;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n if (shapes[j].ty === 'sh') {\r\n kLen = shapes[j].ks.k.i.length;\r\n pathNodes = shapes[j].ks.k;\r\n pathArr = [];\r\n\r\n for (k = 1; k < kLen; k += 1) {\r\n if (k === 1) {\r\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\r\n }\r\n\r\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\r\n }\r\n\r\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\r\n commands[commandsCounter] = pathArr;\r\n commandsCounter += 1;\r\n }\r\n }\r\n\r\n if (singleShape) {\r\n xPos += letters[i].l;\r\n xPos += trackingOffset;\r\n }\r\n\r\n if (this.textSpans[cnt]) {\r\n this.textSpans[cnt].elem = commands;\r\n } else {\r\n this.textSpans[cnt] = {\r\n elem: commands\r\n };\r\n }\r\n\r\n cnt += 1;\r\n }\r\n };\r\n\r\n CVTextElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.font = this.values.fValue;\r\n ctx.lineCap = 'butt';\r\n ctx.lineJoin = 'miter';\r\n ctx.miterLimit = 4;\r\n\r\n if (!this.data.singleShape) {\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n }\r\n\r\n var i;\r\n var len;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n var letters = this.textProperty.currentData.l;\r\n len = letters.length;\r\n var renderedLetter;\r\n var lastFill = null;\r\n var lastStroke = null;\r\n var lastStrokeW = null;\r\n var commands;\r\n var pathArr;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (!letters[i].n) {\r\n renderedLetter = renderedLetters[i];\r\n\r\n if (renderedLetter) {\r\n this.globalData.renderer.save();\r\n this.globalData.renderer.ctxTransform(renderedLetter.p);\r\n this.globalData.renderer.ctxOpacity(renderedLetter.o);\r\n }\r\n\r\n if (this.fill) {\r\n if (renderedLetter && renderedLetter.fc) {\r\n if (lastFill !== renderedLetter.fc) {\r\n lastFill = renderedLetter.fc;\r\n ctx.fillStyle = renderedLetter.fc;\r\n }\r\n } else if (lastFill !== this.values.fill) {\r\n lastFill = this.values.fill;\r\n ctx.fillStyle = this.values.fill;\r\n }\r\n\r\n commands = this.textSpans[i].elem;\r\n jLen = commands.length;\r\n this.globalData.canvasContext.beginPath();\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n pathArr = commands[j];\r\n kLen = pathArr.length;\r\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\r\n\r\n for (k = 2; k < kLen; k += 6) {\r\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\r\n }\r\n }\r\n\r\n this.globalData.canvasContext.closePath();\r\n this.globalData.canvasContext.fill(); /// ctx.fillText(this.textSpans[i].val,0,0);\r\n }\r\n\r\n if (this.stroke) {\r\n if (renderedLetter && renderedLetter.sw) {\r\n if (lastStrokeW !== renderedLetter.sw) {\r\n lastStrokeW = renderedLetter.sw;\r\n ctx.lineWidth = renderedLetter.sw;\r\n }\r\n } else if (lastStrokeW !== this.values.sWidth) {\r\n lastStrokeW = this.values.sWidth;\r\n ctx.lineWidth = this.values.sWidth;\r\n }\r\n\r\n if (renderedLetter && renderedLetter.sc) {\r\n if (lastStroke !== renderedLetter.sc) {\r\n lastStroke = renderedLetter.sc;\r\n ctx.strokeStyle = renderedLetter.sc;\r\n }\r\n } else if (lastStroke !== this.values.stroke) {\r\n lastStroke = this.values.stroke;\r\n ctx.strokeStyle = this.values.stroke;\r\n }\r\n\r\n commands = this.textSpans[i].elem;\r\n jLen = commands.length;\r\n this.globalData.canvasContext.beginPath();\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n pathArr = commands[j];\r\n kLen = pathArr.length;\r\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\r\n\r\n for (k = 2; k < kLen; k += 6) {\r\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\r\n }\r\n }\r\n\r\n this.globalData.canvasContext.closePath();\r\n this.globalData.canvasContext.stroke(); /// ctx.strokeText(letters[i].val,0,0);\r\n }\r\n\r\n if (renderedLetter) {\r\n this.globalData.renderer.restore();\r\n }\r\n }\r\n }\r\n };\r\n\r\n function CVImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.img = globalData.imageLoader.getAsset(this.assetData);\r\n this.initElement(data, globalData, comp);\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\r\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\r\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\r\n\r\n CVImageElement.prototype.createContent = function () {\r\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\r\n var canvas = createTag('canvas');\r\n canvas.width = this.assetData.w;\r\n canvas.height = this.assetData.h;\r\n var ctx = canvas.getContext('2d');\r\n var imgW = this.img.width;\r\n var imgH = this.img.height;\r\n var imgRel = imgW / imgH;\r\n var canvasRel = this.assetData.w / this.assetData.h;\r\n var widthCrop;\r\n var heightCrop;\r\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\r\n\r\n if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\r\n heightCrop = imgH;\r\n widthCrop = heightCrop * canvasRel;\r\n } else {\r\n widthCrop = imgW;\r\n heightCrop = widthCrop / canvasRel;\r\n }\r\n\r\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\r\n this.img = canvas;\r\n }\r\n };\r\n\r\n CVImageElement.prototype.renderInnerContent = function () {\r\n this.canvasContext.drawImage(this.img, 0, 0);\r\n };\r\n\r\n CVImageElement.prototype.destroy = function () {\r\n this.img = null;\r\n };\r\n\r\n function CVSolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\r\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\r\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\r\n\r\n CVSolidElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.fillStyle = this.data.sc;\r\n ctx.fillRect(0, 0, this.data.sw, this.data.sh); //\r\n };\r\n\r\n function CanvasRendererBase(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.renderConfig = {\r\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\r\n context: config && config.context || null,\r\n progressiveLoad: config && config.progressiveLoad || false,\r\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\r\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\r\n contentVisibility: config && config.contentVisibility || 'visible',\r\n className: config && config.className || '',\r\n id: config && config.id || ''\r\n };\r\n this.renderConfig.dpr = config && config.dpr || 1;\r\n\r\n if (this.animationItem.wrapper) {\r\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\r\n }\r\n\r\n this.renderedFrame = -1;\r\n this.globalData = {\r\n frameNum: -1,\r\n _mdf: false,\r\n renderConfig: this.renderConfig,\r\n currentGlobalAlpha: -1\r\n };\r\n this.contextData = new CVContextData();\r\n this.elements = [];\r\n this.pendingElements = [];\r\n this.transformMat = new Matrix();\r\n this.completeLayers = false;\r\n this.rendererType = 'canvas';\r\n }\r\n\r\n extendPrototype([BaseRenderer], CanvasRendererBase);\r\n\r\n CanvasRendererBase.prototype.createShape = function (data) {\r\n return new CVShapeElement(data, this.globalData, this);\r\n };\r\n\r\n CanvasRendererBase.prototype.createText = function (data) {\r\n return new CVTextElement(data, this.globalData, this);\r\n };\r\n\r\n CanvasRendererBase.prototype.createImage = function (data) {\r\n return new CVImageElement(data, this.globalData, this);\r\n };\r\n\r\n CanvasRendererBase.prototype.createSolid = function (data) {\r\n return new CVSolidElement(data, this.globalData, this);\r\n };\r\n\r\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\r\n\r\n CanvasRendererBase.prototype.ctxTransform = function (props) {\r\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\r\n return;\r\n }\r\n\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\r\n return;\r\n }\r\n\r\n this.transformMat.cloneFromProps(props);\r\n var cProps = this.contextData.cTr.props;\r\n this.transformMat.transform(cProps[0], cProps[1], cProps[2], cProps[3], cProps[4], cProps[5], cProps[6], cProps[7], cProps[8], cProps[9], cProps[10], cProps[11], cProps[12], cProps[13], cProps[14], cProps[15]); // this.contextData.cTr.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);\r\n\r\n this.contextData.cTr.cloneFromProps(this.transformMat.props);\r\n var trProps = this.contextData.cTr.props;\r\n this.canvasContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\r\n };\r\n\r\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\r\n /* if(op === 1){\r\n return;\r\n } */\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\r\n this.globalData.currentGlobalAlpha = this.contextData.cO;\r\n return;\r\n }\r\n\r\n this.contextData.cO *= op < 0 ? 0 : op;\r\n\r\n if (this.globalData.currentGlobalAlpha !== this.contextData.cO) {\r\n this.canvasContext.globalAlpha = this.contextData.cO;\r\n this.globalData.currentGlobalAlpha = this.contextData.cO;\r\n }\r\n };\r\n\r\n CanvasRendererBase.prototype.reset = function () {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.restore();\r\n return;\r\n }\r\n\r\n this.contextData.reset();\r\n };\r\n\r\n CanvasRendererBase.prototype.save = function (actionFlag) {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.save();\r\n return;\r\n }\r\n\r\n if (actionFlag) {\r\n this.canvasContext.save();\r\n }\r\n\r\n var props = this.contextData.cTr.props;\r\n\r\n if (this.contextData._length <= this.contextData.cArrPos) {\r\n this.contextData.duplicate();\r\n }\r\n\r\n var i;\r\n var arr = this.contextData.saved[this.contextData.cArrPos];\r\n\r\n for (i = 0; i < 16; i += 1) {\r\n arr[i] = props[i];\r\n }\r\n\r\n this.contextData.savedOp[this.contextData.cArrPos] = this.contextData.cO;\r\n this.contextData.cArrPos += 1;\r\n };\r\n\r\n CanvasRendererBase.prototype.restore = function (actionFlag) {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.restore();\r\n return;\r\n }\r\n\r\n if (actionFlag) {\r\n this.canvasContext.restore();\r\n this.globalData.blendMode = 'source-over';\r\n }\r\n\r\n this.contextData.cArrPos -= 1;\r\n var popped = this.contextData.saved[this.contextData.cArrPos];\r\n var i;\r\n var arr = this.contextData.cTr.props;\r\n\r\n for (i = 0; i < 16; i += 1) {\r\n arr[i] = popped[i];\r\n }\r\n\r\n this.canvasContext.setTransform(popped[0], popped[1], popped[4], popped[5], popped[12], popped[13]);\r\n popped = this.contextData.savedOp[this.contextData.cArrPos];\r\n this.contextData.cO = popped;\r\n\r\n if (this.globalData.currentGlobalAlpha !== popped) {\r\n this.canvasContext.globalAlpha = popped;\r\n this.globalData.currentGlobalAlpha = popped;\r\n }\r\n };\r\n\r\n CanvasRendererBase.prototype.configAnimation = function (animData) {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.container = createTag('canvas');\r\n var containerStyle = this.animationItem.container.style;\r\n containerStyle.width = '100%';\r\n containerStyle.height = '100%';\r\n var origin = '0px 0px 0px';\r\n containerStyle.transformOrigin = origin;\r\n containerStyle.mozTransformOrigin = origin;\r\n containerStyle.webkitTransformOrigin = origin;\r\n containerStyle['-webkit-transform'] = origin;\r\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\r\n this.animationItem.wrapper.appendChild(this.animationItem.container);\r\n this.canvasContext = this.animationItem.container.getContext('2d');\r\n\r\n if (this.renderConfig.className) {\r\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\r\n }\r\n\r\n if (this.renderConfig.id) {\r\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\r\n }\r\n } else {\r\n this.canvasContext = this.renderConfig.context;\r\n }\r\n\r\n this.data = animData;\r\n this.layers = animData.layers;\r\n this.transformCanvas = {\r\n w: animData.w,\r\n h: animData.h,\r\n sx: 0,\r\n sy: 0,\r\n tx: 0,\r\n ty: 0\r\n };\r\n this.setupGlobalData(animData, document.body);\r\n this.globalData.canvasContext = this.canvasContext;\r\n this.globalData.renderer = this;\r\n this.globalData.isDashed = false;\r\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\r\n this.globalData.transformCanvas = this.transformCanvas;\r\n this.elements = createSizedArray(animData.layers.length);\r\n this.updateContainerSize();\r\n };\r\n\r\n CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\r\n this.reset();\r\n var elementWidth;\r\n var elementHeight;\r\n\r\n if (width) {\r\n elementWidth = width;\r\n elementHeight = height;\r\n this.canvasContext.canvas.width = elementWidth;\r\n this.canvasContext.canvas.height = elementHeight;\r\n } else {\r\n if (this.animationItem.wrapper && this.animationItem.container) {\r\n elementWidth = this.animationItem.wrapper.offsetWidth;\r\n elementHeight = this.animationItem.wrapper.offsetHeight;\r\n } else {\r\n elementWidth = this.canvasContext.canvas.width;\r\n elementHeight = this.canvasContext.canvas.height;\r\n }\r\n\r\n this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\r\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\r\n }\r\n\r\n var elementRel;\r\n var animationRel;\r\n\r\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\r\n var par = this.renderConfig.preserveAspectRatio.split(' ');\r\n var fillType = par[1] || 'meet';\r\n var pos = par[0] || 'xMidYMid';\r\n var xPos = pos.substr(0, 4);\r\n var yPos = pos.substr(4);\r\n elementRel = elementWidth / elementHeight;\r\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\r\n\r\n if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\r\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n } else {\r\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n }\r\n\r\n if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\r\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\r\n } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\r\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\r\n } else {\r\n this.transformCanvas.tx = 0;\r\n }\r\n\r\n if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\r\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\r\n } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\r\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\r\n } else {\r\n this.transformCanvas.ty = 0;\r\n }\r\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\r\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n this.transformCanvas.tx = 0;\r\n this.transformCanvas.ty = 0;\r\n } else {\r\n this.transformCanvas.sx = this.renderConfig.dpr;\r\n this.transformCanvas.sy = this.renderConfig.dpr;\r\n this.transformCanvas.tx = 0;\r\n this.transformCanvas.ty = 0;\r\n }\r\n\r\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\r\n /* var i, len = this.elements.length;\r\n for(i=0;i= 0; i -= 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n\r\n this.elements.length = 0;\r\n this.globalData.canvasContext = null;\r\n this.animationItem.container = null;\r\n this.destroyed = true;\r\n };\r\n\r\n CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\r\n if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\r\n return;\r\n }\r\n\r\n this.renderedFrame = num;\r\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\r\n this.globalData.frameId += 1;\r\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\r\n this.globalData.projectInterface.currentFrame = num; // console.log('--------');\r\n // console.log('NEW: ',num);\r\n\r\n var i;\r\n var len = this.layers.length;\r\n\r\n if (!this.completeLayers) {\r\n this.checkLayers(num);\r\n }\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(num - this.layers[i].st);\r\n }\r\n }\r\n\r\n if (this.globalData._mdf) {\r\n if (this.renderConfig.clearCanvas === true) {\r\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\r\n } else {\r\n this.save();\r\n }\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n\r\n if (this.renderConfig.clearCanvas !== true) {\r\n this.restore();\r\n }\r\n }\r\n };\r\n\r\n CanvasRendererBase.prototype.buildItem = function (pos) {\r\n var elements = this.elements;\r\n\r\n if (elements[pos] || this.layers[pos].ty === 99) {\r\n return;\r\n }\r\n\r\n var element = this.createItem(this.layers[pos], this, this.globalData);\r\n elements[pos] = element;\r\n element.initExpressions();\r\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\r\n };\r\n\r\n CanvasRendererBase.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n }\r\n };\r\n\r\n CanvasRendererBase.prototype.hide = function () {\r\n this.animationItem.container.style.display = 'none';\r\n };\r\n\r\n CanvasRendererBase.prototype.show = function () {\r\n this.animationItem.container.style.display = 'block';\r\n };\r\n\r\n function CVCompElement(data, globalData, comp) {\r\n this.completeLayers = false;\r\n this.layers = data.layers;\r\n this.pendingElements = [];\r\n this.elements = createSizedArray(this.layers.length);\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\r\n _placeholder: true\r\n };\r\n }\r\n\r\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\r\n\r\n CVCompElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.beginPath();\r\n ctx.moveTo(0, 0);\r\n ctx.lineTo(this.data.w, 0);\r\n ctx.lineTo(this.data.w, this.data.h);\r\n ctx.lineTo(0, this.data.h);\r\n ctx.lineTo(0, 0);\r\n ctx.clip();\r\n var i;\r\n var len = this.layers.length;\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n };\r\n\r\n CVCompElement.prototype.destroy = function () {\r\n var i;\r\n var len = this.layers.length;\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n\r\n this.layers = null;\r\n this.elements = null;\r\n };\r\n\r\n CVCompElement.prototype.createComp = function (data) {\r\n return new CVCompElement(data, this.globalData, this);\r\n };\r\n\r\n function CanvasRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.renderConfig = {\r\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\r\n context: config && config.context || null,\r\n progressiveLoad: config && config.progressiveLoad || false,\r\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\r\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\r\n contentVisibility: config && config.contentVisibility || 'visible',\r\n className: config && config.className || '',\r\n id: config && config.id || '',\r\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\r\n };\r\n this.renderConfig.dpr = config && config.dpr || 1;\r\n\r\n if (this.animationItem.wrapper) {\r\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\r\n }\r\n\r\n this.renderedFrame = -1;\r\n this.globalData = {\r\n frameNum: -1,\r\n _mdf: false,\r\n renderConfig: this.renderConfig,\r\n currentGlobalAlpha: -1\r\n };\r\n this.contextData = new CVContextData();\r\n this.elements = [];\r\n this.pendingElements = [];\r\n this.transformMat = new Matrix();\r\n this.completeLayers = false;\r\n this.rendererType = 'canvas';\r\n }\r\n\r\n extendPrototype([CanvasRendererBase], CanvasRenderer);\r\n\r\n CanvasRenderer.prototype.createComp = function (data) {\r\n return new CVCompElement(data, this.globalData, this);\r\n };\r\n\r\n function HBaseElement() {}\r\n\r\n HBaseElement.prototype = {\r\n checkBlendMode: function checkBlendMode() {},\r\n initRendererElement: function initRendererElement() {\r\n this.baseElement = createTag(this.data.tg || 'div');\r\n\r\n if (this.data.hasMask) {\r\n this.svgElement = createNS('svg');\r\n this.layerElement = createNS('g');\r\n this.maskedElement = this.layerElement;\r\n this.svgElement.appendChild(this.layerElement);\r\n this.baseElement.appendChild(this.svgElement);\r\n } else {\r\n this.layerElement = this.baseElement;\r\n }\r\n\r\n styleDiv(this.baseElement);\r\n },\r\n createContainerElements: function createContainerElements() {\r\n this.renderableEffectsManager = new CVEffects(this);\r\n this.transformedElement = this.baseElement;\r\n this.maskedElement = this.layerElement;\r\n\r\n if (this.data.ln) {\r\n this.layerElement.setAttribute('id', this.data.ln);\r\n }\r\n\r\n if (this.data.cl) {\r\n this.layerElement.setAttribute('class', this.data.cl);\r\n }\r\n\r\n if (this.data.bm !== 0) {\r\n this.setBlendMode();\r\n }\r\n },\r\n renderElement: function renderElement() {\r\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\r\n\r\n if (this.finalTransform._matMdf) {\r\n var matrixValue = this.finalTransform.mat.toCSS();\r\n transformedElementStyle.transform = matrixValue;\r\n transformedElementStyle.webkitTransform = matrixValue;\r\n }\r\n\r\n if (this.finalTransform._opMdf) {\r\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\r\n }\r\n },\r\n renderFrame: function renderFrame() {\r\n // If it is exported as hidden (data.hd === true) no need to render\r\n // If it is not visible no need to render\r\n if (this.data.hd || this.hidden) {\r\n return;\r\n }\r\n\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.renderElement();\r\n this.renderInnerContent();\r\n\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n destroy: function destroy() {\r\n this.layerElement = null;\r\n this.transformedElement = null;\r\n\r\n if (this.matteElement) {\r\n this.matteElement = null;\r\n }\r\n\r\n if (this.maskManager) {\r\n this.maskManager.destroy();\r\n this.maskManager = null;\r\n }\r\n },\r\n createRenderableComponents: function createRenderableComponents() {\r\n this.maskManager = new MaskElement(this.data, this, this.globalData);\r\n },\r\n addEffects: function addEffects() {},\r\n setMatte: function setMatte() {}\r\n };\r\n HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\r\n HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\r\n HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\r\n\r\n function HSolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\r\n\r\n HSolidElement.prototype.createContent = function () {\r\n var rect;\r\n\r\n if (this.data.hasMask) {\r\n rect = createNS('rect');\r\n rect.setAttribute('width', this.data.sw);\r\n rect.setAttribute('height', this.data.sh);\r\n rect.setAttribute('fill', this.data.sc);\r\n this.svgElement.setAttribute('width', this.data.sw);\r\n this.svgElement.setAttribute('height', this.data.sh);\r\n } else {\r\n rect = createTag('div');\r\n rect.style.width = this.data.sw + 'px';\r\n rect.style.height = this.data.sh + 'px';\r\n rect.style.backgroundColor = this.data.sc;\r\n }\r\n\r\n this.layerElement.appendChild(rect);\r\n };\r\n\r\n function HShapeElement(data, globalData, comp) {\r\n // List of drawable elements\r\n this.shapes = []; // Full shape data\r\n\r\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\r\n\r\n this.stylesList = []; // List of modifiers that will be applied to shapes\r\n\r\n this.shapeModifiers = []; // List of items in shape tree\r\n\r\n this.itemsData = []; // List of items in previous shape tree\r\n\r\n this.processedElements = []; // List of animated components\r\n\r\n this.animatedContents = [];\r\n this.shapesContainer = createNS('g');\r\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n // List of elements that have been created\r\n\r\n this.prevViewData = [];\r\n this.currentBBox = {\r\n x: 999999,\r\n y: -999999,\r\n h: 0,\r\n w: 0\r\n };\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\r\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\r\n\r\n HShapeElement.prototype.createContent = function () {\r\n var cont;\r\n this.baseElement.style.fontSize = 0;\r\n\r\n if (this.data.hasMask) {\r\n this.layerElement.appendChild(this.shapesContainer);\r\n cont = this.svgElement;\r\n } else {\r\n cont = createNS('svg');\r\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\r\n cont.setAttribute('width', size.w);\r\n cont.setAttribute('height', size.h);\r\n cont.appendChild(this.shapesContainer);\r\n this.layerElement.appendChild(cont);\r\n }\r\n\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\r\n this.filterUniqueShapes();\r\n this.shapeCont = cont;\r\n };\r\n\r\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\r\n var i;\r\n var len = transformers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\r\n }\r\n\r\n return point;\r\n };\r\n\r\n HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\r\n var shape = item.sh.v;\r\n var transformers = item.transformers;\r\n var i;\r\n var len = shape._length;\r\n var vPoint;\r\n var oPoint;\r\n var nextIPoint;\r\n var nextVPoint;\r\n\r\n if (len <= 1) {\r\n return;\r\n }\r\n\r\n for (i = 0; i < len - 1; i += 1) {\r\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\r\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\r\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\r\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\r\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\r\n }\r\n\r\n if (shape.c) {\r\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\r\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\r\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\r\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\r\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\r\n }\r\n };\r\n\r\n HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\r\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\r\n var bounds = this.shapeBoundingBox;\r\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\r\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\r\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\r\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\r\n };\r\n\r\n HShapeElement.prototype.shapeBoundingBox = {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0\r\n };\r\n HShapeElement.prototype.tempBoundingBox = {\r\n x: 0,\r\n xMax: 0,\r\n y: 0,\r\n yMax: 0,\r\n width: 0,\r\n height: 0\r\n };\r\n\r\n HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\r\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\r\n\r\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\r\n // eslint-disable-line no-plusplus\r\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\r\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\r\n c = 3 * p1[i] - 3 * p0[i];\r\n b |= 0; // eslint-disable-line no-bitwise\r\n\r\n a |= 0; // eslint-disable-line no-bitwise\r\n\r\n c |= 0; // eslint-disable-line no-bitwise\r\n\r\n if (a === 0 && b === 0) {//\r\n } else if (a === 0) {\r\n t = -c / b;\r\n\r\n if (t > 0 && t < 1) {\r\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\r\n }\r\n } else {\r\n b2ac = b * b - 4 * c * a;\r\n\r\n if (b2ac >= 0) {\r\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\r\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\r\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\r\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\r\n }\r\n }\r\n }\r\n\r\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\r\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\r\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\r\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\r\n };\r\n\r\n HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\r\n return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\r\n };\r\n\r\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\r\n var i;\r\n var len = itemsData.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (itemsData[i] && itemsData[i].sh) {\r\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\r\n } else if (itemsData[i] && itemsData[i].it) {\r\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\r\n } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\r\n this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\r\n }\r\n }\r\n };\r\n\r\n HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\r\n var width = 0;\r\n\r\n if (widthProperty.keyframes) {\r\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\r\n var kfw = widthProperty.keyframes[i].s;\r\n\r\n if (kfw > width) {\r\n width = kfw;\r\n }\r\n }\r\n\r\n width *= widthProperty.mult;\r\n } else {\r\n width = widthProperty.v * widthProperty.mult;\r\n }\r\n\r\n boundingBox.x -= width;\r\n boundingBox.xMax += width;\r\n boundingBox.y -= width;\r\n boundingBox.yMax += width;\r\n };\r\n\r\n HShapeElement.prototype.currentBoxContains = function (box) {\r\n return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\r\n };\r\n\r\n HShapeElement.prototype.renderInnerContent = function () {\r\n this._renderShapeFrame();\r\n\r\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\r\n var tempBoundingBox = this.tempBoundingBox;\r\n var max = 999999;\r\n tempBoundingBox.x = max;\r\n tempBoundingBox.xMax = -max;\r\n tempBoundingBox.y = max;\r\n tempBoundingBox.yMax = -max;\r\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\r\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\r\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; // var tempBoundingBox = this.shapeCont.getBBox();\r\n\r\n if (this.currentBoxContains(tempBoundingBox)) {\r\n return;\r\n }\r\n\r\n var changed = false;\r\n\r\n if (this.currentBBox.w !== tempBoundingBox.width) {\r\n this.currentBBox.w = tempBoundingBox.width;\r\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\r\n changed = true;\r\n }\r\n\r\n if (this.currentBBox.h !== tempBoundingBox.height) {\r\n this.currentBBox.h = tempBoundingBox.height;\r\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\r\n changed = true;\r\n }\r\n\r\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\r\n this.currentBBox.w = tempBoundingBox.width;\r\n this.currentBBox.h = tempBoundingBox.height;\r\n this.currentBBox.x = tempBoundingBox.x;\r\n this.currentBBox.y = tempBoundingBox.y;\r\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\r\n var shapeStyle = this.shapeCont.style;\r\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\r\n shapeStyle.transform = shapeTransform;\r\n shapeStyle.webkitTransform = shapeTransform;\r\n }\r\n }\r\n };\r\n\r\n function HTextElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.textPaths = [];\r\n this.currentBBox = {\r\n x: 999999,\r\n y: -999999,\r\n h: 0,\r\n w: 0\r\n };\r\n this.renderType = 'svg';\r\n this.isMasked = false;\r\n this.initElement(data, globalData, comp);\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\r\n\r\n HTextElement.prototype.createContent = function () {\r\n this.isMasked = this.checkMasks();\r\n\r\n if (this.isMasked) {\r\n this.renderType = 'svg';\r\n this.compW = this.comp.data.w;\r\n this.compH = this.comp.data.h;\r\n this.svgElement.setAttribute('width', this.compW);\r\n this.svgElement.setAttribute('height', this.compH);\r\n var g = createNS('g');\r\n this.maskedElement.appendChild(g);\r\n this.innerElem = g;\r\n } else {\r\n this.renderType = 'html';\r\n this.innerElem = this.layerElement;\r\n }\r\n\r\n this.checkParenting();\r\n };\r\n\r\n HTextElement.prototype.buildNewText = function () {\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\r\n var innerElemStyle = this.innerElem.style;\r\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\r\n innerElemStyle.fill = textColor;\r\n innerElemStyle.color = textColor;\r\n\r\n if (documentData.sc) {\r\n innerElemStyle.stroke = this.buildColor(documentData.sc);\r\n innerElemStyle.strokeWidth = documentData.sw + 'px';\r\n }\r\n\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n\r\n if (!this.globalData.fontManager.chars) {\r\n innerElemStyle.fontSize = documentData.finalSize + 'px';\r\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\r\n\r\n if (fontData.fClass) {\r\n this.innerElem.className = fontData.fClass;\r\n } else {\r\n innerElemStyle.fontFamily = fontData.fFamily;\r\n var fWeight = documentData.fWeight;\r\n var fStyle = documentData.fStyle;\r\n innerElemStyle.fontStyle = fStyle;\r\n innerElemStyle.fontWeight = fWeight;\r\n }\r\n }\r\n\r\n var i;\r\n var len;\r\n var letters = documentData.l;\r\n len = letters.length;\r\n var tSpan;\r\n var tParent;\r\n var tCont;\r\n var matrixHelper = this.mHelper;\r\n var shapes;\r\n var shapeStr = '';\r\n var cnt = 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.globalData.fontManager.chars) {\r\n if (!this.textPaths[cnt]) {\r\n tSpan = createNS('path');\r\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\r\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\r\n tSpan.setAttribute('stroke-miterlimit', '4');\r\n } else {\r\n tSpan = this.textPaths[cnt];\r\n }\r\n\r\n if (!this.isMasked) {\r\n if (this.textSpans[cnt]) {\r\n tParent = this.textSpans[cnt];\r\n tCont = tParent.children[0];\r\n } else {\r\n tParent = createTag('div');\r\n tParent.style.lineHeight = 0;\r\n tCont = createNS('svg');\r\n tCont.appendChild(tSpan);\r\n styleDiv(tParent);\r\n }\r\n }\r\n } else if (!this.isMasked) {\r\n if (this.textSpans[cnt]) {\r\n tParent = this.textSpans[cnt];\r\n tSpan = this.textPaths[cnt];\r\n } else {\r\n tParent = createTag('span');\r\n styleDiv(tParent);\r\n tSpan = createTag('span');\r\n styleDiv(tSpan);\r\n tParent.appendChild(tSpan);\r\n }\r\n } else {\r\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\r\n } // tSpan.setAttribute('visibility', 'hidden');\r\n\r\n\r\n if (this.globalData.fontManager.chars) {\r\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n var shapeData;\r\n\r\n if (charData) {\r\n shapeData = charData.data;\r\n } else {\r\n shapeData = null;\r\n }\r\n\r\n matrixHelper.reset();\r\n\r\n if (shapeData && shapeData.shapes && shapeData.shapes.length) {\r\n shapes = shapeData.shapes[0].it;\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n shapeStr = this.createPathShape(matrixHelper, shapes);\r\n tSpan.setAttribute('d', shapeStr);\r\n }\r\n\r\n if (!this.isMasked) {\r\n this.innerElem.appendChild(tParent);\r\n\r\n if (shapeData && shapeData.shapes) {\r\n // document.body.appendChild is needed to get exact measure of shape\r\n document.body.appendChild(tCont);\r\n var boundingBox = tCont.getBBox();\r\n tCont.setAttribute('width', boundingBox.width + 2);\r\n tCont.setAttribute('height', boundingBox.height + 2);\r\n tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\r\n var tContStyle = tCont.style;\r\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\r\n tContStyle.transform = tContTranslation;\r\n tContStyle.webkitTransform = tContTranslation;\r\n letters[i].yOffset = boundingBox.y - 1;\r\n } else {\r\n tCont.setAttribute('width', 1);\r\n tCont.setAttribute('height', 1);\r\n }\r\n\r\n tParent.appendChild(tCont);\r\n } else {\r\n this.innerElem.appendChild(tSpan);\r\n }\r\n } else {\r\n tSpan.textContent = letters[i].val;\r\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\r\n\r\n if (!this.isMasked) {\r\n this.innerElem.appendChild(tParent); //\r\n\r\n var tStyle = tSpan.style;\r\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\r\n tStyle.transform = tSpanTranslation;\r\n tStyle.webkitTransform = tSpanTranslation;\r\n } else {\r\n this.innerElem.appendChild(tSpan);\r\n }\r\n } //\r\n\r\n\r\n if (!this.isMasked) {\r\n this.textSpans[cnt] = tParent;\r\n } else {\r\n this.textSpans[cnt] = tSpan;\r\n }\r\n\r\n this.textSpans[cnt].style.display = 'block';\r\n this.textPaths[cnt] = tSpan;\r\n cnt += 1;\r\n }\r\n\r\n while (cnt < this.textSpans.length) {\r\n this.textSpans[cnt].style.display = 'none';\r\n cnt += 1;\r\n }\r\n };\r\n\r\n HTextElement.prototype.renderInnerContent = function () {\r\n var svgStyle;\r\n\r\n if (this.data.singleShape) {\r\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\r\n return;\r\n }\r\n\r\n if (this.isMasked && this.finalTransform._matMdf) {\r\n // Todo Benchmark if using this is better than getBBox\r\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\r\n svgStyle = this.svgElement.style;\r\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\r\n svgStyle.transform = translation;\r\n svgStyle.webkitTransform = translation;\r\n }\r\n }\r\n\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n\r\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\r\n return;\r\n }\r\n\r\n var i;\r\n var len;\r\n var count = 0;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n var letters = this.textProperty.currentData.l;\r\n len = letters.length;\r\n var renderedLetter;\r\n var textSpan;\r\n var textPath;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (letters[i].n) {\r\n count += 1;\r\n } else {\r\n textSpan = this.textSpans[i];\r\n textPath = this.textPaths[i];\r\n renderedLetter = renderedLetters[count];\r\n count += 1;\r\n\r\n if (renderedLetter._mdf.m) {\r\n if (!this.isMasked) {\r\n textSpan.style.webkitTransform = renderedLetter.m;\r\n textSpan.style.transform = renderedLetter.m;\r\n } else {\r\n textSpan.setAttribute('transform', renderedLetter.m);\r\n }\r\n } /// /textSpan.setAttribute('opacity',renderedLetter.o);\r\n\r\n\r\n textSpan.style.opacity = renderedLetter.o;\r\n\r\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\r\n textPath.setAttribute('stroke-width', renderedLetter.sw);\r\n }\r\n\r\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\r\n textPath.setAttribute('stroke', renderedLetter.sc);\r\n }\r\n\r\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\r\n textPath.setAttribute('fill', renderedLetter.fc);\r\n textPath.style.color = renderedLetter.fc;\r\n }\r\n }\r\n }\r\n\r\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\r\n var boundingBox = this.innerElem.getBBox();\r\n\r\n if (this.currentBBox.w !== boundingBox.width) {\r\n this.currentBBox.w = boundingBox.width;\r\n this.svgElement.setAttribute('width', boundingBox.width);\r\n }\r\n\r\n if (this.currentBBox.h !== boundingBox.height) {\r\n this.currentBBox.h = boundingBox.height;\r\n this.svgElement.setAttribute('height', boundingBox.height);\r\n }\r\n\r\n var margin = 1;\r\n\r\n if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\r\n this.currentBBox.w = boundingBox.width + margin * 2;\r\n this.currentBBox.h = boundingBox.height + margin * 2;\r\n this.currentBBox.x = boundingBox.x - margin;\r\n this.currentBBox.y = boundingBox.y - margin;\r\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\r\n svgStyle = this.svgElement.style;\r\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\r\n svgStyle.transform = svgTransform;\r\n svgStyle.webkitTransform = svgTransform;\r\n }\r\n }\r\n };\r\n\r\n function HCameraElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initHierarchy();\r\n var getProp = PropertyFactory.getProp;\r\n this.pe = getProp(this, data.pe, 0, 0, this);\r\n\r\n if (data.ks.p.s) {\r\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\r\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\r\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\r\n } else {\r\n this.p = getProp(this, data.ks.p, 1, 0, this);\r\n }\r\n\r\n if (data.ks.a) {\r\n this.a = getProp(this, data.ks.a, 1, 0, this);\r\n }\r\n\r\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\r\n var i;\r\n var len = data.ks.or.k.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n data.ks.or.k[i].to = null;\r\n data.ks.or.k[i].ti = null;\r\n }\r\n }\r\n\r\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\r\n this.or.sh = true;\r\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\r\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\r\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\r\n this.mat = new Matrix();\r\n this._prevMat = new Matrix();\r\n this._isFirstFrame = true; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\r\n\r\n this.finalTransform = {\r\n mProp: this\r\n };\r\n }\r\n\r\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\r\n\r\n HCameraElement.prototype.setup = function () {\r\n var i;\r\n var len = this.comp.threeDElements.length;\r\n var comp;\r\n var perspectiveStyle;\r\n var containerStyle;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n // [perspectiveElem,container]\r\n comp = this.comp.threeDElements[i];\r\n\r\n if (comp.type === '3d') {\r\n perspectiveStyle = comp.perspectiveElem.style;\r\n containerStyle = comp.container.style;\r\n var perspective = this.pe.v + 'px';\r\n var origin = '0px 0px 0px';\r\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\r\n perspectiveStyle.perspective = perspective;\r\n perspectiveStyle.webkitPerspective = perspective;\r\n containerStyle.transformOrigin = origin;\r\n containerStyle.mozTransformOrigin = origin;\r\n containerStyle.webkitTransformOrigin = origin;\r\n perspectiveStyle.transform = matrix;\r\n perspectiveStyle.webkitTransform = matrix;\r\n }\r\n }\r\n };\r\n\r\n HCameraElement.prototype.createElements = function () {};\r\n\r\n HCameraElement.prototype.hide = function () {};\r\n\r\n HCameraElement.prototype.renderFrame = function () {\r\n var _mdf = this._isFirstFrame;\r\n var i;\r\n var len;\r\n\r\n if (this.hierarchy) {\r\n len = this.hierarchy.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\r\n }\r\n }\r\n\r\n if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\r\n this.mat.reset();\r\n\r\n if (this.hierarchy) {\r\n len = this.hierarchy.length - 1;\r\n\r\n for (i = len; i >= 0; i -= 1) {\r\n var mTransf = this.hierarchy[i].finalTransform.mProp;\r\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\r\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\r\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\r\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\r\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\r\n }\r\n }\r\n\r\n if (this.p) {\r\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\r\n } else {\r\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\r\n }\r\n\r\n if (this.a) {\r\n var diffVector;\r\n\r\n if (this.p) {\r\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\r\n } else {\r\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\r\n }\r\n\r\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\r\n\r\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\r\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\r\n var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\r\n var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\r\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\r\n }\r\n\r\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\r\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\r\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\r\n this.mat.translate(0, 0, this.pe.v);\r\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\r\n\r\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\r\n len = this.comp.threeDElements.length;\r\n var comp;\r\n var perspectiveStyle;\r\n var containerStyle;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n comp = this.comp.threeDElements[i];\r\n\r\n if (comp.type === '3d') {\r\n if (hasMatrixChanged) {\r\n var matValue = this.mat.toCSS();\r\n containerStyle = comp.container.style;\r\n containerStyle.transform = matValue;\r\n containerStyle.webkitTransform = matValue;\r\n }\r\n\r\n if (this.pe._mdf) {\r\n perspectiveStyle = comp.perspectiveElem.style;\r\n perspectiveStyle.perspective = this.pe.v + 'px';\r\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\r\n }\r\n }\r\n }\r\n\r\n this.mat.clone(this._prevMat);\r\n }\r\n }\r\n\r\n this._isFirstFrame = false;\r\n };\r\n\r\n HCameraElement.prototype.prepareFrame = function (num) {\r\n this.prepareProperties(num, true);\r\n };\r\n\r\n HCameraElement.prototype.destroy = function () {};\r\n\r\n HCameraElement.prototype.getBaseElement = function () {\r\n return null;\r\n };\r\n\r\n function HImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initElement(data, globalData, comp);\r\n }\r\n\r\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\r\n\r\n HImageElement.prototype.createContent = function () {\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n var img = new Image();\r\n\r\n if (this.data.hasMask) {\r\n this.imageElem = createNS('image');\r\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\r\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\r\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\r\n this.layerElement.appendChild(this.imageElem);\r\n this.baseElement.setAttribute('width', this.assetData.w);\r\n this.baseElement.setAttribute('height', this.assetData.h);\r\n } else {\r\n this.layerElement.appendChild(img);\r\n }\r\n\r\n img.crossOrigin = 'anonymous';\r\n img.src = assetPath;\r\n\r\n if (this.data.ln) {\r\n this.baseElement.setAttribute('id', this.data.ln);\r\n }\r\n };\r\n\r\n function HybridRendererBase(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.layers = null;\r\n this.renderedFrame = -1;\r\n this.renderConfig = {\r\n className: config && config.className || '',\r\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\r\n hideOnTransparent: !(config && config.hideOnTransparent === false),\r\n filterSize: {\r\n width: config && config.filterSize && config.filterSize.width || '400%',\r\n height: config && config.filterSize && config.filterSize.height || '400%',\r\n x: config && config.filterSize && config.filterSize.x || '-100%',\r\n y: config && config.filterSize && config.filterSize.y || '-100%'\r\n }\r\n };\r\n this.globalData = {\r\n _mdf: false,\r\n frameNum: -1,\r\n renderConfig: this.renderConfig\r\n };\r\n this.pendingElements = [];\r\n this.elements = [];\r\n this.threeDElements = [];\r\n this.destroyed = false;\r\n this.camera = null;\r\n this.supports3d = true;\r\n this.rendererType = 'html';\r\n }\r\n\r\n extendPrototype([BaseRenderer], HybridRendererBase);\r\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\r\n\r\n HybridRendererBase.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n }\r\n };\r\n\r\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\r\n var newDOMElement = element.getBaseElement();\r\n\r\n if (!newDOMElement) {\r\n return;\r\n }\r\n\r\n var layer = this.layers[pos];\r\n\r\n if (!layer.ddd || !this.supports3d) {\r\n if (this.threeDElements) {\r\n this.addTo3dContainer(newDOMElement, pos);\r\n } else {\r\n var i = 0;\r\n var nextDOMElement;\r\n var nextLayer;\r\n var tmpDOMElement;\r\n\r\n while (i < pos) {\r\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\r\n nextLayer = this.elements[i];\r\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\r\n nextDOMElement = tmpDOMElement || nextDOMElement;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n if (nextDOMElement) {\r\n if (!layer.ddd || !this.supports3d) {\r\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\r\n }\r\n } else if (!layer.ddd || !this.supports3d) {\r\n this.layerElement.appendChild(newDOMElement);\r\n }\r\n }\r\n } else {\r\n this.addTo3dContainer(newDOMElement, pos);\r\n }\r\n };\r\n\r\n HybridRendererBase.prototype.createShape = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGShapeElement(data, this.globalData, this);\r\n }\r\n\r\n return new HShapeElement(data, this.globalData, this);\r\n };\r\n\r\n HybridRendererBase.prototype.createText = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGTextLottieElement(data, this.globalData, this);\r\n }\r\n\r\n return new HTextElement(data, this.globalData, this);\r\n };\r\n\r\n HybridRendererBase.prototype.createCamera = function (data) {\r\n this.camera = new HCameraElement(data, this.globalData, this);\r\n return this.camera;\r\n };\r\n\r\n HybridRendererBase.prototype.createImage = function (data) {\r\n if (!this.supports3d) {\r\n return new IImageElement(data, this.globalData, this);\r\n }\r\n\r\n return new HImageElement(data, this.globalData, this);\r\n };\r\n\r\n HybridRendererBase.prototype.createSolid = function (data) {\r\n if (!this.supports3d) {\r\n return new ISolidElement(data, this.globalData, this);\r\n }\r\n\r\n return new HSolidElement(data, this.globalData, this);\r\n };\r\n\r\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\r\n\r\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\r\n var i = 0;\r\n var len = this.threeDElements.length;\r\n\r\n while (i < len) {\r\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\r\n return this.threeDElements[i].perspectiveElem;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\r\n var perspectiveElem = createTag('div');\r\n var style;\r\n var containerStyle;\r\n styleDiv(perspectiveElem);\r\n var container = createTag('div');\r\n styleDiv(container);\r\n\r\n if (type === '3d') {\r\n style = perspectiveElem.style;\r\n style.width = this.globalData.compSize.w + 'px';\r\n style.height = this.globalData.compSize.h + 'px';\r\n var center = '50% 50%';\r\n style.webkitTransformOrigin = center;\r\n style.mozTransformOrigin = center;\r\n style.transformOrigin = center;\r\n containerStyle = container.style;\r\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\r\n containerStyle.transform = matrix;\r\n containerStyle.webkitTransform = matrix;\r\n }\r\n\r\n perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\r\n\r\n var threeDContainerData = {\r\n container: container,\r\n perspectiveElem: perspectiveElem,\r\n startPos: pos,\r\n endPos: pos,\r\n type: type\r\n };\r\n this.threeDElements.push(threeDContainerData);\r\n return threeDContainerData;\r\n };\r\n\r\n HybridRendererBase.prototype.build3dContainers = function () {\r\n var i;\r\n var len = this.layers.length;\r\n var lastThreeDContainerData;\r\n var currentContainer = '';\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\r\n if (currentContainer !== '3d') {\r\n currentContainer = '3d';\r\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\r\n }\r\n\r\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\r\n } else {\r\n if (currentContainer !== '2d') {\r\n currentContainer = '2d';\r\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\r\n }\r\n\r\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\r\n }\r\n }\r\n\r\n len = this.threeDElements.length;\r\n\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\r\n }\r\n };\r\n\r\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\r\n var i = 0;\r\n var len = this.threeDElements.length;\r\n\r\n while (i < len) {\r\n if (pos <= this.threeDElements[i].endPos) {\r\n var j = this.threeDElements[i].startPos;\r\n var nextElement;\r\n\r\n while (j < pos) {\r\n if (this.elements[j] && this.elements[j].getBaseElement) {\r\n nextElement = this.elements[j].getBaseElement();\r\n }\r\n\r\n j += 1;\r\n }\r\n\r\n if (nextElement) {\r\n this.threeDElements[i].container.insertBefore(elem, nextElement);\r\n } else {\r\n this.threeDElements[i].container.appendChild(elem);\r\n }\r\n\r\n break;\r\n }\r\n\r\n i += 1;\r\n }\r\n };\r\n\r\n HybridRendererBase.prototype.configAnimation = function (animData) {\r\n var resizerElem = createTag('div');\r\n var wrapper = this.animationItem.wrapper;\r\n var style = resizerElem.style;\r\n style.width = animData.w + 'px';\r\n style.height = animData.h + 'px';\r\n this.resizerElem = resizerElem;\r\n styleDiv(resizerElem);\r\n style.transformStyle = 'flat';\r\n style.mozTransformStyle = 'flat';\r\n style.webkitTransformStyle = 'flat';\r\n\r\n if (this.renderConfig.className) {\r\n resizerElem.setAttribute('class', this.renderConfig.className);\r\n }\r\n\r\n wrapper.appendChild(resizerElem);\r\n style.overflow = 'hidden';\r\n var svg = createNS('svg');\r\n svg.setAttribute('width', '1');\r\n svg.setAttribute('height', '1');\r\n styleDiv(svg);\r\n this.resizerElem.appendChild(svg);\r\n var defs = createNS('defs');\r\n svg.appendChild(defs);\r\n this.data = animData; // Mask animation\r\n\r\n this.setupGlobalData(animData, svg);\r\n this.globalData.defs = defs;\r\n this.layers = animData.layers;\r\n this.layerElement = this.resizerElem;\r\n this.build3dContainers();\r\n this.updateContainerSize();\r\n };\r\n\r\n HybridRendererBase.prototype.destroy = function () {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.wrapper.innerText = '';\r\n }\r\n\r\n this.animationItem.container = null;\r\n this.globalData.defs = null;\r\n var i;\r\n var len = this.layers ? this.layers.length : 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this.elements[i].destroy();\r\n }\r\n\r\n this.elements.length = 0;\r\n this.destroyed = true;\r\n this.animationItem = null;\r\n };\r\n\r\n HybridRendererBase.prototype.updateContainerSize = function () {\r\n var elementWidth = this.animationItem.wrapper.offsetWidth;\r\n var elementHeight = this.animationItem.wrapper.offsetHeight;\r\n var elementRel = elementWidth / elementHeight;\r\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\r\n var sx;\r\n var sy;\r\n var tx;\r\n var ty;\r\n\r\n if (animationRel > elementRel) {\r\n sx = elementWidth / this.globalData.compSize.w;\r\n sy = elementWidth / this.globalData.compSize.w;\r\n tx = 0;\r\n ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\r\n } else {\r\n sx = elementHeight / this.globalData.compSize.h;\r\n sy = elementHeight / this.globalData.compSize.h;\r\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\r\n ty = 0;\r\n }\r\n\r\n var style = this.resizerElem.style;\r\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\r\n style.transform = style.webkitTransform;\r\n };\r\n\r\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\r\n\r\n HybridRendererBase.prototype.hide = function () {\r\n this.resizerElem.style.display = 'none';\r\n };\r\n\r\n HybridRendererBase.prototype.show = function () {\r\n this.resizerElem.style.display = 'block';\r\n };\r\n\r\n HybridRendererBase.prototype.initItems = function () {\r\n this.buildAllItems();\r\n\r\n if (this.camera) {\r\n this.camera.setup();\r\n } else {\r\n var cWidth = this.globalData.compSize.w;\r\n var cHeight = this.globalData.compSize.h;\r\n var i;\r\n var len = this.threeDElements.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n var style = this.threeDElements[i].perspectiveElem.style;\r\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\r\n style.perspective = style.webkitPerspective;\r\n }\r\n }\r\n };\r\n\r\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\r\n var i;\r\n var len = assets.length;\r\n var floatingContainer = createTag('div');\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (assets[i].xt) {\r\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\r\n comp.initExpressions();\r\n this.globalData.projectInterface.registerComposition(comp);\r\n }\r\n }\r\n };\r\n\r\n function HCompElement(data, globalData, comp) {\r\n this.layers = data.layers;\r\n this.supports3d = !data.hasMask;\r\n this.completeLayers = false;\r\n this.pendingElements = [];\r\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\r\n _placeholder: true\r\n };\r\n }\r\n\r\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\r\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\r\n\r\n HCompElement.prototype.createContainerElements = function () {\r\n this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\r\n\r\n\r\n if (this.data.hasMask) {\r\n this.svgElement.setAttribute('width', this.data.w);\r\n this.svgElement.setAttribute('height', this.data.h);\r\n this.transformedElement = this.baseElement;\r\n } else {\r\n this.transformedElement = this.layerElement;\r\n }\r\n };\r\n\r\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\r\n var j = 0;\r\n var nextElement;\r\n\r\n while (j < pos) {\r\n if (this.elements[j] && this.elements[j].getBaseElement) {\r\n nextElement = this.elements[j].getBaseElement();\r\n }\r\n\r\n j += 1;\r\n }\r\n\r\n if (nextElement) {\r\n this.layerElement.insertBefore(elem, nextElement);\r\n } else {\r\n this.layerElement.appendChild(elem);\r\n }\r\n };\r\n\r\n HCompElement.prototype.createComp = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n }\r\n\r\n return new HCompElement(data, this.globalData, this);\r\n };\r\n\r\n function HybridRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.layers = null;\r\n this.renderedFrame = -1;\r\n this.renderConfig = {\r\n className: config && config.className || '',\r\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\r\n hideOnTransparent: !(config && config.hideOnTransparent === false),\r\n filterSize: {\r\n width: config && config.filterSize && config.filterSize.width || '400%',\r\n height: config && config.filterSize && config.filterSize.height || '400%',\r\n x: config && config.filterSize && config.filterSize.x || '-100%',\r\n y: config && config.filterSize && config.filterSize.y || '-100%'\r\n },\r\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\r\n };\r\n this.globalData = {\r\n _mdf: false,\r\n frameNum: -1,\r\n renderConfig: this.renderConfig\r\n };\r\n this.pendingElements = [];\r\n this.elements = [];\r\n this.threeDElements = [];\r\n this.destroyed = false;\r\n this.camera = null;\r\n this.supports3d = true;\r\n this.rendererType = 'html';\r\n }\r\n\r\n extendPrototype([HybridRendererBase], HybridRenderer);\r\n\r\n HybridRenderer.prototype.createComp = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n }\r\n\r\n return new HCompElement(data, this.globalData, this);\r\n };\r\n\r\n var CompExpressionInterface = function () {\r\n return function (comp) {\r\n function _thisLayerFunction(name) {\r\n var i = 0;\r\n var len = comp.layers.length;\r\n\r\n while (i < len) {\r\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\r\n return comp.elements[i].layerInterface;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null; // return {active:false};\r\n }\r\n\r\n Object.defineProperty(_thisLayerFunction, '_name', {\r\n value: comp.data.nm\r\n });\r\n _thisLayerFunction.layer = _thisLayerFunction;\r\n _thisLayerFunction.pixelAspect = 1;\r\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\r\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\r\n _thisLayerFunction.pixelAspect = 1;\r\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\r\n _thisLayerFunction.displayStartTime = 0;\r\n _thisLayerFunction.numLayers = comp.layers.length;\r\n return _thisLayerFunction;\r\n };\r\n }();\r\n\r\n var Expressions = function () {\r\n var ob = {};\r\n ob.initExpressions = initExpressions;\r\n\r\n function initExpressions(animation) {\r\n var stackCount = 0;\r\n var registers = [];\r\n\r\n function pushExpression() {\r\n stackCount += 1;\r\n }\r\n\r\n function popExpression() {\r\n stackCount -= 1;\r\n\r\n if (stackCount === 0) {\r\n releaseInstances();\r\n }\r\n }\r\n\r\n function registerExpressionProperty(expression) {\r\n if (registers.indexOf(expression) === -1) {\r\n registers.push(expression);\r\n }\r\n }\r\n\r\n function releaseInstances() {\r\n var i;\r\n var len = registers.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n registers[i].release();\r\n }\r\n\r\n registers.length = 0;\r\n }\r\n\r\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\r\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\r\n animation.renderer.globalData.pushExpression = pushExpression;\r\n animation.renderer.globalData.popExpression = popExpression;\r\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\r\n }\r\n\r\n return ob;\r\n }();\r\n\r\n var MaskManagerInterface = function () {\r\n function MaskInterface(mask, data) {\r\n this._mask = mask;\r\n this._data = data;\r\n }\r\n\r\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\r\n get: function get() {\r\n if (this._mask.prop.k) {\r\n this._mask.prop.getValue();\r\n }\r\n\r\n return this._mask.prop;\r\n }\r\n });\r\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\r\n get: function get() {\r\n if (this._mask.op.k) {\r\n this._mask.op.getValue();\r\n }\r\n\r\n return this._mask.op.v * 100;\r\n }\r\n });\r\n\r\n var MaskManager = function MaskManager(maskManager) {\r\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\r\n\r\n var i;\r\n var len = maskManager.viewData.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\r\n }\r\n\r\n var maskFunction = function maskFunction(name) {\r\n i = 0;\r\n\r\n while (i < len) {\r\n if (maskManager.masksProperties[i].nm === name) {\r\n return _masksInterfaces[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n return maskFunction;\r\n };\r\n\r\n return MaskManager;\r\n }();\r\n\r\n var ExpressionPropertyInterface = function () {\r\n var defaultUnidimensionalValue = {\r\n pv: 0,\r\n v: 0,\r\n mult: 1\r\n };\r\n var defaultMultidimensionalValue = {\r\n pv: [0, 0, 0],\r\n v: [0, 0, 0],\r\n mult: 1\r\n };\r\n\r\n function completeProperty(expressionValue, property, type) {\r\n Object.defineProperty(expressionValue, 'velocity', {\r\n get: function get() {\r\n return property.getVelocityAtTime(property.comp.currentFrame);\r\n }\r\n });\r\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\r\n\r\n expressionValue.key = function (pos) {\r\n if (!expressionValue.numKeys) {\r\n return 0;\r\n }\r\n\r\n var value = '';\r\n\r\n if ('s' in property.keyframes[pos - 1]) {\r\n value = property.keyframes[pos - 1].s;\r\n } else if ('e' in property.keyframes[pos - 2]) {\r\n value = property.keyframes[pos - 2].e;\r\n } else {\r\n value = property.keyframes[pos - 2].s;\r\n }\r\n\r\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\r\n\r\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\r\n valueProp.value = type === 'unidimensional' ? value[0] : value;\r\n return valueProp;\r\n };\r\n\r\n expressionValue.valueAtTime = property.getValueAtTime;\r\n expressionValue.speedAtTime = property.getSpeedAtTime;\r\n expressionValue.velocityAtTime = property.getVelocityAtTime;\r\n expressionValue.propertyGroup = property.propertyGroup;\r\n }\r\n\r\n function UnidimensionalPropertyInterface(property) {\r\n if (!property || !('pv' in property)) {\r\n property = defaultUnidimensionalValue;\r\n }\r\n\r\n var mult = 1 / property.mult;\r\n var val = property.pv * mult;\r\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\r\n\r\n expressionValue.value = val;\r\n completeProperty(expressionValue, property, 'unidimensional');\r\n return function () {\r\n if (property.k) {\r\n property.getValue();\r\n }\r\n\r\n val = property.v * mult;\r\n\r\n if (expressionValue.value !== val) {\r\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\r\n\r\n expressionValue.value = val;\r\n completeProperty(expressionValue, property, 'unidimensional');\r\n }\r\n\r\n return expressionValue;\r\n };\r\n }\r\n\r\n function MultidimensionalPropertyInterface(property) {\r\n if (!property || !('pv' in property)) {\r\n property = defaultMultidimensionalValue;\r\n }\r\n\r\n var mult = 1 / property.mult;\r\n var len = property.data && property.data.l || property.pv.length;\r\n var expressionValue = createTypedArray('float32', len);\r\n var arrValue = createTypedArray('float32', len);\r\n expressionValue.value = arrValue;\r\n completeProperty(expressionValue, property, 'multidimensional');\r\n return function () {\r\n if (property.k) {\r\n property.getValue();\r\n }\r\n\r\n for (var i = 0; i < len; i += 1) {\r\n arrValue[i] = property.v[i] * mult;\r\n expressionValue[i] = arrValue[i];\r\n }\r\n\r\n return expressionValue;\r\n };\r\n } // TODO: try to avoid using this getter\r\n\r\n\r\n function defaultGetter() {\r\n return defaultUnidimensionalValue;\r\n }\r\n\r\n return function (property) {\r\n if (!property) {\r\n return defaultGetter;\r\n }\r\n\r\n if (property.propType === 'unidimensional') {\r\n return UnidimensionalPropertyInterface(property);\r\n }\r\n\r\n return MultidimensionalPropertyInterface(property);\r\n };\r\n }();\r\n\r\n var TransformExpressionInterface = function () {\r\n return function (transform) {\r\n function _thisFunction(name) {\r\n switch (name) {\r\n case 'scale':\r\n case 'Scale':\r\n case 'ADBE Scale':\r\n case 6:\r\n return _thisFunction.scale;\r\n\r\n case 'rotation':\r\n case 'Rotation':\r\n case 'ADBE Rotation':\r\n case 'ADBE Rotate Z':\r\n case 10:\r\n return _thisFunction.rotation;\r\n\r\n case 'ADBE Rotate X':\r\n return _thisFunction.xRotation;\r\n\r\n case 'ADBE Rotate Y':\r\n return _thisFunction.yRotation;\r\n\r\n case 'position':\r\n case 'Position':\r\n case 'ADBE Position':\r\n case 2:\r\n return _thisFunction.position;\r\n\r\n case 'ADBE Position_0':\r\n return _thisFunction.xPosition;\r\n\r\n case 'ADBE Position_1':\r\n return _thisFunction.yPosition;\r\n\r\n case 'ADBE Position_2':\r\n return _thisFunction.zPosition;\r\n\r\n case 'anchorPoint':\r\n case 'AnchorPoint':\r\n case 'Anchor Point':\r\n case 'ADBE AnchorPoint':\r\n case 1:\r\n return _thisFunction.anchorPoint;\r\n\r\n case 'opacity':\r\n case 'Opacity':\r\n case 11:\r\n return _thisFunction.opacity;\r\n\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n Object.defineProperty(_thisFunction, 'rotation', {\r\n get: ExpressionPropertyInterface(transform.r || transform.rz)\r\n });\r\n Object.defineProperty(_thisFunction, 'zRotation', {\r\n get: ExpressionPropertyInterface(transform.rz || transform.r)\r\n });\r\n Object.defineProperty(_thisFunction, 'xRotation', {\r\n get: ExpressionPropertyInterface(transform.rx)\r\n });\r\n Object.defineProperty(_thisFunction, 'yRotation', {\r\n get: ExpressionPropertyInterface(transform.ry)\r\n });\r\n Object.defineProperty(_thisFunction, 'scale', {\r\n get: ExpressionPropertyInterface(transform.s)\r\n });\r\n\r\n var _px;\r\n\r\n var _py;\r\n\r\n var _pz;\r\n\r\n var _transformFactory;\r\n\r\n if (transform.p) {\r\n _transformFactory = ExpressionPropertyInterface(transform.p);\r\n } else {\r\n _px = ExpressionPropertyInterface(transform.px);\r\n _py = ExpressionPropertyInterface(transform.py);\r\n\r\n if (transform.pz) {\r\n _pz = ExpressionPropertyInterface(transform.pz);\r\n }\r\n }\r\n\r\n Object.defineProperty(_thisFunction, 'position', {\r\n get: function get() {\r\n if (transform.p) {\r\n return _transformFactory();\r\n }\r\n\r\n return [_px(), _py(), _pz ? _pz() : 0];\r\n }\r\n });\r\n Object.defineProperty(_thisFunction, 'xPosition', {\r\n get: ExpressionPropertyInterface(transform.px)\r\n });\r\n Object.defineProperty(_thisFunction, 'yPosition', {\r\n get: ExpressionPropertyInterface(transform.py)\r\n });\r\n Object.defineProperty(_thisFunction, 'zPosition', {\r\n get: ExpressionPropertyInterface(transform.pz)\r\n });\r\n Object.defineProperty(_thisFunction, 'anchorPoint', {\r\n get: ExpressionPropertyInterface(transform.a)\r\n });\r\n Object.defineProperty(_thisFunction, 'opacity', {\r\n get: ExpressionPropertyInterface(transform.o)\r\n });\r\n Object.defineProperty(_thisFunction, 'skew', {\r\n get: ExpressionPropertyInterface(transform.sk)\r\n });\r\n Object.defineProperty(_thisFunction, 'skewAxis', {\r\n get: ExpressionPropertyInterface(transform.sa)\r\n });\r\n Object.defineProperty(_thisFunction, 'orientation', {\r\n get: ExpressionPropertyInterface(transform.or)\r\n });\r\n return _thisFunction;\r\n };\r\n }();\r\n\r\n var LayerExpressionInterface = function () {\r\n function getMatrix(time) {\r\n var toWorldMat = new Matrix();\r\n\r\n if (time !== undefined) {\r\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\r\n\r\n propMatrix.clone(toWorldMat);\r\n } else {\r\n var transformMat = this._elem.finalTransform.mProp;\r\n transformMat.applyToMatrix(toWorldMat);\r\n }\r\n\r\n return toWorldMat;\r\n }\r\n\r\n function toWorldVec(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n toWorldMat.props[12] = 0;\r\n toWorldMat.props[13] = 0;\r\n toWorldMat.props[14] = 0;\r\n return this.applyPoint(toWorldMat, arr);\r\n }\r\n\r\n function toWorld(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n return this.applyPoint(toWorldMat, arr);\r\n }\r\n\r\n function fromWorldVec(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n toWorldMat.props[12] = 0;\r\n toWorldMat.props[13] = 0;\r\n toWorldMat.props[14] = 0;\r\n return this.invertPoint(toWorldMat, arr);\r\n }\r\n\r\n function fromWorld(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n return this.invertPoint(toWorldMat, arr);\r\n }\r\n\r\n function applyPoint(matrix, arr) {\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\r\n }\r\n }\r\n\r\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\r\n }\r\n\r\n function invertPoint(matrix, arr) {\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\r\n }\r\n }\r\n\r\n return matrix.inversePoint(arr);\r\n }\r\n\r\n function fromComp(arr) {\r\n var toWorldMat = new Matrix();\r\n toWorldMat.reset();\r\n\r\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\r\n\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\r\n }\r\n\r\n return toWorldMat.inversePoint(arr);\r\n }\r\n\r\n return toWorldMat.inversePoint(arr);\r\n }\r\n\r\n function sampleImage() {\r\n return [1, 1, 1, 1];\r\n }\r\n\r\n return function (elem) {\r\n var transformInterface;\r\n\r\n function _registerMaskInterface(maskManager) {\r\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\r\n }\r\n\r\n function _registerEffectsInterface(effects) {\r\n _thisLayerFunction.effect = effects;\r\n }\r\n\r\n function _thisLayerFunction(name) {\r\n switch (name) {\r\n case 'ADBE Root Vectors Group':\r\n case 'Contents':\r\n case 2:\r\n return _thisLayerFunction.shapeInterface;\r\n\r\n case 1:\r\n case 6:\r\n case 'Transform':\r\n case 'transform':\r\n case 'ADBE Transform Group':\r\n return transformInterface;\r\n\r\n case 4:\r\n case 'ADBE Effect Parade':\r\n case 'effects':\r\n case 'Effects':\r\n return _thisLayerFunction.effect;\r\n\r\n case 'ADBE Text Properties':\r\n return _thisLayerFunction.textInterface;\r\n\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n _thisLayerFunction.getMatrix = getMatrix;\r\n _thisLayerFunction.invertPoint = invertPoint;\r\n _thisLayerFunction.applyPoint = applyPoint;\r\n _thisLayerFunction.toWorld = toWorld;\r\n _thisLayerFunction.toWorldVec = toWorldVec;\r\n _thisLayerFunction.fromWorld = fromWorld;\r\n _thisLayerFunction.fromWorldVec = fromWorldVec;\r\n _thisLayerFunction.toComp = toWorld;\r\n _thisLayerFunction.fromComp = fromComp;\r\n _thisLayerFunction.sampleImage = sampleImage;\r\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\r\n _thisLayerFunction._elem = elem;\r\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\r\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\r\n Object.defineProperties(_thisLayerFunction, {\r\n hasParent: {\r\n get: function get() {\r\n return elem.hierarchy.length;\r\n }\r\n },\r\n parent: {\r\n get: function get() {\r\n return elem.hierarchy[0].layerInterface;\r\n }\r\n },\r\n rotation: getDescriptor(transformInterface, 'rotation'),\r\n scale: getDescriptor(transformInterface, 'scale'),\r\n position: getDescriptor(transformInterface, 'position'),\r\n opacity: getDescriptor(transformInterface, 'opacity'),\r\n anchorPoint: anchorPointDescriptor,\r\n anchor_point: anchorPointDescriptor,\r\n transform: {\r\n get: function get() {\r\n return transformInterface;\r\n }\r\n },\r\n active: {\r\n get: function get() {\r\n return elem.isInRange;\r\n }\r\n }\r\n });\r\n _thisLayerFunction.startTime = elem.data.st;\r\n _thisLayerFunction.index = elem.data.ind;\r\n _thisLayerFunction.source = elem.data.refId;\r\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\r\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\r\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\r\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\r\n _thisLayerFunction._name = elem.data.nm;\r\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\r\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\r\n return _thisLayerFunction;\r\n };\r\n }();\r\n\r\n var propertyGroupFactory = function () {\r\n return function (interfaceFunction, parentPropertyGroup) {\r\n return function (val) {\r\n val = val === undefined ? 1 : val;\r\n\r\n if (val <= 0) {\r\n return interfaceFunction;\r\n }\r\n\r\n return parentPropertyGroup(val - 1);\r\n };\r\n };\r\n }();\r\n\r\n var PropertyInterface = function () {\r\n return function (propertyName, propertyGroup) {\r\n var interfaceFunction = {\r\n _name: propertyName\r\n };\r\n\r\n function _propertyGroup(val) {\r\n val = val === undefined ? 1 : val;\r\n\r\n if (val <= 0) {\r\n return interfaceFunction;\r\n }\r\n\r\n return propertyGroup(val - 1);\r\n }\r\n\r\n return _propertyGroup;\r\n };\r\n }();\r\n\r\n var EffectsExpressionInterface = function () {\r\n var ob = {\r\n createEffectsInterface: createEffectsInterface\r\n };\r\n\r\n function createEffectsInterface(elem, propertyGroup) {\r\n if (elem.effectsManager) {\r\n var effectElements = [];\r\n var effectsData = elem.data.ef;\r\n var i;\r\n var len = elem.effectsManager.effectElements.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\r\n }\r\n\r\n var effects = elem.data.ef || [];\r\n\r\n var groupInterface = function groupInterface(name) {\r\n i = 0;\r\n len = effects.length;\r\n\r\n while (i < len) {\r\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\r\n return effectElements[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n Object.defineProperty(groupInterface, 'numProperties', {\r\n get: function get() {\r\n return effects.length;\r\n }\r\n });\r\n return groupInterface;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function createGroupInterface(data, elements, propertyGroup, elem) {\r\n function groupInterface(name) {\r\n var effects = data.ef;\r\n var i = 0;\r\n var len = effects.length;\r\n\r\n while (i < len) {\r\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\r\n if (effects[i].ty === 5) {\r\n return effectElements[i];\r\n }\r\n\r\n return effectElements[i]();\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n throw new Error();\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\r\n\r\n var effectElements = [];\r\n var i;\r\n var len = data.ef.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (data.ef[i].ty === 5) {\r\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\r\n } else {\r\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\r\n }\r\n }\r\n\r\n if (data.mn === 'ADBE Color Control') {\r\n Object.defineProperty(groupInterface, 'color', {\r\n get: function get() {\r\n return effectElements[0]();\r\n }\r\n });\r\n }\r\n\r\n Object.defineProperties(groupInterface, {\r\n numProperties: {\r\n get: function get() {\r\n return data.np;\r\n }\r\n },\r\n _name: {\r\n value: data.nm\r\n },\r\n propertyGroup: {\r\n value: _propertyGroup\r\n }\r\n });\r\n groupInterface.enabled = data.en !== 0;\r\n groupInterface.active = groupInterface.enabled;\r\n return groupInterface;\r\n }\r\n\r\n function createValueInterface(element, type, elem, propertyGroup) {\r\n var expressionProperty = ExpressionPropertyInterface(element.p);\r\n\r\n function interfaceFunction() {\r\n if (type === 10) {\r\n return elem.comp.compInterface(element.p.v);\r\n }\r\n\r\n return expressionProperty();\r\n }\r\n\r\n if (element.p.setGroupProperty) {\r\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\r\n }\r\n\r\n return interfaceFunction;\r\n }\r\n\r\n return ob;\r\n }();\r\n\r\n var ShapePathInterface = function () {\r\n return function pathInterfaceFactory(shape, view, propertyGroup) {\r\n var prop = view.sh;\r\n\r\n function interfaceFunction(val) {\r\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\r\n return interfaceFunction.path;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n path: {\r\n get: function get() {\r\n if (prop.k) {\r\n prop.getValue();\r\n }\r\n\r\n return prop;\r\n }\r\n },\r\n shape: {\r\n get: function get() {\r\n if (prop.k) {\r\n prop.getValue();\r\n }\r\n\r\n return prop;\r\n }\r\n },\r\n _name: {\r\n value: shape.nm\r\n },\r\n ix: {\r\n value: shape.ix\r\n },\r\n propertyIndex: {\r\n value: shape.ix\r\n },\r\n mn: {\r\n value: shape.mn\r\n },\r\n propertyGroup: {\r\n value: propertyGroup\r\n }\r\n });\r\n return interfaceFunction;\r\n };\r\n }();\r\n\r\n var ShapeExpressionInterface = function () {\r\n function iterateElements(shapes, view, propertyGroup) {\r\n var arr = [];\r\n var i;\r\n var len = shapes ? shapes.length : 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (shapes[i].ty === 'gr') {\r\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'fl') {\r\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'st') {\r\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'tm') {\r\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\r\n } else if (shapes[i].ty === 'el') {\r\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'sr') {\r\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'sh') {\r\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rc') {\r\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rd') {\r\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rp') {\r\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'gf') {\r\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else {\r\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n }\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n function contentsInterfaceFactory(shape, view, propertyGroup) {\r\n var interfaces;\r\n\r\n var interfaceFunction = function _interfaceFunction(value) {\r\n var i = 0;\r\n var len = interfaces.length;\r\n\r\n while (i < len) {\r\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\r\n return interfaces[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n return interfaces[value - 1];\r\n }\r\n\r\n return null;\r\n };\r\n\r\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\r\n interfaceFunction.numProperties = interfaces.length;\r\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\r\n interfaceFunction.transform = transformInterface;\r\n interfaceFunction.propertyIndex = shape.cix;\r\n interfaceFunction._name = shape.nm;\r\n return interfaceFunction;\r\n }\r\n\r\n function groupInterfaceFactory(shape, view, propertyGroup) {\r\n var interfaceFunction = function _interfaceFunction(value) {\r\n switch (value) {\r\n case 'ADBE Vectors Group':\r\n case 'Contents':\r\n case 2:\r\n return interfaceFunction.content;\r\n // Not necessary for now. Keeping them here in case a new case appears\r\n // case 'ADBE Vector Transform Group':\r\n // case 3:\r\n\r\n default:\r\n return interfaceFunction.transform;\r\n }\r\n };\r\n\r\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\r\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\r\n interfaceFunction.content = content;\r\n interfaceFunction.transform = transformInterface;\r\n Object.defineProperty(interfaceFunction, '_name', {\r\n get: function get() {\r\n return shape.nm;\r\n }\r\n }); // interfaceFunction.content = interfaceFunction;\r\n\r\n interfaceFunction.numProperties = shape.np;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n interfaceFunction.nm = shape.nm;\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function fillInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(val) {\r\n if (val === 'Color' || val === 'color') {\r\n return interfaceFunction.color;\r\n }\r\n\r\n if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n color: {\r\n get: ExpressionPropertyInterface(view.c)\r\n },\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.o)\r\n },\r\n _name: {\r\n value: shape.nm\r\n },\r\n mn: {\r\n value: shape.mn\r\n }\r\n });\r\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\r\n return interfaceFunction;\r\n }\r\n\r\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(val) {\r\n if (val === 'Start Point' || val === 'start point') {\r\n return interfaceFunction.startPoint;\r\n }\r\n\r\n if (val === 'End Point' || val === 'end point') {\r\n return interfaceFunction.endPoint;\r\n }\r\n\r\n if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n startPoint: {\r\n get: ExpressionPropertyInterface(view.s)\r\n },\r\n endPoint: {\r\n get: ExpressionPropertyInterface(view.e)\r\n },\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.o)\r\n },\r\n type: {\r\n get: function get() {\r\n return 'a';\r\n }\r\n },\r\n _name: {\r\n value: shape.nm\r\n },\r\n mn: {\r\n value: shape.mn\r\n }\r\n });\r\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\r\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\r\n return interfaceFunction;\r\n }\r\n\r\n function defaultInterfaceFactory() {\r\n function interfaceFunction() {\r\n return null;\r\n }\r\n\r\n return interfaceFunction;\r\n }\r\n\r\n function strokeInterfaceFactory(shape, view, propertyGroup) {\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\r\n\r\n function addPropertyToDashOb(i) {\r\n Object.defineProperty(dashOb, shape.d[i].nm, {\r\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\r\n });\r\n }\r\n\r\n var i;\r\n var len = shape.d ? shape.d.length : 0;\r\n var dashOb = {};\r\n\r\n for (i = 0; i < len; i += 1) {\r\n addPropertyToDashOb(i);\r\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\r\n }\r\n\r\n function interfaceFunction(val) {\r\n if (val === 'Color' || val === 'color') {\r\n return interfaceFunction.color;\r\n }\r\n\r\n if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n\r\n if (val === 'Stroke Width' || val === 'stroke width') {\r\n return interfaceFunction.strokeWidth;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n color: {\r\n get: ExpressionPropertyInterface(view.c)\r\n },\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.o)\r\n },\r\n strokeWidth: {\r\n get: ExpressionPropertyInterface(view.w)\r\n },\r\n dash: {\r\n get: function get() {\r\n return dashOb;\r\n }\r\n },\r\n _name: {\r\n value: shape.nm\r\n },\r\n mn: {\r\n value: shape.mn\r\n }\r\n });\r\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\r\n return interfaceFunction;\r\n }\r\n\r\n function trimInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(val) {\r\n if (val === shape.e.ix || val === 'End' || val === 'end') {\r\n return interfaceFunction.end;\r\n }\r\n\r\n if (val === shape.s.ix) {\r\n return interfaceFunction.start;\r\n }\r\n\r\n if (val === shape.o.ix) {\r\n return interfaceFunction.offset;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n interfaceFunction.propertyIndex = shape.ix;\r\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\r\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\r\n interfaceFunction.propertyIndex = shape.ix;\r\n interfaceFunction.propertyGroup = propertyGroup;\r\n Object.defineProperties(interfaceFunction, {\r\n start: {\r\n get: ExpressionPropertyInterface(view.s)\r\n },\r\n end: {\r\n get: ExpressionPropertyInterface(view.e)\r\n },\r\n offset: {\r\n get: ExpressionPropertyInterface(view.o)\r\n },\r\n _name: {\r\n value: shape.nm\r\n }\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function transformInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.a.ix === value || value === 'Anchor Point') {\r\n return interfaceFunction.anchorPoint;\r\n }\r\n\r\n if (shape.o.ix === value || value === 'Opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n\r\n if (shape.p.ix === value || value === 'Position') {\r\n return interfaceFunction.position;\r\n }\r\n\r\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\r\n return interfaceFunction.rotation;\r\n }\r\n\r\n if (shape.s.ix === value || value === 'Scale') {\r\n return interfaceFunction.scale;\r\n }\r\n\r\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\r\n return interfaceFunction.skew;\r\n }\r\n\r\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\r\n return interfaceFunction.skewAxis;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\r\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\r\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n\r\n if (view.transform.mProps.sk) {\r\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\r\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\r\n }\r\n\r\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.o)\r\n },\r\n position: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.p)\r\n },\r\n anchorPoint: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.a)\r\n },\r\n scale: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.s)\r\n },\r\n rotation: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.r)\r\n },\r\n skew: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.sk)\r\n },\r\n skewAxis: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.sa)\r\n },\r\n _name: {\r\n value: shape.nm\r\n }\r\n });\r\n interfaceFunction.ty = 'tr';\r\n interfaceFunction.mn = shape.mn;\r\n interfaceFunction.propertyGroup = propertyGroup;\r\n return interfaceFunction;\r\n }\r\n\r\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n\r\n if (shape.s.ix === value) {\r\n return interfaceFunction.size;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n interfaceFunction.propertyIndex = shape.ix;\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n size: {\r\n get: ExpressionPropertyInterface(prop.s)\r\n },\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p)\r\n },\r\n _name: {\r\n value: shape.nm\r\n }\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function starInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n\r\n if (shape.r.ix === value) {\r\n return interfaceFunction.rotation;\r\n }\r\n\r\n if (shape.pt.ix === value) {\r\n return interfaceFunction.points;\r\n }\r\n\r\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\r\n return interfaceFunction.outerRadius;\r\n }\r\n\r\n if (shape.os.ix === value) {\r\n return interfaceFunction.outerRoundness;\r\n }\r\n\r\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\r\n return interfaceFunction.innerRadius;\r\n }\r\n\r\n if (shape.is && shape.is.ix === value) {\r\n return interfaceFunction.innerRoundness;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\r\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\r\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n\r\n if (shape.ir) {\r\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\r\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\r\n }\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p)\r\n },\r\n rotation: {\r\n get: ExpressionPropertyInterface(prop.r)\r\n },\r\n points: {\r\n get: ExpressionPropertyInterface(prop.pt)\r\n },\r\n outerRadius: {\r\n get: ExpressionPropertyInterface(prop.or)\r\n },\r\n outerRoundness: {\r\n get: ExpressionPropertyInterface(prop.os)\r\n },\r\n innerRadius: {\r\n get: ExpressionPropertyInterface(prop.ir)\r\n },\r\n innerRoundness: {\r\n get: ExpressionPropertyInterface(prop.is)\r\n },\r\n _name: {\r\n value: shape.nm\r\n }\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function rectInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n\r\n if (shape.r.ix === value) {\r\n return interfaceFunction.roundness;\r\n }\r\n\r\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\r\n return interfaceFunction.size;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\r\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p)\r\n },\r\n roundness: {\r\n get: ExpressionPropertyInterface(prop.r)\r\n },\r\n size: {\r\n get: ExpressionPropertyInterface(prop.s)\r\n },\r\n _name: {\r\n value: shape.nm\r\n }\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function roundedInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.r.ix === value || value === 'Round Corners 1') {\r\n return interfaceFunction.radius;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n var prop = view;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n radius: {\r\n get: ExpressionPropertyInterface(prop.rd)\r\n },\r\n _name: {\r\n value: shape.nm\r\n }\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.c.ix === value || value === 'Copies') {\r\n return interfaceFunction.copies;\r\n }\r\n\r\n if (shape.o.ix === value || value === 'Offset') {\r\n return interfaceFunction.offset;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n var prop = view;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\r\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n copies: {\r\n get: ExpressionPropertyInterface(prop.c)\r\n },\r\n offset: {\r\n get: ExpressionPropertyInterface(prop.o)\r\n },\r\n _name: {\r\n value: shape.nm\r\n }\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n return function (shapes, view, propertyGroup) {\r\n var interfaces;\r\n\r\n function _interfaceFunction(value) {\r\n if (typeof value === 'number') {\r\n value = value === undefined ? 1 : value;\r\n\r\n if (value === 0) {\r\n return propertyGroup;\r\n }\r\n\r\n return interfaces[value - 1];\r\n }\r\n\r\n var i = 0;\r\n var len = interfaces.length;\r\n\r\n while (i < len) {\r\n if (interfaces[i]._name === value) {\r\n return interfaces[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function parentGroupWrapper() {\r\n return propertyGroup;\r\n }\r\n\r\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\r\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\r\n _interfaceFunction.numProperties = interfaces.length;\r\n _interfaceFunction._name = 'Contents';\r\n return _interfaceFunction;\r\n };\r\n }();\r\n\r\n var TextExpressionInterface = function () {\r\n return function (elem) {\r\n var _prevValue;\r\n\r\n var _sourceText;\r\n\r\n function _thisLayerFunction(name) {\r\n switch (name) {\r\n case 'ADBE Text Document':\r\n return _thisLayerFunction.sourceText;\r\n\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\r\n get: function get() {\r\n elem.textProperty.getValue();\r\n var stringValue = elem.textProperty.currentData.t;\r\n\r\n if (stringValue !== _prevValue) {\r\n elem.textProperty.currentData.t = _prevValue;\r\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\r\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\r\n\r\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\r\n }\r\n\r\n return _sourceText;\r\n }\r\n });\r\n return _thisLayerFunction;\r\n };\r\n }();\r\n\r\n function _typeof$2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\r\n\r\n var FootageInterface = function () {\r\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\r\n var currentPropertyName = '';\r\n var currentProperty = elem.getFootageData();\r\n\r\n function init() {\r\n currentPropertyName = '';\r\n currentProperty = elem.getFootageData();\r\n return searchProperty;\r\n }\r\n\r\n function searchProperty(value) {\r\n if (currentProperty[value]) {\r\n currentPropertyName = value;\r\n currentProperty = currentProperty[value];\r\n\r\n if (_typeof$2(currentProperty) === 'object') {\r\n return searchProperty;\r\n }\r\n\r\n return currentProperty;\r\n }\r\n\r\n var propertyNameIndex = value.indexOf(currentPropertyName);\r\n\r\n if (propertyNameIndex !== -1) {\r\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\r\n currentProperty = currentProperty[index];\r\n\r\n if (_typeof$2(currentProperty) === 'object') {\r\n return searchProperty;\r\n }\r\n\r\n return currentProperty;\r\n }\r\n\r\n return '';\r\n }\r\n\r\n return init;\r\n };\r\n\r\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\r\n function interfaceFunction(value) {\r\n if (value === 'Outline') {\r\n return interfaceFunction.outlineInterface();\r\n }\r\n\r\n return null;\r\n }\r\n\r\n interfaceFunction._name = 'Outline';\r\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\r\n return interfaceFunction;\r\n };\r\n\r\n return function (elem) {\r\n function _interfaceFunction(value) {\r\n if (value === 'Data') {\r\n return _interfaceFunction.dataInterface;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n _interfaceFunction._name = 'Data';\r\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\r\n return _interfaceFunction;\r\n };\r\n }();\r\n\r\n var interfaces = {\r\n layer: LayerExpressionInterface,\r\n effects: EffectsExpressionInterface,\r\n comp: CompExpressionInterface,\r\n shape: ShapeExpressionInterface,\r\n text: TextExpressionInterface,\r\n footage: FootageInterface\r\n };\r\n\r\n function getInterface(type) {\r\n return interfaces[type] || null;\r\n }\r\n\r\n function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\r\n\r\n /* eslint-disable */\r\n\r\n /*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\r\n function seedRandom(pool, math) {\r\n //\r\n // The following constants are related to IEEE 754 limits.\r\n //\r\n var global = this,\r\n width = 256,\r\n // each RC4 output is 0 <= x < 256\r\n chunks = 6,\r\n // at least six RC4 outputs for each double\r\n digits = 52,\r\n // there are 52 significant digits in a double\r\n rngname = 'random',\r\n // rngname: name for Math.random and Math.seedrandom\r\n startdenom = math.pow(width, chunks),\r\n significance = math.pow(2, digits),\r\n overflow = significance * 2,\r\n mask = width - 1,\r\n nodecrypto; // node.js crypto module, initialized at the bottom.\r\n //\r\n // seedrandom()\r\n // This is the seedrandom function described above.\r\n //\r\n\r\n function seedrandom(seed, options, callback) {\r\n var key = [];\r\n options = options === true ? {\r\n entropy: true\r\n } : options || {}; // Flatten the seed string or build one from local entropy if needed.\r\n\r\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\r\n\r\n var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\r\n // randomness in every bit of the mantissa of the IEEE 754 value.\r\n\r\n var prng = function prng() {\r\n var n = arc4.g(chunks),\r\n // Start with a numerator n < 2 ^ 48\r\n d = startdenom,\r\n // and denominator d = 2 ^ 48.\r\n x = 0; // and no 'extra last byte'.\r\n\r\n while (n < significance) {\r\n // Fill up all significant digits by\r\n n = (n + x) * width; // shifting numerator and\r\n\r\n d *= width; // denominator and generating a\r\n\r\n x = arc4.g(1); // new least-significant-byte.\r\n }\r\n\r\n while (n >= overflow) {\r\n // To avoid rounding up, before adding\r\n n /= 2; // last byte, shift everything\r\n\r\n d /= 2; // right using integer math until\r\n\r\n x >>>= 1; // we have exactly the desired bits.\r\n }\r\n\r\n return (n + x) / d; // Form the number within [0, 1).\r\n };\r\n\r\n prng.int32 = function () {\r\n return arc4.g(4) | 0;\r\n };\r\n\r\n prng.quick = function () {\r\n return arc4.g(4) / 0x100000000;\r\n };\r\n\r\n prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\r\n\r\n mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\r\n\r\n return (options.pass || callback || function (prng, seed, is_math_call, state) {\r\n if (state) {\r\n // Load the arc4 state from the given state if it has an S array.\r\n if (state.S) {\r\n copy(state, arc4);\r\n } // Only provide the .state method if requested via options.state.\r\n\r\n\r\n prng.state = function () {\r\n return copy(arc4, {});\r\n };\r\n } // If called as a method of Math (Math.seedrandom()), mutate\r\n // Math.random because that is how seedrandom.js has worked since v1.0.\r\n\r\n\r\n if (is_math_call) {\r\n math[rngname] = prng;\r\n return seed;\r\n } // Otherwise, it is a newer calling convention, so return the\r\n // prng directly.\r\n else return prng;\r\n })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\r\n }\r\n\r\n math['seed' + rngname] = seedrandom; //\r\n // ARC4\r\n //\r\n // An ARC4 implementation. The constructor takes a key in the form of\r\n // an array of at most (width) integers that should be 0 <= x < (width).\r\n //\r\n // The g(count) method returns a pseudorandom integer that concatenates\r\n // the next (count) outputs from ARC4. Its return value is a number x\r\n // that is in the range 0 <= x < (width ^ count).\r\n //\r\n\r\n function ARC4(key) {\r\n var t,\r\n keylen = key.length,\r\n me = this,\r\n i = 0,\r\n j = me.i = me.j = 0,\r\n s = me.S = []; // The empty key [] is treated as [0].\r\n\r\n if (!keylen) {\r\n key = [keylen++];\r\n } // Set up S using the standard key scheduling algorithm.\r\n\r\n\r\n while (i < width) {\r\n s[i] = i++;\r\n }\r\n\r\n for (i = 0; i < width; i++) {\r\n s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\r\n s[j] = t;\r\n } // The \"g\" method returns the next (count) outputs as one number.\r\n\r\n\r\n me.g = function (count) {\r\n // Using instance members instead of closure state nearly doubles speed.\r\n var t,\r\n r = 0,\r\n i = me.i,\r\n j = me.j,\r\n s = me.S;\r\n\r\n while (count--) {\r\n t = s[i = mask & i + 1];\r\n r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\r\n }\r\n\r\n me.i = i;\r\n me.j = j;\r\n return r; // For robust unpredictability, the function call below automatically\r\n // discards an initial batch of values. This is called RC4-drop[256].\r\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\r\n };\r\n } //\r\n // copy()\r\n // Copies internal state of ARC4 to or from a plain object.\r\n //\r\n\r\n\r\n function copy(f, t) {\r\n t.i = f.i;\r\n t.j = f.j;\r\n t.S = f.S.slice();\r\n return t;\r\n } //\r\n // flatten()\r\n // Converts an object tree to nested arrays of strings.\r\n //\r\n\r\n\r\n function flatten(obj, depth) {\r\n var result = [],\r\n typ = _typeof$1(obj),\r\n prop;\r\n\r\n if (depth && typ == 'object') {\r\n for (prop in obj) {\r\n try {\r\n result.push(flatten(obj[prop], depth - 1));\r\n } catch (e) {}\r\n }\r\n }\r\n\r\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\r\n } //\r\n // mixkey()\r\n // Mixes a string seed into a key that is an array of integers, and\r\n // returns a shortened string seed that is equivalent to the result key.\r\n //\r\n\r\n\r\n function mixkey(seed, key) {\r\n var stringseed = seed + '',\r\n smear,\r\n j = 0;\r\n\r\n while (j < stringseed.length) {\r\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\r\n }\r\n\r\n return tostring(key);\r\n } //\r\n // autoseed()\r\n // Returns an object for autoseeding, using window.crypto and Node crypto\r\n // module if available.\r\n //\r\n\r\n\r\n function autoseed() {\r\n try {\r\n if (nodecrypto) {\r\n return tostring(nodecrypto.randomBytes(width));\r\n }\r\n\r\n var out = new Uint8Array(width);\r\n (global.crypto || global.msCrypto).getRandomValues(out);\r\n return tostring(out);\r\n } catch (e) {\r\n var browser = global.navigator,\r\n plugins = browser && browser.plugins;\r\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\r\n }\r\n } //\r\n // tostring()\r\n // Converts an array of charcodes to a string\r\n //\r\n\r\n\r\n function tostring(a) {\r\n return String.fromCharCode.apply(0, a);\r\n } //\r\n // When seedrandom.js is loaded, we immediately mix a few bits\r\n // from the built-in RNG into the entropy pool. Because we do\r\n // not want to interfere with deterministic PRNG state later,\r\n // seedrandom will not call math.random on its own again after\r\n // initialization.\r\n //\r\n\r\n\r\n mixkey(math.random(), pool); //\r\n // Nodejs and AMD support: export the implementation as a module using\r\n // either convention.\r\n //\r\n // End anonymous scope, and pass initial values.\r\n }\r\n\r\n ;\r\n\r\n function initialize$2(BMMath) {\r\n seedRandom([], BMMath);\r\n }\r\n\r\n var propTypes = {\r\n SHAPE: 'shape'\r\n };\r\n\r\n function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\r\n\r\n var ExpressionManager = function () {\r\n 'use strict';\r\n\r\n var ob = {};\r\n var Math = BMMath;\r\n var window = null;\r\n var document = null;\r\n var XMLHttpRequest = null;\r\n var fetch = null;\r\n var frames = null;\r\n initialize$2(BMMath);\r\n\r\n function $bm_isInstanceOfArray(arr) {\r\n return arr.constructor === Array || arr.constructor === Float32Array;\r\n }\r\n\r\n function isNumerable(tOfV, v) {\r\n return tOfV === 'number' || tOfV === 'boolean' || tOfV === 'string' || v instanceof Number;\r\n }\r\n\r\n function $bm_neg(a) {\r\n var tOfA = _typeof(a);\r\n\r\n if (tOfA === 'number' || tOfA === 'boolean' || a instanceof Number) {\r\n return -a;\r\n }\r\n\r\n if ($bm_isInstanceOfArray(a)) {\r\n var i;\r\n var lenA = a.length;\r\n var retArr = [];\r\n\r\n for (i = 0; i < lenA; i += 1) {\r\n retArr[i] = -a[i];\r\n }\r\n\r\n return retArr;\r\n }\r\n\r\n if (a.propType) {\r\n return a.v;\r\n }\r\n\r\n return -a;\r\n }\r\n\r\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\r\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\r\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\r\n\r\n function sum(a, b) {\r\n var tOfA = _typeof(a);\r\n\r\n var tOfB = _typeof(b);\r\n\r\n if (tOfA === 'string' || tOfB === 'string') {\r\n return a + b;\r\n }\r\n\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a + b;\r\n }\r\n\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n a = a.slice(0);\r\n a[0] += b;\r\n return a;\r\n }\r\n\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n b = b.slice(0);\r\n b[0] = a + b[0];\r\n return b;\r\n }\r\n\r\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\r\n var i = 0;\r\n var lenA = a.length;\r\n var lenB = b.length;\r\n var retArr = [];\r\n\r\n while (i < lenA || i < lenB) {\r\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\r\n retArr[i] = a[i] + b[i];\r\n } else {\r\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return retArr;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n var add = sum;\r\n\r\n function sub(a, b) {\r\n var tOfA = _typeof(a);\r\n\r\n var tOfB = _typeof(b);\r\n\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n if (tOfA === 'string') {\r\n a = parseInt(a, 10);\r\n }\r\n\r\n if (tOfB === 'string') {\r\n b = parseInt(b, 10);\r\n }\r\n\r\n return a - b;\r\n }\r\n\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n a = a.slice(0);\r\n a[0] -= b;\r\n return a;\r\n }\r\n\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n b = b.slice(0);\r\n b[0] = a - b[0];\r\n return b;\r\n }\r\n\r\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\r\n var i = 0;\r\n var lenA = a.length;\r\n var lenB = b.length;\r\n var retArr = [];\r\n\r\n while (i < lenA || i < lenB) {\r\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\r\n retArr[i] = a[i] - b[i];\r\n } else {\r\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return retArr;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n function mul(a, b) {\r\n var tOfA = _typeof(a);\r\n\r\n var tOfB = _typeof(b);\r\n\r\n var arr;\r\n\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a * b;\r\n }\r\n\r\n var i;\r\n var len;\r\n\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n len = a.length;\r\n arr = createTypedArray('float32', len);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a[i] * b;\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n len = b.length;\r\n arr = createTypedArray('float32', len);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a * b[i];\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n function div(a, b) {\r\n var tOfA = _typeof(a);\r\n\r\n var tOfB = _typeof(b);\r\n\r\n var arr;\r\n\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a / b;\r\n }\r\n\r\n var i;\r\n var len;\r\n\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n len = a.length;\r\n arr = createTypedArray('float32', len);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a[i] / b;\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n len = b.length;\r\n arr = createTypedArray('float32', len);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a / b[i];\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n function mod(a, b) {\r\n if (typeof a === 'string') {\r\n a = parseInt(a, 10);\r\n }\r\n\r\n if (typeof b === 'string') {\r\n b = parseInt(b, 10);\r\n }\r\n\r\n return a % b;\r\n }\r\n\r\n var $bm_sum = sum;\r\n var $bm_sub = sub;\r\n var $bm_mul = mul;\r\n var $bm_div = div;\r\n var $bm_mod = mod;\r\n\r\n function clamp(num, min, max) {\r\n if (min > max) {\r\n var mm = max;\r\n max = min;\r\n min = mm;\r\n }\r\n\r\n return Math.min(Math.max(num, min), max);\r\n }\r\n\r\n function radiansToDegrees(val) {\r\n return val / degToRads;\r\n }\r\n\r\n var radians_to_degrees = radiansToDegrees;\r\n\r\n function degreesToRadians(val) {\r\n return val * degToRads;\r\n }\r\n\r\n var degrees_to_radians = radiansToDegrees;\r\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\r\n\r\n function length(arr1, arr2) {\r\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\r\n arr2 = arr2 || 0;\r\n return Math.abs(arr1 - arr2);\r\n }\r\n\r\n if (!arr2) {\r\n arr2 = helperLengthArray;\r\n }\r\n\r\n var i;\r\n var len = Math.min(arr1.length, arr2.length);\r\n var addedLength = 0;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\r\n }\r\n\r\n return Math.sqrt(addedLength);\r\n }\r\n\r\n function normalize(vec) {\r\n return div(vec, length(vec));\r\n }\r\n\r\n function rgbToHsl(val) {\r\n var r = val[0];\r\n var g = val[1];\r\n var b = val[2];\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var h;\r\n var s;\r\n var l = (max + min) / 2;\r\n\r\n if (max === min) {\r\n h = 0; // achromatic\r\n\r\n s = 0; // achromatic\r\n } else {\r\n var d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n\r\n switch (max) {\r\n case r:\r\n h = (g - b) / d + (g < b ? 6 : 0);\r\n break;\r\n\r\n case g:\r\n h = (b - r) / d + 2;\r\n break;\r\n\r\n case b:\r\n h = (r - g) / d + 4;\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n h /= 6;\r\n }\r\n\r\n return [h, s, l, val[3]];\r\n }\r\n\r\n function hue2rgb(p, q, t) {\r\n if (t < 0) t += 1;\r\n if (t > 1) t -= 1;\r\n if (t < 1 / 6) return p + (q - p) * 6 * t;\r\n if (t < 1 / 2) return q;\r\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\r\n return p;\r\n }\r\n\r\n function hslToRgb(val) {\r\n var h = val[0];\r\n var s = val[1];\r\n var l = val[2];\r\n var r;\r\n var g;\r\n var b;\r\n\r\n if (s === 0) {\r\n r = l; // achromatic\r\n\r\n b = l; // achromatic\r\n\r\n g = l; // achromatic\r\n } else {\r\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n var p = 2 * l - q;\r\n r = hue2rgb(p, q, h + 1 / 3);\r\n g = hue2rgb(p, q, h);\r\n b = hue2rgb(p, q, h - 1 / 3);\r\n }\r\n\r\n return [r, g, b, val[3]];\r\n }\r\n\r\n function linear(t, tMin, tMax, value1, value2) {\r\n if (value1 === undefined || value2 === undefined) {\r\n value1 = tMin;\r\n value2 = tMax;\r\n tMin = 0;\r\n tMax = 1;\r\n }\r\n\r\n if (tMax < tMin) {\r\n var _tMin = tMax;\r\n tMax = tMin;\r\n tMin = _tMin;\r\n }\r\n\r\n if (t <= tMin) {\r\n return value1;\r\n }\r\n\r\n if (t >= tMax) {\r\n return value2;\r\n }\r\n\r\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\r\n\r\n if (!value1.length) {\r\n return value1 + (value2 - value1) * perc;\r\n }\r\n\r\n var i;\r\n var len = value1.length;\r\n var arr = createTypedArray('float32', len);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n function random(min, max) {\r\n if (max === undefined) {\r\n if (min === undefined) {\r\n min = 0;\r\n max = 1;\r\n } else {\r\n max = min;\r\n min = undefined;\r\n }\r\n }\r\n\r\n if (max.length) {\r\n var i;\r\n var len = max.length;\r\n\r\n if (!min) {\r\n min = createTypedArray('float32', len);\r\n }\r\n\r\n var arr = createTypedArray('float32', len);\r\n var rnd = BMMath.random();\r\n\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = min[i] + rnd * (max[i] - min[i]);\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n if (min === undefined) {\r\n min = 0;\r\n }\r\n\r\n var rndm = BMMath.random();\r\n return min + rndm * (max - min);\r\n }\r\n\r\n function createPath(points, inTangents, outTangents, closed) {\r\n var i;\r\n var len = points.length;\r\n var path = shapePool.newElement();\r\n path.setPathData(!!closed, len);\r\n var arrPlaceholder = [0, 0];\r\n var inVertexPoint;\r\n var outVertexPoint;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\r\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\r\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\r\n }\r\n\r\n return path;\r\n }\r\n\r\n function initiateExpression(elem, data, property) {\r\n // Bail out if we don't want expressions\r\n function noOp(_value) {\r\n return _value;\r\n }\r\n\r\n if (!elem.globalData.renderConfig.runExpressions) {\r\n return noOp;\r\n }\r\n\r\n var val = data.x;\r\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\r\n\r\n var _needsRandom = val.indexOf('random') !== -1;\r\n\r\n var elemType = elem.data.ty;\r\n var transform;\r\n var $bm_transform;\r\n var content;\r\n var effect;\r\n var thisProperty = property;\r\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\r\n Object.defineProperty(thisProperty, 'value', {\r\n get: function get() {\r\n return thisProperty.v;\r\n }\r\n });\r\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\r\n elem.comp.displayStartTime = 0;\r\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\r\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\r\n var width = elem.data.sw ? elem.data.sw : 0;\r\n var height = elem.data.sh ? elem.data.sh : 0;\r\n var name = elem.data.nm;\r\n var loopIn;\r\n var loop_in;\r\n var loopOut;\r\n var loop_out;\r\n var smooth;\r\n var toWorld;\r\n var fromWorld;\r\n var fromComp;\r\n var toComp;\r\n var fromCompToSurface;\r\n var position;\r\n var rotation;\r\n var anchorPoint;\r\n var scale;\r\n var thisLayer;\r\n var thisComp;\r\n var mask;\r\n var valueAtTime;\r\n var velocityAtTime;\r\n var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\r\n\r\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\r\n\r\n var numKeys = property.kf ? data.k.length : 0;\r\n var active = !this.data || this.data.hd !== true;\r\n\r\n var wiggle = function wiggle(freq, amp) {\r\n var iWiggle;\r\n var j;\r\n var lenWiggle = this.pv.length ? this.pv.length : 1;\r\n var addedAmps = createTypedArray('float32', lenWiggle);\r\n freq = 5;\r\n var iterations = Math.floor(time * freq);\r\n iWiggle = 0;\r\n j = 0;\r\n\r\n while (iWiggle < iterations) {\r\n // var rnd = BMMath.random();\r\n for (j = 0; j < lenWiggle; j += 1) {\r\n addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\r\n }\r\n\r\n iWiggle += 1;\r\n } // var rnd2 = BMMath.random();\r\n\r\n\r\n var periods = time * freq;\r\n var perc = periods - Math.floor(periods);\r\n var arr = createTypedArray('float32', lenWiggle);\r\n\r\n if (lenWiggle > 1) {\r\n for (j = 0; j < lenWiggle; j += 1) {\r\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\r\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\r\n }.bind(this);\r\n\r\n if (thisProperty.loopIn) {\r\n loopIn = thisProperty.loopIn.bind(thisProperty);\r\n loop_in = loopIn;\r\n }\r\n\r\n if (thisProperty.loopOut) {\r\n loopOut = thisProperty.loopOut.bind(thisProperty);\r\n loop_out = loopOut;\r\n }\r\n\r\n if (thisProperty.smooth) {\r\n smooth = thisProperty.smooth.bind(thisProperty);\r\n }\r\n\r\n function loopInDuration(type, duration) {\r\n return loopIn(type, duration, true);\r\n }\r\n\r\n function loopOutDuration(type, duration) {\r\n return loopOut(type, duration, true);\r\n }\r\n\r\n if (this.getValueAtTime) {\r\n valueAtTime = this.getValueAtTime.bind(this);\r\n }\r\n\r\n if (this.getVelocityAtTime) {\r\n velocityAtTime = this.getVelocityAtTime.bind(this);\r\n }\r\n\r\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\r\n\r\n function lookAt(elem1, elem2) {\r\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\r\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\r\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\r\n return [yaw, pitch, 0];\r\n }\r\n\r\n function easeOut(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function easeIn(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function ease(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function applyEase(fn, t, tMin, tMax, val1, val2) {\r\n if (val1 === undefined) {\r\n val1 = tMin;\r\n val2 = tMax;\r\n } else {\r\n t = (t - tMin) / (tMax - tMin);\r\n }\r\n\r\n if (t > 1) {\r\n t = 1;\r\n } else if (t < 0) {\r\n t = 0;\r\n }\r\n\r\n var mult = fn(t);\r\n\r\n if ($bm_isInstanceOfArray(val1)) {\r\n var iKey;\r\n var lenKey = val1.length;\r\n var arr = createTypedArray('float32', lenKey);\r\n\r\n for (iKey = 0; iKey < lenKey; iKey += 1) {\r\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n return (val2 - val1) * mult + val1;\r\n }\r\n\r\n function nearestKey(time) {\r\n var iKey;\r\n var lenKey = data.k.length;\r\n var index;\r\n var keyTime;\r\n\r\n if (!data.k.length || typeof data.k[0] === 'number') {\r\n index = 0;\r\n keyTime = 0;\r\n } else {\r\n index = -1;\r\n time *= elem.comp.globalData.frameRate;\r\n\r\n if (time < data.k[0].t) {\r\n index = 1;\r\n keyTime = data.k[0].t;\r\n } else {\r\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\r\n if (time === data.k[iKey].t) {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n break;\r\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\r\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\r\n index = iKey + 2;\r\n keyTime = data.k[iKey + 1].t;\r\n } else {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n }\r\n\r\n break;\r\n }\r\n }\r\n\r\n if (index === -1) {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n }\r\n }\r\n }\r\n\r\n var obKey = {};\r\n obKey.index = index;\r\n obKey.time = keyTime / elem.comp.globalData.frameRate;\r\n return obKey;\r\n }\r\n\r\n function key(ind) {\r\n var obKey;\r\n var iKey;\r\n var lenKey;\r\n\r\n if (!data.k.length || typeof data.k[0] === 'number') {\r\n throw new Error('The property has no keyframe at index ' + ind);\r\n }\r\n\r\n ind -= 1;\r\n obKey = {\r\n time: data.k[ind].t / elem.comp.globalData.frameRate,\r\n value: []\r\n };\r\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\r\n lenKey = arr.length;\r\n\r\n for (iKey = 0; iKey < lenKey; iKey += 1) {\r\n obKey[iKey] = arr[iKey];\r\n obKey.value[iKey] = arr[iKey];\r\n }\r\n\r\n return obKey;\r\n }\r\n\r\n function framesToTime(fr, fps) {\r\n if (!fps) {\r\n fps = elem.comp.globalData.frameRate;\r\n }\r\n\r\n return fr / fps;\r\n }\r\n\r\n function timeToFrames(t, fps) {\r\n if (!t && t !== 0) {\r\n t = time;\r\n }\r\n\r\n if (!fps) {\r\n fps = elem.comp.globalData.frameRate;\r\n }\r\n\r\n return t * fps;\r\n }\r\n\r\n function seedRandom(seed) {\r\n BMMath.seedrandom(randSeed + seed);\r\n }\r\n\r\n function sourceRectAtTime() {\r\n return elem.sourceRectAtTime();\r\n }\r\n\r\n function substring(init, end) {\r\n if (typeof value === 'string') {\r\n if (end === undefined) {\r\n return value.substring(init);\r\n }\r\n\r\n return value.substring(init, end);\r\n }\r\n\r\n return '';\r\n }\r\n\r\n function substr(init, end) {\r\n if (typeof value === 'string') {\r\n if (end === undefined) {\r\n return value.substr(init);\r\n }\r\n\r\n return value.substr(init, end);\r\n }\r\n\r\n return '';\r\n }\r\n\r\n function posterizeTime(framesPerSecond) {\r\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\r\n value = valueAtTime(time);\r\n }\r\n\r\n var time;\r\n var velocity;\r\n var value;\r\n var text;\r\n var textIndex;\r\n var textTotal;\r\n var selectorValue;\r\n var index = elem.data.ind;\r\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\r\n var parent;\r\n var randSeed = Math.floor(Math.random() * 1000000);\r\n var globalData = elem.globalData;\r\n\r\n function executeExpression(_value) {\r\n // globalData.pushExpression();\r\n value = _value;\r\n\r\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\r\n return value;\r\n }\r\n\r\n if (this.propType === 'textSelector') {\r\n textIndex = this.textIndex;\r\n textTotal = this.textTotal;\r\n selectorValue = this.selectorValue;\r\n }\r\n\r\n if (!thisLayer) {\r\n text = elem.layerInterface.text;\r\n thisLayer = elem.layerInterface;\r\n thisComp = elem.comp.compInterface;\r\n toWorld = thisLayer.toWorld.bind(thisLayer);\r\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\r\n fromComp = thisLayer.fromComp.bind(thisLayer);\r\n toComp = thisLayer.toComp.bind(thisLayer);\r\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\r\n fromCompToSurface = fromComp;\r\n }\r\n\r\n if (!transform) {\r\n transform = elem.layerInterface('ADBE Transform Group');\r\n $bm_transform = transform;\r\n\r\n if (transform) {\r\n anchorPoint = transform.anchorPoint;\r\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\r\n }\r\n }\r\n\r\n if (elemType === 4 && !content) {\r\n content = thisLayer('ADBE Root Vectors Group');\r\n }\r\n\r\n if (!effect) {\r\n effect = thisLayer(4);\r\n }\r\n\r\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\r\n\r\n if (hasParent && !parent) {\r\n parent = elem.hierarchy[0].layerInterface;\r\n }\r\n\r\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\r\n\r\n if (_needsRandom) {\r\n seedRandom(randSeed + time);\r\n }\r\n\r\n if (needsVelocity) {\r\n velocity = velocityAtTime(time);\r\n }\r\n\r\n expression_function();\r\n this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\r\n // Changed this to a ternary operation because Rollup failed compiling it correctly\r\n\r\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\r\n return scoped_bm_rt;\r\n } // Bundlers will see these as dead code and unless we reference them\r\n\r\n\r\n executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\r\n return executeExpression;\r\n }\r\n\r\n ob.initiateExpression = initiateExpression;\r\n ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath];\r\n return ob;\r\n }();\r\n\r\n var expressionHelpers = function () {\r\n function searchExpressions(elem, data, prop) {\r\n if (data.x) {\r\n prop.k = true;\r\n prop.x = true;\r\n prop.initiateExpression = ExpressionManager.initiateExpression;\r\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\r\n }\r\n }\r\n\r\n function getValueAtTime(frameNum) {\r\n frameNum *= this.elem.globalData.frameRate;\r\n frameNum -= this.offsetTime;\r\n\r\n if (frameNum !== this._cachingAtTime.lastFrame) {\r\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\r\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\r\n this._cachingAtTime.lastFrame = frameNum;\r\n }\r\n\r\n return this._cachingAtTime.value;\r\n }\r\n\r\n function getSpeedAtTime(frameNum) {\r\n var delta = -0.01;\r\n var v1 = this.getValueAtTime(frameNum);\r\n var v2 = this.getValueAtTime(frameNum + delta);\r\n var speed = 0;\r\n\r\n if (v1.length) {\r\n var i;\r\n\r\n for (i = 0; i < v1.length; i += 1) {\r\n speed += Math.pow(v2[i] - v1[i], 2);\r\n }\r\n\r\n speed = Math.sqrt(speed) * 100;\r\n } else {\r\n speed = 0;\r\n }\r\n\r\n return speed;\r\n }\r\n\r\n function getVelocityAtTime(frameNum) {\r\n if (this.vel !== undefined) {\r\n return this.vel;\r\n }\r\n\r\n var delta = -0.001; // frameNum += this.elem.data.st;\r\n\r\n var v1 = this.getValueAtTime(frameNum);\r\n var v2 = this.getValueAtTime(frameNum + delta);\r\n var velocity;\r\n\r\n if (v1.length) {\r\n velocity = createTypedArray('float32', v1.length);\r\n var i;\r\n\r\n for (i = 0; i < v1.length; i += 1) {\r\n // removing frameRate\r\n // if needed, don't add it here\r\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\r\n velocity[i] = (v2[i] - v1[i]) / delta;\r\n }\r\n } else {\r\n velocity = (v2 - v1) / delta;\r\n }\r\n\r\n return velocity;\r\n }\r\n\r\n function getStaticValueAtTime() {\r\n return this.pv;\r\n }\r\n\r\n function setGroupProperty(propertyGroup) {\r\n this.propertyGroup = propertyGroup;\r\n }\r\n\r\n return {\r\n searchExpressions: searchExpressions,\r\n getSpeedAtTime: getSpeedAtTime,\r\n getVelocityAtTime: getVelocityAtTime,\r\n getValueAtTime: getValueAtTime,\r\n getStaticValueAtTime: getStaticValueAtTime,\r\n setGroupProperty: setGroupProperty\r\n };\r\n }();\r\n\r\n function addPropertyDecorator() {\r\n function loopOut(type, duration, durationFlag) {\r\n if (!this.k || !this.keyframes) {\r\n return this.pv;\r\n }\r\n\r\n type = type ? type.toLowerCase() : '';\r\n var currentFrame = this.comp.renderedFrame;\r\n var keyframes = this.keyframes;\r\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\r\n\r\n if (currentFrame <= lastKeyFrame) {\r\n return this.pv;\r\n }\r\n\r\n var cycleDuration;\r\n var firstKeyFrame;\r\n\r\n if (!durationFlag) {\r\n if (!duration || duration > keyframes.length - 1) {\r\n duration = keyframes.length - 1;\r\n }\r\n\r\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\r\n cycleDuration = lastKeyFrame - firstKeyFrame;\r\n } else {\r\n if (!duration) {\r\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\r\n } else {\r\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\r\n }\r\n\r\n firstKeyFrame = lastKeyFrame - cycleDuration;\r\n }\r\n\r\n var i;\r\n var len;\r\n var ret;\r\n\r\n if (type === 'pingpong') {\r\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\r\n\r\n if (iterations % 2 !== 0) {\r\n return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n }\r\n } else if (type === 'offset') {\r\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n\r\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\r\n\r\n if (this.pv.length) {\r\n ret = new Array(initV.length);\r\n len = ret.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n return (endV - initV) * repeats + current;\r\n } else if (type === 'continue') {\r\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\r\n\r\n if (this.pv.length) {\r\n ret = new Array(lastValue.length);\r\n len = ret.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\r\n }\r\n\r\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n }\r\n\r\n function loopIn(type, duration, durationFlag) {\r\n if (!this.k) {\r\n return this.pv;\r\n }\r\n\r\n type = type ? type.toLowerCase() : '';\r\n var currentFrame = this.comp.renderedFrame;\r\n var keyframes = this.keyframes;\r\n var firstKeyFrame = keyframes[0].t;\r\n\r\n if (currentFrame >= firstKeyFrame) {\r\n return this.pv;\r\n }\r\n\r\n var cycleDuration;\r\n var lastKeyFrame;\r\n\r\n if (!durationFlag) {\r\n if (!duration || duration > keyframes.length - 1) {\r\n duration = keyframes.length - 1;\r\n }\r\n\r\n lastKeyFrame = keyframes[duration].t;\r\n cycleDuration = lastKeyFrame - firstKeyFrame;\r\n } else {\r\n if (!duration) {\r\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\r\n } else {\r\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\r\n }\r\n\r\n lastKeyFrame = firstKeyFrame + cycleDuration;\r\n }\r\n\r\n var i;\r\n var len;\r\n var ret;\r\n\r\n if (type === 'pingpong') {\r\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\r\n\r\n if (iterations % 2 === 0) {\r\n return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n }\r\n } else if (type === 'offset') {\r\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\r\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\r\n\r\n if (this.pv.length) {\r\n ret = new Array(initV.length);\r\n len = ret.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n return current - (endV - initV) * repeats;\r\n } else if (type === 'continue') {\r\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\r\n\r\n if (this.pv.length) {\r\n ret = new Array(firstValue.length);\r\n len = ret.length;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\r\n }\r\n\r\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n }\r\n\r\n function smooth(width, samples) {\r\n if (!this.k) {\r\n return this.pv;\r\n }\r\n\r\n width = (width || 0.4) * 0.5;\r\n samples = Math.floor(samples || 5);\r\n\r\n if (samples <= 1) {\r\n return this.pv;\r\n }\r\n\r\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\r\n var initFrame = currentTime - width;\r\n var endFrame = currentTime + width;\r\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\r\n var i = 0;\r\n var j = 0;\r\n var value;\r\n\r\n if (this.pv.length) {\r\n value = createTypedArray('float32', this.pv.length);\r\n } else {\r\n value = 0;\r\n }\r\n\r\n var sampleValue;\r\n\r\n while (i < samples) {\r\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\r\n\r\n if (this.pv.length) {\r\n for (j = 0; j < this.pv.length; j += 1) {\r\n value[j] += sampleValue[j];\r\n }\r\n } else {\r\n value += sampleValue;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n if (this.pv.length) {\r\n for (j = 0; j < this.pv.length; j += 1) {\r\n value[j] /= samples;\r\n }\r\n } else {\r\n value /= samples;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n function getTransformValueAtTime(time) {\r\n if (!this._transformCachingAtTime) {\r\n this._transformCachingAtTime = {\r\n v: new Matrix()\r\n };\r\n } /// /\r\n\r\n\r\n var matrix = this._transformCachingAtTime.v;\r\n matrix.cloneFromProps(this.pre.props);\r\n\r\n if (this.appliedTransformations < 1) {\r\n var anchor = this.a.getValueAtTime(time);\r\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\r\n }\r\n\r\n if (this.appliedTransformations < 2) {\r\n var scale = this.s.getValueAtTime(time);\r\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\r\n }\r\n\r\n if (this.sk && this.appliedTransformations < 3) {\r\n var skew = this.sk.getValueAtTime(time);\r\n var skewAxis = this.sa.getValueAtTime(time);\r\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\r\n }\r\n\r\n if (this.r && this.appliedTransformations < 4) {\r\n var rotation = this.r.getValueAtTime(time);\r\n matrix.rotate(-rotation * this.r.mult);\r\n } else if (!this.r && this.appliedTransformations < 4) {\r\n var rotationZ = this.rz.getValueAtTime(time);\r\n var rotationY = this.ry.getValueAtTime(time);\r\n var rotationX = this.rx.getValueAtTime(time);\r\n var orientation = this.or.getValueAtTime(time);\r\n matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\r\n }\r\n\r\n if (this.data.p && this.data.p.s) {\r\n var positionX = this.px.getValueAtTime(time);\r\n var positionY = this.py.getValueAtTime(time);\r\n\r\n if (this.data.p.z) {\r\n var positionZ = this.pz.getValueAtTime(time);\r\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\r\n } else {\r\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\r\n }\r\n } else {\r\n var position = this.p.getValueAtTime(time);\r\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\r\n }\r\n\r\n return matrix; /// /\r\n }\r\n\r\n function getTransformStaticValueAtTime() {\r\n return this.v.clone(new Matrix());\r\n }\r\n\r\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\r\n\r\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\r\n var prop = getTransformProperty(elem, data, container);\r\n\r\n if (prop.dynamicProperties.length) {\r\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\r\n } else {\r\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\r\n }\r\n\r\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\r\n return prop;\r\n };\r\n\r\n var propertyGetProp = PropertyFactory.getProp;\r\n\r\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\r\n var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\r\n // prop.loopOut = loopOut;\r\n // prop.loopIn = loopIn;\r\n\r\n if (prop.kf) {\r\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\r\n } else {\r\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\r\n }\r\n\r\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\r\n prop.loopOut = loopOut;\r\n prop.loopIn = loopIn;\r\n prop.smooth = smooth;\r\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\r\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\r\n prop.numKeys = data.a === 1 ? data.k.length : 0;\r\n prop.propertyIndex = data.ix;\r\n var value = 0;\r\n\r\n if (type !== 0) {\r\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\r\n }\r\n\r\n prop._cachingAtTime = {\r\n lastFrame: initialDefaultFrame,\r\n lastIndex: 0,\r\n value: value\r\n };\r\n expressionHelpers.searchExpressions(elem, data, prop);\r\n\r\n if (prop.k) {\r\n container.addDynamicProperty(prop);\r\n }\r\n\r\n return prop;\r\n };\r\n\r\n function getShapeValueAtTime(frameNum) {\r\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\r\n if (!this._cachingAtTime) {\r\n this._cachingAtTime = {\r\n shapeValue: shapePool.clone(this.pv),\r\n lastIndex: 0,\r\n lastTime: initialDefaultFrame\r\n };\r\n }\r\n\r\n frameNum *= this.elem.globalData.frameRate;\r\n frameNum -= this.offsetTime;\r\n\r\n if (frameNum !== this._cachingAtTime.lastTime) {\r\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\r\n this._cachingAtTime.lastTime = frameNum;\r\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\r\n }\r\n\r\n return this._cachingAtTime.shapeValue;\r\n }\r\n\r\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\r\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\r\n\r\n function ShapeExpressions() {}\r\n\r\n ShapeExpressions.prototype = {\r\n vertices: function vertices(prop, time) {\r\n if (this.k) {\r\n this.getValue();\r\n }\r\n\r\n var shapePath = this.v;\r\n\r\n if (time !== undefined) {\r\n shapePath = this.getValueAtTime(time, 0);\r\n }\r\n\r\n var i;\r\n var len = shapePath._length;\r\n var vertices = shapePath[prop];\r\n var points = shapePath.v;\r\n var arr = createSizedArray(len);\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (prop === 'i' || prop === 'o') {\r\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\r\n } else {\r\n arr[i] = [vertices[i][0], vertices[i][1]];\r\n }\r\n }\r\n\r\n return arr;\r\n },\r\n points: function points(time) {\r\n return this.vertices('v', time);\r\n },\r\n inTangents: function inTangents(time) {\r\n return this.vertices('i', time);\r\n },\r\n outTangents: function outTangents(time) {\r\n return this.vertices('o', time);\r\n },\r\n isClosed: function isClosed() {\r\n return this.v.c;\r\n },\r\n pointOnPath: function pointOnPath(perc, time) {\r\n var shapePath = this.v;\r\n\r\n if (time !== undefined) {\r\n shapePath = this.getValueAtTime(time, 0);\r\n }\r\n\r\n if (!this._segmentsLength) {\r\n this._segmentsLength = bez.getSegmentsLength(shapePath);\r\n }\r\n\r\n var segmentsLength = this._segmentsLength;\r\n var lengths = segmentsLength.lengths;\r\n var lengthPos = segmentsLength.totalLength * perc;\r\n var i = 0;\r\n var len = lengths.length;\r\n var accumulatedLength = 0;\r\n var pt;\r\n\r\n while (i < len) {\r\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\r\n var initIndex = i;\r\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\r\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\r\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\r\n break;\r\n } else {\r\n accumulatedLength += lengths[i].addedLength;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n if (!pt) {\r\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\r\n }\r\n\r\n return pt;\r\n },\r\n vectorOnPath: function vectorOnPath(perc, time, vectorType) {\r\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\r\n if (perc == 1) {\r\n // eslint-disable-line eqeqeq\r\n perc = this.v.c;\r\n } else if (perc == 0) {\r\n // eslint-disable-line eqeqeq\r\n perc = 0.999;\r\n }\r\n\r\n var pt1 = this.pointOnPath(perc, time);\r\n var pt2 = this.pointOnPath(perc + 0.001, time);\r\n var xLength = pt2[0] - pt1[0];\r\n var yLength = pt2[1] - pt1[1];\r\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\r\n\r\n if (magnitude === 0) {\r\n return [0, 0];\r\n }\r\n\r\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\r\n return unitVector;\r\n },\r\n tangentOnPath: function tangentOnPath(perc, time) {\r\n return this.vectorOnPath(perc, time, 'tangent');\r\n },\r\n normalOnPath: function normalOnPath(perc, time) {\r\n return this.vectorOnPath(perc, time, 'normal');\r\n },\r\n setGroupProperty: expressionHelpers.setGroupProperty,\r\n getValueAtTime: expressionHelpers.getStaticValueAtTime\r\n };\r\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\r\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\r\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\r\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\r\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\r\n\r\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\r\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\r\n prop.propertyIndex = data.ix;\r\n prop.lock = false;\r\n\r\n if (type === 3) {\r\n expressionHelpers.searchExpressions(elem, data.pt, prop);\r\n } else if (type === 4) {\r\n expressionHelpers.searchExpressions(elem, data.ks, prop);\r\n }\r\n\r\n if (prop.k) {\r\n elem.addDynamicProperty(prop);\r\n }\r\n\r\n return prop;\r\n };\r\n }\r\n\r\n function initialize$1() {\r\n addPropertyDecorator();\r\n }\r\n\r\n function addDecorator() {\r\n function searchExpressions() {\r\n if (this.data.d.x) {\r\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\r\n this.addEffect(this.getExpressionValue.bind(this));\r\n return true;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\r\n var newValue = this.calculateExpression(text);\r\n\r\n if (currentValue.t !== newValue) {\r\n var newData = {};\r\n this.copyData(newData, currentValue);\r\n newData.t = newValue.toString();\r\n newData.__complete = false;\r\n return newData;\r\n }\r\n\r\n return currentValue;\r\n };\r\n\r\n TextProperty.prototype.searchProperty = function () {\r\n var isKeyframed = this.searchKeyframes();\r\n var hasExpressions = this.searchExpressions();\r\n this.kf = isKeyframed || hasExpressions;\r\n return this.kf;\r\n };\r\n\r\n TextProperty.prototype.searchExpressions = searchExpressions;\r\n }\r\n\r\n function initialize() {\r\n addDecorator();\r\n }\r\n\r\n function SVGComposableEffect() {}\r\n\r\n SVGComposableEffect.prototype = {\r\n createMergeNode: function createMergeNode(resultId, ins) {\r\n var feMerge = createNS('feMerge');\r\n feMerge.setAttribute('result', resultId);\r\n var feMergeNode;\r\n var i;\r\n\r\n for (i = 0; i < ins.length; i += 1) {\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in', ins[i]);\r\n feMerge.appendChild(feMergeNode);\r\n feMerge.appendChild(feMergeNode);\r\n }\r\n\r\n return feMerge;\r\n }\r\n };\r\n\r\n function SVGTintFilter(filter, filterManager, elem, id, source) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\r\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', id + '_tint_1');\r\n filter.appendChild(feColorMatrix);\r\n feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', id + '_tint_2');\r\n filter.appendChild(feColorMatrix);\r\n this.matrixFilter = feColorMatrix;\r\n var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\r\n filter.appendChild(feMerge);\r\n }\r\n\r\n extendPrototype([SVGComposableEffect], SVGTintFilter);\r\n\r\n SVGTintFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var colorBlack = this.filterManager.effectElements[0].p.v;\r\n var colorWhite = this.filterManager.effectElements[1].p.v;\r\n var opacity = this.filterManager.effectElements[2].p.v / 100;\r\n this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 ' + opacity + ' 0');\r\n }\r\n };\r\n\r\n function SVGFillFilter(filter, filterManager, elem, id) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', id);\r\n filter.appendChild(feColorMatrix);\r\n this.matrixFilter = feColorMatrix;\r\n }\r\n\r\n SVGFillFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var color = this.filterManager.effectElements[2].p.v;\r\n var opacity = this.filterManager.effectElements[6].p.v;\r\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\r\n }\r\n };\r\n\r\n function SVGStrokeEffect(fil, filterManager, elem) {\r\n this.initialized = false;\r\n this.filterManager = filterManager;\r\n this.elem = elem;\r\n this.paths = [];\r\n }\r\n\r\n SVGStrokeEffect.prototype.initialize = function () {\r\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\r\n var path;\r\n var groupPath;\r\n var i;\r\n var len;\r\n\r\n if (this.filterManager.effectElements[1].p.v === 1) {\r\n len = this.elem.maskManager.masksProperties.length;\r\n i = 0;\r\n } else {\r\n i = this.filterManager.effectElements[0].p.v - 1;\r\n len = i + 1;\r\n }\r\n\r\n groupPath = createNS('g');\r\n groupPath.setAttribute('fill', 'none');\r\n groupPath.setAttribute('stroke-linecap', 'round');\r\n groupPath.setAttribute('stroke-dashoffset', 1);\r\n\r\n for (i; i < len; i += 1) {\r\n path = createNS('path');\r\n groupPath.appendChild(path);\r\n this.paths.push({\r\n p: path,\r\n m: i\r\n });\r\n }\r\n\r\n if (this.filterManager.effectElements[10].p.v === 3) {\r\n var mask = createNS('mask');\r\n var id = createElementID();\r\n mask.setAttribute('id', id);\r\n mask.setAttribute('mask-type', 'alpha');\r\n mask.appendChild(groupPath);\r\n this.elem.globalData.defs.appendChild(mask);\r\n var g = createNS('g');\r\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\r\n\r\n while (elemChildren[0]) {\r\n g.appendChild(elemChildren[0]);\r\n }\r\n\r\n this.elem.layerElement.appendChild(g);\r\n this.masker = mask;\r\n groupPath.setAttribute('stroke', '#fff');\r\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\r\n if (this.filterManager.effectElements[10].p.v === 2) {\r\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\r\n\r\n while (elemChildren.length) {\r\n this.elem.layerElement.removeChild(elemChildren[0]);\r\n }\r\n }\r\n\r\n this.elem.layerElement.appendChild(groupPath);\r\n this.elem.layerElement.removeAttribute('mask');\r\n groupPath.setAttribute('stroke', '#fff');\r\n }\r\n\r\n this.initialized = true;\r\n this.pathMasker = groupPath;\r\n };\r\n\r\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\r\n if (!this.initialized) {\r\n this.initialize();\r\n }\r\n\r\n var i;\r\n var len = this.paths.length;\r\n var mask;\r\n var path;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.paths[i].m !== -1) {\r\n mask = this.elem.maskManager.viewData[this.paths[i].m];\r\n path = this.paths[i].p;\r\n\r\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\r\n path.setAttribute('d', mask.lastPath);\r\n }\r\n\r\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\r\n var dasharrayValue;\r\n\r\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\r\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\r\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\r\n var l = path.getTotalLength();\r\n dasharrayValue = '0 0 0 ' + l * s + ' ';\r\n var lineLength = l * (e - s);\r\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\r\n var units = Math.floor(lineLength / segment);\r\n var j;\r\n\r\n for (j = 0; j < units; j += 1) {\r\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\r\n }\r\n\r\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\r\n } else {\r\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\r\n }\r\n\r\n path.setAttribute('stroke-dasharray', dasharrayValue);\r\n }\r\n }\r\n }\r\n\r\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\r\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\r\n }\r\n\r\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\r\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\r\n }\r\n\r\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\r\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\r\n var color = this.filterManager.effectElements[3].p.v;\r\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\r\n }\r\n }\r\n };\r\n\r\n function SVGTritoneFilter(filter, filterManager, elem, id) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\r\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\r\n filter.appendChild(feColorMatrix);\r\n var feComponentTransfer = createNS('feComponentTransfer');\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n feComponentTransfer.setAttribute('result', id);\r\n this.matrixFilter = feComponentTransfer;\r\n var feFuncR = createNS('feFuncR');\r\n feFuncR.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncR);\r\n this.feFuncR = feFuncR;\r\n var feFuncG = createNS('feFuncG');\r\n feFuncG.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncG);\r\n this.feFuncG = feFuncG;\r\n var feFuncB = createNS('feFuncB');\r\n feFuncB.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncB);\r\n this.feFuncB = feFuncB;\r\n filter.appendChild(feComponentTransfer);\r\n }\r\n\r\n SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var color1 = this.filterManager.effectElements[0].p.v;\r\n var color2 = this.filterManager.effectElements[1].p.v;\r\n var color3 = this.filterManager.effectElements[2].p.v;\r\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\r\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\r\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\r\n this.feFuncR.setAttribute('tableValues', tableR);\r\n this.feFuncG.setAttribute('tableValues', tableG);\r\n this.feFuncB.setAttribute('tableValues', tableB);\r\n }\r\n };\r\n\r\n function SVGProLevelsFilter(filter, filterManager, elem, id) {\r\n this.filterManager = filterManager;\r\n var effectElements = this.filterManager.effectElements;\r\n var feComponentTransfer = createNS('feComponentTransfer'); // Red\r\n\r\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\r\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\r\n } // Green\r\n\r\n\r\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\r\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\r\n } // Blue\r\n\r\n\r\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\r\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\r\n } // Alpha\r\n\r\n\r\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\r\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\r\n } // RGB\r\n\r\n\r\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n }\r\n\r\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\r\n feComponentTransfer = createNS('feComponentTransfer');\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n feComponentTransfer.setAttribute('result', id);\r\n filter.appendChild(feComponentTransfer);\r\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\r\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\r\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\r\n }\r\n }\r\n\r\n SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\r\n var feFunc = createNS(type);\r\n feFunc.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFunc);\r\n return feFunc;\r\n };\r\n\r\n SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\r\n var cnt = 0;\r\n var segments = 256;\r\n var perc;\r\n var min = Math.min(inputBlack, inputWhite);\r\n var max = Math.max(inputBlack, inputWhite);\r\n var table = Array.call(null, {\r\n length: segments\r\n });\r\n var colorValue;\r\n var pos = 0;\r\n var outputDelta = outputWhite - outputBlack;\r\n var inputDelta = inputWhite - inputBlack;\r\n\r\n while (cnt <= 256) {\r\n perc = cnt / 256;\r\n\r\n if (perc <= min) {\r\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\r\n } else if (perc >= max) {\r\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\r\n } else {\r\n colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\r\n }\r\n\r\n table[pos] = colorValue;\r\n pos += 1;\r\n cnt += 256 / (segments - 1);\r\n }\r\n\r\n return table.join(' ');\r\n };\r\n\r\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var val;\r\n var effectElements = this.filterManager.effectElements;\r\n\r\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\r\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\r\n this.feFuncRComposed.setAttribute('tableValues', val);\r\n this.feFuncGComposed.setAttribute('tableValues', val);\r\n this.feFuncBComposed.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\r\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\r\n this.feFuncR.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\r\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\r\n this.feFuncG.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\r\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\r\n this.feFuncB.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\r\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\r\n this.feFuncA.setAttribute('tableValues', val);\r\n }\r\n }\r\n };\r\n\r\n function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\r\n var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\r\n var filterSize = filterManager.data.fs || globalFilterSize;\r\n filter.setAttribute('x', filterSize.x || globalFilterSize.x);\r\n filter.setAttribute('y', filterSize.y || globalFilterSize.y);\r\n filter.setAttribute('width', filterSize.width || globalFilterSize.width);\r\n filter.setAttribute('height', filterSize.height || globalFilterSize.height);\r\n this.filterManager = filterManager;\r\n var feGaussianBlur = createNS('feGaussianBlur');\r\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\r\n feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\r\n feGaussianBlur.setAttribute('stdDeviation', '0');\r\n this.feGaussianBlur = feGaussianBlur;\r\n filter.appendChild(feGaussianBlur);\r\n var feOffset = createNS('feOffset');\r\n feOffset.setAttribute('dx', '25');\r\n feOffset.setAttribute('dy', '0');\r\n feOffset.setAttribute('in', id + '_drop_shadow_1');\r\n feOffset.setAttribute('result', id + '_drop_shadow_2');\r\n this.feOffset = feOffset;\r\n filter.appendChild(feOffset);\r\n var feFlood = createNS('feFlood');\r\n feFlood.setAttribute('flood-color', '#00ff00');\r\n feFlood.setAttribute('flood-opacity', '1');\r\n feFlood.setAttribute('result', id + '_drop_shadow_3');\r\n this.feFlood = feFlood;\r\n filter.appendChild(feFlood);\r\n var feComposite = createNS('feComposite');\r\n feComposite.setAttribute('in', id + '_drop_shadow_3');\r\n feComposite.setAttribute('in2', id + '_drop_shadow_2');\r\n feComposite.setAttribute('operator', 'in');\r\n feComposite.setAttribute('result', id + '_drop_shadow_4');\r\n filter.appendChild(feComposite);\r\n var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\r\n filter.appendChild(feMerge); //\r\n }\r\n\r\n extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\r\n\r\n SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\r\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\r\n }\r\n\r\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\r\n var col = this.filterManager.effectElements[0].p.v;\r\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\r\n }\r\n\r\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\r\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\r\n }\r\n\r\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\r\n var distance = this.filterManager.effectElements[3].p.v;\r\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\r\n var x = distance * Math.cos(angle);\r\n var y = distance * Math.sin(angle);\r\n this.feOffset.setAttribute('dx', x);\r\n this.feOffset.setAttribute('dy', y);\r\n }\r\n }\r\n };\r\n\r\n var _svgMatteSymbols = [];\r\n\r\n function SVGMatte3Effect(filterElem, filterManager, elem) {\r\n this.initialized = false;\r\n this.filterManager = filterManager;\r\n this.filterElem = filterElem;\r\n this.elem = elem;\r\n elem.matteElement = createNS('g');\r\n elem.matteElement.appendChild(elem.layerElement);\r\n elem.matteElement.appendChild(elem.transformedElement);\r\n elem.baseElement = elem.matteElement;\r\n }\r\n\r\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\r\n var i = 0;\r\n var len = _svgMatteSymbols.length;\r\n\r\n while (i < len) {\r\n if (_svgMatteSymbols[i] === mask) {\r\n return _svgMatteSymbols[i];\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\r\n var parentNode = mask.layerElement.parentNode;\r\n\r\n if (!parentNode) {\r\n return;\r\n }\r\n\r\n var children = parentNode.children;\r\n var i = 0;\r\n var len = children.length;\r\n\r\n while (i < len) {\r\n if (children[i] === mask.layerElement) {\r\n break;\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n var nextChild;\r\n\r\n if (i <= len - 2) {\r\n nextChild = children[i + 1];\r\n }\r\n\r\n var useElem = createNS('use');\r\n useElem.setAttribute('href', '#' + symbolId);\r\n\r\n if (nextChild) {\r\n parentNode.insertBefore(useElem, nextChild);\r\n } else {\r\n parentNode.appendChild(useElem);\r\n }\r\n };\r\n\r\n SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\r\n if (!this.findSymbol(mask)) {\r\n var symbolId = createElementID();\r\n var masker = createNS('mask');\r\n masker.setAttribute('id', mask.layerId);\r\n masker.setAttribute('mask-type', 'alpha');\r\n\r\n _svgMatteSymbols.push(mask);\r\n\r\n var defs = elem.globalData.defs;\r\n defs.appendChild(masker);\r\n var symbol = createNS('symbol');\r\n symbol.setAttribute('id', symbolId);\r\n this.replaceInParent(mask, symbolId);\r\n symbol.appendChild(mask.layerElement);\r\n defs.appendChild(symbol);\r\n var useElem = createNS('use');\r\n useElem.setAttribute('href', '#' + symbolId);\r\n masker.appendChild(useElem);\r\n mask.data.hd = false;\r\n mask.show();\r\n }\r\n\r\n elem.setMatte(mask.layerId);\r\n };\r\n\r\n SVGMatte3Effect.prototype.initialize = function () {\r\n var ind = this.filterManager.effectElements[0].p.v;\r\n var elements = this.elem.comp.elements;\r\n var i = 0;\r\n var len = elements.length;\r\n\r\n while (i < len) {\r\n if (elements[i] && elements[i].data.ind === ind) {\r\n this.setElementAsMask(this.elem, elements[i]);\r\n }\r\n\r\n i += 1;\r\n }\r\n\r\n this.initialized = true;\r\n };\r\n\r\n SVGMatte3Effect.prototype.renderFrame = function () {\r\n if (!this.initialized) {\r\n this.initialize();\r\n }\r\n };\r\n\r\n function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\r\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\r\n filter.setAttribute('x', '-100%');\r\n filter.setAttribute('y', '-100%');\r\n filter.setAttribute('width', '300%');\r\n filter.setAttribute('height', '300%');\r\n this.filterManager = filterManager;\r\n var feGaussianBlur = createNS('feGaussianBlur');\r\n feGaussianBlur.setAttribute('result', id);\r\n filter.appendChild(feGaussianBlur);\r\n this.feGaussianBlur = feGaussianBlur;\r\n }\r\n\r\n SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n // Empirical value, matching AE's blur appearance.\r\n var kBlurrinessToSigma = 0.3;\r\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\r\n //\r\n // 1 -> horizontal & vertical\r\n // 2 -> horizontal only\r\n // 3 -> vertical only\r\n //\r\n\r\n var dimensions = this.filterManager.effectElements[1].p.v;\r\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\r\n\r\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\r\n\r\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\r\n //\r\n // 0 -> off -> duplicate\r\n // 1 -> on -> wrap\r\n\r\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\r\n\r\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\r\n }\r\n };\r\n\r\n registerRenderer('canvas', CanvasRenderer);\r\n registerRenderer('html', HybridRenderer);\r\n registerRenderer('svg', SVGRenderer); // Registering shape modifiers\r\n\r\n ShapeModifiers.registerModifier('tm', TrimModifier);\r\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\r\n ShapeModifiers.registerModifier('rp', RepeaterModifier);\r\n ShapeModifiers.registerModifier('rd', RoundCornersModifier);\r\n ShapeModifiers.registerModifier('zz', ZigZagModifier);\r\n ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\r\n\r\n setExpressionsPlugin(Expressions);\r\n setExpressionInterfaces(getInterface);\r\n initialize$1();\r\n initialize(); // Registering svg effects\r\n\r\n registerEffect(20, SVGTintFilter, true);\r\n registerEffect(21, SVGFillFilter, true);\r\n registerEffect(22, SVGStrokeEffect, false);\r\n registerEffect(23, SVGTritoneFilter, true);\r\n registerEffect(24, SVGProLevelsFilter, true);\r\n registerEffect(25, SVGDropShadowEffect, true);\r\n registerEffect(28, SVGMatte3Effect, false);\r\n registerEffect(29, SVGGaussianBlurEffect, true);\r\n\r\n return lottie;\r\n\r\n}));\r\n", "/**\n * Copyright 2021 Design Barn Inc.\n */\n\nimport { css } from \"lit\";\n\nexport default css`\n * {\n box-sizing: border-box;\n }\n\n :host {\n --lottie-player-toolbar-height: 35px;\n --lottie-player-toolbar-background-color: transparent;\n --lottie-player-toolbar-icon-color: #999;\n --lottie-player-toolbar-icon-hover-color: #222;\n --lottie-player-toolbar-icon-active-color: #555;\n --lottie-player-seeker-track-color: #ccc;\n --lottie-player-seeker-thumb-color: rgba(0, 107, 120, 0.8);\n --lottie-player-seeker-display: block;\n\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .main {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n }\n\n .animation {\n width: 100%;\n height: 100%;\n display: flex;\n }\n .animation.controls {\n height: calc(100% - 35px);\n }\n\n .toolbar {\n display: flex;\n align-items: center;\n justify-items: center;\n background-color: var(--lottie-player-toolbar-background-color);\n margin: 0 5px;\n height: 35px;\n }\n\n .toolbar button {\n cursor: pointer;\n fill: var(--lottie-player-toolbar-icon-color);\n display: flex;\n background: none;\n border: 0;\n padding: 0;\n outline: none;\n height: 100%;\n }\n\n .toolbar button:hover {\n fill: var(--lottie-player-toolbar-icon-hover-color);\n }\n\n .toolbar button.active {\n fill: var(--lottie-player-toolbar-icon-active-color);\n }\n\n .toolbar button.active:hover {\n fill: var(--lottie-player-toolbar-icon-hover-color);\n }\n\n .toolbar button:focus {\n outline: 1px dotted var(--lottie-player-toolbar-icon-active-color);\n }\n\n .toolbar button svg {\n }\n\n .toolbar button.disabled svg {\n display: none;\n }\n\n .seeker {\n -webkit-appearance: none;\n width: 95%;\n outline: none;\n background-color: var(--lottie-player-toolbar-background-color);\n display: var(--lottie-player-seeker-display);\n }\n\n .seeker::-webkit-slider-runnable-track {\n width: 100%;\n height: 5px;\n cursor: pointer;\n background: var(--lottie-player-seeker-track-color);\n border-radius: 3px;\n }\n .seeker::-webkit-slider-thumb {\n height: 15px;\n width: 15px;\n border-radius: 50%;\n background: var(--lottie-player-seeker-thumb-color);\n cursor: pointer;\n -webkit-appearance: none;\n margin-top: -5px;\n }\n .seeker:focus::-webkit-slider-runnable-track {\n background: #999;\n }\n .seeker::-moz-range-track {\n width: 100%;\n height: 5px;\n cursor: pointer;\n background: var(--lottie-player-seeker-track-color);\n border-radius: 3px;\n }\n .seeker::-moz-range-thumb {\n height: 15px;\n width: 15px;\n border-radius: 50%;\n background: var(--lottie-player-seeker-thumb-color);\n cursor: pointer;\n }\n .seeker::-ms-track {\n width: 100%;\n height: 5px;\n cursor: pointer;\n background: transparent;\n border-color: transparent;\n color: transparent;\n }\n .seeker::-ms-fill-lower {\n background: var(--lottie-player-seeker-track-color);\n border-radius: 3px;\n }\n .seeker::-ms-fill-upper {\n background: var(--lottie-player-seeker-track-color);\n border-radius: 3px;\n }\n .seeker::-ms-thumb {\n border: 0;\n height: 15px;\n width: 15px;\n border-radius: 50%;\n background: var(--lottie-player-seeker-thumb-color);\n cursor: pointer;\n }\n .seeker:focus::-ms-fill-lower {\n background: var(--lottie-player-seeker-track-color);\n }\n .seeker:focus::-ms-fill-upper {\n background: var(--lottie-player-seeker-track-color);\n }\n\n .error {\n display: flex;\n justify-content: center;\n height: 100%;\n align-items: center;\n }\n`;\n", "// eslint-disable-next-line header/header\nimport { LitElement, html } from \"lit\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { TemplateResult } from \"lit/html.js\";\nimport * as lottie from \"lottie-web/build/player/lottie\";\n\n// import ResizeObserver from \"resize-observer-polyfill\";\nimport styles from \"./lottie-player.styles\";\n\n// Define valid player states\nexport enum PlayerState {\n Destroyed = \"destroyed\",\n Error = \"error\",\n Frozen = \"frozen\",\n Loading = \"loading\",\n Paused = \"paused\",\n Playing = \"playing\",\n Stopped = \"stopped\",\n}\n\n// Define play modes\nexport enum PlayMode {\n Bounce = \"bounce\",\n Normal = \"normal\",\n}\n\n// Define player events\nexport enum PlayerEvents {\n Complete = \"complete\",\n Destroyed = \"destroyed\",\n Error = \"error\",\n Frame = \"frame\",\n Freeze = \"freeze\",\n Load = \"load\",\n Loop = \"loop\",\n Pause = \"pause\",\n Play = \"play\",\n Ready = \"ready\",\n Rendered = \"rendered\",\n Stop = \"stop\",\n}\n\n/**\n * Parse a resource into a JSON object or a URL string\n */\nexport function parseSrc(src: string | object): string | object {\n if (typeof src === \"object\") {\n return src;\n }\n\n try {\n return JSON.parse(src);\n } catch (e) {\n // Try construct an absolute URL from the src URL\n const srcUrl: URL = new URL(src, window.location.href);\n\n return srcUrl.toString();\n }\n}\n\nfunction isLottie(json: Record): boolean {\n const mandatory: string[] = [\"v\", \"ip\", \"op\", \"layers\", \"fr\", \"w\", \"h\"];\n\n return mandatory.every((field: string) =>\n Object.prototype.hasOwnProperty.call(json, field)\n );\n}\n\nasync function fromURL(url: string): Promise> {\n if (typeof url !== \"string\") {\n throw new Error(`The url value must be a string`);\n }\n\n let json;\n\n try {\n // Try construct an absolute URL from the src URL\n const srcUrl: URL = new URL(url);\n\n // Fetch the JSON file from the URL\n const result: any = await fetch(srcUrl.toString());\n\n json = await result.json();\n } catch (err) {\n throw new Error(\n `An error occurred while trying to load the Lottie file from URL`\n );\n }\n\n return json;\n}\n/**\n * LottiePlayer web component class\n *\n * @export\n * @class LottiePlayer\n * @extends {LitElement}\n */\n@customElement(\"lottie-player\")\nexport class LottiePlayer extends LitElement {\n /**\n * Autoplay animation on load.\n */\n @property({ type: Boolean })\n public autoplay: boolean = false;\n\n /**\n * Background color.\n */\n @property({ type: String, reflect: true })\n public background?: string = \"transparent\";\n\n /**\n * Show controls.\n */\n @property({ type: Boolean })\n public controls: boolean = false;\n\n /**\n * Number of times to loop animation.\n */\n @property({ type: Number })\n public count?: number;\n\n /**\n * Player state.\n */\n @property({ type: String })\n public currentState: PlayerState = PlayerState.Loading;\n\n /**\n * Animation description for screen readers.\n */\n @property({ type: String })\n public description: string = \"Lottie animation\";\n\n /**\n * Direction of animation.\n */\n @property({ type: Number })\n public direction: number = 1;\n\n /**\n * Disable checking if the Lottie is valid before loading\n */\n @property({ type: Boolean })\n public disableCheck?: boolean = false;\n\n /**\n * 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 if (!this.disableCheck) {\n // Fetch resource if src is a remote URL\n if (srcAttrib === \"path\") {\n jsonData = await fromURL(srcParsed as string);\n srcAttrib = \"animationData\";\n } else {\n jsonData = srcParsed;\n }\n\n if (!isLottie(jsonData)) {\n this.currentState = PlayerState.Error;\n this.dispatchEvent(new CustomEvent(PlayerEvents.Error));\n }\n }\n } catch (err) {\n this.currentState = PlayerState.Error;\n this.dispatchEvent(new CustomEvent(PlayerEvents.Error));\n }\n }\n\n /**\n * Returns the lottie-web instance used in the component.\n */\n public getLottie(): any {\n return this._lottie;\n }\n\n /**\n * Start playing animation.\n */\n public play() {\n if (!this._lottie) {\n return;\n }\n\n this._lottie.play();\n this.currentState = PlayerState.Playing;\n\n this.dispatchEvent(new CustomEvent(PlayerEvents.Play));\n }\n\n /**\n * Pause animation play.\n */\n public pause(): void {\n if (!this._lottie) {\n return;\n }\n\n this._lottie.pause();\n this.currentState = PlayerState.Paused;\n\n this.dispatchEvent(new CustomEvent(PlayerEvents.Pause));\n }\n\n /**\n * Stops animation play.\n */\n public stop(): void {\n if (!this._lottie) {\n return;\n }\n\n this._counter = 1;\n this._lottie.stop();\n this.currentState = PlayerState.Stopped;\n\n this.dispatchEvent(new CustomEvent(PlayerEvents.Stop));\n }\n\n /**\n * Destroy animation and lottie-player element.\n */\n public destroy(): void {\n if (!this._lottie) {\n return;\n }\n\n this._lottie.destroy();\n this._lottie = null;\n this.currentState = PlayerState.Destroyed;\n this.dispatchEvent(new CustomEvent(PlayerEvents.Destroyed));\n this.remove();\n }\n\n /**\n * Seek to a given frame.\n */\n public seek(value: number | string): void {\n if (!this._lottie) {\n return;\n }\n\n // Extract frame number from either number or percentage value\n const matches = /^(\\d+)(%?)$/.exec(value.toString());\n\n if (!matches) {\n return;\n }\n\n // Calculate and set the frame number\n const frame =\n matches[2] === \"%\"\n ? (this._lottie.totalFrames * Number(matches[1])) / 100\n : Number(matches[1]);\n\n // Set seeker to new frame number\n this.seeker = frame;\n\n // Send lottie player to the new frame\n if (this.currentState === PlayerState.Playing) {\n this._lottie.goToAndPlay(frame, true);\n } else {\n this._lottie.goToAndStop(frame, true);\n this._lottie.pause();\n }\n }\n\n /**\n * Snapshot the current frame as SVG.\n *\n * If 'download' argument is boolean true, then a download is triggered in browser.\n */\n public snapshot(download: boolean = true): string | void {\n if (!this.shadowRoot) return;\n\n // Get SVG element and serialize markup\n const svgElement = this.shadowRoot.querySelector(\".animation svg\") as Node;\n const data = new XMLSerializer().serializeToString(svgElement);\n\n // Trigger file download\n if (download) {\n const element = document.createElement(\"a\");\n\n element.href = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(\n data\n )}`;\n element.download = `download_${this.seeker}.svg`;\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n }\n\n return data;\n }\n\n /**\n * Sets animation play speed.\n *\n * @param value Playback speed.\n */\n public setSpeed(value = 1): void {\n if (!this._lottie) {\n return;\n }\n\n this._lottie.setSpeed(value);\n }\n\n /**\n * Animation play direction.\n *\n * @param value Direction values.\n */\n public setDirection(value: number): void {\n if (!this._lottie) {\n return;\n }\n\n this._lottie.setDirection(value);\n }\n\n /**\n * Sets the looping of the animation.\n *\n * @param value Whether to enable looping. Boolean true enables looping.\n */\n public setLooping(value: boolean): void {\n if (this._lottie) {\n this.loop = value;\n this._lottie.loop = value;\n }\n }\n\n /**\n * Toggle playing state.\n */\n public togglePlay(): void {\n return this.currentState === PlayerState.Playing\n ? this.pause()\n : this.play();\n }\n\n /**\n * Toggles animation looping.\n */\n public toggleLooping(): void {\n this.setLooping(!this.loop);\n }\n\n /**\n * Resize animation.\n */\n public resize() {\n if (!this._lottie) {\n return;\n }\n\n this._lottie.resize();\n }\n\n /**\n * Returns the styles for the component.\n */\n static get styles() {\n return styles;\n }\n\n /**\n * Cleanup on component destroy.\n */\n public disconnectedCallback(): void {\n // Don't clean up if node is still connected to the context (i.e. this is a move).\n if (this.isConnected) return;\n\n // Remove intersection observer for detecting component being out-of-view.\n if (this._io) {\n this._io.disconnect();\n this._io = undefined;\n }\n\n // Remove resize observer for detecting resize/reflow events affecting element.\n // if (this._ro) {\n // this._ro.disconnect();\n // this._ro = undefined;\n // }\n\n // Remove the attached Visibility API's change event listener.\n document.removeEventListener(\"visibilitychange\", () =>\n this._onVisibilityChange()\n );\n\n // Destroy the animation instance and element\n this.destroy();\n }\n\n public render(): TemplateResult | void {\n const className: string = this.controls ? \"main controls\" : \"main\";\n const animationClass: string = this.controls\n ? \"animation controls\"\n : \"animation\";\n\n return html` \n \n ${this.currentState === PlayerState.Error\n ? html`
\u26A0\uFE0F
`\n : undefined}\n \n ${this.controls ? this.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 \n {\n this._prevState = this.currentState;\n this.freeze();\n }}\n @mouseup=${() => {\n this._prevState === PlayerState.Playing && this.play();\n }}\n aria-valuemin=\"1\"\n aria-valuemax=\"100\"\n role=\"slider\"\n aria-valuenow=${this.seeker}\n tabindex=\"0\"\n aria-label=\"lottie-seek-input\"\n />\n \n \n \n \n \n \n `;\n }\n\n /**\n * Handle visibility change events.\n */\n private _onVisibilityChange(): void {\n if (document.hidden === true && this.currentState === PlayerState.Playing) {\n this.freeze();\n } else if (this.currentState === PlayerState.Frozen) {\n this.play();\n }\n }\n\n /**\n * Handles click and drag actions on the progress track.\n */\n private _handleSeekChange(e: any): void {\n if (!this._lottie || isNaN(e.target.value)) {\n return;\n }\n\n const frame: number = (e.target.value / 100) * this._lottie.totalFrames;\n\n this.seek(frame);\n }\n\n private _attachEventListeners(): void {\n this._lottie.addEventListener(\"enterFrame\", () => {\n this.seeker =\n (this._lottie.currentFrame / this._lottie.totalFrames) * 100;\n\n this.dispatchEvent(\n new CustomEvent(PlayerEvents.Frame, {\n detail: {\n frame: this._lottie.currentFrame,\n seeker: this.seeker,\n },\n })\n );\n });\n\n // Handle animation play complete\n this._lottie.addEventListener(\"complete\", () => {\n if (this.currentState !== PlayerState.Playing) {\n this.dispatchEvent(new CustomEvent(PlayerEvents.Complete));\n\n return;\n }\n\n if (!this.loop || (this.count && this._counter >= this.count)) {\n this.dispatchEvent(new CustomEvent(PlayerEvents.Complete));\n\n if (this.mode === PlayMode.Bounce) {\n if (this._lottie.currentFrame === 0) {\n return;\n }\n } else {\n return;\n }\n }\n\n if (this.mode === PlayMode.Bounce) {\n if (this.count) {\n this._counter += 0.5;\n }\n\n setTimeout(() => {\n this.dispatchEvent(new CustomEvent(PlayerEvents.Loop));\n\n if (this.currentState === PlayerState.Playing) {\n this._lottie.setDirection(this._lottie.playDirection * -1);\n this._lottie.play();\n }\n }, this.intermission);\n } else {\n if (this.count) {\n this._counter += 1;\n }\n\n window.setTimeout(() => {\n this.dispatchEvent(new CustomEvent(PlayerEvents.Loop));\n\n if (this.currentState === PlayerState.Playing) {\n if (this.direction === -1) {\n // Prevents flickering\n this.seek(\"99%\");\n this.play();\n } else {\n this._lottie.stop();\n this._lottie.play();\n }\n }\n }, this.intermission);\n }\n });\n\n // Handle lottie-web ready event\n this._lottie.addEventListener(\"DOMLoaded\", () => {\n // Set initial playback speed and direction\n this.setSpeed(this.speed);\n this.setDirection(this.direction);\n\n // Start playing if autoplay is enabled\n if (this.autoplay) {\n if (this.direction === -1) this.seek(\"100%\");\n this.play();\n }\n\n this.dispatchEvent(new CustomEvent(PlayerEvents.Ready));\n });\n\n // Handle animation data load complete\n this._lottie.addEventListener(\"data_ready\", () => {\n this.dispatchEvent(new CustomEvent(PlayerEvents.Load));\n });\n\n // Set error state when animation load fail event triggers\n this._lottie.addEventListener(\"data_failed\", () => {\n this.currentState = PlayerState.Error;\n\n this.dispatchEvent(new CustomEvent(PlayerEvents.Error));\n });\n\n // Set handlers to auto play animation on hover if enabled\n this.container.addEventListener(\"mouseenter\", () => {\n if (this.hover && this.currentState !== PlayerState.Playing) {\n this.play();\n }\n });\n this.container.addEventListener(\"mouseleave\", () => {\n if (this.hover && this.currentState === PlayerState.Playing) {\n this.stop();\n }\n });\n }\n\n /**\n * Freeze animation play.\n * This internal state pauses animation and is used to differentiate between\n * user requested pauses and component instigated pauses.\n */\n private freeze(): void {\n if (!this._lottie) {\n return;\n }\n\n this._lottie.pause();\n this.currentState = PlayerState.Frozen;\n\n this.dispatchEvent(new CustomEvent(PlayerEvents.Freeze));\n }\n}\n", "const DEFAULT_OPTIONS = {\n player: 'lottie-player',\n};\nconst LOTTIE_PLAYER_NODE = 'LOTTIE-PLAYER';\nconst ERROR_PREFIX = '[lottieInteractivity]:';\n\n/**\n * LottieFiles interactivity for Lottie\n */\nexport class LottieInteractivity {\n constructor({ actions, container, mode, player, ...options } = DEFAULT_OPTIONS) {\n // Save the original player entered by user, used for interaction chaining / loading animations on the fly\n this.enteredPlayer = player;\n\n // Resolve lottie instance specified in player option\n if (!(typeof player === 'object' && player.constructor.name === 'AnimationItem')) {\n if (typeof player === 'string') {\n const elem = document.querySelector(player);\n\n if (elem && elem.nodeName === LOTTIE_PLAYER_NODE) {\n player = elem.getLottie();\n }\n } else if (player instanceof HTMLElement && player.nodeName === LOTTIE_PLAYER_NODE) {\n player = player.getLottie();\n }\n\n // Throw error no player instance has been successfully resolved\n if (!player) {\n let message = ERROR_PREFIX + \"Specified player:\" + player + \" is invalid.\";\n\n throw new Error(message);\n }\n }\n\n // Get the configured container element.\n if (typeof container === 'string') {\n container = document.querySelector(container);\n }\n\n // Use player wrapper as fallback if container couldn't be resolved.\n if (!container) {\n container = player.wrapper;\n }\n\n this.player = player;\n this.loadedAnimation = this.player.path + this.player.fileName + \".json\";\n this.attachedListeners = false;\n this.container = container;\n this.mode = mode;\n this.actions = actions;\n this.options = options;\n this.assignedSegment = null;\n this.scrolledAndPlayed = false;\n\n // Interaction chaining\n this.interactionIdx = 0;\n this.oldInterctionIdx = 0;\n this.clickCounter = 0;\n this.playCounter = 0;\n this.stateHandler = new Map();\n this.transitionHandler = new Map();\n }\n\n getContainerVisibility() {\n // Get the bounding box for the lottie player or container\n const { top, height } = this.container.getBoundingClientRect();\n\n // Calculate current view percentage\n const current = window.innerHeight - top;\n const max = window.innerHeight + height;\n return current / max;\n }\n\n getContainerCursorPosition(cursorX, cursorY) {\n const { top, left, width, height } = this.container.getBoundingClientRect();\n\n const x = (cursorX - left) / width;\n const y = (cursorY - top) / height;\n\n return { x, y };\n }\n\n initScrollMode() {\n this.player.stop();\n window.addEventListener('scroll', this.#scrollHandler, true);\n }\n\n initCursorMode() {\n // To have click and hover interaction, force to only have that type and single action\n // If there are multiple actions, click and hover are ignored\n if (this.actions &&\n this.actions.length === 1) {\n if (this.actions[0].type === \"click\") {\n this.player.loop = false;\n this.player.stop();\n this.container.addEventListener('click', this.#clickHoverHandler);\n } else if (this.actions[0].type === \"hover\") {\n this.player.loop = false;\n this.player.stop();\n this.container.addEventListener('mouseenter', this.#clickHoverHandler);\n\n // For mobile\n this.container.addEventListener('touchstart', this.#clickHoverHandler, { passive: true });\n } else if (this.actions[0].type === \"toggle\") {\n this.player.loop = false;\n this.player.stop();\n this.container.addEventListener('click', this.#toggleHandler);\n } else if (this.actions[0].type === \"hold\" || this.actions[0].type === \"pauseHold\") {\n this.container.addEventListener('mouseenter', this.#holdTransitionEnter);\n this.container.addEventListener('mouseleave', this.#holdTransitionLeave);\n\n // For mobile\n this.container.addEventListener('touchstart', this.#holdTransitionEnter, { passive: true });\n this.container.addEventListener('touchend', this.#holdTransitionLeave, { passive: true });\n\n } else if (this.actions[0].type === \"seek\") {\n this.player.loop = true;\n this.player.stop();\n this.container.addEventListener('mousemove', this.#mousemoveHandler);\n // For mobile\n this.container.addEventListener('touchmove', this.#touchmoveHandler, { passive: false });\n this.container.addEventListener('mouseout', this.#mouseoutHandler);\n }\n } else {\n this.player.loop = true;\n this.player.stop();\n this.container.addEventListener('mousemove', this.#mousemoveHandler);\n this.container.addEventListener('mouseleave', this.#mouseoutHandler);\n\n // Init the animations that set states when the cursor is outside the container, so that they\n // are visibly idle at the desired frame before first interaction with them\n this.#cursorHandler(-1, -1);\n }\n }\n\n initChainMode() {\n this.#initInteractionMaps();\n this.player.loop = false;\n this.player.stop();\n this.#chainedInteractionHandler({ ignorePath: false });\n }\n\n start() {\n if (this.mode === 'scroll') {\n if (this.player.isLoaded) {\n this.initScrollMode();\n } else {\n this.player.addEventListener('DOMLoaded', () => {\n this.initScrollMode();\n });\n }\n } else if (this.mode === 'cursor') {\n if (this.player.isLoaded) {\n this.initCursorMode();\n } else {\n this.player.addEventListener('DOMLoaded', () => {\n this.initCursorMode();\n });\n }\n } else if (this.mode === 'chain') {\n // When passing animation object to LI the player is already loaded\n if (this.player.isLoaded) {\n this.initChainMode();\n } else {\n this.player.addEventListener('DOMLoaded', () => {\n this.initChainMode();\n });\n }\n }\n }\n\n redefineOptions({ actions, container, mode, player, ...options }) {\n this.stop();\n\n // Save the original player entered by user, used for interaction chaining / loading animations on the fly\n this.enteredPlayer = player;\n\n // Resolve lottie instance specified in player option\n if (!(typeof player === 'object' && player.constructor.name === 'AnimationItem')) {\n if (typeof player === 'string') {\n const elem = document.querySelector(player);\n\n if (elem && elem.nodeName === LOTTIE_PLAYER_NODE) {\n player = elem.getLottie();\n }\n } else if (player instanceof HTMLElement && player.nodeName === LOTTIE_PLAYER_NODE) {\n player = player.getLottie();\n }\n\n // Throw error no player instance has been successfully resolved\n if (!player) {\n let message = ERROR_PREFIX + \"Specified player:\" + player + \" is invalid.\";\n\n throw new Error(message, player);\n }\n }\n\n // Get the configured container element.\n if (typeof container === 'string') {\n container = document.querySelector(container);\n }\n\n // Use player wrapper as fallback if container couldn't be resolved.\n if (!container) {\n container = player.wrapper;\n }\n\n this.player = player;\n this.loadedAnimation = this.player.path + this.player.fileName + \".json\";\n this.attachedListeners = false;\n this.container = container;\n this.mode = mode;\n this.actions = actions;\n this.options = options;\n this.assignedSegment = null;\n this.scrolledAndPlayed = false;\n\n // Interaction chaining\n this.interactionIdx = 0;\n this.clickCounter = 0;\n this.playCounter = 0;\n this.holdStatus = null;\n this.stateHandler = new Map();\n this.transitionHandler = new Map();\n\n this.start();\n }\n\n stop() {\n if (this.mode === 'scroll') {\n window.removeEventListener('scroll', this.#scrollHandler, true);\n }\n\n if (this.mode === 'cursor') {\n this.container.removeEventListener('click', this.#clickHoverHandler);\n this.container.removeEventListener('click', this.#toggleHandler);\n this.container.removeEventListener('mouseenter', this.#clickHoverHandler);\n this.container.removeEventListener('touchstart', this.#clickHoverHandler);\n this.container.removeEventListener('touchmove', this.#touchmoveHandler);\n this.container.removeEventListener('mousemove', this.#mousemoveHandler);\n this.container.removeEventListener('mouseleave', this.#mouseoutHandler);\n this.container.removeEventListener('touchstart', this.#holdTransitionEnter);\n this.container.removeEventListener('touchend', this.#holdTransitionLeave);\n }\n\n if (this.mode === 'chain') {\n this.container.removeEventListener('click', this.#clickHoverHandler);\n this.container.removeEventListener('click', this.#clickHoverStateHandler);\n\n this.container.removeEventListener('mouseenter', this.#clickHoverHandler);\n this.container.removeEventListener('touchstart', this.#clickHoverHandler);\n this.container.removeEventListener('touchmove', this.#touchmoveHandler);\n this.container.removeEventListener('mouseenter', this.#clickHoverStateHandler);\n this.container.removeEventListener('touchstart', this.#clickHoverStateHandler);\n this.container.removeEventListener('mouseenter', this.#holdTransitionEnter);\n this.container.removeEventListener('touchstart', this.#holdTransitionEnter);\n\n this.container.removeEventListener('mouseleave', this.#holdTransitionLeave);\n this.container.removeEventListener('mousemove', this.#mousemoveHandler);\n this.container.removeEventListener('mouseout', this.#mouseoutHandler);\n this.container.removeEventListener('touchend', this.#holdTransitionLeave);\n\n if (this.player) {\n try {\n this.player.removeEventListener('loopComplete', this.#onCompleteHandler);\n this.player.removeEventListener('complete', this.#onCompleteHandler);\n this.player.removeEventListener('enterFrame', this.#cursorSyncHandler);\n this.player.removeEventListener('enterFrame', this.#holdHandler);\n } catch (e) {\n // User deleted the player before calling stop()\n // Ignore\n }\n }\n }\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n\n /**\n * [chain mode]\n * Init the state and transitions maps containing all the state and transition methods used for interaction chaining\n */\n #initInteractionMaps = () => {\n if (!this.player)\n return;\n\n let loopState = () => {\n if (this.actions[this.interactionIdx].loop) {\n this.player.loop = parseInt(this.actions[this.interactionIdx].loop) - 1;\n } else {\n this.player.loop = true;\n }\n this.player.autoplay = true;\n }\n let autoplayState = () => {\n this.player.loop = false;\n this.player.autoplay = true;\n }\n let clickState = () => {\n this.player.loop = false;\n this.player.autoplay = false;\n this.container.addEventListener('click', this.#clickHoverStateHandler);\n }\n let hoverState = () => {\n this.player.loop = false;\n this.player.autoplay = false;\n this.container.addEventListener('mouseenter', this.#clickHoverStateHandler);\n // For mobile\n this.container.addEventListener('touchstart', this.#clickHoverStateHandler, { passive: true });\n }\n let clickTransition = () => {\n this.container.addEventListener('click', this.#clickHoverHandler);\n }\n let hoverTransition = () => {\n this.container.addEventListener('mouseenter', this.#clickHoverHandler);\n // For mobile\n this.container.addEventListener('touchstart', this.#clickHoverHandler, { passive: true });\n }\n let holdTransition = () => {\n this.player.addEventListener('enterFrame', this.#holdHandler);\n this.container.addEventListener('mouseenter', this.#holdTransitionEnter);\n this.container.addEventListener('mouseleave', this.#holdTransitionLeave);\n // For mobile\n this.container.addEventListener('touchstart', this.#holdTransitionEnter, { passive: true });\n this.container.addEventListener('touchend', this.#holdTransitionLeave, { passive: true });\n }\n let holdState = () => {\n this.container.addEventListener('mouseenter', this.#holdTransitionEnter);\n this.container.addEventListener('mouseleave', this.#holdTransitionLeave);\n // For mobile\n this.container.addEventListener('touchstart', this.#holdTransitionEnter, { passive: true });\n this.container.addEventListener('touchend', this.#holdTransitionLeave, { passive: true });\n }\n let repeatTransition = () => {\n this.player.loop = true;\n this.player.autoplay = true;\n let handler = () => { this.#repeatTransition({ handler }) };\n this.player.addEventListener('loopComplete', handler);\n }\n let onCompleteTransition = () => {\n let state = this.actions[this.interactionIdx].state;\n\n if (state === 'loop')\n this.player.addEventListener('loopComplete', this.#onCompleteHandler);\n else\n this.player.addEventListener('complete', this.#onCompleteHandler);\n }\n let cursorSyncTransition = () => {\n this.player.stop();\n this.player.addEventListener('enterFrame', this.#cursorSyncHandler);\n this.container.addEventListener('mousemove', this.#mousemoveHandler);\n this.container.addEventListener('touchmove', this.#touchmoveHandler, { passive: false });\n this.container.addEventListener('mouseout', this.#mouseoutHandler);\n }\n this.stateHandler.set('loop', loopState);\n this.stateHandler.set('autoplay', autoplayState);\n this.stateHandler.set('click', clickState);\n this.stateHandler.set('hover', hoverState);\n this.stateHandler.set('hold', holdState);\n this.stateHandler.set('pauseHold', holdState);\n\n this.transitionHandler.set('click', clickTransition);\n this.transitionHandler.set('hover', hoverTransition);\n this.transitionHandler.set('hold', holdTransition);\n this.transitionHandler.set('pauseHold', holdTransition);\n this.transitionHandler.set('repeat', repeatTransition);\n this.transitionHandler.set('onComplete', onCompleteTransition);\n this.transitionHandler.set('seek', cursorSyncTransition);\n }\n\n /**\n * [chain mode]\n * Handle hover state on chained interactions\n */\n #clickHoverStateHandler = () => {\n let forceFlag = this.actions[this.interactionIdx].forceFlag;\n\n if (!forceFlag && this.player.isPaused === true) {\n this.#playSegmentHandler(true);\n } else if (forceFlag) {\n this.#playSegmentHandler(true);\n }\n }\n\n // [cursor mode]\n #toggleHandler = () => {\n if (this.clickCounter === 0) {\n this.player.play();\n this.clickCounter++;\n } else {\n this.clickCounter++;\n this.player.setDirection(this.player.playDirection * -1);\n this.player.play();\n }\n }\n\n /**\n * [cursor + chain mode]\n * Handle click and hover in both cursor and chain mode\n */\n #clickHoverHandler = () => {\n let forceFlag = this.actions[this.interactionIdx].forceFlag;\n let state = this.actions[this.interactionIdx].state;\n let transition = this.actions[this.interactionIdx].transition;\n\n // If we're in chain mode and the click or hover transition is used, otherwise just play the animation\n if (this.mode === 'chain') {\n // Check if there is a counter or not and make a transition\n if (this.actions[this.interactionIdx].count) {\n let clickLimit = parseInt(this.actions[this.interactionIdx].count);\n if (this.clickCounter < clickLimit - 1) {\n this.clickCounter += 1;\n return;\n }\n }\n // No click counter, so we remove the listeners and got to next interaction\n this.clickCounter = 0;\n // Transition when the animation has finished playing\n if (!forceFlag && (transition === \"click\" && state === \"click\") || (transition === \"hover\" && state === \"hover\"))\n this.transitionHandler.get(\"onComplete\").call();\n else\n this.nextInteraction();\n this.container.removeEventListener('click', this.#clickHoverHandler);\n this.container.removeEventListener('mouseenter', this.#clickHoverHandler);\n return;\n }\n // Using goToAndPlay rather than this.#playSegmentHandler(forceFlag) because we're in cursor mode\n // there for we want to play from the beginning\n if (!forceFlag && this.player.isPaused === true) {\n this.player.goToAndPlay(0, true);\n } else if (forceFlag) {\n this.player.goToAndPlay(0, true);\n }\n }\n\n // [cursor mode]\n #mousemoveHandler = e => {\n this.#cursorHandler(e.clientX, e.clientY);\n };\n\n // [cursor mode]\n #touchmoveHandler = e => {\n // Allows for syncing on Y axis without scrolling the page\n if (e.cancelable)\n e.preventDefault();\n this.#cursorHandler(e.touches[0].clientX, e.touches[0].clientY);\n };\n\n // [cursor mode]\n #mouseoutHandler = () => {\n this.#cursorHandler(-1, -1);\n };\n\n\n /**\n * [chain mode]\n * Handle when a segment of the animation has finished playing\n */\n #onCompleteHandler = () => {\n if (this.actions[this.interactionIdx].state === 'loop') {\n this.player.removeEventListener('loopComplete', this.#onCompleteHandler);\n } else {\n this.player.removeEventListener('complete', this.#onCompleteHandler);\n }\n this.nextInteraction();\n }\n\n // [chain mode]\n #repeatTransition = ({ handler }) => {\n let repeatAmount = 1;\n\n if (this.actions[this.interactionIdx].repeat)\n repeatAmount = this.actions[this.interactionIdx].repeat;\n if (this.playCounter >= repeatAmount - 1) {\n this.playCounter = 0;\n this.player.removeEventListener('loopComplete', handler);\n this.player.loop = false;\n this.player.autoplay = false;\n this.nextInteraction();\n } else {\n this.playCounter += 1;\n }\n }\n\n /**\n * [chain mode]\n * TODO: How does this work with markers? Get marker duration?\n */\n #cursorSyncHandler = () => {\n let frames = this.actions[this.interactionIdx].frames;\n\n if (frames && this.player.currentFrame >= parseInt(frames[1]) - 1) {\n this.player.removeEventListener('enterFrame', this.#cursorSyncHandler);\n this.container.removeEventListener('mousemove', this.#mousemoveHandler);\n this.container.removeEventListener('mouseout', this.#mouseoutHandler);\n setTimeout(this.nextInteraction, 0);\n }\n }\n\n /**\n * [chain mode]\n * TODO: How does this work with markers? Get marker duration?\n *\n * With the hold transition we can't use playSegment so we have to manually verify if\n * The user held long enough and check if the current frame is within the segment limits\n *\n */\n #holdHandler = () => {\n let frames = this.actions[this.interactionIdx].frames;\n\n if ((frames && this.player.currentFrame >= frames[1]) || (this.player.currentFrame >= this.player.totalFrames - 1)) {\n this.player.removeEventListener('enterFrame', this.#holdHandler);\n this.container.removeEventListener('mouseenter', this.#holdTransitionEnter);\n this.container.removeEventListener('mouseleave', this.#holdTransitionLeave);\n // For mobile\n this.container.removeEventListener('touchstart', this.#holdTransitionEnter, { passive: true });\n this.container.removeEventListener('touchend', this.#holdTransitionLeave, { passive: true });\n this.player.pause();\n\n this.holdStatus = false;\n this.nextInteraction();\n }\n // Pause player so that reverse playback doesn't leave the set frame boundries\n if (this.player.playDirection === -1 && frames && this.player.currentFrame < frames[0]) {\n this.player.pause();\n }\n }\n\n // [cursor + chain mode]\n #holdTransitionEnter = () => {\n // On first cursor enter needs check\n if (this.player.playDirection === -1 || this.holdStatus === null || !this.holdStatus) {\n this.player.setDirection(1);\n this.player.play();\n this.holdStatus = true;\n }\n }\n\n // [cursor + chain mode]\n #holdTransitionLeave = () => {\n if (this.actions[this.interactionIdx].transition === \"hold\" ||\n this.actions[this.interactionIdx].state === \"hold\" ||\n this.actions[0].type === \"hold\") {\n this.player.setDirection(-1);\n this.player.play();\n } else if (this.actions[this.interactionIdx].transition === \"pauseHold\" ||\n this.actions[this.interactionIdx].state === \"pauseHold\" ||\n this.actions[0].type === \"pauseHold\") {\n this.player.pause();\n }\n this.holdStatus = false;\n }\n\n // [chain mode]\n #clearStateListeners = () => {\n this.container.removeEventListener('click', this.#clickHoverHandler);\n this.container.removeEventListener('click', this.#clickHoverStateHandler);\n\n this.container.removeEventListener('mouseenter', this.#clickHoverHandler);\n this.container.removeEventListener('touchstart', this.#clickHoverHandler);\n this.container.removeEventListener('touchmove', this.#touchmoveHandler);\n this.container.removeEventListener('mouseenter', this.#clickHoverStateHandler);\n this.container.removeEventListener('touchstart', this.#clickHoverStateHandler);\n this.container.removeEventListener('mouseenter', this.#holdTransitionEnter);\n this.container.removeEventListener('touchstart', this.#holdTransitionEnter);\n\n this.container.removeEventListener('mouseleave', this.#holdTransitionLeave);\n this.container.removeEventListener('mousemove', this.#mousemoveHandler);\n this.container.removeEventListener('mouseout', this.#mouseoutHandler);\n this.container.removeEventListener('touchend', this.#holdTransitionLeave);\n\n if (this.player) {\n try {\n this.player.removeEventListener('loopComplete', this.#onCompleteHandler);\n this.player.removeEventListener('complete', this.#onCompleteHandler);\n this.player.removeEventListener('enterFrame', this.#cursorSyncHandler);\n this.player.removeEventListener('enterFrame', this.#holdHandler);\n } catch (e) {\n // User deleted the player before calling stop()\n // Ignore\n }\n }\n }\n\n jumpToInteraction = (index) => {\n this.#clearStateListeners();\n this.interactionIdx = index;\n this.interactionIdx < 0 ? this.interactionIdx = 0 : this.interactionIdx;\n this.nextInteraction(false);\n }\n\n // [chain mode]\n nextInteraction = (incrementIndex = true) => {\n this.oldInterctionIdx = this.interactionIdx;\n // If state is hover or click we need to remove listeners\n this.#clearStateListeners();\n this.player.loop = false;\n\n // Check if theres a jump-to before incrementing\n let jumpToIndex = this.actions[this.interactionIdx].jumpTo;\n if (jumpToIndex) {\n // If jumpToIndex is inside action length jump to it otherwise go to first action\n if (jumpToIndex >= 0 && jumpToIndex < this.actions.length) {\n this.interactionIdx = jumpToIndex;\n this.#chainedInteractionHandler({ ignorePath: false });\n } else {\n this.interactionIdx = 0;\n this.player.goToAndStop(0, true);\n this.#chainedInteractionHandler({ ignorePath: false });\n }\n } else {\n // Go to next interaction\n if (incrementIndex)\n this.interactionIdx++;\n if (this.interactionIdx >= this.actions.length) {\n // Go back to the first interaction\n if (this.actions[this.actions.length - 1].reset) {\n this.interactionIdx = 0;\n this.player.resetSegments(true);\n if (this.actions[this.interactionIdx].frames)\n this.player.goToAndStop(this.actions[this.interactionIdx].frames, true);\n else\n this.player.goToAndStop(0, true);\n this.#chainedInteractionHandler({ ignorePath: false });\n }\n else {\n this.interactionIdx = this.actions.length - 1;\n this.#chainedInteractionHandler({ ignorePath: false });\n }\n } else {\n this.#chainedInteractionHandler({ ignorePath: false });\n }\n }\n\n // Emit event from the lottie-player element\n this.container.dispatchEvent(new CustomEvent(\"transition\", {\n bubbles: true,\n composed: true,\n detail: { oldIndex: this.oldInterctionIdx, newIndex: this.interactionIdx }\n }));\n }\n\n /**\n * [chain mode]\n * Checks if frames are an array or string, and calls appropriate method to play animation\n */\n #playSegmentHandler = (forceFlag) => {\n let frames = this.actions[this.interactionIdx].frames;\n\n //If no frame segment is defined, play the whole animation\n if (!frames) {\n this.player.resetSegments(true);\n this.player.goToAndPlay(0, true);\n return;\n }\n // If using named markers\n if (typeof frames === 'string') {\n this.player.goToAndPlay(frames, forceFlag);\n } else {\n this.player.playSegments(frames, forceFlag);\n }\n }\n\n /**\n * [chain mode]\n * Load a new animation using the path defined in the current interaction\n */\n #loadAnimationInChain = () => {\n let path = this.actions[this.interactionIdx].path;\n\n // The animation path declared on the lottie-player was saved in the constructor under 'enteredPlayer'\n // We assume that the path on the lottie-player element is the animation to use in the first action\n if (!path) {\n // If we passed animationData to Lottie-Interactivity, load the animation data otherwise use the path\n if (typeof this.enteredPlayer === 'object' && this.enteredPlayer.constructor.name === 'AnimationItem') {\n path = this.enteredPlayer;\n\n if (this.player === path) {\n this.#chainedInteractionHandler({ ignorePath: true });\n return;\n }\n } else {\n path = this.loadedAnimation;\n let fileName = path.substr(path.lastIndexOf('/') + 1);\n fileName = fileName.substr(0, fileName.lastIndexOf('.json'));\n\n // Prevents reloading animation the same animation\n if (this.player.fileName === fileName) {\n this.#chainedInteractionHandler({ ignorePath: true });\n return;\n }\n }\n }\n\n // Force width and height on the container to retain its size while the next animation is being loaded\n let lottieContainerSize = this.container.getBoundingClientRect();\n let newContainerStyle = \"width: \" + lottieContainerSize.width + \"px !important; height: \" +\n lottieContainerSize.height + \"px !important; background: \" + this.container.style.background;\n this.container.setAttribute('style', newContainerStyle);\n\n if (!(typeof this.enteredPlayer === 'object' && this.enteredPlayer.constructor.name === 'AnimationItem')) {\n if (typeof this.enteredPlayer === 'string') {\n const elem = document.querySelector(this.enteredPlayer);\n\n if (elem && elem.nodeName === LOTTIE_PLAYER_NODE) {\n // Prevents adding the listeners multiple times if multiple animations are needed to be loaded from actions\n if (!this.attachedListeners) {\n // Remove the styling that prevents flickering\n elem.addEventListener(\"ready\", () => {\n this.container.style.width = '';\n this.container.style.height = '';\n });\n elem.addEventListener(\"load\", () => {\n this.player = elem.getLottie();\n this.#chainedInteractionHandler({ ignorePath: true });\n });\n this.attachedListeners = true;\n }\n // The LottieFiles player destroys the animation when a new one is Loaded\n elem.load(path);\n }\n } else if (this.enteredPlayer instanceof HTMLElement && this.enteredPlayer.nodeName === LOTTIE_PLAYER_NODE) {\n // Prevents adding the listeners multiple times if multiple animations are needed to be loaded from actions\n if (!this.attachedListeners) {\n // Remove the styling that prevents flickering\n this.enteredPlayer.addEventListener(\"ready\", () => {\n this.container.style.width = '';\n this.container.style.height = '';\n });\n this.enteredPlayer.addEventListener(\"load\", () => {\n this.player = this.enteredPlayer.getLottie();\n this.#chainedInteractionHandler({ ignorePath: true });\n });\n this.attachedListeners = true;\n }\n // The LottieFiles player destroys the animation when a new one is Loaded\n this.enteredPlayer.load(path);\n }\n // Throw error no player instance has been successfully resolved\n if (!this.player) {\n throw new Error(`${ERROR_PREFIX} Specified player is invalid.`, this.enteredPlayer);\n }\n } else {\n if (window.lottie) {\n this.stop();\n // Removes svg animation contained inside\n this.container.innerHTML = \"\";\n\n if (typeof path === 'object' && path.constructor.name === 'AnimationItem') {\n this.player = window.lottie.loadAnimation({\n loop: false,\n autoplay: false,\n animationData: path.animationData,\n container: this.container\n });\n }\n else {\n this.player = window.lottie.loadAnimation({\n loop: false,\n autoplay: false,\n path,\n container: this.container\n });\n }\n\n this.player.addEventListener('DOMLoaded', () => {\n // Remove the styling that prevents flickering\n this.container.style.width = '';\n this.container.style.height = '';\n this.#chainedInteractionHandler({ ignorePath: true });\n });\n } else {\n throw new Error(`${ERROR_PREFIX} A Lottie player is required.`);\n }\n }\n // Reset counters\n this.clickCounter = 0;\n this.playCounter = 0;\n }\n\n /**\n * [chain mode]\n * Check the action object at the current interaction index and set the needed interaction listeners as well\n * as any extra options\n */\n #chainedInteractionHandler = ({ ignorePath }) => {\n let frames = this.actions[this.interactionIdx].frames;\n let state = this.actions[this.interactionIdx].state;\n let transition = this.actions[this.interactionIdx].transition;\n let path = this.actions[this.interactionIdx].path;\n let stateFunction = this.stateHandler.get(state);\n let transitionFunction = this.transitionHandler.get(transition);\n let speed = this.actions[this.interactionIdx].speed ? this.actions[this.interactionIdx].speed : 1;\n let delay = this.actions[this.interactionIdx].delay ? this.actions[this.interactionIdx].delay : 0;\n\n // Check if path is detected or that we are at the beginning again and reset\n // If we are back at the first action, we need to reload the animation declared on the lottie-player element\n if (!ignorePath && (path || (this.actions[this.actions.length - 1].reset && this.interactionIdx === 0))) {\n this.#loadAnimationInChain();\n return;\n }\n setTimeout(() => {\n if (frames) {\n this.player.autoplay = false;\n this.player.resetSegments(true);\n this.player.goToAndStop(frames[0], true);\n }\n if (stateFunction) {\n stateFunction.call();\n } else if (state === \"none\") {\n this.player.loop = false;\n this.player.autoplay = false;\n }\n if (transitionFunction) {\n transitionFunction.call();\n }\n if (this.player.autoplay) {\n this.player.resetSegments(true);\n this.#playSegmentHandler(true);\n }\n this.player.setSpeed(speed);\n }, delay);\n }\n\n // [cursor mode]\n #cursorHandler = (x, y) => {\n // Resolve cursor position if cursor is inside container\n if (x !== -1 && y !== -1) {\n // Get container cursor position\n const pos = this.getContainerCursorPosition(x, y);\n\n // Use the resolved position\n x = pos.x;\n y = pos.y;\n }\n\n // Find the first action that satisfies the current position conditions\n const action = this.actions.find(({ position }) => {\n if (position) {\n if (Array.isArray(position.x) && Array.isArray(position.y)) {\n return x >= position.x[0] && x <= position.x[1] && y >= position.y[0] && y <= position.y[1];\n } else if (!Number.isNaN(position.x) && !Number.isNaN(position.y)) {\n return x === position.x && y === position.y;\n }\n }\n\n return false;\n });\n\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n\n // Process action types:\n if (action.type === 'seek' || action.transition === 'seek') {\n // Seek: Go to a frame based on player scroll position action\n const xPercent = (x - action.position.x[0]) / (action.position.x[1] - action.position.x[0]);\n const yPercent = (y - action.position.y[0]) / (action.position.y[1] - action.position.y[0]);\n\n this.player.playSegments(action.frames, true);\n\n if (action.position.y[0] < 0 && action.position.y[1] > 1) {\n this.player.goToAndStop(Math.floor(xPercent * this.player.totalFrames), true);\n } else {\n this.player.goToAndStop(Math.ceil(((xPercent + yPercent) / 2) * this.player.totalFrames), true);\n }\n } else if (action.type === 'loop') {\n this.player.playSegments(action.frames, true);\n } else if (action.type === 'play') {\n // Play: Reset segments and continue playing full animation from current position\n if (this.player.isPaused === true) {\n this.player.resetSegments();\n }\n this.player.playSegments(action.frames);\n } else if (action.type === 'stop') {\n this.player.resetSegments(true);\n // Stop: Stop playback\n this.player.goToAndStop(action.frames[0], true);\n }\n };\n\n // [scroll mode]\n #scrollHandler = () => {\n // Get container visibility percentage\n const currentPercent = this.getContainerVisibility();\n\n // Find the first action that satisfies the current position conditions\n const action = this.actions.find(\n ({ visibility }) => currentPercent >= visibility[0] && currentPercent <= visibility[1],\n );\n\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n\n // Process action types:\n if (action.type === 'seek') {\n // Seek: Go to a frame based on player scroll position action\n const start = action.frames[0];\n const end = action.frames.length == 2 ? action.frames[1] : (this.player.totalFrames - 1);\n\n // Use global frame reference for frames within the seek section.\n // Without this, if you follow a seek with a loop and then scroll back up,\n // it will treat frame numbers as relative to the loop.\n if (this.assignedSegment !== null) {\n this.player.resetSegments(true);\n this.assignedSegment = null;\n }\n\n this.player.goToAndStop(\n start + Math.round(\n ((currentPercent - action.visibility[0]) / (action.visibility[1] - action.visibility[0])) *\n (end - start)\n ),\n true,\n );\n } else if (action.type === 'loop') {\n this.player.loop = true;\n // Loop: Loop a given frames\n if (this.assignedSegment === null) {\n // if not playing any segments currently. play those segments and save to state\n this.player.playSegments(action.frames, true);\n this.assignedSegment = action.frames;\n } else {\n // if playing any segments currently.\n //check if segments in state are equal to the frames selected by action\n if (this.assignedSegment !== action.frames) {\n // if they are not equal. new segments are to be loaded\n this.player.playSegments(action.frames, true);\n this.assignedSegment = action.frames;\n } else {\n // if they are equal the play method must be called only if lottie is paused\n if (this.player.isPaused === true) {\n this.player.playSegments(action.frames, true);\n this.assignedSegment = action.frames;\n }\n }\n }\n } else if (action.type === 'play' || action.type === 'playOnce') {\n // Play: Reset segments and continue playing full animation from current position\n if (action.type === 'playOnce' && !this.scrolledAndPlayed) {\n this.scrolledAndPlayed = true;\n this.player.resetSegments(true);\n if (action.frames) {\n this.player.playSegments(action.frames, true);\n } else {\n this.player.play();\n }\n return;\n } else if (action.type === 'play' && this.player.isPaused) {\n this.player.resetSegments(true);\n if (action.frames) {\n this.player.playSegments(action.frames, true);\n } else {\n this.player.play();\n }\n }\n } else if (action.type === 'stop') {\n // Stop: Stop playback\n this.player.goToAndStop(action.frames[0], true);\n }\n };\n}\n\nexport const create = options => {\n const instance = new LottieInteractivity(options);\n instance.start();\n\n return instance;\n};\n\nexport default create;\n", "import \"../../../../node_modules/@lottiefiles/lottie-player/dist/lottie-player.esm.js\";\nimport { create } from \"../../../../node_modules/@lottiefiles/lottie-interactivity/dist/lottie-interactivity.es.js\";\n\nwindow.addEventListener(\"load\", (event) => {\n document.querySelectorAll(\"lottie-player\").forEach((player) => {\n const context = player.getAttribute(\"data-context\");\n // Supports toggling the player when hovering over a different container.\n if (context && player.hover) {\n const container = player.closest(context);\n container.addEventListener(\"mouseenter\", () => player.play());\n container.addEventListener(\"mouseleave\", () => player.stop());\n }\n\n // Plays on scroll if the player is not set to autoplay\n if (!player.autoplay) {\n create({\n player,\n mode: \"scroll\",\n actions: [\n {\n visibility: [0.25, 0.6],\n type: \"play\" + (player.loop ? \"\" : \"Once\"),\n },\n ],\n });\n }\n });\n});\n", "// This is not really a perfect check, but works fine.\n// From http://stackoverflow.com/questions/384286\nconst HAS_DOM_2 = typeof HTMLElement === \"object\";\nconst HAS_SHADOW = typeof ShadowRoot !== \"undefined\";\n\n/**\n * Determines whether an object is a DOM element or not.\n * @param {!Object} obj Object to check\n * @return {boolean} True if object is an element\n */\nexport function isDOMElement(obj) {\n if (HAS_SHADOW && obj instanceof ShadowRoot) {\n return true;\n }\n return HAS_DOM_2\n ? obj instanceof HTMLElement\n : obj &&\n typeof obj === \"object\" &&\n obj !== null &&\n obj.nodeType === 1 &&\n typeof obj.nodeName === \"string\";\n}\n\n/**\n * Adds an array of classes to an element\n * @param {!Element} el Element to add classes to\n * @param {!Array} classNames Class names to add\n * @return {void}\n */\nexport function addClasses(el, classNames) {\n classNames.forEach(function(className) {\n el.classList.add(className);\n });\n}\n\n/**\n * Removes an array of classes from an element\n * @param {!Element} el Element to remove classes from\n * @param {!Array} classNames Classes to remove\n * @return {void}\n */\nexport function removeClasses(el, classNames) {\n classNames.forEach(function(className) {\n el.classList.remove(className);\n });\n}\n", "/* UNMINIFIED RULES\n\n@keyframes lum-noop {\n 0% { zoom: 1; }\n}\n\n.lum-lightbox {\n position: fixed;\n display: none;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n\n.lum-lightbox.lum-open {\n display: block;\n}\n\n.lum-lightbox.lum-opening, .lum-lightbox.lum-closing {\n animation: lum-noop 1ms;\n}\n\n.lum-lightbox-inner {\n position: absolute;\n top: 0%;\n right: 0%;\n bottom: 0%;\n left: 0%;\n\n overflow: hidden;\n}\n\n.lum-lightbox-loader {\n display: none;\n}\n\n.lum-lightbox-inner img {\n max-width: 100%;\n max-height: 100%;\n}\n\n.lum-lightbox-image-wrapper {\n vertical-align: middle;\n display: table-cell;\n text-align: center;\n}\n*/\n\nconst RULES = `@keyframes lum-noop{0%{zoom:1}}.lum-lightbox{position:fixed;display:none;top:0;right:0;bottom:0;left:0}.lum-lightbox.lum-open{display:block}.lum-lightbox.lum-closing,.lum-lightbox.lum-opening{animation:lum-noop 1ms}.lum-lightbox-inner{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.lum-lightbox-loader{display:none}.lum-lightbox-inner img{max-width:100%;max-height:100%}.lum-lightbox-image-wrapper{vertical-align:middle;display:table-cell;text-align:center}`;\n\n/**\n * Injects the base stylesheet needed to display the lightbox\n * element.\n * If `node` is the document, the stylesheet will be appended to ``.\n * @param {!Node} node Node to append stylesheet to\n * @return {void}\n */\nexport default function injectBaseStylesheet(node) {\n if (!node || node === document) {\n node = document.head;\n }\n\n if (node.querySelector(\".lum-base-styles\")) {\n return;\n }\n\n const styleEl = document.createElement(\"style\");\n styleEl.type = \"text/css\";\n styleEl.classList.add(\"lum-base-styles\");\n\n styleEl.appendChild(document.createTextNode(RULES));\n\n node.insertBefore(styleEl, node.firstChild);\n}\n", "/**\n * Throws a missing parameter error\n */\nexport default function throwIfMissing() {\n throw new Error(\"Missing parameter\");\n}\n", "import { isDOMElement, addClasses, removeClasses } from \"./util/dom\";\nimport throwIfMissing from \"./util/throwIfMissing\";\n\nconst LEFT_ARROW = 37;\nconst RIGHT_ARROW = 39;\n\n// All officially-supported browsers have this, but it's easy to\n// account for, just in case.\nconst HAS_ANIMATION =\n typeof document === \"undefined\"\n ? false\n : \"animation\" in document.createElement(\"div\").style;\n\n/**\n * Represents the default lightbox implementation\n */\nexport default class Lightbox {\n /**\n * Constructor\n * @param {Object=} options Lightbox options\n */\n constructor(options = {}) {\n this._sizeImgWrapperEl = this._sizeImgWrapperEl.bind(this);\n this.showNext = this.showNext.bind(this);\n this.showPrevious = this.showPrevious.bind(this);\n this._completeOpen = this._completeOpen.bind(this);\n this._completeClose = this._completeClose.bind(this);\n this._handleKeydown = this._handleKeydown.bind(this);\n this._handleClose = this._handleClose.bind(this);\n\n const {\n namespace = null,\n parentEl = throwIfMissing(),\n triggerEl = throwIfMissing(),\n sourceAttribute = throwIfMissing(),\n caption = null,\n includeImgixJSClass = false,\n _gallery = null,\n _arrowNavigation = null,\n closeButtonEnabled = true,\n closeTrigger = \"click\"\n } = options;\n\n this.settings = {\n namespace,\n parentEl,\n triggerEl,\n sourceAttribute,\n caption,\n includeImgixJSClass,\n _gallery,\n _arrowNavigation,\n closeButtonEnabled,\n onClose: options.onClose,\n closeTrigger\n };\n\n if (!isDOMElement(this.settings.parentEl)) {\n throw new TypeError(\n \"`new Lightbox` requires a DOM element passed as `parentEl`.\"\n );\n }\n\n this.currentTrigger = this.settings.triggerEl;\n\n this.openClasses = this._buildClasses(\"open\");\n this.openingClasses = this._buildClasses(\"opening\");\n this.closingClasses = this._buildClasses(\"closing\");\n\n this.hasBeenLoaded = false;\n this.elementBuilt = false;\n }\n\n /**\n * Handles closing of the lightbox\n * @param {!Event} e Event that triggered closing\n * @return {void}\n * @protected\n */\n _handleClose(e) {\n if (e && typeof e.preventDefault === \"function\") {\n e.preventDefault();\n }\n\n const onClose = this.settings.onClose;\n if (onClose && typeof onClose === \"function\") {\n onClose();\n }\n }\n\n /**\n * Binds event listeners to the trigger element\n * @return {void}\n * @protected\n */\n _bindEventListeners() {\n this.el.addEventListener(this.settings.closeTrigger, this._handleClose);\n if (this.closeButtonEl) {\n this.closeButtonEl.addEventListener(\"click\", this._handleClose);\n }\n }\n\n /**\n * Builds a class list using the namespace and suffix, if any.\n * @param {string} suffix Suffix to add to each class\n * @return {!Array} Class list\n * @protected\n */\n _buildClasses(suffix) {\n const classes = [`lum-${suffix}`];\n\n const ns = this.settings.namespace;\n if (ns) {\n classes.push(`${ns}-${suffix}`);\n }\n\n return classes;\n }\n\n /**\n * Creates the lightbox element\n * @return {void}\n * @protected\n */\n _buildElement() {\n this.el = document.createElement(\"div\");\n addClasses(this.el, this._buildClasses(\"lightbox\"));\n\n this.innerEl = document.createElement(\"div\");\n addClasses(this.innerEl, this._buildClasses(\"lightbox-inner\"));\n this.el.appendChild(this.innerEl);\n\n const loaderEl = document.createElement(\"div\");\n addClasses(loaderEl, this._buildClasses(\"lightbox-loader\"));\n this.innerEl.appendChild(loaderEl);\n\n this.imgWrapperEl = document.createElement(\"div\");\n addClasses(this.imgWrapperEl, this._buildClasses(\"lightbox-image-wrapper\"));\n this.innerEl.appendChild(this.imgWrapperEl);\n\n const positionHelperEl = document.createElement(\"span\");\n addClasses(\n positionHelperEl,\n this._buildClasses(\"lightbox-position-helper\")\n );\n this.imgWrapperEl.appendChild(positionHelperEl);\n\n this.imgEl = document.createElement(\"img\");\n addClasses(this.imgEl, this._buildClasses(\"img\"));\n positionHelperEl.appendChild(this.imgEl);\n\n this.captionEl = document.createElement(\"p\");\n addClasses(this.captionEl, this._buildClasses(\"lightbox-caption\"));\n positionHelperEl.appendChild(this.captionEl);\n\n if (this.settings.closeButtonEnabled) {\n this.closeButtonEl = document.createElement(\"div\");\n addClasses(this.closeButtonEl, this._buildClasses(\"close-button\"));\n this.el.appendChild(this.closeButtonEl);\n }\n\n if (this.settings._gallery) {\n this._setUpGalleryElements();\n }\n\n this.settings.parentEl.appendChild(this.el);\n\n this._updateImgSrc();\n this._updateCaption();\n\n if (this.settings.includeImgixJSClass) {\n this.imgEl.classList.add(\"imgix-fluid\");\n }\n }\n\n /**\n * Creates gallery elements such as previous/next buttons\n * @return {void}\n * @protected\n */\n _setUpGalleryElements() {\n this._buildGalleryButton(\"previous\", this.showPrevious);\n this._buildGalleryButton(\"next\", this.showNext);\n }\n\n /**\n * Creates a gallery button\n * @param {string} name Name of button\n * @param {!Function} fn Click handler\n * @return {void}\n * @protected\n */\n _buildGalleryButton(name, fn) {\n const btn = document.createElement(\"button\");\n this[`${name}Button`] = btn;\n\n btn.innerText = name;\n addClasses(btn, this._buildClasses(`${name}-button`));\n addClasses(btn, this._buildClasses(\"gallery-button\"));\n this.innerEl.appendChild(btn);\n\n btn.addEventListener(\n \"click\",\n e => {\n e.stopPropagation();\n\n fn();\n },\n false\n );\n }\n\n /**\n * Sizes the image wrapper\n * @return {void}\n * @protected\n */\n _sizeImgWrapperEl() {\n const style = this.imgWrapperEl.style;\n style.width = `${this.innerEl.clientWidth}px`;\n style.maxWidth = `${this.innerEl.clientWidth}px`;\n style.height = `${this.innerEl.clientHeight -\n this.captionEl.clientHeight}px`;\n style.maxHeight = `${this.innerEl.clientHeight -\n this.captionEl.clientHeight}px`;\n }\n\n /**\n * Updates caption from settings\n * @return {void}\n * @protected\n */\n _updateCaption() {\n const captionType = typeof this.settings.caption;\n let caption = \"\";\n\n if (captionType === \"string\") {\n caption = this.settings.caption;\n } else if (captionType === \"function\") {\n caption = this.settings.caption(this.currentTrigger);\n }\n\n this.captionEl.innerHTML = caption;\n }\n\n /**\n * Updates image element from the trigger element's attributes\n * @return {void}\n * @protected\n */\n _updateImgSrc() {\n const imageURL = this.currentTrigger.getAttribute(\n this.settings.sourceAttribute\n );\n\n if (!imageURL) {\n throw new Error(\n `No image URL was found in the ${\n this.settings.sourceAttribute\n } attribute of the trigger.`\n );\n }\n\n const loadingClasses = this._buildClasses(\"loading\");\n\n if (!this.hasBeenLoaded) {\n addClasses(this.el, loadingClasses);\n }\n\n this.imgEl.onload = () => {\n removeClasses(this.el, loadingClasses);\n this.hasBeenLoaded = true;\n };\n\n this.imgEl.setAttribute(\"src\", imageURL);\n }\n\n /**\n * Handles key up/down events for moving between items\n * @param {!Event} e Keyboard event\n * @return {void}\n * @protected\n */\n _handleKeydown(e) {\n if (e.keyCode == LEFT_ARROW) {\n this.showPrevious();\n } else if (e.keyCode == RIGHT_ARROW) {\n this.showNext();\n }\n }\n\n /**\n * Shows the next item if in a gallery\n * @return {void}\n */\n showNext() {\n if (!this.settings._gallery) {\n return;\n }\n\n this.currentTrigger = this.settings._gallery.nextTrigger(\n this.currentTrigger\n );\n this._updateImgSrc();\n this._updateCaption();\n this._sizeImgWrapperEl();\n this.settings._gallery.onChange({ imgEl: this.imgEl });\n }\n\n /**\n * Shows the previous item if in a gallery\n * @return {void}\n */\n showPrevious() {\n if (!this.settings._gallery) {\n return;\n }\n\n this.currentTrigger = this.settings._gallery.previousTrigger(\n this.currentTrigger\n );\n this._updateImgSrc();\n this._updateCaption();\n this._sizeImgWrapperEl();\n this.settings._gallery.onChange({ imgEl: this.imgEl });\n }\n\n /**\n * Opens the lightbox\n * @return {void}\n */\n open() {\n if (!this.elementBuilt) {\n this._buildElement();\n this._bindEventListeners();\n this.elementBuilt = true;\n }\n\n // When opening, always reset to the trigger we were passed\n this.currentTrigger = this.settings.triggerEl;\n\n // Make sure to re-set the `img` `src`, in case it's been changed\n // by someone/something else.\n this._updateImgSrc();\n this._updateCaption();\n\n addClasses(this.el, this.openClasses);\n\n this._sizeImgWrapperEl();\n window.addEventListener(\"resize\", this._sizeImgWrapperEl, false);\n\n if (this.settings._arrowNavigation) {\n window.addEventListener(\"keydown\", this._handleKeydown, false);\n }\n\n if (HAS_ANIMATION) {\n this.el.addEventListener(\"animationend\", this._completeOpen, false);\n addClasses(this.el, this.openingClasses);\n }\n }\n\n /**\n * Closes the lightbox\n * @return {void}\n */\n close() {\n window.removeEventListener(\"resize\", this._sizeImgWrapperEl, false);\n\n if (this.settings._arrowNavigation) {\n window.removeEventListener(\"keydown\", this._handleKeydown, false);\n }\n\n if (HAS_ANIMATION) {\n this.el.addEventListener(\"animationend\", this._completeClose, false);\n addClasses(this.el, this.closingClasses);\n } else {\n removeClasses(this.el, this.openClasses);\n }\n }\n\n /**\n * Handles animations on completion of opening the lightbox\n * @return {void}\n * @protected\n */\n _completeOpen() {\n this.el.removeEventListener(\"animationend\", this._completeOpen, false);\n\n removeClasses(this.el, this.openingClasses);\n }\n\n /**\n * Handles animations on completion of closing the lightbox\n * @return {void}\n * @protected\n */\n _completeClose() {\n this.el.removeEventListener(\"animationend\", this._completeClose, false);\n\n removeClasses(this.el, this.openClasses);\n removeClasses(this.el, this.closingClasses);\n }\n\n /**\n * Destroys the lightbox\n * @return {void}\n */\n destroy() {\n if (this.el) {\n this.settings.parentEl.removeChild(this.el);\n }\n }\n}\n", "import { isDOMElement } from \"./util/dom\";\nimport injectBaseStylesheet from \"./injectBaseStylesheet\";\nimport Lightbox from \"./Lightbox\";\n\n/**\n * Represents the default luminous lightbox\n */\nexport default class Luminous {\n /**\n * Constructor\n * @param {!Element} trigger Trigger element to open lightbox\n * @param {Object=} options Luminous options\n */\n constructor(trigger, options = {}) {\n this.VERSION = \"2.3.5\";\n this.destroy = this.destroy.bind(this);\n this.open = this.open.bind(this);\n this.close = this.close.bind(this);\n this._handleKeyup = this._handleKeyup.bind(this);\n\n this.isOpen = false;\n\n this.trigger = trigger;\n\n if (!isDOMElement(this.trigger)) {\n throw new TypeError(\n \"`new Luminous` requires a DOM element as its first argument.\"\n );\n }\n\n let rootNode = document;\n if (\"getRootNode\" in this.trigger) {\n rootNode = this.trigger.getRootNode();\n }\n // Prefix for generated element class names (e.g. `my-ns` will\n // result in classes such as `my-ns-lightbox`. Default `lum-`\n // prefixed classes will always be added as well.\n const namespace = options[\"namespace\"] || null;\n // Which attribute to pull the lightbox image source from.\n const sourceAttribute = options[\"sourceAttribute\"] || \"href\";\n // Captions can be a literal string, or a function that receives the Luminous instance's trigger element as an argument and returns a string. Supports HTML, so use caution when dealing with user input.\n const caption = options[\"caption\"] || null;\n // The event to listen to on the _trigger_ element: triggers opening.\n const openTrigger = options[\"openTrigger\"] || \"click\";\n // The event to listen to on the _lightbox_ element: triggers closing.\n const closeTrigger = options[\"closeTrigger\"] || \"click\";\n // Allow closing by pressing escape.\n const closeWithEscape = \"closeWithEscape\" in options ? !!options[\"closeWithEscape\"] : true;\n // Automatically close when the page is scrolled.\n const closeOnScroll = options[\"closeOnScroll\"] || false;\n const closeButtonEnabled =\n options[\"showCloseButton\"] != null ? options[\"showCloseButton\"] : true;\n const appendToNode =\n options[\"appendToNode\"] ||\n (rootNode === document ? document.body : rootNode);\n // A selector defining what to append the lightbox element to.\n const appendToSelector = options[\"appendToSelector\"] || null;\n // If present (and a function), this will be called\n // whenever the lightbox is opened.\n const onOpen = options[\"onOpen\"] || null;\n // If present (and a function), this will be called\n // whenever the lightbox is closed.\n const onClose = options[\"onClose\"] || null;\n // When true, adds the `imgix-fluid` class to the `img`\n // inside the lightbox. See https://github.com/imgix/imgix.js\n // for more information.\n const includeImgixJSClass = options[\"includeImgixJSClass\"] || false;\n // Add base styles to the page. See the \"Theming\"\n // section of README.md for more information.\n const injectBaseStyles = \"injectBaseStyles\" in options ? !!options[\"injectBaseStyles\"] : true;\n // Internal use only!\n const _gallery = options[\"_gallery\"] || null;\n const _arrowNavigation = options[\"_arrowNavigation\"] || null;\n\n this.settings = {\n namespace,\n sourceAttribute,\n caption,\n openTrigger,\n closeTrigger,\n closeWithEscape,\n closeOnScroll,\n closeButtonEnabled,\n appendToNode,\n appendToSelector,\n onOpen,\n onClose,\n includeImgixJSClass,\n injectBaseStyles,\n _gallery,\n _arrowNavigation\n };\n\n let injectionRoot = document.body;\n if (appendToNode && \"getRootNode\" in appendToNode) {\n injectionRoot = appendToNode.getRootNode();\n }\n\n if (this.settings.injectBaseStyles) {\n injectBaseStylesheet(injectionRoot);\n }\n\n this._buildLightbox();\n this._bindEventListeners();\n }\n\n /**\n * Opens the lightbox\n * @param {Event=} e Event which triggered opening\n * @return {void}\n */\n open(e) {\n if (e && typeof e.preventDefault === \"function\") {\n e.preventDefault();\n }\n\n this.lightbox.open();\n\n if (this.settings.closeOnScroll) {\n window.addEventListener(\"scroll\", this.close, false);\n }\n\n const onOpen = this.settings.onOpen;\n if (onOpen && typeof onOpen === \"function\") {\n onOpen();\n }\n\n this.isOpen = true;\n }\n\n /**\n * Closes the lightbox\n * @param {Event=} e Event which triggered closing\n * @return {void}\n */\n close(e) {\n if (this.settings.closeOnScroll) {\n window.removeEventListener(\"scroll\", this.close, false);\n }\n\n this.lightbox.close();\n\n const onClose = this.settings.onClose;\n if (onClose && typeof onClose === \"function\") {\n onClose();\n }\n\n this.isOpen = false;\n }\n\n /**\n * Builds the internal lightbox instance\n * @protected\n * @return {void}\n */\n _buildLightbox() {\n let parentEl = this.settings.appendToNode;\n\n if (this.settings.appendToSelector) {\n parentEl = document.querySelector(this.settings.appendToSelector);\n }\n\n this.lightbox = new Lightbox({\n namespace: this.settings.namespace,\n parentEl: parentEl,\n triggerEl: this.trigger,\n sourceAttribute: this.settings.sourceAttribute,\n caption: this.settings.caption,\n includeImgixJSClass: this.settings.includeImgixJSClass,\n closeButtonEnabled: this.settings.closeButtonEnabled,\n _gallery: this.settings._gallery,\n _arrowNavigation: this.settings._arrowNavigation,\n closeTrigger: this.settings.closeTrigger,\n onClose: this.close\n });\n }\n\n /**\n * Binds lightbox events to the trigger element\n * @protected\n * @return {void}\n */\n _bindEventListeners() {\n this.trigger.addEventListener(this.settings.openTrigger, this.open, false);\n\n if (this.settings.closeWithEscape) {\n window.addEventListener(\"keyup\", this._handleKeyup, false);\n }\n }\n\n /**\n * Unbinds all events\n * @protected\n * @return {void}\n */\n _unbindEvents() {\n this.trigger.removeEventListener(\n this.settings.openTrigger,\n this.open,\n false\n );\n if (this.lightbox.el) {\n this.lightbox.el.removeEventListener(\n this.settings.closeTrigger,\n this.close,\n false\n );\n }\n\n if (this.settings.closeWithEscape) {\n window.removeEventListener(\"keyup\", this._handleKeyup, false);\n }\n }\n\n /**\n * Handles key up events and closes lightbox when esc is pressed\n * @param {!Event} e Keyboard event\n * @return {void}\n * @protected\n */\n _handleKeyup(e) {\n if (this.isOpen && e.keyCode === 27) {\n this.close();\n }\n }\n\n /**\n * Destroys internal lightbox and unbinds events\n * @return {void}\n */\n destroy() {\n this._unbindEvents();\n this.lightbox.destroy();\n }\n}\n\n/* eslint-disable no-self-assign */\nLuminous.prototype[\"open\"] = Luminous.prototype.open;\nLuminous.prototype[\"close\"] = Luminous.prototype.close;\nLuminous.prototype[\"destroy\"] = Luminous.prototype.destroy;\n/* eslint-enable no-self-assign */\n", "import Luminous from \"./Luminous\";\n\n/**\n * Represents a gallery-style lightbox\n */\nexport default class LuminousGallery {\n /**\n * Constructor\n * @param {!Array} triggers Array of trigger elements\n * @param {Object=} options Gallery options\n * @param {Object=} luminousOpts Luminous options\n */\n constructor(triggers, options = {}, luminousOpts = {}) {\n const optionsDefaults = {\n arrowNavigation: true,\n onChange: null,\n };\n\n this.settings = Object.assign({}, optionsDefaults, options);\n\n this.triggers = triggers;\n this.luminousOpts = luminousOpts;\n this.luminousOpts[\"_gallery\"] = this;\n this.luminousOpts[\"_arrowNavigation\"] = this.settings[\"arrowNavigation\"];\n this._constructLuminousInstances();\n }\n\n /**\n * Creates internal luminous instances\n * @protected\n * @return {void}\n */\n _constructLuminousInstances() {\n this.luminousInstances = [];\n\n const triggerLen = this.triggers.length;\n for (let i = 0; i < triggerLen; i++) {\n const trigger = this.triggers[i];\n const lum = new Luminous(trigger, this.luminousOpts);\n this.luminousInstances.push(lum);\n }\n }\n\n /**\n * Determines the next trigger element\n * @param {!Element} trigger Current trigger element\n * @return {!Element}\n */\n nextTrigger(trigger) {\n const nextTriggerIndex =\n Array.prototype.indexOf.call(this.triggers, trigger) + 1;\n\n return nextTriggerIndex >= this.triggers.length\n ? this.triggers[0]\n : this.triggers[nextTriggerIndex];\n }\n\n /**\n * Determines the previous trigger element\n * @param {!Element} trigger Current trigger element\n * @return {!Element}\n */\n previousTrigger(trigger) {\n const prevTriggerIndex =\n Array.prototype.indexOf.call(this.triggers, trigger) - 1;\n\n return prevTriggerIndex < 0\n ? this.triggers[this.triggers.length - 1]\n : this.triggers[prevTriggerIndex];\n }\n\n /**\n * Callback called when current image is changed\n * @param {Object} params\n * @param {!Element} params.imgEl New image element\n */\n onChange({ imgEl }) {\n const onChange = this.settings.onChange;\n if (onChange && typeof onChange === \"function\") {\n onChange({ imgEl });\n }\n }\n\n /**\n * Destroys the internal luminous instances\n * @return {void}\n */\n destroy() {\n this.luminousInstances.forEach(instance => instance.destroy());\n }\n}\n\n/* eslint-disable-next-line no-self-assign */\nLuminousGallery.prototype[\"destroy\"] = LuminousGallery.prototype.destroy;\n", "import { LuminousGallery } from \"../../../../node_modules/luminous-lightbox/es/lum.js\";\n\nconst galleryOpts = {\n // Whether pressing the arrow keys should move to the next/previous slide.\n arrowNavigation: true,\n // A callback triggered when the image changes that is passed the image HTML element\n onChange: ({ imgEl }) => { },\n};\n\nconst luminousOpts = {\n // These options have the same defaults and potential values as the Luminous class.\n sourceAttribute: \"src\",\n showCloseButton: true,\n};\n\ndocument.querySelectorAll(\".gallery\").forEach((gallery) => {\n const container = gallery.querySelector(\"ul\");\n const slides = Array.from(container.querySelectorAll(\"li\"));\n\n // Shuffles the slides first for randomness.\n slides.sort(() => Math.random() - 0.5);\n slides.forEach(slide => container.appendChild(slide));\n\n new LuminousGallery(\n gallery.querySelectorAll(\"img\"),\n galleryOpts,\n luminousOpts\n );\n\n});\n"], "mappings": "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", "names": ["global", "window", "supportsAdoptingStyleSheets", "ShadowRoot", "ShadyCSS", "nativeShadow", "Document", "prototype", "CSSStyleSheet", "constructionToken", "Symbol", "cssTagCache", "WeakMap", "CSSResult", "constructor", "cssText", "strings", "safeToken", "this", "_$cssResult$", "Error", "_strings", "styleSheet", "_styleSheet", "cacheable", "length", "get", "replaceSync", "set", "toString", "unsafeCSS", "value", "String", "css", "values", "reduce", "acc", "v", "idx", "adoptStyles", "renderRoot", "styles", "adoptedStyleSheets", "map", "s", "forEach", "style", "document", "createElement", "nonce", "litNonce", "setAttribute", "textContent", "appendChild", "getCompatibleStyle", "sheet", "rule", "cssRules", "trustedTypes", "emptyStringForBooleanAttribute", "emptyScript", "polyfillSupport", "reactiveElementPolyfillSupport", "defaultConverter", "toAttribute", "type", "Boolean", "Object", "Array", "JSON", "stringify", "fromAttribute", "fromValue", "Number", "parse", "e", "notEqual", "old", "defaultPropertyDeclaration", "attribute", "converter", "reflect", "hasChanged", "ReactiveElement", "HTMLElement", "super", "_$Ei", "Map", "isUpdatePending", "hasUpdated", "__reflectingProperty", "_initialize", "static", "initializer", "finalize", "_a", "_initializers", "push", "observedAttributes", "attributes", "elementProperties", "p", "attr", "__attributeNameForProperty", "__attributeToPropertyMap", "name", "options", "state", "noAccessor", "hasOwnProperty", "key", "descriptor", "getPropertyDescriptor", "defineProperty", "oldValue", "requestUpdate", "configurable", "enumerable", "finalized", "superCtor", "getPrototypeOf", "props", "properties", "propKeys", "getOwnPropertyNames", "getOwnPropertySymbols", "createProperty", "elementStyles", "finalizeStyles", "isArray", "Set", "flat", "Infinity", "reverse", "unshift", "toLowerCase", "__updatePromise", "Promise", "res", "enableUpdating", "_$changedProperties", "__saveInstanceProperties", "i", "addController", "controller", "__controllers", "isConnected", "_b", "hostConnected", "call", "t", "removeController", "splice", "indexOf", "_v", "__instanceProperties", "createRenderRoot", "shadowRoot", "attachShadow", "shadowRootOptions", "connectedCallback", "c", "_requestedUpdate", "disconnectedCallback", "hostDisconnected", "attributeChangedCallback", "_old", "_$attributeToProperty", "__propertyToAttribute", "attrValue", "removeAttribute", "ctor", "propName", "getPropertyOptions", "shouldRequestUpdate", "has", "__reflectingProperties", "__enqueueUpdate", "async", "reject", "result", "scheduleUpdate", "performUpdate", "shouldUpdate", "changedProperties", "willUpdate", "hostUpdate", "update", "__markUpdated", "_$didUpdate", "_changedProperties", "hostUpdated", "firstUpdated", "updated", "updateComplete", "getUpdateComplete", "k", "mode", "o", "_d", "reactiveElementVersions", "policy", "createPolicy", "createHTML", "marker", "Math", "random", "slice", "markerMatch", "nodeMarker", "d", "createMarker", "arguments", "createComment", "isPrimitive", "isIterable", "iterator", "textEndRegex", "commentEndRegex", "comment2EndRegex", "tagEndRegex", "RegExp", "singleQuoteAttrEndRegex", "doubleQuoteAttrEndRegex", "rawTextElement", "tag", "_$litType$", "html", "svg", "noChange", "for", "nothing", "templateCache", "walker", "createTreeWalker", "getTemplateHtml", "rawTextEndRegex", "l", "attrNames", "regex", "attrName", "match", "attrNameEndIndex", "lastIndex", "exec", "test", "end", "startsWith", "htmlResult", "Template", "node", "parts", "nodeIndex", "attrNameIndex", "partCount", "el", "currentNode", "content", "svgElement", "firstChild", "remove", "append", "childNodes", "nextNode", "nodeType", "hasAttributes", "attrsToRemove", "getAttributeNames", "endsWith", "realName", "statics", "getAttribute", "split", "m", "index", "PropertyPart", "BooleanAttributePart", "EventPart", "AttributePart", "tagName", "data", "_options", "innerHTML", "resolveDirective", "part", "attributeIndex", "parent", "currentDirective", "__directives", "__directive", "nextDirectiveConstructor", "_$litDirective$", "_$AO", "n", "r", "_$initialize", "_c", "h", "_$Co", "_$resolve", "TemplateInstance", "template", "_parts", "_$disconnectableChildren", "_$template", "_$parent", "parentNode", "_$isConnected", "_clone", "fragment", "creationScope", "importNode", "partIndex", "templatePart", "ChildPart", "nextSibling", "ElementPart", "_update", "_$setValue", "startNode", "endNode", "_$committedValue", "_$startNode", "_$endNode", "__isConnected", "_$AU", "_$clear", "_commitText", "_commitTemplateResult", "_commitNode", "_commitIterable", "_insert", "ref", "insertBefore", "createTextNode", "_$getTemplate", "_$AD", "instance", "itemPart", "itemParts", "item", "from", "start", "_$notifyConnectionChanged", "setConnected", "element", "fill", "noCommit", "directiveParent", "valueIndex", "change", "_h", "_commitValue", "newListener", "b", "oldListener", "shouldRemoveListener", "capture", "once", "passive", "shouldAddListener", "removeEventListener", "addEventListener", "handleEvent", "event", "host", "L", "_boundAttributeSuffix", "_marker", "_markerMatch", "_HTML_RESULT", "_getTemplateHtml", "_TemplateInstance", "_isIterable", "_resolveDirective", "_ChildPart", "_AttributePart", "_BooleanAttributePart", "_EventPart", "_PropertyPart", "_ElementPart", "litHtmlPolyfillSupport", "litHtmlVersions", "Z", "container", "partOwnerNode", "renderBefore", "_$litPart$", "l$1", "o$3", "UpdatingElement", "LitElement", "renderOptions", "__childPart", "render", "_$litElement$", "litElementHydrateSupport", "globalThis", "litElementPolyfillSupport", "litElementVersions", "isServer", "customElement", "classOrDescriptor", "clazz", "customElements", "define", "kind", "elements", "finisher", "standardProperty", "placement", "originalKey", "property", "protoOrDescriptor", "proto", "standardPrototypeMethod", "decorateProperty", "_ref", "info", "undefined", "eventOptions", "assign", "selector", "cache", "querySelector", "queryAll", "_name", "querySelectorAll", "queryAsync", "slotAssignedElements", "HTMLSlotElement", "assignedElements", "slot", "opts", "assignedNodes", "filter", "Node", "ELEMENT_NODE", "queryAssignedElements", "slotSelector", "slotEl", "matches", "queryAssignedNodes", "slotOrOptions", "flatten", "assignedNodesOptions", "commonjsGlobal", "getDefaultExportFromCjs", "getDefaultExportFromNamespaceIfPresent", "getDefaultExportFromNamespaceIfNotNamed", "getAugmentedNamespace", "commonjsRequire", "lottie$1", "factory", "navigator", "svgNS", "locationHref", "_useWebWorker", "initialDefaultFrame", "setWebWorker", "flag", "getWebWorker", "setLocationHref", "extendPrototype", "sources", "destination", "sourcePrototype", "len", "getDescriptor", "object", "prop", "getOwnPropertyDescriptor", "createProxyFunction", "ProxyFunction", "audioControllerFactory", "AudioController", "audioFactory", "audios", "_volume", "_isMuted", "addAudio", "audio", "pause", "resume", "setRate", "rateValue", "createAudio", "assetPath", "Howl", "src", "isPlaying", "play", "seek", "playing", "rate", "setVolume", "setAudioFactory", "_updateVolume", "mute", "unmute", "getVolume", "volume", "createTypedArray", "createRegularArray", "arr", "Float32Array", "Int16Array", "Uint8ClampedArray", "createSizedArray", "apply", "_typeof$6", "obj", "subframeEnabled", "isSafari", "userAgent", "_shouldRoundValues", "bmPow", "pow", "bmSqrt", "sqrt", "bmFloor", "floor", "bmMax", "max", "bmMin", "min", "BMMath", "ProjectInterface$1", "propertyNames", "abs", "val", "absArr", "defaultCurveSegments", "degToRads", "PI", "roundCorner", "roundValues", "bmRnd", "round", "styleDiv", "position", "top", "left", "display", "transformOrigin", "webkitTransformOrigin", "backfaceVisibility", "webkitBackfaceVisibility", "transformStyle", "webkitTransformStyle", "mozTransformStyle", "BMEnterFrameEvent", "currentTime", "totalTime", "frameMultiplier", "direction", "totalLoops", "currentLoop", "BMSegmentStartEvent", "firstFrame", "totalFrames", "BMDestroyEvent", "target", "BMRenderFrameErrorEvent", "nativeError", "BMConfigErrorEvent", "BMAnimationConfigErrorEvent", "createElementID", "idPrefix$1", "_count", "HSVtoRGB", "g", "q", "f", "RGBtoHSV", "addSaturationToRGB", "color", "offset", "hsv", "addBrightnessToRGB", "addHueToRGB", "rgbToHex", "hex", "colorMap", "getSubframeEnabled", "setExpressionsPlugin", "expressionsPlugin", "getExpressionsPlugin", "setExpressionInterfaces", "expressionsInterfaces", "getExpressionInterfaces", "getDefaultCurveSegments", "setIdPrefix", "getIdPrefix", "createNS", "createElementNS", "_typeof$5", "dataManager", "processes", "workerProxy", "onmessage", "postMessage", "path", "workerFn", "_workerSelf", "workerInstance", "fn", "Worker", "Blob", "blob", "url", "URL", "createObjectURL", "completeLayers", "layers", "comps", "j", "layerData", "completed", "hasMask", "masksProperties", "jLen", "maskProps", "pt", "convertPathsToAbsoluteValues", "kLen", "ty", "findCompLayers", "refId", "completeShapes", "shapes", "completeText", "id", "comp", "__used", "ks", "it", "a", "minimum", "animVersionString", "animVersion", "minimumVersion", "checkText", "iterateLayers", "textLayer", "documentData", "animationData", "checkVersion", "assets", "checkChars", "chars", "charData", "ip", "op", "st", "sr", "sk", "sa", "checkPathProperties", "pathData", "checkColors", "iterateShapes", "checkShapes", "completeClosingShapes", "closed", "cl", "moduleOb", "__complete", "dataFunctionManager", "assetLoader", "xhr", "contentTypeHeader", "getResponseHeader", "responseType", "response", "responseText", "load", "fullPath", "callback", "errorCallback", "XMLHttpRequest", "err", "onreadystatechange", "readyState", "status", "formatResponse", "open", "join", "error", "send", "completeData", "payload", "animation", "process", "onComplete", "onError", "_counterId", "loadAnimation", "setupWorker", "createProcess", "location", "origin", "pathname", "processId", "loadData", "completeAnimation", "anim", "proxyImage", "canvas", "createTag", "width", "height", "ctx", "getContext", "fillStyle", "fillRect", "imageLoaded", "loadedAssets", "totalImages", "loadedFootagesCount", "totalFootages", "imagesLoadedCb", "footageLoaded", "assetData", "assetsPath", "originalPath", "imagePath", "u", "testImageLoaded", "img", "intervalId", "setInterval", "getBBox", "_imageLoaded", "clearInterval", "bind", "getAssetsPath", "footageData", "ob", "_footageLoaded", "ImagePreloaderFactory", "createFootageData", "images", "loadAssets", "cb", "_createImageData", "setAssetsPath", "setPath", "loadedImages", "loadedFootages", "destroy", "getAsset", "createImgData", "crossOrigin", "createImageData", "setAttributeNS", "_elementHelper", "setCacheType", "elementHelper", "BaseEvent", "triggerEvent", "eventName", "args", "_cbs", "callbacks", "parsePayloadLines", "line", "lines", "keys", "keysCount", "trim", "_markers", "markers", "markerData", "time", "tm", "duration", "dr", "cm", "_", "__", "ProjectInterface", "registerComposition", "compositions", "nm", "prepareFrame", "xt", "currentFrame", "compInterface", "_thisProjectFunction", "renderers", "registerRenderer", "getRenderer", "_typeof$4", "AnimationItem", "isLoaded", "currentRawFrame", "frameRate", "frameMult", "playSpeed", "playDirection", "playCount", "isPaused", "autoplay", "loop", "renderer", "animationID", "timeCompleted", "segmentPos", "isSubframeEnabled", "segments", "_idle", "_completedLoop", "projectInterface", "imagePreloader", "ImagePreloader", "audioController", "configAnimation", "onSetupError", "onSegmentComplete", "drawnFrameEvent", "setParams", "params", "wrapper", "animType", "RendererClass", "rendererSettings", "globalData", "defs", "setProjectInterface", "parseInt", "autoloadSegments", "initialSegment", "setupAnimation", "lastIndexOf", "substr", "fileName", "trigger", "setData", "wrapperAttributes", "getNamedItem", "prerender", "includeLayers", "newLayers", "fonts", "fontManager", "addChars", "addFonts", "initExpressions", "loadNextSegment", "segment", "shift", "segmentPath", "loadSegments", "imagesLoaded", "checkLoaded", "preloadImages", "animData", "fr", "searchExtraCompositions", "markerParser", "updaFrameModifier", "waitForFontsLoaded", "triggerConfigError", "setTimeout", "rendererType", "initItems", "gotoFrame", "resize", "_height", "updateContainerSize", "_width", "setSubframe", "renderFrame", "triggerRenderFrameError", "togglePause", "stop", "setCurrentRawFrameValue", "getMarkerData", "markerName", "goToAndStop", "isFrame", "numValue", "isNaN", "frameModifier", "goToAndPlay", "playSegments", "advanceTime", "nextValue", "_isComplete", "checkSegments", "adjustSegment", "setSpeed", "setDirection", "setSegment", "init", "pendingFrame", "forceFlag", "resetSegments", "onEnterFrame", "onLoopComplete", "onSegmentStart", "onDestroy", "getPath", "getAssetData", "hide", "show", "getDuration", "updateDocumentData", "getElementByPath", "BMCompleteLoopEvent", "BMCompleteEvent", "animationManager", "registeredAnimations", "playingAnimationsNum", "_stopped", "removeElement", "ev", "animItem", "subtractPlayingCount", "elem", "addPlayingCount", "activate", "nowTime", "elapsedTime", "initTime", "_isFrozen", "requestAnimationFrame", "first", "registerAnimation", "searchAnimations", "standalone", "animElements", "concat", "getElementsByClassName", "lenAnims", "body", "getElementsByTagName", "innerText", "div", "freeze", "unfreeze", "getRegisteredAnimations", "animations", "BezierFactory", "str", "replace", "beziers", "bezEasing", "BezierEasing", "kSampleStepSize", "float32ArraySupported", "A", "aA1", "aA2", "aT", "B", "C", "getSlope", "points", "_p", "_mSampleValues", "_precomputed", "x", "mX1", "mY1", "mX2", "mY2", "_precompute", "calcBezier", "_getTForX", "_calcSampleValues", "aX", "mSampleValues", "intervalStart", "currentSample", "kSplineTableSize", "guessForT", "initialSlope", "aGuessT", "currentSlope", "aA", "aB", "currentX", "currentT", "double", "poolFactory", "initialLength", "_create", "_release", "_length", "_maxLength", "pool", "newElement", "release", "pooling", "bezierLengthPool", "addedLength", "percents", "lengths", "segmentsLengthPool", "totalLength", "bezFunction", "pointOnLine2D", "x1", "y1", "x2", "y2", "x3", "y3", "det1", "getBezierLength", "pt1", "pt2", "pt3", "pt4", "ptCoord", "ptDistance", "curveSegments", "point", "lastPoint", "lengthData", "perc", "BezierData", "segmentLength", "PointData", "partial", "partialLength", "storedData", "buildBezierData", "bezierName", "bezierData", "getDistancePerc", "initPos", "lengthPos", "lPerc", "dir", "getSegmentsLength", "shapeData", "segmentsLength", "pathV", "pathO", "pathI", "getNewSegment", "startPerc", "endPerc", "t0", "u0", "t1", "u0u0u0", "t0u0u0_3", "t0t0u0_3", "u0u0u1", "u1", "t0u0u1_3", "u0u1u1", "t0u1u1_3", "u1u1u1", "t1u1u1_3", "t1t1t1", "bezierSegmentPoints", "math", "t0t0t0", "t0t0u1_3", "t0t0t1", "t0t1u1_3", "t0t1t1", "t1t1u1_3", "getPointInSegment", "percent", "pointOnLine3D", "z1", "z2", "z3", "diffDist", "dist1", "dist3", "dist2", "bez", "PropertyFactory", "initFrame", "mathAbs", "interpolateValue", "frameNum", "caching", "newValue", "offsetTime", "propType", "pv", "fnc", "iterationIndex", "keyframes", "keyData", "nextKeyData", "keyframeMetadata", "keyframesMetadata", "out", "quat", "qx", "qy", "qz", "qw", "heading", "attitude", "bank", "nextKeyTime", "keyTime", "to", "ti", "ind", "__fnct", "getBezierEasing", "y", "segmentPerc", "distanceInLine", "lastFrame", "_lastKeyframeIndex", "_lastAddedLength", "_lastPoint", "outX", "outY", "inX", "inY", "keyValue", "endValue", "sh", "quatStart", "createQuaternion", "quatEnd", "omega", "cosom", "sinom", "scale0", "scale1", "ax", "ay", "az", "aw", "bx", "by", "bz", "bw", "acos", "sin", "atan2", "asin", "c1", "cos", "c2", "c3", "s1", "s3", "s2", "getValueAtCurrentTime", "renderedFrame", "endTime", "_caching", "renderResult", "setVValue", "multipliedValue", "mult", "_mdf", "processEffectsSequence", "frameId", "effectsSequence", "lock", "_isFirstFrame", "finalValue", "kf", "addEffect", "effectFunction", "addDynamicProperty", "ValueProperty", "vel", "getValue", "MultiDimensionalProperty", "KeyframedValueProperty", "KeyframedMultidimensionalProperty", "arrLen", "getProp", "DynamicPropertyContainer", "dynamicProperties", "_isAnimated", "iterateDynamicProperties", "initDynamicPropertyContainer", "pointPool", "ShapePath", "setPathData", "setLength", "doubleArrayLength", "setXYAt", "pos", "setTripleAt", "vX", "vY", "oX", "oY", "iX", "iY", "newPath", "vertices", "outPoints", "inPoints", "cnt", "shapePool", "shapePath", "clone", "shape", "cloned", "ShapeCollection", "addShape", "releaseShapes", "shapeCollectionPool", "newShapeCollection", "shapeCollection", "ShapePropertyFactory", "interpolateShape", "previousValue", "keyPropS", "keyPropE", "isHold", "vertexValue", "resetShape", "paths", "localShapeCollection", "shape1", "shape2", "ShapeProperty", "reset", "KeyframedShapeProperty", "interpolateShapeCurrentTime", "EllShapeProperty", "cPoint", "EllShapePropertyFactory", "convertEllToPath", "p0", "p1", "s0", "_cw", "StarShapeProperty", "StarShapePropertyFactory", "sy", "ir", "is", "convertToPath", "convertStarToPath", "convertPolygonToPath", "or", "os", "roundness", "perimSegment", "numPts", "angle", "longFlag", "longRad", "longRound", "longPerimSegment", "shortPerimSegment", "shortRad", "currentAng", "shortRound", "rad", "ox", "oy", "RectShapeProperty", "RectShapePropertyFactory", "convertRectToPath", "v0", "v1", "Matrix", "_cos", "_sin", "tan", "_rnd", "mSin", "_t", "mCos", "rotateX", "rotateY", "rotateZ", "shear", "sx", "skew", "_tan", "skewFromAxis", "sz", "translate", "tx", "tz", "transform", "a2", "b2", "d2", "e2", "f2", "g2", "h2", "i2", "j2", "k2", "l2", "m2", "n2", "o2", "p2", "_identityCalculated", "a1", "b1", "d1", "e1", "f1", "g1", "h1", "i1", "w", "k1", "l1", "m1", "n1", "o1", "j1", "isIdentity", "_identity", "equals", "matr", "cloneFromProps", "z", "applyToX", "applyToY", "applyToZ", "getInverseMatrix", "determinant", "inverseMatrix", "inversePoint", "applyToPointArray", "inversePoints", "pts", "retPts", "applyToTriplePoints", "p4", "p5", "p12", "p13", "applyToPointStringified", "toCSS", "cssValue", "roundMatrixProperty", "to2dCSS", "rotate", "scale", "setTransform", "applyToPoint", "_typeof$3", "lottie", "setLocation", "href", "setSubframeEnabled", "setPrefix", "prefix", "setQuality", "setDefaultCurveSegments", "inBrowser", "installPlugin", "plugin", "getFactory", "readyStateCheckInterval", "getQueryVariable", "variable", "vars", "queryString", "pair", "decodeURIComponent", "setSubframeRendering", "useWebWorker", "setIDPrefix", "__getFactory", "version", "scripts", "myScript", "checkReady", "exports", "bodymovin", "ShapeModifiers", "modifiers", "registerModifier", "getModifier", "ShapeModifier", "TrimModifier", "PuckerAndBloatModifier", "initModifierProperties", "addShapeToModifier", "setAsAnimated", "processKeys", "sValue", "eValue", "pathsData", "calculateShapeEdges", "shapeLength", "totalModifierLength", "segmentOb", "shapeSegments", "shapeS", "shapeE", "releasePathsData", "processShapes", "shapePaths", "_s", "totalShapeLength", "edges", "P", "addShapes", "lastShape", "newShapesData", "pop", "addPaths", "newPaths", "addSegment", "newShape", "addSegmentFromArray", "shapeSegment", "currentLengthData", "segmentCount", "amount", "processPath", "centerPoint", "pathLength", "clonedPath", "TransformPropertyFactory", "defaultVector", "TransformProperty", "pre", "appliedTransformations", "px", "py", "pz", "rx", "ry", "rz", "_isDirty", "applyToMatrix", "mat", "forceRender", "precalculateMatrix", "autoOriented", "getValueAtTime", "v2", "autoOrient", "_addDynamicProperty", "getTransformProperty", "RoundCornersModifier", "floatEqual", "floatZero", "lerp", "lerpPoint", "singleRoot", "delta", "polynomialCoefficients", "p3", "singlePoint", "PolynomialBezier", "linearize", "pointEqual", "coeffy", "coeffx", "extrema", "quadRoots", "intersectData", "t2", "box", "boundingBox", "cx", "cy", "boxIntersect", "intersectsImpl", "depth", "tolerance", "intersections", "maxRecursion", "d1s", "splitData", "d2s", "crossProduct", "start1", "end1", "start2", "end2", "v3", "v4", "polarOffset", "pointDistance", "hypot", "ZigZagModifier", "setPoint", "outputBezier", "amplitude", "outAmplitude", "inAmplitude", "angO", "angI", "getPerpendicularVector", "vector", "rot", "getProjectingAngle", "cur", "prevIndex", "nextIndex", "pVector", "zigZagCorner", "frequency", "pointType", "prevPoint", "prevDist", "nextDist", "nextPoint", "zigZagSegment", "dist", "normalAngle", "linearOffset", "offsetSegment", "p1a", "p1b", "p2b", "p2a", "lineIntersection", "joinLines", "seg1", "seg2", "lineJoin", "miterLimit", "angleOut", "tangentAngle", "angleIn", "center", "radius", "intersection", "getIntersection", "intersect", "pruneSegmentIntersection", "outa", "outb", "pruneIntersections", "offsetSegmentSplit", "mid", "flex", "inflectionPoints", "right", "OffsetPathModifier", "getFontProperties", "fontData", "fStyle", "fWeight", "weight", "RepeaterModifier", "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", "roundOffset", "pProps", "rProps", "sProps", "iteration", "offsetModulo", "mProps", "rd", "currentV", "currentI", "closerV", "distance", "newPosPerc", "currentO", "derivative", "denom", "tcusp", "square", "root", "p10", "p11", "p20", "p21", "bounds", "bottom", "other", "shapeSegmentInverted", "pointsType", "count", "ml", "lj", "inputBezier", "multiSegments", "lastSeg", "multiSegment", "FontManager", "emptyChar", "size", "combinedCharacters", "font", "family", "fontFamily", "fontSize", "fontVariant", "fontStyle", "fontWeight", "letterSpacing", "offsetWidth", "familyArray", "enabledFamilies", "createHelper", "def", "engine", "fontProps", "tHelper", "fFamily", "fClass", "helper", "tCanvasHelper", "OffscreenCanvas", "measureText", "text", "getComputedTextLength", "Font", "typekitLoaded", "_warned", "Date", "now", "setIsLoadedBinded", "setIsLoaded", "checkLoadedFontsBinded", "checkLoadedFonts", "isModifier", "firstCharCode", "secondCharCode", "sum", "surrogateModifiers", "isZeroWidthJoiner", "zeroWidthJoiner", "isCombinedCharacter", "_char3", "fontPrototype", "found", "ch", "list", "fontArr", "_pendingFonts", "loadedSelector", "shouldLoadFont", "loaded", "monoCase", "setUpNode", "sansCase", "fPath", "fOrigin", "rel", "sc", "getCharData", "_char", "charCodeAt", "console", "warn", "getFontByName", "fName", "_char2", "fontName", "doubleSize", "singleSize", "loadedCount", "removeChild", "RenderableElement", "initRenderable", "isInRange", "hidden", "isTransparent", "renderableComponents", "addRenderableComponent", "component", "removeRenderableComponent", "prepareRenderableFrame", "num", "checkLayerLimits", "checkTransparency", "finalTransform", "mProp", "renderConfig", "hideOnTransparent", "renderRenderable", "sourceRectAtTime", "getLayerSize", "textData", "getBlendMode", "blendModeEnums", "AngleEffect", "PointEffect", "LayerIndexEffect", "CheckboxEffect", "effects", "ef", "effectElements", "effectItem", "GroupEffect", "BaseElement", "FootageElement", "imageLoader", "initBaseData", "_isPlaying", "_canPlay", "_currentTime", "_volumeMultiplier", "_previousVolume", "_placeholder", "lv", "au", "BaseRenderer", "TransformElement", "MaskElement", "maskElement", "viewData", "solidPath", "currentMasks", "maskRef", "maskType", "rect", "getShapeProp", "lastPath", "filterID", "expansor", "feMorph", "expan", "lastOperator", "filterId", "lastRadius", "mask", "layerId", "getLocationHref", "createLayerSolidPath", "invRect", "drawPath", "maskedElement", "eff", "SliderEffect", "ColorEffect", "MaskIndexEffect", "EffectsManager", "NoValueEffect", "checkMasks", "LayerExpressionInterface", "EffectsExpressionInterface", "ShapeExpressionInterface", "TextExpressionInterface", "layerInterface", "maskManager", "registerMaskInterface", "effectsInterface", "createEffectsInterface", "registerEffectsInterface", "CompExpressionInterface", "shapeInterface", "shapesData", "itemsData", "textInterface", "setBlendMode", "blendModeValue", "bm", "baseElement", "layerElement", "effectsManager", "getType", "FrameElement", "prepareProperties", "isVisible", "_isParent", "getBaseElement", "FootageInterface", "getFootageData", "AudioElement", "timeRemapped", "totalVolume", "volumeValue", "checkLayers", "buildItem", "checkPendingElements", "createItem", "layer", "createImage", "createComp", "createSolid", "createNull", "createShape", "createText", "createCamera", "createFootage", "buildAllItems", "pInterface", "progressiveLoad", "buildElementParenting", "parentName", "hierarchy", "setAsParent", "setHierarchy", "addPendingElement", "pendingElements", "pathValue", "setupGlobalData", "fontsContainer", "animationItem", "compSize", "initTransform", "_matMdf", "_opMdf", "ao", "renderTransform", "finalMat", "globalToLocal", "transforms", "ptNew", "mHelper", "getMaskProperty", "isFirstFrame", "getMaskelement", "pathNodes", "pathString", "pathShapeValue", "filtersFactory", "filId", "skipCoordinates", "fil", "feColorMatrix", "featureSupport", "createFilter", "filters", "filterManager", "registeredEffects", "effect", "idPrefix", "source", "countsAsEffect", "SVGBaseElement", "RenderableDOMElement", "IImageElement", "initElement", "sourceRect", "ProcessedElement", "IShapeElement", "SVGEffects", "initRendererElement", "createContainerElements", "matteElement", "transformedElement", "_sizeChanged", "layerElementParent", "td", "matteMasks", "symbolElement", "gg", "tt", "ln", "hd", "cp", "clipId", "cpGroup", "renderElement", "destroyBaseElement", "createRenderableComponents", "renderableEffectsManager", "getMatte", "matteType", "useElement", "masker", "createAlphaToLuminanceFilter", "maskGroup", "maskGrouper", "feCTr", "feFunc", "alphaRect", "setMatte", "HierarchyElement", "initHierarchy", "checkParenting", "createContent", "renderInnerContent", "innerElem", "pr", "imagePreserveAspectRatio", "addShapeToModifiers", "shapeModifiers", "isShapeInAnimatedModifiers", "isAnimatedWithShape", "renderModifiers", "searchProcessedElement", "processedElements", "addProcessedElement", "lineCapEnum", "lineJoinEnum", "SVGShapeData", "transformers", "level", "caches", "lStr", "lvl", "pElem", "msElem", "DashProperty", "dataProps", "dashStr", "dashArray", "dashoffset", "SVGStrokeStyleData", "styleOb", "SVGFillStyleData", "SVGNoStyleData", "GradientProperty", "cLength", "_cmdf", "_omdf", "_collapsable", "checkCollapsable", "_hasOpacity", "SVGGradientFillStyleData", "initGradientData", "SVGGradientStrokeStyleData", "ShapeGroupData", "prevViewData", "gr", "SVGTransformData", "SVGStyleData", "comparePoints", "stops", "setGradientData", "setGradientOpacity", "pathElement", "gradientId", "gfill", "gf", "cst", "opacityId", "maskId", "opFill", "lc", "of", "ms", "ost", "buildShapeString", "_o", "_i", "shapeString", "_identityMatrix", "_matrixHelper", "renderContentTransform", "styleData", "itemData", "renderNoop", "renderPath", "pathStringTransformed", "redraw", "lLen", "iterations", "renderFill", "styleElem", "renderGradient", "renderStroke", "hasOpacity", "attr1", "attr2", "cValues", "oValues", "ang", "createRenderFunction", "renderGradientStroke", "SVGShapeElement", "stylesList", "animatedContents", "LetterProps", "sw", "fc", "TextProperty", "_frameId", "keysIndex", "canResize", "minimumFontSize", "currentData", "ascent", "boxWidth", "defaultBoxWidth", "justifyOffset", "lh", "lineWidths", "ls", "ps", "fillColorAnim", "strokeColorAnim", "strokeWidthAnim", "yOffset", "finalSize", "finalText", "finalLineHeight", "copyData", "searchProperty", "completeTextData", "initSecondaryElement", "identityMatrix", "buildExpressionInterface", "searchShapes", "filterUniqueShapes", "tempShapes", "areAnimated", "setShapesAsAnimated", "createStyleElement", "elementData", "addToAnimatedContents", "createGroupElement", "createTransformElement", "transformProperty", "createShapeElement", "ownTransformers", "SVGElementsRenderer", "setElementStyles", "currentTransform", "modifier", "processedPos", "ownStyles", "ownModifiers", "renderShape", "animatedContent", "setCurrentData", "searchKeyframes", "getKeyframeValue", "_finalValue", "currentValue", "currentIndex", "textKeys", "buildFinalText", "charCode", "charactersArray", "shouldCombine", "charAt", "newLineFlag", "currentSize", "currentLine", "maxLineWidth", "trackingOffset", "boxHeight", "currentHeight", "lineWidth", "lastSpaceIndex", "currentChar", "uncollapsedSpaces", "letters", "an", "add", "anIndexes", "animatorJustifyOffset", "anchorGrouping", "currentPos", "extra", "F", "I", "based", "animators", "indexes", "animatorData", "fh", "fs", "fb", "letterData", "rn", "totalChars", "newInd", "currentInd", "newData", "dData", "recalculate", "canResizeFont", "_canResize", "setMinimumFontSize", "_fontValue", "TextSelectorProp", "TextSelectorPropFactory", "_currentTextLength", "finalS", "finalE", "xe", "ne", "sm", "getMult", "textProperty", "easer", "tot", "smoothness", "threshold", "newCharsFlag", "divisor", "getTextSelectorProp", "TextAnimatorDataProperty", "animatorProps", "defaultData", "textAnimatorAnimatables", "TextAnimatorProperty", "renderType", "_hasMaskedPath", "_textData", "_renderType", "_elem", "_animatorsData", "_pathData", "_moreOptions", "alignment", "renderedLetters", "lettersChangedFlag", "ITextElement", "searchProperties", "getMeasures", "yPos", "pathInfo", "currentLength", "currentPoint", "pointInd", "tanAngle", "matrixHelper", "renderedLettersCount", "tLength", "pi", "segmentInd", "xPos", "firstLine", "V", "xPathPos", "yPathPos", "letterSc", "letterFc", "initPathPos", "initSegmentInd", "initPointInd", "letterM", "letterP", "defaultPropsArray", "animatorFirstCharOffset", "justifyOffsetMult", "isNewLine", "elemOpacity", "letterSw", "letterO", "animatorOffset", "yOff", "offf", "atan", "letterValue", "textAnimator", "buildNewText", "createPathShape", "shapeStr", "_fontSize", "applyTextPropertiesToMatrix", "lineNumber", "buildColor", "colorData", "emptyProp", "emptyShapeData", "textSpans", "NullElement", "SVGRendererBase", "ICompElement", "SVGCompElement", "supports3d", "SVGRenderer", "config", "title", "titleId", "titleElement", "ariaLabel", "description", "descElement", "descId", "preserveAspectRatio", "contentVisibility", "viewBoxOnly", "viewBoxSize", "className", "focusable", "filterSize", "runExpressions", "destroyed", "CVContextData", "saved", "cArrPos", "cTr", "cO", "savedOp", "ShapeTransformManager", "sequences", "sequenceList", "transform_key_count", "CVEffects", "hasMasks", "CVBaseElement", "transformsManager", "styledShapes", "styledShape", "addTransformSequence", "trNodes", "CVShapeElement", "stroke", "currentRender", "sWidth", "fValue", "CVImageElement", "CVSolidElement", "CanvasRendererBase", "clearCanvas", "context", "dpr", "devicePixelRatio", "currentGlobalAlpha", "contextData", "transformMat", "CVCompElement", "CanvasRenderer", "HBaseElement", "HSolidElement", "shapesContainer", "currentBBox", "HTextElement", "textPaths", "isMasked", "HCameraElement", "pe", "_prevMat", "HImageElement", "HybridRendererBase", "threeDElements", "camera", "HCompElement", "HybridRenderer", "SVGTextLottieElement", "singleShape", "textContainer", "buildTextContents", "textArray", "textContents", "fromCharCode", "currentTextContent", "buildShapeData", "shapeItem", "tSpan", "usesGlyphs", "cachedSpansLength", "span", "childSpan", "glyph", "glyphElement", "_debug", "tElement", "justify", "textBox", "bbox", "renderedLetter", "textSpan", "ISolidElement", "findIndexByInd", "appendElementInPos", "tp", "elementIndex", "matteMask", "nextElement", "setElements", "getElements", "destroyElements", "duplicate", "currentSavedOp", "newLength", "sequence", "processSequence", "processSequences", "getNewKey", "CVMaskElement", "canvasContext", "beginPath", "moveTo", "lineTo", "bezierCurveTo", "save", "clip", "createElements", "blendMode", "globalCompositeOperation", "hideElement", "showElement", "forceRealStack", "ctxTransform", "ctxOpacity", "restore", "CVShapeData", "transformHelper", "opacity", "dashResetter", "preTransforms", "co", "wi", "da", "addTransformToStyleList", "removeTransformFromStyleList", "closeStyles", "shouldRender", "_shouldRender", "ownTransforms", "renderShapeTransform", "parentTransform", "groupTransform", "drawLayer", "nodes", "currentStyle", "coOp", "strokeStyle", "grd", "lineCap", "setLineDash", "lineDashOffset", "closePath", "isMain", "renderGradientFill", "renderStyledShape", "shapeNodes", "groupTransformMat", "createLinearGradient", "createRadialGradient", "addColorStop", "CVTextElement", "hasFill", "hasStroke", "pathArr", "commands", "commandsCounter", "lastStroke", "lastStrokeW", "lastFill", "widthCrop", "heightCrop", "imgW", "imgH", "imgRel", "canvasRel", "par", "drawImage", "cProps", "trProps", "globalAlpha", "actionFlag", "popped", "containerStyle", "mozTransformOrigin", "transformCanvas", "isDashed", "elementWidth", "elementHeight", "elementRel", "animationRel", "offsetHeight", "fillType", "clearRect", "checkBlendMode", "tg", "transformedElementStyle", "matrixValue", "webkitTransform", "addEffects", "backgroundColor", "HShapeElement", "_renderShapeFrame", "shapeCont", "getTransformedPoint", "calculateShapeBoundingBox", "vPoint", "oPoint", "nextIPoint", "nextVPoint", "checkBounds", "getBoundsOfCurve", "shapeBoundingBox", "xMax", "yMax", "tempBoundingBox", "b2ac", "calculateF", "calculateBoundingBox", "expandStrokeBoundingBox", "widthProperty", "kfw", "currentBoxContains", "changed", "shapeStyle", "shapeTransform", "compW", "compH", "innerElemStyle", "textColor", "strokeWidth", "lineHeight", "tParent", "tCont", "children", "tContStyle", "tContTranslation", "tStyle", "tSpanTranslation", "svgStyle", "translation", "textPath", "margin", "svgTransform", "setup", "perspectiveStyle", "perspectiveElem", "perspective", "webkitPerspective", "mTransf", "diffVector", "mag", "lookDir", "lookLengthOnXZ", "mRotationY", "mRotationX", "hasMatrixChanged", "matValue", "imageElem", "newDOMElement", "ddd", "addTo3dContainer", "nextDOMElement", "nextLayer", "getThreeDContainerByPos", "startPos", "endPos", "createThreeDContainer", "threeDContainerData", "build3dContainers", "lastThreeDContainerData", "currentContainer", "resizerElem", "overflow", "cWidth", "cHeight", "floatingContainer", "_createBaseContainerElements", "_thisLayerFunction", "pixelAspect", "frameDuration", "displayStartTime", "numLayers", "Expressions", "registers", "pushExpression", "stackCount", "popExpression", "releaseInstances", "registerExpressionProperty", "expression", "MaskInterface", "_mask", "_data", "_masksInterfaces", "ExpressionPropertyInterface", "defaultUnidimensionalValue", "defaultMultidimensionalValue", "completeProperty", "expressionValue", "getVelocityAtTime", "numKeys", "valueProp", "valueAtTime", "speedAtTime", "getSpeedAtTime", "velocityAtTime", "propertyGroup", "arrValue", "defaultGetter", "TransformExpressionInterface", "_thisFunction", "rotation", "xRotation", "yRotation", "xPosition", "yPosition", "zPosition", "anchorPoint", "_px", "_py", "_pz", "_transformFactory", "toWorldMat", "toWorldVec", "getMatrix", "applyPoint", "toWorld", "invertPoint", "fromWorld", "fromComp", "sampleImage", "transformInterface", "fromWorldVec", "toComp", "anchorPointDescriptor", "defineProperties", "hasParent", "anchor_point", "active", "startTime", "inPoint", "outPoint", "MaskManagerInterface", "propertyGroupFactory", "interfaceFunction", "parentPropertyGroup", "PropertyInterface", "propertyName", "effectsData", "createGroupInterface", "groupInterface", "mn", "_propertyGroup", "createValueInterface", "numProperties", "np", "enabled", "en", "expressionProperty", "setGroupProperty", "ShapePathInterface", "pathInterfaceFactory", "view", "propertyIndex", "groupInterfaceFactory", "fillInterfaceFactory", "strokeInterfaceFactory", "trimInterfaceFactory", "ellipseInterfaceFactory", "starInterfaceFactory", "rectInterfaceFactory", "roundedInterfaceFactory", "repeaterInterfaceFactory", "gradientFillInterfaceFactory", "interfaces", "iterateElements", "transformInterfaceFactory", "cix", "startPoint", "endPoint", "_dashPropertyGroup", "dashOb", "addPropertyToDashOb", "dash", "skewAxis", "outerRadius", "outerRoundness", "innerRoundness", "innerRadius", "_interfaceFunction", "_prevValue", "_sourceText", "sourceText", "stringValue", "_typeof$2", "dataInterfaceFactory", "outlineInterface", "currentPropertyName", "currentProperty", "propertyNameIndex", "dataInterface", "footage", "getInterface", "_typeof$1", "seedRandom", "startdenom", "significance", "keylen", "me", "S", "typ", "mixkey", "seed", "smear", "stringseed", "tostring", "shortseed", "entropy", "crypto", "msCrypto", "getRandomValues", "browser", "plugins", "screen", "autoseed", "prng", "arc4", "int32", "quick", "pass", "is_math_call", "copy", "initialize$2", "propTypes", "SHAPE", "_typeof", "ExpressionManager", "fetch", "frames", "$bm_isInstanceOfArray", "isNumerable", "tOfV", "$bm_neg", "tOfA", "lenA", "retArr", "easeInBez", "easeOutBez", "easeInOutBez", "tOfB", "lenB", "sub", "mul", "mod", "$bm_sub", "$bm_div", "$bm_mod", "clamp", "mm", "radiansToDegrees", "radians_to_degrees", "degreesToRadians", "helperLengthArray", "arr1", "arr2", "vec", "rgbToHsl", "hue2rgb", "hslToRgb", "linear", "tMin", "tMax", "value1", "value2", "_tMin", "rnd", "createPath", "inTangents", "outTangents", "inVertexPoint", "outVertexPoint", "arrPlaceholder", "initiateExpression", "noOp", "_value", "needsVelocity", "_needsRandom", "$bm_transform", "thisProperty", "loopIn", "loop_in", "loopOut", "loop_out", "smooth", "fromCompToSurface", "thisLayer", "thisComp", "expression_function", "eval", "wiggle", "freq", "amp", "iWiggle", "lenWiggle", "addedAmps", "periods", "loopInDuration", "velocity", "textIndex", "textTotal", "selectorValue", "elem1", "elem2", "fVec", "pitch", "easeOut", "val1", "val2", "easeIn", "applyEase", "ease", "lenKey", "iKey", "obKey", "framesToTime", "fps", "timeToFrames", "seedrandom", "randSeed", "substring", "framesPerSecond", "frameExpressionId", "elemType", "scoped_bm_rt", "executeExpression", "__preventDeadCodeRemoval", "loopOutDuration", "lookAt", "nearestKey", "posterizeTime", "$bm_sum", "$bm_mul", "degrees_to_radians", "normalize", "expressionHelpers", "searchExpressions", "speed", "_cachingAtTime", "getStaticValueAtTime", "addPropertyDecorator", "durationFlag", "cycleDuration", "ret", "lastKeyFrame", "firstKeyFrame", "repeats", "initV", "endV", "current", "lastValue", "nextLastValue", "nextFirstValue", "firstValue", "samples", "sampleValue", "sampleFrequency", "getTransformValueAtTime", "_transformCachingAtTime", "anchor", "rotationZ", "rotationY", "rotationX", "orientation", "positionY", "positionZ", "positionX", "getTransformStaticValueAtTime", "propertyGetProp", "ShapePropertyConstructorFunction", "getConstructorFunction", "KeyframedShapePropertyConstructorFunction", "getKeyframedConstructorFunction", "ShapeExpressions", "isClosed", "pointOnPath", "_segmentsLength", "accumulatedLength", "initIndex", "endIndex", "vectorOnPath", "vectorType", "yLength", "magnitude", "xLength", "tangentOnPath", "normalOnPath", "shapeValue", "lastTime", "propertyGetShapeProp", "trims", "getExpressionValue", "calculateExpression", "isKeyframed", "hasExpressions", "initialize", "addDecorator", "SVGComposableEffect", "SVGTintFilter", "matrixFilter", "feMerge", "createMergeNode", "SVGFillFilter", "SVGStrokeEffect", "initialized", "SVGTritoneFilter", "feComponentTransfer", "feFuncR", "feFuncG", "feFuncB", "SVGProLevelsFilter", "createFeFunc", "feFuncA", "feFuncRComposed", "feFuncGComposed", "feFuncBComposed", "SVGDropShadowEffect", "globalFilterSize", "feGaussianBlur", "feOffset", "feFlood", "feComposite", "resultId", "ins", "feMergeNode", "colorWhite", "colorBlack", "elemChildren", "groupPath", "pathMasker", "getTotalLength", "dasharrayValue", "lineLength", "units", "color1", "color2", "color3", "tableR", "tableB", "tableG", "getTableValue", "inputBlack", "inputWhite", "gamma", "outputBlack", "outputWhite", "colorValue", "table", "outputDelta", "inputDelta", "col", "_svgMatteSymbols", "SVGMatte3Effect", "filterElem", "SVGGaussianBlurEffect", "findSymbol", "replaceInParent", "symbolId", "nextChild", "useElem", "setElementAsMask", "symbol", "sigma", "dimensions", "sigmaX", "sigmaY", "edgeMode", "initialize$1", "registerEffect", "module", "_templateObject", "_taggedTemplateLiteral", "_templateObject2", "_templateObject3", "_templateObject4", "_templateObject5", "PlayerState", "PlayMode", "PlayerEvents", "parseSrc", "isLottie", "json", "every", "field", "fromURL", "_x", "_fromURL", "_asyncToGenerator", "srcUrl", "LottiePlayer", "background", "controls", "currentState", "Loading", "disableCheck", "hover", "intermission", "Normal", "_io", "_counter", "_this", "srcParsed", "jsonData", "srcAttrib", "_lottie", "webworkers", "_attachEventListeners", "dispatchEvent", "CustomEvent", "getLottie", "Playing", "Play", "Paused", "Pause", "Stopped", "Stop", "Destroyed", "frame", "seeker", "snapshot", "download", "XMLSerializer", "serializeToString", "encodeURIComponent", "click", "setLooping", "togglePlay", "toggleLooping", "disconnect", "_onVisibilityChange", "animationClass", "renderControls", "IntersectionObserver", "entries", "isIntersecting", "Frozen", "observe", "Rendered", "isStopped", "_handleSeekChange", "_prevState", "Frame", "detail", "Complete", "Bounce", "Loop", "Ready", "Load", "Freeze", "__decorate", "query", "DEFAULT_OPTIONS", "player", "ERROR_PREFIX", "LottieInteractivity", "actions", "container", "mode", "options", "_this", "holdTransition", "addEventListener", "r", "passive", "holdState", "stateHandler", "set", "interactionIdx", "loop", "parseInt", "autoplay", "transitionHandler", "handler", "state", "stop", "forceFlag", "isPaused", "d", "clickCounter", "play", "setDirection", "playDirection", "transition", "count", "clickLimit", "get", "call", "nextInteraction", "removeEventListener", "goToAndPlay", "y", "e", "clientX", "clientY", "cancelable", "preventDefault", "touches", "m", "repeatAmount", "repeat", "playCounter", "L", "frames", "currentFrame", "setTimeout", "E", "totalFrames", "pause", "holdStatus", "w", "type", "I", "index", "i", "incrementIndex", "oldInterctionIdx", "jumpToIndex", "jumpTo", "length", "ignorePath", "goToAndStop", "reset", "resetSegments", "dispatchEvent", "CustomEvent", "bubbles", "composed", "detail", "oldIndex", "newIndex", "playSegments", "path", "_typeof", "enteredPlayer", "constructor", "name", "fileName", "loadedAnimation", "substr", "lastIndexOf", "lottieContainerSize", "getBoundingClientRect", "newContainerStyle", "width", "height", "style", "background", "setAttribute", "elem", "document", "querySelector", "nodeName", "attachedListeners", "getLottie", "load", "HTMLElement", "Error", "window", "lottie", "innerHTML", "loadAnimation", "animationData", "k", "stateFunction", "transitionFunction", "speed", "delay", "setSpeed", "x", "pos", "getContainerCursorPosition", "action", "find", "n", "position", "Array", "isArray", "Number", "isNaN", "xPercent", "yPercent", "Math", "floor", "ceil", "P", "currentPercent", "getContainerVisibility", "t", "visibility", "start", "end", "assignedSegment", "round", "scrolledAndPlayed", "message", "wrapper", "this", "Map", "top", "innerHeight", "cursorX", "cursorY", "left", "c", "isLoaded", "initScrollMode", "_this2", "initCursorMode", "initChainMode", "destroy", "M", "C", "A", "l", "p", "h", "u", "v", "f", "g", "b", "S", "create", "instance", "event", "player", "context", "container", "M", "HAS_DOM_2", "HTMLElement", "_typeof", "HAS_SHADOW", "ShadowRoot", "isDOMElement", "obj", "nodeType", "nodeName", "addClasses", "el", "classNames", "forEach", "className", "classList", "add", "removeClasses", "remove", "RULES", "injectBaseStylesheet", "node", "document", "head", "querySelector", "styleEl", "createElement", "type", "classList", "add", "appendChild", "createTextNode", "insertBefore", "firstChild", "throwIfMissing", "Error", "LEFT_ARROW", "RIGHT_ARROW", "HAS_ANIMATION", "document", "createElement", "style", "Lightbox", "options", "_classCallCheck", "_sizeImgWrapperEl", "bind", "showNext", "showPrevious", "_completeOpen", "_completeClose", "_handleKeydown", "_handleClose", "_options$namespace", "namespace", "_options$parentEl", "parentEl", "throwIfMissing", "_options$triggerEl", "triggerEl", "_options$sourceAttrib", "sourceAttribute", "_options$caption", "caption", "_options$includeImgix", "includeImgixJSClass", "_options$_gallery", "_gallery", "_options$_arrowNaviga", "_arrowNavigation", "_options$closeButtonE", "closeButtonEnabled", "_options$closeTrigger", "closeTrigger", "settings", "onClose", "isDOMElement", "TypeError", "currentTrigger", "openClasses", "_buildClasses", "openingClasses", "closingClasses", "hasBeenLoaded", "elementBuilt", "e", "preventDefault", "el", "addEventListener", "closeButtonEl", "suffix", "classes", "ns", "push", "addClasses", "innerEl", "appendChild", "loaderEl", "imgWrapperEl", "positionHelperEl", "imgEl", "captionEl", "_setUpGalleryElements", "_updateImgSrc", "_updateCaption", "classList", "add", "_buildGalleryButton", "name", "fn", "btn", "innerText", "stopPropagation", "width", "clientWidth", "maxWidth", "height", "clientHeight", "maxHeight", "captionType", "_typeof", "innerHTML", "_this", "imageURL", "getAttribute", "Error", "loadingClasses", "onload", "removeClasses", "setAttribute", "keyCode", "nextTrigger", "onChange", "previousTrigger", "_buildElement", "_bindEventListeners", "window", "removeEventListener", "removeChild", "Luminous", "trigger", "options", "_classCallCheck", "VERSION", "destroy", "bind", "open", "close", "_handleKeyup", "isOpen", "isDOMElement", "TypeError", "rootNode", "document", "getRootNode", "namespace", "sourceAttribute", "caption", "openTrigger", "closeTrigger", "closeWithEscape", "closeOnScroll", "closeButtonEnabled", "appendToNode", "body", "appendToSelector", "onOpen", "onClose", "includeImgixJSClass", "injectBaseStyles", "_gallery", "_arrowNavigation", "settings", "injectionRoot", "injectBaseStylesheet", "_buildLightbox", "_bindEventListeners", "e", "preventDefault", "lightbox", "window", "addEventListener", "removeEventListener", "parentEl", "querySelector", "Lightbox", "triggerEl", "el", "keyCode", "_unbindEvents", "Luminous", "prototype", "open", "close", "destroy", "LuminousGallery", "triggers", "options", "luminousOpts", "_classCallCheck", "optionsDefaults", "arrowNavigation", "onChange", "settings", "Object", "assign", "_constructLuminousInstances", "luminousInstances", "triggerLen", "length", "i", "trigger", "lum", "Luminous", "push", "nextTriggerIndex", "Array", "prototype", "indexOf", "call", "prevTriggerIndex", "imgEl", "_ref", "forEach", "instance", "destroy", "LuminousGallery", "prototype", "destroy", "galleryOpts", "imgEl", "luminousOpts", "gallery", "container", "slides", "slide", "LuminousGallery"] }