{"version":3,"sources":["webpack:///./src/assets/images/card/C13.jpg","webpack:///./src/assets/images/card/C7.jpg","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./src/assets/images/card/C5.jpg","webpack:///./src/assets/images/card/G1.jpg","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/buildFullPath.js","webpack:///./src/views/Result/Result.scss?9748","webpack:///./node_modules/lottie-vuejs/node_modules/axios/index.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/core-js/internals/this-number-value.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./src/assets/images/card/C4.jpg","webpack:///./src/assets/images/card/G2.jpg","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/core-js/modules/es.array.find.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/defaults.js","webpack:///./src/assets/images/card/C14.jpg","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/settle.js","webpack:///./src/assets/images/card/G3.jpg","webpack:///./node_modules/lottie-web/build/player/lottie.js","webpack:///./src/assets/images/result/line2.png","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/axios.js","webpack:///./src/assets/images/result/iso-download.png","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./src/assets/images/card/C6.jpg","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/cookies.js","webpack:///./src/assets/images/card/C1.jpg","webpack:///./src/assets/images/result/ico-share.svg","webpack:///./src/assets/images/card/G4.jpg","webpack:///./src/assets/images/card/C2.jpg","webpack:///./src/assets/images/result/card-shadow.png","webpack:///./src/assets/images/card/C3.jpg","webpack:///./src/assets/images/card/C12.jpg","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/utils.js","webpack:///./src/assets/images/card/C8.jpg","webpack:///./src/assets/images/card/C9.jpg","webpack:///./src/assets/images/card/C11.jpg","webpack:///./src/assets/images/card/C10.jpg","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/createError.js","webpack:///./src/views/Result/Result.vue?2ecc","webpack:///./src/assets/data/card.ts","webpack:///./node_modules/lottie-vuejs/src/LottieAnimation.vue","webpack:///./node_modules/lottie-vuejs/src/LottieAnimation.vue?f4cf","webpack:///./src/views/Result/Result.ts","webpack:///./src/views/Result/Result.vue","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/normalizeHeaderName.js"],"names":["module","exports","utils","transformData","isCancel","defaults","throwIfCancellationRequested","config","cancelToken","throwIfRequested","headers","data","transformRequest","merge","common","method","forEach","adapter","then","response","transformResponse","reason","Promise","reject","Cancel","CancelToken","executor","TypeError","resolvePromise","this","promise","resolve","token","message","prototype","source","cancel","c","encode","val","encodeURIComponent","replace","url","params","paramsSerializer","serializedParams","isURLSearchParams","toString","parts","key","isArray","v","isDate","toISOString","isObject","JSON","stringify","push","join","hashmarkIndex","indexOf","slice","ignoreDuplicateOf","i","parsed","split","line","trim","substr","toLowerCase","concat","callback","arr","apply","error","code","request","isAxiosError","toJSON","name","description","number","fileName","lineNumber","columnNumber","stack","isAbsoluteURL","combineURLs","baseURL","requestedURL","settle","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","isFormData","XMLHttpRequest","auth","username","password","Authorization","btoa","fullPath","open","toUpperCase","timeout","onreadystatechange","readyState","status","responseURL","responseHeaders","getAllResponseHeaders","responseData","responseType","responseText","statusText","onabort","onerror","ontimeout","timeoutErrorMessage","isStandardBrowserEnv","cookies","xsrfValue","withCredentials","xsrfCookieName","read","undefined","xsrfHeaderName","setRequestHeader","isUndefined","e","onDownloadProgress","addEventListener","onUploadProgress","upload","abort","send","uncurryThis","valueOf","requireObjectCoercible","whitespaces","whitespace","ltrim","RegExp","rtrim","createMethod","TYPE","$this","string","start","end","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","prop","deepMerge","axiosKeys","otherKeys","Object","keys","filter","InterceptorManager","handlers","use","fulfilled","rejected","length","eject","id","fn","h","test","originURL","msie","navigator","userAgent","urlParsingNode","document","createElement","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","window","location","requestURL","isString","$","$find","find","addToUnscopables","FIND","SKIPS_HOLES","Array","target","proto","forced","callbackfn","arguments","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","value","getDefaultAdapter","process","call","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","parse","maxContentLength","validateStatus","factory","root","svgNS","locationHref","initialDefaultFrame","_useWebWorker","subframeEnabled","idPrefix","expressionsPlugin","isSafari","cachedColors","bmRnd","bmPow","Math","pow","bmSqrt","sqrt","bmFloor","floor","bmMax","max","bmMin","min","BMMath","ProjectInterface","propertyNames","len","random","abs","tOfVal","absArr","createSizedArray","defaultCurveSegments","degToRads","PI","roundCorner","roundValues","flag","round","styleDiv","element","style","position","top","left","display","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","type","currentTime","totalTime","frameMultiplier","direction","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","_count","HSVtoRGB","s","r","g","b","f","p","q","t","RGBtoHSV","d","addSaturationToRGB","color","offset","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","hex","colorMap","BaseEvent","triggerEvent","eventName","args","_cbs","callbacks","removeEventListener","bind","splice","createTypedArray","createRegularArray","createTypedArrayFactory","Float32Array","Int16Array","Uint8ClampedArray","createNS","createElementNS","createTag","DynamicPropertyContainer","addDynamicProperty","dynamicProperties","container","_isAnimated","iterateDynamicProperties","_mdf","getValue","initDynamicPropertyContainer","getBlendMode","blendModeEnums","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","mode","lineCapEnum","lineJoinEnum","Matrix","_cos","cos","_sin","sin","_tan","tan","_rnd","reset","props","rotate","angle","mCos","mSin","_t","rotateX","rotateY","rotateZ","shear","sx","sy","skew","ax","ay","skewFromAxis","scale","sz","setTransform","a","j","k","l","m","n","o","translate","tx","ty","tz","transform","a2","b2","c2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","o2","p2","_p","_identityCalculated","a1","b1","c1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","p1","isIdentity","_identity","equals","matr","clone","cloneFromProps","applyToPoint","x","y","z","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","pt","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","pt1","pt2","pt3","p0","p4","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","_a","_b","_c","_d","_e","_f","pool","math","nodecrypto","global","width","chunks","digits","rngname","startdenom","significance","overflow","mask","seedrandom","seed","options","entropy","shortseed","mixkey","flatten","tostring","autoseed","arc4","ARC4","prng","int32","quick","double","S","pass","is_math_call","state","copy","keylen","me","count","obj","depth","result","typ","smear","stringseed","charCodeAt","randomBytes","out","Uint8Array","crypto","msCrypto","getRandomValues","browser","plugins","Date","screen","String","fromCharCode","BezierFactory","ob","getBezierEasing","beziers","nm","str","bezEasing","BezierEasing","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","A","aA1","aA2","B","C","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","newtonRaphsonIterate","aGuessT","currentSlope","points","_mSampleValues","_precomputed","get","mY1","mY2","_precompute","_getTForX","_calcSampleValues","mSampleValues","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope","extendPrototype","sources","destination","sourcePrototype","attr","hasOwnProperty","getDescriptor","object","getOwnPropertyDescriptor","createProxyFunction","ProxyFunction","bezFunction","pointOnLine2D","x1","y1","x2","y2","x3","y3","det1","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","getBezierLength","pt4","ptCoord","perc","ptDistance","curveSegments","addedLength","point","lastPoint","lengthData","bezierLengthPool","newElement","percents","lengths","getSegmentsLength","shapeData","segmentsLength","segmentsLengthPool","closed","pathV","pathO","pathI","_length","totalLength","BezierData","segmentLength","PointData","partial","partialLength","buildBezierData","storedData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","dir","getPointInSegment","percent","t1","u1","ptX","ptY","bezierSegmentPoints","getNewSegment","startPerc","endPerc","t0","u0","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","lastTime","vendors","requestAnimationFrame","cancelAnimationFrame","currTime","getTime","timeToCall","setTimeout","clearTimeout","bez","dataManager","workerFn","workerInstance","_counterId","processes","workerProxy","onmessage","postMessage","path","_workerSelf","createWorker","Worker","Blob","blob","URL","createObjectURL","setupWorker","dataFunctionManager","completeLayers","layers","comps","layerData","jLen","kLen","completed","tt","td","hasMask","maskProps","masksProperties","convertPathsToAbsoluteValues","findCompLayers","refId","completeShapes","shapes","completeText","__used","ks","it","checkVersion","minimum","animVersionString","animVersion","checkText","minimumVersion","updateTextLayer","textLayer","documentData","iterateLayers","animationData","assets","checkChars","chars","pathData","paths","__converted","checkPathProperties","checkColors","iterateShapes","checkShapes","completeClosingShapes","cl","completeData","__complete","singleShape","moduleOb","assetLoader","formatResponse","xhr","contentTypeHeader","getResponseHeader","loadAsset","errorCallback","err","load","payload","animation","event","onComplete","onError","createProcess","loadAnimation","processId","origin","loadData","completeAnimation","anim","getFontProperties","fontData","styleName","styles","fStyle","fWeight","weight","FontManager","maxWaitingTime","emptyChar","w","size","combinedCharacters","surrogateModifiers","zeroWidthJoiner","trimFontOptions","font","familyArray","enabledFamilies","setUpNode","family","parentNode","fontFamily","node","innerText","fontSize","fontVariant","fontStyle","fontWeight","letterSpacing","appendChild","body","offsetWidth","parent","checkLoadedFonts","fonts","loadedCount","loaded","fOrigin","monoCase","sansCase","removeChild","now","initTime","checkLoadedFontsBinded","setIsLoadedBinded","createHelper","def","tHelper","fontProps","fFamily","textContent","fClass","tCanvasHelper","getContext","addFonts","defs","isLoaded","list","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","fPath","querySelectorAll","rel","src","sc","helper","cache","addChars","found","ch","getCharData","char","console","warn","_warned","measureText","fontName","getFontByName","index","doubleSize","getComputedTextLength","singleSize","fName","isModifier","firstCharCode","secondCharCode","sum","isZeroWidthJoiner","isCombinedCharacter","setIsLoaded","Font","typekitLoaded","fontPrototype","PropertyFactory","initFrame","mathAbs","interpolateValue","frameNum","caching","newValue","offsetTime","propType","pv","keyData","nextKeyData","keyframeMetadata","fnc","iterationIndex","lastIndex","keyframes","keyframesMetadata","endValue","nextKeyTime","keyTime","to","ti","ind","__fnct","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quatStart","createQuaternion","quatEnd","time","quaternionToEuler","slerp","constructor","omega","cosom","sinom","scale0","scale1","az","aw","bx","by","bz","bw","acos","quat","qx","qy","qz","qw","heading","atan2","attitude","asin","bank","values","c3","s1","s2","s3","getValueAtCurrentTime","comp","renderedFrame","endTime","_caching","renderResult","setVValue","multipliedValue","mult","processEffectsSequence","elem","globalData","frameId","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","ValueProperty","vel","MultiDimensionalProperty","KeyframedValueProperty","st","KeyframedMultidimensionalProperty","arrLen","getProp","TransformPropertyFactory","defaultVector","applyToMatrix","mat","sk","sa","rz","ry","rx","or","px","py","pz","processKeys","forceRender","_isDirty","precalculateMatrix","frameRate","pre","appliedTransformations","autoOriented","v1","v2","getValueAtTime","autoOrient","_addDynamicProperty","TransformProperty","getTransformProperty","ShapePath","_maxLength","setPathData","setLength","pointPool","doubleArrayLength","setXYAt","pos","setTripleAt","vX","vY","oX","oY","iX","iY","reverse","newPath","vertices","outPoints","inPoints","init","cnt","ShapePropertyFactory","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","localShapeCollection","shapesEqual","shape1","shape2","shapePool","releaseShapes","addShape","ShapeProperty","shapeCollectionPool","newShapeCollection","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","s0","_cw","_v","StarShapeProperty","StarShapePropertyFactory","ir","is","convertToPath","convertStarToPath","convertPolygonToPath","os","rad","roundness","perimSegment","numPts","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","getShapeProp","dataProp","getConstructorFunction","getKeyframedConstructorFunction","ShapeModifiers","modifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","RoundCornersModifier","PuckerAndBloatModifier","RepeaterModifier","ShapeCollection","DashProperty","renderer","dataProps","dashStr","dashArray","dashoffset","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","initModifierProperties","addShapeToModifier","shape","setAsAnimated","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segments","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","release","processShapes","shapePaths","_s","totalShapeLength","edges","newShapesData","addShapes","lastShapeInCollection","lastShape","pop","addPaths","newPaths","addSegment","shapePath","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","segment","rd","processPath","clonedPath","currentV","currentI","currentO","closerV","distance","newPosPerc","amount","centerPoint","pathLength","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","matrix","applyTransforms","inv","scaleX","scaleY","elemsData","_currentCopies","_elements","_groups","unshift","resetElements","elements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","items","itemsTransform","cont","hasReloaded","copies","ceil","group","ix","reloadShapes","elems","op","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","comparePoints","diff","buildShapeString","pathNodes","_o","_i","shapeString","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","audio","pause","resume","setRate","rateValue","createAudio","assetPath","Howl","isPlaying","play","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","ImagePreloader","proxyImage","canvas","height","ctx","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","assetsPath","originalPath","imagePath","u","testImageLoaded","img","intervalId","setInterval","box","getBBox","_imageLoaded","clearInterval","createImageData","setAttributeNS","_elementHelper","append","createImgData","crossOrigin","createFootageData","footageData","_footageLoaded","loadAssets","cb","images","_createImageData","setPath","setAssetsPath","getAsset","destroy","loadedImages","loadedFootages","setCacheType","elementHelper","ImagePreloaderFactory","featureSupport","maskType","filtersFactory","createFilter","filId","skipCoordinates","fil","createAlphaToLuminanceFilter","feColorMatrix","TextAnimatorProperty","textData","renderType","_hasMaskedPath","_frameId","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","TextAnimatorDataProperty","animatorProps","defaultData","textAnimatorAnimatables","sw","fc","fh","fs","fb","TextSelectorProp","getTextSelectorProp","LetterProps","TextProperty","keysIndex","canResize","minimumFontSize","currentData","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","of","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","searchProperties","maskManager","getMaskProperty","getMeasures","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","prevPoint","tanAngle","animators","matrixHelper","mHelper","renderedLettersCount","letters","tLength","pi","animatorSelector","letterValue","yOff","firstLine","offf","xPathPos","yPathPos","elemOpacity","letterSw","letterSc","letterFc","letterO","initPathPos","initSegmentInd","initPointInd","currentLine","letterM","letterP","defaultPropsArray","animatorJustifyOffset","animatorFirstCharOffset","justifyOffsetMult","isNewLine","getMult","anIndexes","totalChars","extra","an","animatorOffset","add","rot","atan","update","updated","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","text","charCode","charactersArray","shouldCombine","newLineFlag","charData","fontManager","anchorGrouping","currentSize","currentPos","lineWidth","maxLineWidth","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","animatorData","letterData","based","indexes","rn","newInd","currentInd","updateDocumentData","newData","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorPropFactory","_currentTextLength","finalS","finalE","xe","ne","sm","textProperty","easer","tot","smoothness","threshold","newCharsFlag","divisor","poolFactory","initialLength","_create","_release","pooling","create","cloned","shapeCollection","markerParser","parsePayloadLines","lines","keysCount","Error","_markers","markers","_marker","markerData","tm","duration","dr","cm","_","__","BaseRenderer","SVGRenderer","animationItem","svgElement","ariaLabel","title","titleElement","titleId","descElement","descId","maskElement","layerElement","renderConfig","preserveAspectRatio","imagePreserveAspectRatio","contentVisibility","progressiveLoad","hideOnTransparent","viewBoxOnly","viewBoxSize","className","focusable","filterSize","pendingElements","destroyed","rendererType","CanvasRenderer","clearCanvas","context","dpr","wrapper","devicePixelRatio","currentGlobalAlpha","contextData","CVContextData","transformMat","HybridRenderer","threeDElements","camera","supports3d","MaskElement","viewData","solidPath","rect","expansor","feMorph","properties","currentMasks","layerId","maskRef","lastPath","filterID","expan","lastOperator","filterId","lastRadius","createLayerSolidPath","invRect","drawPath","maskedElement","addRenderableComponent","HierarchyElement","FrameElement","TransformElement","RenderableElement","RenderableDOMElement","ProcessedElement","SVGStyleData","level","lvl","hd","pElem","msElem","SVGShapeData","transformers","caches","lStr","SVGTransformData","SVGStrokeStyleData","styleOb","SVGFillStyleData","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","checkLayers","num","ip","buildItem","checkPendingElements","createItem","layer","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","createFootage","AudioElement","FootageElement","buildAllItems","includeLayers","newLayers","setProjectInterface","pInterface","projectInterface","initItems","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","searchExtraCompositions","xt","initExpressions","registerComposition","setupGlobalData","animData","fontsContainer","getAssetData","imageLoader","imagePreloader","audioController","fr","compSize","NullElement","SVGShapeElement","SVGTextLottieElement","IImageElement","SVGCompElement","ISolidElement","configAnimation","maskId","updateContainerSize","appendElementInPos","setMatte","checkParenting","renderFrame","currentFrame","prepareFrame","getBaseElement","nextElement","insertBefore","hide","show","CVShapeElement","CVTextElement","CVImageElement","CVCompElement","CVSolidElement","ctxTransform","cProps","cTr","trProps","canvasContext","ctxOpacity","globalAlpha","cO","restore","save","actionFlag","cArrPos","duplicate","saved","savedOp","blendMode","popped","containerStyle","mozTransformOrigin","transformCanvas","isDashed","elementWidth","elementHeight","elementRel","animationRel","offsetHeight","par","fillType","beginPath","closePath","clip","clearRect","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","tmpDOMElement","getThreeDContainerByPos","HShapeElement","HTextElement","HCameraElement","HImageElement","HCompElement","HSolidElement","startPos","endPos","perspectiveElem","createThreeDContainer","center","webkitTransform","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","svg","setup","cWidth","cHeight","webkitPerspective","perspective","floatingContainer","isFirstFrame","finalMat","finalTransform","mProp","getMaskelement","pathString","pathShapeValue","initHierarchy","_isParent","prepareProperties","isVisible","initTransform","_matMdf","_opMdf","ao","renderTransform","globalToLocal","transforms","ptNew","initRenderable","isInRange","hidden","isTransparent","renderableComponents","component","removeRenderableComponent","prepareRenderableFrame","checkLayerLimits","checkTransparency","renderRenderable","sourceRectAtTime","getLayerSize","_prototype","initElement","initBaseData","initRendererElement","createContainerElements","createRenderableComponents","createContent","baseElement","renderElement","renderInnerContent","innerElem","destroyBaseElement","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","stop","gf","cst","opacityId","opFill","lc","lj","ml","ms","ost","SVGElementsRenderer","_identityMatrix","_matrixHelper","createRenderFunction","renderFill","renderGradient","renderGradientStroke","renderStroke","renderPath","renderContentTransform","styleData","itemData","pathStringTransformed","redraw","iterations","lLen","styleElem","hasOpacity","attr1","attr2","cValues","oValues","ang","ShapeTransformManager","sequences","sequenceList","transform_key_count","CVShapeData","transformsManager","styledShapes","styledShape","addTransformSequence","trNodes","BaseElement","SVGBaseElement","IShapeElement","ITextElement","ICompElement","sourceRect","_isPlaying","_canPlay","_currentTime","_placeholder","textSpans","shapesData","stylesList","shapeModifiers","itemsData","processedElements","animatedContents","SVGTintFilter","filterManager","matrixFilter","effectElements","feMergeNode","feMerge","SVGFillFilter","SVGGaussianBlurEffect","feGaussianBlur","SVGStrokeEffect","initialized","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","feOffset","feFlood","feComposite","originalNodeAdded","sequence","processSequence","processSequences","getNewKey","checkMasks","layerInterface","LayerExpressionInterface","registerMaskInterface","effectsInterface","EffectsExpressionInterface","createEffectsInterface","registerEffectsInterface","compInterface","CompExpressionInterface","shapeInterface","ShapeExpressionInterface","content","textInterface","TextExpressionInterface","setBlendMode","blendModeValue","bm","sr","effectsManager","EffectsManager","getType","matteElement","transformedElement","_sizeChanged","gg","layerElementParent","masker","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","ln","cp","clipId","cpGroup","renderableEffectsManager","SVGEffects","addShapeToModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","shouldBreakProcess","searchProcessedElement","addProcessedElement","textAnimator","buildNewText","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","buildColor","colorData","emptyProp","timeRemapped","setElements","getElements","destroyElements","pr","volumeValue","FootageInterface","getFootageData","textContainer","buildTextContents","textArray","textContents","currentTextContent","tSpan","usesGlyphs","cachedSpansLength","tElement","justify","textBox","bbox","renderedLetter","textSpan","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","GradientConstructor","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","shapeProperty","setElementStyles","render","currentTransform","modifier","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","colorBlack","colorWhite","opacity","kBlurrinessToSigma","sigma","dimensions","sigmaX","sigmaY","edgeMode","initialize","groupPath","elemChildren","children","childNodes","removeAttribute","pathMasker","dasharrayValue","getTotalLength","lineLength","units","color1","color2","color3","tableR","tableG","tableB","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","table","outputDelta","inputDelta","col","_svgMatteSymbols","SVGMatte3Effect","filterElem","ef","filters","CVBaseElement","CVMaskElement","hasMasks","stroke","fill","currentRender","sWidth","fValue","CVEffects","HBaseElement","shapesContainer","currentBBox","textPaths","isMasked","pe","_prevMat","HEffects","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","symbol","newLength","currentSavedOp","set","createElements","globalCompositeOperation","hideElement","showElement","forceRealStack","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","drawImage","moveTo","lineTo","bezierCurveTo","transformHelper","dashResetter","preTransforms","co","wi","da","do","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","nodes","currentStyle","coOp","strokeStyle","grd","lineCap","lineJoin","miterLimit","setLineDash","lineDashOffset","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","hasFill","hasStroke","commands","pathArr","lastFill","lastStroke","lastStrokeW","checkBlendMode","tg","transformedElementStyle","matrixValue","addEffects","backgroundColor","_createBaseContainerElements","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","item","boundingBox","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","bounds","shapeBoundingBox","xMax","right","yMax","bottom","tempBoundingBox","p3","b2ac","t2","calculateF","calculateBoundingBox","currentBoxContains","changed","shapeStyle","shapeTransform","compW","compH","innerElemStyle","textColor","strokeWidth","lineHeight","tParent","tCont","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","margin","svgTransform","Image","imageElem","perspectiveStyle","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","animationManager","registeredAnimations","playingAnimationsNum","_stopped","_isFrozen","removeElement","ev","animItem","isPaused","subtractPlayingCount","registerAnimation","AnimationItem","setupAnimation","setData","getRegisteredAnimations","lenAnims","animations","addPlayingCount","activate","setParams","setSpeed","setDirection","nowTime","elapsedTime","advanceTime","first","goToAndStop","isFrame","togglePause","searchAnimations","standalone","animElements","getElementsByClassName","getElementsByTagName","div","resize","freeze","unfreeze","currentRawFrame","frameMult","playSpeed","playDirection","playCount","autoplay","loop","animationID","timeCompleted","segmentPos","isSubframeEnabled","_idle","_completedLoop","onSetupError","onSegmentComplete","animType","rendererSettings","parseInt","autoloadSegments","initialSegment","lastIndexOf","trigger","wrapperAttributes","attributes","getNamedItem","prerender","loadNextSegment","shift","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","updaFrameModifier","waitForFontsLoaded","triggerConfigError","gotoFrame","setSubframe","triggerRenderFrameError","setCurrentRawFrameValue","getMarkerData","markerName","marker","numValue","Number","isNaN","frameModifier","goToAndPlay","playSegments","nextValue","_isComplete","checkSegments","adjustSegment","setSegment","pendingFrame","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onSegmentStart","onDestroy","getPath","getDuration","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","ExpressionManager","fetch","frames","$bm_isInstanceOfArray","isNumerable","tOfV","$bm_neg","tOfA","lenA","retArr","easeInBez","easeOutBez","easeInOutBez","tOfB","lenB","sub","mul","mod","$bm_sum","$bm_sub","$bm_mul","$bm_div","$bm_mod","clamp","mm","radiansToDegrees","radians_to_degrees","degreesToRadians","degrees_to_radians","helperLengthArray","arr1","arr2","normalize","vec","rgbToHsl","hue2rgb","hslToRgb","linear","tMin","tMax","value1","value2","_tMin","rnd","rndm","createPath","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","initiateExpression","property","needsVelocity","_needsRandom","elemType","$bm_transform","effect","thisProperty","valueAtTime","defineProperty","frameDuration","displayStartTime","inPoint","outPoint","loopIn","loop_in","loopOut","loop_out","smooth","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","rotation","anchorPoint","thisLayer","thisComp","velocityAtTime","scoped_bm_rt","expression_function","eval","numKeys","active","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","loopInDuration","loopOutDuration","getVelocityAtTime","velocity","textIndex","textTotal","selectorValue","lookAt","elem1","elem2","fVec","pitch","yaw","easeOut","val1","val2","applyEase","easeIn","ease","iKey","lenKey","nearestKey","obKey","framesToTime","fps","timeToFrames","seedRandom","randSeed","substring","posterizeTime","framesPerSecond","hasParent","executeExpression","_value","frameExpressionId","expressionHelpers","searchExpressions","_cachingAtTime","getSpeedAtTime","delta","speed","getStaticValueAtTime","setGroupProperty","propertyGroup","durationFlag","cycleDuration","firstKeyFrame","ret","lastKeyFrame","initV","endV","current","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","endFrame","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","anchor","skewAxis","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","getShapeValueAtTime","shapeValue","propertyIndex","ShapePropertyConstructorFunction","KeyframedShapePropertyConstructorFunction","ShapeExpressions","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","unitVector","tangentOnPath","normalOnPath","propertyGetShapeProp","trims","calculateExpression","getExpressionValue","isKeyframed","hasExpressions","ShapePathInterface","view","interfaceFunction","_propertyGroup","propertyGroupFactory","PropertyInterface","defineProperties","_name","mn","parentPropertyGroup","propertyName","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","defaultInterfaceFactory","contentsInterfaceFactory","interfaces","numProperties","transformInterface","transformInterfaceFactory","cix","np","ExpressionPropertyInterface","startPoint","endPoint","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","outerRadius","outerRoundness","innerRoundness","innerRadius","radius","_interfaceFunction","parentGroupWrapper","_prevValue","_sourceText","_thisLayerFunction","sourceText","stringValue","getMatrix","toWorldMat","propMatrix","toWorldVec","applyPoint","fromWorldVec","invertPoint","sampleImage","_registerMaskInterface","MaskManagerInterface","_registerEffectsInterface","effects","TransformExpressionInterface","anchorPointDescriptor","anchor_point","startTime","outlineInterfaceFactory","currentPropertyName","currentProperty","propertyNameIndex","dataInterfaceFactory","outlineInterface","dataInterface","pixelAspect","numLayers","_thisFunction","xRotation","yRotation","xPosition","yPosition","zPosition","_px","_py","_pz","_transformFactory","compositions","_thisProjectFunction","effectsData","createGroupInterface","groupInterface","createValueInterface","enabled","en","expressionProperty","MaskInterface","_mask","_data","MaskManager","_masksInterfaces","maskFunction","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","valueProp","assign","speedAtTime","UnidimensionalPropertyInterface","MultidimensionalPropertyInterface","arrValue","defaultGetter","TextExpressionSelectorPropFactory","getValueProxy","total","propertyGetTextProp","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","effectItem","GroupEffect","eff","lottie","setLocationHref","setSubframeRendering","setIDPrefix","prefix","setQuality","inBrowser","installPlugin","plugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","variable","vars","queryString","pair","decodeURIComponent","useWebWorker","__getFactory","version","scripts","myScript","Axios","mergeConfig","createInstance","defaultConfig","instance","extend","axios","instanceConfig","all","promises","spread","default","DESCRIPTORS","isForced","redefine","hasOwn","inheritIfRequired","isPrototypeOf","isSymbol","toPrimitive","fails","getOwnPropertyNames","thisNumberValue","NUMBER","NativeNumber","NumberPrototype","arraySlice","toNumeric","primValue","toNumber","argument","third","radix","maxCode","NaN","NumberWrapper","dummy","fns","write","expires","domain","secure","cookie","isNumber","toGMTString","match","remove","relativeURL","FormData","ArrayBuffer","isView","isFunction","pipe","URLSearchParams","product","assignValue","thisArg","enhanceError","_hoisted_1","class","_hoisted_2","alt","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_ctx","_cache","$props","$setup","$data","$options","_component_PopupCompleted","_component_LogoSmall","_component_lottie_animation","_component_ButtonGold","_component_router_link","IsGolden","Carddetail","IsIos","image","APIDownload","cardnumber","download","innerHTML","detail","subtitle","btActive","onClick","ShareFB","CardList","ref","required","Boolean","autoPlay","loopDelayMin","loopDelayMax","scaleMode","mounted","methods","loadJsonData","jsonData","$refs","lavContainer","$emit","executeLoop","getRandomInt","watch","newVal","oldVal","__exports__","components","LogoSmall","ButtonGold","LottieAnimation","pageview","router","store","CardData","getters","fbq","ShareURL","cardid","share_url","RequestParam","SaveUserActivity","Luckydraw","page_path","cardtype","CardId","Detail","Card","platform","dispatchRequest","interceptors","chain","interceptor","getUri","normalizedName"],"mappings":"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","file":"js/chunk-74515e7a.5a365bd7.js","sourcesContent":["module.exports = __webpack_public_path__ + \"img/C13.72a7d53e.jpg\";","module.exports = __webpack_public_path__ + \"img/C7.80333162.jpg\";","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","module.exports = __webpack_public_path__ + \"img/C5.b057cce6.jpg\";","module.exports = __webpack_public_path__ + \"img/G1.b89f2cc1.jpg\";","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./Result.scss?vue&type=style&index=0&lang=scss\"","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = replace(string, ltrim, '');\n if (TYPE & 2) string = replace(string, rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'params', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy'];\n var defaultToConfig2Keys = [\n 'baseURL', 'url', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress',\n 'maxContentLength', 'validateStatus', 'maxRedirects', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath'\n ];\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys);\n\n var otherKeys = Object\n .keys(config2)\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, function otherKeysDefaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n return config;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","module.exports = __webpack_public_path__ + \"img/C4.22b9de40.jpg\";","module.exports = __webpack_public_path__ + \"img/G2.e1dcd468.jpg\";","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","module.exports = __webpack_public_path__ + \"img/C14.8bf71cb7.jpg\";","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","module.exports = __webpack_public_path__ + \"img/G3.f7363a95.jpg\";","(typeof navigator !== \"undefined\") && (function(root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(function() {\n return factory(root);\n });\n } else if (typeof module === \"object\" && module.exports) {\n module.exports = factory(root);\n } else {\n root.lottie = factory(root);\n root.bodymovin = root.lottie;\n }\n}((window || {}), function(window) {\n\t/* global locationHref:writable, animationManager, subframeEnabled:writable, defaultCurveSegments:writable, roundValues,\r\nexpressionsPlugin:writable, PropertyFactory, ShapePropertyFactory, Matrix, idPrefix:writable, _useWebWorker:writable */\r\n/* exported locationHref, subframeEnabled, expressionsPlugin, idPrefix, _useWebWorker */\r\n\r\n'use strict';\r\n\r\n/* exported svgNS, locationHref, initialDefaultFrame, _useWebWorker */\r\n\r\nvar svgNS = 'http://www.w3.org/2000/svg';\r\n\r\nvar locationHref = '';\r\n\r\nvar initialDefaultFrame = -999999;\r\n\r\nvar _useWebWorker = false;\r\n\r\n/* global createSizedArray */\r\n/* exported subframeEnabled, expressionsPlugin, isSafari, cachedColors, bmPow, bmSqrt, bmFloor, bmMax, bmMin, ProjectInterface,\r\ndefaultCurveSegments, degToRads, roundCorner, bmRnd, styleDiv, BMEnterFrameEvent, BMCompleteEvent, BMCompleteLoopEvent,\r\nBMSegmentStartEvent, BMDestroyEvent, BMRenderFrameErrorEvent, BMConfigErrorEvent, BMAnimationConfigErrorEvent, createElementID,\r\naddSaturationToRGB, addBrightnessToRGB, addHueToRGB, rgbToHex */\r\n\r\nvar subframeEnabled = true;\r\nvar idPrefix = '';\r\nvar expressionsPlugin;\r\nvar isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\r\nvar cachedColors = {};\r\nvar bmRnd;\r\nvar bmPow = Math.pow;\r\nvar bmSqrt = Math.sqrt;\r\nvar bmFloor = Math.floor;\r\nvar bmMax = Math.max;\r\nvar bmMin = Math.min;\r\n\r\nvar BMMath = {};\r\n(function () {\r\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\r\n var i;\r\n var len = propertyNames.length;\r\n for (i = 0; i < len; i += 1) {\r\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\r\n }\r\n}());\r\n\r\nfunction ProjectInterface() { return {}; }\r\n\r\nBMMath.random = Math.random;\r\nBMMath.abs = function (val) {\r\n var tOfVal = typeof val;\r\n if (tOfVal === 'object' && val.length) {\r\n var absArr = createSizedArray(val.length);\r\n var i;\r\n var len = val.length;\r\n for (i = 0; i < len; i += 1) {\r\n absArr[i] = Math.abs(val[i]);\r\n }\r\n return absArr;\r\n }\r\n return Math.abs(val);\r\n};\r\nvar defaultCurveSegments = 150;\r\nvar degToRads = Math.PI / 180;\r\nvar roundCorner = 0.5519;\r\n\r\nfunction roundValues(flag) {\r\n if (flag) {\r\n bmRnd = Math.round;\r\n } else {\r\n bmRnd = function (val) {\r\n return val;\r\n };\r\n }\r\n}\r\nroundValues(false);\r\n\r\nfunction styleDiv(element) {\r\n element.style.position = 'absolute';\r\n element.style.top = 0;\r\n element.style.left = 0;\r\n element.style.display = 'block';\r\n element.style.transformOrigin = '0 0';\r\n element.style.webkitTransformOrigin = '0 0';\r\n element.style.backfaceVisibility = 'visible';\r\n element.style.webkitBackfaceVisibility = 'visible';\r\n element.style.transformStyle = 'preserve-3d';\r\n element.style.webkitTransformStyle = 'preserve-3d';\r\n element.style.mozTransformStyle = 'preserve-3d';\r\n}\r\n\r\nfunction BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\r\n this.type = type;\r\n this.currentTime = currentTime;\r\n this.totalTime = totalTime;\r\n this.direction = frameMultiplier < 0 ? -1 : 1;\r\n}\r\n\r\nfunction BMCompleteEvent(type, frameMultiplier) {\r\n this.type = type;\r\n this.direction = frameMultiplier < 0 ? -1 : 1;\r\n}\r\n\r\nfunction BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\r\n this.type = type;\r\n this.currentLoop = currentLoop;\r\n this.totalLoops = totalLoops;\r\n this.direction = frameMultiplier < 0 ? -1 : 1;\r\n}\r\n\r\nfunction BMSegmentStartEvent(type, firstFrame, totalFrames) {\r\n this.type = type;\r\n this.firstFrame = firstFrame;\r\n this.totalFrames = totalFrames;\r\n}\r\n\r\nfunction BMDestroyEvent(type, target) {\r\n this.type = type;\r\n this.target = target;\r\n}\r\n\r\nfunction BMRenderFrameErrorEvent(nativeError, currentTime) {\r\n this.type = 'renderFrameError';\r\n this.nativeError = nativeError;\r\n this.currentTime = currentTime;\r\n}\r\n\r\nfunction BMConfigErrorEvent(nativeError) {\r\n this.type = 'configError';\r\n this.nativeError = nativeError;\r\n}\r\n\r\nfunction BMAnimationConfigErrorEvent(type, nativeError) {\r\n this.type = type;\r\n this.nativeError = nativeError;\r\n}\r\n\r\nvar createElementID = (function () {\r\n var _count = 0;\r\n return function createID() {\r\n _count += 1;\r\n return idPrefix + '__lottie_element_' + _count;\r\n };\r\n}());\r\n\r\nfunction HSVtoRGB(h, s, v) {\r\n var r;\r\n var g;\r\n var b;\r\n var i;\r\n var f;\r\n var p;\r\n var q;\r\n var t;\r\n i = Math.floor(h * 6);\r\n f = h * 6 - i;\r\n p = v * (1 - s);\r\n q = v * (1 - f * s);\r\n t = v * (1 - (1 - f) * s);\r\n switch (i % 6) {\r\n case 0: r = v; g = t; b = p; break;\r\n case 1: r = q; g = v; b = p; break;\r\n case 2: r = p; g = v; b = t; break;\r\n case 3: r = p; g = q; b = v; break;\r\n case 4: r = t; g = p; b = v; break;\r\n case 5: r = v; g = p; b = q; break;\r\n default: break;\r\n }\r\n return [r,\r\n g,\r\n b];\r\n}\r\n\r\nfunction RGBtoHSV(r, g, b) {\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var d = max - min;\r\n var h;\r\n var s = (max === 0 ? 0 : d / max);\r\n var v = max / 255;\r\n\r\n switch (max) {\r\n case min: h = 0; break;\r\n case r: h = (g - b) + d * (g < b ? 6 : 0); h /= 6 * d; break;\r\n case g: h = (b - r) + d * 2; h /= 6 * d; break;\r\n case b: h = (r - g) + d * 4; h /= 6 * d; break;\r\n default: break;\r\n }\r\n\r\n return [\r\n h,\r\n s,\r\n v,\r\n ];\r\n}\r\n\r\nfunction addSaturationToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[1] += offset;\r\n if (hsv[1] > 1) {\r\n hsv[1] = 1;\r\n } else if (hsv[1] <= 0) {\r\n hsv[1] = 0;\r\n }\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n}\r\n\r\nfunction addBrightnessToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[2] += offset;\r\n if (hsv[2] > 1) {\r\n hsv[2] = 1;\r\n } else if (hsv[2] < 0) {\r\n hsv[2] = 0;\r\n }\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n}\r\n\r\nfunction addHueToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[0] += offset / 360;\r\n if (hsv[0] > 1) {\r\n hsv[0] -= 1;\r\n } else if (hsv[0] < 0) {\r\n hsv[0] += 1;\r\n }\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n}\r\n\r\nvar rgbToHex = (function () {\r\n var colorMap = [];\r\n var i;\r\n var hex;\r\n for (i = 0; i < 256; i += 1) {\r\n hex = i.toString(16);\r\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\r\n }\r\n\r\n return function (r, g, b) {\r\n if (r < 0) {\r\n r = 0;\r\n }\r\n if (g < 0) {\r\n g = 0;\r\n }\r\n if (b < 0) {\r\n b = 0;\r\n }\r\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\r\n };\r\n}());\r\n\r\nfunction BaseEvent() {}\r\nBaseEvent.prototype = {\r\n triggerEvent: function (eventName, args) {\r\n if (this._cbs[eventName]) {\r\n var callbacks = this._cbs[eventName];\r\n for (var i = 0; i < callbacks.length; i += 1) {\r\n callbacks[i](args);\r\n }\r\n }\r\n },\r\n addEventListener: function (eventName, callback) {\r\n if (!this._cbs[eventName]) {\r\n this._cbs[eventName] = [];\r\n }\r\n this._cbs[eventName].push(callback);\r\n\r\n return function () {\r\n this.removeEventListener(eventName, callback);\r\n }.bind(this);\r\n },\r\n removeEventListener: function (eventName, callback) {\r\n if (!callback) {\r\n this._cbs[eventName] = null;\r\n } else if (this._cbs[eventName]) {\r\n var i = 0;\r\n var len = this._cbs[eventName].length;\r\n while (i < len) {\r\n if (this._cbs[eventName][i] === callback) {\r\n this._cbs[eventName].splice(i, 1);\r\n i -= 1;\r\n len -= 1;\r\n }\r\n i += 1;\r\n }\r\n if (!this._cbs[eventName].length) {\r\n this._cbs[eventName] = null;\r\n }\r\n }\r\n },\r\n};\r\n\r\n/* exported createTypedArray, createSizedArray */\r\n\r\nvar createTypedArray = (function () {\r\n function createRegularArray(type, len) {\r\n var i = 0;\r\n var arr = [];\r\n var value;\r\n switch (type) {\r\n case 'int16':\r\n case 'uint8c':\r\n value = 1;\r\n break;\r\n default:\r\n value = 1.1;\r\n break;\r\n }\r\n for (i = 0; i < len; i += 1) {\r\n arr.push(value);\r\n }\r\n return arr;\r\n }\r\n function createTypedArrayFactory(type, len) {\r\n if (type === 'float32') {\r\n return new Float32Array(len);\r\n } if (type === 'int16') {\r\n return new Int16Array(len);\r\n } if (type === 'uint8c') {\r\n return new Uint8ClampedArray(len);\r\n }\r\n return createRegularArray(type, len);\r\n }\r\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\r\n return createTypedArrayFactory;\r\n }\r\n return createRegularArray;\r\n}());\r\n\r\nfunction createSizedArray(len) {\r\n return Array.apply(null, { length: len });\r\n}\r\n\r\n/* global svgNS */\r\n/* exported createNS */\r\n\r\nfunction createNS(type) {\r\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\r\n return document.createElementNS(svgNS, type);\r\n}\r\n\r\n/* exported createTag */\r\n\r\nfunction createTag(type) {\r\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\r\n return document.createElement(type);\r\n}\r\n\r\nfunction DynamicPropertyContainer() {}\r\nDynamicPropertyContainer.prototype = {\r\n addDynamicProperty: function (prop) {\r\n if (this.dynamicProperties.indexOf(prop) === -1) {\r\n this.dynamicProperties.push(prop);\r\n this.container.addDynamicProperty(this);\r\n this._isAnimated = true;\r\n }\r\n },\r\n iterateDynamicProperties: function () {\r\n this._mdf = false;\r\n var i;\r\n var len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n if (this.dynamicProperties[i]._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n },\r\n initDynamicPropertyContainer: function (container) {\r\n this.container = container;\r\n this.dynamicProperties = [];\r\n this._mdf = false;\r\n this._isAnimated = false;\r\n },\r\n};\r\n\r\n/* exported getBlendMode */\r\n\r\nvar getBlendMode = (function () {\r\n var blendModeEnums = {\r\n 0: 'source-over',\r\n 1: 'multiply',\r\n 2: 'screen',\r\n 3: 'overlay',\r\n 4: 'darken',\r\n 5: 'lighten',\r\n 6: 'color-dodge',\r\n 7: 'color-burn',\r\n 8: 'hard-light',\r\n 9: 'soft-light',\r\n 10: 'difference',\r\n 11: 'exclusion',\r\n 12: 'hue',\r\n 13: 'saturation',\r\n 14: 'color',\r\n 15: 'luminosity',\r\n };\r\n\r\n return function (mode) {\r\n return blendModeEnums[mode] || '';\r\n };\r\n}());\r\n\r\n/* exported lineCapEnum, lineJoinEnum */\r\n\r\nvar lineCapEnum = {\r\n 1: 'butt',\r\n 2: 'round',\r\n 3: 'square',\r\n};\r\n\r\nvar lineJoinEnum = {\r\n 1: 'miter',\r\n 2: 'round',\r\n 3: 'bevel',\r\n};\r\n\r\n/* global createTypedArray */\r\n\r\n/*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\r\n\r\n/**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\r\n\r\nvar Matrix = (function () {\r\n var _cos = Math.cos;\r\n var _sin = Math.sin;\r\n var _tan = Math.tan;\r\n var _rnd = Math.round;\r\n\r\n function reset() {\r\n this.props[0] = 1;\r\n this.props[1] = 0;\r\n this.props[2] = 0;\r\n this.props[3] = 0;\r\n this.props[4] = 0;\r\n this.props[5] = 1;\r\n this.props[6] = 0;\r\n this.props[7] = 0;\r\n this.props[8] = 0;\r\n this.props[9] = 0;\r\n this.props[10] = 1;\r\n this.props[11] = 0;\r\n this.props[12] = 0;\r\n this.props[13] = 0;\r\n this.props[14] = 0;\r\n this.props[15] = 1;\r\n return this;\r\n }\r\n\r\n function rotate(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateX(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateY(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateZ(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function shear(sx, sy) {\r\n return this._t(1, sy, sx, 1, 0, 0);\r\n }\r\n\r\n function skew(ax, ay) {\r\n return this.shear(_tan(ax), _tan(ay));\r\n }\r\n\r\n function skewFromAxis(ax, angle) {\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\r\n ._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\r\n ._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\r\n }\r\n\r\n function scale(sx, sy, sz) {\r\n if (!sz && sz !== 0) {\r\n sz = 1;\r\n }\r\n if (sx === 1 && sy === 1 && sz === 1) {\r\n return this;\r\n }\r\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\r\n this.props[0] = a;\r\n this.props[1] = b;\r\n this.props[2] = c;\r\n this.props[3] = d;\r\n this.props[4] = e;\r\n this.props[5] = f;\r\n this.props[6] = g;\r\n this.props[7] = h;\r\n this.props[8] = i;\r\n this.props[9] = j;\r\n this.props[10] = k;\r\n this.props[11] = l;\r\n this.props[12] = m;\r\n this.props[13] = n;\r\n this.props[14] = o;\r\n this.props[15] = p;\r\n return this;\r\n }\r\n\r\n function translate(tx, ty, tz) {\r\n tz = tz || 0;\r\n if (tx !== 0 || ty !== 0 || tz !== 0) {\r\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\r\n }\r\n return this;\r\n }\r\n\r\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\r\n var _p = this.props;\r\n\r\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\r\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\r\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\r\n _p[12] = _p[12] * a2 + _p[15] * m2;\r\n _p[13] = _p[13] * f2 + _p[15] * n2;\r\n _p[14] = _p[14] * k2 + _p[15] * o2;\r\n _p[15] *= p2;\r\n // }\r\n this._identityCalculated = false;\r\n return this;\r\n }\r\n\r\n var a1 = _p[0];\r\n var b1 = _p[1];\r\n var c1 = _p[2];\r\n var d1 = _p[3];\r\n var e1 = _p[4];\r\n var f1 = _p[5];\r\n var g1 = _p[6];\r\n var h1 = _p[7];\r\n var i1 = _p[8];\r\n var j1 = _p[9];\r\n var k1 = _p[10];\r\n var l1 = _p[11];\r\n var m1 = _p[12];\r\n var n1 = _p[13];\r\n var o1 = _p[14];\r\n var p1 = _p[15];\r\n\r\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\r\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\r\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\r\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\r\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\r\n\r\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\r\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\r\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\r\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\r\n\r\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\r\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\r\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\r\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\r\n\r\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\r\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\r\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\r\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\r\n\r\n this._identityCalculated = false;\r\n return this;\r\n }\r\n\r\n function isIdentity() {\r\n if (!this._identityCalculated) {\r\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\r\n this._identityCalculated = true;\r\n }\r\n return this._identity;\r\n }\r\n\r\n function equals(matr) {\r\n var i = 0;\r\n while (i < 16) {\r\n if (matr.props[i] !== this.props[i]) {\r\n return false;\r\n }\r\n i += 1;\r\n }\r\n return true;\r\n }\r\n\r\n function clone(matr) {\r\n var i;\r\n for (i = 0; i < 16; i += 1) {\r\n matr.props[i] = this.props[i];\r\n }\r\n return matr;\r\n }\r\n\r\n function cloneFromProps(props) {\r\n var i;\r\n for (i = 0; i < 16; i += 1) {\r\n this.props[i] = props[i];\r\n }\r\n }\r\n\r\n function applyToPoint(x, y, z) {\r\n return {\r\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\r\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\r\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14],\r\n };\r\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\r\n }\r\n function applyToX(x, y, z) {\r\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\r\n }\r\n function applyToY(x, y, z) {\r\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\r\n }\r\n function applyToZ(x, y, z) {\r\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\r\n }\r\n\r\n function getInverseMatrix() {\r\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\r\n var a = this.props[5] / determinant;\r\n var b = -this.props[1] / determinant;\r\n var c = -this.props[4] / determinant;\r\n var d = this.props[0] / determinant;\r\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\r\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\r\n var inverseMatrix = new Matrix();\r\n inverseMatrix.props[0] = a;\r\n inverseMatrix.props[1] = b;\r\n inverseMatrix.props[4] = c;\r\n inverseMatrix.props[5] = d;\r\n inverseMatrix.props[12] = e;\r\n inverseMatrix.props[13] = f;\r\n return inverseMatrix;\r\n }\r\n\r\n function inversePoint(pt) {\r\n var inverseMatrix = this.getInverseMatrix();\r\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\r\n }\r\n\r\n function inversePoints(pts) {\r\n var i;\r\n var len = pts.length;\r\n var retPts = [];\r\n for (i = 0; i < len; i += 1) {\r\n retPts[i] = inversePoint(pts[i]);\r\n }\r\n return retPts;\r\n }\r\n\r\n function applyToTriplePoints(pt1, pt2, pt3) {\r\n var arr = createTypedArray('float32', 6);\r\n if (this.isIdentity()) {\r\n arr[0] = pt1[0];\r\n arr[1] = pt1[1];\r\n arr[2] = pt2[0];\r\n arr[3] = pt2[1];\r\n arr[4] = pt3[0];\r\n arr[5] = pt3[1];\r\n } else {\r\n var p0 = this.props[0];\r\n var p1 = this.props[1];\r\n var p4 = this.props[4];\r\n var p5 = this.props[5];\r\n var p12 = this.props[12];\r\n var p13 = this.props[13];\r\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\r\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\r\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\r\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\r\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\r\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\r\n }\r\n return arr;\r\n }\r\n\r\n function applyToPointArray(x, y, z) {\r\n var arr;\r\n if (this.isIdentity()) {\r\n arr = [x, y, z];\r\n } else {\r\n arr = [\r\n x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\r\n x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\r\n x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14],\r\n ];\r\n }\r\n return arr;\r\n }\r\n\r\n function applyToPointStringified(x, y) {\r\n if (this.isIdentity()) {\r\n return x + ',' + y;\r\n }\r\n var _p = this.props;\r\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\r\n }\r\n\r\n function toCSS() {\r\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\r\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\r\n var i = 0;\r\n var props = this.props;\r\n var cssValue = 'matrix3d(';\r\n var v = 10000;\r\n while (i < 16) {\r\n cssValue += _rnd(props[i] * v) / v;\r\n cssValue += i === 15 ? ')' : ',';\r\n i += 1;\r\n }\r\n return cssValue;\r\n }\r\n\r\n function roundMatrixProperty(val) {\r\n var v = 10000;\r\n if ((val < 0.000001 && val > 0) || (val > -0.000001 && val < 0)) {\r\n return _rnd(val * v) / v;\r\n }\r\n return val;\r\n }\r\n\r\n function to2dCSS() {\r\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\r\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\r\n var props = this.props;\r\n var _a = roundMatrixProperty(props[0]);\r\n var _b = roundMatrixProperty(props[1]);\r\n var _c = roundMatrixProperty(props[4]);\r\n var _d = roundMatrixProperty(props[5]);\r\n var _e = roundMatrixProperty(props[12]);\r\n var _f = roundMatrixProperty(props[13]);\r\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\r\n }\r\n\r\n return function () {\r\n this.reset = reset;\r\n this.rotate = rotate;\r\n this.rotateX = rotateX;\r\n this.rotateY = rotateY;\r\n this.rotateZ = rotateZ;\r\n this.skew = skew;\r\n this.skewFromAxis = skewFromAxis;\r\n this.shear = shear;\r\n this.scale = scale;\r\n this.setTransform = setTransform;\r\n this.translate = translate;\r\n this.transform = transform;\r\n this.applyToPoint = applyToPoint;\r\n this.applyToX = applyToX;\r\n this.applyToY = applyToY;\r\n this.applyToZ = applyToZ;\r\n this.applyToPointArray = applyToPointArray;\r\n this.applyToTriplePoints = applyToTriplePoints;\r\n this.applyToPointStringified = applyToPointStringified;\r\n this.toCSS = toCSS;\r\n this.to2dCSS = to2dCSS;\r\n this.clone = clone;\r\n this.cloneFromProps = cloneFromProps;\r\n this.equals = equals;\r\n this.inversePoints = inversePoints;\r\n this.inversePoint = inversePoint;\r\n this.getInverseMatrix = getInverseMatrix;\r\n this._t = this.transform;\r\n this.isIdentity = isIdentity;\r\n this._identity = true;\r\n this._identityCalculated = false;\r\n\r\n this.props = createTypedArray('float32', 16);\r\n this.reset();\r\n };\r\n}());\r\n\r\n/* eslint-disable */\r\n/*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\r\n\r\n(function (pool, math) {\r\n//\r\n// The following constants are related to IEEE 754 limits.\r\n//\r\n var global = this,\r\n width = 256, // each RC4 output is 0 <= x < 256\r\n chunks = 6, // at least six RC4 outputs for each double\r\n digits = 52, // there are 52 significant digits in a double\r\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\r\n startdenom = math.pow(width, chunks),\r\n significance = math.pow(2, digits),\r\n overflow = significance * 2,\r\n mask = width - 1,\r\n nodecrypto; // node.js crypto module, initialized at the bottom.\r\n\r\n//\r\n// seedrandom()\r\n// This is the seedrandom function described above.\r\n//\r\n function seedrandom(seed, options, callback) {\r\n var key = [];\r\n options = (options === true) ? { entropy: true } : (options || {});\r\n\r\n // Flatten the seed string or build one from local entropy if needed.\r\n var shortseed = mixkey(flatten(\r\n options.entropy ? [seed, tostring(pool)] :\r\n (seed === null) ? autoseed() : seed, 3), key);\r\n\r\n // Use the seed to initialize an ARC4 generator.\r\n var arc4 = new ARC4(key);\r\n\r\n // This function returns a random double in [0, 1) that contains\r\n // randomness in every bit of the mantissa of the IEEE 754 value.\r\n var prng = function() {\r\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\r\n d = startdenom, // and denominator d = 2 ^ 48.\r\n x = 0; // and no 'extra last byte'.\r\n while (n < significance) { // Fill up all significant digits by\r\n n = (n + x) * width; // shifting numerator and\r\n d *= width; // denominator and generating a\r\n x = arc4.g(1); // new least-significant-byte.\r\n }\r\n while (n >= overflow) { // To avoid rounding up, before adding\r\n n /= 2; // last byte, shift everything\r\n d /= 2; // right using integer math until\r\n x >>>= 1; // we have exactly the desired bits.\r\n }\r\n return (n + x) / d; // Form the number within [0, 1).\r\n };\r\n\r\n prng.int32 = function() { return arc4.g(4) | 0; };\r\n prng.quick = function() { return arc4.g(4) / 0x100000000; };\r\n prng.double = prng;\r\n\r\n // Mix the randomness into accumulated entropy.\r\n mixkey(tostring(arc4.S), pool);\r\n\r\n // Calling convention: what to return as a function of prng, seed, is_math.\r\n return (options.pass || callback ||\r\n function(prng, seed, is_math_call, state) {\r\n if (state) {\r\n // Load the arc4 state from the given state if it has an S array.\r\n if (state.S) { copy(state, arc4); }\r\n // Only provide the .state method if requested via options.state.\r\n prng.state = function() { return copy(arc4, {}); };\r\n }\r\n\r\n // If called as a method of Math (Math.seedrandom()), mutate\r\n // Math.random because that is how seedrandom.js has worked since v1.0.\r\n if (is_math_call) { math[rngname] = prng; return seed; }\r\n\r\n // Otherwise, it is a newer calling convention, so return the\r\n // prng directly.\r\n else return prng;\r\n })(\r\n prng,\r\n shortseed,\r\n 'global' in options ? options.global : (this == math),\r\n options.state);\r\n }\r\n math['seed' + rngname] = seedrandom;\r\n\r\n//\r\n// ARC4\r\n//\r\n// An ARC4 implementation. The constructor takes a key in the form of\r\n// an array of at most (width) integers that should be 0 <= x < (width).\r\n//\r\n// The g(count) method returns a pseudorandom integer that concatenates\r\n// the next (count) outputs from ARC4. Its return value is a number x\r\n// that is in the range 0 <= x < (width ^ count).\r\n//\r\n function ARC4(key) {\r\n var t, keylen = key.length,\r\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\r\n\r\n // The empty key [] is treated as [0].\r\n if (!keylen) { key = [keylen++]; }\r\n\r\n // Set up S using the standard key scheduling algorithm.\r\n while (i < width) {\r\n s[i] = i++;\r\n }\r\n for (i = 0; i < width; i++) {\r\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\r\n s[j] = t;\r\n }\r\n\r\n // The \"g\" method returns the next (count) outputs as one number.\r\n me.g = function(count) {\r\n // Using instance members instead of closure state nearly doubles speed.\r\n var t, r = 0,\r\n i = me.i, j = me.j, s = me.S;\r\n while (count--) {\r\n t = s[i = mask & (i + 1)];\r\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\r\n }\r\n me.i = i; me.j = j;\r\n return r;\r\n // For robust unpredictability, the function call below automatically\r\n // discards an initial batch of values. This is called RC4-drop[256].\r\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\r\n };\r\n }\r\n\r\n//\r\n// copy()\r\n// Copies internal state of ARC4 to or from a plain object.\r\n//\r\n function copy(f, t) {\r\n t.i = f.i;\r\n t.j = f.j;\r\n t.S = f.S.slice();\r\n return t;\r\n }\r\n\r\n//\r\n// flatten()\r\n// Converts an object tree to nested arrays of strings.\r\n//\r\n function flatten(obj, depth) {\r\n var result = [], typ = (typeof obj), prop;\r\n if (depth && typ == 'object') {\r\n for (prop in obj) {\r\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\r\n }\r\n }\r\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\r\n }\r\n\r\n//\r\n// mixkey()\r\n// Mixes a string seed into a key that is an array of integers, and\r\n// returns a shortened string seed that is equivalent to the result key.\r\n//\r\n function mixkey(seed, key) {\r\n var stringseed = seed + '', smear, j = 0;\r\n while (j < stringseed.length) {\r\n key[mask & j] =\r\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\r\n }\r\n return tostring(key);\r\n }\r\n\r\n//\r\n// autoseed()\r\n// Returns an object for autoseeding, using window.crypto and Node crypto\r\n// module if available.\r\n//\r\n function autoseed() {\r\n try {\r\n if (nodecrypto) { return tostring(nodecrypto.randomBytes(width)); }\r\n var out = new Uint8Array(width);\r\n (global.crypto || global.msCrypto).getRandomValues(out);\r\n return tostring(out);\r\n } catch (e) {\r\n var browser = global.navigator,\r\n plugins = browser && browser.plugins;\r\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\r\n }\r\n }\r\n\r\n//\r\n// tostring()\r\n// Converts an array of charcodes to a string\r\n//\r\n function tostring(a) {\r\n return String.fromCharCode.apply(0, a);\r\n }\r\n\r\n//\r\n// When seedrandom.js is loaded, we immediately mix a few bits\r\n// from the built-in RNG into the entropy pool. Because we do\r\n// not want to interfere with deterministic PRNG state later,\r\n// seedrandom will not call math.random on its own again after\r\n// initialization.\r\n//\r\n mixkey(math.random(), pool);\r\n\r\n//\r\n// Nodejs and AMD support: export the implementation as a module using\r\n// either convention.\r\n//\r\n\r\n// End anonymous scope, and pass initial values.\r\n})(\r\n [], // pool: entropy pool starts empty\r\n BMMath // math: package containing random, pow, and seedrandom\r\n);\r\n/* eslint-disable */\r\nvar BezierFactory = (function () {\r\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\r\n\r\n var ob = {};\r\n ob.getBezierEasing = getBezierEasing;\r\n var beziers = {};\r\n\r\n function getBezierEasing(a, b, c, d, nm) {\r\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\r\n if (beziers[str]) {\r\n return beziers[str];\r\n }\r\n var bezEasing = new BezierEasing([a, b, c, d]);\r\n beziers[str] = bezEasing;\r\n return bezEasing;\r\n }\r\n\r\n // These values are established by empiricism with tests (tradeoff: performance VS precision)\r\n var NEWTON_ITERATIONS = 4;\r\n var NEWTON_MIN_SLOPE = 0.001;\r\n var SUBDIVISION_PRECISION = 0.0000001;\r\n var SUBDIVISION_MAX_ITERATIONS = 10;\r\n\r\n var kSplineTableSize = 11;\r\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\r\n\r\n var float32ArraySupported = typeof Float32Array === 'function';\r\n\r\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\r\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\r\n function C(aA1) { return 3.0 * aA1; }\r\n\r\n // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\r\n function calcBezier(aT, aA1, aA2) {\r\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\r\n }\r\n\r\n // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\r\n function getSlope(aT, aA1, aA2) {\r\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\r\n }\r\n\r\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\r\n var currentX,\r\n currentT,\r\n i = 0;\r\n do {\r\n currentT = aA + (aB - aA) / 2.0;\r\n currentX = calcBezier(currentT, mX1, mX2) - aX;\r\n if (currentX > 0.0) {\r\n aB = currentT;\r\n } else {\r\n aA = currentT;\r\n }\r\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\r\n return currentT;\r\n }\r\n\r\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\r\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\r\n var currentSlope = getSlope(aGuessT, mX1, mX2);\r\n if (currentSlope === 0.0) return aGuessT;\r\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\r\n aGuessT -= currentX / currentSlope;\r\n }\r\n return aGuessT;\r\n }\r\n\r\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\r\n function BezierEasing(points) {\r\n this._p = points;\r\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\r\n this._precomputed = false;\r\n\r\n this.get = this.get.bind(this);\r\n }\r\n\r\n BezierEasing.prototype = {\r\n\r\n get: function (x) {\r\n var mX1 = this._p[0],\r\n mY1 = this._p[1],\r\n mX2 = this._p[2],\r\n mY2 = this._p[3];\r\n if (!this._precomputed) this._precompute();\r\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\r\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\r\n if (x === 0) return 0;\r\n if (x === 1) return 1;\r\n return calcBezier(this._getTForX(x), mY1, mY2);\r\n },\r\n\r\n // Private part\r\n\r\n _precompute: function () {\r\n var mX1 = this._p[0],\r\n mY1 = this._p[1],\r\n mX2 = this._p[2],\r\n mY2 = this._p[3];\r\n this._precomputed = true;\r\n if (mX1 !== mY1 || mX2 !== mY2) { this._calcSampleValues(); }\r\n },\r\n\r\n _calcSampleValues: function () {\r\n var mX1 = this._p[0],\r\n mX2 = this._p[2];\r\n for (var i = 0; i < kSplineTableSize; ++i) {\r\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\r\n }\r\n },\r\n\r\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\r\n _getTForX: function (aX) {\r\n var mX1 = this._p[0],\r\n mX2 = this._p[2],\r\n mSampleValues = this._mSampleValues;\r\n\r\n var intervalStart = 0.0;\r\n var currentSample = 1;\r\n var lastSample = kSplineTableSize - 1;\r\n\r\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\r\n intervalStart += kSampleStepSize;\r\n }\r\n --currentSample;\r\n\r\n // Interpolate to provide an initial guess for t\r\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\r\n var guessForT = intervalStart + dist * kSampleStepSize;\r\n\r\n var initialSlope = getSlope(guessForT, mX1, mX2);\r\n if (initialSlope >= NEWTON_MIN_SLOPE) {\r\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\r\n } if (initialSlope === 0.0) {\r\n return guessForT;\r\n }\r\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\r\n },\r\n };\r\n\r\n return ob;\r\n}());\r\n\r\n(function () {\r\n var lastTime = 0;\r\n var vendors = ['ms', 'moz', 'webkit', 'o'];\r\n for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { // eslint-disable-line no-plusplus\r\n window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\r\n window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];\r\n }\r\n if (!window.requestAnimationFrame) {\r\n window.requestAnimationFrame = function (callback) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = setTimeout(function () {\r\n callback(currTime + timeToCall);\r\n },\r\n timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n }\r\n if (!window.cancelAnimationFrame) {\r\n window.cancelAnimationFrame = function (id) {\r\n clearTimeout(id);\r\n };\r\n }\r\n}());\r\n\r\n/* exported extendPrototype, getDescriptor, createProxyFunction */\r\n\r\nfunction extendPrototype(sources, destination) {\r\n var i;\r\n var len = sources.length;\r\n var sourcePrototype;\r\n for (i = 0; i < len; i += 1) {\r\n sourcePrototype = sources[i].prototype;\r\n for (var attr in sourcePrototype) {\r\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\r\n }\r\n }\r\n}\r\n\r\nfunction getDescriptor(object, prop) {\r\n return Object.getOwnPropertyDescriptor(object, prop);\r\n}\r\n\r\nfunction createProxyFunction(prototype) {\r\n function ProxyFunction() {}\r\n ProxyFunction.prototype = prototype;\r\n return ProxyFunction;\r\n}\r\n\r\n/* global segmentsLengthPool, defaultCurveSegments, createSizedArray, bmPow, bmSqrt, bmFloor, createTypedArray, bezierLengthPool */\r\n/* exported bez */\r\n\r\nfunction bezFunction() {\r\n var math = Math;\r\n\r\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\r\n var det1 = (x1 * y2) + (y1 * x3) + (x2 * y3) - (x3 * y2) - (y3 * x1) - (x2 * y1);\r\n return det1 > -0.001 && det1 < 0.001;\r\n }\r\n\r\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\r\n if (z1 === 0 && z2 === 0 && z3 === 0) {\r\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\r\n }\r\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\r\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\r\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\r\n var diffDist;\r\n if (dist1 > dist2) {\r\n if (dist1 > dist3) {\r\n diffDist = dist1 - dist2 - dist3;\r\n } else {\r\n diffDist = dist3 - dist2 - dist1;\r\n }\r\n } else if (dist3 > dist2) {\r\n diffDist = dist3 - dist2 - dist1;\r\n } else {\r\n diffDist = dist2 - dist1 - dist3;\r\n }\r\n return diffDist > -0.0001 && diffDist < 0.0001;\r\n }\r\n\r\n var getBezierLength = (function () {\r\n return function (pt1, pt2, pt3, pt4) {\r\n var curveSegments = defaultCurveSegments;\r\n var k;\r\n var i;\r\n var len;\r\n var ptCoord;\r\n var perc;\r\n var addedLength = 0;\r\n var ptDistance;\r\n var point = [];\r\n var lastPoint = [];\r\n var lengthData = bezierLengthPool.newElement();\r\n len = pt3.length;\r\n for (k = 0; k < curveSegments; k += 1) {\r\n perc = k / (curveSegments - 1);\r\n ptDistance = 0;\r\n for (i = 0; i < len; i += 1) {\r\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\r\n point[i] = ptCoord;\r\n if (lastPoint[i] !== null) {\r\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\r\n }\r\n lastPoint[i] = point[i];\r\n }\r\n if (ptDistance) {\r\n ptDistance = bmSqrt(ptDistance);\r\n addedLength += ptDistance;\r\n }\r\n lengthData.percents[k] = perc;\r\n lengthData.lengths[k] = addedLength;\r\n }\r\n lengthData.addedLength = addedLength;\r\n return lengthData;\r\n };\r\n }());\r\n\r\n function getSegmentsLength(shapeData) {\r\n var segmentsLength = segmentsLengthPool.newElement();\r\n var closed = shapeData.c;\r\n var pathV = shapeData.v;\r\n var pathO = shapeData.o;\r\n var pathI = shapeData.i;\r\n var i;\r\n var len = shapeData._length;\r\n var lengths = segmentsLength.lengths;\r\n var totalLength = 0;\r\n for (i = 0; i < len - 1; i += 1) {\r\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\r\n totalLength += lengths[i].addedLength;\r\n }\r\n if (closed && len) {\r\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\r\n totalLength += lengths[i].addedLength;\r\n }\r\n segmentsLength.totalLength = totalLength;\r\n return segmentsLength;\r\n }\r\n\r\n function BezierData(length) {\r\n this.segmentLength = 0;\r\n this.points = new Array(length);\r\n }\r\n\r\n function PointData(partial, point) {\r\n this.partialLength = partial;\r\n this.point = point;\r\n }\r\n\r\n var buildBezierData = (function () {\r\n var storedData = {};\r\n\r\n return function (pt1, pt2, pt3, pt4) {\r\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\r\n if (!storedData[bezierName]) {\r\n var curveSegments = defaultCurveSegments;\r\n var k;\r\n var i;\r\n var len;\r\n var ptCoord;\r\n var perc;\r\n var addedLength = 0;\r\n var ptDistance;\r\n var point;\r\n var lastPoint = null;\r\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\r\n curveSegments = 2;\r\n }\r\n var bezierData = new BezierData(curveSegments);\r\n len = pt3.length;\r\n for (k = 0; k < curveSegments; k += 1) {\r\n point = createSizedArray(len);\r\n perc = k / (curveSegments - 1);\r\n ptDistance = 0;\r\n for (i = 0; i < len; i += 1) {\r\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\r\n point[i] = ptCoord;\r\n if (lastPoint !== null) {\r\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\r\n }\r\n }\r\n ptDistance = bmSqrt(ptDistance);\r\n addedLength += ptDistance;\r\n bezierData.points[k] = new PointData(ptDistance, point);\r\n lastPoint = point;\r\n }\r\n bezierData.segmentLength = addedLength;\r\n storedData[bezierName] = bezierData;\r\n }\r\n return storedData[bezierName];\r\n };\r\n }());\r\n\r\n function getDistancePerc(perc, bezierData) {\r\n var percents = bezierData.percents;\r\n var lengths = bezierData.lengths;\r\n var len = percents.length;\r\n var initPos = bmFloor((len - 1) * perc);\r\n var lengthPos = perc * bezierData.addedLength;\r\n var lPerc = 0;\r\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\r\n return percents[initPos];\r\n }\r\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\r\n var flag = true;\r\n while (flag) {\r\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\r\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\r\n flag = false;\r\n } else {\r\n initPos += dir;\r\n }\r\n if (initPos < 0 || initPos >= len - 1) {\r\n // FIX for TypedArrays that don't store floating point values with enough accuracy\r\n if (initPos === len - 1) {\r\n return percents[initPos];\r\n }\r\n flag = false;\r\n }\r\n }\r\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\r\n }\r\n\r\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\r\n var t1 = getDistancePerc(percent, bezierData);\r\n var u1 = 1 - t1;\r\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\r\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\r\n return [ptX, ptY];\r\n }\r\n\r\n var bezierSegmentPoints = createTypedArray('float32', 8);\r\n\r\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\r\n if (startPerc < 0) {\r\n startPerc = 0;\r\n } else if (startPerc > 1) {\r\n startPerc = 1;\r\n }\r\n var t0 = getDistancePerc(startPerc, bezierData);\r\n endPerc = endPerc > 1 ? 1 : endPerc;\r\n var t1 = getDistancePerc(endPerc, bezierData);\r\n var i;\r\n var len = pt1.length;\r\n var u0 = 1 - t0;\r\n var u1 = 1 - t1;\r\n var u0u0u0 = u0 * u0 * u0;\r\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\r\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\r\n var t0t0t0 = t0 * t0 * t0;\r\n //\r\n var u0u0u1 = u0 * u0 * u1;\r\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\r\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\r\n var t0t0t1 = t0 * t0 * t1;\r\n //\r\n var u0u1u1 = u0 * u1 * u1;\r\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\r\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\r\n var t0t1t1 = t0 * t1 * t1;\r\n //\r\n var u1u1u1 = u1 * u1 * u1;\r\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\r\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\r\n var t1t1t1 = t1 * t1 * t1;\r\n for (i = 0; i < len; i += 1) {\r\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n }\r\n\r\n return bezierSegmentPoints;\r\n }\r\n\r\n return {\r\n getSegmentsLength: getSegmentsLength,\r\n getNewSegment: getNewSegment,\r\n getPointInSegment: getPointInSegment,\r\n buildBezierData: buildBezierData,\r\n pointOnLine2D: pointOnLine2D,\r\n pointOnLine3D: pointOnLine3D,\r\n };\r\n}\r\n\r\nvar bez = bezFunction();\r\n\r\n/* global _useWebWorker */\r\n\r\nvar dataManager = (function () {\r\n var _counterId = 1;\r\n var processes = [];\r\n var workerFn;\r\n var workerInstance;\r\n var workerProxy = {\r\n onmessage: function () {\r\n\r\n },\r\n postMessage: function (path) {\r\n workerFn({\r\n data: path,\r\n });\r\n },\r\n };\r\n var _workerSelf = {\r\n postMessage: function (data) {\r\n workerProxy.onmessage({\r\n data: data,\r\n });\r\n },\r\n };\r\n function createWorker(fn) {\r\n if (window.Worker && window.Blob && _useWebWorker) {\r\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], { type: 'text/javascript' });\r\n // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\r\n var url = URL.createObjectURL(blob);\r\n return new Worker(url);\r\n }\r\n workerFn = fn;\r\n return workerProxy;\r\n }\r\n\r\n function setupWorker() {\r\n if (!workerInstance) {\r\n workerInstance = createWorker(function workerStart(e) {\r\n /* exported dataManager */\r\n\r\n function dataFunctionManager() {\r\n // var tCanvasHelper = createTag('canvas').getContext('2d');\r\n\r\n function completeLayers(layers, comps) {\r\n var layerData;\r\n var i;\r\n var len = layers.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n for (i = 0; i < len; i += 1) {\r\n layerData = layers[i];\r\n if (('ks' in layerData) && !layerData.completed) {\r\n layerData.completed = true;\r\n if (layerData.tt) {\r\n layers[i - 1].td = layerData.tt;\r\n }\r\n if (layerData.hasMask) {\r\n var maskProps = layerData.masksProperties;\r\n jLen = maskProps.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (maskProps[j].pt.k.i) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\r\n } else {\r\n kLen = maskProps[j].pt.k.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n if (maskProps[j].pt.k[k].s) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\r\n }\r\n if (maskProps[j].pt.k[k].e) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (layerData.ty === 0) {\r\n layerData.layers = findCompLayers(layerData.refId, comps);\r\n completeLayers(layerData.layers, comps);\r\n } else if (layerData.ty === 4) {\r\n completeShapes(layerData.shapes);\r\n } else if (layerData.ty === 5) {\r\n completeText(layerData);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function findCompLayers(id, comps) {\r\n var i = 0;\r\n var len = comps.length;\r\n while (i < len) {\r\n if (comps[i].id === id) {\r\n if (!comps[i].layers.__used) {\r\n comps[i].layers.__used = true;\r\n return comps[i].layers;\r\n }\r\n return JSON.parse(JSON.stringify(comps[i].layers));\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n\r\n function completeShapes(arr) {\r\n var i;\r\n var len = arr.length;\r\n var j;\r\n var jLen;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (arr[i].ty === 'sh') {\r\n if (arr[i].ks.k.i) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k);\r\n } else {\r\n jLen = arr[i].ks.k.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (arr[i].ks.k[j].s) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\r\n }\r\n if (arr[i].ks.k[j].e) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\r\n }\r\n }\r\n }\r\n } else if (arr[i].ty === 'gr') {\r\n completeShapes(arr[i].it);\r\n }\r\n }\r\n }\r\n\r\n function convertPathsToAbsoluteValues(path) {\r\n var i;\r\n var len = path.i.length;\r\n for (i = 0; i < len; i += 1) {\r\n path.i[i][0] += path.v[i][0];\r\n path.i[i][1] += path.v[i][1];\r\n path.o[i][0] += path.v[i][0];\r\n path.o[i][1] += path.v[i][1];\r\n }\r\n }\r\n\r\n function checkVersion(minimum, animVersionString) {\r\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\r\n if (minimum[0] > animVersion[0]) {\r\n return true;\r\n } if (animVersion[0] > minimum[0]) {\r\n return false;\r\n }\r\n if (minimum[1] > animVersion[1]) {\r\n return true;\r\n } if (animVersion[1] > minimum[1]) {\r\n return false;\r\n }\r\n if (minimum[2] > animVersion[2]) {\r\n return true;\r\n } if (animVersion[2] > minimum[2]) {\r\n return false;\r\n }\r\n return null;\r\n }\r\n\r\n var checkText = (function () {\r\n var minimumVersion = [4, 4, 14];\r\n\r\n function updateTextLayer(textLayer) {\r\n var documentData = textLayer.t.d;\r\n textLayer.t.d = {\r\n k: [\r\n {\r\n s: documentData,\r\n t: 0,\r\n },\r\n ],\r\n };\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var i;\r\n var len = layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (layers[i].ty === 5) {\r\n updateTextLayer(layers[i]);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkChars = (function () {\r\n var minimumVersion = [4, 7, 99];\r\n return function (animationData) {\r\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\r\n var i;\r\n var len = animationData.chars.length;\r\n var j;\r\n var jLen;\r\n var pathData;\r\n var paths;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.chars[i].data && animationData.chars[i].data.shapes) {\r\n paths = animationData.chars[i].data.shapes[0].it;\r\n jLen = paths.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n pathData = paths[j].ks.k;\r\n if (!pathData.__converted) {\r\n convertPathsToAbsoluteValues(paths[j].ks.k);\r\n pathData.__converted = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkPathProperties = (function () {\r\n var minimumVersion = [5, 7, 15];\r\n\r\n function updateTextLayer(textLayer) {\r\n var pathData = textLayer.t.p;\r\n if (typeof pathData.a === 'number') {\r\n pathData.a = {\r\n a: 0,\r\n k: pathData.a,\r\n };\r\n }\r\n if (typeof pathData.p === 'number') {\r\n pathData.p = {\r\n a: 0,\r\n k: pathData.p,\r\n };\r\n }\r\n if (typeof pathData.r === 'number') {\r\n pathData.r = {\r\n a: 0,\r\n k: pathData.r,\r\n };\r\n }\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var i;\r\n var len = layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (layers[i].ty === 5) {\r\n updateTextLayer(layers[i]);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkColors = (function () {\r\n var minimumVersion = [4, 1, 9];\r\n\r\n function iterateShapes(shapes) {\r\n var i;\r\n var len = shapes.length;\r\n var j;\r\n var jLen;\r\n for (i = 0; i < len; i += 1) {\r\n if (shapes[i].ty === 'gr') {\r\n iterateShapes(shapes[i].it);\r\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\r\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\r\n jLen = shapes[i].c.k.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (shapes[i].c.k[j].s) {\r\n shapes[i].c.k[j].s[0] /= 255;\r\n shapes[i].c.k[j].s[1] /= 255;\r\n shapes[i].c.k[j].s[2] /= 255;\r\n shapes[i].c.k[j].s[3] /= 255;\r\n }\r\n if (shapes[i].c.k[j].e) {\r\n shapes[i].c.k[j].e[0] /= 255;\r\n shapes[i].c.k[j].e[1] /= 255;\r\n shapes[i].c.k[j].e[2] /= 255;\r\n shapes[i].c.k[j].e[3] /= 255;\r\n }\r\n }\r\n } else {\r\n shapes[i].c.k[0] /= 255;\r\n shapes[i].c.k[1] /= 255;\r\n shapes[i].c.k[2] /= 255;\r\n shapes[i].c.k[3] /= 255;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var i;\r\n var len = layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (layers[i].ty === 4) {\r\n iterateShapes(layers[i].shapes);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkShapes = (function () {\r\n var minimumVersion = [4, 4, 18];\r\n\r\n function completeClosingShapes(arr) {\r\n var i;\r\n var len = arr.length;\r\n var j;\r\n var jLen;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (arr[i].ty === 'sh') {\r\n if (arr[i].ks.k.i) {\r\n arr[i].ks.k.c = arr[i].closed;\r\n } else {\r\n jLen = arr[i].ks.k.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (arr[i].ks.k[j].s) {\r\n arr[i].ks.k[j].s[0].c = arr[i].closed;\r\n }\r\n if (arr[i].ks.k[j].e) {\r\n arr[i].ks.k[j].e[0].c = arr[i].closed;\r\n }\r\n }\r\n }\r\n } else if (arr[i].ty === 'gr') {\r\n completeClosingShapes(arr[i].it);\r\n }\r\n }\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var layerData;\r\n var i;\r\n var len = layers.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n for (i = 0; i < len; i += 1) {\r\n layerData = layers[i];\r\n if (layerData.hasMask) {\r\n var maskProps = layerData.masksProperties;\r\n jLen = maskProps.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (maskProps[j].pt.k.i) {\r\n maskProps[j].pt.k.c = maskProps[j].cl;\r\n } else {\r\n kLen = maskProps[j].pt.k.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n if (maskProps[j].pt.k[k].s) {\r\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\r\n }\r\n if (maskProps[j].pt.k[k].e) {\r\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (layerData.ty === 4) {\r\n completeClosingShapes(layerData.shapes);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n function completeData(animationData) {\r\n if (animationData.__complete) {\r\n return;\r\n }\r\n checkColors(animationData);\r\n checkText(animationData);\r\n checkChars(animationData);\r\n checkPathProperties(animationData);\r\n checkShapes(animationData);\r\n completeLayers(animationData.layers, animationData.assets);\r\n animationData.__complete = true;\r\n }\r\n\r\n function completeText(data) {\r\n if (data.t.a.length === 0 && !('m' in data.t.p)) {\r\n data.singleShape = true;\r\n }\r\n }\r\n\r\n var moduleOb = {};\r\n moduleOb.completeData = completeData;\r\n moduleOb.checkColors = checkColors;\r\n moduleOb.checkChars = checkChars;\r\n moduleOb.checkPathProperties = checkPathProperties;\r\n moduleOb.checkShapes = checkShapes;\r\n moduleOb.completeLayers = completeLayers;\r\n\r\n return moduleOb;\r\n }\r\n if (!_workerSelf.dataManager) {\r\n _workerSelf.dataManager = dataFunctionManager();\r\n }\r\n\r\n /* exported assetLoader */\r\n if (!_workerSelf.assetLoader) {\r\n _workerSelf.assetLoader = (function () {\r\n function formatResponse(xhr) {\r\n // using typeof doubles the time of execution of this method,\r\n // so if available, it's better to use the header to validate the type\r\n var contentTypeHeader = xhr.getResponseHeader('content-type');\r\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\r\n return xhr.response;\r\n }\r\n if (xhr.response && typeof xhr.response === 'object') {\r\n return xhr.response;\r\n } if (xhr.response && typeof xhr.response === 'string') {\r\n return JSON.parse(xhr.response);\r\n } if (xhr.responseText) {\r\n return JSON.parse(xhr.responseText);\r\n }\r\n return null;\r\n }\r\n\r\n function loadAsset(path, fullPath, callback, errorCallback) {\r\n var response;\r\n var xhr = new XMLHttpRequest();\r\n // set responseType after calling open or IE will break.\r\n try {\r\n // This crashes on Android WebView prior to KitKat\r\n xhr.responseType = 'json';\r\n } catch (err) {} // eslint-disable-line no-empty\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status === 200) {\r\n response = formatResponse(xhr);\r\n callback(response);\r\n } else {\r\n try {\r\n response = formatResponse(xhr);\r\n callback(response);\r\n } catch (err) {\r\n if (errorCallback) {\r\n errorCallback(err);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n try {\r\n xhr.open('GET', path, true);\r\n } catch (error) {\r\n xhr.open('GET', fullPath + '/' + path, true);\r\n }\r\n xhr.send();\r\n }\r\n return {\r\n load: loadAsset,\r\n };\r\n }());\r\n }\r\n\r\n if (e.data.type === 'loadAnimation') {\r\n _workerSelf.assetLoader.load(\r\n e.data.path,\r\n e.data.fullPath,\r\n function (data) {\r\n _workerSelf.dataManager.completeData(data);\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n payload: data,\r\n status: 'success',\r\n });\r\n },\r\n function () {\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n status: 'error',\r\n });\r\n }\r\n );\r\n } else if (e.data.type === 'complete') {\r\n var animation = e.data.animation;\r\n _workerSelf.dataManager.completeData(animation);\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n payload: animation,\r\n status: 'success',\r\n });\r\n } else if (e.data.type === 'loadData') {\r\n _workerSelf.assetLoader.load(\r\n e.data.path,\r\n e.data.fullPath,\r\n function (data) {\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n payload: data,\r\n status: 'success',\r\n });\r\n },\r\n function () {\r\n _workerSelf.postMessage({\r\n id: e.data.id,\r\n status: 'error',\r\n });\r\n }\r\n );\r\n }\r\n });\r\n\r\n workerInstance.onmessage = function (event) {\r\n var data = event.data;\r\n var id = data.id;\r\n var process = processes[id];\r\n processes[id] = null;\r\n if (data.status === 'success') {\r\n process.onComplete(data.payload);\r\n } else if (process.onError) {\r\n process.onError();\r\n }\r\n };\r\n }\r\n }\r\n\r\n function createProcess(onComplete, onError) {\r\n _counterId += 1;\r\n var id = 'processId_' + _counterId;\r\n processes[id] = {\r\n onComplete: onComplete,\r\n onError: onError,\r\n };\r\n return id;\r\n }\r\n\r\n function loadAnimation(path, onComplete, onError) {\r\n setupWorker();\r\n var processId = createProcess(onComplete, onError);\r\n workerInstance.postMessage({\r\n type: 'loadAnimation',\r\n path: path,\r\n fullPath: window.location.origin + window.location.pathname,\r\n id: processId,\r\n });\r\n }\r\n\r\n function loadData(path, onComplete, onError) {\r\n setupWorker();\r\n var processId = createProcess(onComplete, onError);\r\n workerInstance.postMessage({\r\n type: 'loadData',\r\n path: path,\r\n fullPath: window.location.origin + window.location.pathname,\r\n id: processId,\r\n });\r\n }\r\n\r\n function completeAnimation(anim, onComplete, onError) {\r\n setupWorker();\r\n var processId = createProcess(onComplete, onError);\r\n workerInstance.postMessage({\r\n type: 'complete',\r\n animation: anim,\r\n id: processId,\r\n });\r\n }\r\n\r\n return {\r\n loadAnimation: loadAnimation,\r\n loadData: loadData,\r\n completeAnimation: completeAnimation,\r\n };\r\n}());\r\n\r\n/* exported getFontProperties */\r\n\r\nfunction getFontProperties(fontData) {\r\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\r\n\r\n var fWeight = 'normal'; var\r\n fStyle = 'normal';\r\n var len = styles.length;\r\n var styleName;\r\n for (var i = 0; i < len; i += 1) {\r\n styleName = styles[i].toLowerCase();\r\n switch (styleName) {\r\n case 'italic':\r\n fStyle = 'italic';\r\n break;\r\n case 'bold':\r\n fWeight = '700';\r\n break;\r\n case 'black':\r\n fWeight = '900';\r\n break;\r\n case 'medium':\r\n fWeight = '500';\r\n break;\r\n case 'regular':\r\n case 'normal':\r\n fWeight = '400';\r\n break;\r\n case 'light':\r\n case 'thin':\r\n fWeight = '200';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n return {\r\n style: fStyle,\r\n weight: fontData.fWeight || fWeight,\r\n };\r\n}\r\n\r\n/* global createNS, createTag, getFontProperties */\r\n/* exported FontManager */\r\n\r\nvar FontManager = (function () {\r\n var maxWaitingTime = 5000;\r\n var emptyChar = {\r\n w: 0,\r\n size: 0,\r\n shapes: [],\r\n };\r\n var combinedCharacters = [];\r\n // Hindi characters\r\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366,\r\n 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379,\r\n 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\r\n\r\n var surrogateModifiers = [\r\n 'd83cdffb',\r\n 'd83cdffc',\r\n 'd83cdffd',\r\n 'd83cdffe',\r\n 'd83cdfff',\r\n ];\r\n\r\n var zeroWidthJoiner = [65039, 8205];\r\n\r\n function trimFontOptions(font) {\r\n var familyArray = font.split(',');\r\n var i;\r\n var len = familyArray.length;\r\n var enabledFamilies = [];\r\n for (i = 0; i < len; i += 1) {\r\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\r\n enabledFamilies.push(familyArray[i]);\r\n }\r\n }\r\n return enabledFamilies.join(',');\r\n }\r\n\r\n function setUpNode(font, family) {\r\n var parentNode = createTag('span');\r\n // Node is invisible to screen readers.\r\n parentNode.setAttribute('aria-hidden', true);\r\n parentNode.style.fontFamily = family;\r\n var node = createTag('span');\r\n // Characters that vary significantly among different fonts\r\n node.innerText = 'giItT1WQy@!-/#';\r\n // Visible - so we can measure it - but not on the screen\r\n parentNode.style.position = 'absolute';\r\n parentNode.style.left = '-10000px';\r\n parentNode.style.top = '-10000px';\r\n // Large font size makes even subtle changes obvious\r\n parentNode.style.fontSize = '300px';\r\n // Reset any font properties\r\n parentNode.style.fontVariant = 'normal';\r\n parentNode.style.fontStyle = 'normal';\r\n parentNode.style.fontWeight = 'normal';\r\n parentNode.style.letterSpacing = '0';\r\n parentNode.appendChild(node);\r\n document.body.appendChild(parentNode);\r\n\r\n // Remember width with no applied web font\r\n var width = node.offsetWidth;\r\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\r\n return { node: node, w: width, parent: parentNode };\r\n }\r\n\r\n function checkLoadedFonts() {\r\n var i;\r\n var len = this.fonts.length;\r\n var node;\r\n var w;\r\n var loadedCount = len;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.fonts[i].loaded) {\r\n loadedCount -= 1;\r\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\r\n this.fonts[i].loaded = true;\r\n } else {\r\n node = this.fonts[i].monoCase.node;\r\n w = this.fonts[i].monoCase.w;\r\n if (node.offsetWidth !== w) {\r\n loadedCount -= 1;\r\n this.fonts[i].loaded = true;\r\n } else {\r\n node = this.fonts[i].sansCase.node;\r\n w = this.fonts[i].sansCase.w;\r\n if (node.offsetWidth !== w) {\r\n loadedCount -= 1;\r\n this.fonts[i].loaded = true;\r\n }\r\n }\r\n if (this.fonts[i].loaded) {\r\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\r\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\r\n }\r\n }\r\n }\r\n\r\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\r\n setTimeout(this.checkLoadedFontsBinded, 20);\r\n } else {\r\n setTimeout(this.setIsLoadedBinded, 10);\r\n }\r\n }\r\n\r\n function createHelper(def, fontData) {\r\n var tHelper = createNS('text');\r\n tHelper.style.fontSize = '100px';\r\n // tHelper.style.fontFamily = fontData.fFamily;\r\n\r\n var fontProps = getFontProperties(fontData);\r\n tHelper.setAttribute('font-family', fontData.fFamily);\r\n tHelper.setAttribute('font-style', fontProps.style);\r\n tHelper.setAttribute('font-weight', fontProps.weight);\r\n tHelper.textContent = '1';\r\n if (fontData.fClass) {\r\n tHelper.style.fontFamily = 'inherit';\r\n tHelper.setAttribute('class', fontData.fClass);\r\n } else {\r\n tHelper.style.fontFamily = fontData.fFamily;\r\n }\r\n def.appendChild(tHelper);\r\n var tCanvasHelper = createTag('canvas').getContext('2d');\r\n tCanvasHelper.font = fontData.fWeight + ' ' + fontData.fStyle + ' 100px ' + fontData.fFamily;\r\n // tCanvasHelper.font = ' 100px '+ fontData.fFamily;\r\n return tHelper;\r\n }\r\n\r\n function addFonts(fontData, defs) {\r\n if (!fontData) {\r\n this.isLoaded = true;\r\n return;\r\n }\r\n if (this.chars) {\r\n this.isLoaded = true;\r\n this.fonts = fontData.list;\r\n return;\r\n }\r\n\r\n var fontArr = fontData.list;\r\n var i;\r\n var len = fontArr.length;\r\n var _pendingFonts = len;\r\n for (i = 0; i < len; i += 1) {\r\n var shouldLoadFont = true;\r\n var loadedSelector;\r\n var j;\r\n fontArr[i].loaded = false;\r\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\r\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\r\n if (!fontArr[i].fPath) {\r\n fontArr[i].loaded = true;\r\n _pendingFonts -= 1;\r\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\r\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\r\n\r\n if (loadedSelector.length > 0) {\r\n shouldLoadFont = false;\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var s = createTag('style');\r\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n s.setAttribute('f-origin', fontArr[i].origin);\r\n s.setAttribute('f-family', fontArr[i].fFamily);\r\n s.type = 'text/css';\r\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\r\n defs.appendChild(s);\r\n }\r\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\r\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\r\n\r\n for (j = 0; j < loadedSelector.length; j += 1) {\r\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\r\n // Font is already loaded\r\n shouldLoadFont = false;\r\n }\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var l = createTag('link');\r\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n l.setAttribute('f-origin', fontArr[i].origin);\r\n l.type = 'text/css';\r\n l.rel = 'stylesheet';\r\n l.href = fontArr[i].fPath;\r\n document.body.appendChild(l);\r\n }\r\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\r\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\r\n\r\n for (j = 0; j < loadedSelector.length; j += 1) {\r\n if (fontArr[i].fPath === loadedSelector[j].src) {\r\n // Font is already loaded\r\n shouldLoadFont = false;\r\n }\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var sc = createTag('link');\r\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n sc.setAttribute('f-origin', fontArr[i].origin);\r\n sc.setAttribute('rel', 'stylesheet');\r\n sc.setAttribute('href', fontArr[i].fPath);\r\n defs.appendChild(sc);\r\n }\r\n }\r\n fontArr[i].helper = createHelper(defs, fontArr[i]);\r\n fontArr[i].cache = {};\r\n this.fonts.push(fontArr[i]);\r\n }\r\n if (_pendingFonts === 0) {\r\n this.isLoaded = true;\r\n } else {\r\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\r\n // Adding this timeout seems to fix it\r\n setTimeout(this.checkLoadedFonts.bind(this), 100);\r\n }\r\n }\r\n\r\n function addChars(chars) {\r\n if (!chars) {\r\n return;\r\n }\r\n if (!this.chars) {\r\n this.chars = [];\r\n }\r\n var i;\r\n var len = chars.length;\r\n var j;\r\n var jLen = this.chars.length;\r\n var found;\r\n for (i = 0; i < len; i += 1) {\r\n j = 0;\r\n found = false;\r\n while (j < jLen) {\r\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\r\n found = true;\r\n }\r\n j += 1;\r\n }\r\n if (!found) {\r\n this.chars.push(chars[i]);\r\n jLen += 1;\r\n }\r\n }\r\n }\r\n\r\n function getCharData(char, style, font) {\r\n var i = 0;\r\n var len = this.chars.length;\r\n while (i < len) {\r\n if (this.chars[i].ch === char && this.chars[i].style === style && this.chars[i].fFamily === font) {\r\n return this.chars[i];\r\n }\r\n i += 1;\r\n }\r\n if (((typeof char === 'string' && char.charCodeAt(0) !== 13) || !char)\r\n && console\r\n && console.warn // eslint-disable-line no-console\r\n && !this._warned\r\n ) {\r\n this._warned = true;\r\n console.warn('Missing character from exported characters list: ', char, style, font); // eslint-disable-line no-console\r\n }\r\n return emptyChar;\r\n }\r\n\r\n function measureText(char, fontName, size) {\r\n var fontData = this.getFontByName(fontName);\r\n var index = char.charCodeAt(0);\r\n if (!fontData.cache[index + 1]) {\r\n var tHelper = fontData.helper;\r\n // Canvas version\r\n // fontData.cache[index] = tHelper.measureText(char).width / 100;\r\n // SVG version\r\n // console.log(tHelper.getBBox().width)\r\n if (char === ' ') {\r\n tHelper.textContent = '|' + char + '|';\r\n var doubleSize = tHelper.getComputedTextLength();\r\n tHelper.textContent = '||';\r\n var singleSize = tHelper.getComputedTextLength();\r\n fontData.cache[index + 1] = (doubleSize - singleSize) / 100;\r\n } else {\r\n tHelper.textContent = char;\r\n fontData.cache[index + 1] = (tHelper.getComputedTextLength()) / 100;\r\n }\r\n }\r\n return fontData.cache[index + 1] * size;\r\n }\r\n\r\n function getFontByName(name) {\r\n var i = 0;\r\n var len = this.fonts.length;\r\n while (i < len) {\r\n if (this.fonts[i].fName === name) {\r\n return this.fonts[i];\r\n }\r\n i += 1;\r\n }\r\n return this.fonts[0];\r\n }\r\n\r\n function isModifier(firstCharCode, secondCharCode) {\r\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\r\n return surrogateModifiers.indexOf(sum) !== -1;\r\n }\r\n\r\n function isZeroWidthJoiner(firstCharCode, secondCharCode) {\r\n if (!secondCharCode) {\r\n return firstCharCode === zeroWidthJoiner[1];\r\n }\r\n return firstCharCode === zeroWidthJoiner[0] && secondCharCode === zeroWidthJoiner[1];\r\n }\r\n\r\n function isCombinedCharacter(char) {\r\n return combinedCharacters.indexOf(char) !== -1;\r\n }\r\n\r\n function setIsLoaded() {\r\n this.isLoaded = true;\r\n }\r\n\r\n var Font = function () {\r\n this.fonts = [];\r\n this.chars = null;\r\n this.typekitLoaded = 0;\r\n this.isLoaded = false;\r\n this._warned = false;\r\n this.initTime = Date.now();\r\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\r\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\r\n };\r\n Font.isModifier = isModifier;\r\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\r\n Font.isCombinedCharacter = isCombinedCharacter;\r\n\r\n var fontPrototype = {\r\n addChars: addChars,\r\n addFonts: addFonts,\r\n getCharData: getCharData,\r\n getFontByName: getFontByName,\r\n measureText: measureText,\r\n checkLoadedFonts: checkLoadedFonts,\r\n setIsLoaded: setIsLoaded,\r\n };\r\n\r\n Font.prototype = fontPrototype;\r\n\r\n return Font;\r\n}());\r\n\r\n/* global initialDefaultFrame, BezierFactory, degToRads, bez, createTypedArray */\r\n/* exported PropertyFactory */\r\n\r\nvar PropertyFactory = (function () {\r\n var initFrame = initialDefaultFrame;\r\n var mathAbs = Math.abs;\r\n\r\n function interpolateValue(frameNum, caching) {\r\n var offsetTime = this.offsetTime;\r\n var newValue;\r\n if (this.propType === 'multidimensional') {\r\n newValue = createTypedArray('float32', this.pv.length);\r\n }\r\n var iterationIndex = caching.lastIndex;\r\n var i = iterationIndex;\r\n var len = this.keyframes.length - 1;\r\n var flag = true;\r\n var keyData;\r\n var nextKeyData;\r\n var keyframeMetadata;\r\n\r\n while (flag) {\r\n keyData = this.keyframes[i];\r\n nextKeyData = this.keyframes[i + 1];\r\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\r\n if (keyData.h) {\r\n keyData = nextKeyData;\r\n }\r\n iterationIndex = 0;\r\n break;\r\n }\r\n if ((nextKeyData.t - offsetTime) > frameNum) {\r\n iterationIndex = i;\r\n break;\r\n }\r\n if (i < len - 1) {\r\n i += 1;\r\n } else {\r\n iterationIndex = 0;\r\n flag = false;\r\n }\r\n }\r\n keyframeMetadata = this.keyframesMetadata[i] || {};\r\n\r\n var k;\r\n var kLen;\r\n var perc;\r\n var jLen;\r\n var j;\r\n var fnc;\r\n var nextKeyTime = nextKeyData.t - offsetTime;\r\n var keyTime = keyData.t - offsetTime;\r\n var endValue;\r\n if (keyData.to) {\r\n if (!keyframeMetadata.bezierData) {\r\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\r\n }\r\n var bezierData = keyframeMetadata.bezierData;\r\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\r\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\r\n kLen = bezierData.points[ind].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[ind].point[k];\r\n }\r\n // caching._lastKeyframeIndex = -1;\r\n } else {\r\n if (keyframeMetadata.__fnct) {\r\n fnc = keyframeMetadata.__fnct;\r\n } else {\r\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\r\n keyframeMetadata.__fnct = fnc;\r\n }\r\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\r\n var distanceInLine = bezierData.segmentLength * perc;\r\n\r\n var segmentPerc;\r\n var addedLength = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastAddedLength : 0;\r\n j = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastPoint : 0;\r\n flag = true;\r\n jLen = bezierData.points.length;\r\n while (flag) {\r\n addedLength += bezierData.points[j].partialLength;\r\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\r\n kLen = bezierData.points[j].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[j].point[k];\r\n }\r\n break;\r\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\r\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\r\n kLen = bezierData.points[j].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\r\n }\r\n break;\r\n }\r\n if (j < jLen - 1) {\r\n j += 1;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n caching._lastPoint = j;\r\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\r\n caching._lastKeyframeIndex = i;\r\n }\r\n } else {\r\n var outX;\r\n var outY;\r\n var inX;\r\n var inY;\r\n var keyValue;\r\n len = keyData.s.length;\r\n endValue = nextKeyData.s || keyData.e;\r\n if (this.sh && keyData.h !== 1) {\r\n if (frameNum >= nextKeyTime) {\r\n newValue[0] = endValue[0];\r\n newValue[1] = endValue[1];\r\n newValue[2] = endValue[2];\r\n } else if (frameNum <= keyTime) {\r\n newValue[0] = keyData.s[0];\r\n newValue[1] = keyData.s[1];\r\n newValue[2] = keyData.s[2];\r\n } else {\r\n var quatStart = createQuaternion(keyData.s);\r\n var quatEnd = createQuaternion(endValue);\r\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\r\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\r\n }\r\n } else {\r\n for (i = 0; i < len; i += 1) {\r\n if (keyData.h !== 1) {\r\n if (frameNum >= nextKeyTime) {\r\n perc = 1;\r\n } else if (frameNum < keyTime) {\r\n perc = 0;\r\n } else {\r\n if (keyData.o.x.constructor === Array) {\r\n if (!keyframeMetadata.__fnct) {\r\n keyframeMetadata.__fnct = [];\r\n }\r\n if (!keyframeMetadata.__fnct[i]) {\r\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\r\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\r\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\r\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\r\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\r\n keyframeMetadata.__fnct[i] = fnc;\r\n } else {\r\n fnc = keyframeMetadata.__fnct[i];\r\n }\r\n } else if (!keyframeMetadata.__fnct) {\r\n outX = keyData.o.x;\r\n outY = keyData.o.y;\r\n inX = keyData.i.x;\r\n inY = keyData.i.y;\r\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\r\n keyData.keyframeMetadata = fnc;\r\n } else {\r\n fnc = keyframeMetadata.__fnct;\r\n }\r\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\r\n }\r\n }\r\n\r\n endValue = nextKeyData.s || keyData.e;\r\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\r\n\r\n if (this.propType === 'multidimensional') {\r\n newValue[i] = keyValue;\r\n } else {\r\n newValue = keyValue;\r\n }\r\n }\r\n }\r\n }\r\n caching.lastIndex = iterationIndex;\r\n return newValue;\r\n }\r\n\r\n // based on @Toji's https://github.com/toji/gl-matrix/\r\n function slerp(a, b, t) {\r\n var out = [];\r\n var ax = a[0];\r\n var ay = a[1];\r\n var az = a[2];\r\n var aw = a[3];\r\n var bx = b[0];\r\n var by = b[1];\r\n var bz = b[2];\r\n var bw = b[3];\r\n\r\n var omega;\r\n var cosom;\r\n var sinom;\r\n var scale0;\r\n var scale1;\r\n\r\n cosom = ax * bx + ay * by + az * bz + aw * bw;\r\n if (cosom < 0.0) {\r\n cosom = -cosom;\r\n bx = -bx;\r\n by = -by;\r\n bz = -bz;\r\n bw = -bw;\r\n }\r\n if ((1.0 - cosom) > 0.000001) {\r\n omega = Math.acos(cosom);\r\n sinom = Math.sin(omega);\r\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\r\n scale1 = Math.sin(t * omega) / sinom;\r\n } else {\r\n scale0 = 1.0 - t;\r\n scale1 = t;\r\n }\r\n out[0] = scale0 * ax + scale1 * bx;\r\n out[1] = scale0 * ay + scale1 * by;\r\n out[2] = scale0 * az + scale1 * bz;\r\n out[3] = scale0 * aw + scale1 * bw;\r\n\r\n return out;\r\n }\r\n\r\n function quaternionToEuler(out, quat) {\r\n var qx = quat[0];\r\n var qy = quat[1];\r\n var qz = quat[2];\r\n var qw = quat[3];\r\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\r\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\r\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\r\n out[0] = heading / degToRads;\r\n out[1] = attitude / degToRads;\r\n out[2] = bank / degToRads;\r\n }\r\n\r\n function createQuaternion(values) {\r\n var heading = values[0] * degToRads;\r\n var attitude = values[1] * degToRads;\r\n var bank = values[2] * degToRads;\r\n var c1 = Math.cos(heading / 2);\r\n var c2 = Math.cos(attitude / 2);\r\n var c3 = Math.cos(bank / 2);\r\n var s1 = Math.sin(heading / 2);\r\n var s2 = Math.sin(attitude / 2);\r\n var s3 = Math.sin(bank / 2);\r\n var w = c1 * c2 * c3 - s1 * s2 * s3;\r\n var x = s1 * s2 * c3 + c1 * c2 * s3;\r\n var y = s1 * c2 * c3 + c1 * s2 * s3;\r\n var z = c1 * s2 * c3 - s1 * c2 * s3;\r\n\r\n return [x, y, z, w];\r\n }\r\n\r\n function getValueAtCurrentTime() {\r\n var frameNum = this.comp.renderedFrame - this.offsetTime;\r\n var initTime = this.keyframes[0].t - this.offsetTime;\r\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\r\n if (!(frameNum === this._caching.lastFrame || (this._caching.lastFrame !== initFrame && ((this._caching.lastFrame >= endTime && frameNum >= endTime) || (this._caching.lastFrame < initTime && frameNum < initTime))))) {\r\n if (this._caching.lastFrame >= frameNum) {\r\n this._caching._lastKeyframeIndex = -1;\r\n this._caching.lastIndex = 0;\r\n }\r\n\r\n var renderResult = this.interpolateValue(frameNum, this._caching);\r\n this.pv = renderResult;\r\n }\r\n this._caching.lastFrame = frameNum;\r\n return this.pv;\r\n }\r\n\r\n function setVValue(val) {\r\n var multipliedValue;\r\n if (this.propType === 'unidimensional') {\r\n multipliedValue = val * this.mult;\r\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\r\n this.v = multipliedValue;\r\n this._mdf = true;\r\n }\r\n } else {\r\n var i = 0;\r\n var len = this.v.length;\r\n while (i < len) {\r\n multipliedValue = val[i] * this.mult;\r\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\r\n this.v[i] = multipliedValue;\r\n this._mdf = true;\r\n }\r\n i += 1;\r\n }\r\n }\r\n }\r\n\r\n function processEffectsSequence() {\r\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\r\n return;\r\n }\r\n if (this.lock) {\r\n this.setVValue(this.pv);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = this._isFirstFrame;\r\n var i;\r\n var len = this.effectsSequence.length;\r\n var finalValue = this.kf ? this.pv : this.data.k;\r\n for (i = 0; i < len; i += 1) {\r\n finalValue = this.effectsSequence[i](finalValue);\r\n }\r\n this.setVValue(finalValue);\r\n this._isFirstFrame = false;\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function addEffect(effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.container.addDynamicProperty(this);\r\n }\r\n\r\n function ValueProperty(elem, data, mult, container) {\r\n this.propType = 'unidimensional';\r\n this.mult = mult || 1;\r\n this.data = data;\r\n this.v = mult ? data.k * mult : data.k;\r\n this.pv = data.k;\r\n this._mdf = false;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.k = false;\r\n this.kf = false;\r\n this.vel = 0;\r\n this.effectsSequence = [];\r\n this._isFirstFrame = true;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function MultiDimensionalProperty(elem, data, mult, container) {\r\n this.propType = 'multidimensional';\r\n this.mult = mult || 1;\r\n this.data = data;\r\n this._mdf = false;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.k = false;\r\n this.kf = false;\r\n this.frameId = -1;\r\n var i;\r\n var len = data.k.length;\r\n this.v = createTypedArray('float32', len);\r\n this.pv = createTypedArray('float32', len);\r\n this.vel = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n this.v[i] = data.k[i] * this.mult;\r\n this.pv[i] = data.k[i];\r\n }\r\n this._isFirstFrame = true;\r\n this.effectsSequence = [];\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function KeyframedValueProperty(elem, data, mult, container) {\r\n this.propType = 'unidimensional';\r\n this.keyframes = data.k;\r\n this.keyframesMetadata = [];\r\n this.offsetTime = elem.data.st;\r\n this.frameId = -1;\r\n this._caching = {\r\n lastFrame: initFrame, lastIndex: 0, value: 0, _lastKeyframeIndex: -1,\r\n };\r\n this.k = true;\r\n this.kf = true;\r\n this.data = data;\r\n this.mult = mult || 1;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.v = initFrame;\r\n this.pv = initFrame;\r\n this._isFirstFrame = true;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.interpolateValue = interpolateValue;\r\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\r\n this.propType = 'multidimensional';\r\n var i;\r\n var len = data.k.length;\r\n var s;\r\n var e;\r\n var to;\r\n var ti;\r\n for (i = 0; i < len - 1; i += 1) {\r\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\r\n s = data.k[i].s;\r\n e = data.k[i + 1].s;\r\n to = data.k[i].to;\r\n ti = data.k[i].ti;\r\n if ((s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1])) || (s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2]))) {\r\n data.k[i].to = null;\r\n data.k[i].ti = null;\r\n }\r\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\r\n if (s.length === 2 || (s[2] === e[2] && to[2] === 0 && ti[2] === 0)) {\r\n data.k[i].to = null;\r\n data.k[i].ti = null;\r\n }\r\n }\r\n }\r\n }\r\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\r\n this.data = data;\r\n this.keyframes = data.k;\r\n this.keyframesMetadata = [];\r\n this.offsetTime = elem.data.st;\r\n this.k = true;\r\n this.kf = true;\r\n this._isFirstFrame = true;\r\n this.mult = mult || 1;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.interpolateValue = interpolateValue;\r\n this.frameId = -1;\r\n var arrLen = data.k[0].s.length;\r\n this.v = createTypedArray('float32', arrLen);\r\n this.pv = createTypedArray('float32', arrLen);\r\n for (i = 0; i < arrLen; i += 1) {\r\n this.v[i] = initFrame;\r\n this.pv[i] = initFrame;\r\n }\r\n this._caching = { lastFrame: initFrame, lastIndex: 0, value: createTypedArray('float32', arrLen) };\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function getProp(elem, data, type, mult, container) {\r\n var p;\r\n if (!data.k.length) {\r\n p = new ValueProperty(elem, data, mult, container);\r\n } else if (typeof (data.k[0]) === 'number') {\r\n p = new MultiDimensionalProperty(elem, data, mult, container);\r\n } else {\r\n switch (type) {\r\n case 0:\r\n p = new KeyframedValueProperty(elem, data, mult, container);\r\n break;\r\n case 1:\r\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n if (p.effectsSequence.length) {\r\n container.addDynamicProperty(p);\r\n }\r\n return p;\r\n }\r\n\r\n var ob = {\r\n getProp: getProp,\r\n };\r\n return ob;\r\n}());\r\n\r\n/* global Matrix, degToRads, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n/* exported TransformPropertyFactory */\r\n\r\nvar TransformPropertyFactory = (function () {\r\n var defaultVector = [0, 0];\r\n\r\n function applyToMatrix(mat) {\r\n var _mdf = this._mdf;\r\n this.iterateDynamicProperties();\r\n this._mdf = this._mdf || _mdf;\r\n if (this.a) {\r\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n }\r\n if (this.s) {\r\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n }\r\n if (this.sk) {\r\n mat.skewFromAxis(-this.sk.v, this.sa.v);\r\n }\r\n if (this.r) {\r\n mat.rotate(-this.r.v);\r\n } else {\r\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2])\r\n .rotateY(this.or.v[1])\r\n .rotateX(this.or.v[0]);\r\n }\r\n if (this.data.p.s) {\r\n if (this.data.p.z) {\r\n mat.translate(this.px.v, this.py.v, -this.pz.v);\r\n } else {\r\n mat.translate(this.px.v, this.py.v, 0);\r\n }\r\n } else {\r\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\r\n }\r\n }\r\n function processKeys(forceRender) {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n if (this._isDirty) {\r\n this.precalculateMatrix();\r\n this._isDirty = false;\r\n }\r\n\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf || forceRender) {\r\n var frameRate;\r\n this.v.cloneFromProps(this.pre.props);\r\n if (this.appliedTransformations < 1) {\r\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n }\r\n if (this.appliedTransformations < 2) {\r\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n }\r\n if (this.sk && this.appliedTransformations < 3) {\r\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\r\n }\r\n if (this.r && this.appliedTransformations < 4) {\r\n this.v.rotate(-this.r.v);\r\n } else if (!this.r && this.appliedTransformations < 4) {\r\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2])\r\n .rotateY(this.or.v[1])\r\n .rotateX(this.or.v[0]);\r\n }\r\n if (this.autoOriented) {\r\n var v1;\r\n var v2;\r\n frameRate = this.elem.globalData.frameRate;\r\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\r\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\r\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\r\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\r\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\r\n v1 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t / frameRate), 0);\r\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\r\n } else {\r\n v1 = this.p.pv;\r\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\r\n }\r\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\r\n v1 = [];\r\n v2 = [];\r\n var px = this.px;\r\n var py = this.py;\r\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\r\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\r\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\r\n v2[0] = px.getValueAtTime((px.keyframes[0].t) / frameRate, 0);\r\n v2[1] = py.getValueAtTime((py.keyframes[0].t) / frameRate, 0);\r\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\r\n v1[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t / frameRate), 0);\r\n v1[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t / frameRate), 0);\r\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\r\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\r\n } else {\r\n v1 = [px.pv, py.pv];\r\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\r\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\r\n }\r\n } else {\r\n v2 = defaultVector;\r\n v1 = v2;\r\n }\r\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\r\n }\r\n if (this.data.p && this.data.p.s) {\r\n if (this.data.p.z) {\r\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\r\n } else {\r\n this.v.translate(this.px.v, this.py.v, 0);\r\n }\r\n } else {\r\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\r\n }\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function precalculateMatrix() {\r\n if (!this.a.k) {\r\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n this.appliedTransformations = 1;\r\n } else {\r\n return;\r\n }\r\n if (!this.s.effectsSequence.length) {\r\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n this.appliedTransformations = 2;\r\n } else {\r\n return;\r\n }\r\n if (this.sk) {\r\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\r\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\r\n this.appliedTransformations = 3;\r\n } else {\r\n return;\r\n }\r\n }\r\n if (this.r) {\r\n if (!this.r.effectsSequence.length) {\r\n this.pre.rotate(-this.r.v);\r\n this.appliedTransformations = 4;\r\n }\r\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\r\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2])\r\n .rotateY(this.or.v[1])\r\n .rotateX(this.or.v[0]);\r\n this.appliedTransformations = 4;\r\n }\r\n }\r\n\r\n function autoOrient() {\r\n //\r\n // var prevP = this.getValueAtTime();\r\n }\r\n\r\n function addDynamicProperty(prop) {\r\n this._addDynamicProperty(prop);\r\n this.elem.addDynamicProperty(prop);\r\n this._isDirty = true;\r\n }\r\n\r\n function TransformProperty(elem, data, container) {\r\n this.elem = elem;\r\n this.frameId = -1;\r\n this.propType = 'transform';\r\n this.data = data;\r\n this.v = new Matrix();\r\n // Precalculated matrix with non animated properties\r\n this.pre = new Matrix();\r\n this.appliedTransformations = 0;\r\n this.initDynamicPropertyContainer(container || elem);\r\n if (data.p && data.p.s) {\r\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\r\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\r\n if (data.p.z) {\r\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\r\n }\r\n } else {\r\n this.p = PropertyFactory.getProp(elem, data.p || { k: [0, 0, 0] }, 1, 0, this);\r\n }\r\n if (data.rx) {\r\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\r\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\r\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\r\n if (data.or.k[0].ti) {\r\n var i;\r\n var len = data.or.k.length;\r\n for (i = 0; i < len; i += 1) {\r\n data.or.k[i].to = null;\r\n data.or.k[i].ti = null;\r\n }\r\n }\r\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this);\r\n // sh Indicates it needs to be capped between -180 and 180\r\n this.or.sh = true;\r\n } else {\r\n this.r = PropertyFactory.getProp(elem, data.r || { k: 0 }, 0, degToRads, this);\r\n }\r\n if (data.sk) {\r\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\r\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\r\n }\r\n this.a = PropertyFactory.getProp(elem, data.a || { k: [0, 0, 0] }, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s || { k: [100, 100, 100] }, 1, 0.01, this);\r\n // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\r\n if (data.o) {\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\r\n } else {\r\n this.o = { _mdf: false, v: 1 };\r\n }\r\n this._isDirty = true;\r\n if (!this.dynamicProperties.length) {\r\n this.getValue(true);\r\n }\r\n }\r\n\r\n TransformProperty.prototype = {\r\n applyToMatrix: applyToMatrix,\r\n getValue: processKeys,\r\n precalculateMatrix: precalculateMatrix,\r\n autoOrient: autoOrient,\r\n };\r\n\r\n extendPrototype([DynamicPropertyContainer], TransformProperty);\r\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\r\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\r\n\r\n function getTransformProperty(elem, data, container) {\r\n return new TransformProperty(elem, data, container);\r\n }\r\n\r\n return {\r\n getTransformProperty: getTransformProperty,\r\n };\r\n}());\r\n\r\n/* global createSizedArray, createSizedArray, pointPool */\r\n\r\nfunction ShapePath() {\r\n this.c = false;\r\n this._length = 0;\r\n this._maxLength = 8;\r\n this.v = createSizedArray(this._maxLength);\r\n this.o = createSizedArray(this._maxLength);\r\n this.i = createSizedArray(this._maxLength);\r\n}\r\n\r\nShapePath.prototype.setPathData = function (closed, len) {\r\n this.c = closed;\r\n this.setLength(len);\r\n var i = 0;\r\n while (i < len) {\r\n this.v[i] = pointPool.newElement();\r\n this.o[i] = pointPool.newElement();\r\n this.i[i] = pointPool.newElement();\r\n i += 1;\r\n }\r\n};\r\n\r\nShapePath.prototype.setLength = function (len) {\r\n while (this._maxLength < len) {\r\n this.doubleArrayLength();\r\n }\r\n this._length = len;\r\n};\r\n\r\nShapePath.prototype.doubleArrayLength = function () {\r\n this.v = this.v.concat(createSizedArray(this._maxLength));\r\n this.i = this.i.concat(createSizedArray(this._maxLength));\r\n this.o = this.o.concat(createSizedArray(this._maxLength));\r\n this._maxLength *= 2;\r\n};\r\n\r\nShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\r\n var arr;\r\n this._length = Math.max(this._length, pos + 1);\r\n if (this._length >= this._maxLength) {\r\n this.doubleArrayLength();\r\n }\r\n switch (type) {\r\n case 'v':\r\n arr = this.v;\r\n break;\r\n case 'i':\r\n arr = this.i;\r\n break;\r\n case 'o':\r\n arr = this.o;\r\n break;\r\n default:\r\n arr = [];\r\n break;\r\n }\r\n if (!arr[pos] || (arr[pos] && !replace)) {\r\n arr[pos] = pointPool.newElement();\r\n }\r\n arr[pos][0] = x;\r\n arr[pos][1] = y;\r\n};\r\n\r\nShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\r\n this.setXYAt(vX, vY, 'v', pos, replace);\r\n this.setXYAt(oX, oY, 'o', pos, replace);\r\n this.setXYAt(iX, iY, 'i', pos, replace);\r\n};\r\n\r\nShapePath.prototype.reverse = function () {\r\n var newPath = new ShapePath();\r\n newPath.setPathData(this.c, this._length);\r\n var vertices = this.v;\r\n var outPoints = this.o;\r\n var inPoints = this.i;\r\n var init = 0;\r\n if (this.c) {\r\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\r\n init = 1;\r\n }\r\n var cnt = this._length - 1;\r\n var len = this._length;\r\n\r\n var i;\r\n for (i = init; i < len; i += 1) {\r\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\r\n cnt -= 1;\r\n }\r\n return newPath;\r\n};\r\n\r\n/* global extendPrototype, roundCorner, BezierFactory, shapePool, degToRads,\r\n shapeCollectionPool, PropertyFactory, bmMin, DynamicPropertyContainer */\r\n/* exported ShapePropertyFactory */\r\n\r\nvar ShapePropertyFactory = (function () {\r\n var initFrame = -999999;\r\n\r\n function interpolateShape(frameNum, previousValue, caching) {\r\n var iterationIndex = caching.lastIndex;\r\n var keyPropS;\r\n var keyPropE;\r\n var isHold;\r\n var j;\r\n var k;\r\n var jLen;\r\n var kLen;\r\n var perc;\r\n var vertexValue;\r\n var kf = this.keyframes;\r\n if (frameNum < kf[0].t - this.offsetTime) {\r\n keyPropS = kf[0].s[0];\r\n isHold = true;\r\n iterationIndex = 0;\r\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\r\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\r\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\r\n isHold = true;\r\n } else {\r\n var i = iterationIndex;\r\n var len = kf.length - 1;\r\n var flag = true;\r\n var keyData;\r\n var nextKeyData;\r\n var keyframeMetadata;\r\n while (flag) {\r\n keyData = kf[i];\r\n nextKeyData = kf[i + 1];\r\n if ((nextKeyData.t - this.offsetTime) > frameNum) {\r\n break;\r\n }\r\n if (i < len - 1) {\r\n i += 1;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n keyframeMetadata = this.keyframesMetadata[i] || {};\r\n isHold = keyData.h === 1;\r\n iterationIndex = i;\r\n if (!isHold) {\r\n if (frameNum >= nextKeyData.t - this.offsetTime) {\r\n perc = 1;\r\n } else if (frameNum < keyData.t - this.offsetTime) {\r\n perc = 0;\r\n } else {\r\n var fnc;\r\n if (keyframeMetadata.__fnct) {\r\n fnc = keyframeMetadata.__fnct;\r\n } else {\r\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\r\n keyframeMetadata.__fnct = fnc;\r\n }\r\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / ((nextKeyData.t - this.offsetTime) - (keyData.t - this.offsetTime)));\r\n }\r\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\r\n }\r\n keyPropS = keyData.s[0];\r\n }\r\n jLen = previousValue._length;\r\n kLen = keyPropS.i[0].length;\r\n caching.lastIndex = iterationIndex;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n for (k = 0; k < kLen; k += 1) {\r\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\r\n previousValue.i[j][k] = vertexValue;\r\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\r\n previousValue.o[j][k] = vertexValue;\r\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\r\n previousValue.v[j][k] = vertexValue;\r\n }\r\n }\r\n }\r\n\r\n function interpolateShapeCurrentTime() {\r\n var frameNum = this.comp.renderedFrame - this.offsetTime;\r\n var initTime = this.keyframes[0].t - this.offsetTime;\r\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\r\n var lastFrame = this._caching.lastFrame;\r\n if (!(lastFrame !== initFrame && ((lastFrame < initTime && frameNum < initTime) || (lastFrame > endTime && frameNum > endTime)))) {\r\n /// /\r\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\r\n this.interpolateShape(frameNum, this.pv, this._caching);\r\n /// /\r\n }\r\n this._caching.lastFrame = frameNum;\r\n return this.pv;\r\n }\r\n\r\n function resetShape() {\r\n this.paths = this.localShapeCollection;\r\n }\r\n\r\n function shapesEqual(shape1, shape2) {\r\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\r\n return false;\r\n }\r\n var i;\r\n var len = shape1._length;\r\n for (i = 0; i < len; i += 1) {\r\n if (shape1.v[i][0] !== shape2.v[i][0]\r\n || shape1.v[i][1] !== shape2.v[i][1]\r\n || shape1.o[i][0] !== shape2.o[i][0]\r\n || shape1.o[i][1] !== shape2.o[i][1]\r\n || shape1.i[i][0] !== shape2.i[i][0]\r\n || shape1.i[i][1] !== shape2.i[i][1]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n function setVValue(newPath) {\r\n if (!shapesEqual(this.v, newPath)) {\r\n this.v = shapePool.clone(newPath);\r\n this.localShapeCollection.releaseShapes();\r\n this.localShapeCollection.addShape(this.v);\r\n this._mdf = true;\r\n this.paths = this.localShapeCollection;\r\n }\r\n }\r\n\r\n function processEffectsSequence() {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n } if (!this.effectsSequence.length) {\r\n this._mdf = false;\r\n return;\r\n }\r\n if (this.lock) {\r\n this.setVValue(this.pv);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = false;\r\n var finalValue;\r\n if (this.kf) {\r\n finalValue = this.pv;\r\n } else if (this.data.ks) {\r\n finalValue = this.data.ks.k;\r\n } else {\r\n finalValue = this.data.pt.k;\r\n }\r\n var i;\r\n var len = this.effectsSequence.length;\r\n for (i = 0; i < len; i += 1) {\r\n finalValue = this.effectsSequence[i](finalValue);\r\n }\r\n this.setVValue(finalValue);\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function ShapeProperty(elem, data, type) {\r\n this.propType = 'shape';\r\n this.comp = elem.comp;\r\n this.container = elem;\r\n this.elem = elem;\r\n this.data = data;\r\n this.k = false;\r\n this.kf = false;\r\n this._mdf = false;\r\n var pathData = type === 3 ? data.pt.k : data.ks.k;\r\n this.v = shapePool.clone(pathData);\r\n this.pv = shapePool.clone(this.v);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.paths.addShape(this.v);\r\n this.reset = resetShape;\r\n this.effectsSequence = [];\r\n }\r\n\r\n function addEffect(effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.container.addDynamicProperty(this);\r\n }\r\n\r\n ShapeProperty.prototype.interpolateShape = interpolateShape;\r\n ShapeProperty.prototype.getValue = processEffectsSequence;\r\n ShapeProperty.prototype.setVValue = setVValue;\r\n ShapeProperty.prototype.addEffect = addEffect;\r\n\r\n function KeyframedShapeProperty(elem, data, type) {\r\n this.propType = 'shape';\r\n this.comp = elem.comp;\r\n this.elem = elem;\r\n this.container = elem;\r\n this.offsetTime = elem.data.st;\r\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\r\n this.keyframesMetadata = [];\r\n this.k = true;\r\n this.kf = true;\r\n var len = this.keyframes[0].s[0].i.length;\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(this.keyframes[0].s[0].c, len);\r\n this.pv = shapePool.clone(this.v);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.paths.addShape(this.v);\r\n this.lastFrame = initFrame;\r\n this.reset = resetShape;\r\n this._caching = { lastFrame: initFrame, lastIndex: 0 };\r\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\r\n }\r\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\r\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\r\n KeyframedShapeProperty.prototype.setVValue = setVValue;\r\n KeyframedShapeProperty.prototype.addEffect = addEffect;\r\n\r\n var EllShapeProperty = (function () {\r\n var cPoint = roundCorner;\r\n\r\n function EllShapePropertyFactory(elem, data) {\r\n /* this.v = {\r\n v: createSizedArray(4),\r\n i: createSizedArray(4),\r\n o: createSizedArray(4),\r\n c: true\r\n }; */\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(true, 4);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.localShapeCollection.addShape(this.v);\r\n this.d = data.d;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.frameId = -1;\r\n this.initDynamicPropertyContainer(elem);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertEllToPath();\r\n }\r\n }\r\n\r\n EllShapePropertyFactory.prototype = {\r\n reset: resetShape,\r\n getValue: function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf) {\r\n this.convertEllToPath();\r\n }\r\n },\r\n convertEllToPath: function () {\r\n var p0 = this.p.v[0];\r\n var p1 = this.p.v[1];\r\n var s0 = this.s.v[0] / 2;\r\n var s1 = this.s.v[1] / 2;\r\n var _cw = this.d !== 3;\r\n var _v = this.v;\r\n _v.v[0][0] = p0;\r\n _v.v[0][1] = p1 - s1;\r\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.v[1][1] = p1;\r\n _v.v[2][0] = p0;\r\n _v.v[2][1] = p1 + s1;\r\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.v[3][1] = p1;\r\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\r\n _v.i[0][1] = p1 - s1;\r\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.i[1][1] = p1 - s1 * cPoint;\r\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\r\n _v.i[2][1] = p1 + s1;\r\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.i[3][1] = p1 + s1 * cPoint;\r\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\r\n _v.o[0][1] = p1 - s1;\r\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.o[1][1] = p1 + s1 * cPoint;\r\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\r\n _v.o[2][1] = p1 + s1;\r\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.o[3][1] = p1 - s1 * cPoint;\r\n },\r\n };\r\n\r\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\r\n\r\n return EllShapePropertyFactory;\r\n }());\r\n\r\n var StarShapeProperty = (function () {\r\n function StarShapePropertyFactory(elem, data) {\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(true, 0);\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.data = data;\r\n this.frameId = -1;\r\n this.d = data.d;\r\n this.initDynamicPropertyContainer(elem);\r\n if (data.sy === 1) {\r\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\r\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\r\n this.convertToPath = this.convertStarToPath;\r\n } else {\r\n this.convertToPath = this.convertPolygonToPath;\r\n }\r\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\r\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\r\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.localShapeCollection.addShape(this.v);\r\n this.paths = this.localShapeCollection;\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertToPath();\r\n }\r\n }\r\n\r\n StarShapePropertyFactory.prototype = {\r\n reset: resetShape,\r\n getValue: function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n if (this._mdf) {\r\n this.convertToPath();\r\n }\r\n },\r\n convertStarToPath: function () {\r\n var numPts = Math.floor(this.pt.v) * 2;\r\n var angle = (Math.PI * 2) / numPts;\r\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\r\n var longFlag = true;\r\n var longRad = this.or.v;\r\n var shortRad = this.ir.v;\r\n var longRound = this.os.v;\r\n var shortRound = this.is.v;\r\n var longPerimSegment = (2 * Math.PI * longRad) / (numPts * 2);\r\n var shortPerimSegment = (2 * Math.PI * shortRad) / (numPts * 2);\r\n var i;\r\n var rad;\r\n var roundness;\r\n var perimSegment;\r\n var currentAng = -Math.PI / 2;\r\n currentAng += this.r.v;\r\n var dir = this.data.d === 3 ? -1 : 1;\r\n this.v._length = 0;\r\n for (i = 0; i < numPts; i += 1) {\r\n rad = longFlag ? longRad : shortRad;\r\n roundness = longFlag ? longRound : shortRound;\r\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\r\n var x = rad * Math.cos(currentAng);\r\n var y = rad * Math.sin(currentAng);\r\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\r\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\r\n x += +this.p.v[0];\r\n y += +this.p.v[1];\r\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\r\n\r\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\r\n longFlag = !longFlag;\r\n currentAng += angle * dir;\r\n }\r\n },\r\n convertPolygonToPath: function () {\r\n var numPts = Math.floor(this.pt.v);\r\n var angle = (Math.PI * 2) / numPts;\r\n var rad = this.or.v;\r\n var roundness = this.os.v;\r\n var perimSegment = (2 * Math.PI * rad) / (numPts * 4);\r\n var i;\r\n var currentAng = -Math.PI * 0.5;\r\n var dir = this.data.d === 3 ? -1 : 1;\r\n currentAng += this.r.v;\r\n this.v._length = 0;\r\n for (i = 0; i < numPts; i += 1) {\r\n var x = rad * Math.cos(currentAng);\r\n var y = rad * Math.sin(currentAng);\r\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\r\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\r\n x += +this.p.v[0];\r\n y += +this.p.v[1];\r\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\r\n currentAng += angle * dir;\r\n }\r\n this.paths.length = 0;\r\n this.paths[0] = this.v;\r\n },\r\n\r\n };\r\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\r\n\r\n return StarShapePropertyFactory;\r\n }());\r\n\r\n var RectShapeProperty = (function () {\r\n function RectShapePropertyFactory(elem, data) {\r\n this.v = shapePool.newElement();\r\n this.v.c = true;\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.localShapeCollection.addShape(this.v);\r\n this.paths = this.localShapeCollection;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.frameId = -1;\r\n this.d = data.d;\r\n this.initDynamicPropertyContainer(elem);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\r\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertRectToPath();\r\n }\r\n }\r\n\r\n RectShapePropertyFactory.prototype = {\r\n convertRectToPath: function () {\r\n var p0 = this.p.v[0];\r\n var p1 = this.p.v[1];\r\n var v0 = this.s.v[0] / 2;\r\n var v1 = this.s.v[1] / 2;\r\n var round = bmMin(v0, v1, this.r.v);\r\n var cPoint = round * (1 - roundCorner);\r\n this.v._length = 0;\r\n\r\n if (this.d === 2 || this.d === 1) {\r\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\r\n if (round !== 0) {\r\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\r\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\r\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\r\n } else {\r\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\r\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\r\n }\r\n } else {\r\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\r\n if (round !== 0) {\r\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\r\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\r\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\r\n } else {\r\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\r\n }\r\n }\r\n },\r\n getValue: function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n if (this._mdf) {\r\n this.convertRectToPath();\r\n }\r\n },\r\n reset: resetShape,\r\n };\r\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\r\n\r\n return RectShapePropertyFactory;\r\n }());\r\n\r\n function getShapeProp(elem, data, type) {\r\n var prop;\r\n if (type === 3 || type === 4) {\r\n var dataProp = type === 3 ? data.pt : data.ks;\r\n var keys = dataProp.k;\r\n if (keys.length) {\r\n prop = new KeyframedShapeProperty(elem, data, type);\r\n } else {\r\n prop = new ShapeProperty(elem, data, type);\r\n }\r\n } else if (type === 5) {\r\n prop = new RectShapeProperty(elem, data);\r\n } else if (type === 6) {\r\n prop = new EllShapeProperty(elem, data);\r\n } else if (type === 7) {\r\n prop = new StarShapeProperty(elem, data);\r\n }\r\n if (prop.k) {\r\n elem.addDynamicProperty(prop);\r\n }\r\n return prop;\r\n }\r\n\r\n function getConstructorFunction() {\r\n return ShapeProperty;\r\n }\r\n\r\n function getKeyframedConstructorFunction() {\r\n return KeyframedShapeProperty;\r\n }\r\n\r\n var ob = {};\r\n ob.getShapeProp = getShapeProp;\r\n ob.getConstructorFunction = getConstructorFunction;\r\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\r\n return ob;\r\n}());\r\n\r\n/* global shapeCollectionPool, initialDefaultFrame, extendPrototype, DynamicPropertyContainer */\r\n/* exported ShapeModifiers */\r\n\r\nvar ShapeModifiers = (function () {\r\n var ob = {};\r\n var modifiers = {};\r\n ob.registerModifier = registerModifier;\r\n ob.getModifier = getModifier;\r\n\r\n function registerModifier(nm, factory) {\r\n if (!modifiers[nm]) {\r\n modifiers[nm] = factory;\r\n }\r\n }\r\n\r\n function getModifier(nm, elem, data) {\r\n return new modifiers[nm](elem, data);\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\nfunction ShapeModifier() {}\r\nShapeModifier.prototype.initModifierProperties = function () {};\r\nShapeModifier.prototype.addShapeToModifier = function () {};\r\nShapeModifier.prototype.addShape = function (data) {\r\n if (!this.closed) {\r\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\r\n data.sh.container.addDynamicProperty(data.sh);\r\n var shapeData = { shape: data.sh, data: data, localShapeCollection: shapeCollectionPool.newShapeCollection() };\r\n this.shapes.push(shapeData);\r\n this.addShapeToModifier(shapeData);\r\n if (this._isAnimated) {\r\n data.setAsAnimated();\r\n }\r\n }\r\n};\r\nShapeModifier.prototype.init = function (elem, data) {\r\n this.shapes = [];\r\n this.elem = elem;\r\n this.initDynamicPropertyContainer(elem);\r\n this.initModifierProperties(elem, data);\r\n this.frameId = initialDefaultFrame;\r\n this.closed = false;\r\n this.k = false;\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.getValue(true);\r\n }\r\n};\r\nShapeModifier.prototype.processKeys = function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n};\r\n\r\nextendPrototype([DynamicPropertyContainer], ShapeModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, PropertyFactory, segmentsLengthPool, bez, shapePool, ShapeModifiers */\r\n\r\nfunction TrimModifier() {\r\n}\r\nextendPrototype([ShapeModifier], TrimModifier);\r\nTrimModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\r\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\r\n this.sValue = 0;\r\n this.eValue = 0;\r\n this.getValue = this.processKeys;\r\n this.m = data.m;\r\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\r\n};\r\n\r\nTrimModifier.prototype.addShapeToModifier = function (shapeData) {\r\n shapeData.pathsData = [];\r\n};\r\n\r\nTrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\r\n var segments = [];\r\n if (e <= 1) {\r\n segments.push({\r\n s: s,\r\n e: e,\r\n });\r\n } else if (s >= 1) {\r\n segments.push({\r\n s: s - 1,\r\n e: e - 1,\r\n });\r\n } else {\r\n segments.push({\r\n s: s,\r\n e: 1,\r\n });\r\n segments.push({\r\n s: 0,\r\n e: e - 1,\r\n });\r\n }\r\n var shapeSegments = [];\r\n var i;\r\n var len = segments.length;\r\n var segmentOb;\r\n for (i = 0; i < len; i += 1) {\r\n segmentOb = segments[i];\r\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\r\n var shapeS;\r\n var shapeE;\r\n if (segmentOb.s * totalModifierLength <= addedLength) {\r\n shapeS = 0;\r\n } else {\r\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\r\n }\r\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\r\n shapeE = 1;\r\n } else {\r\n shapeE = ((segmentOb.e * totalModifierLength - addedLength) / shapeLength);\r\n }\r\n shapeSegments.push([shapeS, shapeE]);\r\n }\r\n }\r\n if (!shapeSegments.length) {\r\n shapeSegments.push([0, 0]);\r\n }\r\n return shapeSegments;\r\n};\r\n\r\nTrimModifier.prototype.releasePathsData = function (pathsData) {\r\n var i;\r\n var len = pathsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n segmentsLengthPool.release(pathsData[i]);\r\n }\r\n pathsData.length = 0;\r\n return pathsData;\r\n};\r\n\r\nTrimModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var s;\r\n var e;\r\n if (this._mdf || _isFirstFrame) {\r\n var o = (this.o.v % 360) / 360;\r\n if (o < 0) {\r\n o += 1;\r\n }\r\n if (this.s.v > 1) {\r\n s = 1 + o;\r\n } else if (this.s.v < 0) {\r\n s = 0 + o;\r\n } else {\r\n s = this.s.v + o;\r\n }\r\n if (this.e.v > 1) {\r\n e = 1 + o;\r\n } else if (this.e.v < 0) {\r\n e = 0 + o;\r\n } else {\r\n e = this.e.v + o;\r\n }\r\n\r\n if (s > e) {\r\n var _s = s;\r\n s = e;\r\n e = _s;\r\n }\r\n s = Math.round(s * 10000) * 0.0001;\r\n e = Math.round(e * 10000) * 0.0001;\r\n this.sValue = s;\r\n this.eValue = e;\r\n } else {\r\n s = this.sValue;\r\n e = this.eValue;\r\n }\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var pathsData;\r\n var pathData;\r\n var totalShapeLength;\r\n var totalModifierLength = 0;\r\n\r\n if (e === s) {\r\n for (i = 0; i < len; i += 1) {\r\n this.shapes[i].localShapeCollection.releaseShapes();\r\n this.shapes[i].shape._mdf = true;\r\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\r\n if (this._mdf) {\r\n this.shapes[i].pathsData.length = 0;\r\n }\r\n }\r\n } else if (!((e === 1 && s === 0) || (e === 0 && s === 1))) {\r\n var segments = [];\r\n var shapeData;\r\n var localShapeCollection;\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\r\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n } else {\r\n shapePaths = shapeData.shape.paths;\r\n jLen = shapePaths._length;\r\n totalShapeLength = 0;\r\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\r\n totalShapeLength = shapeData.totalShapeLength;\r\n } else {\r\n pathsData = this.releasePathsData(shapeData.pathsData);\r\n for (j = 0; j < jLen; j += 1) {\r\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\r\n pathsData.push(pathData);\r\n totalShapeLength += pathData.totalLength;\r\n }\r\n shapeData.totalShapeLength = totalShapeLength;\r\n shapeData.pathsData = pathsData;\r\n }\r\n\r\n totalModifierLength += totalShapeLength;\r\n shapeData.shape._mdf = true;\r\n }\r\n }\r\n var shapeS = s;\r\n var shapeE = e;\r\n var addedLength = 0;\r\n var edges;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n shapeData = this.shapes[i];\r\n if (shapeData.shape._mdf) {\r\n localShapeCollection = shapeData.localShapeCollection;\r\n localShapeCollection.releaseShapes();\r\n // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\r\n if (this.m === 2 && len > 1) {\r\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\r\n addedLength += shapeData.totalShapeLength;\r\n } else {\r\n edges = [[shapeS, shapeE]];\r\n }\r\n jLen = edges.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n shapeS = edges[j][0];\r\n shapeE = edges[j][1];\r\n segments.length = 0;\r\n if (shapeE <= 1) {\r\n segments.push({\r\n s: shapeData.totalShapeLength * shapeS,\r\n e: shapeData.totalShapeLength * shapeE,\r\n });\r\n } else if (shapeS >= 1) {\r\n segments.push({\r\n s: shapeData.totalShapeLength * (shapeS - 1),\r\n e: shapeData.totalShapeLength * (shapeE - 1),\r\n });\r\n } else {\r\n segments.push({\r\n s: shapeData.totalShapeLength * shapeS,\r\n e: shapeData.totalShapeLength,\r\n });\r\n segments.push({\r\n s: 0,\r\n e: shapeData.totalShapeLength * (shapeE - 1),\r\n });\r\n }\r\n var newShapesData = this.addShapes(shapeData, segments[0]);\r\n if (segments[0].s !== segments[0].e) {\r\n if (segments.length > 1) {\r\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\r\n if (lastShapeInCollection.c) {\r\n var lastShape = newShapesData.pop();\r\n this.addPaths(newShapesData, localShapeCollection);\r\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\r\n } else {\r\n this.addPaths(newShapesData, localShapeCollection);\r\n newShapesData = this.addShapes(shapeData, segments[1]);\r\n }\r\n }\r\n this.addPaths(newShapesData, localShapeCollection);\r\n }\r\n }\r\n shapeData.shape.paths = localShapeCollection;\r\n }\r\n }\r\n } else if (this._mdf) {\r\n for (i = 0; i < len; i += 1) {\r\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\r\n // Don't remove this even if it's losing cached info.\r\n this.shapes[i].pathsData.length = 0;\r\n this.shapes[i].shape._mdf = true;\r\n }\r\n }\r\n};\r\n\r\nTrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\r\n var i;\r\n var len = newPaths.length;\r\n for (i = 0; i < len; i += 1) {\r\n localShapeCollection.addShape(newPaths[i]);\r\n }\r\n};\r\n\r\nTrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\r\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\r\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\r\n if (newShape) {\r\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\r\n }\r\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\r\n};\r\n\r\nTrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\r\n shapePath.setXYAt(points[1], points[5], 'o', pos);\r\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\r\n if (newShape) {\r\n shapePath.setXYAt(points[0], points[4], 'v', pos);\r\n }\r\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\r\n};\r\n\r\nTrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\r\n var pathsData = shapeData.pathsData;\r\n var shapePaths = shapeData.shape.paths.shapes;\r\n var i;\r\n var len = shapeData.shape.paths._length;\r\n var j;\r\n var jLen;\r\n var addedLength = 0;\r\n var currentLengthData;\r\n var segmentCount;\r\n var lengths;\r\n var segment;\r\n var shapes = [];\r\n var initPos;\r\n var newShape = true;\r\n if (!shapePath) {\r\n shapePath = shapePool.newElement();\r\n segmentCount = 0;\r\n initPos = 0;\r\n } else {\r\n segmentCount = shapePath._length;\r\n initPos = shapePath._length;\r\n }\r\n shapes.push(shapePath);\r\n for (i = 0; i < len; i += 1) {\r\n lengths = pathsData[i].lengths;\r\n shapePath.c = shapePaths[i].c;\r\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\r\n for (j = 1; j < jLen; j += 1) {\r\n currentLengthData = lengths[j - 1];\r\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\r\n addedLength += currentLengthData.addedLength;\r\n shapePath.c = false;\r\n } else if (addedLength > shapeSegment.e) {\r\n shapePath.c = false;\r\n break;\r\n } else {\r\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\r\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\r\n newShape = false;\r\n } else {\r\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\r\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);\r\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n newShape = false;\r\n shapePath.c = false;\r\n }\r\n addedLength += currentLengthData.addedLength;\r\n segmentCount += 1;\r\n }\r\n }\r\n if (shapePaths[i].c && lengths.length) {\r\n currentLengthData = lengths[j - 1];\r\n if (addedLength <= shapeSegment.e) {\r\n var segmentLength = lengths[j - 1].addedLength;\r\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\r\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\r\n newShape = false;\r\n } else {\r\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\r\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);\r\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n newShape = false;\r\n shapePath.c = false;\r\n }\r\n } else {\r\n shapePath.c = false;\r\n }\r\n addedLength += currentLengthData.addedLength;\r\n segmentCount += 1;\r\n }\r\n if (shapePath._length) {\r\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\r\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\r\n }\r\n if (addedLength > shapeSegment.e) {\r\n break;\r\n }\r\n if (i < len - 1) {\r\n shapePath = shapePool.newElement();\r\n newShape = true;\r\n shapes.push(shapePath);\r\n segmentCount = 0;\r\n }\r\n }\r\n return shapes;\r\n};\r\n\r\nShapeModifiers.registerModifier('tm', TrimModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, PropertyFactory, shapePool, roundCorner, ShapeModifiers */\r\n\r\nfunction RoundCornersModifier() {}\r\nextendPrototype([ShapeModifier], RoundCornersModifier);\r\nRoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\r\n this._isAnimated = !!this.rd.effectsSequence.length;\r\n};\r\n\r\nRoundCornersModifier.prototype.processPath = function (path, round) {\r\n var clonedPath = shapePool.newElement();\r\n clonedPath.c = path.c;\r\n var i;\r\n var len = path._length;\r\n var currentV;\r\n var currentI;\r\n var currentO;\r\n var closerV;\r\n var distance;\r\n var newPosPerc;\r\n var index = 0;\r\n var vX;\r\n var vY;\r\n var oX;\r\n var oY;\r\n var iX;\r\n var iY;\r\n for (i = 0; i < len; i += 1) {\r\n currentV = path.v[i];\r\n currentO = path.o[i];\r\n currentI = path.i[i];\r\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\r\n if ((i === 0 || i === len - 1) && !path.c) {\r\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\r\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\r\n index += 1;\r\n } else {\r\n if (i === 0) {\r\n closerV = path.v[len - 1];\r\n } else {\r\n closerV = path.v[i - 1];\r\n }\r\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\r\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\r\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\r\n vX = iX;\r\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\r\n vY = iY;\r\n oX = vX - (vX - currentV[0]) * roundCorner;\r\n oY = vY - (vY - currentV[1]) * roundCorner;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\r\n index += 1;\r\n\r\n if (i === len - 1) {\r\n closerV = path.v[0];\r\n } else {\r\n closerV = path.v[i + 1];\r\n }\r\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\r\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\r\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\r\n vX = oX;\r\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\r\n vY = oY;\r\n iX = vX - (vX - currentV[0]) * roundCorner;\r\n iY = vY - (vY - currentV[1]) * roundCorner;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\r\n index += 1;\r\n }\r\n } else {\r\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\r\n index += 1;\r\n }\r\n }\r\n return clonedPath;\r\n};\r\n\r\nRoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var rd = this.rd.v;\r\n\r\n if (rd !== 0) {\r\n var shapeData;\r\n var localShapeCollection;\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n localShapeCollection.releaseShapes();\r\n shapeData.shape._mdf = true;\r\n shapePaths = shapeData.shape.paths.shapes;\r\n jLen = shapeData.shape.paths._length;\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\r\n }\r\n }\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n};\r\n\r\nShapeModifiers.registerModifier('rd', RoundCornersModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, PropertyFactory, shapePool, ShapeModifiers */\r\n\r\nfunction PuckerAndBloatModifier() {}\r\nextendPrototype([ShapeModifier], PuckerAndBloatModifier);\r\nPuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\r\n this._isAnimated = !!this.amount.effectsSequence.length;\r\n};\r\n\r\nPuckerAndBloatModifier.prototype.processPath = function (path, amount) {\r\n var percent = amount / 100;\r\n var centerPoint = [0, 0];\r\n var pathLength = path._length;\r\n var i = 0;\r\n for (i = 0; i < pathLength; i += 1) {\r\n centerPoint[0] += path.v[i][0];\r\n centerPoint[1] += path.v[i][1];\r\n }\r\n centerPoint[0] /= pathLength;\r\n centerPoint[1] /= pathLength;\r\n var clonedPath = shapePool.newElement();\r\n clonedPath.c = path.c;\r\n var vX;\r\n var vY;\r\n var oX;\r\n var oY;\r\n var iX;\r\n var iY;\r\n for (i = 0; i < pathLength; i += 1) {\r\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\r\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\r\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\r\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\r\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\r\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\r\n }\r\n return clonedPath;\r\n};\r\n\r\nPuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var amount = this.amount.v;\r\n\r\n if (amount !== 0) {\r\n var shapeData;\r\n var localShapeCollection;\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n localShapeCollection.releaseShapes();\r\n shapeData.shape._mdf = true;\r\n shapePaths = shapeData.shape.paths.shapes;\r\n jLen = shapeData.shape.paths._length;\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\r\n }\r\n }\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n};\r\nShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, TransformPropertyFactory, PropertyFactory, Matrix, ShapeModifiers */\r\n\r\nfunction RepeaterModifier() {}\r\nextendPrototype([ShapeModifier], RepeaterModifier);\r\n\r\nRepeaterModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\r\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\r\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\r\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\r\n this.data = data;\r\n if (!this.dynamicProperties.length) {\r\n this.getValue(true);\r\n }\r\n this._isAnimated = !!this.dynamicProperties.length;\r\n this.pMatrix = new Matrix();\r\n this.rMatrix = new Matrix();\r\n this.sMatrix = new Matrix();\r\n this.tMatrix = new Matrix();\r\n this.matrix = new Matrix();\r\n};\r\n\r\nRepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\r\n var dir = inv ? -1 : 1;\r\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\r\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\r\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\r\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\r\n rMatrix.rotate(-transform.r.v * dir * perc);\r\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\r\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\r\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\r\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\r\n};\r\n\r\nRepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\r\n this.elem = elem;\r\n this.arr = arr;\r\n this.pos = pos;\r\n this.elemsData = elemsData;\r\n this._currentCopies = 0;\r\n this._elements = [];\r\n this._groups = [];\r\n this.frameId = -1;\r\n this.initDynamicPropertyContainer(elem);\r\n this.initModifierProperties(elem, arr[pos]);\r\n while (pos > 0) {\r\n pos -= 1;\r\n // this._elements.unshift(arr.splice(pos,1)[0]);\r\n this._elements.unshift(arr[pos]);\r\n }\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.getValue(true);\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.resetElements = function (elements) {\r\n var i;\r\n var len = elements.length;\r\n for (i = 0; i < len; i += 1) {\r\n elements[i]._processed = false;\r\n if (elements[i].ty === 'gr') {\r\n this.resetElements(elements[i].it);\r\n }\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.cloneElements = function (elements) {\r\n var newElements = JSON.parse(JSON.stringify(elements));\r\n this.resetElements(newElements);\r\n return newElements;\r\n};\r\n\r\nRepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\r\n var i;\r\n var len = elements.length;\r\n for (i = 0; i < len; i += 1) {\r\n elements[i]._render = renderFlag;\r\n if (elements[i].ty === 'gr') {\r\n this.changeGroupRender(elements[i].it, renderFlag);\r\n }\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var items;\r\n var itemsTransform;\r\n var i;\r\n var dir;\r\n var cont;\r\n var hasReloaded = false;\r\n if (this._mdf || _isFirstFrame) {\r\n var copies = Math.ceil(this.c.v);\r\n if (this._groups.length < copies) {\r\n while (this._groups.length < copies) {\r\n var group = {\r\n it: this.cloneElements(this._elements),\r\n ty: 'gr',\r\n };\r\n group.it.push({\r\n a: { a: 0, ix: 1, k: [0, 0] }, nm: 'Transform', o: { a: 0, ix: 7, k: 100 }, p: { a: 0, ix: 2, k: [0, 0] }, r: { a: 1, ix: 6, k: [{ s: 0, e: 0, t: 0 }, { s: 0, e: 0, t: 1 }] }, s: { a: 0, ix: 3, k: [100, 100] }, sa: { a: 0, ix: 5, k: 0 }, sk: { a: 0, ix: 4, k: 0 }, ty: 'tr',\r\n });\r\n\r\n this.arr.splice(0, 0, group);\r\n this._groups.splice(0, 0, group);\r\n this._currentCopies += 1;\r\n }\r\n this.elem.reloadShapes();\r\n hasReloaded = true;\r\n }\r\n cont = 0;\r\n var renderFlag;\r\n for (i = 0; i <= this._groups.length - 1; i += 1) {\r\n renderFlag = cont < copies;\r\n this._groups[i]._render = renderFlag;\r\n this.changeGroupRender(this._groups[i].it, renderFlag);\r\n if (!renderFlag) {\r\n var elems = this.elemsData[i].it;\r\n var transformData = elems[elems.length - 1];\r\n if (transformData.transform.op.v !== 0) {\r\n transformData.transform.op._mdf = true;\r\n transformData.transform.op.v = 0;\r\n } else {\r\n transformData.transform.op._mdf = false;\r\n }\r\n }\r\n cont += 1;\r\n }\r\n\r\n this._currentCopies = copies;\r\n /// /\r\n\r\n var offset = this.o.v;\r\n var offsetModulo = offset % 1;\r\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\r\n var pProps = this.pMatrix.props;\r\n var rProps = this.rMatrix.props;\r\n var sProps = this.sMatrix.props;\r\n this.pMatrix.reset();\r\n this.rMatrix.reset();\r\n this.sMatrix.reset();\r\n this.tMatrix.reset();\r\n this.matrix.reset();\r\n var iteration = 0;\r\n\r\n if (offset > 0) {\r\n while (iteration < roundOffset) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\r\n iteration += 1;\r\n }\r\n if (offsetModulo) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\r\n iteration += offsetModulo;\r\n }\r\n } else if (offset < 0) {\r\n while (iteration > roundOffset) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\r\n iteration -= 1;\r\n }\r\n if (offsetModulo) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\r\n iteration -= offsetModulo;\r\n }\r\n }\r\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\r\n dir = this.data.m === 1 ? 1 : -1;\r\n cont = this._currentCopies;\r\n var j;\r\n var jLen;\r\n while (cont) {\r\n items = this.elemsData[i].it;\r\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\r\n jLen = itemsTransform.length;\r\n items[items.length - 1].transform.mProps._mdf = true;\r\n items[items.length - 1].transform.op._mdf = true;\r\n items[items.length - 1].transform.op.v = this._currentCopies === 1\r\n ? this.so.v\r\n : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\r\n\r\n if (iteration !== 0) {\r\n if ((i !== 0 && dir === 1) || (i !== this._currentCopies - 1 && dir === -1)) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\r\n }\r\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\r\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\r\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsTransform[j] = this.matrix.props[j];\r\n }\r\n this.matrix.reset();\r\n } else {\r\n this.matrix.reset();\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsTransform[j] = this.matrix.props[j];\r\n }\r\n }\r\n iteration += 1;\r\n cont -= 1;\r\n i += dir;\r\n }\r\n } else {\r\n cont = this._currentCopies;\r\n i = 0;\r\n dir = 1;\r\n while (cont) {\r\n items = this.elemsData[i].it;\r\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\r\n items[items.length - 1].transform.mProps._mdf = false;\r\n items[items.length - 1].transform.op._mdf = false;\r\n cont -= 1;\r\n i += dir;\r\n }\r\n }\r\n return hasReloaded;\r\n};\r\n\r\nRepeaterModifier.prototype.addShape = function () {};\r\n\r\nShapeModifiers.registerModifier('rp', RepeaterModifier);\r\n\r\n/* global createSizedArray, shapePool */\r\n\r\nfunction ShapeCollection() {\r\n this._length = 0;\r\n this._maxLength = 4;\r\n this.shapes = createSizedArray(this._maxLength);\r\n}\r\n\r\nShapeCollection.prototype.addShape = function (shapeData) {\r\n if (this._length === this._maxLength) {\r\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\r\n this._maxLength *= 2;\r\n }\r\n this.shapes[this._length] = shapeData;\r\n this._length += 1;\r\n};\r\n\r\nShapeCollection.prototype.releaseShapes = function () {\r\n var i;\r\n for (i = 0; i < this._length; i += 1) {\r\n shapePool.release(this.shapes[i]);\r\n }\r\n this._length = 0;\r\n};\r\n\r\n/* global createSizedArray, createTypedArray, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction DashProperty(elem, data, renderer, container) {\r\n this.elem = elem;\r\n this.frameId = -1;\r\n this.dataProps = createSizedArray(data.length);\r\n this.renderer = renderer;\r\n this.k = false;\r\n this.dashStr = '';\r\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\r\n this.dashoffset = createTypedArray('float32', 1);\r\n this.initDynamicPropertyContainer(container);\r\n var i;\r\n var len = data.length || 0;\r\n var prop;\r\n for (i = 0; i < len; i += 1) {\r\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\r\n this.k = prop.k || this.k;\r\n this.dataProps[i] = { n: data[i].n, p: prop };\r\n }\r\n if (!this.k) {\r\n this.getValue(true);\r\n }\r\n this._isAnimated = this.k;\r\n}\r\n\r\nDashProperty.prototype.getValue = function (forceRender) {\r\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n this._mdf = this._mdf || forceRender;\r\n if (this._mdf) {\r\n var i = 0;\r\n var len = this.dataProps.length;\r\n if (this.renderer === 'svg') {\r\n this.dashStr = '';\r\n }\r\n for (i = 0; i < len; i += 1) {\r\n if (this.dataProps[i].n !== 'o') {\r\n if (this.renderer === 'svg') {\r\n this.dashStr += ' ' + this.dataProps[i].p.v;\r\n } else {\r\n this.dashArray[i] = this.dataProps[i].p.v;\r\n }\r\n } else {\r\n this.dashoffset[0] = this.dataProps[i].p.v;\r\n }\r\n }\r\n }\r\n};\r\nextendPrototype([DynamicPropertyContainer], DashProperty);\r\n\r\n/* global createTypedArray, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\nfunction GradientProperty(elem, data, container) {\r\n this.data = data;\r\n this.c = createTypedArray('uint8c', data.p * 4);\r\n var cLength = data.k.k[0].s ? (data.k.k[0].s.length - data.p * 4) : data.k.k.length - data.p * 4;\r\n this.o = createTypedArray('float32', cLength);\r\n this._cmdf = false;\r\n this._omdf = false;\r\n this._collapsable = this.checkCollapsable();\r\n this._hasOpacity = cLength;\r\n this.initDynamicPropertyContainer(container);\r\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\r\n this.k = this.prop.k;\r\n this.getValue(true);\r\n}\r\n\r\nGradientProperty.prototype.comparePoints = function (values, points) {\r\n var i = 0;\r\n var len = this.o.length / 2;\r\n var diff;\r\n while (i < len) {\r\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\r\n if (diff > 0.01) {\r\n return false;\r\n }\r\n i += 1;\r\n }\r\n return true;\r\n};\r\n\r\nGradientProperty.prototype.checkCollapsable = function () {\r\n if (this.o.length / 2 !== this.c.length / 4) {\r\n return false;\r\n }\r\n if (this.data.k.k[0].s) {\r\n var i = 0;\r\n var len = this.data.k.k.length;\r\n while (i < len) {\r\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\r\n return false;\r\n }\r\n i += 1;\r\n }\r\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\r\n return false;\r\n }\r\n return true;\r\n};\r\n\r\nGradientProperty.prototype.getValue = function (forceRender) {\r\n this.prop.getValue();\r\n this._mdf = false;\r\n this._cmdf = false;\r\n this._omdf = false;\r\n if (this.prop._mdf || forceRender) {\r\n var i;\r\n var len = this.data.p * 4;\r\n var mult;\r\n var val;\r\n for (i = 0; i < len; i += 1) {\r\n mult = i % 4 === 0 ? 100 : 255;\r\n val = Math.round(this.prop.v[i] * mult);\r\n if (this.c[i] !== val) {\r\n this.c[i] = val;\r\n this._cmdf = !forceRender;\r\n }\r\n }\r\n if (this.o.length) {\r\n len = this.prop.v.length;\r\n for (i = this.data.p * 4; i < len; i += 1) {\r\n mult = i % 2 === 0 ? 100 : 1;\r\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\r\n if (this.o[i - this.data.p * 4] !== val) {\r\n this.o[i - this.data.p * 4] = val;\r\n this._omdf = !forceRender;\r\n }\r\n }\r\n }\r\n this._mdf = !forceRender;\r\n }\r\n};\r\n\r\nextendPrototype([DynamicPropertyContainer], GradientProperty);\r\n\r\n/* exported buildShapeString */\r\n\r\nvar buildShapeString = function (pathNodes, length, closed, mat) {\r\n if (length === 0) {\r\n return '';\r\n }\r\n var _o = pathNodes.o;\r\n var _i = pathNodes.i;\r\n var _v = pathNodes.v;\r\n var i;\r\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\r\n for (i = 1; i < length; i += 1) {\r\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\r\n }\r\n if (closed && length) {\r\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\r\n shapeString += 'z';\r\n }\r\n return shapeString;\r\n};\r\n\r\n/* global Howl */\r\n/* exported audioControllerFactory */\r\n\r\nvar audioControllerFactory = (function () {\r\n function AudioController(audioFactory) {\r\n this.audios = [];\r\n this.audioFactory = audioFactory;\r\n this._volume = 1;\r\n this._isMuted = false;\r\n }\r\n\r\n AudioController.prototype = {\r\n addAudio: function (audio) {\r\n this.audios.push(audio);\r\n },\r\n pause: function () {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].pause();\r\n }\r\n },\r\n resume: function () {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].resume();\r\n }\r\n },\r\n setRate: function (rateValue) {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].setRate(rateValue);\r\n }\r\n },\r\n createAudio: function (assetPath) {\r\n if (this.audioFactory) {\r\n return this.audioFactory(assetPath);\r\n } if (Howl) {\r\n return new Howl({\r\n src: [assetPath],\r\n });\r\n }\r\n return {\r\n isPlaying: false,\r\n play: function () { this.isPlaying = true; },\r\n seek: function () { this.isPlaying = false; },\r\n playing: function () {},\r\n rate: function () {},\r\n setVolume: function () {},\r\n };\r\n },\r\n setAudioFactory: function (audioFactory) {\r\n this.audioFactory = audioFactory;\r\n },\r\n setVolume: function (value) {\r\n this._volume = value;\r\n this._updateVolume();\r\n },\r\n mute: function () {\r\n this._isMuted = true;\r\n this._updateVolume();\r\n },\r\n unmute: function () {\r\n this._isMuted = false;\r\n this._updateVolume();\r\n },\r\n getVolume: function () {\r\n return this._volume;\r\n },\r\n _updateVolume: function () {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\r\n }\r\n },\r\n };\r\n\r\n return function () {\r\n return new AudioController();\r\n };\r\n}());\r\n\r\n/* global createTag, createNS, isSafari, dataManager */\r\n/* exported ImagePreloader */\r\n\r\nvar ImagePreloader = (function () {\r\n var proxyImage = (function () {\r\n var canvas = createTag('canvas');\r\n canvas.width = 1;\r\n canvas.height = 1;\r\n var ctx = canvas.getContext('2d');\r\n ctx.fillStyle = 'rgba(0,0,0,0)';\r\n ctx.fillRect(0, 0, 1, 1);\r\n return canvas;\r\n }());\r\n\r\n function imageLoaded() {\r\n this.loadedAssets += 1;\r\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\r\n if (this.imagesLoadedCb) {\r\n this.imagesLoadedCb(null);\r\n }\r\n }\r\n }\r\n function footageLoaded() {\r\n this.loadedFootagesCount += 1;\r\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\r\n if (this.imagesLoadedCb) {\r\n this.imagesLoadedCb(null);\r\n }\r\n }\r\n }\r\n\r\n function getAssetsPath(assetData, assetsPath, originalPath) {\r\n var path = '';\r\n if (assetData.e) {\r\n path = assetData.p;\r\n } else if (assetsPath) {\r\n var imagePath = assetData.p;\r\n if (imagePath.indexOf('images/') !== -1) {\r\n imagePath = imagePath.split('/')[1];\r\n }\r\n path = assetsPath + imagePath;\r\n } else {\r\n path = originalPath;\r\n path += assetData.u ? assetData.u : '';\r\n path += assetData.p;\r\n }\r\n return path;\r\n }\r\n\r\n function testImageLoaded(img) {\r\n var _count = 0;\r\n var intervalId = setInterval(function () {\r\n var box = img.getBBox();\r\n if (box.width || _count > 500) {\r\n this._imageLoaded();\r\n clearInterval(intervalId);\r\n }\r\n _count += 1;\r\n }.bind(this), 50);\r\n }\r\n\r\n function createImageData(assetData) {\r\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\r\n var img = createNS('image');\r\n if (isSafari) {\r\n this.testImageLoaded(img);\r\n } else {\r\n img.addEventListener('load', this._imageLoaded, false);\r\n }\r\n img.addEventListener('error', function () {\r\n ob.img = proxyImage;\r\n this._imageLoaded();\r\n }.bind(this), false);\r\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\r\n if (this._elementHelper.append) {\r\n this._elementHelper.append(img);\r\n } else {\r\n this._elementHelper.appendChild(img);\r\n }\r\n var ob = {\r\n img: img,\r\n assetData: assetData,\r\n };\r\n return ob;\r\n }\r\n\r\n function createImgData(assetData) {\r\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\r\n var img = createTag('img');\r\n img.crossOrigin = 'anonymous';\r\n img.addEventListener('load', this._imageLoaded, false);\r\n img.addEventListener('error', function () {\r\n ob.img = proxyImage;\r\n this._imageLoaded();\r\n }.bind(this), false);\r\n img.src = path;\r\n var ob = {\r\n img: img,\r\n assetData: assetData,\r\n };\r\n return ob;\r\n }\r\n\r\n function createFootageData(data) {\r\n var ob = {\r\n assetData: data,\r\n };\r\n var path = getAssetsPath(data, this.assetsPath, this.path);\r\n dataManager.loadData(path, function (footageData) {\r\n ob.img = footageData;\r\n this._footageLoaded();\r\n }.bind(this), function () {\r\n ob.img = {};\r\n this._footageLoaded();\r\n }.bind(this));\r\n return ob;\r\n }\r\n\r\n function loadAssets(assets, cb) {\r\n this.imagesLoadedCb = cb;\r\n var i;\r\n var len = assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (!assets[i].layers) {\r\n if (!assets[i].t || assets[i].t === 'seq') {\r\n this.totalImages += 1;\r\n this.images.push(this._createImageData(assets[i]));\r\n } else if (assets[i].t === 3) {\r\n this.totalFootages += 1;\r\n this.images.push(this.createFootageData(assets[i]));\r\n }\r\n }\r\n }\r\n }\r\n\r\n function setPath(path) {\r\n this.path = path || '';\r\n }\r\n\r\n function setAssetsPath(path) {\r\n this.assetsPath = path || '';\r\n }\r\n\r\n function getAsset(assetData) {\r\n var i = 0;\r\n var len = this.images.length;\r\n while (i < len) {\r\n if (this.images[i].assetData === assetData) {\r\n return this.images[i].img;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n\r\n function destroy() {\r\n this.imagesLoadedCb = null;\r\n this.images.length = 0;\r\n }\r\n\r\n function loadedImages() {\r\n return this.totalImages === this.loadedAssets;\r\n }\r\n\r\n function loadedFootages() {\r\n return this.totalFootages === this.loadedFootagesCount;\r\n }\r\n\r\n function setCacheType(type, elementHelper) {\r\n if (type === 'svg') {\r\n this._elementHelper = elementHelper;\r\n this._createImageData = this.createImageData.bind(this);\r\n } else {\r\n this._createImageData = this.createImgData.bind(this);\r\n }\r\n }\r\n\r\n function ImagePreloaderFactory() {\r\n this._imageLoaded = imageLoaded.bind(this);\r\n this._footageLoaded = footageLoaded.bind(this);\r\n this.testImageLoaded = testImageLoaded.bind(this);\r\n this.createFootageData = createFootageData.bind(this);\r\n this.assetsPath = '';\r\n this.path = '';\r\n this.totalImages = 0;\r\n this.totalFootages = 0;\r\n this.loadedAssets = 0;\r\n this.loadedFootagesCount = 0;\r\n this.imagesLoadedCb = null;\r\n this.images = [];\r\n }\r\n\r\n ImagePreloaderFactory.prototype = {\r\n loadAssets: loadAssets,\r\n setAssetsPath: setAssetsPath,\r\n setPath: setPath,\r\n loadedImages: loadedImages,\r\n loadedFootages: loadedFootages,\r\n destroy: destroy,\r\n getAsset: getAsset,\r\n createImgData: createImgData,\r\n createImageData: createImageData,\r\n imageLoaded: imageLoaded,\r\n footageLoaded: footageLoaded,\r\n setCacheType: setCacheType,\r\n };\r\n\r\n return ImagePreloaderFactory;\r\n}());\r\n\r\n/* exported featureSupport */\r\n\r\nvar featureSupport = (function () {\r\n var ob = {\r\n maskType: true,\r\n };\r\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\r\n ob.maskType = false;\r\n }\r\n return ob;\r\n}());\r\n\r\n/* global createNS */\r\n/* exported filtersFactory */\r\n\r\nvar filtersFactory = (function () {\r\n var ob = {};\r\n ob.createFilter = createFilter;\r\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\r\n\r\n function createFilter(filId, skipCoordinates) {\r\n var fil = createNS('filter');\r\n fil.setAttribute('id', filId);\r\n if (skipCoordinates !== true) {\r\n fil.setAttribute('filterUnits', 'objectBoundingBox');\r\n fil.setAttribute('x', '0%');\r\n fil.setAttribute('y', '0%');\r\n fil.setAttribute('width', '100%');\r\n fil.setAttribute('height', '100%');\r\n }\r\n return fil;\r\n }\r\n\r\n function createAlphaToLuminanceFilter() {\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\r\n return feColorMatrix;\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* global createSizedArray, PropertyFactory, TextAnimatorDataProperty, bez, addHueToRGB,\r\n addSaturationToRGB, addBrightnessToRGB, LetterProps, Matrix, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction TextAnimatorProperty(textData, renderType, elem) {\r\n this._isFirstFrame = true;\r\n this._hasMaskedPath = false;\r\n this._frameId = -1;\r\n this._textData = textData;\r\n this._renderType = renderType;\r\n this._elem = elem;\r\n this._animatorsData = createSizedArray(this._textData.a.length);\r\n this._pathData = {};\r\n this._moreOptions = {\r\n alignment: {},\r\n };\r\n this.renderedLetters = [];\r\n this.lettersChangedFlag = false;\r\n this.initDynamicPropertyContainer(elem);\r\n}\r\n\r\nTextAnimatorProperty.prototype.searchProperties = function () {\r\n var i;\r\n var len = this._textData.a.length;\r\n var animatorProps;\r\n var getProp = PropertyFactory.getProp;\r\n for (i = 0; i < len; i += 1) {\r\n animatorProps = this._textData.a[i];\r\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\r\n }\r\n if (this._textData.p && 'm' in this._textData.p) {\r\n this._pathData = {\r\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\r\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\r\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\r\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\r\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\r\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m),\r\n };\r\n this._hasMaskedPath = true;\r\n } else {\r\n this._hasMaskedPath = false;\r\n }\r\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\r\n};\r\n\r\nTextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\r\n this.lettersChangedFlag = lettersChangedFlag;\r\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\r\n return;\r\n }\r\n this._isFirstFrame = false;\r\n var alignment = this._moreOptions.alignment.v;\r\n var animators = this._animatorsData;\r\n var textData = this._textData;\r\n var matrixHelper = this.mHelper;\r\n var renderType = this._renderType;\r\n var renderedLettersCount = this.renderedLetters.length;\r\n var xPos;\r\n var yPos;\r\n var i;\r\n var len;\r\n var letters = documentData.l;\r\n var pathInfo;\r\n var currentLength;\r\n var currentPoint;\r\n var segmentLength;\r\n var flag;\r\n var pointInd;\r\n var segmentInd;\r\n var prevPoint;\r\n var points;\r\n var segments;\r\n var partialLength;\r\n var totalLength;\r\n var perc;\r\n var tanAngle;\r\n var mask;\r\n if (this._hasMaskedPath) {\r\n mask = this._pathData.m;\r\n if (!this._pathData.n || this._pathData._mdf) {\r\n var paths = mask.v;\r\n if (this._pathData.r.v) {\r\n paths = paths.reverse();\r\n }\r\n // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\r\n pathInfo = {\r\n tLength: 0,\r\n segments: [],\r\n };\r\n len = paths._length - 1;\r\n var bezierData;\r\n totalLength = 0;\r\n for (i = 0; i < len; i += 1) {\r\n bezierData = bez.buildBezierData(paths.v[i],\r\n paths.v[i + 1],\r\n [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]],\r\n [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\r\n pathInfo.tLength += bezierData.segmentLength;\r\n pathInfo.segments.push(bezierData);\r\n totalLength += bezierData.segmentLength;\r\n }\r\n i = len;\r\n if (mask.v.c) {\r\n bezierData = bez.buildBezierData(paths.v[i],\r\n paths.v[0],\r\n [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]],\r\n [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\r\n pathInfo.tLength += bezierData.segmentLength;\r\n pathInfo.segments.push(bezierData);\r\n totalLength += bezierData.segmentLength;\r\n }\r\n this._pathData.pi = pathInfo;\r\n }\r\n pathInfo = this._pathData.pi;\r\n\r\n currentLength = this._pathData.f.v;\r\n segmentInd = 0;\r\n pointInd = 1;\r\n segmentLength = 0;\r\n flag = true;\r\n segments = pathInfo.segments;\r\n if (currentLength < 0 && mask.v.c) {\r\n if (pathInfo.tLength < Math.abs(currentLength)) {\r\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\r\n }\r\n segmentInd = segments.length - 1;\r\n points = segments[segmentInd].points;\r\n pointInd = points.length - 1;\r\n while (currentLength < 0) {\r\n currentLength += points[pointInd].partialLength;\r\n pointInd -= 1;\r\n if (pointInd < 0) {\r\n segmentInd -= 1;\r\n points = segments[segmentInd].points;\r\n pointInd = points.length - 1;\r\n }\r\n }\r\n }\r\n points = segments[segmentInd].points;\r\n prevPoint = points[pointInd - 1];\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n }\r\n\r\n len = letters.length;\r\n xPos = 0;\r\n yPos = 0;\r\n var yOff = documentData.finalSize * 1.2 * 0.714;\r\n var firstLine = true;\r\n var animatorProps;\r\n var animatorSelector;\r\n var j;\r\n var jLen;\r\n var letterValue;\r\n\r\n jLen = animators.length;\r\n\r\n var mult;\r\n var ind = -1;\r\n var offf;\r\n var xPathPos;\r\n var yPathPos;\r\n var initPathPos = currentLength;\r\n var initSegmentInd = segmentInd;\r\n var initPointInd = pointInd;\r\n var currentLine = -1;\r\n var elemOpacity;\r\n var sc;\r\n var sw;\r\n var fc;\r\n var k;\r\n var letterSw;\r\n var letterSc;\r\n var letterFc;\r\n var letterM = '';\r\n var letterP = this.defaultPropsArray;\r\n var letterO;\r\n\r\n //\r\n if (documentData.j === 2 || documentData.j === 1) {\r\n var animatorJustifyOffset = 0;\r\n var animatorFirstCharOffset = 0;\r\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\r\n var lastIndex = 0;\r\n var isNewLine = true;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (letters[i].n) {\r\n if (animatorJustifyOffset) {\r\n animatorJustifyOffset += animatorFirstCharOffset;\r\n }\r\n while (lastIndex < i) {\r\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\r\n lastIndex += 1;\r\n }\r\n animatorJustifyOffset = 0;\r\n isNewLine = true;\r\n } else {\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.t.propType) {\r\n if (isNewLine && documentData.j === 2) {\r\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\r\n }\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\r\n } else {\r\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\r\n }\r\n }\r\n }\r\n isNewLine = false;\r\n }\r\n }\r\n if (animatorJustifyOffset) {\r\n animatorJustifyOffset += animatorFirstCharOffset;\r\n }\r\n while (lastIndex < i) {\r\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\r\n lastIndex += 1;\r\n }\r\n }\r\n //\r\n\r\n for (i = 0; i < len; i += 1) {\r\n matrixHelper.reset();\r\n elemOpacity = 1;\r\n if (letters[i].n) {\r\n xPos = 0;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n currentLength = initPathPos;\r\n firstLine = false;\r\n if (this._hasMaskedPath) {\r\n segmentInd = initSegmentInd;\r\n pointInd = initPointInd;\r\n points = segments[segmentInd].points;\r\n prevPoint = points[pointInd - 1];\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n segmentLength = 0;\r\n }\r\n letterM = '';\r\n letterFc = '';\r\n letterSw = '';\r\n letterO = '';\r\n letterP = this.defaultPropsArray;\r\n } else {\r\n if (this._hasMaskedPath) {\r\n if (currentLine !== letters[i].line) {\r\n switch (documentData.j) {\r\n case 1:\r\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\r\n break;\r\n case 2:\r\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\r\n break;\r\n default:\r\n break;\r\n }\r\n currentLine = letters[i].line;\r\n }\r\n if (ind !== letters[i].ind) {\r\n if (letters[ind]) {\r\n currentLength += letters[ind].extra;\r\n }\r\n currentLength += letters[i].an / 2;\r\n ind = letters[i].ind;\r\n }\r\n currentLength += (alignment[0] * letters[i].an) * 0.005;\r\n var animatorOffset = 0;\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.p.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n animatorOffset += animatorProps.p.v[0] * mult[0];\r\n } else {\r\n animatorOffset += animatorProps.p.v[0] * mult;\r\n }\r\n }\r\n if (animatorProps.a.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n animatorOffset += animatorProps.a.v[0] * mult[0];\r\n } else {\r\n animatorOffset += animatorProps.a.v[0] * mult;\r\n }\r\n }\r\n }\r\n flag = true;\r\n // Force alignment only works with a single line for now\r\n if (this._pathData.a.v) {\r\n currentLength = letters[0].an * 0.5 + ((totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind) / (len - 1);\r\n currentLength += this._pathData.f.v;\r\n }\r\n while (flag) {\r\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\r\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\r\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\r\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\r\n matrixHelper.translate((-alignment[0] * letters[i].an) * 0.005, -(alignment[1] * yOff) * 0.01);\r\n flag = false;\r\n } else if (points) {\r\n segmentLength += currentPoint.partialLength;\r\n pointInd += 1;\r\n if (pointInd >= points.length) {\r\n pointInd = 0;\r\n segmentInd += 1;\r\n if (!segments[segmentInd]) {\r\n if (mask.v.c) {\r\n pointInd = 0;\r\n segmentInd = 0;\r\n points = segments[segmentInd].points;\r\n } else {\r\n segmentLength -= currentPoint.partialLength;\r\n points = null;\r\n }\r\n } else {\r\n points = segments[segmentInd].points;\r\n }\r\n }\r\n if (points) {\r\n prevPoint = currentPoint;\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n }\r\n }\r\n }\r\n offf = letters[i].an / 2 - letters[i].add;\r\n matrixHelper.translate(-offf, 0, 0);\r\n } else {\r\n offf = letters[i].an / 2 - letters[i].add;\r\n matrixHelper.translate(-offf, 0, 0);\r\n\r\n // Grouping alignment\r\n matrixHelper.translate((-alignment[0] * letters[i].an) * 0.005, (-alignment[1] * yOff) * 0.01, 0);\r\n }\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.t.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\r\n if (xPos !== 0 || documentData.j !== 0) {\r\n if (this._hasMaskedPath) {\r\n if (mult.length) {\r\n currentLength += animatorProps.t.v * mult[0];\r\n } else {\r\n currentLength += animatorProps.t.v * mult;\r\n }\r\n } else if (mult.length) {\r\n xPos += animatorProps.t.v * mult[0];\r\n } else {\r\n xPos += animatorProps.t.v * mult;\r\n }\r\n }\r\n }\r\n }\r\n if (documentData.strokeWidthAnim) {\r\n sw = documentData.sw || 0;\r\n }\r\n if (documentData.strokeColorAnim) {\r\n if (documentData.sc) {\r\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\r\n } else {\r\n sc = [0, 0, 0];\r\n }\r\n }\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\r\n }\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.a.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n if (mult.length) {\r\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\r\n } else {\r\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\r\n }\r\n }\r\n }\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.s.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n matrixHelper.scale(1 + ((animatorProps.s.v[0] - 1) * mult[0]), 1 + ((animatorProps.s.v[1] - 1) * mult[1]), 1);\r\n } else {\r\n matrixHelper.scale(1 + ((animatorProps.s.v[0] - 1) * mult), 1 + ((animatorProps.s.v[1] - 1) * mult), 1);\r\n }\r\n }\r\n }\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (animatorProps.sk.propType) {\r\n if (mult.length) {\r\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\r\n } else {\r\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\r\n }\r\n }\r\n if (animatorProps.r.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\r\n } else {\r\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\r\n }\r\n }\r\n if (animatorProps.ry.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\r\n } else {\r\n matrixHelper.rotateY(animatorProps.ry.v * mult);\r\n }\r\n }\r\n if (animatorProps.rx.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\r\n } else {\r\n matrixHelper.rotateX(animatorProps.rx.v * mult);\r\n }\r\n }\r\n if (animatorProps.o.propType) {\r\n if (mult.length) {\r\n elemOpacity += ((animatorProps.o.v) * mult[0] - elemOpacity) * mult[0];\r\n } else {\r\n elemOpacity += ((animatorProps.o.v) * mult - elemOpacity) * mult;\r\n }\r\n }\r\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\r\n if (mult.length) {\r\n sw += animatorProps.sw.v * mult[0];\r\n } else {\r\n sw += animatorProps.sw.v * mult;\r\n }\r\n }\r\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\r\n for (k = 0; k < 3; k += 1) {\r\n if (mult.length) {\r\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\r\n } else {\r\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\r\n }\r\n }\r\n }\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n if (animatorProps.fc.propType) {\r\n for (k = 0; k < 3; k += 1) {\r\n if (mult.length) {\r\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\r\n } else {\r\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\r\n }\r\n }\r\n }\r\n if (animatorProps.fh.propType) {\r\n if (mult.length) {\r\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\r\n } else {\r\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\r\n }\r\n }\r\n if (animatorProps.fs.propType) {\r\n if (mult.length) {\r\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\r\n } else {\r\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\r\n }\r\n }\r\n if (animatorProps.fb.propType) {\r\n if (mult.length) {\r\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\r\n } else {\r\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n\r\n if (animatorProps.p.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (this._hasMaskedPath) {\r\n if (mult.length) {\r\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\r\n } else {\r\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\r\n }\r\n } else if (mult.length) {\r\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\r\n } else {\r\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\r\n }\r\n }\r\n }\r\n if (documentData.strokeWidthAnim) {\r\n letterSw = sw < 0 ? 0 : sw;\r\n }\r\n if (documentData.strokeColorAnim) {\r\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\r\n }\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\r\n }\r\n\r\n if (this._hasMaskedPath) {\r\n matrixHelper.translate(0, -documentData.ls);\r\n\r\n matrixHelper.translate(0, (alignment[1] * yOff) * 0.01 + yPos, 0);\r\n if (this._pathData.p.v) {\r\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\r\n var rot = (Math.atan(tanAngle) * 180) / Math.PI;\r\n if (currentPoint.point[0] < prevPoint.point[0]) {\r\n rot += 180;\r\n }\r\n matrixHelper.rotate((-rot * Math.PI) / 180);\r\n }\r\n matrixHelper.translate(xPathPos, yPathPos, 0);\r\n currentLength -= (alignment[0] * letters[i].an) * 0.005;\r\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\r\n currentLength += letters[i].an / 2;\r\n currentLength += (documentData.tr * 0.001) * documentData.finalSize;\r\n }\r\n } else {\r\n matrixHelper.translate(xPos, yPos, 0);\r\n\r\n if (documentData.ps) {\r\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\r\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\r\n }\r\n switch (documentData.j) {\r\n case 1:\r\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\r\n break;\r\n case 2:\r\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\r\n break;\r\n default:\r\n break;\r\n }\r\n matrixHelper.translate(0, -documentData.ls);\r\n matrixHelper.translate(offf, 0, 0);\r\n matrixHelper.translate((alignment[0] * letters[i].an) * 0.005, (alignment[1] * yOff) * 0.01, 0);\r\n xPos += letters[i].l + (documentData.tr * 0.001) * documentData.finalSize;\r\n }\r\n if (renderType === 'html') {\r\n letterM = matrixHelper.toCSS();\r\n } else if (renderType === 'svg') {\r\n letterM = matrixHelper.to2dCSS();\r\n } else {\r\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\r\n }\r\n letterO = elemOpacity;\r\n }\r\n\r\n if (renderedLettersCount <= i) {\r\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\r\n this.renderedLetters.push(letterValue);\r\n renderedLettersCount += 1;\r\n this.lettersChangedFlag = true;\r\n } else {\r\n letterValue = this.renderedLetters[i];\r\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\r\n }\r\n }\r\n};\r\n\r\nTextAnimatorProperty.prototype.getValue = function () {\r\n if (this._elem.globalData.frameId === this._frameId) {\r\n return;\r\n }\r\n this._frameId = this._elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n};\r\n\r\nTextAnimatorProperty.prototype.mHelper = new Matrix();\r\nTextAnimatorProperty.prototype.defaultPropsArray = [];\r\nextendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\r\n\r\n/* global PropertyFactory, degToRads, TextSelectorProp */\r\n/* exported TextAnimatorDataProperty */\r\n\r\nfunction TextAnimatorDataProperty(elem, animatorProps, container) {\r\n var defaultData = { propType: false };\r\n var getProp = PropertyFactory.getProp;\r\n var textAnimatorAnimatables = animatorProps.a;\r\n this.a = {\r\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\r\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\r\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\r\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\r\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\r\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\r\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\r\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\r\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\r\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\r\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\r\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\r\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\r\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\r\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\r\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData,\r\n };\r\n\r\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\r\n this.s.t = animatorProps.s.t;\r\n}\r\n\r\nfunction LetterProps(o, sw, sc, fc, m, p) {\r\n this.o = o;\r\n this.sw = sw;\r\n this.sc = sc;\r\n this.fc = fc;\r\n this.m = m;\r\n this.p = p;\r\n this._mdf = {\r\n o: true,\r\n sw: !!sw,\r\n sc: !!sc,\r\n fc: !!fc,\r\n m: true,\r\n p: true,\r\n };\r\n}\r\n\r\nLetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\r\n this._mdf.o = false;\r\n this._mdf.sw = false;\r\n this._mdf.sc = false;\r\n this._mdf.fc = false;\r\n this._mdf.m = false;\r\n this._mdf.p = false;\r\n var updated = false;\r\n\r\n if (this.o !== o) {\r\n this.o = o;\r\n this._mdf.o = true;\r\n updated = true;\r\n }\r\n if (this.sw !== sw) {\r\n this.sw = sw;\r\n this._mdf.sw = true;\r\n updated = true;\r\n }\r\n if (this.sc !== sc) {\r\n this.sc = sc;\r\n this._mdf.sc = true;\r\n updated = true;\r\n }\r\n if (this.fc !== fc) {\r\n this.fc = fc;\r\n this._mdf.fc = true;\r\n updated = true;\r\n }\r\n if (this.m !== m) {\r\n this.m = m;\r\n this._mdf.m = true;\r\n updated = true;\r\n }\r\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\r\n this.p = p;\r\n this._mdf.p = true;\r\n updated = true;\r\n }\r\n return updated;\r\n};\r\n\r\n/* global FontManager, initialDefaultFrame, getFontProperties */\r\n/* exported TextProperty */\r\n\r\nfunction TextProperty(elem, data) {\r\n this._frameId = initialDefaultFrame;\r\n this.pv = '';\r\n this.v = '';\r\n this.kf = false;\r\n this._isFirstFrame = true;\r\n this._mdf = false;\r\n this.data = data;\r\n this.elem = elem;\r\n this.comp = this.elem.comp;\r\n this.keysIndex = 0;\r\n this.canResize = false;\r\n this.minimumFontSize = 1;\r\n this.effectsSequence = [];\r\n this.currentData = {\r\n ascent: 0,\r\n boxWidth: this.defaultBoxWidth,\r\n f: '',\r\n fStyle: '',\r\n fWeight: '',\r\n fc: '',\r\n j: '',\r\n justifyOffset: '',\r\n l: [],\r\n lh: 0,\r\n lineWidths: [],\r\n ls: '',\r\n of: '',\r\n s: '',\r\n sc: '',\r\n sw: 0,\r\n t: 0,\r\n tr: 0,\r\n sz: 0,\r\n ps: null,\r\n fillColorAnim: false,\r\n strokeColorAnim: false,\r\n strokeWidthAnim: false,\r\n yOffset: 0,\r\n finalSize: 0,\r\n finalText: [],\r\n finalLineHeight: 0,\r\n __complete: false,\r\n\r\n };\r\n this.copyData(this.currentData, this.data.d.k[0].s);\r\n\r\n if (!this.searchProperty()) {\r\n this.completeTextData(this.currentData);\r\n }\r\n}\r\n\r\nTextProperty.prototype.defaultBoxWidth = [0, 0];\r\n\r\nTextProperty.prototype.copyData = function (obj, data) {\r\n for (var s in data) {\r\n if (Object.prototype.hasOwnProperty.call(data, s)) {\r\n obj[s] = data[s];\r\n }\r\n }\r\n return obj;\r\n};\r\n\r\nTextProperty.prototype.setCurrentData = function (data) {\r\n if (!data.__complete) {\r\n this.completeTextData(data);\r\n }\r\n this.currentData = data;\r\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\r\n this._mdf = true;\r\n};\r\n\r\nTextProperty.prototype.searchProperty = function () {\r\n return this.searchKeyframes();\r\n};\r\n\r\nTextProperty.prototype.searchKeyframes = function () {\r\n this.kf = this.data.d.k.length > 1;\r\n if (this.kf) {\r\n this.addEffect(this.getKeyframeValue.bind(this));\r\n }\r\n return this.kf;\r\n};\r\n\r\nTextProperty.prototype.addEffect = function (effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nTextProperty.prototype.getValue = function (_finalValue) {\r\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\r\n return;\r\n }\r\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\r\n var currentValue = this.currentData;\r\n var currentIndex = this.keysIndex;\r\n if (this.lock) {\r\n this.setCurrentData(this.currentData);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = false;\r\n var i; var\r\n len = this.effectsSequence.length;\r\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\r\n for (i = 0; i < len; i += 1) {\r\n // Checking if index changed to prevent creating a new object every time the expression updates.\r\n if (currentIndex !== this.keysIndex) {\r\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\r\n } else {\r\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\r\n }\r\n }\r\n if (currentValue !== finalValue) {\r\n this.setCurrentData(finalValue);\r\n }\r\n this.v = this.currentData;\r\n this.pv = this.v;\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n};\r\n\r\nTextProperty.prototype.getKeyframeValue = function () {\r\n var textKeys = this.data.d.k;\r\n var frameNum = this.elem.comp.renderedFrame;\r\n var i = 0; var\r\n len = textKeys.length;\r\n while (i <= len - 1) {\r\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\r\n break;\r\n }\r\n i += 1;\r\n }\r\n if (this.keysIndex !== i) {\r\n this.keysIndex = i;\r\n }\r\n return this.data.d.k[this.keysIndex].s;\r\n};\r\n\r\nTextProperty.prototype.buildFinalText = function (text) {\r\n var charactersArray = [];\r\n var i = 0;\r\n var len = text.length;\r\n var charCode;\r\n var secondCharCode;\r\n var shouldCombine = false;\r\n while (i < len) {\r\n charCode = text.charCodeAt(i);\r\n if (FontManager.isCombinedCharacter(charCode)) {\r\n charactersArray[charactersArray.length - 1] += text.charAt(i);\r\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\r\n secondCharCode = text.charCodeAt(i + 1);\r\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\r\n if (shouldCombine || FontManager.isModifier(charCode, secondCharCode)) {\r\n charactersArray[charactersArray.length - 1] += text.substr(i, 2);\r\n shouldCombine = false;\r\n } else {\r\n charactersArray.push(text.substr(i, 2));\r\n }\r\n i += 1;\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n } else if (charCode > 0xDBFF) {\r\n secondCharCode = text.charCodeAt(i + 1);\r\n if (FontManager.isZeroWidthJoiner(charCode, secondCharCode)) {\r\n shouldCombine = true;\r\n charactersArray[charactersArray.length - 1] += text.substr(i, 2);\r\n i += 1;\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\r\n charactersArray[charactersArray.length - 1] += text.charAt(i);\r\n shouldCombine = true;\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n i += 1;\r\n }\r\n return charactersArray;\r\n};\r\n\r\nTextProperty.prototype.completeTextData = function (documentData) {\r\n documentData.__complete = true;\r\n var fontManager = this.elem.globalData.fontManager;\r\n var data = this.data;\r\n var letters = [];\r\n var i; var\r\n len;\r\n var newLineFlag; var index = 0; var\r\n val;\r\n var anchorGrouping = data.m.g;\r\n var currentSize = 0; var currentPos = 0; var currentLine = 0; var\r\n lineWidths = [];\r\n var lineWidth = 0;\r\n var maxLineWidth = 0;\r\n var j; var\r\n jLen;\r\n var fontData = fontManager.getFontByName(documentData.f);\r\n var charData; var\r\n cLength = 0;\r\n\r\n var fontProps = getFontProperties(fontData);\r\n documentData.fWeight = fontProps.weight;\r\n documentData.fStyle = fontProps.style;\r\n documentData.finalSize = documentData.s;\r\n documentData.finalText = this.buildFinalText(documentData.t);\r\n len = documentData.finalText.length;\r\n documentData.finalLineHeight = documentData.lh;\r\n var trackingOffset = (documentData.tr / 1000) * documentData.finalSize;\r\n var charCode;\r\n if (documentData.sz) {\r\n var flag = true;\r\n var boxWidth = documentData.sz[0];\r\n var boxHeight = documentData.sz[1];\r\n var currentHeight; var\r\n finalText;\r\n while (flag) {\r\n finalText = this.buildFinalText(documentData.t);\r\n currentHeight = 0;\r\n lineWidth = 0;\r\n len = finalText.length;\r\n trackingOffset = (documentData.tr / 1000) * documentData.finalSize;\r\n var lastSpaceIndex = -1;\r\n for (i = 0; i < len; i += 1) {\r\n charCode = finalText[i].charCodeAt(0);\r\n newLineFlag = false;\r\n if (finalText[i] === ' ') {\r\n lastSpaceIndex = i;\r\n } else if (charCode === 13 || charCode === 3) {\r\n lineWidth = 0;\r\n newLineFlag = true;\r\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n }\r\n if (fontManager.chars) {\r\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\r\n cLength = newLineFlag ? 0 : (charData.w * documentData.finalSize) / 100;\r\n } else {\r\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\r\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\r\n }\r\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\r\n if (lastSpaceIndex === -1) {\r\n len += 1;\r\n } else {\r\n i = lastSpaceIndex;\r\n }\r\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r');\r\n // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\r\n lastSpaceIndex = -1;\r\n lineWidth = 0;\r\n } else {\r\n lineWidth += cLength;\r\n lineWidth += trackingOffset;\r\n }\r\n }\r\n currentHeight += (fontData.ascent * documentData.finalSize) / 100;\r\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\r\n documentData.finalSize -= 1;\r\n documentData.finalLineHeight = (documentData.finalSize * documentData.lh) / documentData.s;\r\n } else {\r\n documentData.finalText = finalText;\r\n len = documentData.finalText.length;\r\n flag = false;\r\n }\r\n }\r\n }\r\n lineWidth = -trackingOffset;\r\n cLength = 0;\r\n var uncollapsedSpaces = 0;\r\n var currentChar;\r\n for (i = 0; i < len; i += 1) {\r\n newLineFlag = false;\r\n currentChar = documentData.finalText[i];\r\n charCode = currentChar.charCodeAt(0);\r\n if (charCode === 13 || charCode === 3) {\r\n uncollapsedSpaces = 0;\r\n lineWidths.push(lineWidth);\r\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n lineWidth = -2 * trackingOffset;\r\n val = '';\r\n newLineFlag = true;\r\n currentLine += 1;\r\n } else {\r\n val = currentChar;\r\n }\r\n if (fontManager.chars) {\r\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\r\n cLength = newLineFlag ? 0 : (charData.w * documentData.finalSize) / 100;\r\n } else {\r\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\r\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\r\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\r\n }\r\n\r\n //\r\n if (currentChar === ' ') {\r\n uncollapsedSpaces += cLength + trackingOffset;\r\n } else {\r\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\r\n uncollapsedSpaces = 0;\r\n }\r\n letters.push({\r\n l: cLength, an: cLength, add: currentSize, n: newLineFlag, anIndexes: [], val: val, line: currentLine, animatorJustifyOffset: 0,\r\n });\r\n if (anchorGrouping == 2) { // eslint-disable-line eqeqeq\r\n currentSize += cLength;\r\n if (val === '' || val === ' ' || i === len - 1) {\r\n if (val === '' || val === ' ') {\r\n currentSize -= cLength;\r\n }\r\n while (currentPos <= i) {\r\n letters[currentPos].an = currentSize;\r\n letters[currentPos].ind = index;\r\n letters[currentPos].extra = cLength;\r\n currentPos += 1;\r\n }\r\n index += 1;\r\n currentSize = 0;\r\n }\r\n } else if (anchorGrouping == 3) { // eslint-disable-line eqeqeq\r\n currentSize += cLength;\r\n if (val === '' || i === len - 1) {\r\n if (val === '') {\r\n currentSize -= cLength;\r\n }\r\n while (currentPos <= i) {\r\n letters[currentPos].an = currentSize;\r\n letters[currentPos].ind = index;\r\n letters[currentPos].extra = cLength;\r\n currentPos += 1;\r\n }\r\n currentSize = 0;\r\n index += 1;\r\n }\r\n } else {\r\n letters[index].ind = index;\r\n letters[index].extra = 0;\r\n index += 1;\r\n }\r\n }\r\n documentData.l = letters;\r\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n lineWidths.push(lineWidth);\r\n if (documentData.sz) {\r\n documentData.boxWidth = documentData.sz[0];\r\n documentData.justifyOffset = 0;\r\n } else {\r\n documentData.boxWidth = maxLineWidth;\r\n switch (documentData.j) {\r\n case 1:\r\n documentData.justifyOffset = -documentData.boxWidth;\r\n break;\r\n case 2:\r\n documentData.justifyOffset = -documentData.boxWidth / 2;\r\n break;\r\n default:\r\n documentData.justifyOffset = 0;\r\n }\r\n }\r\n documentData.lineWidths = lineWidths;\r\n\r\n var animators = data.a; var animatorData; var\r\n letterData;\r\n jLen = animators.length;\r\n var based; var ind; var\r\n indexes = [];\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorData = animators[j];\r\n if (animatorData.a.sc) {\r\n documentData.strokeColorAnim = true;\r\n }\r\n if (animatorData.a.sw) {\r\n documentData.strokeWidthAnim = true;\r\n }\r\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\r\n documentData.fillColorAnim = true;\r\n }\r\n ind = 0;\r\n based = animatorData.s.b;\r\n for (i = 0; i < len; i += 1) {\r\n letterData = letters[i];\r\n letterData.anIndexes[j] = ind;\r\n if ((based == 1 && letterData.val !== '') || (based == 2 && letterData.val !== '' && letterData.val !== ' ') || (based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1)) || (based == 4 && (letterData.n || i == len - 1))) { // eslint-disable-line eqeqeq\r\n if (animatorData.s.rn === 1) {\r\n indexes.push(ind);\r\n }\r\n ind += 1;\r\n }\r\n }\r\n data.a[j].s.totalChars = ind;\r\n var currentInd = -1; var\r\n newInd;\r\n if (animatorData.s.rn === 1) {\r\n for (i = 0; i < len; i += 1) {\r\n letterData = letters[i];\r\n if (currentInd != letterData.anIndexes[j]) { // eslint-disable-line eqeqeq\r\n currentInd = letterData.anIndexes[j];\r\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\r\n }\r\n letterData.anIndexes[j] = newInd;\r\n }\r\n }\r\n }\r\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n documentData.ls = documentData.ls || 0;\r\n documentData.ascent = (fontData.ascent * documentData.finalSize) / 100;\r\n};\r\n\r\nTextProperty.prototype.updateDocumentData = function (newData, index) {\r\n index = index === undefined ? this.keysIndex : index;\r\n var dData = this.copyData({}, this.data.d.k[index].s);\r\n dData = this.copyData(dData, newData);\r\n this.data.d.k[index].s = dData;\r\n this.recalculate(index);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nTextProperty.prototype.recalculate = function (index) {\r\n var dData = this.data.d.k[index].s;\r\n dData.__complete = false;\r\n this.keysIndex = 0;\r\n this._isFirstFrame = true;\r\n this.getValue(dData);\r\n};\r\n\r\nTextProperty.prototype.canResizeFont = function (_canResize) {\r\n this.canResize = _canResize;\r\n this.recalculate(this.keysIndex);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nTextProperty.prototype.setMinimumFontSize = function (_fontValue) {\r\n this.minimumFontSize = Math.floor(_fontValue) || 1;\r\n this.recalculate(this.keysIndex);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\n/* global extendPrototype, BezierFactory, PropertyFactory, DynamicPropertyContainer */\r\n/* exported TextSelectorProp */\r\n\r\nvar TextSelectorProp = (function () {\r\n var max = Math.max;\r\n var min = Math.min;\r\n var floor = Math.floor;\r\n\r\n function TextSelectorPropFactory(elem, data) {\r\n this._currentTextLength = -1;\r\n this.k = false;\r\n this.data = data;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.finalS = 0;\r\n this.finalE = 0;\r\n this.initDynamicPropertyContainer(elem);\r\n this.s = PropertyFactory.getProp(elem, data.s || { k: 0 }, 0, 0, this);\r\n if ('e' in data) {\r\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\r\n } else {\r\n this.e = { v: 100 };\r\n }\r\n this.o = PropertyFactory.getProp(elem, data.o || { k: 0 }, 0, 0, this);\r\n this.xe = PropertyFactory.getProp(elem, data.xe || { k: 0 }, 0, 0, this);\r\n this.ne = PropertyFactory.getProp(elem, data.ne || { k: 0 }, 0, 0, this);\r\n this.sm = PropertyFactory.getProp(elem, data.sm || { k: 100 }, 0, 0, this);\r\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\r\n if (!this.dynamicProperties.length) {\r\n this.getValue();\r\n }\r\n }\r\n\r\n TextSelectorPropFactory.prototype = {\r\n getMult: function (ind) {\r\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\r\n this.getValue();\r\n }\r\n // var easer = bez.getEasingCurve(this.ne.v/100,0,1-this.xe.v/100,1);\r\n var x1 = 0;\r\n var y1 = 0;\r\n var x2 = 1;\r\n var y2 = 1;\r\n if (this.ne.v > 0) {\r\n x1 = this.ne.v / 100.0;\r\n } else {\r\n y1 = -this.ne.v / 100.0;\r\n }\r\n if (this.xe.v > 0) {\r\n x2 = 1.0 - this.xe.v / 100.0;\r\n } else {\r\n y2 = 1.0 + this.xe.v / 100.0;\r\n }\r\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\r\n\r\n var mult = 0;\r\n var s = this.finalS;\r\n var e = this.finalE;\r\n var type = this.data.sh;\r\n if (type === 2) {\r\n if (e === s) {\r\n mult = ind >= e ? 1 : 0;\r\n } else {\r\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n }\r\n mult = easer(mult);\r\n } else if (type === 3) {\r\n if (e === s) {\r\n mult = ind >= e ? 0 : 1;\r\n } else {\r\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n }\r\n\r\n mult = easer(mult);\r\n } else if (type === 4) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n if (mult < 0.5) {\r\n mult *= 2;\r\n } else {\r\n mult = 1 - 2 * (mult - 0.5);\r\n }\r\n }\r\n mult = easer(mult);\r\n } else if (type === 5) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n var tot = e - s;\r\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\r\n ind = min(max(0, ind + 0.5 - s), e - s);\r\n var x = -tot / 2 + ind;\r\n var a = tot / 2;\r\n mult = Math.sqrt(1 - (x * x) / (a * a));\r\n }\r\n mult = easer(mult);\r\n } else if (type === 6) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n ind = min(max(0, ind + 0.5 - s), e - s);\r\n mult = (1 + (Math.cos((Math.PI + Math.PI * 2 * (ind) / (e - s))))) / 2; // eslint-disable-line\r\n }\r\n mult = easer(mult);\r\n } else {\r\n if (ind >= floor(s)) {\r\n if (ind - s < 0) {\r\n mult = max(0, min(min(e, 1) - (s - ind), 1));\r\n } else {\r\n mult = max(0, min(e - ind, 1));\r\n }\r\n }\r\n mult = easer(mult);\r\n }\r\n // Smoothness implementation.\r\n // The smoothness represents a reduced range of the original [0; 1] range.\r\n // if smoothness is 25%, the new range will be [0.375; 0.625]\r\n // Steps are:\r\n // - find the lower value of the new range (threshold)\r\n // - if multiplier is smaller than that value, floor it to 0\r\n // - if it is larger,\r\n // - subtract the threshold\r\n // - divide it by the smoothness (this will return the range to [0; 1])\r\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\r\n if (this.sm.v !== 100) {\r\n var smoothness = this.sm.v * 0.01;\r\n if (smoothness === 0) {\r\n smoothness = 0.00000001;\r\n }\r\n var threshold = 0.5 - smoothness * 0.5;\r\n if (mult < threshold) {\r\n mult = 0;\r\n } else {\r\n mult = (mult - threshold) / smoothness;\r\n if (mult > 1) {\r\n mult = 1;\r\n }\r\n }\r\n }\r\n return mult * this.a.v;\r\n },\r\n getValue: function (newCharsFlag) {\r\n this.iterateDynamicProperties();\r\n this._mdf = newCharsFlag || this._mdf;\r\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\r\n if (newCharsFlag && this.data.r === 2) {\r\n this.e.v = this._currentTextLength;\r\n }\r\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\r\n var o = this.o.v / divisor;\r\n var s = this.s.v / divisor + o;\r\n var e = (this.e.v / divisor) + o;\r\n if (s > e) {\r\n var _s = s;\r\n s = e;\r\n e = _s;\r\n }\r\n this.finalS = s;\r\n this.finalE = e;\r\n },\r\n };\r\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\r\n\r\n function getTextSelectorProp(elem, data, arr) {\r\n return new TextSelectorPropFactory(elem, data, arr);\r\n }\r\n\r\n return {\r\n getTextSelectorProp: getTextSelectorProp,\r\n };\r\n}());\r\n\r\n/* global createSizedArray, pooling */\r\n/* exported poolFactory */\r\n\r\nvar poolFactory = (function () {\r\n return function (initialLength, _create, _release) {\r\n var _length = 0;\r\n var _maxLength = initialLength;\r\n var pool = createSizedArray(_maxLength);\r\n\r\n var ob = {\r\n newElement: newElement,\r\n release: release,\r\n };\r\n\r\n function newElement() {\r\n var element;\r\n if (_length) {\r\n _length -= 1;\r\n element = pool[_length];\r\n } else {\r\n element = _create();\r\n }\r\n return element;\r\n }\r\n\r\n function release(element) {\r\n if (_length === _maxLength) {\r\n pool = pooling.double(pool);\r\n _maxLength *= 2;\r\n }\r\n if (_release) {\r\n _release(element);\r\n }\r\n pool[_length] = element;\r\n _length += 1;\r\n }\r\n\r\n return ob;\r\n };\r\n}());\r\n\r\n/* global createSizedArray */\r\n/* exported pooling */\r\n\r\nvar pooling = (function () {\r\n function double(arr) {\r\n return arr.concat(createSizedArray(arr.length));\r\n }\r\n\r\n return {\r\n double: double,\r\n };\r\n}());\r\n\r\n/* global createTypedArray, poolFactory */\r\n/* exported pointPool */\r\n\r\nvar pointPool = (function () {\r\n function create() {\r\n return createTypedArray('float32', 2);\r\n }\r\n return poolFactory(8, create);\r\n}());\r\n\r\n/* global ShapePath, pointPool, poolFactory */\r\n/* exported shapePool */\r\n\r\nvar shapePool = (function () {\r\n function create() {\r\n return new ShapePath();\r\n }\r\n\r\n function release(shapePath) {\r\n var len = shapePath._length;\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n pointPool.release(shapePath.v[i]);\r\n pointPool.release(shapePath.i[i]);\r\n pointPool.release(shapePath.o[i]);\r\n shapePath.v[i] = null;\r\n shapePath.i[i] = null;\r\n shapePath.o[i] = null;\r\n }\r\n shapePath._length = 0;\r\n shapePath.c = false;\r\n }\r\n\r\n function clone(shape) {\r\n var cloned = factory.newElement();\r\n var i;\r\n var len = shape._length === undefined ? shape.v.length : shape._length;\r\n cloned.setLength(len);\r\n cloned.c = shape.c;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\r\n }\r\n return cloned;\r\n }\r\n\r\n var factory = poolFactory(4, create, release);\r\n factory.clone = clone;\r\n\r\n return factory;\r\n}());\r\n\r\n/* global createSizedArray, ShapeCollection, shapePool, pooling */\r\n/* exported shapeCollectionPool */\r\n\r\nvar shapeCollectionPool = (function () {\r\n var ob = {\r\n newShapeCollection: newShapeCollection,\r\n release: release,\r\n };\r\n\r\n var _length = 0;\r\n var _maxLength = 4;\r\n var pool = createSizedArray(_maxLength);\r\n\r\n function newShapeCollection() {\r\n var shapeCollection;\r\n if (_length) {\r\n _length -= 1;\r\n shapeCollection = pool[_length];\r\n } else {\r\n shapeCollection = new ShapeCollection();\r\n }\r\n return shapeCollection;\r\n }\r\n\r\n function release(shapeCollection) {\r\n var i;\r\n var len = shapeCollection._length;\r\n for (i = 0; i < len; i += 1) {\r\n shapePool.release(shapeCollection.shapes[i]);\r\n }\r\n shapeCollection._length = 0;\r\n\r\n if (_length === _maxLength) {\r\n pool = pooling.double(pool);\r\n _maxLength *= 2;\r\n }\r\n pool[_length] = shapeCollection;\r\n _length += 1;\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* global poolFactory, bezierLengthPool */\r\n/* exported segmentsLengthPool */\r\n\r\nvar segmentsLengthPool = (function () {\r\n function create() {\r\n return {\r\n lengths: [],\r\n totalLength: 0,\r\n };\r\n }\r\n\r\n function release(element) {\r\n var i;\r\n var len = element.lengths.length;\r\n for (i = 0; i < len; i += 1) {\r\n bezierLengthPool.release(element.lengths[i]);\r\n }\r\n element.lengths.length = 0;\r\n }\r\n\r\n return poolFactory(8, create, release);\r\n}());\r\n\r\n/* global createTypedArray, defaultCurveSegments, poolFactory */\r\n/* exported bezierLengthPool */\r\n\r\nvar bezierLengthPool = (function () {\r\n function create() {\r\n return {\r\n addedLength: 0,\r\n percents: createTypedArray('float32', defaultCurveSegments),\r\n lengths: createTypedArray('float32', defaultCurveSegments),\r\n };\r\n }\r\n return poolFactory(8, create);\r\n}());\r\n\r\n/* exported markerParser */\r\n\r\nvar markerParser = (\r\n\r\n function () {\r\n function parsePayloadLines(payload) {\r\n var lines = payload.split('\\r\\n');\r\n var keys = {};\r\n var line;\r\n var keysCount = 0;\r\n for (var i = 0; i < lines.length; i += 1) {\r\n line = lines[i].split(':');\r\n if (line.length === 2) {\r\n keys[line[0]] = line[1].trim();\r\n keysCount += 1;\r\n }\r\n }\r\n if (keysCount === 0) {\r\n throw new Error();\r\n }\r\n return keys;\r\n }\r\n\r\n return function (_markers) {\r\n var markers = [];\r\n for (var i = 0; i < _markers.length; i += 1) {\r\n var _marker = _markers[i];\r\n var markerData = {\r\n time: _marker.tm,\r\n duration: _marker.dr,\r\n };\r\n try {\r\n markerData.payload = JSON.parse(_markers[i].cm);\r\n } catch (_) {\r\n try {\r\n markerData.payload = parsePayloadLines(_markers[i].cm);\r\n } catch (__) {\r\n markerData.payload = {\r\n name: _markers[i],\r\n };\r\n }\r\n }\r\n markers.push(markerData);\r\n }\r\n return markers;\r\n };\r\n }());\r\n\r\n/* global AudioElement, FootageElement, FontManager */\r\n\r\nfunction BaseRenderer() {}\r\nBaseRenderer.prototype.checkLayers = function (num) {\r\n var i;\r\n var len = this.layers.length;\r\n var data;\r\n this.completeLayers = true;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (!this.elements[i]) {\r\n data = this.layers[i];\r\n if (data.ip - data.st <= (num - this.layers[i].st) && data.op - data.st > (num - this.layers[i].st)) {\r\n this.buildItem(i);\r\n }\r\n }\r\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\r\n }\r\n this.checkPendingElements();\r\n};\r\n\r\nBaseRenderer.prototype.createItem = function (layer) {\r\n switch (layer.ty) {\r\n case 2:\r\n return this.createImage(layer);\r\n case 0:\r\n return this.createComp(layer);\r\n case 1:\r\n return this.createSolid(layer);\r\n case 3:\r\n return this.createNull(layer);\r\n case 4:\r\n return this.createShape(layer);\r\n case 5:\r\n return this.createText(layer);\r\n case 6:\r\n return this.createAudio(layer);\r\n case 13:\r\n return this.createCamera(layer);\r\n case 15:\r\n return this.createFootage(layer);\r\n default:\r\n return this.createNull(layer);\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.createCamera = function () {\r\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\r\n};\r\n\r\nBaseRenderer.prototype.createAudio = function (data) {\r\n return new AudioElement(data, this.globalData, this);\r\n};\r\n\r\nBaseRenderer.prototype.createFootage = function (data) {\r\n return new FootageElement(data, this.globalData, this);\r\n};\r\n\r\nBaseRenderer.prototype.buildAllItems = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.buildItem(i);\r\n }\r\n this.checkPendingElements();\r\n};\r\n\r\nBaseRenderer.prototype.includeLayers = function (newLayers) {\r\n this.completeLayers = false;\r\n var i;\r\n var len = newLayers.length;\r\n var j;\r\n var jLen = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n j = 0;\r\n while (j < jLen) {\r\n if (this.layers[j].id === newLayers[i].id) {\r\n this.layers[j] = newLayers[i];\r\n break;\r\n }\r\n j += 1;\r\n }\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.setProjectInterface = function (pInterface) {\r\n this.globalData.projectInterface = pInterface;\r\n};\r\n\r\nBaseRenderer.prototype.initItems = function () {\r\n if (!this.globalData.progressiveLoad) {\r\n this.buildAllItems();\r\n }\r\n};\r\nBaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\r\n var elements = this.elements;\r\n var layers = this.layers;\r\n var i = 0;\r\n var len = layers.length;\r\n while (i < len) {\r\n if (layers[i].ind == parentName) { // eslint-disable-line eqeqeq\r\n if (!elements[i] || elements[i] === true) {\r\n this.buildItem(i);\r\n this.addPendingElement(element);\r\n } else {\r\n hierarchy.push(elements[i]);\r\n elements[i].setAsParent();\r\n if (layers[i].parent !== undefined) {\r\n this.buildElementParenting(element, layers[i].parent, hierarchy);\r\n } else {\r\n element.setHierarchy(hierarchy);\r\n }\r\n }\r\n }\r\n i += 1;\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.addPendingElement = function (element) {\r\n this.pendingElements.push(element);\r\n};\r\n\r\nBaseRenderer.prototype.searchExtraCompositions = function (assets) {\r\n var i;\r\n var len = assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (assets[i].xt) {\r\n var comp = this.createComp(assets[i]);\r\n comp.initExpressions();\r\n this.globalData.projectInterface.registerComposition(comp);\r\n }\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\r\n this.globalData.fontManager = new FontManager();\r\n this.globalData.fontManager.addChars(animData.chars);\r\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\r\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\r\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\r\n this.globalData.imageLoader = this.animationItem.imagePreloader;\r\n this.globalData.audioController = this.animationItem.audioController;\r\n this.globalData.frameId = 0;\r\n this.globalData.frameRate = animData.fr;\r\n this.globalData.nm = animData.nm;\r\n this.globalData.compSize = {\r\n w: animData.w,\r\n h: animData.h,\r\n };\r\n};\r\n\r\n/* global createElementID, extendPrototype, BaseRenderer, NullElement, SVGShapeElement, SVGTextLottieElement,\r\nIImageElement, SVGCompElement, ISolidElement, createNS, locationHref, createSizedArray, expressionsPlugin */\r\n\r\nfunction SVGRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.layers = null;\r\n this.renderedFrame = -1;\r\n this.svgElement = createNS('svg');\r\n var ariaLabel = '';\r\n if (config && config.title) {\r\n var titleElement = createNS('title');\r\n var titleId = createElementID();\r\n titleElement.setAttribute('id', titleId);\r\n titleElement.textContent = config.title;\r\n this.svgElement.appendChild(titleElement);\r\n ariaLabel += titleId;\r\n }\r\n if (config && config.description) {\r\n var descElement = createNS('desc');\r\n var descId = createElementID();\r\n descElement.setAttribute('id', descId);\r\n descElement.textContent = config.description;\r\n this.svgElement.appendChild(descElement);\r\n ariaLabel += ' ' + descId;\r\n }\r\n if (ariaLabel) {\r\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\r\n }\r\n var defs = createNS('defs');\r\n this.svgElement.appendChild(defs);\r\n var maskElement = createNS('g');\r\n this.svgElement.appendChild(maskElement);\r\n this.layerElement = maskElement;\r\n this.renderConfig = {\r\n preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',\r\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\r\n contentVisibility: (config && config.contentVisibility) || 'visible',\r\n progressiveLoad: (config && config.progressiveLoad) || false,\r\n hideOnTransparent: !((config && config.hideOnTransparent === false)),\r\n viewBoxOnly: (config && config.viewBoxOnly) || false,\r\n viewBoxSize: (config && config.viewBoxSize) || false,\r\n className: (config && config.className) || '',\r\n id: (config && config.id) || '',\r\n focusable: config && config.focusable,\r\n filterSize: {\r\n width: (config && config.filterSize && config.filterSize.width) || '100%',\r\n height: (config && config.filterSize && config.filterSize.height) || '100%',\r\n x: (config && config.filterSize && config.filterSize.x) || '0%',\r\n y: (config && config.filterSize && config.filterSize.y) || '0%',\r\n },\r\n };\r\n\r\n this.globalData = {\r\n _mdf: false,\r\n frameNum: -1,\r\n defs: defs,\r\n renderConfig: this.renderConfig,\r\n };\r\n this.elements = [];\r\n this.pendingElements = [];\r\n this.destroyed = false;\r\n this.rendererType = 'svg';\r\n}\r\n\r\nextendPrototype([BaseRenderer], SVGRenderer);\r\n\r\nSVGRenderer.prototype.createNull = function (data) {\r\n return new NullElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createShape = function (data) {\r\n return new SVGShapeElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createText = function (data) {\r\n return new SVGTextLottieElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createImage = function (data) {\r\n return new IImageElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createComp = function (data) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createSolid = function (data) {\r\n return new ISolidElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.configAnimation = function (animData) {\r\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\r\n if (this.renderConfig.viewBoxSize) {\r\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\r\n } else {\r\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\r\n }\r\n\r\n if (!this.renderConfig.viewBoxOnly) {\r\n this.svgElement.setAttribute('width', animData.w);\r\n this.svgElement.setAttribute('height', animData.h);\r\n this.svgElement.style.width = '100%';\r\n this.svgElement.style.height = '100%';\r\n this.svgElement.style.transform = 'translate3d(0,0,0)';\r\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\r\n }\r\n if (this.renderConfig.className) {\r\n this.svgElement.setAttribute('class', this.renderConfig.className);\r\n }\r\n if (this.renderConfig.id) {\r\n this.svgElement.setAttribute('id', this.renderConfig.id);\r\n }\r\n if (this.renderConfig.focusable !== undefined) {\r\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\r\n }\r\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio);\r\n // this.layerElement.style.transform = 'translate3d(0,0,0)';\r\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\r\n this.animationItem.wrapper.appendChild(this.svgElement);\r\n // Mask animation\r\n var defs = this.globalData.defs;\r\n\r\n this.setupGlobalData(animData, defs);\r\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\r\n this.data = animData;\r\n\r\n var maskElement = createNS('clipPath');\r\n var rect = createNS('rect');\r\n rect.setAttribute('width', animData.w);\r\n rect.setAttribute('height', animData.h);\r\n rect.setAttribute('x', 0);\r\n rect.setAttribute('y', 0);\r\n var maskId = createElementID();\r\n maskElement.setAttribute('id', maskId);\r\n maskElement.appendChild(rect);\r\n this.layerElement.setAttribute('clip-path', 'url(' + locationHref + '#' + maskId + ')');\r\n\r\n defs.appendChild(maskElement);\r\n this.layers = animData.layers;\r\n this.elements = createSizedArray(animData.layers.length);\r\n};\r\n\r\nSVGRenderer.prototype.destroy = function () {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.wrapper.innerText = '';\r\n }\r\n this.layerElement = null;\r\n this.globalData.defs = null;\r\n var i;\r\n var len = this.layers ? this.layers.length : 0;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n this.elements.length = 0;\r\n this.destroyed = true;\r\n this.animationItem = null;\r\n};\r\n\r\nSVGRenderer.prototype.updateContainerSize = function () {\r\n};\r\n\r\nSVGRenderer.prototype.buildItem = function (pos) {\r\n var elements = this.elements;\r\n if (elements[pos] || this.layers[pos].ty === 99) {\r\n return;\r\n }\r\n elements[pos] = true;\r\n var element = this.createItem(this.layers[pos]);\r\n\r\n elements[pos] = element;\r\n if (expressionsPlugin) {\r\n if (this.layers[pos].ty === 0) {\r\n this.globalData.projectInterface.registerComposition(element);\r\n }\r\n element.initExpressions();\r\n }\r\n this.appendElementInPos(element, pos);\r\n if (this.layers[pos].tt) {\r\n if (!this.elements[pos - 1] || this.elements[pos - 1] === true) {\r\n this.buildItem(pos - 1);\r\n this.addPendingElement(element);\r\n } else {\r\n element.setMatte(elements[pos - 1].layerId);\r\n }\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n if (element.data.tt) {\r\n var i = 0;\r\n var len = this.elements.length;\r\n while (i < len) {\r\n if (this.elements[i] === element) {\r\n element.setMatte(this.elements[i - 1].layerId);\r\n break;\r\n }\r\n i += 1;\r\n }\r\n }\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.renderFrame = function (num) {\r\n if (this.renderedFrame === num || this.destroyed) {\r\n return;\r\n }\r\n if (num === null) {\r\n num = this.renderedFrame;\r\n } else {\r\n this.renderedFrame = num;\r\n }\r\n // console.log('-------');\r\n // console.log('FRAME ',num);\r\n this.globalData.frameNum = num;\r\n this.globalData.frameId += 1;\r\n this.globalData.projectInterface.currentFrame = num;\r\n this.globalData._mdf = false;\r\n var i;\r\n var len = this.layers.length;\r\n if (!this.completeLayers) {\r\n this.checkLayers(num);\r\n }\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(num - this.layers[i].st);\r\n }\r\n }\r\n if (this.globalData._mdf) {\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.appendElementInPos = function (element, pos) {\r\n var newElement = element.getBaseElement();\r\n if (!newElement) {\r\n return;\r\n }\r\n var i = 0;\r\n var nextElement;\r\n while (i < pos) {\r\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\r\n nextElement = this.elements[i].getBaseElement();\r\n }\r\n i += 1;\r\n }\r\n if (nextElement) {\r\n this.layerElement.insertBefore(newElement, nextElement);\r\n } else {\r\n this.layerElement.appendChild(newElement);\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.hide = function () {\r\n this.layerElement.style.display = 'none';\r\n};\r\n\r\nSVGRenderer.prototype.show = function () {\r\n this.layerElement.style.display = 'block';\r\n};\r\n\r\n/* global CVContextData, Matrix, extendPrototype, BaseRenderer, CVShapeElement, CVTextElement,\r\nCVImageElement, CVCompElement, CVSolidElement, SVGRenderer, createTag, createSizedArray */\r\n\r\nfunction CanvasRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.renderConfig = {\r\n clearCanvas: (config && config.clearCanvas !== undefined) ? config.clearCanvas : true,\r\n context: (config && config.context) || null,\r\n progressiveLoad: (config && config.progressiveLoad) || false,\r\n preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',\r\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\r\n contentVisibility: (config && config.contentVisibility) || 'visible',\r\n className: (config && config.className) || '',\r\n id: (config && config.id) || '',\r\n };\r\n this.renderConfig.dpr = (config && config.dpr) || 1;\r\n if (this.animationItem.wrapper) {\r\n this.renderConfig.dpr = (config && config.dpr) || window.devicePixelRatio || 1;\r\n }\r\n this.renderedFrame = -1;\r\n this.globalData = {\r\n frameNum: -1,\r\n _mdf: false,\r\n renderConfig: this.renderConfig,\r\n currentGlobalAlpha: -1,\r\n };\r\n this.contextData = new CVContextData();\r\n this.elements = [];\r\n this.pendingElements = [];\r\n this.transformMat = new Matrix();\r\n this.completeLayers = false;\r\n this.rendererType = 'canvas';\r\n}\r\nextendPrototype([BaseRenderer], CanvasRenderer);\r\n\r\nCanvasRenderer.prototype.createShape = function (data) {\r\n return new CVShapeElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createText = function (data) {\r\n return new CVTextElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createImage = function (data) {\r\n return new CVImageElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createComp = function (data) {\r\n return new CVCompElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createSolid = function (data) {\r\n return new CVSolidElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createNull = SVGRenderer.prototype.createNull;\r\n\r\nCanvasRenderer.prototype.ctxTransform = function (props) {\r\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\r\n return;\r\n }\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\r\n return;\r\n }\r\n this.transformMat.cloneFromProps(props);\r\n var cProps = this.contextData.cTr.props;\r\n this.transformMat.transform(cProps[0], cProps[1], cProps[2], cProps[3], cProps[4], cProps[5], cProps[6], cProps[7], cProps[8], cProps[9], cProps[10], cProps[11], cProps[12], cProps[13], cProps[14], cProps[15]);\r\n // this.contextData.cTr.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);\r\n this.contextData.cTr.cloneFromProps(this.transformMat.props);\r\n var trProps = this.contextData.cTr.props;\r\n this.canvasContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\r\n};\r\n\r\nCanvasRenderer.prototype.ctxOpacity = function (op) {\r\n /* if(op === 1){\r\n return;\r\n } */\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\r\n this.globalData.currentGlobalAlpha = this.contextData.cO;\r\n return;\r\n }\r\n this.contextData.cO *= op < 0 ? 0 : op;\r\n if (this.globalData.currentGlobalAlpha !== this.contextData.cO) {\r\n this.canvasContext.globalAlpha = this.contextData.cO;\r\n this.globalData.currentGlobalAlpha = this.contextData.cO;\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.reset = function () {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.restore();\r\n return;\r\n }\r\n this.contextData.reset();\r\n};\r\n\r\nCanvasRenderer.prototype.save = function (actionFlag) {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.save();\r\n return;\r\n }\r\n if (actionFlag) {\r\n this.canvasContext.save();\r\n }\r\n var props = this.contextData.cTr.props;\r\n if (this.contextData._length <= this.contextData.cArrPos) {\r\n this.contextData.duplicate();\r\n }\r\n var i;\r\n var arr = this.contextData.saved[this.contextData.cArrPos];\r\n for (i = 0; i < 16; i += 1) {\r\n arr[i] = props[i];\r\n }\r\n this.contextData.savedOp[this.contextData.cArrPos] = this.contextData.cO;\r\n this.contextData.cArrPos += 1;\r\n};\r\n\r\nCanvasRenderer.prototype.restore = function (actionFlag) {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.restore();\r\n return;\r\n }\r\n if (actionFlag) {\r\n this.canvasContext.restore();\r\n this.globalData.blendMode = 'source-over';\r\n }\r\n this.contextData.cArrPos -= 1;\r\n var popped = this.contextData.saved[this.contextData.cArrPos];\r\n var i;\r\n var arr = this.contextData.cTr.props;\r\n for (i = 0; i < 16; i += 1) {\r\n arr[i] = popped[i];\r\n }\r\n this.canvasContext.setTransform(popped[0], popped[1], popped[4], popped[5], popped[12], popped[13]);\r\n popped = this.contextData.savedOp[this.contextData.cArrPos];\r\n this.contextData.cO = popped;\r\n if (this.globalData.currentGlobalAlpha !== popped) {\r\n this.canvasContext.globalAlpha = popped;\r\n this.globalData.currentGlobalAlpha = popped;\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.configAnimation = function (animData) {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.container = createTag('canvas');\r\n var containerStyle = this.animationItem.container.style;\r\n containerStyle.width = '100%';\r\n containerStyle.height = '100%';\r\n var origin = '0px 0px 0px';\r\n containerStyle.transformOrigin = origin;\r\n containerStyle.mozTransformOrigin = origin;\r\n containerStyle.webkitTransformOrigin = origin;\r\n containerStyle['-webkit-transform'] = origin;\r\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\r\n this.animationItem.wrapper.appendChild(this.animationItem.container);\r\n this.canvasContext = this.animationItem.container.getContext('2d');\r\n if (this.renderConfig.className) {\r\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\r\n }\r\n if (this.renderConfig.id) {\r\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\r\n }\r\n } else {\r\n this.canvasContext = this.renderConfig.context;\r\n }\r\n this.data = animData;\r\n this.layers = animData.layers;\r\n this.transformCanvas = {\r\n w: animData.w,\r\n h: animData.h,\r\n sx: 0,\r\n sy: 0,\r\n tx: 0,\r\n ty: 0,\r\n };\r\n this.setupGlobalData(animData, document.body);\r\n this.globalData.canvasContext = this.canvasContext;\r\n this.globalData.renderer = this;\r\n this.globalData.isDashed = false;\r\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\r\n this.globalData.transformCanvas = this.transformCanvas;\r\n this.elements = createSizedArray(animData.layers.length);\r\n\r\n this.updateContainerSize();\r\n};\r\n\r\nCanvasRenderer.prototype.updateContainerSize = function () {\r\n this.reset();\r\n var elementWidth;\r\n var elementHeight;\r\n if (this.animationItem.wrapper && this.animationItem.container) {\r\n elementWidth = this.animationItem.wrapper.offsetWidth;\r\n elementHeight = this.animationItem.wrapper.offsetHeight;\r\n this.animationItem.container.setAttribute('width', elementWidth * this.renderConfig.dpr);\r\n this.animationItem.container.setAttribute('height', elementHeight * this.renderConfig.dpr);\r\n } else {\r\n elementWidth = this.canvasContext.canvas.width * this.renderConfig.dpr;\r\n elementHeight = this.canvasContext.canvas.height * this.renderConfig.dpr;\r\n }\r\n var elementRel;\r\n var animationRel;\r\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\r\n var par = this.renderConfig.preserveAspectRatio.split(' ');\r\n var fillType = par[1] || 'meet';\r\n var pos = par[0] || 'xMidYMid';\r\n var xPos = pos.substr(0, 4);\r\n var yPos = pos.substr(4);\r\n elementRel = elementWidth / elementHeight;\r\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\r\n if ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice')) {\r\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n } else {\r\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n }\r\n\r\n if (xPos === 'xMid' && ((animationRel < elementRel && fillType === 'meet') || (animationRel > elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.tx = ((elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2) * this.renderConfig.dpr;\r\n } else if (xPos === 'xMax' && ((animationRel < elementRel && fillType === 'meet') || (animationRel > elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\r\n } else {\r\n this.transformCanvas.tx = 0;\r\n }\r\n if (yPos === 'YMid' && ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.ty = ((elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2) * this.renderConfig.dpr;\r\n } else if (yPos === 'YMax' && ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.ty = ((elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w))) * this.renderConfig.dpr;\r\n } else {\r\n this.transformCanvas.ty = 0;\r\n }\r\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\r\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n this.transformCanvas.tx = 0;\r\n this.transformCanvas.ty = 0;\r\n } else {\r\n this.transformCanvas.sx = this.renderConfig.dpr;\r\n this.transformCanvas.sy = this.renderConfig.dpr;\r\n this.transformCanvas.tx = 0;\r\n this.transformCanvas.ty = 0;\r\n }\r\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\r\n /* var i, len = this.elements.length;\r\n for(i=0;i= 0; i -= 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n this.elements.length = 0;\r\n this.globalData.canvasContext = null;\r\n this.animationItem.container = null;\r\n this.destroyed = true;\r\n};\r\n\r\nCanvasRenderer.prototype.renderFrame = function (num, forceRender) {\r\n if ((this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender) || this.destroyed || num === -1) {\r\n return;\r\n }\r\n this.renderedFrame = num;\r\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\r\n this.globalData.frameId += 1;\r\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\r\n this.globalData.projectInterface.currentFrame = num;\r\n\r\n // console.log('--------');\r\n // console.log('NEW: ',num);\r\n var i;\r\n var len = this.layers.length;\r\n if (!this.completeLayers) {\r\n this.checkLayers(num);\r\n }\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(num - this.layers[i].st);\r\n }\r\n }\r\n if (this.globalData._mdf) {\r\n if (this.renderConfig.clearCanvas === true) {\r\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\r\n } else {\r\n this.save();\r\n }\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n if (this.renderConfig.clearCanvas !== true) {\r\n this.restore();\r\n }\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.buildItem = function (pos) {\r\n var elements = this.elements;\r\n if (elements[pos] || this.layers[pos].ty === 99) {\r\n return;\r\n }\r\n var element = this.createItem(this.layers[pos], this, this.globalData);\r\n elements[pos] = element;\r\n element.initExpressions();\r\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\r\n};\r\n\r\nCanvasRenderer.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.hide = function () {\r\n this.animationItem.container.style.display = 'none';\r\n};\r\n\r\nCanvasRenderer.prototype.show = function () {\r\n this.animationItem.container.style.display = 'block';\r\n};\r\n\r\n/* global extendPrototype, BaseRenderer, SVGRenderer, SVGShapeElement, HShapeElement, SVGTextLottieElement,\r\nHTextElement, HCameraElement, IImageElement, HImageElement, SVGCompElement, HCompElement, ISolidElement,\r\nHSolidElement, styleDiv, createTag, createNS */\r\n\r\nfunction HybridRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.layers = null;\r\n this.renderedFrame = -1;\r\n this.renderConfig = {\r\n className: (config && config.className) || '',\r\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\r\n hideOnTransparent: !(config && config.hideOnTransparent === false),\r\n filterSize: {\r\n width: (config && config.filterSize && config.filterSize.width) || '400%',\r\n height: (config && config.filterSize && config.filterSize.height) || '400%',\r\n x: (config && config.filterSize && config.filterSize.x) || '-100%',\r\n y: (config && config.filterSize && config.filterSize.y) || '-100%',\r\n },\r\n };\r\n this.globalData = {\r\n _mdf: false,\r\n frameNum: -1,\r\n renderConfig: this.renderConfig,\r\n };\r\n this.pendingElements = [];\r\n this.elements = [];\r\n this.threeDElements = [];\r\n this.destroyed = false;\r\n this.camera = null;\r\n this.supports3d = true;\r\n this.rendererType = 'html';\r\n}\r\n\r\nextendPrototype([BaseRenderer], HybridRenderer);\r\n\r\nHybridRenderer.prototype.buildItem = SVGRenderer.prototype.buildItem;\r\n\r\nHybridRenderer.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.appendElementInPos = function (element, pos) {\r\n var newDOMElement = element.getBaseElement();\r\n if (!newDOMElement) {\r\n return;\r\n }\r\n var layer = this.layers[pos];\r\n if (!layer.ddd || !this.supports3d) {\r\n if (this.threeDElements) {\r\n this.addTo3dContainer(newDOMElement, pos);\r\n } else {\r\n var i = 0;\r\n var nextDOMElement;\r\n var nextLayer;\r\n var tmpDOMElement;\r\n while (i < pos) {\r\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\r\n nextLayer = this.elements[i];\r\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\r\n nextDOMElement = tmpDOMElement || nextDOMElement;\r\n }\r\n i += 1;\r\n }\r\n if (nextDOMElement) {\r\n if (!layer.ddd || !this.supports3d) {\r\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\r\n }\r\n } else if (!layer.ddd || !this.supports3d) {\r\n this.layerElement.appendChild(newDOMElement);\r\n }\r\n }\r\n } else {\r\n this.addTo3dContainer(newDOMElement, pos);\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.createShape = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGShapeElement(data, this.globalData, this);\r\n }\r\n return new HShapeElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createText = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGTextLottieElement(data, this.globalData, this);\r\n }\r\n return new HTextElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createCamera = function (data) {\r\n this.camera = new HCameraElement(data, this.globalData, this);\r\n return this.camera;\r\n};\r\n\r\nHybridRenderer.prototype.createImage = function (data) {\r\n if (!this.supports3d) {\r\n return new IImageElement(data, this.globalData, this);\r\n }\r\n return new HImageElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createComp = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n }\r\n return new HCompElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createSolid = function (data) {\r\n if (!this.supports3d) {\r\n return new ISolidElement(data, this.globalData, this);\r\n }\r\n return new HSolidElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createNull = SVGRenderer.prototype.createNull;\r\n\r\nHybridRenderer.prototype.getThreeDContainerByPos = function (pos) {\r\n var i = 0;\r\n var len = this.threeDElements.length;\r\n while (i < len) {\r\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\r\n return this.threeDElements[i].perspectiveElem;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n};\r\n\r\nHybridRenderer.prototype.createThreeDContainer = function (pos, type) {\r\n var perspectiveElem = createTag('div');\r\n var style;\r\n var containerStyle;\r\n styleDiv(perspectiveElem);\r\n var container = createTag('div');\r\n styleDiv(container);\r\n if (type === '3d') {\r\n style = perspectiveElem.style;\r\n style.width = this.globalData.compSize.w + 'px';\r\n style.height = this.globalData.compSize.h + 'px';\r\n var center = '50% 50%';\r\n style.webkitTransformOrigin = center;\r\n style.mozTransformOrigin = center;\r\n style.transformOrigin = center;\r\n containerStyle = container.style;\r\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\r\n containerStyle.transform = matrix;\r\n containerStyle.webkitTransform = matrix;\r\n }\r\n\r\n perspectiveElem.appendChild(container);\r\n // this.resizerElem.appendChild(perspectiveElem);\r\n var threeDContainerData = {\r\n container: container,\r\n perspectiveElem: perspectiveElem,\r\n startPos: pos,\r\n endPos: pos,\r\n type: type,\r\n };\r\n this.threeDElements.push(threeDContainerData);\r\n return threeDContainerData;\r\n};\r\n\r\nHybridRenderer.prototype.build3dContainers = function () {\r\n var i;\r\n var len = this.layers.length;\r\n var lastThreeDContainerData;\r\n var currentContainer = '';\r\n for (i = 0; i < len; i += 1) {\r\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\r\n if (currentContainer !== '3d') {\r\n currentContainer = '3d';\r\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\r\n }\r\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\r\n } else {\r\n if (currentContainer !== '2d') {\r\n currentContainer = '2d';\r\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\r\n }\r\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\r\n }\r\n }\r\n len = this.threeDElements.length;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.addTo3dContainer = function (elem, pos) {\r\n var i = 0;\r\n var len = this.threeDElements.length;\r\n while (i < len) {\r\n if (pos <= this.threeDElements[i].endPos) {\r\n var j = this.threeDElements[i].startPos;\r\n var nextElement;\r\n while (j < pos) {\r\n if (this.elements[j] && this.elements[j].getBaseElement) {\r\n nextElement = this.elements[j].getBaseElement();\r\n }\r\n j += 1;\r\n }\r\n if (nextElement) {\r\n this.threeDElements[i].container.insertBefore(elem, nextElement);\r\n } else {\r\n this.threeDElements[i].container.appendChild(elem);\r\n }\r\n break;\r\n }\r\n i += 1;\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.configAnimation = function (animData) {\r\n var resizerElem = createTag('div');\r\n var wrapper = this.animationItem.wrapper;\r\n var style = resizerElem.style;\r\n style.width = animData.w + 'px';\r\n style.height = animData.h + 'px';\r\n this.resizerElem = resizerElem;\r\n styleDiv(resizerElem);\r\n style.transformStyle = 'flat';\r\n style.mozTransformStyle = 'flat';\r\n style.webkitTransformStyle = 'flat';\r\n if (this.renderConfig.className) {\r\n resizerElem.setAttribute('class', this.renderConfig.className);\r\n }\r\n wrapper.appendChild(resizerElem);\r\n\r\n style.overflow = 'hidden';\r\n var svg = createNS('svg');\r\n svg.setAttribute('width', '1');\r\n svg.setAttribute('height', '1');\r\n styleDiv(svg);\r\n this.resizerElem.appendChild(svg);\r\n var defs = createNS('defs');\r\n svg.appendChild(defs);\r\n this.data = animData;\r\n // Mask animation\r\n this.setupGlobalData(animData, svg);\r\n this.globalData.defs = defs;\r\n this.layers = animData.layers;\r\n this.layerElement = this.resizerElem;\r\n this.build3dContainers();\r\n this.updateContainerSize();\r\n};\r\n\r\nHybridRenderer.prototype.destroy = function () {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.wrapper.innerText = '';\r\n }\r\n this.animationItem.container = null;\r\n this.globalData.defs = null;\r\n var i;\r\n var len = this.layers ? this.layers.length : 0;\r\n for (i = 0; i < len; i += 1) {\r\n this.elements[i].destroy();\r\n }\r\n this.elements.length = 0;\r\n this.destroyed = true;\r\n this.animationItem = null;\r\n};\r\n\r\nHybridRenderer.prototype.updateContainerSize = function () {\r\n var elementWidth = this.animationItem.wrapper.offsetWidth;\r\n var elementHeight = this.animationItem.wrapper.offsetHeight;\r\n var elementRel = elementWidth / elementHeight;\r\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\r\n var sx;\r\n var sy;\r\n var tx;\r\n var ty;\r\n if (animationRel > elementRel) {\r\n sx = elementWidth / (this.globalData.compSize.w);\r\n sy = elementWidth / (this.globalData.compSize.w);\r\n tx = 0;\r\n ty = ((elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2);\r\n } else {\r\n sx = elementHeight / (this.globalData.compSize.h);\r\n sy = elementHeight / (this.globalData.compSize.h);\r\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\r\n ty = 0;\r\n }\r\n var style = this.resizerElem.style;\r\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\r\n style.transform = style.webkitTransform;\r\n};\r\n\r\nHybridRenderer.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\r\n\r\nHybridRenderer.prototype.hide = function () {\r\n this.resizerElem.style.display = 'none';\r\n};\r\n\r\nHybridRenderer.prototype.show = function () {\r\n this.resizerElem.style.display = 'block';\r\n};\r\n\r\nHybridRenderer.prototype.initItems = function () {\r\n this.buildAllItems();\r\n if (this.camera) {\r\n this.camera.setup();\r\n } else {\r\n var cWidth = this.globalData.compSize.w;\r\n var cHeight = this.globalData.compSize.h;\r\n var i;\r\n var len = this.threeDElements.length;\r\n for (i = 0; i < len; i += 1) {\r\n var style = this.threeDElements[i].perspectiveElem.style;\r\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\r\n style.perspective = style.webkitPerspective;\r\n }\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.searchExtraCompositions = function (assets) {\r\n var i;\r\n var len = assets.length;\r\n var floatingContainer = createTag('div');\r\n for (i = 0; i < len; i += 1) {\r\n if (assets[i].xt) {\r\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\r\n comp.initExpressions();\r\n this.globalData.projectInterface.registerComposition(comp);\r\n }\r\n }\r\n};\r\n\r\n/* global createSizedArray, createElementID, PropertyFactory, ShapePropertyFactory, createNS, locationHref */\r\n\r\nfunction MaskElement(data, element, globalData) {\r\n this.data = data;\r\n this.element = element;\r\n this.globalData = globalData;\r\n this.storedData = [];\r\n this.masksProperties = this.data.masksProperties || [];\r\n this.maskElement = null;\r\n var defs = this.globalData.defs;\r\n var i;\r\n var len = this.masksProperties ? this.masksProperties.length : 0;\r\n this.viewData = createSizedArray(len);\r\n this.solidPath = '';\r\n\r\n var path;\r\n var properties = this.masksProperties;\r\n var count = 0;\r\n var currentMasks = [];\r\n var j;\r\n var jLen;\r\n var layerId = createElementID();\r\n var rect;\r\n var expansor;\r\n var feMorph;\r\n var x;\r\n var maskType = 'clipPath';\r\n var maskRef = 'clip-path';\r\n for (i = 0; i < len; i += 1) {\r\n if ((properties[i].mode !== 'a' && properties[i].mode !== 'n') || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\r\n maskType = 'mask';\r\n maskRef = 'mask';\r\n }\r\n\r\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\r\n rect = createNS('rect');\r\n rect.setAttribute('fill', '#ffffff');\r\n rect.setAttribute('width', this.element.comp.data.w || 0);\r\n rect.setAttribute('height', this.element.comp.data.h || 0);\r\n currentMasks.push(rect);\r\n } else {\r\n rect = null;\r\n }\r\n\r\n path = createNS('path');\r\n if (properties[i].mode === 'n') {\r\n // TODO move this to a factory or to a constructor\r\n this.viewData[i] = {\r\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\r\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\r\n elem: path,\r\n lastPath: '',\r\n };\r\n defs.appendChild(path);\r\n } else {\r\n count += 1;\r\n\r\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\r\n path.setAttribute('clip-rule', 'nonzero');\r\n var filterID;\r\n\r\n if (properties[i].x.k !== 0) {\r\n maskType = 'mask';\r\n maskRef = 'mask';\r\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\r\n filterID = createElementID();\r\n expansor = createNS('filter');\r\n expansor.setAttribute('id', filterID);\r\n feMorph = createNS('feMorphology');\r\n feMorph.setAttribute('operator', 'erode');\r\n feMorph.setAttribute('in', 'SourceGraphic');\r\n feMorph.setAttribute('radius', '0');\r\n expansor.appendChild(feMorph);\r\n defs.appendChild(expansor);\r\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\r\n } else {\r\n feMorph = null;\r\n x = null;\r\n }\r\n\r\n // TODO move this to a factory or to a constructor\r\n this.storedData[i] = {\r\n elem: path,\r\n x: x,\r\n expan: feMorph,\r\n lastPath: '',\r\n lastOperator: '',\r\n filterId: filterID,\r\n lastRadius: 0,\r\n };\r\n if (properties[i].mode === 'i') {\r\n jLen = currentMasks.length;\r\n var g = createNS('g');\r\n for (j = 0; j < jLen; j += 1) {\r\n g.appendChild(currentMasks[j]);\r\n }\r\n var mask = createNS('mask');\r\n mask.setAttribute('mask-type', 'alpha');\r\n mask.setAttribute('id', layerId + '_' + count);\r\n mask.appendChild(path);\r\n defs.appendChild(mask);\r\n g.setAttribute('mask', 'url(' + locationHref + '#' + layerId + '_' + count + ')');\r\n\r\n currentMasks.length = 0;\r\n currentMasks.push(g);\r\n } else {\r\n currentMasks.push(path);\r\n }\r\n if (properties[i].inv && !this.solidPath) {\r\n this.solidPath = this.createLayerSolidPath();\r\n }\r\n // TODO move this to a factory or to a constructor\r\n this.viewData[i] = {\r\n elem: path,\r\n lastPath: '',\r\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\r\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\r\n invRect: rect,\r\n };\r\n if (!this.viewData[i].prop.k) {\r\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\r\n }\r\n }\r\n }\r\n\r\n this.maskElement = createNS(maskType);\r\n\r\n len = currentMasks.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.maskElement.appendChild(currentMasks[i]);\r\n }\r\n\r\n if (count > 0) {\r\n this.maskElement.setAttribute('id', layerId);\r\n this.element.maskedElement.setAttribute(maskRef, 'url(' + locationHref + '#' + layerId + ')');\r\n defs.appendChild(this.maskElement);\r\n }\r\n if (this.viewData.length) {\r\n this.element.addRenderableComponent(this);\r\n }\r\n}\r\n\r\nMaskElement.prototype.getMaskProperty = function (pos) {\r\n return this.viewData[pos].prop;\r\n};\r\n\r\nMaskElement.prototype.renderFrame = function (isFirstFrame) {\r\n var finalMat = this.element.finalTransform.mat;\r\n var i;\r\n var len = this.masksProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.viewData[i].prop._mdf || isFirstFrame) {\r\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\r\n }\r\n if (this.viewData[i].op._mdf || isFirstFrame) {\r\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\r\n }\r\n if (this.masksProperties[i].mode !== 'n') {\r\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\r\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\r\n }\r\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\r\n var feMorph = this.storedData[i].expan;\r\n if (this.storedData[i].x.v < 0) {\r\n if (this.storedData[i].lastOperator !== 'erode') {\r\n this.storedData[i].lastOperator = 'erode';\r\n this.storedData[i].elem.setAttribute('filter', 'url(' + locationHref + '#' + this.storedData[i].filterId + ')');\r\n }\r\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\r\n } else {\r\n if (this.storedData[i].lastOperator !== 'dilate') {\r\n this.storedData[i].lastOperator = 'dilate';\r\n this.storedData[i].elem.setAttribute('filter', null);\r\n }\r\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nMaskElement.prototype.getMaskelement = function () {\r\n return this.maskElement;\r\n};\r\n\r\nMaskElement.prototype.createLayerSolidPath = function () {\r\n var path = 'M0,0 ';\r\n path += ' h' + this.globalData.compSize.w;\r\n path += ' v' + this.globalData.compSize.h;\r\n path += ' h-' + this.globalData.compSize.w;\r\n path += ' v-' + this.globalData.compSize.h + ' ';\r\n return path;\r\n};\r\n\r\nMaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\r\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\r\n var i;\r\n var len;\r\n len = pathNodes._length;\r\n for (i = 1; i < len; i += 1) {\r\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\r\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\r\n }\r\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\r\n if (pathNodes.c && len > 1) {\r\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\r\n }\r\n // pathNodes.__renderedString = pathString;\r\n\r\n if (viewData.lastPath !== pathString) {\r\n var pathShapeValue = '';\r\n if (viewData.elem) {\r\n if (pathNodes.c) {\r\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\r\n }\r\n viewData.elem.setAttribute('d', pathShapeValue);\r\n }\r\n viewData.lastPath = pathString;\r\n }\r\n};\r\n\r\nMaskElement.prototype.destroy = function () {\r\n this.element = null;\r\n this.globalData = null;\r\n this.maskElement = null;\r\n this.data = null;\r\n this.masksProperties = null;\r\n};\r\n\r\n/**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\r\n\r\nfunction HierarchyElement() {}\r\n\r\nHierarchyElement.prototype = {\r\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\r\n initHierarchy: function () {\r\n // element's parent list\r\n this.hierarchy = [];\r\n // if element is parent of another layer _isParent will be true\r\n this._isParent = false;\r\n this.checkParenting();\r\n },\r\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\r\n setHierarchy: function (hierarchy) {\r\n this.hierarchy = hierarchy;\r\n },\r\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\r\n setAsParent: function () {\r\n this._isParent = true;\r\n },\r\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\r\n checkParenting: function () {\r\n if (this.data.parent !== undefined) {\r\n this.comp.buildElementParenting(this, this.data.parent, []);\r\n }\r\n },\r\n};\r\n\r\n/**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\r\n\r\nfunction FrameElement() {}\r\n\r\nFrameElement.prototype = {\r\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\r\n initFrame: function () {\r\n // set to true when inpoint is rendered\r\n this._isFirstFrame = false;\r\n // list of animated properties\r\n this.dynamicProperties = [];\r\n // If layer has been modified in current tick this will be true\r\n this._mdf = false;\r\n },\r\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\r\n prepareProperties: function (num, isVisible) {\r\n var i;\r\n var len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (isVisible || (this._isParent && this.dynamicProperties[i].propType === 'transform')) {\r\n this.dynamicProperties[i].getValue();\r\n if (this.dynamicProperties[i]._mdf) {\r\n this.globalData._mdf = true;\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n },\r\n addDynamicProperty: function (prop) {\r\n if (this.dynamicProperties.indexOf(prop) === -1) {\r\n this.dynamicProperties.push(prop);\r\n }\r\n },\r\n};\r\n\r\n/* global TransformPropertyFactory, Matrix */\r\n\r\nfunction TransformElement() {}\r\n\r\nTransformElement.prototype = {\r\n initTransform: function () {\r\n this.finalTransform = {\r\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : { o: 0 },\r\n _matMdf: false,\r\n _opMdf: false,\r\n mat: new Matrix(),\r\n };\r\n if (this.data.ao) {\r\n this.finalTransform.mProp.autoOriented = true;\r\n }\r\n\r\n // TODO: check TYPE 11: Guided elements\r\n if (this.data.ty !== 11) {\r\n // this.createElements();\r\n }\r\n },\r\n renderTransform: function () {\r\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\r\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\r\n\r\n if (this.hierarchy) {\r\n var mat;\r\n var finalMat = this.finalTransform.mat;\r\n var i = 0;\r\n var len = this.hierarchy.length;\r\n // Checking if any of the transformation matrices in the hierarchy chain has changed.\r\n if (!this.finalTransform._matMdf) {\r\n while (i < len) {\r\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\r\n this.finalTransform._matMdf = true;\r\n break;\r\n }\r\n i += 1;\r\n }\r\n }\r\n\r\n if (this.finalTransform._matMdf) {\r\n mat = this.finalTransform.mProp.v.props;\r\n finalMat.cloneFromProps(mat);\r\n for (i = 0; i < len; i += 1) {\r\n mat = this.hierarchy[i].finalTransform.mProp.v.props;\r\n finalMat.transform(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5], mat[6], mat[7], mat[8], mat[9], mat[10], mat[11], mat[12], mat[13], mat[14], mat[15]);\r\n }\r\n }\r\n }\r\n },\r\n globalToLocal: function (pt) {\r\n var transforms = [];\r\n transforms.push(this.finalTransform);\r\n var flag = true;\r\n var comp = this.comp;\r\n while (flag) {\r\n if (comp.finalTransform) {\r\n if (comp.data.hasMask) {\r\n transforms.splice(0, 0, comp.finalTransform);\r\n }\r\n comp = comp.comp;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n var i;\r\n var len = transforms.length;\r\n var ptNew;\r\n for (i = 0; i < len; i += 1) {\r\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0);\r\n // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\r\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\r\n }\r\n return pt;\r\n },\r\n mHelper: new Matrix(),\r\n};\r\n\r\nfunction RenderableElement() {\r\n\r\n}\r\n\r\nRenderableElement.prototype = {\r\n initRenderable: function () {\r\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\r\n this.isInRange = false;\r\n // layer's display state\r\n this.hidden = false;\r\n // If layer's transparency equals 0, it can be hidden\r\n this.isTransparent = false;\r\n // list of animated components\r\n this.renderableComponents = [];\r\n },\r\n addRenderableComponent: function (component) {\r\n if (this.renderableComponents.indexOf(component) === -1) {\r\n this.renderableComponents.push(component);\r\n }\r\n },\r\n removeRenderableComponent: function (component) {\r\n if (this.renderableComponents.indexOf(component) !== -1) {\r\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\r\n }\r\n },\r\n prepareRenderableFrame: function (num) {\r\n this.checkLayerLimits(num);\r\n },\r\n checkTransparency: function () {\r\n if (this.finalTransform.mProp.o.v <= 0) {\r\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\r\n this.isTransparent = true;\r\n this.hide();\r\n }\r\n } else if (this.isTransparent) {\r\n this.isTransparent = false;\r\n this.show();\r\n }\r\n },\r\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\r\n checkLayerLimits: function (num) {\r\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\r\n if (this.isInRange !== true) {\r\n this.globalData._mdf = true;\r\n this._mdf = true;\r\n this.isInRange = true;\r\n this.show();\r\n }\r\n } else if (this.isInRange !== false) {\r\n this.globalData._mdf = true;\r\n this.isInRange = false;\r\n this.hide();\r\n }\r\n },\r\n renderRenderable: function () {\r\n var i;\r\n var len = this.renderableComponents.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\r\n }\r\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\r\n },\r\n sourceRectAtTime: function () {\r\n return {\r\n top: 0,\r\n left: 0,\r\n width: 100,\r\n height: 100,\r\n };\r\n },\r\n getLayerSize: function () {\r\n if (this.data.ty === 5) {\r\n return { w: this.data.textData.width, h: this.data.textData.height };\r\n }\r\n return { w: this.data.width, h: this.data.height };\r\n },\r\n};\r\n\r\n/* global extendPrototype, RenderableElement, createProxyFunction */\r\n\r\nfunction RenderableDOMElement() {}\r\n\r\n(function () {\r\n var _prototype = {\r\n initElement: function (data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n this.initRenderable();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n this.createContent();\r\n this.hide();\r\n },\r\n hide: function () {\r\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style.display = 'none';\r\n this.hidden = true;\r\n }\r\n },\r\n show: function () {\r\n if (this.isInRange && !this.isTransparent) {\r\n if (!this.data.hd) {\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style.display = 'block';\r\n }\r\n this.hidden = false;\r\n this._isFirstFrame = true;\r\n }\r\n },\r\n renderFrame: function () {\r\n // If it is exported as hidden (data.hd === true) no need to render\r\n // If it is not visible no need to render\r\n if (this.data.hd || this.hidden) {\r\n return;\r\n }\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.renderElement();\r\n this.renderInnerContent();\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n renderInnerContent: function () {},\r\n prepareFrame: function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n this.checkTransparency();\r\n },\r\n destroy: function () {\r\n this.innerElem = null;\r\n this.destroyBaseElement();\r\n },\r\n };\r\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\r\n}());\r\n\r\n/* exported ProcessedElement */\r\n\r\nfunction ProcessedElement(element, position) {\r\n this.elem = element;\r\n this.pos = position;\r\n}\r\n\r\n/* global createNS */\r\n\r\nfunction SVGStyleData(data, level) {\r\n this.data = data;\r\n this.type = data.ty;\r\n this.d = '';\r\n this.lvl = level;\r\n this._mdf = false;\r\n this.closed = data.hd === true;\r\n this.pElem = createNS('path');\r\n this.msElem = null;\r\n}\r\n\r\nSVGStyleData.prototype.reset = function () {\r\n this.d = '';\r\n this._mdf = false;\r\n};\r\n\r\nfunction SVGShapeData(transformers, level, shape) {\r\n this.caches = [];\r\n this.styles = [];\r\n this.transformers = transformers;\r\n this.lStr = '';\r\n this.sh = shape;\r\n this.lvl = level;\r\n // TODO find if there are some cases where _isAnimated can be false.\r\n // For now, since shapes add up with other shapes. They have to be calculated every time.\r\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\r\n this._isAnimated = !!shape.k;\r\n // TODO: commenting this for now since all shapes are animated\r\n var i = 0;\r\n var len = transformers.length;\r\n while (i < len) {\r\n if (transformers[i].mProps.dynamicProperties.length) {\r\n this._isAnimated = true;\r\n break;\r\n }\r\n i += 1;\r\n }\r\n}\r\n\r\nSVGShapeData.prototype.setAsAnimated = function () {\r\n this._isAnimated = true;\r\n};\r\n\r\n/* exported SVGTransformData */\r\n\r\nfunction SVGTransformData(mProps, op, container) {\r\n this.transform = {\r\n mProps: mProps,\r\n op: op,\r\n container: container,\r\n };\r\n this.elements = [];\r\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\r\n}\r\n\r\n/* global DashProperty, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction SVGStrokeStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\r\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\r\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\r\n this.style = styleOb;\r\n this._isAnimated = !!this._isAnimated;\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\r\n\r\n/* global PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction SVGFillStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\r\n this.style = styleOb;\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGFillStyleData);\r\n\r\n/* global PropertyFactory, degToRads, GradientProperty, createElementID, createNS, locationHref,\r\nextendPrototype, DynamicPropertyContainer, lineCapEnum, lineJoinEnum */\r\n\r\nfunction SVGGradientFillStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.initGradientData(elem, data, styleOb);\r\n}\r\n\r\nSVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\r\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\r\n this.h = PropertyFactory.getProp(elem, data.h || { k: 0 }, 0, 0.01, this);\r\n this.a = PropertyFactory.getProp(elem, data.a || { k: 0 }, 0, degToRads, this);\r\n this.g = new GradientProperty(elem, data.g, this);\r\n this.style = styleOb;\r\n this.stops = [];\r\n this.setGradientData(styleOb.pElem, data);\r\n this.setGradientOpacity(data, styleOb);\r\n this._isAnimated = !!this._isAnimated;\r\n};\r\n\r\nSVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\r\n var gradientId = createElementID();\r\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\r\n gfill.setAttribute('id', gradientId);\r\n gfill.setAttribute('spreadMethod', 'pad');\r\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n var stops = [];\r\n var stop;\r\n var j;\r\n var jLen;\r\n jLen = data.g.p * 4;\r\n for (j = 0; j < jLen; j += 4) {\r\n stop = createNS('stop');\r\n gfill.appendChild(stop);\r\n stops.push(stop);\r\n }\r\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + locationHref + '#' + gradientId + ')');\r\n this.gf = gfill;\r\n this.cst = stops;\r\n};\r\n\r\nSVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\r\n if (this.g._hasOpacity && !this.g._collapsable) {\r\n var stop;\r\n var j;\r\n var jLen;\r\n var mask = createNS('mask');\r\n var maskElement = createNS('path');\r\n mask.appendChild(maskElement);\r\n var opacityId = createElementID();\r\n var maskId = createElementID();\r\n mask.setAttribute('id', maskId);\r\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\r\n opFill.setAttribute('id', opacityId);\r\n opFill.setAttribute('spreadMethod', 'pad');\r\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\r\n var stops = this.stops;\r\n for (j = data.g.p * 4; j < jLen; j += 2) {\r\n stop = createNS('stop');\r\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\r\n opFill.appendChild(stop);\r\n stops.push(stop);\r\n }\r\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + locationHref + '#' + opacityId + ')');\r\n if (data.ty === 'gs') {\r\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\r\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\r\n if (data.lj === 1) {\r\n maskElement.setAttribute('stroke-miterlimit', data.ml);\r\n }\r\n }\r\n this.of = opFill;\r\n this.ms = mask;\r\n this.ost = stops;\r\n this.maskId = maskId;\r\n styleOb.msElem = maskElement;\r\n }\r\n};\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\r\n\r\n/* global PropertyFactory, DashProperty, extendPrototype, SVGGradientFillStyleData, DynamicPropertyContainer */\r\n\r\nfunction SVGGradientStrokeStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\r\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\r\n this.initGradientData(elem, data, styleOb);\r\n this._isAnimated = !!this._isAnimated;\r\n}\r\n\r\nextendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\r\n\r\n/* global createNS */\r\n/* exported ShapeGroupData */\r\n\r\nfunction ShapeGroupData() {\r\n this.it = [];\r\n this.prevViewData = [];\r\n this.gr = createNS('g');\r\n}\r\n\r\n/* global Matrix, buildShapeString, bmFloor */\r\n/* exported SVGElementsRenderer */\r\n\r\nvar SVGElementsRenderer = (function () {\r\n var _identityMatrix = new Matrix();\r\n var _matrixHelper = new Matrix();\r\n\r\n var ob = {\r\n createRenderFunction: createRenderFunction,\r\n };\r\n\r\n function createRenderFunction(data) {\r\n switch (data.ty) {\r\n case 'fl':\r\n return renderFill;\r\n case 'gf':\r\n return renderGradient;\r\n case 'gs':\r\n return renderGradientStroke;\r\n case 'st':\r\n return renderStroke;\r\n case 'sh':\r\n case 'el':\r\n case 'rc':\r\n case 'sr':\r\n return renderPath;\r\n case 'tr':\r\n return renderContentTransform;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n function renderContentTransform(styleData, itemData, isFirstFrame) {\r\n if (isFirstFrame || itemData.transform.op._mdf) {\r\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\r\n }\r\n if (isFirstFrame || itemData.transform.mProps._mdf) {\r\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\r\n }\r\n }\r\n\r\n function renderPath(styleData, itemData, isFirstFrame) {\r\n var j;\r\n var jLen;\r\n var pathStringTransformed;\r\n var redraw;\r\n var pathNodes;\r\n var l;\r\n var lLen = itemData.styles.length;\r\n var lvl = itemData.lvl;\r\n var paths;\r\n var mat;\r\n var props;\r\n var iterations;\r\n var k;\r\n for (l = 0; l < lLen; l += 1) {\r\n redraw = itemData.sh._mdf || isFirstFrame;\r\n if (itemData.styles[l].lvl < lvl) {\r\n mat = _matrixHelper.reset();\r\n iterations = lvl - itemData.styles[l].lvl;\r\n k = itemData.transformers.length - 1;\r\n while (!redraw && iterations > 0) {\r\n redraw = itemData.transformers[k].mProps._mdf || redraw;\r\n iterations -= 1;\r\n k -= 1;\r\n }\r\n if (redraw) {\r\n iterations = lvl - itemData.styles[l].lvl;\r\n k = itemData.transformers.length - 1;\r\n while (iterations > 0) {\r\n props = itemData.transformers[k].mProps.v.props;\r\n mat.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]);\r\n iterations -= 1;\r\n k -= 1;\r\n }\r\n }\r\n } else {\r\n mat = _identityMatrix;\r\n }\r\n paths = itemData.sh.paths;\r\n jLen = paths._length;\r\n if (redraw) {\r\n pathStringTransformed = '';\r\n for (j = 0; j < jLen; j += 1) {\r\n pathNodes = paths.shapes[j];\r\n if (pathNodes && pathNodes._length) {\r\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\r\n }\r\n }\r\n itemData.caches[l] = pathStringTransformed;\r\n } else {\r\n pathStringTransformed = itemData.caches[l];\r\n }\r\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\r\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\r\n }\r\n }\r\n\r\n function renderFill(styleData, itemData, isFirstFrame) {\r\n var styleElem = itemData.style;\r\n\r\n if (itemData.c._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\r\n }\r\n if (itemData.o._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\r\n }\r\n }\r\n\r\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\r\n renderGradient(styleData, itemData, isFirstFrame);\r\n renderStroke(styleData, itemData, isFirstFrame);\r\n }\r\n\r\n function renderGradient(styleData, itemData, isFirstFrame) {\r\n var gfill = itemData.gf;\r\n var hasOpacity = itemData.g._hasOpacity;\r\n var pt1 = itemData.s.v;\r\n var pt2 = itemData.e.v;\r\n\r\n if (itemData.o._mdf || isFirstFrame) {\r\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\r\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\r\n }\r\n if (itemData.s._mdf || isFirstFrame) {\r\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\r\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\r\n gfill.setAttribute(attr1, pt1[0]);\r\n gfill.setAttribute(attr2, pt1[1]);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute(attr1, pt1[0]);\r\n itemData.of.setAttribute(attr2, pt1[1]);\r\n }\r\n }\r\n var stops;\r\n var i;\r\n var len;\r\n var stop;\r\n if (itemData.g._cmdf || isFirstFrame) {\r\n stops = itemData.cst;\r\n var cValues = itemData.g.c;\r\n len = stops.length;\r\n for (i = 0; i < len; i += 1) {\r\n stop = stops[i];\r\n stop.setAttribute('offset', cValues[i * 4] + '%');\r\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\r\n }\r\n }\r\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\r\n var oValues = itemData.g.o;\r\n if (itemData.g._collapsable) {\r\n stops = itemData.cst;\r\n } else {\r\n stops = itemData.ost;\r\n }\r\n len = stops.length;\r\n for (i = 0; i < len; i += 1) {\r\n stop = stops[i];\r\n if (!itemData.g._collapsable) {\r\n stop.setAttribute('offset', oValues[i * 2] + '%');\r\n }\r\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\r\n }\r\n }\r\n if (styleData.t === 1) {\r\n if (itemData.e._mdf || isFirstFrame) {\r\n gfill.setAttribute('x2', pt2[0]);\r\n gfill.setAttribute('y2', pt2[1]);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('x2', pt2[0]);\r\n itemData.of.setAttribute('y2', pt2[1]);\r\n }\r\n }\r\n } else {\r\n var rad;\r\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\r\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n gfill.setAttribute('r', rad);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('r', rad);\r\n }\r\n }\r\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\r\n if (!rad) {\r\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n }\r\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\r\n\r\n var percent = itemData.h.v;\r\n if (percent >= 1) {\r\n percent = 0.99;\r\n } else if (percent <= -1) {\r\n percent = -0.99;\r\n }\r\n var dist = rad * percent;\r\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\r\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\r\n gfill.setAttribute('fx', x);\r\n gfill.setAttribute('fy', y);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('fx', x);\r\n itemData.of.setAttribute('fy', y);\r\n }\r\n }\r\n // gfill.setAttribute('fy','200');\r\n }\r\n }\r\n\r\n function renderStroke(styleData, itemData, isFirstFrame) {\r\n var styleElem = itemData.style;\r\n var d = itemData.d;\r\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\r\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\r\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\r\n }\r\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\r\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\r\n }\r\n if (itemData.o._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\r\n }\r\n if (itemData.w._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\r\n if (styleElem.msElem) {\r\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\r\n }\r\n }\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* global Matrix */\r\n\r\nfunction ShapeTransformManager() {\r\n this.sequences = {};\r\n this.sequenceList = [];\r\n this.transform_key_count = 0;\r\n}\r\n\r\nShapeTransformManager.prototype = {\r\n addTransformSequence: function (transforms) {\r\n var i;\r\n var len = transforms.length;\r\n var key = '_';\r\n for (i = 0; i < len; i += 1) {\r\n key += transforms[i].transform.key + '_';\r\n }\r\n var sequence = this.sequences[key];\r\n if (!sequence) {\r\n sequence = {\r\n transforms: [].concat(transforms),\r\n finalTransform: new Matrix(),\r\n _mdf: false,\r\n };\r\n this.sequences[key] = sequence;\r\n this.sequenceList.push(sequence);\r\n }\r\n return sequence;\r\n },\r\n processSequence: function (sequence, isFirstFrame) {\r\n var i = 0;\r\n var len = sequence.transforms.length;\r\n var _mdf = isFirstFrame;\r\n while (i < len && !isFirstFrame) {\r\n if (sequence.transforms[i].transform.mProps._mdf) {\r\n _mdf = true;\r\n break;\r\n }\r\n i += 1;\r\n }\r\n if (_mdf) {\r\n var props;\r\n sequence.finalTransform.reset();\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n props = sequence.transforms[i].transform.mProps.v.props;\r\n sequence.finalTransform.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]);\r\n }\r\n }\r\n sequence._mdf = _mdf;\r\n },\r\n processSequences: function (isFirstFrame) {\r\n var i;\r\n var len = this.sequenceList.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.processSequence(this.sequenceList[i], isFirstFrame);\r\n }\r\n },\r\n getNewKey: function () {\r\n this.transform_key_count += 1;\r\n return '_' + this.transform_key_count;\r\n },\r\n};\r\n\r\n/* global ShapePropertyFactory, SVGShapeData */\r\n\r\nfunction CVShapeData(element, data, styles, transformsManager) {\r\n this.styledShapes = [];\r\n this.tr = [0, 0, 0, 0, 0, 0];\r\n var ty = 4;\r\n if (data.ty === 'rc') {\r\n ty = 5;\r\n } else if (data.ty === 'el') {\r\n ty = 6;\r\n } else if (data.ty === 'sr') {\r\n ty = 7;\r\n }\r\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\r\n var i;\r\n var len = styles.length;\r\n var styledShape;\r\n for (i = 0; i < len; i += 1) {\r\n if (!styles[i].closed) {\r\n styledShape = {\r\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\r\n trNodes: [],\r\n };\r\n this.styledShapes.push(styledShape);\r\n styles[i].elements.push(styledShape);\r\n }\r\n }\r\n}\r\n\r\nCVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\r\n\r\n/* global LayerExpressionInterface, EffectsExpressionInterface, CompExpressionInterface, ShapeExpressionInterface,\r\nTextExpressionInterface, getBlendMode,createElementID, EffectsManager */\r\n\r\nfunction BaseElement() {\r\n}\r\n\r\nBaseElement.prototype = {\r\n checkMasks: function () {\r\n if (!this.data.hasMask) {\r\n return false;\r\n }\r\n var i = 0;\r\n var len = this.data.masksProperties.length;\r\n while (i < len) {\r\n if ((this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false)) {\r\n return true;\r\n }\r\n i += 1;\r\n }\r\n return false;\r\n },\r\n initExpressions: function () {\r\n this.layerInterface = LayerExpressionInterface(this);\r\n if (this.data.hasMask && this.maskManager) {\r\n this.layerInterface.registerMaskInterface(this.maskManager);\r\n }\r\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\r\n this.layerInterface.registerEffectsInterface(effectsInterface);\r\n\r\n if (this.data.ty === 0 || this.data.xt) {\r\n this.compInterface = CompExpressionInterface(this);\r\n } else if (this.data.ty === 4) {\r\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\r\n this.layerInterface.content = this.layerInterface.shapeInterface;\r\n } else if (this.data.ty === 5) {\r\n this.layerInterface.textInterface = TextExpressionInterface(this);\r\n this.layerInterface.text = this.layerInterface.textInterface;\r\n }\r\n },\r\n setBlendMode: function () {\r\n var blendModeValue = getBlendMode(this.data.bm);\r\n var elem = this.baseElement || this.layerElement;\r\n\r\n elem.style['mix-blend-mode'] = blendModeValue;\r\n },\r\n initBaseData: function (data, globalData, comp) {\r\n this.globalData = globalData;\r\n this.comp = comp;\r\n this.data = data;\r\n this.layerId = createElementID();\r\n\r\n // Stretch factor for old animations missing this property.\r\n if (!this.data.sr) {\r\n this.data.sr = 1;\r\n }\r\n // effects manager\r\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\r\n },\r\n getType: function () {\r\n return this.type;\r\n },\r\n sourceRectAtTime: function () {},\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HierarchyElement, FrameElement */\r\n\r\nfunction NullElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initFrame();\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n}\r\n\r\nNullElement.prototype.prepareFrame = function (num) {\r\n this.prepareProperties(num, true);\r\n};\r\n\r\nNullElement.prototype.renderFrame = function () {\r\n};\r\n\r\nNullElement.prototype.getBaseElement = function () {\r\n return null;\r\n};\r\n\r\nNullElement.prototype.destroy = function () {\r\n};\r\n\r\nNullElement.prototype.sourceRectAtTime = function () {\r\n};\r\n\r\nNullElement.prototype.hide = function () {\r\n};\r\n\r\nextendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\r\n\r\n/* global filtersFactory, featureSupport, filtersFactory, createElementID, createNS, MaskElement, SVGEffects, locationHref */\r\n\r\nfunction SVGBaseElement() {\r\n}\r\n\r\nSVGBaseElement.prototype = {\r\n initRendererElement: function () {\r\n this.layerElement = createNS('g');\r\n },\r\n createContainerElements: function () {\r\n this.matteElement = createNS('g');\r\n this.transformedElement = this.layerElement;\r\n this.maskedElement = this.layerElement;\r\n this._sizeChanged = false;\r\n var layerElementParent = null;\r\n // If this layer acts as a mask for the following layer\r\n var filId;\r\n var fil;\r\n var gg;\r\n if (this.data.td) {\r\n if (this.data.td == 3 || this.data.td == 1) { // eslint-disable-line eqeqeq\r\n var masker = createNS('mask');\r\n masker.setAttribute('id', this.layerId);\r\n masker.setAttribute('mask-type', this.data.td == 3 ? 'luminance' : 'alpha'); // eslint-disable-line eqeqeq\r\n masker.appendChild(this.layerElement);\r\n layerElementParent = masker;\r\n this.globalData.defs.appendChild(masker);\r\n // This is only for IE and Edge when mask if of type alpha\r\n if (!featureSupport.maskType && this.data.td == 1) { // eslint-disable-line eqeqeq\r\n masker.setAttribute('mask-type', 'luminance');\r\n filId = createElementID();\r\n fil = filtersFactory.createFilter(filId);\r\n this.globalData.defs.appendChild(fil);\r\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\r\n gg = createNS('g');\r\n gg.appendChild(this.layerElement);\r\n layerElementParent = gg;\r\n masker.appendChild(gg);\r\n gg.setAttribute('filter', 'url(' + locationHref + '#' + filId + ')');\r\n }\r\n } else if (this.data.td == 2) { // eslint-disable-line eqeqeq\r\n var maskGroup = createNS('mask');\r\n maskGroup.setAttribute('id', this.layerId);\r\n maskGroup.setAttribute('mask-type', 'alpha');\r\n var maskGrouper = createNS('g');\r\n maskGroup.appendChild(maskGrouper);\r\n filId = createElementID();\r\n fil = filtersFactory.createFilter(filId);\r\n /// /\r\n\r\n // This solution doesn't work on Android when meta tag with viewport attribute is set\r\n /* var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values','1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1');\r\n fil.appendChild(feColorMatrix); */\r\n /// /\r\n var feCTr = createNS('feComponentTransfer');\r\n feCTr.setAttribute('in', 'SourceGraphic');\r\n fil.appendChild(feCTr);\r\n var feFunc = createNS('feFuncA');\r\n feFunc.setAttribute('type', 'table');\r\n feFunc.setAttribute('tableValues', '1.0 0.0');\r\n feCTr.appendChild(feFunc);\r\n /// /\r\n this.globalData.defs.appendChild(fil);\r\n var alphaRect = createNS('rect');\r\n alphaRect.setAttribute('width', this.comp.data.w);\r\n alphaRect.setAttribute('height', this.comp.data.h);\r\n alphaRect.setAttribute('x', '0');\r\n alphaRect.setAttribute('y', '0');\r\n alphaRect.setAttribute('fill', '#ffffff');\r\n alphaRect.setAttribute('opacity', '0');\r\n maskGrouper.setAttribute('filter', 'url(' + locationHref + '#' + filId + ')');\r\n maskGrouper.appendChild(alphaRect);\r\n maskGrouper.appendChild(this.layerElement);\r\n layerElementParent = maskGrouper;\r\n if (!featureSupport.maskType) {\r\n maskGroup.setAttribute('mask-type', 'luminance');\r\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\r\n gg = createNS('g');\r\n maskGrouper.appendChild(alphaRect);\r\n gg.appendChild(this.layerElement);\r\n layerElementParent = gg;\r\n maskGrouper.appendChild(gg);\r\n }\r\n this.globalData.defs.appendChild(maskGroup);\r\n }\r\n } else if (this.data.tt) {\r\n this.matteElement.appendChild(this.layerElement);\r\n layerElementParent = this.matteElement;\r\n this.baseElement = this.matteElement;\r\n } else {\r\n this.baseElement = this.layerElement;\r\n }\r\n if (this.data.ln) {\r\n this.layerElement.setAttribute('id', this.data.ln);\r\n }\r\n if (this.data.cl) {\r\n this.layerElement.setAttribute('class', this.data.cl);\r\n }\r\n // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\r\n if (this.data.ty === 0 && !this.data.hd) {\r\n var cp = createNS('clipPath');\r\n var pt = createNS('path');\r\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\r\n var clipId = createElementID();\r\n cp.setAttribute('id', clipId);\r\n cp.appendChild(pt);\r\n this.globalData.defs.appendChild(cp);\r\n\r\n if (this.checkMasks()) {\r\n var cpGroup = createNS('g');\r\n cpGroup.setAttribute('clip-path', 'url(' + locationHref + '#' + clipId + ')');\r\n cpGroup.appendChild(this.layerElement);\r\n this.transformedElement = cpGroup;\r\n if (layerElementParent) {\r\n layerElementParent.appendChild(this.transformedElement);\r\n } else {\r\n this.baseElement = this.transformedElement;\r\n }\r\n } else {\r\n this.layerElement.setAttribute('clip-path', 'url(' + locationHref + '#' + clipId + ')');\r\n }\r\n }\r\n if (this.data.bm !== 0) {\r\n this.setBlendMode();\r\n }\r\n },\r\n renderElement: function () {\r\n if (this.finalTransform._matMdf) {\r\n this.transformedElement.setAttribute('transform', this.finalTransform.mat.to2dCSS());\r\n }\r\n if (this.finalTransform._opMdf) {\r\n this.transformedElement.setAttribute('opacity', this.finalTransform.mProp.o.v);\r\n }\r\n },\r\n destroyBaseElement: function () {\r\n this.layerElement = null;\r\n this.matteElement = null;\r\n this.maskManager.destroy();\r\n },\r\n getBaseElement: function () {\r\n if (this.data.hd) {\r\n return null;\r\n }\r\n return this.baseElement;\r\n },\r\n createRenderableComponents: function () {\r\n this.maskManager = new MaskElement(this.data, this, this.globalData);\r\n this.renderableEffectsManager = new SVGEffects(this);\r\n },\r\n setMatte: function (id) {\r\n if (!this.matteElement) {\r\n return;\r\n }\r\n this.matteElement.setAttribute('mask', 'url(' + locationHref + '#' + id + ')');\r\n },\r\n};\r\n\r\n/* global ProcessedElement */\r\n\r\nfunction IShapeElement() {\r\n}\r\n\r\nIShapeElement.prototype = {\r\n addShapeToModifiers: function (data) {\r\n var i;\r\n var len = this.shapeModifiers.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.shapeModifiers[i].addShape(data);\r\n }\r\n },\r\n isShapeInAnimatedModifiers: function (data) {\r\n var i = 0;\r\n var len = this.shapeModifiers.length;\r\n while (i < len) {\r\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n renderModifiers: function () {\r\n if (!this.shapeModifiers.length) {\r\n return;\r\n }\r\n var i;\r\n var len = this.shapes.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.shapes[i].sh.reset();\r\n }\r\n\r\n len = this.shapeModifiers.length;\r\n var shouldBreakProcess;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame);\r\n // workaround to fix cases where a repeater resets the shape so the following processes get called twice\r\n // TODO: find a better solution for this\r\n if (shouldBreakProcess) {\r\n break;\r\n }\r\n }\r\n },\r\n\r\n searchProcessedElement: function (elem) {\r\n var elements = this.processedElements;\r\n var i = 0;\r\n var len = elements.length;\r\n while (i < len) {\r\n if (elements[i].elem === elem) {\r\n return elements[i].pos;\r\n }\r\n i += 1;\r\n }\r\n return 0;\r\n },\r\n addProcessedElement: function (elem, pos) {\r\n var elements = this.processedElements;\r\n var i = elements.length;\r\n while (i) {\r\n i -= 1;\r\n if (elements[i].elem === elem) {\r\n elements[i].pos = pos;\r\n return;\r\n }\r\n }\r\n elements.push(new ProcessedElement(elem, pos));\r\n },\r\n prepareFrame: function (num) {\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n },\r\n};\r\n\r\n/* global TextProperty, TextAnimatorProperty, buildShapeString, LetterProps */\r\n\r\nfunction ITextElement() {\r\n}\r\n\r\nITextElement.prototype.initElement = function (data, globalData, comp) {\r\n this.lettersChangedFlag = true;\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\r\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n this.initRenderable();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n this.createContent();\r\n this.hide();\r\n this.textAnimator.searchProperties(this.dynamicProperties);\r\n};\r\n\r\nITextElement.prototype.prepareFrame = function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\r\n this.buildNewText();\r\n this.textProperty._isFirstFrame = false;\r\n this.textProperty._mdf = false;\r\n }\r\n};\r\n\r\nITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\r\n var j;\r\n var jLen = shapes.length;\r\n var pathNodes;\r\n var shapeStr = '';\r\n for (j = 0; j < jLen; j += 1) {\r\n pathNodes = shapes[j].ks.k;\r\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\r\n }\r\n return shapeStr;\r\n};\r\n\r\nITextElement.prototype.updateDocumentData = function (newData, index) {\r\n this.textProperty.updateDocumentData(newData, index);\r\n};\r\n\r\nITextElement.prototype.canResizeFont = function (_canResize) {\r\n this.textProperty.canResizeFont(_canResize);\r\n};\r\n\r\nITextElement.prototype.setMinimumFontSize = function (_fontSize) {\r\n this.textProperty.setMinimumFontSize(_fontSize);\r\n};\r\n\r\nITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\r\n if (documentData.ps) {\r\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\r\n }\r\n matrixHelper.translate(0, -documentData.ls, 0);\r\n switch (documentData.j) {\r\n case 1:\r\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\r\n break;\r\n case 2:\r\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\r\n break;\r\n default:\r\n break;\r\n }\r\n matrixHelper.translate(xPos, yPos, 0);\r\n};\r\n\r\nITextElement.prototype.buildColor = function (colorData) {\r\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\r\n};\r\n\r\nITextElement.prototype.emptyProp = new LetterProps();\r\n\r\nITextElement.prototype.destroy = function () {\r\n\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement */\r\n\r\nfunction ICompElement() {}\r\n\r\nextendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\r\n\r\nICompElement.prototype.initElement = function (data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initTransform(data, globalData, comp);\r\n this.initRenderable();\r\n this.initHierarchy();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n if (this.data.xt || !globalData.progressiveLoad) {\r\n this.buildAllItems();\r\n }\r\n this.hide();\r\n};\r\n\r\n/* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n}; */\r\n\r\nICompElement.prototype.prepareFrame = function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n if (!this.isInRange && !this.data.xt) {\r\n return;\r\n }\r\n\r\n if (!this.tm._placeholder) {\r\n var timeRemapped = this.tm.v;\r\n if (timeRemapped === this.data.op) {\r\n timeRemapped = this.data.op - 1;\r\n }\r\n this.renderedFrame = timeRemapped;\r\n } else {\r\n this.renderedFrame = num / this.data.sr;\r\n }\r\n var i;\r\n var len = this.elements.length;\r\n if (!this.completeLayers) {\r\n this.checkLayers(this.renderedFrame);\r\n }\r\n // This iteration needs to be backwards because of how expressions connect between each other\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\r\n if (this.elements[i]._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.renderInnerContent = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.setElements = function (elems) {\r\n this.elements = elems;\r\n};\r\n\r\nICompElement.prototype.getElements = function () {\r\n return this.elements;\r\n};\r\n\r\nICompElement.prototype.destroyElements = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.destroy = function () {\r\n this.destroyElements();\r\n this.destroyBaseElement();\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, createNS */\r\n\r\nfunction IImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initElement(data, globalData, comp);\r\n this.sourceRect = {\r\n top: 0, left: 0, width: this.assetData.w, height: this.assetData.h,\r\n };\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\r\n\r\nIImageElement.prototype.createContent = function () {\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n\r\n this.innerElem = createNS('image');\r\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\r\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\r\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\r\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\r\n\r\n this.layerElement.appendChild(this.innerElem);\r\n};\r\n\r\nIImageElement.prototype.sourceRectAtTime = function () {\r\n return this.sourceRect;\r\n};\r\n\r\n/* global extendPrototype, IImageElement, createNS */\r\n\r\nfunction ISolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([IImageElement], ISolidElement);\r\n\r\nISolidElement.prototype.createContent = function () {\r\n var rect = createNS('rect');\r\n /// /rect.style.width = this.data.sw;\r\n /// /rect.style.height = this.data.sh;\r\n /// /rect.style.fill = this.data.sc;\r\n rect.setAttribute('width', this.data.sw);\r\n rect.setAttribute('height', this.data.sh);\r\n rect.setAttribute('fill', this.data.sc);\r\n this.layerElement.appendChild(rect);\r\n};\r\n\r\n/* global PropertyFactory, extendPrototype, RenderableElement, BaseElement, FrameElement */\r\n\r\nfunction AudioElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initRenderable();\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initBaseData(data, globalData, comp);\r\n this._isPlaying = false;\r\n this._canPlay = false;\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n this.audio = this.globalData.audioController.createAudio(assetPath);\r\n this._currentTime = 0;\r\n this.globalData.audioController.addAudio(this);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nAudioElement.prototype.prepareFrame = function (num) {\r\n this.prepareRenderableFrame(num, true);\r\n this.prepareProperties(num, true);\r\n if (!this.tm._placeholder) {\r\n var timeRemapped = this.tm.v;\r\n this._currentTime = timeRemapped;\r\n } else {\r\n this._currentTime = num / this.data.sr;\r\n }\r\n};\r\n\r\nextendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\r\n\r\nAudioElement.prototype.renderFrame = function () {\r\n if (this.isInRange && this._canPlay) {\r\n if (!this._isPlaying) {\r\n this.audio.play();\r\n this.audio.seek(this._currentTime / this.globalData.frameRate);\r\n this._isPlaying = true;\r\n } else if (!this.audio.playing()\r\n || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1\r\n ) {\r\n this.audio.seek(this._currentTime / this.globalData.frameRate);\r\n }\r\n }\r\n};\r\n\r\nAudioElement.prototype.show = function () {\r\n // this.audio.play()\r\n};\r\n\r\nAudioElement.prototype.hide = function () {\r\n this.audio.pause();\r\n this._isPlaying = false;\r\n};\r\n\r\nAudioElement.prototype.pause = function () {\r\n this.audio.pause();\r\n this._isPlaying = false;\r\n this._canPlay = false;\r\n};\r\n\r\nAudioElement.prototype.resume = function () {\r\n this._canPlay = true;\r\n};\r\n\r\nAudioElement.prototype.setRate = function (rateValue) {\r\n this.audio.rate(rateValue);\r\n};\r\n\r\nAudioElement.prototype.volume = function (volumeValue) {\r\n this.audio.volume(volumeValue);\r\n};\r\n\r\nAudioElement.prototype.getBaseElement = function () {\r\n return null;\r\n};\r\n\r\nAudioElement.prototype.destroy = function () {\r\n};\r\n\r\nAudioElement.prototype.sourceRectAtTime = function () {\r\n};\r\n\r\nAudioElement.prototype.initExpressions = function () {\r\n};\r\n\r\n/* global extendPrototype, RenderableElement, BaseElement, FrameElement, FootageInterface */\r\n\r\nfunction FootageElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initRenderable();\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\r\n this.initBaseData(data, globalData, comp);\r\n}\r\n\r\nFootageElement.prototype.prepareFrame = function () {\r\n};\r\n\r\nextendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\r\n\r\nFootageElement.prototype.getBaseElement = function () {\r\n return null;\r\n};\r\n\r\nFootageElement.prototype.renderFrame = function () {\r\n};\r\n\r\nFootageElement.prototype.destroy = function () {\r\n};\r\n\r\nFootageElement.prototype.initExpressions = function () {\r\n this.layerInterface = FootageInterface(this);\r\n};\r\n\r\nFootageElement.prototype.getFootageData = function () {\r\n return this.footageData;\r\n};\r\n\r\n/* global createSizedArray, PropertyFactory, extendPrototype, SVGRenderer, ICompElement, SVGBaseElement */\r\n\r\nfunction SVGCompElement(data, globalData, comp) {\r\n this.layers = data.layers;\r\n this.supports3d = true;\r\n this.completeLayers = false;\r\n this.pendingElements = [];\r\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\r\n // this.layerElement = createNS('g');\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nextendPrototype([SVGRenderer, ICompElement, SVGBaseElement], SVGCompElement);\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement,\r\nRenderableDOMElement, ITextElement, createSizedArray, createNS */\r\n\r\nfunction SVGTextLottieElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.renderType = 'svg';\r\n this.initElement(data, globalData, comp);\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\r\n\r\nSVGTextLottieElement.prototype.createContent = function () {\r\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\r\n this.textContainer = createNS('text');\r\n }\r\n};\r\n\r\nSVGTextLottieElement.prototype.buildTextContents = function (textArray) {\r\n var i = 0;\r\n var len = textArray.length;\r\n var textContents = [];\r\n var currentTextContent = '';\r\n while (i < len) {\r\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\r\n textContents.push(currentTextContent);\r\n currentTextContent = '';\r\n } else {\r\n currentTextContent += textArray[i];\r\n }\r\n i += 1;\r\n }\r\n textContents.push(currentTextContent);\r\n return textContents;\r\n};\r\n\r\nSVGTextLottieElement.prototype.buildNewText = function () {\r\n var i;\r\n var len;\r\n\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\r\n if (documentData.fc) {\r\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\r\n } else {\r\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\r\n }\r\n if (documentData.sc) {\r\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\r\n this.layerElement.setAttribute('stroke-width', documentData.sw);\r\n }\r\n this.layerElement.setAttribute('font-size', documentData.finalSize);\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n if (fontData.fClass) {\r\n this.layerElement.setAttribute('class', fontData.fClass);\r\n } else {\r\n this.layerElement.setAttribute('font-family', fontData.fFamily);\r\n var fWeight = documentData.fWeight;\r\n var fStyle = documentData.fStyle;\r\n this.layerElement.setAttribute('font-style', fStyle);\r\n this.layerElement.setAttribute('font-weight', fWeight);\r\n }\r\n this.layerElement.setAttribute('aria-label', documentData.t);\r\n\r\n var letters = documentData.l || [];\r\n var usesGlyphs = !!this.globalData.fontManager.chars;\r\n len = letters.length;\r\n\r\n var tSpan;\r\n var matrixHelper = this.mHelper;\r\n var shapes;\r\n var shapeStr = '';\r\n var singleShape = this.data.singleShape;\r\n var xPos = 0;\r\n var yPos = 0;\r\n var firstLine = true;\r\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\r\n if (singleShape && !usesGlyphs && !documentData.sz) {\r\n var tElement = this.textContainer;\r\n var justify = 'start';\r\n switch (documentData.j) {\r\n case 1:\r\n justify = 'end';\r\n break;\r\n case 2:\r\n justify = 'middle';\r\n break;\r\n default:\r\n justify = 'start';\r\n break;\r\n }\r\n tElement.setAttribute('text-anchor', justify);\r\n tElement.setAttribute('letter-spacing', trackingOffset);\r\n var textContent = this.buildTextContents(documentData.finalText);\r\n len = textContent.length;\r\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\r\n for (i = 0; i < len; i += 1) {\r\n tSpan = this.textSpans[i] || createNS('tspan');\r\n tSpan.textContent = textContent[i];\r\n tSpan.setAttribute('x', 0);\r\n tSpan.setAttribute('y', yPos);\r\n tSpan.style.display = 'inherit';\r\n tElement.appendChild(tSpan);\r\n this.textSpans[i] = tSpan;\r\n yPos += documentData.finalLineHeight;\r\n }\r\n\r\n this.layerElement.appendChild(tElement);\r\n } else {\r\n var cachedSpansLength = this.textSpans.length;\r\n var shapeData;\r\n var charData;\r\n for (i = 0; i < len; i += 1) {\r\n if (!usesGlyphs || !singleShape || i === 0) {\r\n tSpan = cachedSpansLength > i ? this.textSpans[i] : createNS(usesGlyphs ? 'path' : 'text');\r\n if (cachedSpansLength <= i) {\r\n tSpan.setAttribute('stroke-linecap', 'butt');\r\n tSpan.setAttribute('stroke-linejoin', 'round');\r\n tSpan.setAttribute('stroke-miterlimit', '4');\r\n this.textSpans[i] = tSpan;\r\n this.layerElement.appendChild(tSpan);\r\n }\r\n tSpan.style.display = 'inherit';\r\n }\r\n\r\n matrixHelper.reset();\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n if (singleShape) {\r\n if (letters[i].n) {\r\n xPos = -trackingOffset;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n firstLine = false;\r\n }\r\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n xPos += letters[i].l || 0;\r\n // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\r\n xPos += trackingOffset;\r\n }\r\n if (usesGlyphs) {\r\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n shapeData = (charData && charData.data) || {};\r\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\r\n if (!singleShape) {\r\n tSpan.setAttribute('d', this.createPathShape(matrixHelper, shapes));\r\n } else {\r\n shapeStr += this.createPathShape(matrixHelper, shapes);\r\n }\r\n } else {\r\n if (singleShape) {\r\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\r\n }\r\n tSpan.textContent = letters[i].val;\r\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\r\n }\r\n //\r\n }\r\n if (singleShape && tSpan) {\r\n tSpan.setAttribute('d', shapeStr);\r\n }\r\n }\r\n while (i < this.textSpans.length) {\r\n this.textSpans[i].style.display = 'none';\r\n i += 1;\r\n }\r\n\r\n this._sizeChanged = true;\r\n};\r\n\r\nSVGTextLottieElement.prototype.sourceRectAtTime = function () {\r\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\r\n this.renderInnerContent();\r\n if (this._sizeChanged) {\r\n this._sizeChanged = false;\r\n var textBox = this.layerElement.getBBox();\r\n this.bbox = {\r\n top: textBox.y,\r\n left: textBox.x,\r\n width: textBox.width,\r\n height: textBox.height,\r\n };\r\n }\r\n return this.bbox;\r\n};\r\n\r\nSVGTextLottieElement.prototype.renderInnerContent = function () {\r\n if (!this.data.singleShape) {\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\r\n this._sizeChanged = true;\r\n var i;\r\n var len;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n\r\n var letters = this.textProperty.currentData.l;\r\n\r\n len = letters.length;\r\n var renderedLetter;\r\n var textSpan;\r\n for (i = 0; i < len; i += 1) {\r\n if (!letters[i].n) {\r\n renderedLetter = renderedLetters[i];\r\n textSpan = this.textSpans[i];\r\n if (renderedLetter._mdf.m) {\r\n textSpan.setAttribute('transform', renderedLetter.m);\r\n }\r\n if (renderedLetter._mdf.o) {\r\n textSpan.setAttribute('opacity', renderedLetter.o);\r\n }\r\n if (renderedLetter._mdf.sw) {\r\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\r\n }\r\n if (renderedLetter._mdf.sc) {\r\n textSpan.setAttribute('stroke', renderedLetter.sc);\r\n }\r\n if (renderedLetter._mdf.fc) {\r\n textSpan.setAttribute('fill', renderedLetter.fc);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement,\r\nFrameElement, RenderableDOMElement, Matrix, SVGStyleData, SVGStrokeStyleData, SVGFillStyleData,\r\nSVGGradientFillStyleData, SVGGradientStrokeStyleData, locationHref, getBlendMode, ShapeGroupData,\r\nTransformPropertyFactory, SVGTransformData, ShapePropertyFactory, SVGShapeData, SVGElementsRenderer, ShapeModifiers,\r\nlineCapEnum, lineJoinEnum */\r\n\r\nfunction SVGShapeElement(data, globalData, comp) {\r\n // List of drawable elements\r\n this.shapes = [];\r\n // Full shape data\r\n this.shapesData = data.shapes;\r\n // List of styles that will be applied to shapes\r\n this.stylesList = [];\r\n // List of modifiers that will be applied to shapes\r\n this.shapeModifiers = [];\r\n // List of items in shape tree\r\n this.itemsData = [];\r\n // List of items in previous shape tree\r\n this.processedElements = [];\r\n // List of animated components\r\n this.animatedContents = [];\r\n this.initElement(data, globalData, comp);\r\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n // List of elements that have been created\r\n this.prevViewData = [];\r\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\r\n\r\nSVGShapeElement.prototype.initSecondaryElement = function () {\r\n};\r\n\r\nSVGShapeElement.prototype.identityMatrix = new Matrix();\r\n\r\nSVGShapeElement.prototype.buildExpressionInterface = function () {};\r\n\r\nSVGShapeElement.prototype.createContent = function () {\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\r\n this.filterUniqueShapes();\r\n};\r\n\r\n/*\r\nThis method searches for multiple shapes that affect a single element and one of them is animated\r\n*/\r\nSVGShapeElement.prototype.filterUniqueShapes = function () {\r\n var i;\r\n var len = this.shapes.length;\r\n var shape;\r\n var j;\r\n var jLen = this.stylesList.length;\r\n var style;\r\n var tempShapes = [];\r\n var areAnimated = false;\r\n for (j = 0; j < jLen; j += 1) {\r\n style = this.stylesList[j];\r\n areAnimated = false;\r\n tempShapes.length = 0;\r\n for (i = 0; i < len; i += 1) {\r\n shape = this.shapes[i];\r\n if (shape.styles.indexOf(style) !== -1) {\r\n tempShapes.push(shape);\r\n areAnimated = shape._isAnimated || areAnimated;\r\n }\r\n }\r\n if (tempShapes.length > 1 && areAnimated) {\r\n this.setShapesAsAnimated(tempShapes);\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\r\n var i;\r\n var len = shapes.length;\r\n for (i = 0; i < len; i += 1) {\r\n shapes[i].setAsAnimated();\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.createStyleElement = function (data, level) {\r\n // TODO: prevent drawing of hidden styles\r\n var elementData;\r\n var styleOb = new SVGStyleData(data, level);\r\n\r\n var pathElement = styleOb.pElem;\r\n if (data.ty === 'st') {\r\n elementData = new SVGStrokeStyleData(this, data, styleOb);\r\n } else if (data.ty === 'fl') {\r\n elementData = new SVGFillStyleData(this, data, styleOb);\r\n } else if (data.ty === 'gf' || data.ty === 'gs') {\r\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\r\n elementData = new GradientConstructor(this, data, styleOb);\r\n this.globalData.defs.appendChild(elementData.gf);\r\n if (elementData.maskId) {\r\n this.globalData.defs.appendChild(elementData.ms);\r\n this.globalData.defs.appendChild(elementData.of);\r\n pathElement.setAttribute('mask', 'url(' + locationHref + '#' + elementData.maskId + ')');\r\n }\r\n }\r\n\r\n if (data.ty === 'st' || data.ty === 'gs') {\r\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\r\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\r\n pathElement.setAttribute('fill-opacity', '0');\r\n if (data.lj === 1) {\r\n pathElement.setAttribute('stroke-miterlimit', data.ml);\r\n }\r\n }\r\n\r\n if (data.r === 2) {\r\n pathElement.setAttribute('fill-rule', 'evenodd');\r\n }\r\n\r\n if (data.ln) {\r\n pathElement.setAttribute('id', data.ln);\r\n }\r\n if (data.cl) {\r\n pathElement.setAttribute('class', data.cl);\r\n }\r\n if (data.bm) {\r\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n }\r\n this.stylesList.push(styleOb);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createGroupElement = function (data) {\r\n var elementData = new ShapeGroupData();\r\n if (data.ln) {\r\n elementData.gr.setAttribute('id', data.ln);\r\n }\r\n if (data.cl) {\r\n elementData.gr.setAttribute('class', data.cl);\r\n }\r\n if (data.bm) {\r\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n }\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createTransformElement = function (data, container) {\r\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\r\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\r\n var ty = 4;\r\n if (data.ty === 'rc') {\r\n ty = 5;\r\n } else if (data.ty === 'el') {\r\n ty = 6;\r\n } else if (data.ty === 'sr') {\r\n ty = 7;\r\n }\r\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\r\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\r\n this.shapes.push(elementData);\r\n this.addShapeToModifiers(elementData);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\r\n var i = 0;\r\n var len = this.animatedContents.length;\r\n while (i < len) {\r\n if (this.animatedContents[i].element === element) {\r\n return;\r\n }\r\n i += 1;\r\n }\r\n this.animatedContents.push({\r\n fn: SVGElementsRenderer.createRenderFunction(data),\r\n element: element,\r\n data: data,\r\n });\r\n};\r\n\r\nSVGShapeElement.prototype.setElementStyles = function (elementData) {\r\n var arr = elementData.styles;\r\n var j;\r\n var jLen = this.stylesList.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (!this.stylesList[j].closed) {\r\n arr.push(this.stylesList[j]);\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.reloadShapes = function () {\r\n this._isFirstFrame = true;\r\n var i;\r\n var len = this.itemsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.prevViewData[i] = this.itemsData[i];\r\n }\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\r\n this.filterUniqueShapes();\r\n len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n }\r\n this.renderModifiers();\r\n};\r\n\r\nSVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\r\n var ownTransformers = [].concat(transformers);\r\n var i;\r\n var len = arr.length - 1;\r\n var j;\r\n var jLen;\r\n var ownStyles = [];\r\n var ownModifiers = [];\r\n var currentTransform;\r\n var modifier;\r\n var processedPos;\r\n for (i = len; i >= 0; i -= 1) {\r\n processedPos = this.searchProcessedElement(arr[i]);\r\n if (!processedPos) {\r\n arr[i]._render = render;\r\n } else {\r\n itemsData[i] = prevViewData[processedPos - 1];\r\n }\r\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createStyleElement(arr[i], level);\r\n } else {\r\n itemsData[i].style.closed = false;\r\n }\r\n if (arr[i]._render) {\r\n if (itemsData[i].style.pElem.parentNode !== container) {\r\n container.appendChild(itemsData[i].style.pElem);\r\n }\r\n }\r\n ownStyles.push(itemsData[i].style);\r\n } else if (arr[i].ty === 'gr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createGroupElement(arr[i]);\r\n } else {\r\n jLen = itemsData[i].it.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\r\n }\r\n }\r\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\r\n if (arr[i]._render) {\r\n if (itemsData[i].gr.parentNode !== container) {\r\n container.appendChild(itemsData[i].gr);\r\n }\r\n }\r\n } else if (arr[i].ty === 'tr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createTransformElement(arr[i], container);\r\n }\r\n currentTransform = itemsData[i].transform;\r\n ownTransformers.push(currentTransform);\r\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\r\n }\r\n this.setElementStyles(itemsData[i]);\r\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n modifier.init(this, arr[i]);\r\n itemsData[i] = modifier;\r\n this.shapeModifiers.push(modifier);\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = false;\r\n }\r\n ownModifiers.push(modifier);\r\n } else if (arr[i].ty === 'rp') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n itemsData[i] = modifier;\r\n modifier.init(this, arr, i, itemsData);\r\n this.shapeModifiers.push(modifier);\r\n render = false;\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = true;\r\n }\r\n ownModifiers.push(modifier);\r\n }\r\n this.addProcessedElement(arr[i], i + 1);\r\n }\r\n len = ownStyles.length;\r\n for (i = 0; i < len; i += 1) {\r\n ownStyles[i].closed = true;\r\n }\r\n len = ownModifiers.length;\r\n for (i = 0; i < len; i += 1) {\r\n ownModifiers[i].closed = true;\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.renderInnerContent = function () {\r\n this.renderModifiers();\r\n var i;\r\n var len = this.stylesList.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.stylesList[i].reset();\r\n }\r\n this.renderShape();\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\r\n if (this.stylesList[i].msElem) {\r\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d);\r\n // Adding M0 0 fixes same mask bug on all browsers\r\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\r\n }\r\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.renderShape = function () {\r\n var i;\r\n var len = this.animatedContents.length;\r\n var animatedContent;\r\n for (i = 0; i < len; i += 1) {\r\n animatedContent = this.animatedContents[i];\r\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\r\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.destroy = function () {\r\n this.destroyBaseElement();\r\n this.shapesData = null;\r\n this.itemsData = null;\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGTintFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\r\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', 'f1');\r\n filter.appendChild(feColorMatrix);\r\n feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', 'f2');\r\n filter.appendChild(feColorMatrix);\r\n this.matrixFilter = feColorMatrix;\r\n if (filterManager.effectElements[2].p.v !== 100 || filterManager.effectElements[2].p.k) {\r\n var feMerge = createNS('feMerge');\r\n filter.appendChild(feMerge);\r\n var feMergeNode;\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in', 'SourceGraphic');\r\n feMerge.appendChild(feMergeNode);\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in', 'f2');\r\n feMerge.appendChild(feMergeNode);\r\n }\r\n}\r\n\r\nSVGTintFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var colorBlack = this.filterManager.effectElements[0].p.v;\r\n var colorWhite = this.filterManager.effectElements[1].p.v;\r\n var opacity = this.filterManager.effectElements[2].p.v / 100;\r\n this.matrixFilter.setAttribute('values', (colorWhite[0] - colorBlack[0]) + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 ' + opacity + ' 0');\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGFillFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\r\n filter.appendChild(feColorMatrix);\r\n this.matrixFilter = feColorMatrix;\r\n}\r\nSVGFillFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var color = this.filterManager.effectElements[2].p.v;\r\n var opacity = this.filterManager.effectElements[6].p.v;\r\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGGaussianBlurEffect(filter, filterManager) {\r\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\r\n filter.setAttribute('x', '-100%');\r\n filter.setAttribute('y', '-100%');\r\n filter.setAttribute('width', '300%');\r\n filter.setAttribute('height', '300%');\r\n\r\n this.filterManager = filterManager;\r\n var feGaussianBlur = createNS('feGaussianBlur');\r\n filter.appendChild(feGaussianBlur);\r\n this.feGaussianBlur = feGaussianBlur;\r\n}\r\n\r\nSVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n // Empirical value, matching AE's blur appearance.\r\n var kBlurrinessToSigma = 0.3;\r\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma;\r\n\r\n // Dimensions mapping:\r\n //\r\n // 1 -> horizontal & vertical\r\n // 2 -> horizontal only\r\n // 3 -> vertical only\r\n //\r\n var dimensions = this.filterManager.effectElements[1].p.v;\r\n var sigmaX = (dimensions == 3) ? 0 : sigma; // eslint-disable-line eqeqeq\r\n var sigmaY = (dimensions == 2) ? 0 : sigma; // eslint-disable-line eqeqeq\r\n\r\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY);\r\n\r\n // Repeat edges mapping:\r\n //\r\n // 0 -> off -> duplicate\r\n // 1 -> on -> wrap\r\n var edgeMode = (this.filterManager.effectElements[2].p.v == 1) ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\r\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\r\n }\r\n};\r\n\r\n/* global createNS, createElementID, locationHref, bmFloor */\r\n\r\nfunction SVGStrokeEffect(elem, filterManager) {\r\n this.initialized = false;\r\n this.filterManager = filterManager;\r\n this.elem = elem;\r\n this.paths = [];\r\n}\r\n\r\nSVGStrokeEffect.prototype.initialize = function () {\r\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\r\n var path;\r\n var groupPath;\r\n var i;\r\n var len;\r\n if (this.filterManager.effectElements[1].p.v === 1) {\r\n len = this.elem.maskManager.masksProperties.length;\r\n i = 0;\r\n } else {\r\n i = this.filterManager.effectElements[0].p.v - 1;\r\n len = i + 1;\r\n }\r\n groupPath = createNS('g');\r\n groupPath.setAttribute('fill', 'none');\r\n groupPath.setAttribute('stroke-linecap', 'round');\r\n groupPath.setAttribute('stroke-dashoffset', 1);\r\n for (i; i < len; i += 1) {\r\n path = createNS('path');\r\n groupPath.appendChild(path);\r\n this.paths.push({ p: path, m: i });\r\n }\r\n if (this.filterManager.effectElements[10].p.v === 3) {\r\n var mask = createNS('mask');\r\n var id = createElementID();\r\n mask.setAttribute('id', id);\r\n mask.setAttribute('mask-type', 'alpha');\r\n mask.appendChild(groupPath);\r\n this.elem.globalData.defs.appendChild(mask);\r\n var g = createNS('g');\r\n g.setAttribute('mask', 'url(' + locationHref + '#' + id + ')');\r\n while (elemChildren[0]) {\r\n g.appendChild(elemChildren[0]);\r\n }\r\n this.elem.layerElement.appendChild(g);\r\n this.masker = mask;\r\n groupPath.setAttribute('stroke', '#fff');\r\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\r\n if (this.filterManager.effectElements[10].p.v === 2) {\r\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\r\n while (elemChildren.length) {\r\n this.elem.layerElement.removeChild(elemChildren[0]);\r\n }\r\n }\r\n this.elem.layerElement.appendChild(groupPath);\r\n this.elem.layerElement.removeAttribute('mask');\r\n groupPath.setAttribute('stroke', '#fff');\r\n }\r\n this.initialized = true;\r\n this.pathMasker = groupPath;\r\n};\r\n\r\nSVGStrokeEffect.prototype.renderFrame = function (forceRender) {\r\n if (!this.initialized) {\r\n this.initialize();\r\n }\r\n var i;\r\n var len = this.paths.length;\r\n var mask;\r\n var path;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.paths[i].m !== -1) {\r\n mask = this.elem.maskManager.viewData[this.paths[i].m];\r\n path = this.paths[i].p;\r\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\r\n path.setAttribute('d', mask.lastPath);\r\n }\r\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\r\n var dasharrayValue;\r\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\r\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\r\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\r\n var l = path.getTotalLength();\r\n dasharrayValue = '0 0 0 ' + l * s + ' ';\r\n var lineLength = l * (e - s);\r\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\r\n var units = Math.floor(lineLength / segment);\r\n var j;\r\n for (j = 0; j < units; j += 1) {\r\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\r\n }\r\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\r\n } else {\r\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\r\n }\r\n path.setAttribute('stroke-dasharray', dasharrayValue);\r\n }\r\n }\r\n }\r\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\r\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\r\n }\r\n\r\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\r\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\r\n }\r\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\r\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\r\n var color = this.filterManager.effectElements[3].p.v;\r\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\r\n }\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGTritoneFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\r\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', 'f1');\r\n filter.appendChild(feColorMatrix);\r\n var feComponentTransfer = createNS('feComponentTransfer');\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n this.matrixFilter = feComponentTransfer;\r\n var feFuncR = createNS('feFuncR');\r\n feFuncR.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncR);\r\n this.feFuncR = feFuncR;\r\n var feFuncG = createNS('feFuncG');\r\n feFuncG.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncG);\r\n this.feFuncG = feFuncG;\r\n var feFuncB = createNS('feFuncB');\r\n feFuncB.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncB);\r\n this.feFuncB = feFuncB;\r\n}\r\n\r\nSVGTritoneFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var color1 = this.filterManager.effectElements[0].p.v;\r\n var color2 = this.filterManager.effectElements[1].p.v;\r\n var color3 = this.filterManager.effectElements[2].p.v;\r\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\r\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\r\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\r\n this.feFuncR.setAttribute('tableValues', tableR);\r\n this.feFuncG.setAttribute('tableValues', tableG);\r\n this.feFuncB.setAttribute('tableValues', tableB);\r\n // var opacity = this.filterManager.effectElements[2].p.v/100;\r\n // this.matrixFilter.setAttribute('values',(colorWhite[0]- colorBlack[0])+' 0 0 0 '+ colorBlack[0] +' '+ (colorWhite[1]- colorBlack[1]) +' 0 0 0 '+ colorBlack[1] +' '+ (colorWhite[2]- colorBlack[2]) +' 0 0 0 '+ colorBlack[2] +' 0 0 0 ' + opacity + ' 0');\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGProLevelsFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var effectElements = this.filterManager.effectElements;\r\n var feComponentTransfer = createNS('feComponentTransfer');\r\n\r\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\r\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\r\n }\r\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\r\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\r\n }\r\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\r\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\r\n }\r\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\r\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\r\n }\r\n\r\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n feComponentTransfer = createNS('feComponentTransfer');\r\n }\r\n\r\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\r\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\r\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\r\n }\r\n}\r\n\r\nSVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\r\n var feFunc = createNS(type);\r\n feFunc.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFunc);\r\n return feFunc;\r\n};\r\n\r\nSVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\r\n var cnt = 0;\r\n var segments = 256;\r\n var perc;\r\n var min = Math.min(inputBlack, inputWhite);\r\n var max = Math.max(inputBlack, inputWhite);\r\n var table = Array.call(null, { length: segments });\r\n var colorValue;\r\n var pos = 0;\r\n var outputDelta = outputWhite - outputBlack;\r\n var inputDelta = inputWhite - inputBlack;\r\n while (cnt <= 256) {\r\n perc = cnt / 256;\r\n if (perc <= min) {\r\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\r\n } else if (perc >= max) {\r\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\r\n } else {\r\n colorValue = (outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma));\r\n }\r\n table[pos] = colorValue;\r\n pos += 1;\r\n cnt += 256 / (segments - 1);\r\n }\r\n return table.join(' ');\r\n};\r\n\r\nSVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var val;\r\n var effectElements = this.filterManager.effectElements;\r\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\r\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\r\n this.feFuncRComposed.setAttribute('tableValues', val);\r\n this.feFuncGComposed.setAttribute('tableValues', val);\r\n this.feFuncBComposed.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\r\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\r\n this.feFuncR.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\r\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\r\n this.feFuncG.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\r\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\r\n this.feFuncB.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\r\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\r\n this.feFuncA.setAttribute('tableValues', val);\r\n }\r\n }\r\n};\r\n\r\n/* global createNS, rgbToHex, degToRads */\r\n\r\nfunction SVGDropShadowEffect(filter, filterManager) {\r\n var filterSize = filterManager.container.globalData.renderConfig.filterSize;\r\n filter.setAttribute('x', filterSize.x);\r\n filter.setAttribute('y', filterSize.y);\r\n filter.setAttribute('width', filterSize.width);\r\n filter.setAttribute('height', filterSize.height);\r\n this.filterManager = filterManager;\r\n\r\n var feGaussianBlur = createNS('feGaussianBlur');\r\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\r\n feGaussianBlur.setAttribute('result', 'drop_shadow_1');\r\n feGaussianBlur.setAttribute('stdDeviation', '0');\r\n this.feGaussianBlur = feGaussianBlur;\r\n filter.appendChild(feGaussianBlur);\r\n\r\n var feOffset = createNS('feOffset');\r\n feOffset.setAttribute('dx', '25');\r\n feOffset.setAttribute('dy', '0');\r\n feOffset.setAttribute('in', 'drop_shadow_1');\r\n feOffset.setAttribute('result', 'drop_shadow_2');\r\n this.feOffset = feOffset;\r\n filter.appendChild(feOffset);\r\n var feFlood = createNS('feFlood');\r\n feFlood.setAttribute('flood-color', '#00ff00');\r\n feFlood.setAttribute('flood-opacity', '1');\r\n feFlood.setAttribute('result', 'drop_shadow_3');\r\n this.feFlood = feFlood;\r\n filter.appendChild(feFlood);\r\n\r\n var feComposite = createNS('feComposite');\r\n feComposite.setAttribute('in', 'drop_shadow_3');\r\n feComposite.setAttribute('in2', 'drop_shadow_2');\r\n feComposite.setAttribute('operator', 'in');\r\n feComposite.setAttribute('result', 'drop_shadow_4');\r\n filter.appendChild(feComposite);\r\n\r\n var feMerge = createNS('feMerge');\r\n filter.appendChild(feMerge);\r\n var feMergeNode;\r\n feMergeNode = createNS('feMergeNode');\r\n feMerge.appendChild(feMergeNode);\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in', 'SourceGraphic');\r\n this.feMergeNode = feMergeNode;\r\n this.feMerge = feMerge;\r\n this.originalNodeAdded = false;\r\n feMerge.appendChild(feMergeNode);\r\n}\r\n\r\nSVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\r\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\r\n }\r\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\r\n var col = this.filterManager.effectElements[0].p.v;\r\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\r\n }\r\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\r\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\r\n }\r\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\r\n var distance = this.filterManager.effectElements[3].p.v;\r\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\r\n var x = distance * Math.cos(angle);\r\n var y = distance * Math.sin(angle);\r\n this.feOffset.setAttribute('dx', x);\r\n this.feOffset.setAttribute('dy', y);\r\n }\r\n /* if(forceRender || this.filterManager.effectElements[5].p._mdf){\r\n if(this.filterManager.effectElements[5].p.v === 1 && this.originalNodeAdded) {\r\n this.feMerge.removeChild(this.feMergeNode);\r\n this.originalNodeAdded = false;\r\n } else if(this.filterManager.effectElements[5].p.v === 0 && !this.originalNodeAdded) {\r\n this.feMerge.appendChild(this.feMergeNode);\r\n this.originalNodeAdded = true;\r\n }\r\n } */\r\n }\r\n};\r\n\r\n/* global createElementID, createNS */\r\n\r\nvar _svgMatteSymbols = [];\r\n\r\nfunction SVGMatte3Effect(filterElem, filterManager, elem) {\r\n this.initialized = false;\r\n this.filterManager = filterManager;\r\n this.filterElem = filterElem;\r\n this.elem = elem;\r\n elem.matteElement = createNS('g');\r\n elem.matteElement.appendChild(elem.layerElement);\r\n elem.matteElement.appendChild(elem.transformedElement);\r\n elem.baseElement = elem.matteElement;\r\n}\r\n\r\nSVGMatte3Effect.prototype.findSymbol = function (mask) {\r\n var i = 0;\r\n var len = _svgMatteSymbols.length;\r\n while (i < len) {\r\n if (_svgMatteSymbols[i] === mask) {\r\n return _svgMatteSymbols[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n};\r\n\r\nSVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\r\n var parentNode = mask.layerElement.parentNode;\r\n if (!parentNode) {\r\n return;\r\n }\r\n var children = parentNode.children;\r\n var i = 0;\r\n var len = children.length;\r\n while (i < len) {\r\n if (children[i] === mask.layerElement) {\r\n break;\r\n }\r\n i += 1;\r\n }\r\n var nextChild;\r\n if (i <= len - 2) {\r\n nextChild = children[i + 1];\r\n }\r\n var useElem = createNS('use');\r\n useElem.setAttribute('href', '#' + symbolId);\r\n if (nextChild) {\r\n parentNode.insertBefore(useElem, nextChild);\r\n } else {\r\n parentNode.appendChild(useElem);\r\n }\r\n};\r\n\r\nSVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\r\n if (!this.findSymbol(mask)) {\r\n var symbolId = createElementID();\r\n var masker = createNS('mask');\r\n masker.setAttribute('id', mask.layerId);\r\n masker.setAttribute('mask-type', 'alpha');\r\n _svgMatteSymbols.push(mask);\r\n var defs = elem.globalData.defs;\r\n defs.appendChild(masker);\r\n var symbol = createNS('symbol');\r\n symbol.setAttribute('id', symbolId);\r\n this.replaceInParent(mask, symbolId);\r\n symbol.appendChild(mask.layerElement);\r\n defs.appendChild(symbol);\r\n var useElem = createNS('use');\r\n useElem.setAttribute('href', '#' + symbolId);\r\n masker.appendChild(useElem);\r\n mask.data.hd = false;\r\n mask.show();\r\n }\r\n elem.setMatte(mask.layerId);\r\n};\r\n\r\nSVGMatte3Effect.prototype.initialize = function () {\r\n var ind = this.filterManager.effectElements[0].p.v;\r\n var elements = this.elem.comp.elements;\r\n var i = 0;\r\n var len = elements.length;\r\n while (i < len) {\r\n if (elements[i] && elements[i].data.ind === ind) {\r\n this.setElementAsMask(this.elem, elements[i]);\r\n }\r\n i += 1;\r\n }\r\n this.initialized = true;\r\n};\r\n\r\nSVGMatte3Effect.prototype.renderFrame = function () {\r\n if (!this.initialized) {\r\n this.initialize();\r\n }\r\n};\r\n\r\n/* global createElementID, filtersFactory, SVGTintFilter, SVGFillFilter, SVGStrokeEffect, SVGTritoneFilter,\r\nSVGProLevelsFilter, SVGDropShadowEffect, SVGMatte3Effect, SVGGaussianBlurEffect, locationHref */\r\n\r\nfunction SVGEffects(elem) {\r\n var i;\r\n var len = elem.data.ef ? elem.data.ef.length : 0;\r\n var filId = createElementID();\r\n var fil = filtersFactory.createFilter(filId, true);\r\n var count = 0;\r\n this.filters = [];\r\n var filterManager;\r\n for (i = 0; i < len; i += 1) {\r\n filterManager = null;\r\n if (elem.data.ef[i].ty === 20) {\r\n count += 1;\r\n filterManager = new SVGTintFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 21) {\r\n count += 1;\r\n filterManager = new SVGFillFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 22) {\r\n filterManager = new SVGStrokeEffect(elem, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 23) {\r\n count += 1;\r\n filterManager = new SVGTritoneFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 24) {\r\n count += 1;\r\n filterManager = new SVGProLevelsFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 25) {\r\n count += 1;\r\n filterManager = new SVGDropShadowEffect(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 28) {\r\n // count += 1;\r\n filterManager = new SVGMatte3Effect(fil, elem.effectsManager.effectElements[i], elem);\r\n } else if (elem.data.ef[i].ty === 29) {\r\n count += 1;\r\n filterManager = new SVGGaussianBlurEffect(fil, elem.effectsManager.effectElements[i]);\r\n }\r\n if (filterManager) {\r\n this.filters.push(filterManager);\r\n }\r\n }\r\n if (count) {\r\n elem.globalData.defs.appendChild(fil);\r\n elem.layerElement.setAttribute('filter', 'url(' + locationHref + '#' + filId + ')');\r\n }\r\n if (this.filters.length) {\r\n elem.addRenderableComponent(this);\r\n }\r\n}\r\n\r\nSVGEffects.prototype.renderFrame = function (_isFirstFrame) {\r\n var i;\r\n var len = this.filters.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.filters[i].renderFrame(_isFirstFrame);\r\n }\r\n};\r\n\r\n/* global Matrix, createTypedArray */\r\n\r\nfunction CVContextData() {\r\n this.saved = [];\r\n this.cArrPos = 0;\r\n this.cTr = new Matrix();\r\n this.cO = 1;\r\n var i;\r\n var len = 15;\r\n this.savedOp = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n this.saved[i] = createTypedArray('float32', 16);\r\n }\r\n this._length = len;\r\n}\r\n\r\nCVContextData.prototype.duplicate = function () {\r\n var newLength = this._length * 2;\r\n var currentSavedOp = this.savedOp;\r\n this.savedOp = createTypedArray('float32', newLength);\r\n this.savedOp.set(currentSavedOp);\r\n var i = 0;\r\n for (i = this._length; i < newLength; i += 1) {\r\n this.saved[i] = createTypedArray('float32', 16);\r\n }\r\n this._length = newLength;\r\n};\r\n\r\nCVContextData.prototype.reset = function () {\r\n this.cArrPos = 0;\r\n this.cTr.reset();\r\n this.cO = 1;\r\n};\r\n\r\n/* global CVEffects, getBlendMode, CVMaskElement, Matrix */\r\n\r\nfunction CVBaseElement() {\r\n}\r\n\r\nCVBaseElement.prototype = {\r\n createElements: function () {},\r\n initRendererElement: function () {},\r\n createContainerElements: function () {\r\n this.canvasContext = this.globalData.canvasContext;\r\n this.renderableEffectsManager = new CVEffects(this);\r\n },\r\n createContent: function () {},\r\n setBlendMode: function () {\r\n var globalData = this.globalData;\r\n if (globalData.blendMode !== this.data.bm) {\r\n globalData.blendMode = this.data.bm;\r\n var blendModeValue = getBlendMode(this.data.bm);\r\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\r\n }\r\n },\r\n createRenderableComponents: function () {\r\n this.maskManager = new CVMaskElement(this.data, this);\r\n },\r\n hideElement: function () {\r\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\r\n this.hidden = true;\r\n }\r\n },\r\n showElement: function () {\r\n if (this.isInRange && !this.isTransparent) {\r\n this.hidden = false;\r\n this._isFirstFrame = true;\r\n this.maskManager._isFirstFrame = true;\r\n }\r\n },\r\n renderFrame: function () {\r\n if (this.hidden || this.data.hd) {\r\n return;\r\n }\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.setBlendMode();\r\n var forceRealStack = this.data.ty === 0;\r\n this.globalData.renderer.save(forceRealStack);\r\n this.globalData.renderer.ctxTransform(this.finalTransform.mat.props);\r\n this.globalData.renderer.ctxOpacity(this.finalTransform.mProp.o.v);\r\n this.renderInnerContent();\r\n this.globalData.renderer.restore(forceRealStack);\r\n if (this.maskManager.hasMasks) {\r\n this.globalData.renderer.restore(true);\r\n }\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n destroy: function () {\r\n this.canvasContext = null;\r\n this.data = null;\r\n this.globalData = null;\r\n this.maskManager.destroy();\r\n },\r\n mHelper: new Matrix(),\r\n};\r\nCVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\r\nCVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, CVBaseElement,HierarchyElement, FrameElement,\r\nRenderableElement, SVGShapeElement, IImageElement, createTag */\r\n\r\nfunction CVImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.img = globalData.imageLoader.getAsset(this.assetData);\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\r\n\r\nCVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\r\nCVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\r\n\r\nCVImageElement.prototype.createContent = function () {\r\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\r\n var canvas = createTag('canvas');\r\n canvas.width = this.assetData.w;\r\n canvas.height = this.assetData.h;\r\n var ctx = canvas.getContext('2d');\r\n\r\n var imgW = this.img.width;\r\n var imgH = this.img.height;\r\n var imgRel = imgW / imgH;\r\n var canvasRel = this.assetData.w / this.assetData.h;\r\n var widthCrop;\r\n var heightCrop;\r\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\r\n if ((imgRel > canvasRel && par === 'xMidYMid slice') || (imgRel < canvasRel && par !== 'xMidYMid slice')) {\r\n heightCrop = imgH;\r\n widthCrop = heightCrop * canvasRel;\r\n } else {\r\n widthCrop = imgW;\r\n heightCrop = widthCrop / canvasRel;\r\n }\r\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\r\n this.img = canvas;\r\n }\r\n};\r\n\r\nCVImageElement.prototype.renderInnerContent = function () {\r\n this.canvasContext.drawImage(this.img, 0, 0);\r\n};\r\n\r\nCVImageElement.prototype.destroy = function () {\r\n this.img = null;\r\n};\r\n\r\n/* global createSizedArray, PropertyFactory, extendPrototype, CanvasRenderer, ICompElement, CVBaseElement */\r\n\r\nfunction CVCompElement(data, globalData, comp) {\r\n this.completeLayers = false;\r\n this.layers = data.layers;\r\n this.pendingElements = [];\r\n this.elements = createSizedArray(this.layers.length);\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nextendPrototype([CanvasRenderer, ICompElement, CVBaseElement], CVCompElement);\r\n\r\nCVCompElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.beginPath();\r\n ctx.moveTo(0, 0);\r\n ctx.lineTo(this.data.w, 0);\r\n ctx.lineTo(this.data.w, this.data.h);\r\n ctx.lineTo(0, this.data.h);\r\n ctx.lineTo(0, 0);\r\n ctx.clip();\r\n var i;\r\n var len = this.layers.length;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n};\r\n\r\nCVCompElement.prototype.destroy = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n this.layers = null;\r\n this.elements = null;\r\n};\r\n\r\n/* global createSizedArray, ShapePropertyFactory, MaskElement */\r\n\r\nfunction CVMaskElement(data, element) {\r\n this.data = data;\r\n this.element = element;\r\n this.masksProperties = this.data.masksProperties || [];\r\n this.viewData = createSizedArray(this.masksProperties.length);\r\n var i;\r\n var len = this.masksProperties.length;\r\n var hasMasks = false;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.masksProperties[i].mode !== 'n') {\r\n hasMasks = true;\r\n }\r\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\r\n }\r\n this.hasMasks = hasMasks;\r\n if (hasMasks) {\r\n this.element.addRenderableComponent(this);\r\n }\r\n}\r\n\r\nCVMaskElement.prototype.renderFrame = function () {\r\n if (!this.hasMasks) {\r\n return;\r\n }\r\n var transform = this.element.finalTransform.mat;\r\n var ctx = this.element.canvasContext;\r\n var i;\r\n var len = this.masksProperties.length;\r\n var pt;\r\n var pts;\r\n var data;\r\n ctx.beginPath();\r\n for (i = 0; i < len; i += 1) {\r\n if (this.masksProperties[i].mode !== 'n') {\r\n if (this.masksProperties[i].inv) {\r\n ctx.moveTo(0, 0);\r\n ctx.lineTo(this.element.globalData.compSize.w, 0);\r\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\r\n ctx.lineTo(0, this.element.globalData.compSize.h);\r\n ctx.lineTo(0, 0);\r\n }\r\n data = this.viewData[i].v;\r\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\r\n ctx.moveTo(pt[0], pt[1]);\r\n var j;\r\n var jLen = data._length;\r\n for (j = 1; j < jLen; j += 1) {\r\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\r\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\r\n }\r\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\r\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\r\n }\r\n }\r\n this.element.globalData.renderer.save(true);\r\n ctx.clip();\r\n};\r\n\r\nCVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\r\n\r\nCVMaskElement.prototype.destroy = function () {\r\n this.element = null;\r\n};\r\n\r\n/* global ShapeTransformManager, extendPrototype, BaseElement, TransformElement, CVBaseElement, IShapeElement,\r\nHierarchyElement, FrameElement, RenderableElement, RenderableDOMElement, PropertyFactory, degToRads, GradientProperty,\r\nDashProperty, TransformPropertyFactory, CVShapeData, ShapeModifiers, bmFloor, lineCapEnum, lineJoinEnum */\r\n\r\nfunction CVShapeElement(data, globalData, comp) {\r\n this.shapes = [];\r\n this.shapesData = data.shapes;\r\n this.stylesList = [];\r\n this.itemsData = [];\r\n this.prevViewData = [];\r\n this.shapeModifiers = [];\r\n this.processedElements = [];\r\n this.transformsManager = new ShapeTransformManager();\r\n this.initElement(data, globalData, comp);\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\r\n\r\nCVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\r\n\r\nCVShapeElement.prototype.transformHelper = { opacity: 1, _opMdf: false };\r\n\r\nCVShapeElement.prototype.dashResetter = [];\r\n\r\nCVShapeElement.prototype.createContent = function () {\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\r\n};\r\n\r\nCVShapeElement.prototype.createStyleElement = function (data, transforms) {\r\n var styleElem = {\r\n data: data,\r\n type: data.ty,\r\n preTransforms: this.transformsManager.addTransformSequence(transforms),\r\n transforms: [],\r\n elements: [],\r\n closed: data.hd === true,\r\n };\r\n var elementData = {};\r\n if (data.ty === 'fl' || data.ty === 'st') {\r\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\r\n if (!elementData.c.k) {\r\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\r\n }\r\n } else if (data.ty === 'gf' || data.ty === 'gs') {\r\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\r\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\r\n elementData.h = PropertyFactory.getProp(this, data.h || { k: 0 }, 0, 0.01, this);\r\n elementData.a = PropertyFactory.getProp(this, data.a || { k: 0 }, 0, degToRads, this);\r\n elementData.g = new GradientProperty(this, data.g, this);\r\n }\r\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\r\n if (data.ty === 'st' || data.ty === 'gs') {\r\n styleElem.lc = lineCapEnum[data.lc || 2];\r\n styleElem.lj = lineJoinEnum[data.lj || 2];\r\n if (data.lj == 1) { // eslint-disable-line eqeqeq\r\n styleElem.ml = data.ml;\r\n }\r\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\r\n if (!elementData.w.k) {\r\n styleElem.wi = elementData.w.v;\r\n }\r\n if (data.d) {\r\n var d = new DashProperty(this, data.d, 'canvas', this);\r\n elementData.d = d;\r\n if (!elementData.d.k) {\r\n styleElem.da = elementData.d.dashArray;\r\n styleElem.do = elementData.d.dashoffset[0];\r\n }\r\n }\r\n } else {\r\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\r\n }\r\n this.stylesList.push(styleElem);\r\n elementData.style = styleElem;\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.createGroupElement = function () {\r\n var elementData = {\r\n it: [],\r\n prevViewData: [],\r\n };\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.createTransformElement = function (data) {\r\n var elementData = {\r\n transform: {\r\n opacity: 1,\r\n _opMdf: false,\r\n key: this.transformsManager.getNewKey(),\r\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\r\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this),\r\n },\r\n };\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.createShapeElement = function (data) {\r\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\r\n\r\n this.shapes.push(elementData);\r\n this.addShapeToModifiers(elementData);\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.reloadShapes = function () {\r\n this._isFirstFrame = true;\r\n var i;\r\n var len = this.itemsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.prevViewData[i] = this.itemsData[i];\r\n }\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\r\n len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n }\r\n this.renderModifiers();\r\n this.transformsManager.processSequences(this._isFirstFrame);\r\n};\r\n\r\nCVShapeElement.prototype.addTransformToStyleList = function (transform) {\r\n var i;\r\n var len = this.stylesList.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (!this.stylesList[i].closed) {\r\n this.stylesList[i].transforms.push(transform);\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.removeTransformFromStyleList = function () {\r\n var i;\r\n var len = this.stylesList.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (!this.stylesList[i].closed) {\r\n this.stylesList[i].transforms.pop();\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.closeStyles = function (styles) {\r\n var i;\r\n var len = styles.length;\r\n for (i = 0; i < len; i += 1) {\r\n styles[i].closed = true;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\r\n var i;\r\n var len = arr.length - 1;\r\n var j;\r\n var jLen;\r\n var ownStyles = [];\r\n var ownModifiers = [];\r\n var processedPos;\r\n var modifier;\r\n var currentTransform;\r\n var ownTransforms = [].concat(transforms);\r\n for (i = len; i >= 0; i -= 1) {\r\n processedPos = this.searchProcessedElement(arr[i]);\r\n if (!processedPos) {\r\n arr[i]._shouldRender = shouldRender;\r\n } else {\r\n itemsData[i] = prevViewData[processedPos - 1];\r\n }\r\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\r\n } else {\r\n itemsData[i].style.closed = false;\r\n }\r\n\r\n ownStyles.push(itemsData[i].style);\r\n } else if (arr[i].ty === 'gr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createGroupElement(arr[i]);\r\n } else {\r\n jLen = itemsData[i].it.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\r\n }\r\n }\r\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\r\n } else if (arr[i].ty === 'tr') {\r\n if (!processedPos) {\r\n currentTransform = this.createTransformElement(arr[i]);\r\n itemsData[i] = currentTransform;\r\n }\r\n ownTransforms.push(itemsData[i]);\r\n this.addTransformToStyleList(itemsData[i]);\r\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createShapeElement(arr[i]);\r\n }\r\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n modifier.init(this, arr[i]);\r\n itemsData[i] = modifier;\r\n this.shapeModifiers.push(modifier);\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = false;\r\n }\r\n ownModifiers.push(modifier);\r\n } else if (arr[i].ty === 'rp') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n itemsData[i] = modifier;\r\n modifier.init(this, arr, i, itemsData);\r\n this.shapeModifiers.push(modifier);\r\n shouldRender = false;\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = true;\r\n }\r\n ownModifiers.push(modifier);\r\n }\r\n this.addProcessedElement(arr[i], i + 1);\r\n }\r\n this.removeTransformFromStyleList();\r\n this.closeStyles(ownStyles);\r\n len = ownModifiers.length;\r\n for (i = 0; i < len; i += 1) {\r\n ownModifiers[i].closed = true;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderInnerContent = function () {\r\n this.transformHelper.opacity = 1;\r\n this.transformHelper._opMdf = false;\r\n this.renderModifiers();\r\n this.transformsManager.processSequences(this._isFirstFrame);\r\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\r\n};\r\n\r\nCVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\r\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\r\n groupTransform.opacity = parentTransform.opacity;\r\n groupTransform.opacity *= groupTransform.op.v;\r\n groupTransform._opMdf = true;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.drawLayer = function () {\r\n var i;\r\n var len = this.stylesList.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n var elems;\r\n var nodes;\r\n var renderer = this.globalData.renderer;\r\n var ctx = this.globalData.canvasContext;\r\n var type;\r\n var currentStyle;\r\n for (i = 0; i < len; i += 1) {\r\n currentStyle = this.stylesList[i];\r\n type = currentStyle.type;\r\n\r\n // Skipping style when\r\n // Stroke width equals 0\r\n // style should not be rendered (extra unused repeaters)\r\n // current opacity equals 0\r\n // global opacity equals 0\r\n if (!(((type === 'st' || type === 'gs') && currentStyle.wi === 0) || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\r\n renderer.save();\r\n elems = currentStyle.elements;\r\n if (type === 'st' || type === 'gs') {\r\n ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\r\n ctx.lineWidth = currentStyle.wi;\r\n ctx.lineCap = currentStyle.lc;\r\n ctx.lineJoin = currentStyle.lj;\r\n ctx.miterLimit = currentStyle.ml || 0;\r\n } else {\r\n ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\r\n }\r\n renderer.ctxOpacity(currentStyle.coOp);\r\n if (type !== 'st' && type !== 'gs') {\r\n ctx.beginPath();\r\n }\r\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\r\n jLen = elems.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (type === 'st' || type === 'gs') {\r\n ctx.beginPath();\r\n if (currentStyle.da) {\r\n ctx.setLineDash(currentStyle.da);\r\n ctx.lineDashOffset = currentStyle.do;\r\n }\r\n }\r\n nodes = elems[j].trNodes;\r\n kLen = nodes.length;\r\n\r\n for (k = 0; k < kLen; k += 1) {\r\n if (nodes[k].t === 'm') {\r\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\r\n } else if (nodes[k].t === 'c') {\r\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\r\n } else {\r\n ctx.closePath();\r\n }\r\n }\r\n if (type === 'st' || type === 'gs') {\r\n ctx.stroke();\r\n if (currentStyle.da) {\r\n ctx.setLineDash(this.dashResetter);\r\n }\r\n }\r\n }\r\n if (type !== 'st' && type !== 'gs') {\r\n ctx.fill(currentStyle.r);\r\n }\r\n renderer.restore();\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\r\n var i;\r\n var len = items.length - 1;\r\n var groupTransform;\r\n groupTransform = parentTransform;\r\n for (i = len; i >= 0; i -= 1) {\r\n if (items[i].ty === 'tr') {\r\n groupTransform = data[i].transform;\r\n this.renderShapeTransform(parentTransform, groupTransform);\r\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\r\n this.renderPath(items[i], data[i]);\r\n } else if (items[i].ty === 'fl') {\r\n this.renderFill(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'st') {\r\n this.renderStroke(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\r\n this.renderGradientFill(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'gr') {\r\n this.renderShape(groupTransform, items[i].it, data[i].it);\r\n } else if (items[i].ty === 'tm') {\r\n //\r\n }\r\n }\r\n if (isMain) {\r\n this.drawLayer();\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\r\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\r\n var shapeNodes = styledShape.trNodes;\r\n var paths = shape.paths;\r\n var i;\r\n var len;\r\n var j;\r\n var jLen = paths._length;\r\n shapeNodes.length = 0;\r\n var groupTransformMat = styledShape.transforms.finalTransform;\r\n for (j = 0; j < jLen; j += 1) {\r\n var pathNodes = paths.shapes[j];\r\n if (pathNodes && pathNodes.v) {\r\n len = pathNodes._length;\r\n for (i = 1; i < len; i += 1) {\r\n if (i === 1) {\r\n shapeNodes.push({\r\n t: 'm',\r\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0),\r\n });\r\n }\r\n shapeNodes.push({\r\n t: 'c',\r\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i]),\r\n });\r\n }\r\n if (len === 1) {\r\n shapeNodes.push({\r\n t: 'm',\r\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0),\r\n });\r\n }\r\n if (pathNodes.c && len) {\r\n shapeNodes.push({\r\n t: 'c',\r\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0]),\r\n });\r\n shapeNodes.push({\r\n t: 'z',\r\n });\r\n }\r\n }\r\n }\r\n styledShape.trNodes = shapeNodes;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderPath = function (pathData, itemData) {\r\n if (pathData.hd !== true && pathData._shouldRender) {\r\n var i;\r\n var len = itemData.styledShapes.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n\r\n if (itemData.c._mdf || this._isFirstFrame) {\r\n styleElem.co = 'rgb('\r\n + bmFloor(itemData.c.v[0]) + ','\r\n + bmFloor(itemData.c.v[1]) + ','\r\n + bmFloor(itemData.c.v[2]) + ')';\r\n }\r\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n var grd;\r\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || (styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf))) {\r\n var ctx = this.globalData.canvasContext;\r\n var pt1 = itemData.s.v;\r\n var pt2 = itemData.e.v;\r\n if (styleData.t === 1) {\r\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\r\n } else {\r\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\r\n\r\n var percent = itemData.h.v;\r\n if (percent >= 1) {\r\n percent = 0.99;\r\n } else if (percent <= -1) {\r\n percent = -0.99;\r\n }\r\n var dist = rad * percent;\r\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\r\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\r\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\r\n }\r\n\r\n var i;\r\n var len = styleData.g.p;\r\n var cValues = itemData.g.c;\r\n var opacity = 1;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\r\n opacity = itemData.g.o[i * 2 + 1];\r\n }\r\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\r\n }\r\n styleElem.grd = grd;\r\n }\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n};\r\n\r\nCVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n var d = itemData.d;\r\n if (d && (d._mdf || this._isFirstFrame)) {\r\n styleElem.da = d.dashArray;\r\n styleElem.do = d.dashoffset[0];\r\n }\r\n if (itemData.c._mdf || this._isFirstFrame) {\r\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\r\n }\r\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n }\r\n if (itemData.w._mdf || this._isFirstFrame) {\r\n styleElem.wi = itemData.w.v;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.destroy = function () {\r\n this.shapesData = null;\r\n this.globalData = null;\r\n this.canvasContext = null;\r\n this.stylesList.length = 0;\r\n this.itemsData.length = 0;\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement,\r\nSVGShapeElement, IImageElement */\r\n\r\nfunction CVSolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\r\n\r\nCVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\r\nCVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\r\n\r\nCVSolidElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.fillStyle = this.data.sc;\r\n ctx.fillRect(0, 0, this.data.sw, this.data.sh);\r\n //\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement,\r\nRenderableElement, ITextElement, createTag, createSizedArray */\r\n\r\nfunction CVTextElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.yOffset = 0;\r\n this.fillColorAnim = false;\r\n this.strokeColorAnim = false;\r\n this.strokeWidthAnim = false;\r\n this.stroke = false;\r\n this.fill = false;\r\n this.justifyOffset = 0;\r\n this.currentRender = null;\r\n this.renderType = 'canvas';\r\n this.values = {\r\n fill: 'rgba(0,0,0,0)',\r\n stroke: 'rgba(0,0,0,0)',\r\n sWidth: 0,\r\n fValue: '',\r\n };\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\r\n\r\nCVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\r\n\r\nCVTextElement.prototype.buildNewText = function () {\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\r\n\r\n var hasFill = false;\r\n if (documentData.fc) {\r\n hasFill = true;\r\n this.values.fill = this.buildColor(documentData.fc);\r\n } else {\r\n this.values.fill = 'rgba(0,0,0,0)';\r\n }\r\n this.fill = hasFill;\r\n var hasStroke = false;\r\n if (documentData.sc) {\r\n hasStroke = true;\r\n this.values.stroke = this.buildColor(documentData.sc);\r\n this.values.sWidth = documentData.sw;\r\n }\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n var i;\r\n var len;\r\n var letters = documentData.l;\r\n var matrixHelper = this.mHelper;\r\n this.stroke = hasStroke;\r\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\r\n len = documentData.finalText.length;\r\n // this.tHelper.font = this.values.fValue;\r\n var charData;\r\n var shapeData;\r\n var k;\r\n var kLen;\r\n var shapes;\r\n var j;\r\n var jLen;\r\n var pathNodes;\r\n var commands;\r\n var pathArr;\r\n var singleShape = this.data.singleShape;\r\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\r\n var xPos = 0;\r\n var yPos = 0;\r\n var firstLine = true;\r\n var cnt = 0;\r\n for (i = 0; i < len; i += 1) {\r\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n shapeData = (charData && charData.data) || {};\r\n matrixHelper.reset();\r\n if (singleShape && letters[i].n) {\r\n xPos = -trackingOffset;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n firstLine = false;\r\n }\r\n\r\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\r\n jLen = shapes.length;\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n if (singleShape) {\r\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n }\r\n commands = createSizedArray(jLen);\r\n for (j = 0; j < jLen; j += 1) {\r\n kLen = shapes[j].ks.k.i.length;\r\n pathNodes = shapes[j].ks.k;\r\n pathArr = [];\r\n for (k = 1; k < kLen; k += 1) {\r\n if (k === 1) {\r\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\r\n }\r\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\r\n }\r\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\r\n commands[j] = pathArr;\r\n }\r\n if (singleShape) {\r\n xPos += letters[i].l;\r\n xPos += trackingOffset;\r\n }\r\n if (this.textSpans[cnt]) {\r\n this.textSpans[cnt].elem = commands;\r\n } else {\r\n this.textSpans[cnt] = { elem: commands };\r\n }\r\n cnt += 1;\r\n }\r\n};\r\n\r\nCVTextElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.font = this.values.fValue;\r\n ctx.lineCap = 'butt';\r\n ctx.lineJoin = 'miter';\r\n ctx.miterLimit = 4;\r\n\r\n if (!this.data.singleShape) {\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n }\r\n\r\n var i;\r\n var len;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n\r\n var letters = this.textProperty.currentData.l;\r\n\r\n len = letters.length;\r\n var renderedLetter;\r\n var lastFill = null;\r\n var lastStroke = null;\r\n var lastStrokeW = null;\r\n var commands;\r\n var pathArr;\r\n for (i = 0; i < len; i += 1) {\r\n if (!letters[i].n) {\r\n renderedLetter = renderedLetters[i];\r\n if (renderedLetter) {\r\n this.globalData.renderer.save();\r\n this.globalData.renderer.ctxTransform(renderedLetter.p);\r\n this.globalData.renderer.ctxOpacity(renderedLetter.o);\r\n }\r\n if (this.fill) {\r\n if (renderedLetter && renderedLetter.fc) {\r\n if (lastFill !== renderedLetter.fc) {\r\n lastFill = renderedLetter.fc;\r\n ctx.fillStyle = renderedLetter.fc;\r\n }\r\n } else if (lastFill !== this.values.fill) {\r\n lastFill = this.values.fill;\r\n ctx.fillStyle = this.values.fill;\r\n }\r\n commands = this.textSpans[i].elem;\r\n jLen = commands.length;\r\n this.globalData.canvasContext.beginPath();\r\n for (j = 0; j < jLen; j += 1) {\r\n pathArr = commands[j];\r\n kLen = pathArr.length;\r\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\r\n for (k = 2; k < kLen; k += 6) {\r\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\r\n }\r\n }\r\n this.globalData.canvasContext.closePath();\r\n this.globalData.canvasContext.fill();\r\n /// ctx.fillText(this.textSpans[i].val,0,0);\r\n }\r\n if (this.stroke) {\r\n if (renderedLetter && renderedLetter.sw) {\r\n if (lastStrokeW !== renderedLetter.sw) {\r\n lastStrokeW = renderedLetter.sw;\r\n ctx.lineWidth = renderedLetter.sw;\r\n }\r\n } else if (lastStrokeW !== this.values.sWidth) {\r\n lastStrokeW = this.values.sWidth;\r\n ctx.lineWidth = this.values.sWidth;\r\n }\r\n if (renderedLetter && renderedLetter.sc) {\r\n if (lastStroke !== renderedLetter.sc) {\r\n lastStroke = renderedLetter.sc;\r\n ctx.strokeStyle = renderedLetter.sc;\r\n }\r\n } else if (lastStroke !== this.values.stroke) {\r\n lastStroke = this.values.stroke;\r\n ctx.strokeStyle = this.values.stroke;\r\n }\r\n commands = this.textSpans[i].elem;\r\n jLen = commands.length;\r\n this.globalData.canvasContext.beginPath();\r\n for (j = 0; j < jLen; j += 1) {\r\n pathArr = commands[j];\r\n kLen = pathArr.length;\r\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\r\n for (k = 2; k < kLen; k += 6) {\r\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\r\n }\r\n }\r\n this.globalData.canvasContext.closePath();\r\n this.globalData.canvasContext.stroke();\r\n /// ctx.strokeText(letters[i].val,0,0);\r\n }\r\n if (renderedLetter) {\r\n this.globalData.renderer.restore();\r\n }\r\n }\r\n }\r\n};\r\n\r\nfunction CVEffects() {\r\n\r\n}\r\nCVEffects.prototype.renderFrame = function () {};\r\n\r\n/* global createTag, createNS, styleDiv, CVEffects, MaskElement, SVGBaseElement, HybridRenderer */\r\n\r\nfunction HBaseElement() {}\r\nHBaseElement.prototype = {\r\n checkBlendMode: function () {},\r\n initRendererElement: function () {\r\n this.baseElement = createTag(this.data.tg || 'div');\r\n if (this.data.hasMask) {\r\n this.svgElement = createNS('svg');\r\n this.layerElement = createNS('g');\r\n this.maskedElement = this.layerElement;\r\n this.svgElement.appendChild(this.layerElement);\r\n this.baseElement.appendChild(this.svgElement);\r\n } else {\r\n this.layerElement = this.baseElement;\r\n }\r\n styleDiv(this.baseElement);\r\n },\r\n createContainerElements: function () {\r\n this.renderableEffectsManager = new CVEffects(this);\r\n this.transformedElement = this.baseElement;\r\n this.maskedElement = this.layerElement;\r\n if (this.data.ln) {\r\n this.layerElement.setAttribute('id', this.data.ln);\r\n }\r\n if (this.data.cl) {\r\n this.layerElement.setAttribute('class', this.data.cl);\r\n }\r\n if (this.data.bm !== 0) {\r\n this.setBlendMode();\r\n }\r\n },\r\n renderElement: function () {\r\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\r\n if (this.finalTransform._matMdf) {\r\n var matrixValue = this.finalTransform.mat.toCSS();\r\n transformedElementStyle.transform = matrixValue;\r\n transformedElementStyle.webkitTransform = matrixValue;\r\n }\r\n if (this.finalTransform._opMdf) {\r\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\r\n }\r\n },\r\n renderFrame: function () {\r\n // If it is exported as hidden (data.hd === true) no need to render\r\n // If it is not visible no need to render\r\n if (this.data.hd || this.hidden) {\r\n return;\r\n }\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.renderElement();\r\n this.renderInnerContent();\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n destroy: function () {\r\n this.layerElement = null;\r\n this.transformedElement = null;\r\n if (this.matteElement) {\r\n this.matteElement = null;\r\n }\r\n if (this.maskManager) {\r\n this.maskManager.destroy();\r\n this.maskManager = null;\r\n }\r\n },\r\n createRenderableComponents: function () {\r\n this.maskManager = new MaskElement(this.data, this, this.globalData);\r\n },\r\n addEffects: function () {\r\n },\r\n setMatte: function () {},\r\n};\r\nHBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\r\nHBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\r\nHBaseElement.prototype.buildElementParenting = HybridRenderer.prototype.buildElementParenting;\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement,\r\nRenderableDOMElement, createNS, createTag */\r\n\r\nfunction HSolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\r\n\r\nHSolidElement.prototype.createContent = function () {\r\n var rect;\r\n if (this.data.hasMask) {\r\n rect = createNS('rect');\r\n rect.setAttribute('width', this.data.sw);\r\n rect.setAttribute('height', this.data.sh);\r\n rect.setAttribute('fill', this.data.sc);\r\n this.svgElement.setAttribute('width', this.data.sw);\r\n this.svgElement.setAttribute('height', this.data.sh);\r\n } else {\r\n rect = createTag('div');\r\n rect.style.width = this.data.sw + 'px';\r\n rect.style.height = this.data.sh + 'px';\r\n rect.style.backgroundColor = this.data.sc;\r\n }\r\n this.layerElement.appendChild(rect);\r\n};\r\n\r\n/* global createSizedArray, PropertyFactory, extendPrototype, HybridRenderer, ICompElement, HBaseElement */\r\n\r\nfunction HCompElement(data, globalData, comp) {\r\n this.layers = data.layers;\r\n this.supports3d = !data.hasMask;\r\n this.completeLayers = false;\r\n this.pendingElements = [];\r\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nextendPrototype([HybridRenderer, ICompElement, HBaseElement], HCompElement);\r\nHCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\r\n\r\nHCompElement.prototype.createContainerElements = function () {\r\n this._createBaseContainerElements();\r\n // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\r\n if (this.data.hasMask) {\r\n this.svgElement.setAttribute('width', this.data.w);\r\n this.svgElement.setAttribute('height', this.data.h);\r\n this.transformedElement = this.baseElement;\r\n } else {\r\n this.transformedElement = this.layerElement;\r\n }\r\n};\r\n\r\nHCompElement.prototype.addTo3dContainer = function (elem, pos) {\r\n var j = 0;\r\n var nextElement;\r\n while (j < pos) {\r\n if (this.elements[j] && this.elements[j].getBaseElement) {\r\n nextElement = this.elements[j].getBaseElement();\r\n }\r\n j += 1;\r\n }\r\n if (nextElement) {\r\n this.layerElement.insertBefore(elem, nextElement);\r\n } else {\r\n this.layerElement.appendChild(elem);\r\n }\r\n};\r\n\r\n/* global createNS, extendPrototype, BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement,\r\nHierarchyElement, FrameElement, RenderableElement, createNS, bmMin, bmSqrt, bmMin, bmMax, bmPow */\r\n\r\nfunction HShapeElement(data, globalData, comp) {\r\n // List of drawable elements\r\n this.shapes = [];\r\n // Full shape data\r\n this.shapesData = data.shapes;\r\n // List of styles that will be applied to shapes\r\n this.stylesList = [];\r\n // List of modifiers that will be applied to shapes\r\n this.shapeModifiers = [];\r\n // List of items in shape tree\r\n this.itemsData = [];\r\n // List of items in previous shape tree\r\n this.processedElements = [];\r\n // List of animated components\r\n this.animatedContents = [];\r\n this.shapesContainer = createNS('g');\r\n this.initElement(data, globalData, comp);\r\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n // List of elements that have been created\r\n this.prevViewData = [];\r\n this.currentBBox = {\r\n x: 999999,\r\n y: -999999,\r\n h: 0,\r\n w: 0,\r\n };\r\n}\r\nextendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\r\nHShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\r\n\r\nHShapeElement.prototype.createContent = function () {\r\n var cont;\r\n this.baseElement.style.fontSize = 0;\r\n if (this.data.hasMask) {\r\n this.layerElement.appendChild(this.shapesContainer);\r\n cont = this.svgElement;\r\n } else {\r\n cont = createNS('svg');\r\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\r\n cont.setAttribute('width', size.w);\r\n cont.setAttribute('height', size.h);\r\n cont.appendChild(this.shapesContainer);\r\n this.layerElement.appendChild(cont);\r\n }\r\n\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\r\n this.filterUniqueShapes();\r\n this.shapeCont = cont;\r\n};\r\n\r\nHShapeElement.prototype.getTransformedPoint = function (transformers, point) {\r\n var i;\r\n var len = transformers.length;\r\n for (i = 0; i < len; i += 1) {\r\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\r\n }\r\n return point;\r\n};\r\n\r\nHShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\r\n var shape = item.sh.v;\r\n var transformers = item.transformers;\r\n var i;\r\n var len = shape._length;\r\n var vPoint;\r\n var oPoint;\r\n var nextIPoint;\r\n var nextVPoint;\r\n if (len <= 1) {\r\n return;\r\n }\r\n for (i = 0; i < len - 1; i += 1) {\r\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\r\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\r\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\r\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\r\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\r\n }\r\n if (shape.c) {\r\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\r\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\r\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\r\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\r\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\r\n }\r\n};\r\n\r\nHShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\r\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\r\n var bounds = this.shapeBoundingBox;\r\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\r\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\r\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\r\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\r\n};\r\n\r\nHShapeElement.prototype.shapeBoundingBox = {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0,\r\n};\r\n\r\nHShapeElement.prototype.tempBoundingBox = {\r\n x: 0,\r\n xMax: 0,\r\n y: 0,\r\n yMax: 0,\r\n width: 0,\r\n height: 0,\r\n};\r\n\r\nHShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\r\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\r\n\r\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) { // eslint-disable-line no-plusplus\r\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\r\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\r\n c = 3 * p1[i] - 3 * p0[i];\r\n\r\n b |= 0; // eslint-disable-line no-bitwise\r\n a |= 0; // eslint-disable-line no-bitwise\r\n c |= 0; // eslint-disable-line no-bitwise\r\n\r\n if (a === 0 && b === 0) {\r\n //\r\n } else if (a === 0) {\r\n t = -c / b;\r\n\r\n if (t > 0 && t < 1) {\r\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\r\n }\r\n } else {\r\n b2ac = b * b - 4 * c * a;\r\n\r\n if (b2ac >= 0) {\r\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\r\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\r\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\r\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\r\n }\r\n }\r\n }\r\n\r\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\r\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\r\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\r\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\r\n};\r\n\r\nHShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\r\n return bmPow(1 - t, 3) * p0[i]\r\n + 3 * bmPow(1 - t, 2) * t * p1[i]\r\n + 3 * (1 - t) * bmPow(t, 2) * p2[i]\r\n + bmPow(t, 3) * p3[i];\r\n};\r\n\r\nHShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\r\n var i;\r\n var len = itemsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (itemsData[i] && itemsData[i].sh) {\r\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\r\n } else if (itemsData[i] && itemsData[i].it) {\r\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\r\n }\r\n }\r\n};\r\n\r\nHShapeElement.prototype.currentBoxContains = function (box) {\r\n return this.currentBBox.x <= box.x\r\n && this.currentBBox.y <= box.y\r\n && this.currentBBox.width + this.currentBBox.x >= box.x + box.width\r\n && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\r\n};\r\n\r\nHShapeElement.prototype.renderInnerContent = function () {\r\n this._renderShapeFrame();\r\n\r\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\r\n var tempBoundingBox = this.tempBoundingBox;\r\n var max = 999999;\r\n tempBoundingBox.x = max;\r\n tempBoundingBox.xMax = -max;\r\n tempBoundingBox.y = max;\r\n tempBoundingBox.yMax = -max;\r\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\r\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\r\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y;\r\n // var tempBoundingBox = this.shapeCont.getBBox();\r\n if (this.currentBoxContains(tempBoundingBox)) {\r\n return;\r\n }\r\n var changed = false;\r\n if (this.currentBBox.w !== tempBoundingBox.width) {\r\n this.currentBBox.w = tempBoundingBox.width;\r\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\r\n changed = true;\r\n }\r\n if (this.currentBBox.h !== tempBoundingBox.height) {\r\n this.currentBBox.h = tempBoundingBox.height;\r\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\r\n changed = true;\r\n }\r\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\r\n this.currentBBox.w = tempBoundingBox.width;\r\n this.currentBBox.h = tempBoundingBox.height;\r\n this.currentBBox.x = tempBoundingBox.x;\r\n this.currentBBox.y = tempBoundingBox.y;\r\n\r\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\r\n var shapeStyle = this.shapeCont.style;\r\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\r\n shapeStyle.transform = shapeTransform;\r\n shapeStyle.webkitTransform = shapeTransform;\r\n }\r\n }\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement,\r\nRenderableDOMElement, ITextElement, createSizedArray, createTag, styleDiv, createNS, lineJoinEnum, lineCapEnum */\r\n\r\nfunction HTextElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.textPaths = [];\r\n this.currentBBox = {\r\n x: 999999,\r\n y: -999999,\r\n h: 0,\r\n w: 0,\r\n };\r\n this.renderType = 'svg';\r\n this.isMasked = false;\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\r\n\r\nHTextElement.prototype.createContent = function () {\r\n this.isMasked = this.checkMasks();\r\n if (this.isMasked) {\r\n this.renderType = 'svg';\r\n this.compW = this.comp.data.w;\r\n this.compH = this.comp.data.h;\r\n this.svgElement.setAttribute('width', this.compW);\r\n this.svgElement.setAttribute('height', this.compH);\r\n var g = createNS('g');\r\n this.maskedElement.appendChild(g);\r\n this.innerElem = g;\r\n } else {\r\n this.renderType = 'html';\r\n this.innerElem = this.layerElement;\r\n }\r\n\r\n this.checkParenting();\r\n};\r\n\r\nHTextElement.prototype.buildNewText = function () {\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\r\n var innerElemStyle = this.innerElem.style;\r\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\r\n innerElemStyle.fill = textColor;\r\n innerElemStyle.color = textColor;\r\n if (documentData.sc) {\r\n innerElemStyle.stroke = this.buildColor(documentData.sc);\r\n innerElemStyle.strokeWidth = documentData.sw + 'px';\r\n }\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n if (!this.globalData.fontManager.chars) {\r\n innerElemStyle.fontSize = documentData.finalSize + 'px';\r\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\r\n if (fontData.fClass) {\r\n this.innerElem.className = fontData.fClass;\r\n } else {\r\n innerElemStyle.fontFamily = fontData.fFamily;\r\n var fWeight = documentData.fWeight;\r\n var fStyle = documentData.fStyle;\r\n innerElemStyle.fontStyle = fStyle;\r\n innerElemStyle.fontWeight = fWeight;\r\n }\r\n }\r\n var i;\r\n var len;\r\n\r\n var letters = documentData.l;\r\n len = letters.length;\r\n var tSpan;\r\n var tParent;\r\n var tCont;\r\n var matrixHelper = this.mHelper;\r\n var shapes;\r\n var shapeStr = '';\r\n var cnt = 0;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.globalData.fontManager.chars) {\r\n if (!this.textPaths[cnt]) {\r\n tSpan = createNS('path');\r\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\r\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\r\n tSpan.setAttribute('stroke-miterlimit', '4');\r\n } else {\r\n tSpan = this.textPaths[cnt];\r\n }\r\n if (!this.isMasked) {\r\n if (this.textSpans[cnt]) {\r\n tParent = this.textSpans[cnt];\r\n tCont = tParent.children[0];\r\n } else {\r\n tParent = createTag('div');\r\n tParent.style.lineHeight = 0;\r\n tCont = createNS('svg');\r\n tCont.appendChild(tSpan);\r\n styleDiv(tParent);\r\n }\r\n }\r\n } else if (!this.isMasked) {\r\n if (this.textSpans[cnt]) {\r\n tParent = this.textSpans[cnt];\r\n tSpan = this.textPaths[cnt];\r\n } else {\r\n tParent = createTag('span');\r\n styleDiv(tParent);\r\n tSpan = createTag('span');\r\n styleDiv(tSpan);\r\n tParent.appendChild(tSpan);\r\n }\r\n } else {\r\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\r\n }\r\n // tSpan.setAttribute('visibility', 'hidden');\r\n if (this.globalData.fontManager.chars) {\r\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n var shapeData;\r\n if (charData) {\r\n shapeData = charData.data;\r\n } else {\r\n shapeData = null;\r\n }\r\n matrixHelper.reset();\r\n if (shapeData && shapeData.shapes) {\r\n shapes = shapeData.shapes[0].it;\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n shapeStr = this.createPathShape(matrixHelper, shapes);\r\n tSpan.setAttribute('d', shapeStr);\r\n }\r\n if (!this.isMasked) {\r\n this.innerElem.appendChild(tParent);\r\n if (shapeData && shapeData.shapes) {\r\n // document.body.appendChild is needed to get exact measure of shape\r\n document.body.appendChild(tCont);\r\n var boundingBox = tCont.getBBox();\r\n tCont.setAttribute('width', boundingBox.width + 2);\r\n tCont.setAttribute('height', boundingBox.height + 2);\r\n tCont.setAttribute('viewBox', (boundingBox.x - 1) + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\r\n var tContStyle = tCont.style;\r\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\r\n tContStyle.transform = tContTranslation;\r\n tContStyle.webkitTransform = tContTranslation;\r\n\r\n letters[i].yOffset = boundingBox.y - 1;\r\n } else {\r\n tCont.setAttribute('width', 1);\r\n tCont.setAttribute('height', 1);\r\n }\r\n tParent.appendChild(tCont);\r\n } else {\r\n this.innerElem.appendChild(tSpan);\r\n }\r\n } else {\r\n tSpan.textContent = letters[i].val;\r\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\r\n if (!this.isMasked) {\r\n this.innerElem.appendChild(tParent);\r\n //\r\n var tStyle = tSpan.style;\r\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\r\n tStyle.transform = tSpanTranslation;\r\n tStyle.webkitTransform = tSpanTranslation;\r\n } else {\r\n this.innerElem.appendChild(tSpan);\r\n }\r\n }\r\n //\r\n if (!this.isMasked) {\r\n this.textSpans[cnt] = tParent;\r\n } else {\r\n this.textSpans[cnt] = tSpan;\r\n }\r\n this.textSpans[cnt].style.display = 'block';\r\n this.textPaths[cnt] = tSpan;\r\n cnt += 1;\r\n }\r\n while (cnt < this.textSpans.length) {\r\n this.textSpans[cnt].style.display = 'none';\r\n cnt += 1;\r\n }\r\n};\r\n\r\nHTextElement.prototype.renderInnerContent = function () {\r\n var svgStyle;\r\n if (this.data.singleShape) {\r\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\r\n return;\r\n } if (this.isMasked && this.finalTransform._matMdf) {\r\n // Todo Benchmark if using this is better than getBBox\r\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\r\n svgStyle = this.svgElement.style;\r\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\r\n svgStyle.transform = translation;\r\n svgStyle.webkitTransform = translation;\r\n }\r\n }\r\n\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\r\n return;\r\n }\r\n var i;\r\n var len;\r\n var count = 0;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n\r\n var letters = this.textProperty.currentData.l;\r\n\r\n len = letters.length;\r\n var renderedLetter;\r\n var textSpan;\r\n var textPath;\r\n for (i = 0; i < len; i += 1) {\r\n if (letters[i].n) {\r\n count += 1;\r\n } else {\r\n textSpan = this.textSpans[i];\r\n textPath = this.textPaths[i];\r\n renderedLetter = renderedLetters[count];\r\n count += 1;\r\n if (renderedLetter._mdf.m) {\r\n if (!this.isMasked) {\r\n textSpan.style.webkitTransform = renderedLetter.m;\r\n textSpan.style.transform = renderedLetter.m;\r\n } else {\r\n textSpan.setAttribute('transform', renderedLetter.m);\r\n }\r\n }\r\n /// /textSpan.setAttribute('opacity',renderedLetter.o);\r\n textSpan.style.opacity = renderedLetter.o;\r\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\r\n textPath.setAttribute('stroke-width', renderedLetter.sw);\r\n }\r\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\r\n textPath.setAttribute('stroke', renderedLetter.sc);\r\n }\r\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\r\n textPath.setAttribute('fill', renderedLetter.fc);\r\n textPath.style.color = renderedLetter.fc;\r\n }\r\n }\r\n }\r\n\r\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\r\n var boundingBox = this.innerElem.getBBox();\r\n\r\n if (this.currentBBox.w !== boundingBox.width) {\r\n this.currentBBox.w = boundingBox.width;\r\n this.svgElement.setAttribute('width', boundingBox.width);\r\n }\r\n if (this.currentBBox.h !== boundingBox.height) {\r\n this.currentBBox.h = boundingBox.height;\r\n this.svgElement.setAttribute('height', boundingBox.height);\r\n }\r\n\r\n var margin = 1;\r\n if (this.currentBBox.w !== (boundingBox.width + margin * 2) || this.currentBBox.h !== (boundingBox.height + margin * 2) || this.currentBBox.x !== (boundingBox.x - margin) || this.currentBBox.y !== (boundingBox.y - margin)) {\r\n this.currentBBox.w = boundingBox.width + margin * 2;\r\n this.currentBBox.h = boundingBox.height + margin * 2;\r\n this.currentBBox.x = boundingBox.x - margin;\r\n this.currentBBox.y = boundingBox.y - margin;\r\n\r\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\r\n svgStyle = this.svgElement.style;\r\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\r\n svgStyle.transform = svgTransform;\r\n svgStyle.webkitTransform = svgTransform;\r\n }\r\n }\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement,\r\nFrameElement, RenderableElement, createNS */\r\n\r\nfunction HImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initElement(data, globalData, comp);\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\r\n\r\nHImageElement.prototype.createContent = function () {\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n var img = new Image();\r\n\r\n if (this.data.hasMask) {\r\n this.imageElem = createNS('image');\r\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\r\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\r\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\r\n this.layerElement.appendChild(this.imageElem);\r\n this.baseElement.setAttribute('width', this.assetData.w);\r\n this.baseElement.setAttribute('height', this.assetData.h);\r\n } else {\r\n this.layerElement.appendChild(img);\r\n }\r\n img.crossOrigin = 'anonymous';\r\n img.src = assetPath;\r\n if (this.data.ln) {\r\n this.baseElement.setAttribute('id', this.data.ln);\r\n }\r\n};\r\n\r\n/* global PropertyFactory, degToRads, Matrix, extendPrototype, BaseElement, FrameElement, HierarchyElement */\r\n\r\nfunction HCameraElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initHierarchy();\r\n var getProp = PropertyFactory.getProp;\r\n this.pe = getProp(this, data.pe, 0, 0, this);\r\n if (data.ks.p.s) {\r\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\r\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\r\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\r\n } else {\r\n this.p = getProp(this, data.ks.p, 1, 0, this);\r\n }\r\n if (data.ks.a) {\r\n this.a = getProp(this, data.ks.a, 1, 0, this);\r\n }\r\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\r\n var i;\r\n var len = data.ks.or.k.length;\r\n for (i = 0; i < len; i += 1) {\r\n data.ks.or.k[i].to = null;\r\n data.ks.or.k[i].ti = null;\r\n }\r\n }\r\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\r\n this.or.sh = true;\r\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\r\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\r\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\r\n this.mat = new Matrix();\r\n this._prevMat = new Matrix();\r\n this._isFirstFrame = true;\r\n\r\n // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\r\n this.finalTransform = {\r\n mProp: this,\r\n };\r\n}\r\nextendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\r\n\r\nHCameraElement.prototype.setup = function () {\r\n var i;\r\n var len = this.comp.threeDElements.length;\r\n var comp;\r\n var perspectiveStyle;\r\n var containerStyle;\r\n for (i = 0; i < len; i += 1) {\r\n // [perspectiveElem,container]\r\n comp = this.comp.threeDElements[i];\r\n if (comp.type === '3d') {\r\n perspectiveStyle = comp.perspectiveElem.style;\r\n containerStyle = comp.container.style;\r\n var perspective = this.pe.v + 'px';\r\n var origin = '0px 0px 0px';\r\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\r\n perspectiveStyle.perspective = perspective;\r\n perspectiveStyle.webkitPerspective = perspective;\r\n containerStyle.transformOrigin = origin;\r\n containerStyle.mozTransformOrigin = origin;\r\n containerStyle.webkitTransformOrigin = origin;\r\n perspectiveStyle.transform = matrix;\r\n perspectiveStyle.webkitTransform = matrix;\r\n }\r\n }\r\n};\r\n\r\nHCameraElement.prototype.createElements = function () {\r\n};\r\n\r\nHCameraElement.prototype.hide = function () {\r\n};\r\n\r\nHCameraElement.prototype.renderFrame = function () {\r\n var _mdf = this._isFirstFrame;\r\n var i;\r\n var len;\r\n if (this.hierarchy) {\r\n len = this.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\r\n }\r\n }\r\n if (_mdf || this.pe._mdf || (this.p && this.p._mdf) || (this.px && (this.px._mdf || this.py._mdf || this.pz._mdf)) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || (this.a && this.a._mdf)) {\r\n this.mat.reset();\r\n\r\n if (this.hierarchy) {\r\n len = this.hierarchy.length - 1;\r\n for (i = len; i >= 0; i -= 1) {\r\n var mTransf = this.hierarchy[i].finalTransform.mProp;\r\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\r\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\r\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\r\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\r\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\r\n }\r\n }\r\n if (this.p) {\r\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\r\n } else {\r\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\r\n }\r\n if (this.a) {\r\n var diffVector;\r\n if (this.p) {\r\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\r\n } else {\r\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\r\n }\r\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2));\r\n // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\r\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\r\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\r\n var mRotationX = (Math.atan2(lookDir[1], lookLengthOnXZ));\r\n var mRotationY = (Math.atan2(lookDir[0], -lookDir[2]));\r\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\r\n }\r\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\r\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\r\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\r\n this.mat.translate(0, 0, this.pe.v);\r\n\r\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\r\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\r\n len = this.comp.threeDElements.length;\r\n var comp;\r\n var perspectiveStyle;\r\n var containerStyle;\r\n for (i = 0; i < len; i += 1) {\r\n comp = this.comp.threeDElements[i];\r\n if (comp.type === '3d') {\r\n if (hasMatrixChanged) {\r\n var matValue = this.mat.toCSS();\r\n containerStyle = comp.container.style;\r\n containerStyle.transform = matValue;\r\n containerStyle.webkitTransform = matValue;\r\n }\r\n if (this.pe._mdf) {\r\n perspectiveStyle = comp.perspectiveElem.style;\r\n perspectiveStyle.perspective = this.pe.v + 'px';\r\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\r\n }\r\n }\r\n }\r\n this.mat.clone(this._prevMat);\r\n }\r\n }\r\n this._isFirstFrame = false;\r\n};\r\n\r\nHCameraElement.prototype.prepareFrame = function (num) {\r\n this.prepareProperties(num, true);\r\n};\r\n\r\nHCameraElement.prototype.destroy = function () {\r\n};\r\nHCameraElement.prototype.getBaseElement = function () { return null; };\r\n\r\nfunction HEffects() {\r\n}\r\nHEffects.prototype.renderFrame = function () {};\r\n\r\n/* global createTag, AnimationItem */\r\n/* exported animationManager */\r\n\r\nvar animationManager = (function () {\r\n var moduleOb = {};\r\n var registeredAnimations = [];\r\n var initTime = 0;\r\n var len = 0;\r\n var playingAnimationsNum = 0;\r\n var _stopped = true;\r\n var _isFrozen = false;\r\n\r\n function removeElement(ev) {\r\n var i = 0;\r\n var animItem = ev.target;\r\n while (i < len) {\r\n if (registeredAnimations[i].animation === animItem) {\r\n registeredAnimations.splice(i, 1);\r\n i -= 1;\r\n len -= 1;\r\n if (!animItem.isPaused) {\r\n subtractPlayingCount();\r\n }\r\n }\r\n i += 1;\r\n }\r\n }\r\n\r\n function registerAnimation(element, animationData) {\r\n if (!element) {\r\n return null;\r\n }\r\n var i = 0;\r\n while (i < len) {\r\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\r\n return registeredAnimations[i].animation;\r\n }\r\n i += 1;\r\n }\r\n var animItem = new AnimationItem();\r\n setupAnimation(animItem, element);\r\n animItem.setData(element, animationData);\r\n return animItem;\r\n }\r\n\r\n function getRegisteredAnimations() {\r\n var i;\r\n var lenAnims = registeredAnimations.length;\r\n var animations = [];\r\n for (i = 0; i < lenAnims; i += 1) {\r\n animations.push(registeredAnimations[i].animation);\r\n }\r\n return animations;\r\n }\r\n\r\n function addPlayingCount() {\r\n playingAnimationsNum += 1;\r\n activate();\r\n }\r\n\r\n function subtractPlayingCount() {\r\n playingAnimationsNum -= 1;\r\n }\r\n\r\n function setupAnimation(animItem, element) {\r\n animItem.addEventListener('destroy', removeElement);\r\n animItem.addEventListener('_active', addPlayingCount);\r\n animItem.addEventListener('_idle', subtractPlayingCount);\r\n registeredAnimations.push({ elem: element, animation: animItem });\r\n len += 1;\r\n }\r\n\r\n function loadAnimation(params) {\r\n var animItem = new AnimationItem();\r\n setupAnimation(animItem, null);\r\n animItem.setParams(params);\r\n return animItem;\r\n }\r\n\r\n function setSpeed(val, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setSpeed(val, animation);\r\n }\r\n }\r\n\r\n function setDirection(val, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setDirection(val, animation);\r\n }\r\n }\r\n\r\n function play(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.play(animation);\r\n }\r\n }\r\n function resume(nowTime) {\r\n var elapsedTime = nowTime - initTime;\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.advanceTime(elapsedTime);\r\n }\r\n initTime = nowTime;\r\n if (playingAnimationsNum && !_isFrozen) {\r\n window.requestAnimationFrame(resume);\r\n } else {\r\n _stopped = true;\r\n }\r\n }\r\n\r\n function first(nowTime) {\r\n initTime = nowTime;\r\n window.requestAnimationFrame(resume);\r\n }\r\n\r\n function pause(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.pause(animation);\r\n }\r\n }\r\n\r\n function goToAndStop(value, isFrame, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\r\n }\r\n }\r\n\r\n function stop(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.stop(animation);\r\n }\r\n }\r\n\r\n function togglePause(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.togglePause(animation);\r\n }\r\n }\r\n\r\n function destroy(animation) {\r\n var i;\r\n for (i = (len - 1); i >= 0; i -= 1) {\r\n registeredAnimations[i].animation.destroy(animation);\r\n }\r\n }\r\n\r\n function searchAnimations(animationData, standalone, renderer) {\r\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')),\r\n [].slice.call(document.getElementsByClassName('bodymovin')));\r\n var i;\r\n var lenAnims = animElements.length;\r\n for (i = 0; i < lenAnims; i += 1) {\r\n if (renderer) {\r\n animElements[i].setAttribute('data-bm-type', renderer);\r\n }\r\n registerAnimation(animElements[i], animationData);\r\n }\r\n if (standalone && lenAnims === 0) {\r\n if (!renderer) {\r\n renderer = 'svg';\r\n }\r\n var body = document.getElementsByTagName('body')[0];\r\n body.innerText = '';\r\n var div = createTag('div');\r\n div.style.width = '100%';\r\n div.style.height = '100%';\r\n div.setAttribute('data-bm-type', renderer);\r\n body.appendChild(div);\r\n registerAnimation(div, animationData);\r\n }\r\n }\r\n\r\n function resize() {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.resize();\r\n }\r\n }\r\n\r\n function activate() {\r\n if (!_isFrozen && playingAnimationsNum) {\r\n if (_stopped) {\r\n window.requestAnimationFrame(first);\r\n _stopped = false;\r\n }\r\n }\r\n }\r\n\r\n function freeze() {\r\n _isFrozen = true;\r\n }\r\n\r\n function unfreeze() {\r\n _isFrozen = false;\r\n activate();\r\n }\r\n\r\n function setVolume(val, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setVolume(val, animation);\r\n }\r\n }\r\n\r\n function mute(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.mute(animation);\r\n }\r\n }\r\n\r\n function unmute(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.unmute(animation);\r\n }\r\n }\r\n\r\n moduleOb.registerAnimation = registerAnimation;\r\n moduleOb.loadAnimation = loadAnimation;\r\n moduleOb.setSpeed = setSpeed;\r\n moduleOb.setDirection = setDirection;\r\n moduleOb.play = play;\r\n moduleOb.pause = pause;\r\n moduleOb.stop = stop;\r\n moduleOb.togglePause = togglePause;\r\n moduleOb.searchAnimations = searchAnimations;\r\n moduleOb.resize = resize;\r\n // moduleOb.start = start;\r\n moduleOb.goToAndStop = goToAndStop;\r\n moduleOb.destroy = destroy;\r\n moduleOb.freeze = freeze;\r\n moduleOb.unfreeze = unfreeze;\r\n moduleOb.setVolume = setVolume;\r\n moduleOb.mute = mute;\r\n moduleOb.unmute = unmute;\r\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\r\n return moduleOb;\r\n}());\r\n\r\n/* global createElementID, subframeEnabled, ProjectInterface, ImagePreloader, audioControllerFactory, extendPrototype, BaseEvent,\r\nCanvasRenderer, SVGRenderer, HybridRenderer, dataManager, expressionsPlugin, BMEnterFrameEvent, BMCompleteLoopEvent,\r\nBMCompleteEvent, BMSegmentStartEvent, BMDestroyEvent, BMEnterFrameEvent, BMCompleteLoopEvent, BMCompleteEvent, BMSegmentStartEvent,\r\nBMDestroyEvent, BMRenderFrameErrorEvent, BMConfigErrorEvent, markerParser */\r\n\r\nvar AnimationItem = function () {\r\n this._cbs = [];\r\n this.name = '';\r\n this.path = '';\r\n this.isLoaded = false;\r\n this.currentFrame = 0;\r\n this.currentRawFrame = 0;\r\n this.firstFrame = 0;\r\n this.totalFrames = 0;\r\n this.frameRate = 0;\r\n this.frameMult = 0;\r\n this.playSpeed = 1;\r\n this.playDirection = 1;\r\n this.playCount = 0;\r\n this.animationData = {};\r\n this.assets = [];\r\n this.isPaused = true;\r\n this.autoplay = false;\r\n this.loop = true;\r\n this.renderer = null;\r\n this.animationID = createElementID();\r\n this.assetsPath = '';\r\n this.timeCompleted = 0;\r\n this.segmentPos = 0;\r\n this.isSubframeEnabled = subframeEnabled;\r\n this.segments = [];\r\n this._idle = true;\r\n this._completedLoop = false;\r\n this.projectInterface = ProjectInterface();\r\n this.imagePreloader = new ImagePreloader();\r\n this.audioController = audioControllerFactory();\r\n this.markers = [];\r\n this.configAnimation = this.configAnimation.bind(this);\r\n this.onSetupError = this.onSetupError.bind(this);\r\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\r\n};\r\n\r\nextendPrototype([BaseEvent], AnimationItem);\r\n\r\nAnimationItem.prototype.setParams = function (params) {\r\n if (params.wrapper || params.container) {\r\n this.wrapper = params.wrapper || params.container;\r\n }\r\n var animType = 'svg';\r\n if (params.animType) {\r\n animType = params.animType;\r\n } else if (params.renderer) {\r\n animType = params.renderer;\r\n }\r\n switch (animType) {\r\n case 'canvas':\r\n this.renderer = new CanvasRenderer(this, params.rendererSettings);\r\n break;\r\n case 'svg':\r\n this.renderer = new SVGRenderer(this, params.rendererSettings);\r\n break;\r\n default:\r\n this.renderer = new HybridRenderer(this, params.rendererSettings);\r\n break;\r\n }\r\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\r\n this.renderer.setProjectInterface(this.projectInterface);\r\n this.animType = animType;\r\n if (params.loop === ''\r\n || params.loop === null\r\n || params.loop === undefined\r\n || params.loop === true) {\r\n this.loop = true;\r\n } else if (params.loop === false) {\r\n this.loop = false;\r\n } else {\r\n this.loop = parseInt(params.loop, 10);\r\n }\r\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\r\n this.name = params.name ? params.name : '';\r\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\r\n this.assetsPath = params.assetsPath;\r\n this.initialSegment = params.initialSegment;\r\n if (params.audioFactory) {\r\n this.audioController.setAudioFactory(params.audioFactory);\r\n }\r\n if (params.animationData) {\r\n this.setupAnimation(params.animationData);\r\n } else if (params.path) {\r\n if (params.path.lastIndexOf('\\\\') !== -1) {\r\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\r\n } else {\r\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\r\n }\r\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\r\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\r\n dataManager.loadAnimation(\r\n params.path,\r\n this.configAnimation,\r\n this.onSetupError\r\n );\r\n }\r\n};\r\n\r\nAnimationItem.prototype.onSetupError = function () {\r\n this.trigger('data_failed');\r\n};\r\n\r\nAnimationItem.prototype.setupAnimation = function (data) {\r\n dataManager.completeAnimation(\r\n data,\r\n this.configAnimation\r\n );\r\n};\r\n\r\nAnimationItem.prototype.setData = function (wrapper, animationData) {\r\n if (animationData) {\r\n if (typeof animationData !== 'object') {\r\n animationData = JSON.parse(animationData);\r\n }\r\n }\r\n var params = {\r\n wrapper: wrapper,\r\n animationData: animationData,\r\n };\r\n var wrapperAttributes = wrapper.attributes;\r\n\r\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-animation-path').value\r\n : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-path').value\r\n : wrapperAttributes.getNamedItem('bm-path')\r\n ? wrapperAttributes.getNamedItem('bm-path').value\r\n : '';\r\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-type').value\r\n : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-type').value\r\n : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('bm-type').value\r\n : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value\r\n : wrapperAttributes.getNamedItem('bm-renderer')\r\n ? wrapperAttributes.getNamedItem('bm-renderer').value\r\n : 'canvas';\r\n\r\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-loop').value\r\n : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-loop').value\r\n : wrapperAttributes.getNamedItem('bm-loop')\r\n ? wrapperAttributes.getNamedItem('bm-loop').value\r\n : '';\r\n if (loop === 'false') {\r\n params.loop = false;\r\n } else if (loop === 'true') {\r\n params.loop = true;\r\n } else if (loop !== '') {\r\n params.loop = parseInt(loop, 10);\r\n }\r\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value\r\n : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value\r\n : wrapperAttributes.getNamedItem('bm-autoplay')\r\n ? wrapperAttributes.getNamedItem('bm-autoplay').value\r\n : true;\r\n params.autoplay = autoplay !== 'false';\r\n\r\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-name').value\r\n : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-name').value\r\n : wrapperAttributes.getNamedItem('bm-name')\r\n ? wrapperAttributes.getNamedItem('bm-name').value\r\n : '';\r\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value\r\n : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value\r\n : wrapperAttributes.getNamedItem('bm-prerender')\r\n ? wrapperAttributes.getNamedItem('bm-prerender').value\r\n : '';\r\n\r\n if (prerender === 'false') {\r\n params.prerender = false;\r\n }\r\n this.setParams(params);\r\n};\r\n\r\nAnimationItem.prototype.includeLayers = function (data) {\r\n if (data.op > this.animationData.op) {\r\n this.animationData.op = data.op;\r\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\r\n }\r\n var layers = this.animationData.layers;\r\n var i;\r\n var len = layers.length;\r\n var newLayers = data.layers;\r\n var j;\r\n var jLen = newLayers.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n i = 0;\r\n while (i < len) {\r\n if (layers[i].id === newLayers[j].id) {\r\n layers[i] = newLayers[j];\r\n break;\r\n }\r\n i += 1;\r\n }\r\n }\r\n if (data.chars || data.fonts) {\r\n this.renderer.globalData.fontManager.addChars(data.chars);\r\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\r\n }\r\n if (data.assets) {\r\n len = data.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.animationData.assets.push(data.assets[i]);\r\n }\r\n }\r\n this.animationData.__complete = false;\r\n dataManager.completeAnimation(\r\n this.animationData,\r\n this.onSegmentComplete\r\n );\r\n};\r\n\r\nAnimationItem.prototype.onSegmentComplete = function (data) {\r\n this.animationData = data;\r\n if (expressionsPlugin) {\r\n expressionsPlugin.initExpressions(this);\r\n }\r\n this.loadNextSegment();\r\n};\r\n\r\nAnimationItem.prototype.loadNextSegment = function () {\r\n var segments = this.animationData.segments;\r\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\r\n this.trigger('data_ready');\r\n this.timeCompleted = this.totalFrames;\r\n return;\r\n }\r\n var segment = segments.shift();\r\n this.timeCompleted = segment.time * this.frameRate;\r\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\r\n this.segmentPos += 1;\r\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\r\n this.trigger('data_failed');\r\n }.bind(this));\r\n};\r\n\r\nAnimationItem.prototype.loadSegments = function () {\r\n var segments = this.animationData.segments;\r\n if (!segments) {\r\n this.timeCompleted = this.totalFrames;\r\n }\r\n this.loadNextSegment();\r\n};\r\n\r\nAnimationItem.prototype.imagesLoaded = function () {\r\n this.trigger('loaded_images');\r\n this.checkLoaded();\r\n};\r\n\r\nAnimationItem.prototype.preloadImages = function () {\r\n this.imagePreloader.setAssetsPath(this.assetsPath);\r\n this.imagePreloader.setPath(this.path);\r\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\r\n};\r\n\r\nAnimationItem.prototype.configAnimation = function (animData) {\r\n if (!this.renderer) {\r\n return;\r\n }\r\n try {\r\n this.animationData = animData;\r\n if (this.initialSegment) {\r\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\r\n this.firstFrame = Math.round(this.initialSegment[0]);\r\n } else {\r\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\r\n this.firstFrame = Math.round(this.animationData.ip);\r\n }\r\n this.renderer.configAnimation(animData);\r\n if (!animData.assets) {\r\n animData.assets = [];\r\n }\r\n\r\n this.assets = this.animationData.assets;\r\n this.frameRate = this.animationData.fr;\r\n this.frameMult = this.animationData.fr / 1000;\r\n this.renderer.searchExtraCompositions(animData.assets);\r\n this.markers = markerParser(animData.markers || []);\r\n this.trigger('config_ready');\r\n this.preloadImages();\r\n this.loadSegments();\r\n this.updaFrameModifier();\r\n this.waitForFontsLoaded();\r\n if (this.isPaused) {\r\n this.audioController.pause();\r\n }\r\n } catch (error) {\r\n this.triggerConfigError(error);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.waitForFontsLoaded = function () {\r\n if (!this.renderer) {\r\n return;\r\n }\r\n if (this.renderer.globalData.fontManager.isLoaded) {\r\n this.checkLoaded();\r\n } else {\r\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.checkLoaded = function () {\r\n if (!this.isLoaded\r\n && this.renderer.globalData.fontManager.isLoaded\r\n && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas')\r\n && (this.imagePreloader.loadedFootages())\r\n ) {\r\n this.isLoaded = true;\r\n if (expressionsPlugin) {\r\n expressionsPlugin.initExpressions(this);\r\n }\r\n this.renderer.initItems();\r\n setTimeout(function () {\r\n this.trigger('DOMLoaded');\r\n }.bind(this), 0);\r\n this.gotoFrame();\r\n if (this.autoplay) {\r\n this.play();\r\n }\r\n }\r\n};\r\n\r\nAnimationItem.prototype.resize = function () {\r\n this.renderer.updateContainerSize();\r\n};\r\n\r\nAnimationItem.prototype.setSubframe = function (flag) {\r\n this.isSubframeEnabled = !!flag;\r\n};\r\n\r\nAnimationItem.prototype.gotoFrame = function () {\r\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\r\n\r\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\r\n this.currentFrame = this.timeCompleted;\r\n }\r\n this.trigger('enterFrame');\r\n this.renderFrame();\r\n this.trigger('drawnFrame');\r\n};\r\n\r\nAnimationItem.prototype.renderFrame = function () {\r\n if (this.isLoaded === false || !this.renderer) {\r\n return;\r\n }\r\n try {\r\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\r\n } catch (error) {\r\n this.triggerRenderFrameError(error);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.play = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n if (this.isPaused === true) {\r\n this.isPaused = false;\r\n this.audioController.resume();\r\n if (this._idle) {\r\n this._idle = false;\r\n this.trigger('_active');\r\n }\r\n }\r\n};\r\n\r\nAnimationItem.prototype.pause = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n if (this.isPaused === false) {\r\n this.isPaused = true;\r\n this._idle = true;\r\n this.trigger('_idle');\r\n this.audioController.pause();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.togglePause = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n if (this.isPaused === true) {\r\n this.play();\r\n } else {\r\n this.pause();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.stop = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.pause();\r\n this.playCount = 0;\r\n this._completedLoop = false;\r\n this.setCurrentRawFrameValue(0);\r\n};\r\n\r\nAnimationItem.prototype.getMarkerData = function (markerName) {\r\n var marker;\r\n for (var i = 0; i < this.markers.length; i += 1) {\r\n marker = this.markers[i];\r\n if (marker.payload && marker.payload.name === markerName) {\r\n return marker;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nAnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n var numValue = Number(value);\r\n if (isNaN(numValue)) {\r\n var marker = this.getMarkerData(value);\r\n if (marker) {\r\n this.goToAndStop(marker.time, true);\r\n }\r\n } else if (isFrame) {\r\n this.setCurrentRawFrameValue(value);\r\n } else {\r\n this.setCurrentRawFrameValue(value * this.frameModifier);\r\n }\r\n this.pause();\r\n};\r\n\r\nAnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n var numValue = Number(value);\r\n if (isNaN(numValue)) {\r\n var marker = this.getMarkerData(value);\r\n if (marker) {\r\n if (!marker.duration) {\r\n this.goToAndStop(marker.time, true);\r\n } else {\r\n this.playSegments([marker.time, marker.time + marker.duration], true);\r\n }\r\n }\r\n } else {\r\n this.goToAndStop(numValue, isFrame, name);\r\n }\r\n this.play();\r\n};\r\n\r\nAnimationItem.prototype.advanceTime = function (value) {\r\n if (this.isPaused === true || this.isLoaded === false) {\r\n return;\r\n }\r\n var nextValue = this.currentRawFrame + value * this.frameModifier;\r\n var _isComplete = false;\r\n // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\r\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\r\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\r\n if (!this.loop || this.playCount === this.loop) {\r\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\r\n _isComplete = true;\r\n nextValue = this.totalFrames - 1;\r\n }\r\n } else if (nextValue >= this.totalFrames) {\r\n this.playCount += 1;\r\n if (!this.checkSegments(nextValue % this.totalFrames)) {\r\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\r\n this._completedLoop = true;\r\n this.trigger('loopComplete');\r\n }\r\n } else {\r\n this.setCurrentRawFrameValue(nextValue);\r\n }\r\n } else if (nextValue < 0) {\r\n if (!this.checkSegments(nextValue % this.totalFrames)) {\r\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) { // eslint-disable-line no-plusplus\r\n this.setCurrentRawFrameValue(this.totalFrames + (nextValue % this.totalFrames));\r\n if (!this._completedLoop) {\r\n this._completedLoop = true;\r\n } else {\r\n this.trigger('loopComplete');\r\n }\r\n } else {\r\n _isComplete = true;\r\n nextValue = 0;\r\n }\r\n }\r\n } else {\r\n this.setCurrentRawFrameValue(nextValue);\r\n }\r\n if (_isComplete) {\r\n this.setCurrentRawFrameValue(nextValue);\r\n this.pause();\r\n this.trigger('complete');\r\n }\r\n};\r\n\r\nAnimationItem.prototype.adjustSegment = function (arr, offset) {\r\n this.playCount = 0;\r\n if (arr[1] < arr[0]) {\r\n if (this.frameModifier > 0) {\r\n if (this.playSpeed < 0) {\r\n this.setSpeed(-this.playSpeed);\r\n } else {\r\n this.setDirection(-1);\r\n }\r\n }\r\n this.totalFrames = arr[0] - arr[1];\r\n this.timeCompleted = this.totalFrames;\r\n this.firstFrame = arr[1];\r\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\r\n } else if (arr[1] > arr[0]) {\r\n if (this.frameModifier < 0) {\r\n if (this.playSpeed < 0) {\r\n this.setSpeed(-this.playSpeed);\r\n } else {\r\n this.setDirection(1);\r\n }\r\n }\r\n this.totalFrames = arr[1] - arr[0];\r\n this.timeCompleted = this.totalFrames;\r\n this.firstFrame = arr[0];\r\n this.setCurrentRawFrameValue(0.001 + offset);\r\n }\r\n this.trigger('segmentStart');\r\n};\r\nAnimationItem.prototype.setSegment = function (init, end) {\r\n var pendingFrame = -1;\r\n if (this.isPaused) {\r\n if (this.currentRawFrame + this.firstFrame < init) {\r\n pendingFrame = init;\r\n } else if (this.currentRawFrame + this.firstFrame > end) {\r\n pendingFrame = end - init;\r\n }\r\n }\r\n\r\n this.firstFrame = init;\r\n this.totalFrames = end - init;\r\n this.timeCompleted = this.totalFrames;\r\n if (pendingFrame !== -1) {\r\n this.goToAndStop(pendingFrame, true);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.playSegments = function (arr, forceFlag) {\r\n if (forceFlag) {\r\n this.segments.length = 0;\r\n }\r\n if (typeof arr[0] === 'object') {\r\n var i;\r\n var len = arr.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.segments.push(arr[i]);\r\n }\r\n } else {\r\n this.segments.push(arr);\r\n }\r\n if (this.segments.length && forceFlag) {\r\n this.adjustSegment(this.segments.shift(), 0);\r\n }\r\n if (this.isPaused) {\r\n this.play();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.resetSegments = function (forceFlag) {\r\n this.segments.length = 0;\r\n this.segments.push([this.animationData.ip, this.animationData.op]);\r\n if (forceFlag) {\r\n this.checkSegments(0);\r\n }\r\n};\r\nAnimationItem.prototype.checkSegments = function (offset) {\r\n if (this.segments.length) {\r\n this.adjustSegment(this.segments.shift(), offset);\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nAnimationItem.prototype.destroy = function (name) {\r\n if ((name && this.name !== name) || !this.renderer) {\r\n return;\r\n }\r\n this.renderer.destroy();\r\n this.imagePreloader.destroy();\r\n this.trigger('destroy');\r\n this._cbs = null;\r\n this.onEnterFrame = null;\r\n this.onLoopComplete = null;\r\n this.onComplete = null;\r\n this.onSegmentStart = null;\r\n this.onDestroy = null;\r\n this.renderer = null;\r\n this.renderer = null;\r\n this.imagePreloader = null;\r\n this.projectInterface = null;\r\n};\r\n\r\nAnimationItem.prototype.setCurrentRawFrameValue = function (value) {\r\n this.currentRawFrame = value;\r\n this.gotoFrame();\r\n};\r\n\r\nAnimationItem.prototype.setSpeed = function (val) {\r\n this.playSpeed = val;\r\n this.updaFrameModifier();\r\n};\r\n\r\nAnimationItem.prototype.setDirection = function (val) {\r\n this.playDirection = val < 0 ? -1 : 1;\r\n this.updaFrameModifier();\r\n};\r\n\r\nAnimationItem.prototype.setVolume = function (val, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.audioController.setVolume(val);\r\n};\r\n\r\nAnimationItem.prototype.getVolume = function () {\r\n return this.audioController.getVolume();\r\n};\r\n\r\nAnimationItem.prototype.mute = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.audioController.mute();\r\n};\r\n\r\nAnimationItem.prototype.unmute = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.audioController.unmute();\r\n};\r\n\r\nAnimationItem.prototype.updaFrameModifier = function () {\r\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\r\n this.audioController.setRate(this.playSpeed * this.playDirection);\r\n};\r\n\r\nAnimationItem.prototype.getPath = function () {\r\n return this.path;\r\n};\r\n\r\nAnimationItem.prototype.getAssetsPath = function (assetData) {\r\n var path = '';\r\n if (assetData.e) {\r\n path = assetData.p;\r\n } else if (this.assetsPath) {\r\n var imagePath = assetData.p;\r\n if (imagePath.indexOf('images/') !== -1) {\r\n imagePath = imagePath.split('/')[1];\r\n }\r\n path = this.assetsPath + imagePath;\r\n } else {\r\n path = this.path;\r\n path += assetData.u ? assetData.u : '';\r\n path += assetData.p;\r\n }\r\n return path;\r\n};\r\n\r\nAnimationItem.prototype.getAssetData = function (id) {\r\n var i = 0;\r\n var len = this.assets.length;\r\n while (i < len) {\r\n if (id === this.assets[i].id) {\r\n return this.assets[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n};\r\n\r\nAnimationItem.prototype.hide = function () {\r\n this.renderer.hide();\r\n};\r\n\r\nAnimationItem.prototype.show = function () {\r\n this.renderer.show();\r\n};\r\n\r\nAnimationItem.prototype.getDuration = function (isFrame) {\r\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\r\n};\r\n\r\nAnimationItem.prototype.trigger = function (name) {\r\n if (this._cbs && this._cbs[name]) {\r\n switch (name) {\r\n case 'enterFrame':\r\n case 'drawnFrame':\r\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\r\n break;\r\n case 'loopComplete':\r\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\r\n break;\r\n case 'complete':\r\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\r\n break;\r\n case 'segmentStart':\r\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\r\n break;\r\n case 'destroy':\r\n this.triggerEvent(name, new BMDestroyEvent(name, this));\r\n break;\r\n default:\r\n this.triggerEvent(name);\r\n }\r\n }\r\n if (name === 'enterFrame' && this.onEnterFrame) {\r\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\r\n }\r\n if (name === 'loopComplete' && this.onLoopComplete) {\r\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\r\n }\r\n if (name === 'complete' && this.onComplete) {\r\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\r\n }\r\n if (name === 'segmentStart' && this.onSegmentStart) {\r\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\r\n }\r\n if (name === 'destroy' && this.onDestroy) {\r\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\r\n }\r\n};\r\n\r\nAnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\r\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\r\n this.triggerEvent('error', error);\r\n\r\n if (this.onError) {\r\n this.onError.call(this, error);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.triggerConfigError = function (nativeError) {\r\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\r\n this.triggerEvent('error', error);\r\n\r\n if (this.onError) {\r\n this.onError.call(this, error);\r\n }\r\n};\r\n\r\n/* global CompExpressionInterface, expressionsPlugin: writable */\r\n/* exported expressionsPlugin */\r\n\r\nvar Expressions = (function () {\r\n var ob = {};\r\n ob.initExpressions = initExpressions;\r\n\r\n function initExpressions(animation) {\r\n var stackCount = 0;\r\n var registers = [];\r\n\r\n function pushExpression() {\r\n stackCount += 1;\r\n }\r\n\r\n function popExpression() {\r\n stackCount -= 1;\r\n if (stackCount === 0) {\r\n releaseInstances();\r\n }\r\n }\r\n\r\n function registerExpressionProperty(expression) {\r\n if (registers.indexOf(expression) === -1) {\r\n registers.push(expression);\r\n }\r\n }\r\n\r\n function releaseInstances() {\r\n var i;\r\n var len = registers.length;\r\n for (i = 0; i < len; i += 1) {\r\n registers[i].release();\r\n }\r\n registers.length = 0;\r\n }\r\n\r\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\r\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\r\n animation.renderer.globalData.pushExpression = pushExpression;\r\n animation.renderer.globalData.popExpression = popExpression;\r\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\r\n }\r\n return ob;\r\n}());\r\n\r\nexpressionsPlugin = Expressions;\r\n\r\n/* eslint-disable camelcase, no-unused-vars */\r\n/* global BMMath, BezierFactory, createTypedArray, degToRads, shapePool */\r\n\r\nvar ExpressionManager = (function () {\r\n 'use strict';\r\n\r\n var ob = {};\r\n var Math = BMMath;\r\n var window = null;\r\n var document = null;\r\n var XMLHttpRequest = null;\r\n var fetch = null;\r\n var frames = null;\r\n\r\n function $bm_isInstanceOfArray(arr) {\r\n return arr.constructor === Array || arr.constructor === Float32Array;\r\n }\r\n\r\n function isNumerable(tOfV, v) {\r\n return tOfV === 'number' || tOfV === 'boolean' || tOfV === 'string' || v instanceof Number;\r\n }\r\n\r\n function $bm_neg(a) {\r\n var tOfA = typeof a;\r\n if (tOfA === 'number' || tOfA === 'boolean' || a instanceof Number) {\r\n return -a;\r\n }\r\n if ($bm_isInstanceOfArray(a)) {\r\n var i;\r\n var lenA = a.length;\r\n var retArr = [];\r\n for (i = 0; i < lenA; i += 1) {\r\n retArr[i] = -a[i];\r\n }\r\n return retArr;\r\n }\r\n if (a.propType) {\r\n return a.v;\r\n }\r\n return -a;\r\n }\r\n\r\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\r\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\r\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\r\n\r\n function sum(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n if (tOfA === 'string' || tOfB === 'string') {\r\n return a + b;\r\n }\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a + b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n a = a.slice(0);\r\n a[0] += b;\r\n return a;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n b = b.slice(0);\r\n b[0] = a + b[0];\r\n return b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\r\n var i = 0;\r\n var lenA = a.length;\r\n var lenB = b.length;\r\n var retArr = [];\r\n while (i < lenA || i < lenB) {\r\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\r\n retArr[i] = a[i] + b[i];\r\n } else {\r\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\r\n }\r\n i += 1;\r\n }\r\n return retArr;\r\n }\r\n return 0;\r\n }\r\n var add = sum;\r\n\r\n function sub(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n if (tOfA === 'string') {\r\n a = parseInt(a, 10);\r\n }\r\n if (tOfB === 'string') {\r\n b = parseInt(b, 10);\r\n }\r\n return a - b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n a = a.slice(0);\r\n a[0] -= b;\r\n return a;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n b = b.slice(0);\r\n b[0] = a - b[0];\r\n return b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\r\n var i = 0;\r\n var lenA = a.length;\r\n var lenB = b.length;\r\n var retArr = [];\r\n while (i < lenA || i < lenB) {\r\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\r\n retArr[i] = a[i] - b[i];\r\n } else {\r\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\r\n }\r\n i += 1;\r\n }\r\n return retArr;\r\n }\r\n return 0;\r\n }\r\n\r\n function mul(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n var arr;\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a * b;\r\n }\r\n\r\n var i;\r\n var len;\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n len = a.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a[i] * b;\r\n }\r\n return arr;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n len = b.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a * b[i];\r\n }\r\n return arr;\r\n }\r\n return 0;\r\n }\r\n\r\n function div(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n var arr;\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a / b;\r\n }\r\n var i;\r\n var len;\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n len = a.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a[i] / b;\r\n }\r\n return arr;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n len = b.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a / b[i];\r\n }\r\n return arr;\r\n }\r\n return 0;\r\n }\r\n function mod(a, b) {\r\n if (typeof a === 'string') {\r\n a = parseInt(a, 10);\r\n }\r\n if (typeof b === 'string') {\r\n b = parseInt(b, 10);\r\n }\r\n return a % b;\r\n }\r\n var $bm_sum = sum;\r\n var $bm_sub = sub;\r\n var $bm_mul = mul;\r\n var $bm_div = div;\r\n var $bm_mod = mod;\r\n\r\n function clamp(num, min, max) {\r\n if (min > max) {\r\n var mm = max;\r\n max = min;\r\n min = mm;\r\n }\r\n return Math.min(Math.max(num, min), max);\r\n }\r\n\r\n function radiansToDegrees(val) {\r\n return val / degToRads;\r\n }\r\n var radians_to_degrees = radiansToDegrees;\r\n\r\n function degreesToRadians(val) {\r\n return val * degToRads;\r\n }\r\n var degrees_to_radians = radiansToDegrees;\r\n\r\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\r\n\r\n function length(arr1, arr2) {\r\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\r\n arr2 = arr2 || 0;\r\n return Math.abs(arr1 - arr2);\r\n }\r\n if (!arr2) {\r\n arr2 = helperLengthArray;\r\n }\r\n var i;\r\n var len = Math.min(arr1.length, arr2.length);\r\n var addedLength = 0;\r\n for (i = 0; i < len; i += 1) {\r\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\r\n }\r\n return Math.sqrt(addedLength);\r\n }\r\n\r\n function normalize(vec) {\r\n return div(vec, length(vec));\r\n }\r\n\r\n function rgbToHsl(val) {\r\n var r = val[0]; var g = val[1]; var b = val[2];\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var h;\r\n var s;\r\n var l = (max + min) / 2;\r\n\r\n if (max === min) {\r\n h = 0; // achromatic\r\n s = 0; // achromatic\r\n } else {\r\n var d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n switch (max) {\r\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\r\n case g: h = (b - r) / d + 2; break;\r\n case b: h = (r - g) / d + 4; break;\r\n default: break;\r\n }\r\n h /= 6;\r\n }\r\n\r\n return [h, s, l, val[3]];\r\n }\r\n\r\n function hue2rgb(p, q, t) {\r\n if (t < 0) t += 1;\r\n if (t > 1) t -= 1;\r\n if (t < 1 / 6) return p + (q - p) * 6 * t;\r\n if (t < 1 / 2) return q;\r\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\r\n return p;\r\n }\r\n\r\n function hslToRgb(val) {\r\n var h = val[0];\r\n var s = val[1];\r\n var l = val[2];\r\n\r\n var r;\r\n var g;\r\n var b;\r\n\r\n if (s === 0) {\r\n r = l; // achromatic\r\n b = l; // achromatic\r\n g = l; // achromatic\r\n } else {\r\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n var p = 2 * l - q;\r\n r = hue2rgb(p, q, h + 1 / 3);\r\n g = hue2rgb(p, q, h);\r\n b = hue2rgb(p, q, h - 1 / 3);\r\n }\r\n\r\n return [r, g, b, val[3]];\r\n }\r\n\r\n function linear(t, tMin, tMax, value1, value2) {\r\n if (value1 === undefined || value2 === undefined) {\r\n value1 = tMin;\r\n value2 = tMax;\r\n tMin = 0;\r\n tMax = 1;\r\n }\r\n if (tMax < tMin) {\r\n var _tMin = tMax;\r\n tMax = tMin;\r\n tMin = _tMin;\r\n }\r\n if (t <= tMin) {\r\n return value1;\r\n } if (t >= tMax) {\r\n return value2;\r\n }\r\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\r\n if (!value1.length) {\r\n return value1 + (value2 - value1) * perc;\r\n }\r\n var i;\r\n var len = value1.length;\r\n var arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\r\n }\r\n return arr;\r\n }\r\n function random(min, max) {\r\n if (max === undefined) {\r\n if (min === undefined) {\r\n min = 0;\r\n max = 1;\r\n } else {\r\n max = min;\r\n min = undefined;\r\n }\r\n }\r\n if (max.length) {\r\n var i;\r\n var len = max.length;\r\n if (!min) {\r\n min = createTypedArray('float32', len);\r\n }\r\n var arr = createTypedArray('float32', len);\r\n var rnd = BMMath.random();\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = min[i] + rnd * (max[i] - min[i]);\r\n }\r\n return arr;\r\n }\r\n if (min === undefined) {\r\n min = 0;\r\n }\r\n var rndm = BMMath.random();\r\n return min + rndm * (max - min);\r\n }\r\n\r\n function createPath(points, inTangents, outTangents, closed) {\r\n var i;\r\n var len = points.length;\r\n var path = shapePool.newElement();\r\n path.setPathData(!!closed, len);\r\n var arrPlaceholder = [0, 0];\r\n var inVertexPoint;\r\n var outVertexPoint;\r\n for (i = 0; i < len; i += 1) {\r\n inVertexPoint = (inTangents && inTangents[i]) ? inTangents[i] : arrPlaceholder;\r\n outVertexPoint = (outTangents && outTangents[i]) ? outTangents[i] : arrPlaceholder;\r\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\r\n }\r\n return path;\r\n }\r\n\r\n function initiateExpression(elem, data, property) {\r\n var val = data.x;\r\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\r\n var _needsRandom = val.indexOf('random') !== -1;\r\n var elemType = elem.data.ty;\r\n var transform;\r\n var $bm_transform;\r\n var content;\r\n var effect;\r\n var thisProperty = property;\r\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\r\n Object.defineProperty(thisProperty, 'value', {\r\n get: function () {\r\n return thisProperty.v;\r\n },\r\n });\r\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\r\n elem.comp.displayStartTime = 0;\r\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\r\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\r\n var width = elem.data.sw ? elem.data.sw : 0;\r\n var height = elem.data.sh ? elem.data.sh : 0;\r\n var name = elem.data.nm;\r\n var loopIn;\r\n var loop_in;\r\n var loopOut;\r\n var loop_out;\r\n var smooth;\r\n var toWorld;\r\n var fromWorld;\r\n var fromComp;\r\n var toComp;\r\n var fromCompToSurface;\r\n var position;\r\n var rotation;\r\n var anchorPoint;\r\n var scale;\r\n var thisLayer;\r\n var thisComp;\r\n var mask;\r\n var valueAtTime;\r\n var velocityAtTime;\r\n\r\n var scoped_bm_rt;\r\n // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\r\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\r\n var numKeys = property.kf ? data.k.length : 0;\r\n\r\n var active = !this.data || this.data.hd !== true;\r\n\r\n var wiggle = function wiggle(freq, amp) {\r\n var iWiggle;\r\n var j;\r\n var lenWiggle = this.pv.length ? this.pv.length : 1;\r\n var addedAmps = createTypedArray('float32', lenWiggle);\r\n freq = 5;\r\n var iterations = Math.floor(time * freq);\r\n iWiggle = 0;\r\n j = 0;\r\n while (iWiggle < iterations) {\r\n // var rnd = BMMath.random();\r\n for (j = 0; j < lenWiggle; j += 1) {\r\n addedAmps[j] += -amp + amp * 2 * BMMath.random();\r\n // addedAmps[j] += -amp + amp*2*rnd;\r\n }\r\n iWiggle += 1;\r\n }\r\n // var rnd2 = BMMath.random();\r\n var periods = time * freq;\r\n var perc = periods - Math.floor(periods);\r\n var arr = createTypedArray('float32', lenWiggle);\r\n if (lenWiggle > 1) {\r\n for (j = 0; j < lenWiggle; j += 1) {\r\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc;\r\n // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\r\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\r\n }\r\n return arr;\r\n }\r\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\r\n }.bind(this);\r\n\r\n if (thisProperty.loopIn) {\r\n loopIn = thisProperty.loopIn.bind(thisProperty);\r\n loop_in = loopIn;\r\n }\r\n\r\n if (thisProperty.loopOut) {\r\n loopOut = thisProperty.loopOut.bind(thisProperty);\r\n loop_out = loopOut;\r\n }\r\n\r\n if (thisProperty.smooth) {\r\n smooth = thisProperty.smooth.bind(thisProperty);\r\n }\r\n\r\n function loopInDuration(type, duration) {\r\n return loopIn(type, duration, true);\r\n }\r\n\r\n function loopOutDuration(type, duration) {\r\n return loopOut(type, duration, true);\r\n }\r\n\r\n if (this.getValueAtTime) {\r\n valueAtTime = this.getValueAtTime.bind(this);\r\n }\r\n\r\n if (this.getVelocityAtTime) {\r\n velocityAtTime = this.getVelocityAtTime.bind(this);\r\n }\r\n\r\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\r\n\r\n function lookAt(elem1, elem2) {\r\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\r\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\r\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\r\n return [yaw, pitch, 0];\r\n }\r\n\r\n function easeOut(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function easeIn(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function ease(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function applyEase(fn, t, tMin, tMax, val1, val2) {\r\n if (val1 === undefined) {\r\n val1 = tMin;\r\n val2 = tMax;\r\n } else {\r\n t = (t - tMin) / (tMax - tMin);\r\n }\r\n if (t > 1) {\r\n t = 1;\r\n } else if (t < 0) {\r\n t = 0;\r\n }\r\n var mult = fn(t);\r\n if ($bm_isInstanceOfArray(val1)) {\r\n var iKey;\r\n var lenKey = val1.length;\r\n var arr = createTypedArray('float32', lenKey);\r\n for (iKey = 0; iKey < lenKey; iKey += 1) {\r\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\r\n }\r\n return arr;\r\n }\r\n return (val2 - val1) * mult + val1;\r\n }\r\n\r\n function nearestKey(time) {\r\n var iKey;\r\n var lenKey = data.k.length;\r\n var index;\r\n var keyTime;\r\n if (!data.k.length || typeof (data.k[0]) === 'number') {\r\n index = 0;\r\n keyTime = 0;\r\n } else {\r\n index = -1;\r\n time *= elem.comp.globalData.frameRate;\r\n if (time < data.k[0].t) {\r\n index = 1;\r\n keyTime = data.k[0].t;\r\n } else {\r\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\r\n if (time === data.k[iKey].t) {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n break;\r\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\r\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\r\n index = iKey + 2;\r\n keyTime = data.k[iKey + 1].t;\r\n } else {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n }\r\n break;\r\n }\r\n }\r\n if (index === -1) {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n }\r\n }\r\n }\r\n var obKey = {};\r\n obKey.index = index;\r\n obKey.time = keyTime / elem.comp.globalData.frameRate;\r\n return obKey;\r\n }\r\n\r\n function key(ind) {\r\n var obKey;\r\n var iKey;\r\n var lenKey;\r\n if (!data.k.length || typeof (data.k[0]) === 'number') {\r\n throw new Error('The property has no keyframe at index ' + ind);\r\n }\r\n ind -= 1;\r\n obKey = {\r\n time: data.k[ind].t / elem.comp.globalData.frameRate,\r\n value: [],\r\n };\r\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\r\n\r\n lenKey = arr.length;\r\n for (iKey = 0; iKey < lenKey; iKey += 1) {\r\n obKey[iKey] = arr[iKey];\r\n obKey.value[iKey] = arr[iKey];\r\n }\r\n return obKey;\r\n }\r\n\r\n function framesToTime(fr, fps) {\r\n if (!fps) {\r\n fps = elem.comp.globalData.frameRate;\r\n }\r\n return fr / fps;\r\n }\r\n\r\n function timeToFrames(t, fps) {\r\n if (!t && t !== 0) {\r\n t = time;\r\n }\r\n if (!fps) {\r\n fps = elem.comp.globalData.frameRate;\r\n }\r\n return t * fps;\r\n }\r\n\r\n function seedRandom(seed) {\r\n BMMath.seedrandom(randSeed + seed);\r\n }\r\n\r\n function sourceRectAtTime() {\r\n return elem.sourceRectAtTime();\r\n }\r\n\r\n function substring(init, end) {\r\n if (typeof value === 'string') {\r\n if (end === undefined) {\r\n return value.substring(init);\r\n }\r\n return value.substring(init, end);\r\n }\r\n return '';\r\n }\r\n\r\n function substr(init, end) {\r\n if (typeof value === 'string') {\r\n if (end === undefined) {\r\n return value.substr(init);\r\n }\r\n return value.substr(init, end);\r\n }\r\n return '';\r\n }\r\n\r\n function posterizeTime(framesPerSecond) {\r\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\r\n value = valueAtTime(time);\r\n }\r\n\r\n var time;\r\n var velocity;\r\n var value;\r\n var text;\r\n var textIndex;\r\n var textTotal;\r\n var selectorValue;\r\n var index = elem.data.ind;\r\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\r\n var parent;\r\n var randSeed = Math.floor(Math.random() * 1000000);\r\n var globalData = elem.globalData;\r\n function executeExpression(_value) {\r\n // globalData.pushExpression();\r\n value = _value;\r\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\r\n return value;\r\n }\r\n if (this.propType === 'textSelector') {\r\n textIndex = this.textIndex;\r\n textTotal = this.textTotal;\r\n selectorValue = this.selectorValue;\r\n }\r\n if (!thisLayer) {\r\n text = elem.layerInterface.text;\r\n thisLayer = elem.layerInterface;\r\n thisComp = elem.comp.compInterface;\r\n toWorld = thisLayer.toWorld.bind(thisLayer);\r\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\r\n fromComp = thisLayer.fromComp.bind(thisLayer);\r\n toComp = thisLayer.toComp.bind(thisLayer);\r\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\r\n fromCompToSurface = fromComp;\r\n }\r\n if (!transform) {\r\n transform = elem.layerInterface('ADBE Transform Group');\r\n $bm_transform = transform;\r\n if (transform) {\r\n anchorPoint = transform.anchorPoint;\r\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\r\n }\r\n }\r\n\r\n if (elemType === 4 && !content) {\r\n content = thisLayer('ADBE Root Vectors Group');\r\n }\r\n if (!effect) {\r\n effect = thisLayer(4);\r\n }\r\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\r\n if (hasParent && !parent) {\r\n parent = elem.hierarchy[0].layerInterface;\r\n }\r\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\r\n if (_needsRandom) {\r\n seedRandom(randSeed + time);\r\n }\r\n if (needsVelocity) {\r\n velocity = velocityAtTime(time);\r\n }\r\n expression_function();\r\n this.frameExpressionId = elem.globalData.frameId;\r\n\r\n // TODO: Check if it's possible to return on ShapeInterface the .v value\r\n if (scoped_bm_rt.propType === 'shape') {\r\n scoped_bm_rt = scoped_bm_rt.v;\r\n }\r\n // globalData.popExpression();\r\n return scoped_bm_rt;\r\n }\r\n return executeExpression;\r\n }\r\n\r\n ob.initiateExpression = initiateExpression;\r\n return ob;\r\n}());\r\n\r\n/* global ExpressionManager, createTypedArray */\r\n/* exported expressionHelpers */\r\n\r\nvar expressionHelpers = (function () {\r\n function searchExpressions(elem, data, prop) {\r\n if (data.x) {\r\n prop.k = true;\r\n prop.x = true;\r\n prop.initiateExpression = ExpressionManager.initiateExpression;\r\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\r\n }\r\n }\r\n\r\n function getValueAtTime(frameNum) {\r\n frameNum *= this.elem.globalData.frameRate;\r\n frameNum -= this.offsetTime;\r\n if (frameNum !== this._cachingAtTime.lastFrame) {\r\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\r\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\r\n this._cachingAtTime.lastFrame = frameNum;\r\n }\r\n return this._cachingAtTime.value;\r\n }\r\n\r\n function getSpeedAtTime(frameNum) {\r\n var delta = -0.01;\r\n var v1 = this.getValueAtTime(frameNum);\r\n var v2 = this.getValueAtTime(frameNum + delta);\r\n var speed = 0;\r\n if (v1.length) {\r\n var i;\r\n for (i = 0; i < v1.length; i += 1) {\r\n speed += Math.pow(v2[i] - v1[i], 2);\r\n }\r\n speed = Math.sqrt(speed) * 100;\r\n } else {\r\n speed = 0;\r\n }\r\n return speed;\r\n }\r\n\r\n function getVelocityAtTime(frameNum) {\r\n if (this.vel !== undefined) {\r\n return this.vel;\r\n }\r\n var delta = -0.001;\r\n // frameNum += this.elem.data.st;\r\n var v1 = this.getValueAtTime(frameNum);\r\n var v2 = this.getValueAtTime(frameNum + delta);\r\n var velocity;\r\n if (v1.length) {\r\n velocity = createTypedArray('float32', v1.length);\r\n var i;\r\n for (i = 0; i < v1.length; i += 1) {\r\n // removing frameRate\r\n // if needed, don't add it here\r\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\r\n velocity[i] = (v2[i] - v1[i]) / delta;\r\n }\r\n } else {\r\n velocity = (v2 - v1) / delta;\r\n }\r\n return velocity;\r\n }\r\n\r\n function getStaticValueAtTime() {\r\n return this.pv;\r\n }\r\n\r\n function setGroupProperty(propertyGroup) {\r\n this.propertyGroup = propertyGroup;\r\n }\r\n\r\n return {\r\n searchExpressions: searchExpressions,\r\n getSpeedAtTime: getSpeedAtTime,\r\n getVelocityAtTime: getVelocityAtTime,\r\n getValueAtTime: getValueAtTime,\r\n getStaticValueAtTime: getStaticValueAtTime,\r\n setGroupProperty: setGroupProperty,\r\n };\r\n}());\r\n\r\n/* global createTypedArray, Matrix, TransformPropertyFactory, expressionHelpers, PropertyFactory, expressionHelpers,\r\ninitialDefaultFrame, shapePool, ShapePropertyFactory, bez, extendPrototype, ExpressionManager, createSizedArray */\r\n\r\n(function addPropertyDecorator() {\r\n function loopOut(type, duration, durationFlag) {\r\n if (!this.k || !this.keyframes) {\r\n return this.pv;\r\n }\r\n type = type ? type.toLowerCase() : '';\r\n var currentFrame = this.comp.renderedFrame;\r\n var keyframes = this.keyframes;\r\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\r\n if (currentFrame <= lastKeyFrame) {\r\n return this.pv;\r\n }\r\n var cycleDuration;\r\n var firstKeyFrame;\r\n if (!durationFlag) {\r\n if (!duration || duration > keyframes.length - 1) {\r\n duration = keyframes.length - 1;\r\n }\r\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\r\n cycleDuration = lastKeyFrame - firstKeyFrame;\r\n } else {\r\n if (!duration) {\r\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\r\n } else {\r\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\r\n }\r\n firstKeyFrame = lastKeyFrame - cycleDuration;\r\n }\r\n var i;\r\n var len;\r\n var ret;\r\n if (type === 'pingpong') {\r\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\r\n if (iterations % 2 !== 0) {\r\n return this.getValueAtTime(((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n }\r\n } else if (type === 'offset') {\r\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\r\n if (this.pv.length) {\r\n ret = new Array(initV.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\r\n }\r\n return ret;\r\n }\r\n return (endV - initV) * repeats + current;\r\n } else if (type === 'continue') {\r\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\r\n if (this.pv.length) {\r\n ret = new Array(lastValue.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\r\n }\r\n return ret;\r\n }\r\n return lastValue + (lastValue - nextLastValue) * (((currentFrame - lastKeyFrame)) / 0.001);\r\n }\r\n return this.getValueAtTime((((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n\r\n }\r\n\r\n function loopIn(type, duration, durationFlag) {\r\n if (!this.k) {\r\n return this.pv;\r\n }\r\n type = type ? type.toLowerCase() : '';\r\n var currentFrame = this.comp.renderedFrame;\r\n var keyframes = this.keyframes;\r\n var firstKeyFrame = keyframes[0].t;\r\n if (currentFrame >= firstKeyFrame) {\r\n return this.pv;\r\n }\r\n var cycleDuration;\r\n var lastKeyFrame;\r\n if (!durationFlag) {\r\n if (!duration || duration > keyframes.length - 1) {\r\n duration = keyframes.length - 1;\r\n }\r\n lastKeyFrame = keyframes[duration].t;\r\n cycleDuration = lastKeyFrame - firstKeyFrame;\r\n } else {\r\n if (!duration) {\r\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\r\n } else {\r\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\r\n }\r\n lastKeyFrame = firstKeyFrame + cycleDuration;\r\n }\r\n var i;\r\n var len;\r\n var ret;\r\n if (type === 'pingpong') {\r\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\r\n if (iterations % 2 === 0) {\r\n return this.getValueAtTime((((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n }\r\n } else if (type === 'offset') {\r\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var current = this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration) + firstKeyFrame) / this.comp.globalData.frameRate, 0);\r\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\r\n if (this.pv.length) {\r\n ret = new Array(initV.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\r\n }\r\n return ret;\r\n }\r\n return current - (endV - initV) * repeats;\r\n } else if (type === 'continue') {\r\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\r\n if (this.pv.length) {\r\n ret = new Array(firstValue.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = firstValue[i] + ((firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame)) / 0.001;\r\n }\r\n return ret;\r\n }\r\n return firstValue + ((firstValue - nextFirstValue) * (firstKeyFrame - currentFrame)) / 0.001;\r\n }\r\n return this.getValueAtTime(((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame))) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n\r\n }\r\n\r\n function smooth(width, samples) {\r\n if (!this.k) {\r\n return this.pv;\r\n }\r\n width = (width || 0.4) * 0.5;\r\n samples = Math.floor(samples || 5);\r\n if (samples <= 1) {\r\n return this.pv;\r\n }\r\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\r\n var initFrame = currentTime - width;\r\n var endFrame = currentTime + width;\r\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\r\n var i = 0;\r\n var j = 0;\r\n var value;\r\n if (this.pv.length) {\r\n value = createTypedArray('float32', this.pv.length);\r\n } else {\r\n value = 0;\r\n }\r\n var sampleValue;\r\n while (i < samples) {\r\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\r\n if (this.pv.length) {\r\n for (j = 0; j < this.pv.length; j += 1) {\r\n value[j] += sampleValue[j];\r\n }\r\n } else {\r\n value += sampleValue;\r\n }\r\n i += 1;\r\n }\r\n if (this.pv.length) {\r\n for (j = 0; j < this.pv.length; j += 1) {\r\n value[j] /= samples;\r\n }\r\n } else {\r\n value /= samples;\r\n }\r\n return value;\r\n }\r\n\r\n function getTransformValueAtTime(time) {\r\n if (!this._transformCachingAtTime) {\r\n this._transformCachingAtTime = {\r\n v: new Matrix(),\r\n };\r\n }\r\n /// /\r\n var matrix = this._transformCachingAtTime.v;\r\n matrix.cloneFromProps(this.pre.props);\r\n if (this.appliedTransformations < 1) {\r\n var anchor = this.a.getValueAtTime(time);\r\n matrix.translate(\r\n -anchor[0] * this.a.mult,\r\n -anchor[1] * this.a.mult,\r\n anchor[2] * this.a.mult\r\n );\r\n }\r\n if (this.appliedTransformations < 2) {\r\n var scale = this.s.getValueAtTime(time);\r\n matrix.scale(\r\n scale[0] * this.s.mult,\r\n scale[1] * this.s.mult,\r\n scale[2] * this.s.mult\r\n );\r\n }\r\n if (this.sk && this.appliedTransformations < 3) {\r\n var skew = this.sk.getValueAtTime(time);\r\n var skewAxis = this.sa.getValueAtTime(time);\r\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\r\n }\r\n if (this.r && this.appliedTransformations < 4) {\r\n var rotation = this.r.getValueAtTime(time);\r\n matrix.rotate(-rotation * this.r.mult);\r\n } else if (!this.r && this.appliedTransformations < 4) {\r\n var rotationZ = this.rz.getValueAtTime(time);\r\n var rotationY = this.ry.getValueAtTime(time);\r\n var rotationX = this.rx.getValueAtTime(time);\r\n var orientation = this.or.getValueAtTime(time);\r\n matrix.rotateZ(-rotationZ * this.rz.mult)\r\n .rotateY(rotationY * this.ry.mult)\r\n .rotateX(rotationX * this.rx.mult)\r\n .rotateZ(-orientation[2] * this.or.mult)\r\n .rotateY(orientation[1] * this.or.mult)\r\n .rotateX(orientation[0] * this.or.mult);\r\n }\r\n if (this.data.p && this.data.p.s) {\r\n var positionX = this.px.getValueAtTime(time);\r\n var positionY = this.py.getValueAtTime(time);\r\n if (this.data.p.z) {\r\n var positionZ = this.pz.getValueAtTime(time);\r\n matrix.translate(\r\n positionX * this.px.mult,\r\n positionY * this.py.mult,\r\n -positionZ * this.pz.mult\r\n );\r\n } else {\r\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\r\n }\r\n } else {\r\n var position = this.p.getValueAtTime(time);\r\n matrix.translate(\r\n position[0] * this.p.mult,\r\n position[1] * this.p.mult,\r\n -position[2] * this.p.mult\r\n );\r\n }\r\n return matrix;\r\n /// /\r\n }\r\n\r\n function getTransformStaticValueAtTime() {\r\n return this.v.clone(new Matrix());\r\n }\r\n\r\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\r\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\r\n var prop = getTransformProperty(elem, data, container);\r\n if (prop.dynamicProperties.length) {\r\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\r\n } else {\r\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\r\n }\r\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\r\n return prop;\r\n };\r\n\r\n var propertyGetProp = PropertyFactory.getProp;\r\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\r\n var prop = propertyGetProp(elem, data, type, mult, container);\r\n // prop.getVelocityAtTime = getVelocityAtTime;\r\n // prop.loopOut = loopOut;\r\n // prop.loopIn = loopIn;\r\n if (prop.kf) {\r\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\r\n } else {\r\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\r\n }\r\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\r\n prop.loopOut = loopOut;\r\n prop.loopIn = loopIn;\r\n prop.smooth = smooth;\r\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\r\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\r\n prop.numKeys = data.a === 1 ? data.k.length : 0;\r\n prop.propertyIndex = data.ix;\r\n var value = 0;\r\n if (type !== 0) {\r\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\r\n }\r\n prop._cachingAtTime = {\r\n lastFrame: initialDefaultFrame,\r\n lastIndex: 0,\r\n value: value,\r\n };\r\n expressionHelpers.searchExpressions(elem, data, prop);\r\n if (prop.k) {\r\n container.addDynamicProperty(prop);\r\n }\r\n\r\n return prop;\r\n };\r\n\r\n function getShapeValueAtTime(frameNum) {\r\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\r\n if (!this._cachingAtTime) {\r\n this._cachingAtTime = {\r\n shapeValue: shapePool.clone(this.pv),\r\n lastIndex: 0,\r\n lastTime: initialDefaultFrame,\r\n };\r\n }\r\n\r\n frameNum *= this.elem.globalData.frameRate;\r\n frameNum -= this.offsetTime;\r\n if (frameNum !== this._cachingAtTime.lastTime) {\r\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\r\n this._cachingAtTime.lastTime = frameNum;\r\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\r\n }\r\n return this._cachingAtTime.shapeValue;\r\n }\r\n\r\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\r\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\r\n\r\n function ShapeExpressions() {}\r\n ShapeExpressions.prototype = {\r\n vertices: function (prop, time) {\r\n if (this.k) {\r\n this.getValue();\r\n }\r\n var shapePath = this.v;\r\n if (time !== undefined) {\r\n shapePath = this.getValueAtTime(time, 0);\r\n }\r\n var i;\r\n var len = shapePath._length;\r\n var vertices = shapePath[prop];\r\n var points = shapePath.v;\r\n var arr = createSizedArray(len);\r\n for (i = 0; i < len; i += 1) {\r\n if (prop === 'i' || prop === 'o') {\r\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\r\n } else {\r\n arr[i] = [vertices[i][0], vertices[i][1]];\r\n }\r\n }\r\n return arr;\r\n },\r\n points: function (time) {\r\n return this.vertices('v', time);\r\n },\r\n inTangents: function (time) {\r\n return this.vertices('i', time);\r\n },\r\n outTangents: function (time) {\r\n return this.vertices('o', time);\r\n },\r\n isClosed: function () {\r\n return this.v.c;\r\n },\r\n pointOnPath: function (perc, time) {\r\n var shapePath = this.v;\r\n if (time !== undefined) {\r\n shapePath = this.getValueAtTime(time, 0);\r\n }\r\n if (!this._segmentsLength) {\r\n this._segmentsLength = bez.getSegmentsLength(shapePath);\r\n }\r\n\r\n var segmentsLength = this._segmentsLength;\r\n var lengths = segmentsLength.lengths;\r\n var lengthPos = segmentsLength.totalLength * perc;\r\n var i = 0;\r\n var len = lengths.length;\r\n var accumulatedLength = 0;\r\n var pt;\r\n while (i < len) {\r\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\r\n var initIndex = i;\r\n var endIndex = (shapePath.c && i === len - 1) ? 0 : i + 1;\r\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\r\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\r\n break;\r\n } else {\r\n accumulatedLength += lengths[i].addedLength;\r\n }\r\n i += 1;\r\n }\r\n if (!pt) {\r\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\r\n }\r\n return pt;\r\n },\r\n vectorOnPath: function (perc, time, vectorType) {\r\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\r\n if (perc == 1) { // eslint-disable-line eqeqeq\r\n perc = this.v.c;\r\n } else if (perc == 0) { // eslint-disable-line eqeqeq\r\n perc = 0.999;\r\n }\r\n var pt1 = this.pointOnPath(perc, time);\r\n var pt2 = this.pointOnPath(perc + 0.001, time);\r\n var xLength = pt2[0] - pt1[0];\r\n var yLength = pt2[1] - pt1[1];\r\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\r\n if (magnitude === 0) {\r\n return [0, 0];\r\n }\r\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\r\n return unitVector;\r\n },\r\n tangentOnPath: function (perc, time) {\r\n return this.vectorOnPath(perc, time, 'tangent');\r\n },\r\n normalOnPath: function (perc, time) {\r\n return this.vectorOnPath(perc, time, 'normal');\r\n },\r\n setGroupProperty: expressionHelpers.setGroupProperty,\r\n getValueAtTime: expressionHelpers.getStaticValueAtTime,\r\n };\r\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\r\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\r\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\r\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\r\n\r\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\r\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\r\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\r\n prop.propertyIndex = data.ix;\r\n prop.lock = false;\r\n if (type === 3) {\r\n expressionHelpers.searchExpressions(elem, data.pt, prop);\r\n } else if (type === 4) {\r\n expressionHelpers.searchExpressions(elem, data.ks, prop);\r\n }\r\n if (prop.k) {\r\n elem.addDynamicProperty(prop);\r\n }\r\n return prop;\r\n };\r\n}());\r\n\r\n/* global ExpressionManager, TextProperty */\r\n\r\n(function addDecorator() {\r\n function searchExpressions() {\r\n if (this.data.d.x) {\r\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\r\n this.addEffect(this.getExpressionValue.bind(this));\r\n return true;\r\n }\r\n return null;\r\n }\r\n\r\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\r\n var newValue = this.calculateExpression(text);\r\n if (currentValue.t !== newValue) {\r\n var newData = {};\r\n this.copyData(newData, currentValue);\r\n newData.t = newValue.toString();\r\n newData.__complete = false;\r\n return newData;\r\n }\r\n return currentValue;\r\n };\r\n\r\n TextProperty.prototype.searchProperty = function () {\r\n var isKeyframed = this.searchKeyframes();\r\n var hasExpressions = this.searchExpressions();\r\n this.kf = isKeyframed || hasExpressions;\r\n return this.kf;\r\n };\r\n\r\n TextProperty.prototype.searchExpressions = searchExpressions;\r\n}());\r\n\r\n/* global propertyGroupFactory, PropertyInterface */\r\n/* exported ShapePathInterface */\r\n\r\nvar ShapePathInterface = (\r\n\r\n function () {\r\n return function pathInterfaceFactory(shape, view, propertyGroup) {\r\n var prop = view.sh;\r\n\r\n function interfaceFunction(val) {\r\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\r\n return interfaceFunction.path;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n path: {\r\n get: function () {\r\n if (prop.k) {\r\n prop.getValue();\r\n }\r\n return prop;\r\n },\r\n },\r\n shape: {\r\n get: function () {\r\n if (prop.k) {\r\n prop.getValue();\r\n }\r\n return prop;\r\n },\r\n },\r\n _name: { value: shape.nm },\r\n ix: { value: shape.ix },\r\n propertyIndex: { value: shape.ix },\r\n mn: { value: shape.mn },\r\n propertyGroup: { value: propertyGroup },\r\n });\r\n return interfaceFunction;\r\n };\r\n }()\r\n);\r\n\r\n/* exported propertyGroupFactory */\r\n\r\nvar propertyGroupFactory = (function () {\r\n return function (interfaceFunction, parentPropertyGroup) {\r\n return function (val) {\r\n val = val === undefined ? 1 : val;\r\n if (val <= 0) {\r\n return interfaceFunction;\r\n }\r\n return parentPropertyGroup(val - 1);\r\n };\r\n };\r\n}());\r\n\r\n/* exported PropertyInterface */\r\n\r\nvar PropertyInterface = (function () {\r\n return function (propertyName, propertyGroup) {\r\n var interfaceFunction = {\r\n _name: propertyName,\r\n };\r\n\r\n function _propertyGroup(val) {\r\n val = val === undefined ? 1 : val;\r\n if (val <= 0) {\r\n return interfaceFunction;\r\n }\r\n return propertyGroup(val - 1);\r\n }\r\n\r\n return _propertyGroup;\r\n };\r\n}());\r\n\r\n/* global ExpressionPropertyInterface, PropertyInterface, propertyGroupFactory, ShapePathInterface */\r\n/* exported ShapeExpressionInterface */\r\n\r\nvar ShapeExpressionInterface = (function () {\r\n function iterateElements(shapes, view, propertyGroup) {\r\n var arr = [];\r\n var i;\r\n var len = shapes ? shapes.length : 0;\r\n for (i = 0; i < len; i += 1) {\r\n if (shapes[i].ty === 'gr') {\r\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'fl') {\r\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'st') {\r\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'tm') {\r\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'tr') {\r\n // arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\r\n } else if (shapes[i].ty === 'el') {\r\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'sr') {\r\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'sh') {\r\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rc') {\r\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rd') {\r\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rp') {\r\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'gf') {\r\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else {\r\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n function contentsInterfaceFactory(shape, view, propertyGroup) {\r\n var interfaces;\r\n var interfaceFunction = function _interfaceFunction(value) {\r\n var i = 0;\r\n var len = interfaces.length;\r\n while (i < len) {\r\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\r\n return interfaces[i];\r\n }\r\n i += 1;\r\n }\r\n if (typeof value === 'number') {\r\n return interfaces[value - 1];\r\n }\r\n return null;\r\n };\r\n\r\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\r\n interfaceFunction.numProperties = interfaces.length;\r\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\r\n interfaceFunction.transform = transformInterface;\r\n interfaceFunction.propertyIndex = shape.cix;\r\n interfaceFunction._name = shape.nm;\r\n\r\n return interfaceFunction;\r\n }\r\n\r\n function groupInterfaceFactory(shape, view, propertyGroup) {\r\n var interfaceFunction = function _interfaceFunction(value) {\r\n switch (value) {\r\n case 'ADBE Vectors Group':\r\n case 'Contents':\r\n case 2:\r\n return interfaceFunction.content;\r\n // Not necessary for now. Keeping them here in case a new case appears\r\n // case 'ADBE Vector Transform Group':\r\n // case 3:\r\n default:\r\n return interfaceFunction.transform;\r\n }\r\n };\r\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\r\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\r\n interfaceFunction.content = content;\r\n interfaceFunction.transform = transformInterface;\r\n Object.defineProperty(interfaceFunction, '_name', {\r\n get: function () {\r\n return shape.nm;\r\n },\r\n });\r\n // interfaceFunction.content = interfaceFunction;\r\n interfaceFunction.numProperties = shape.np;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n interfaceFunction.nm = shape.nm;\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function fillInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(val) {\r\n if (val === 'Color' || val === 'color') {\r\n return interfaceFunction.color;\r\n } if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n return null;\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n color: {\r\n get: ExpressionPropertyInterface(view.c),\r\n },\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.o),\r\n },\r\n _name: { value: shape.nm },\r\n mn: { value: shape.mn },\r\n });\r\n\r\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\r\n return interfaceFunction;\r\n }\r\n\r\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(val) {\r\n if (val === 'Start Point' || val === 'start point') {\r\n return interfaceFunction.startPoint;\r\n }\r\n if (val === 'End Point' || val === 'end point') {\r\n return interfaceFunction.endPoint;\r\n }\r\n if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n return null;\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n startPoint: {\r\n get: ExpressionPropertyInterface(view.s),\r\n },\r\n endPoint: {\r\n get: ExpressionPropertyInterface(view.e),\r\n },\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.o),\r\n },\r\n type: {\r\n get: function () {\r\n return 'a';\r\n },\r\n },\r\n _name: { value: shape.nm },\r\n mn: { value: shape.mn },\r\n });\r\n\r\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\r\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\r\n return interfaceFunction;\r\n }\r\n function defaultInterfaceFactory() {\r\n function interfaceFunction() {\r\n return null;\r\n }\r\n return interfaceFunction;\r\n }\r\n\r\n function strokeInterfaceFactory(shape, view, propertyGroup) {\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\r\n function addPropertyToDashOb(i) {\r\n Object.defineProperty(dashOb, shape.d[i].nm, {\r\n get: ExpressionPropertyInterface(view.d.dataProps[i].p),\r\n });\r\n }\r\n var i;\r\n var len = shape.d ? shape.d.length : 0;\r\n var dashOb = {};\r\n for (i = 0; i < len; i += 1) {\r\n addPropertyToDashOb(i);\r\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\r\n }\r\n\r\n function interfaceFunction(val) {\r\n if (val === 'Color' || val === 'color') {\r\n return interfaceFunction.color;\r\n } if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n } if (val === 'Stroke Width' || val === 'stroke width') {\r\n return interfaceFunction.strokeWidth;\r\n }\r\n return null;\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n color: {\r\n get: ExpressionPropertyInterface(view.c),\r\n },\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.o),\r\n },\r\n strokeWidth: {\r\n get: ExpressionPropertyInterface(view.w),\r\n },\r\n dash: {\r\n get: function () {\r\n return dashOb;\r\n },\r\n },\r\n _name: { value: shape.nm },\r\n mn: { value: shape.mn },\r\n });\r\n\r\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\r\n return interfaceFunction;\r\n }\r\n\r\n function trimInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(val) {\r\n if (val === shape.e.ix || val === 'End' || val === 'end') {\r\n return interfaceFunction.end;\r\n }\r\n if (val === shape.s.ix) {\r\n return interfaceFunction.start;\r\n }\r\n if (val === shape.o.ix) {\r\n return interfaceFunction.offset;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n interfaceFunction.propertyIndex = shape.ix;\r\n\r\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\r\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\r\n interfaceFunction.propertyIndex = shape.ix;\r\n interfaceFunction.propertyGroup = propertyGroup;\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n start: {\r\n get: ExpressionPropertyInterface(view.s),\r\n },\r\n end: {\r\n get: ExpressionPropertyInterface(view.e),\r\n },\r\n offset: {\r\n get: ExpressionPropertyInterface(view.o),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function transformInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.a.ix === value || value === 'Anchor Point') {\r\n return interfaceFunction.anchorPoint;\r\n }\r\n if (shape.o.ix === value || value === 'Opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n if (shape.p.ix === value || value === 'Position') {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\r\n return interfaceFunction.rotation;\r\n }\r\n if (shape.s.ix === value || value === 'Scale') {\r\n return interfaceFunction.scale;\r\n }\r\n if ((shape.sk && shape.sk.ix === value) || value === 'Skew') {\r\n return interfaceFunction.skew;\r\n }\r\n if ((shape.sa && shape.sa.ix === value) || value === 'Skew Axis') {\r\n return interfaceFunction.skewAxis;\r\n }\r\n return null;\r\n }\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\r\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\r\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n if (view.transform.mProps.sk) {\r\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\r\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\r\n }\r\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.o),\r\n },\r\n position: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.p),\r\n },\r\n anchorPoint: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.a),\r\n },\r\n scale: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.s),\r\n },\r\n rotation: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.r),\r\n },\r\n skew: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.sk),\r\n },\r\n skewAxis: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.sa),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.ty = 'tr';\r\n interfaceFunction.mn = shape.mn;\r\n interfaceFunction.propertyGroup = propertyGroup;\r\n return interfaceFunction;\r\n }\r\n\r\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.s.ix === value) {\r\n return interfaceFunction.size;\r\n }\r\n return null;\r\n }\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n interfaceFunction.propertyIndex = shape.ix;\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n size: {\r\n get: ExpressionPropertyInterface(prop.s),\r\n },\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function starInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.r.ix === value) {\r\n return interfaceFunction.rotation;\r\n }\r\n if (shape.pt.ix === value) {\r\n return interfaceFunction.points;\r\n }\r\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\r\n return interfaceFunction.outerRadius;\r\n }\r\n if (shape.os.ix === value) {\r\n return interfaceFunction.outerRoundness;\r\n }\r\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\r\n return interfaceFunction.innerRadius;\r\n }\r\n if (shape.is && shape.is.ix === value) {\r\n return interfaceFunction.innerRoundness;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\r\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\r\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n if (shape.ir) {\r\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\r\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\r\n }\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p),\r\n },\r\n rotation: {\r\n get: ExpressionPropertyInterface(prop.r),\r\n },\r\n points: {\r\n get: ExpressionPropertyInterface(prop.pt),\r\n },\r\n outerRadius: {\r\n get: ExpressionPropertyInterface(prop.or),\r\n },\r\n outerRoundness: {\r\n get: ExpressionPropertyInterface(prop.os),\r\n },\r\n innerRadius: {\r\n get: ExpressionPropertyInterface(prop.ir),\r\n },\r\n innerRoundness: {\r\n get: ExpressionPropertyInterface(prop.is),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function rectInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.r.ix === value) {\r\n return interfaceFunction.roundness;\r\n }\r\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\r\n return interfaceFunction.size;\r\n }\r\n return null;\r\n }\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\r\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p),\r\n },\r\n roundness: {\r\n get: ExpressionPropertyInterface(prop.r),\r\n },\r\n size: {\r\n get: ExpressionPropertyInterface(prop.s),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function roundedInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.r.ix === value || value === 'Round Corners 1') {\r\n return interfaceFunction.radius;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var prop = view;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n radius: {\r\n get: ExpressionPropertyInterface(prop.rd),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.c.ix === value || value === 'Copies') {\r\n return interfaceFunction.copies;\r\n } if (shape.o.ix === value || value === 'Offset') {\r\n return interfaceFunction.offset;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var prop = view;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\r\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n copies: {\r\n get: ExpressionPropertyInterface(prop.c),\r\n },\r\n offset: {\r\n get: ExpressionPropertyInterface(prop.o),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n return function (shapes, view, propertyGroup) {\r\n var interfaces;\r\n function _interfaceFunction(value) {\r\n if (typeof value === 'number') {\r\n value = value === undefined ? 1 : value;\r\n if (value === 0) {\r\n return propertyGroup;\r\n }\r\n return interfaces[value - 1];\r\n }\r\n var i = 0;\r\n var len = interfaces.length;\r\n while (i < len) {\r\n if (interfaces[i]._name === value) {\r\n return interfaces[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n function parentGroupWrapper() {\r\n return propertyGroup;\r\n }\r\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\r\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\r\n _interfaceFunction.numProperties = interfaces.length;\r\n _interfaceFunction._name = 'Contents';\r\n return _interfaceFunction;\r\n };\r\n}());\r\n\r\n/* exported TextExpressionInterface */\r\n\r\nvar TextExpressionInterface = (function () {\r\n return function (elem) {\r\n var _prevValue;\r\n var _sourceText;\r\n function _thisLayerFunction(name) {\r\n switch (name) {\r\n case 'ADBE Text Document':\r\n return _thisLayerFunction.sourceText;\r\n default:\r\n return null;\r\n }\r\n }\r\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\r\n get: function () {\r\n elem.textProperty.getValue();\r\n var stringValue = elem.textProperty.currentData.t;\r\n if (stringValue !== _prevValue) {\r\n elem.textProperty.currentData.t = _prevValue;\r\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\r\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\r\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\r\n }\r\n return _sourceText;\r\n },\r\n });\r\n return _thisLayerFunction;\r\n };\r\n}());\r\n\r\n/* global Matrix, MaskManagerInterface, TransformExpressionInterface, getDescriptor */\r\n/* exported LayerExpressionInterface */\r\n\r\nvar LayerExpressionInterface = (function () {\r\n function getMatrix(time) {\r\n var toWorldMat = new Matrix();\r\n if (time !== undefined) {\r\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\r\n propMatrix.clone(toWorldMat);\r\n } else {\r\n var transformMat = this._elem.finalTransform.mProp;\r\n transformMat.applyToMatrix(toWorldMat);\r\n }\r\n return toWorldMat;\r\n }\r\n\r\n function toWorldVec(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n toWorldMat.props[12] = 0;\r\n toWorldMat.props[13] = 0;\r\n toWorldMat.props[14] = 0;\r\n return this.applyPoint(toWorldMat, arr);\r\n }\r\n\r\n function toWorld(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n return this.applyPoint(toWorldMat, arr);\r\n }\r\n\r\n function fromWorldVec(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n toWorldMat.props[12] = 0;\r\n toWorldMat.props[13] = 0;\r\n toWorldMat.props[14] = 0;\r\n return this.invertPoint(toWorldMat, arr);\r\n }\r\n\r\n function fromWorld(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n return this.invertPoint(toWorldMat, arr);\r\n }\r\n\r\n function applyPoint(matrix, arr) {\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\r\n }\r\n }\r\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\r\n }\r\n\r\n function invertPoint(matrix, arr) {\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\r\n }\r\n }\r\n return matrix.inversePoint(arr);\r\n }\r\n\r\n function fromComp(arr) {\r\n var toWorldMat = new Matrix();\r\n toWorldMat.reset();\r\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\r\n }\r\n return toWorldMat.inversePoint(arr);\r\n }\r\n return toWorldMat.inversePoint(arr);\r\n }\r\n\r\n function sampleImage() {\r\n return [1, 1, 1, 1];\r\n }\r\n\r\n return function (elem) {\r\n var transformInterface;\r\n\r\n function _registerMaskInterface(maskManager) {\r\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\r\n }\r\n function _registerEffectsInterface(effects) {\r\n _thisLayerFunction.effect = effects;\r\n }\r\n\r\n function _thisLayerFunction(name) {\r\n switch (name) {\r\n case 'ADBE Root Vectors Group':\r\n case 'Contents':\r\n case 2:\r\n return _thisLayerFunction.shapeInterface;\r\n case 1:\r\n case 6:\r\n case 'Transform':\r\n case 'transform':\r\n case 'ADBE Transform Group':\r\n return transformInterface;\r\n case 4:\r\n case 'ADBE Effect Parade':\r\n case 'effects':\r\n case 'Effects':\r\n return _thisLayerFunction.effect;\r\n case 'ADBE Text Properties':\r\n return _thisLayerFunction.textInterface;\r\n default:\r\n return null;\r\n }\r\n }\r\n _thisLayerFunction.getMatrix = getMatrix;\r\n _thisLayerFunction.invertPoint = invertPoint;\r\n _thisLayerFunction.applyPoint = applyPoint;\r\n _thisLayerFunction.toWorld = toWorld;\r\n _thisLayerFunction.toWorldVec = toWorldVec;\r\n _thisLayerFunction.fromWorld = fromWorld;\r\n _thisLayerFunction.fromWorldVec = fromWorldVec;\r\n _thisLayerFunction.toComp = toWorld;\r\n _thisLayerFunction.fromComp = fromComp;\r\n _thisLayerFunction.sampleImage = sampleImage;\r\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\r\n _thisLayerFunction._elem = elem;\r\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\r\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\r\n Object.defineProperties(_thisLayerFunction, {\r\n hasParent: {\r\n get: function () {\r\n return elem.hierarchy.length;\r\n },\r\n },\r\n parent: {\r\n get: function () {\r\n return elem.hierarchy[0].layerInterface;\r\n },\r\n },\r\n rotation: getDescriptor(transformInterface, 'rotation'),\r\n scale: getDescriptor(transformInterface, 'scale'),\r\n position: getDescriptor(transformInterface, 'position'),\r\n opacity: getDescriptor(transformInterface, 'opacity'),\r\n anchorPoint: anchorPointDescriptor,\r\n anchor_point: anchorPointDescriptor,\r\n transform: {\r\n get: function () {\r\n return transformInterface;\r\n },\r\n },\r\n active: {\r\n get: function () {\r\n return elem.isInRange;\r\n },\r\n },\r\n });\r\n\r\n _thisLayerFunction.startTime = elem.data.st;\r\n _thisLayerFunction.index = elem.data.ind;\r\n _thisLayerFunction.source = elem.data.refId;\r\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\r\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\r\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\r\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\r\n _thisLayerFunction._name = elem.data.nm;\r\n\r\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\r\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\r\n return _thisLayerFunction;\r\n };\r\n}());\r\n\r\n/* global */\r\n/* exported FootageInterface */\r\n\r\nvar FootageInterface = (function () {\r\n var outlineInterfaceFactory = (function (elem) {\r\n var currentPropertyName = '';\r\n var currentProperty = elem.getFootageData();\r\n function init() {\r\n currentPropertyName = '';\r\n currentProperty = elem.getFootageData();\r\n return searchProperty;\r\n }\r\n function searchProperty(value) {\r\n if (currentProperty[value]) {\r\n currentPropertyName = value;\r\n currentProperty = currentProperty[value];\r\n if (typeof currentProperty === 'object') {\r\n return searchProperty;\r\n }\r\n return currentProperty;\r\n }\r\n var propertyNameIndex = value.indexOf(currentPropertyName);\r\n if (propertyNameIndex !== -1) {\r\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\r\n currentProperty = currentProperty[index];\r\n if (typeof currentProperty === 'object') {\r\n return searchProperty;\r\n }\r\n return currentProperty;\r\n }\r\n return '';\r\n }\r\n return init;\r\n });\r\n\r\n var dataInterfaceFactory = function (elem) {\r\n function interfaceFunction(value) {\r\n if (value === 'Outline') {\r\n return interfaceFunction.outlineInterface();\r\n }\r\n return null;\r\n }\r\n\r\n interfaceFunction._name = 'Outline';\r\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\r\n return interfaceFunction;\r\n };\r\n\r\n return function (elem) {\r\n function _interfaceFunction(value) {\r\n if (value === 'Data') {\r\n return _interfaceFunction.dataInterface;\r\n }\r\n return null;\r\n }\r\n\r\n _interfaceFunction._name = 'Data';\r\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\r\n return _interfaceFunction;\r\n };\r\n}());\r\n\r\n/* exported CompExpressionInterface */\r\n\r\nvar CompExpressionInterface = (function () {\r\n return function (comp) {\r\n function _thisLayerFunction(name) {\r\n var i = 0;\r\n var len = comp.layers.length;\r\n while (i < len) {\r\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\r\n return comp.elements[i].layerInterface;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n // return {active:false};\r\n }\r\n Object.defineProperty(_thisLayerFunction, '_name', { value: comp.data.nm });\r\n _thisLayerFunction.layer = _thisLayerFunction;\r\n _thisLayerFunction.pixelAspect = 1;\r\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\r\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\r\n _thisLayerFunction.pixelAspect = 1;\r\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\r\n _thisLayerFunction.displayStartTime = 0;\r\n _thisLayerFunction.numLayers = comp.layers.length;\r\n return _thisLayerFunction;\r\n };\r\n}());\r\n\r\n/* global ExpressionPropertyInterface */\r\n/* exported TransformExpressionInterface */\r\n\r\nvar TransformExpressionInterface = (function () {\r\n return function (transform) {\r\n function _thisFunction(name) {\r\n switch (name) {\r\n case 'scale':\r\n case 'Scale':\r\n case 'ADBE Scale':\r\n case 6:\r\n return _thisFunction.scale;\r\n case 'rotation':\r\n case 'Rotation':\r\n case 'ADBE Rotation':\r\n case 'ADBE Rotate Z':\r\n case 10:\r\n return _thisFunction.rotation;\r\n case 'ADBE Rotate X':\r\n return _thisFunction.xRotation;\r\n case 'ADBE Rotate Y':\r\n return _thisFunction.yRotation;\r\n case 'position':\r\n case 'Position':\r\n case 'ADBE Position':\r\n case 2:\r\n return _thisFunction.position;\r\n case 'ADBE Position_0':\r\n return _thisFunction.xPosition;\r\n case 'ADBE Position_1':\r\n return _thisFunction.yPosition;\r\n case 'ADBE Position_2':\r\n return _thisFunction.zPosition;\r\n case 'anchorPoint':\r\n case 'AnchorPoint':\r\n case 'Anchor Point':\r\n case 'ADBE AnchorPoint':\r\n case 1:\r\n return _thisFunction.anchorPoint;\r\n case 'opacity':\r\n case 'Opacity':\r\n case 11:\r\n return _thisFunction.opacity;\r\n default:\r\n return null;\r\n }\r\n }\r\n Object.defineProperty(_thisFunction, 'rotation', {\r\n get: ExpressionPropertyInterface(transform.r || transform.rz),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'zRotation', {\r\n get: ExpressionPropertyInterface(transform.rz || transform.r),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'xRotation', {\r\n get: ExpressionPropertyInterface(transform.rx),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'yRotation', {\r\n get: ExpressionPropertyInterface(transform.ry),\r\n });\r\n Object.defineProperty(_thisFunction, 'scale', {\r\n get: ExpressionPropertyInterface(transform.s),\r\n });\r\n var _px;\r\n var _py;\r\n var _pz;\r\n var _transformFactory;\r\n if (transform.p) {\r\n _transformFactory = ExpressionPropertyInterface(transform.p);\r\n } else {\r\n _px = ExpressionPropertyInterface(transform.px);\r\n _py = ExpressionPropertyInterface(transform.py);\r\n if (transform.pz) {\r\n _pz = ExpressionPropertyInterface(transform.pz);\r\n }\r\n }\r\n Object.defineProperty(_thisFunction, 'position', {\r\n get: function () {\r\n if (transform.p) {\r\n return _transformFactory();\r\n }\r\n return [\r\n _px(),\r\n _py(),\r\n _pz ? _pz() : 0];\r\n },\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'xPosition', {\r\n get: ExpressionPropertyInterface(transform.px),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'yPosition', {\r\n get: ExpressionPropertyInterface(transform.py),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'zPosition', {\r\n get: ExpressionPropertyInterface(transform.pz),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'anchorPoint', {\r\n get: ExpressionPropertyInterface(transform.a),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'opacity', {\r\n get: ExpressionPropertyInterface(transform.o),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'skew', {\r\n get: ExpressionPropertyInterface(transform.sk),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'skewAxis', {\r\n get: ExpressionPropertyInterface(transform.sa),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'orientation', {\r\n get: ExpressionPropertyInterface(transform.or),\r\n });\r\n\r\n return _thisFunction;\r\n };\r\n}());\r\n\r\n/* exported ProjectInterface */\r\n\r\nvar ProjectInterface = (function () {\r\n function registerComposition(comp) {\r\n this.compositions.push(comp);\r\n }\r\n\r\n return function () {\r\n function _thisProjectFunction(name) {\r\n var i = 0;\r\n var len = this.compositions.length;\r\n while (i < len) {\r\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\r\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\r\n this.compositions[i].prepareFrame(this.currentFrame);\r\n }\r\n return this.compositions[i].compInterface;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n\r\n _thisProjectFunction.compositions = [];\r\n _thisProjectFunction.currentFrame = 0;\r\n\r\n _thisProjectFunction.registerComposition = registerComposition;\r\n\r\n return _thisProjectFunction;\r\n };\r\n}());\r\n\r\n/* global propertyGroupFactory, ExpressionPropertyInterface, PropertyInterface */\r\n/* exported EffectsExpressionInterface */\r\n\r\nvar EffectsExpressionInterface = (function () {\r\n var ob = {\r\n createEffectsInterface: createEffectsInterface,\r\n };\r\n\r\n function createEffectsInterface(elem, propertyGroup) {\r\n if (elem.effectsManager) {\r\n var effectElements = [];\r\n var effectsData = elem.data.ef;\r\n var i;\r\n var len = elem.effectsManager.effectElements.length;\r\n for (i = 0; i < len; i += 1) {\r\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\r\n }\r\n\r\n var effects = elem.data.ef || [];\r\n var groupInterface = function (name) {\r\n i = 0;\r\n len = effects.length;\r\n while (i < len) {\r\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\r\n return effectElements[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n };\r\n Object.defineProperty(groupInterface, 'numProperties', {\r\n get: function () {\r\n return effects.length;\r\n },\r\n });\r\n return groupInterface;\r\n }\r\n return null;\r\n }\r\n\r\n function createGroupInterface(data, elements, propertyGroup, elem) {\r\n function groupInterface(name) {\r\n var effects = data.ef;\r\n var i = 0;\r\n var len = effects.length;\r\n while (i < len) {\r\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\r\n if (effects[i].ty === 5) {\r\n return effectElements[i];\r\n }\r\n return effectElements[i]();\r\n }\r\n i += 1;\r\n }\r\n throw new Error();\r\n }\r\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\r\n\r\n var effectElements = [];\r\n var i;\r\n var len = data.ef.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (data.ef[i].ty === 5) {\r\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\r\n } else {\r\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\r\n }\r\n }\r\n\r\n if (data.mn === 'ADBE Color Control') {\r\n Object.defineProperty(groupInterface, 'color', {\r\n get: function () {\r\n return effectElements[0]();\r\n },\r\n });\r\n }\r\n Object.defineProperties(groupInterface, {\r\n numProperties: {\r\n get: function () {\r\n return data.np;\r\n },\r\n },\r\n _name: { value: data.nm },\r\n propertyGroup: { value: _propertyGroup },\r\n });\r\n groupInterface.enabled = data.en !== 0;\r\n groupInterface.active = groupInterface.enabled;\r\n return groupInterface;\r\n }\r\n\r\n function createValueInterface(element, type, elem, propertyGroup) {\r\n var expressionProperty = ExpressionPropertyInterface(element.p);\r\n function interfaceFunction() {\r\n if (type === 10) {\r\n return elem.comp.compInterface(element.p.v);\r\n }\r\n return expressionProperty();\r\n }\r\n\r\n if (element.p.setGroupProperty) {\r\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\r\n }\r\n\r\n return interfaceFunction;\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* global createSizedArray */\r\n/* exported MaskManagerInterface */\r\n\r\nvar MaskManagerInterface = (function () {\r\n function MaskInterface(mask, data) {\r\n this._mask = mask;\r\n this._data = data;\r\n }\r\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\r\n get: function () {\r\n if (this._mask.prop.k) {\r\n this._mask.prop.getValue();\r\n }\r\n return this._mask.prop;\r\n },\r\n });\r\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\r\n get: function () {\r\n if (this._mask.op.k) {\r\n this._mask.op.getValue();\r\n }\r\n return this._mask.op.v * 100;\r\n },\r\n });\r\n\r\n var MaskManager = function (maskManager) {\r\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\r\n var i;\r\n var len = maskManager.viewData.length;\r\n for (i = 0; i < len; i += 1) {\r\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\r\n }\r\n\r\n var maskFunction = function (name) {\r\n i = 0;\r\n while (i < len) {\r\n if (maskManager.masksProperties[i].nm === name) {\r\n return _masksInterfaces[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n };\r\n return maskFunction;\r\n };\r\n return MaskManager;\r\n}());\r\n\r\n/* global createTypedArray */\r\n/* exported ExpressionPropertyInterface */\r\n\r\nvar ExpressionPropertyInterface = (function () {\r\n var defaultUnidimensionalValue = { pv: 0, v: 0, mult: 1 };\r\n var defaultMultidimensionalValue = { pv: [0, 0, 0], v: [0, 0, 0], mult: 1 };\r\n\r\n function completeProperty(expressionValue, property, type) {\r\n Object.defineProperty(expressionValue, 'velocity', {\r\n get: function () {\r\n return property.getVelocityAtTime(property.comp.currentFrame);\r\n },\r\n });\r\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\r\n expressionValue.key = function (pos) {\r\n if (!expressionValue.numKeys) {\r\n return 0;\r\n }\r\n var value = '';\r\n if ('s' in property.keyframes[pos - 1]) {\r\n value = property.keyframes[pos - 1].s;\r\n } else if ('e' in property.keyframes[pos - 2]) {\r\n value = property.keyframes[pos - 2].e;\r\n } else {\r\n value = property.keyframes[pos - 2].s;\r\n }\r\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\r\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\r\n valueProp.value = type === 'unidimensional' ? value[0] : value;\r\n return valueProp;\r\n };\r\n expressionValue.valueAtTime = property.getValueAtTime;\r\n expressionValue.speedAtTime = property.getSpeedAtTime;\r\n expressionValue.velocityAtTime = property.getVelocityAtTime;\r\n expressionValue.propertyGroup = property.propertyGroup;\r\n }\r\n\r\n function UnidimensionalPropertyInterface(property) {\r\n if (!property || !('pv' in property)) {\r\n property = defaultUnidimensionalValue;\r\n }\r\n var mult = 1 / property.mult;\r\n var val = property.pv * mult;\r\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\r\n expressionValue.value = val;\r\n completeProperty(expressionValue, property, 'unidimensional');\r\n\r\n return function () {\r\n if (property.k) {\r\n property.getValue();\r\n }\r\n val = property.v * mult;\r\n if (expressionValue.value !== val) {\r\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\r\n expressionValue.value = val;\r\n completeProperty(expressionValue, property, 'unidimensional');\r\n }\r\n return expressionValue;\r\n };\r\n }\r\n\r\n function MultidimensionalPropertyInterface(property) {\r\n if (!property || !('pv' in property)) {\r\n property = defaultMultidimensionalValue;\r\n }\r\n var mult = 1 / property.mult;\r\n var len = (property.data && property.data.l) || property.pv.length;\r\n var expressionValue = createTypedArray('float32', len);\r\n var arrValue = createTypedArray('float32', len);\r\n expressionValue.value = arrValue;\r\n completeProperty(expressionValue, property, 'multidimensional');\r\n\r\n return function () {\r\n if (property.k) {\r\n property.getValue();\r\n }\r\n for (var i = 0; i < len; i += 1) {\r\n arrValue[i] = property.v[i] * mult;\r\n expressionValue[i] = arrValue[i];\r\n }\r\n return expressionValue;\r\n };\r\n }\r\n\r\n // TODO: try to avoid using this getter\r\n function defaultGetter() {\r\n return defaultUnidimensionalValue;\r\n }\r\n\r\n return function (property) {\r\n if (!property) {\r\n return defaultGetter;\r\n } if (property.propType === 'unidimensional') {\r\n return UnidimensionalPropertyInterface(property);\r\n }\r\n return MultidimensionalPropertyInterface(property);\r\n };\r\n}());\r\n\r\n/* global expressionHelpers, TextSelectorProp, ExpressionManager */\r\n/* exported TextExpressionSelectorPropFactory */\r\n\r\nvar TextExpressionSelectorPropFactory = (function () { // eslint-disable-line no-unused-vars\r\n function getValueProxy(index, total) {\r\n this.textIndex = index + 1;\r\n this.textTotal = total;\r\n this.v = this.getValue() * this.mult;\r\n return this.v;\r\n }\r\n\r\n return function (elem, data) {\r\n this.pv = 1;\r\n this.comp = elem.comp;\r\n this.elem = elem;\r\n this.mult = 0.01;\r\n this.propType = 'textSelector';\r\n this.textTotal = data.totalChars;\r\n this.selectorValue = 100;\r\n this.lastValue = [1, 1, 1];\r\n this.k = true;\r\n this.x = true;\r\n this.getValue = ExpressionManager.initiateExpression.bind(this)(elem, data, this);\r\n this.getMult = getValueProxy;\r\n this.getVelocityAtTime = expressionHelpers.getVelocityAtTime;\r\n if (this.kf) {\r\n this.getValueAtTime = expressionHelpers.getValueAtTime.bind(this);\r\n } else {\r\n this.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(this);\r\n }\r\n this.setGroupProperty = expressionHelpers.setGroupProperty;\r\n };\r\n}());\r\n\r\nvar propertyGetTextProp = TextSelectorProp.getTextSelectorProp;\r\nTextSelectorProp.getTextSelectorProp = function (elem, data, arr) {\r\n if (data.t === 1) {\r\n return new TextExpressionSelectorPropFactory(elem, data, arr); // eslint-disable-line no-undef\r\n }\r\n return propertyGetTextProp(elem, data, arr);\r\n};\r\n\r\n/* global PropertyFactory */\r\n/* exported SliderEffect, AngleEffect, ColorEffect, PointEffect, LayerIndexEffect, MaskIndexEffect, CheckboxEffect, NoValueEffect */\r\n\r\nfunction SliderEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction AngleEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction ColorEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\r\n}\r\nfunction PointEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\r\n}\r\nfunction LayerIndexEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction MaskIndexEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction CheckboxEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction NoValueEffect() {\r\n this.p = {};\r\n}\r\n\r\n/* global extendPrototype, SliderEffect, AngleEffect, ColorEffect, PointEffect, CheckboxEffect, LayerIndexEffect,\r\nMaskIndexEffect, NoValueEffect, DynamicPropertyContainer */\r\n\r\nfunction EffectsManager(data, element) {\r\n var effects = data.ef || [];\r\n this.effectElements = [];\r\n var i;\r\n var len = effects.length;\r\n var effectItem;\r\n for (i = 0; i < len; i += 1) {\r\n effectItem = new GroupEffect(effects[i], element);\r\n this.effectElements.push(effectItem);\r\n }\r\n}\r\n\r\nfunction GroupEffect(data, element) {\r\n this.init(data, element);\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], GroupEffect);\r\n\r\nGroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\r\n\r\nGroupEffect.prototype.init = function (data, element) {\r\n this.data = data;\r\n this.effectElements = [];\r\n this.initDynamicPropertyContainer(element);\r\n var i;\r\n var len = this.data.ef.length;\r\n var eff;\r\n var effects = this.data.ef;\r\n for (i = 0; i < len; i += 1) {\r\n eff = null;\r\n switch (effects[i].ty) {\r\n case 0:\r\n eff = new SliderEffect(effects[i], element, this);\r\n break;\r\n case 1:\r\n eff = new AngleEffect(effects[i], element, this);\r\n break;\r\n case 2:\r\n eff = new ColorEffect(effects[i], element, this);\r\n break;\r\n case 3:\r\n eff = new PointEffect(effects[i], element, this);\r\n break;\r\n case 4:\r\n case 7:\r\n eff = new CheckboxEffect(effects[i], element, this);\r\n break;\r\n case 10:\r\n eff = new LayerIndexEffect(effects[i], element, this);\r\n break;\r\n case 11:\r\n eff = new MaskIndexEffect(effects[i], element, this);\r\n break;\r\n case 5:\r\n eff = new EffectsManager(effects[i], element, this);\r\n break;\r\n // case 6:\r\n default:\r\n eff = new NoValueEffect(effects[i], element, this);\r\n break;\r\n }\r\n if (eff) {\r\n this.effectElements.push(eff);\r\n }\r\n }\r\n};\r\n\r\n\r\nvar lottie = {};\r\n\r\nfunction setLocationHref(href) {\r\n locationHref = href;\r\n}\r\n\r\nfunction searchAnimations() {\r\n if (standalone === true) {\r\n animationManager.searchAnimations(animationData, standalone, renderer);\r\n } else {\r\n animationManager.searchAnimations();\r\n }\r\n}\r\n\r\nfunction setSubframeRendering(flag) {\r\n subframeEnabled = flag;\r\n}\r\n\r\nfunction setIDPrefix(prefix) {\r\n idPrefix = prefix;\r\n}\r\n\r\nfunction loadAnimation(params) {\r\n if (standalone === true) {\r\n params.animationData = JSON.parse(animationData);\r\n }\r\n return animationManager.loadAnimation(params);\r\n}\r\n\r\nfunction setQuality(value) {\r\n if (typeof value === 'string') {\r\n switch (value) {\r\n case 'high':\r\n defaultCurveSegments = 200;\r\n break;\r\n default:\r\n case 'medium':\r\n defaultCurveSegments = 50;\r\n break;\r\n case 'low':\r\n defaultCurveSegments = 10;\r\n break;\r\n }\r\n } else if (!isNaN(value) && value > 1) {\r\n defaultCurveSegments = value;\r\n }\r\n if (defaultCurveSegments >= 50) {\r\n roundValues(false);\r\n } else {\r\n roundValues(true);\r\n }\r\n}\r\n\r\nfunction inBrowser() {\r\n return typeof navigator !== 'undefined';\r\n}\r\n\r\nfunction installPlugin(type, plugin) {\r\n if (type === 'expressions') {\r\n expressionsPlugin = plugin;\r\n }\r\n}\r\n\r\nfunction getFactory(name) {\r\n switch (name) {\r\n case 'propertyFactory':\r\n return PropertyFactory;\r\n case 'shapePropertyFactory':\r\n return ShapePropertyFactory;\r\n case 'matrix':\r\n return Matrix;\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nlottie.play = animationManager.play;\r\nlottie.pause = animationManager.pause;\r\nlottie.setLocationHref = setLocationHref;\r\nlottie.togglePause = animationManager.togglePause;\r\nlottie.setSpeed = animationManager.setSpeed;\r\nlottie.setDirection = animationManager.setDirection;\r\nlottie.stop = animationManager.stop;\r\nlottie.searchAnimations = searchAnimations;\r\nlottie.registerAnimation = animationManager.registerAnimation;\r\nlottie.loadAnimation = loadAnimation;\r\nlottie.setSubframeRendering = setSubframeRendering;\r\nlottie.resize = animationManager.resize;\r\n// lottie.start = start;\r\nlottie.goToAndStop = animationManager.goToAndStop;\r\nlottie.destroy = animationManager.destroy;\r\nlottie.setQuality = setQuality;\r\nlottie.inBrowser = inBrowser;\r\nlottie.installPlugin = installPlugin;\r\nlottie.freeze = animationManager.freeze;\r\nlottie.unfreeze = animationManager.unfreeze;\r\nlottie.setVolume = animationManager.setVolume;\r\nlottie.mute = animationManager.mute;\r\nlottie.unmute = animationManager.unmute;\r\nlottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\r\nlottie.useWebWorker = function (flag) {\r\n _useWebWorker = flag;\r\n};\r\nlottie.setIDPrefix = setIDPrefix;\r\nlottie.__getFactory = getFactory;\r\nlottie.version = '5.8.1';\r\n\r\nfunction checkReady() {\r\n if (document.readyState === 'complete') {\r\n clearInterval(readyStateCheckInterval);\r\n searchAnimations();\r\n }\r\n}\r\n\r\nfunction getQueryVariable(variable) {\r\n var vars = queryString.split('&');\r\n for (var i = 0; i < vars.length; i += 1) {\r\n var pair = vars[i].split('=');\r\n if (decodeURIComponent(pair[0]) == variable) { // eslint-disable-line eqeqeq\r\n return decodeURIComponent(pair[1]);\r\n }\r\n }\r\n return null;\r\n}\r\nvar standalone = '__[STANDALONE]__';\r\nvar animationData = '__[ANIMATIONDATA]__';\r\nvar renderer = '';\r\nvar queryString;\r\nif (standalone) {\r\n var scripts = document.getElementsByTagName('script');\r\n var index = scripts.length - 1;\r\n var myScript = scripts[index] || {\r\n src: '',\r\n };\r\n queryString = myScript.src.replace(/^[^\\?]+\\??/, ''); // eslint-disable-line no-useless-escape\r\n renderer = getQueryVariable('renderer');\r\n}\r\nvar readyStateCheckInterval = setInterval(checkReady, 100);\r\n\nreturn lottie;\n}));","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQQAAAAeAgMAAAAHhftSAAAACVBMVEVHcEz/j2///drb0PKeAAAAAXRSTlMAQObYZgAAADxJREFUeNrt1zEBADAMw7CSHMmhHAgfPSZB8JXMAAAALDo0ClZzaRSsFKwUrBSsFKysmUrBavsSAQAAf3v2t6mrJ3C6BQAAAABJRU5ErkJggg==\"","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGkAAABICAYAAAD1ctupAAAABHNCSVQICAgIfAhkiAAABCVJREFUeF7t2z1MFEEUB/B5xyVHAnfQGSprLWzliIUUJliYaGKDiUSj8Qi2aiEWJNrRKzkSQ4WFJhSaSGKDiQEJia21nVqQeHcFZ7h9zh5wLHj7MXPzsbP3qEj2dubN/7czO8tywBz+qVXKiwzgUegQPHxSqm4tOjzEdung8gAIyQE9QiKk1CRAy11qKMILISRC0psA3ZP05qukdUJSEqPeRghJb75KWickJTHqbYSQ9OarpHVCUhKj3kYISW++SlonJCUx6m2EkPTmq6R1QlISo95GCElvvkpaJyQlMepthJD05stw7vxwrTXyNo84P1T9+k2mO51IjUp5ymOsUmwWpmFlY0+mPlXnWHlV4QPVW6Mf+cv7S4i4y6GuyEDpQjoAgjVe3yCvb73ULNywCWUcKQh0dKXJQulACgIF6lsvjRWuwcLGvqrZIdKOUSS8c3mwXvj7yZ9Bp4uUgVKN1A2oUyfiu+IYX/osQBlD8oFqheYaAEyFXUWiUCqRIoGOp5QVKGNIPFC+xsP1uGkuAqUKKRHQceErpaXNu3HjUHncGJJIEEmhVCAJ1cVYA7zW1VJ1+4tKhLi2jCH5hQgFkmDX1yuSUD2WgPzcjCKphuoFyRUgK0gqoWSRXAKyhqQKSgbJNSCrSCqgRJFcBLKO1CuUCJKrQG2kP7MTC1FbwJGlzcjjcdvHJMeFAgzs+pIiCbVveBeHty8M1YaGH4flBIgNqM1OYFSQ/MHNyA5QKMhDqBbAdNyXyBjzthgM+H+KGoy7YHgQxp+DGvcvnvHyAz8javudGiSZpY9fPR840kzYABG9lwxyM/xzw2kEao/ZNSRRKObhHstB+AxBbHLEQlqBnEUSgkK+QEHEahx3nHdmY4kLXjROzqSjASS6R8UhxBy3DeT0TEoM1QNSGoAygRS79EkipQUoM0jRUMjvKfye1Mb6/9kc/DvOqb8hpwkoU0gdKID3/Pf8id1aCFC3HV3agDKH5A+oXpm4icDedKAcB8ok0gkoxHy3Jc6VGdTZHLn4MBv34Hlw9ZWnvQG2GvmMdNgQfxWPOW9/sri88zlJ26Y/4/RzUlxY9cr4M2S551HvlrkPA8+7V1refh3Xnq3jmUZqL30Pxl8g5Oa7QbkAlNl70ukrvhtUe2PeSvcMyvw9KQrKB+L3oLlideeVrSVMpN/ML3fBMA5mFDwF3H/oClDfLHdBKLx17iysfv8hciXb/mxfzSTbYcv2T0iyyRk8j5AMhi3bFSHJJmfwPEIyGLZsV4Qkm5zB8wjJYNiyXRGSbHIGzyMkg2HLdkVIsskZPI+QDIYt2xUhySZn8DwlSMC8SYM1911X6MEo/3/2tdCBI/6K/VZF36WWvgHHf/UlfTX3XUWE5AA5IaUeie5JqSfyC6SZ5AATITmCVN5woNB+LnH3H64wKlQ/5S/iAAAAAElFTkSuQmCC\"","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar hasOwn = require('../internals/has-own-property');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar thisNumberValue = require('../internals/this-number-value');\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = global.TypeError;\nvar arraySlice = uncurryThis(''.slice);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n var primValue = toPrimitive(value, 'number');\n return typeof primValue == 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, 'number');\n var first, third, radix, maxCode, digits, length, index, code;\n if (isSymbol(it)) throw TypeError('Cannot convert a Symbol value to a number');\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = charCodeAt(it, 0);\n if (first === 43 || first === 45) {\n third = charCodeAt(it, 2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (charCodeAt(it, 1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = arraySlice(it, 2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = charCodeAt(digits, index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n var dummy = this;\n // check on 1..constructor(foo) case\n return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); })\n ? inheritIfRequired(Object(n), dummy, NumberWrapper) : n;\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n // ESNext\n 'fromString,range'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (hasOwn(NativeNumber, key = keys[j]) && !hasOwn(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","module.exports = __webpack_public_path__ + \"img/C6.078ef802.jpg\";","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","module.exports = __webpack_public_path__ + \"img/C1.8e133850.jpg\";","module.exports = __webpack_public_path__ + \"img/ico-share.59d578c5.svg\";","module.exports = __webpack_public_path__ + \"img/G4.8e8dab2e.jpg\";","module.exports = __webpack_public_path__ + \"img/C2.5a2dcc0c.jpg\";","module.exports = __webpack_public_path__ + \"img/card-shadow.ce0b2816.png\";","module.exports = __webpack_public_path__ + \"img/C3.ba66dfcf.jpg\";","module.exports = __webpack_public_path__ + \"img/C12.a108df52.jpg\";","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};\n","module.exports = __webpack_public_path__ + \"img/C8.06cbc98b.jpg\";","module.exports = __webpack_public_path__ + \"img/C9.67aabb45.jpg\";","module.exports = __webpack_public_path__ + \"img/C11.8b04e899.jpg\";","module.exports = __webpack_public_path__ + \"img/C10.48e4f4af.jpg\";","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Teleport as _Teleport, createVNode as _createVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, toDisplayString as _toDisplayString, withCtx as _withCtx, normalizeClass as _normalizeClass } from \"vue\"\nimport _imports_0 from '@/assets/images/result/card-shadow.png'\nimport _imports_1 from '@/assets/images/card-back.png'\nimport _imports_2 from '@/assets/images/result/iso-download.png'\nimport _imports_3 from '@/assets/images/form/line.png'\nimport _imports_4 from '@/assets/images/result/line2.png'\nimport _imports_5 from '@/assets/images/result/ico-share.svg'\n\n\nconst _hoisted_1 = {\n key: 0,\n class: \"Result-image\"\n}\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"card-shadow\" }, [\n /*#__PURE__*/_createElementVNode(\"img\", {\n src: _imports_0,\n alt: \"\"\n })\n], -1)\nconst _hoisted_3 = { id: \"card\" }\nconst _hoisted_4 = { class: \"card-front\" }\nconst _hoisted_5 = [\"href\"]\nconst _hoisted_6 = [\"src\"]\nconst _hoisted_7 = [\"src\"]\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"card-back\" }, [\n /*#__PURE__*/_createElementVNode(\"img\", {\n src: _imports_1,\n alt: \"\"\n })\n], -1)\nconst _hoisted_9 = { class: \"ico-download\" }\nconst _hoisted_10 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"ico-download-image\" }, [\n /*#__PURE__*/_createElementVNode(\"img\", {\n src: _imports_2,\n alt: \"\"\n })\n], -1)\nconst _hoisted_11 = {\n key: 0,\n class: \"ico-download-text\"\n}\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\" แตะค้างที่รูปไพ่\")\nconst _hoisted_13 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_14 = /*#__PURE__*/_createTextVNode(\"เพื่อบันทึกภาพ\")\nconst _hoisted_15 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_16 = /*#__PURE__*/_createTextVNode(\"ลงมือถือ \")\nconst _hoisted_17 = [\n _hoisted_12,\n _hoisted_13,\n _hoisted_14,\n _hoisted_15,\n _hoisted_16\n]\nconst _hoisted_18 = {\n key: 1,\n class: \"ico-download-text\"\n}\nconst _hoisted_19 = /*#__PURE__*/_createTextVNode(\" แตะที่รูปไพ่\")\nconst _hoisted_20 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_21 = /*#__PURE__*/_createTextVNode(\"เพื่อบันทึกภาพ\")\nconst _hoisted_22 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_23 = /*#__PURE__*/_createTextVNode(\"ลงมือถือ \")\nconst _hoisted_24 = [\n _hoisted_19,\n _hoisted_20,\n _hoisted_21,\n _hoisted_22,\n _hoisted_23\n]\nconst _hoisted_25 = { class: \"ico-scrolldown\" }\nconst _hoisted_26 = { class: \"image-silde\" }\nconst _hoisted_27 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"textslide\" }, [\n /*#__PURE__*/_createTextVNode(\"เลื่อนหน้าจอ\"),\n /*#__PURE__*/_createElementVNode(\"br\"),\n /*#__PURE__*/_createTextVNode(\"เพื่อดูคำทำนาย\")\n], -1)\nconst _hoisted_28 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"line-bow\" }, [\n /*#__PURE__*/_createElementVNode(\"img\", {\n src: _imports_3,\n alt: \"\"\n })\n], -1)\nconst _hoisted_29 = { class: \"card-title\" }\nconst _hoisted_30 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"line-bow2\" }, [\n /*#__PURE__*/_createElementVNode(\"img\", {\n src: _imports_4,\n alt: \"\"\n })\n], -1)\nconst _hoisted_31 = { class: \"Result_detail\" }\nconst _hoisted_32 = [\"innerHTML\"]\nconst _hoisted_33 = [\"innerHTML\"]\nconst _hoisted_34 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"card-nextday\" }, \" เปิดไพ่เสริมดวงรักได้ทุกวัน พรุ่งนี้มาเล่นใหม่นะ \", -1)\nconst _hoisted_35 = { class: \"bt_group\" }\nconst _hoisted_36 = { class: \"bt_group_inner\" }\nconst _hoisted_37 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"bt_group_line\" }, null, -1)\nconst _hoisted_38 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"ico-share\" }, [\n /*#__PURE__*/_createElementVNode(\"img\", {\n src: _imports_5,\n alt: \"\"\n })\n], -1)\nconst _hoisted_39 = /*#__PURE__*/_createTextVNode(\" แชร์ไพ่สุดปังไปที่ FB \")\nconst _hoisted_40 = [\n _hoisted_38,\n _hoisted_39\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_PopupCompleted = _resolveComponent(\"PopupCompleted\")!\n const _component_LogoSmall = _resolveComponent(\"LogoSmall\")!\n const _component_lottie_animation = _resolveComponent(\"lottie-animation\")!\n const _component_ButtonGold = _resolveComponent(\"ButtonGold\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"Result\", {'bggold':_ctx.IsGolden}])\n }, [\n (_openBlock(), _createBlock(_Teleport, { to: \"body\" }, [\n (_ctx.IsGolden)\n ? (_openBlock(), _createBlock(_component_PopupCompleted, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ])),\n _createVNode(_component_LogoSmall, { class: \"min-h\" }),\n (_ctx.Carddetail)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _hoisted_2,\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n (!_ctx.IsIos())\n ? (_openBlock(), _createElementBlock(\"a\", {\n key: 0,\n href: `${_ctx.APIDownload}?cardfilename=${_ctx.Carddetail.cardnumber}`,\n target: \"_blank\",\n download: \"meiji-photo\"\n }, [\n _createElementVNode(\"img\", {\n src: _ctx.Carddetail.image,\n alt: \"\"\n }, null, 8, _hoisted_6)\n ], 8, _hoisted_5))\n : (_openBlock(), _createElementBlock(\"img\", {\n key: 1,\n src: _ctx.Carddetail.image\n }, null, 8, _hoisted_7))\n ]),\n _hoisted_8\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _hoisted_10,\n (_ctx.IsIos())\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, _hoisted_17))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_18, _hoisted_24))\n ]),\n _createElementVNode(\"div\", _hoisted_25, [\n _createElementVNode(\"div\", _hoisted_26, [\n _createVNode(_component_lottie_animation, { path: \"animate/slide.json\" })\n ]),\n _hoisted_27\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _hoisted_28,\n _createElementVNode(\"div\", _hoisted_29, _toDisplayString(_ctx.Carddetail.name), 1),\n _hoisted_30,\n _createElementVNode(\"div\", _hoisted_31, [\n _createElementVNode(\"div\", {\n class: \"card-detail\",\n innerHTML: _ctx.Carddetail.detail\n }, null, 8, _hoisted_32),\n _createElementVNode(\"div\", {\n class: \"card-subtitle\",\n innerHTML: _ctx.Carddetail.subtitle \n }, null, 8, _hoisted_33),\n _hoisted_34,\n (_ctx.IsGolden)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n to: \"/form\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_ButtonGold, {\n class: \"pd10\",\n \"button-data\": { name: 'กรอกข้อมูลเพื่อลุ้นรับรางวัล', width: 'auto' }\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_35, [\n _createElementVNode(\"div\", _hoisted_36, [\n _hoisted_37,\n _createElementVNode(\"button\", {\n class: _normalizeClass([\"bt-content\", { active: _ctx.btActive }]),\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.ShareFB && _ctx.ShareFB(...args)))\n }, _hoisted_40, 2)\n ])\n ])\n ], 2))\n}","export const CardList = [\r\n {\r\n 'cardid': 'C01',\r\n 'cardnumber': 'C1',\r\n 'image': require('@/assets/images/card/C1.jpg'),\r\n 'name': 'Ace of Cups',\r\n 'subtitle':'โลกเหวี่ยงคนที่ใช่มาล้าว',\r\n 'detail': \"ไพ่หนึ่งถ้วยบ่งบอกว่าคุณจะเจอความรักครั้งใหม่ที่มีโอกาสพัฒนาไปในทิศทางที่ดีขึ้น ใครได้ไพ่ใบนี้จะมีความแซ่บ น่ากิน และดึงดูดเพศตรงข้ามมาก ดูแลตัวเองให้สดชื่นทุกวันแล้วรอความรักที่กำลังจะมาได้เลย\"\r\n },\r\n {\r\n 'cardid': 'C02',\r\n 'cardnumber': 'C2',\r\n 'image': require('@/assets/images/card/C2.jpg'),\r\n 'name': 'Two of Cups',\r\n 'subtitle': 'ลงตัวแบบมงลง',\r\n 'detail': \"ไพ่ใบนี้บ่งบอกว่าคุณมีโอกาสที่จะเจอรักโรแมนติกลงตัว เข้ากันได้เนียนมาก และเมื่ออยู่ด้วยกันจะเป็นความรักที่ดีหวานชื่นรื่นรมย์อย่างมาก แต่ถ้าคุณโสด คุณอาจจะได้ลิ้มลองรสชาติใหม่ๆ ของความรักจากคนใกล้ตัวก็เป็นได้นะ\"\r\n },\r\n {\r\n 'cardid': 'C03',\r\n 'cardnumber': 'C3',\r\n 'image': require('@/assets/images/card/C3.jpg'),\r\n 'name': 'Three of Cups',\r\n 'subtitle': 'รักดีๆ รออยู่ในที่ใหม่ๆ ',\r\n 'detail': \"คนโสดมีเกณฑ์จะได้พบรักจากงานปาร์ตี้หรืองานสังสรรค์ต่างๆ ซึ่งคุณมีโอกาสเจอความรักที่แฮปปี้ แต่หากคุณมีคู่แล้วนั้นอาจมีอารมณ์อยากเปลี่ยนบรรยากาศตลอดเวลา เพื่อให้ได้ลิ้มรสชาติใหม่ๆ แต่ไม่ว่าจะรสไหนก็หอมเนียนนุ่ม ละมุนเหมือนความรักของคุณนั่นแหละ\"\r\n },\r\n {\r\n 'cardid': 'C04',\r\n 'cardnumber': 'C4',\r\n 'image': require('@/assets/images/card/C4.jpg'),\r\n 'name': 'Four of Cups',\r\n 'subtitle': 'เติมรสชาติให้ความรักหน่อย',\r\n 'detail': \"คุณอาจเจอกับความเบื่อหน่าย ความรู้สึกที่ไม่ดี และหากคุณโสดก็อาจต้องโสดไปก่อน เพราะช่วงนี้ยังไม่ค่อยเหมาะกับการที่จะสร้างสัมพันธ์ใดๆ กับใคร และหากคุณมีคู่อาจเกิดการทะเลาะเบาะแว้ง ไม่ค่อยลงตัว และอาจทำให้เลิกรากันได้ เสริมดวงรักให้กลับมาดีโดยหมั่นดูแลมอบสิ่งดีๆ ให้กัน รักไม่จืดชืดถ้าหมั่นเติมความหวานทุกวัน\"\r\n },\r\n {\r\n 'cardid': 'C05',\r\n 'cardnumber': 'C5',\r\n 'image': require('@/assets/images/card/C5.jpg'),\r\n 'name': 'Five of Cups',\r\n 'subtitle': 'รักตัวเองเข้าไว้นะ',\r\n 'detail': \"คุณอาจพบความเศร้าโศกเสียใจ หรืออาจต้องเลิกรากับใครสักคนโดยไม่ตั้งใจ ที่สำคัญคุณอาจเจอปัญหาเรื่องมือที่สาม ดังนั้นช่วงนี้พยายามอย่าเครียด หากิจกรรมทำร่วมกัน และทำบุญเสริมดวงไหว้พระแม่อุมาเทวี แต่ถ้าต้องเลิกจริงๆ อย่าปล่อยให้ออร่าดับ กลับมารักดูแลตัวเองให้สดใส มีสีสัน มีรสชาติ เชื่อแม่\"\r\n },\r\n {\r\n 'cardid': 'C06',\r\n 'cardnumber': 'C6',\r\n 'image': require('@/assets/images/card/C6.jpg'),\r\n 'name': 'Six of Cups',\r\n 'subtitle': 'ต้องสมูธแต่หนักแน่น',\r\n 'detail': \"ไพ่บ่งบอกว่าคุณจะประสบความสำเร็จในเรื่องความรัก ความอบอุ่นในครอบครัว หรือการครองคู่อย่างมีความสุข บางคู่อาจถึงขั้นแต่งงานมีทายาท แต่ก็ยังมีเรื่องที่ต้องระวังคือความโลกส่วนตัวสูงของทั้งคู่ ซึ่งถ้ามีเยอะเกินไปอาจส่งผลเสียได้เช่นกัน\"\r\n },\r\n {\r\n 'cardid': 'C07',\r\n 'cardnumber': 'C7',\r\n 'image': require('@/assets/images/card/C7.jpg'),\r\n 'name': 'Seven of Cups',\r\n 'subtitle': 'ใช้สติแล้วจะไม่ sad',\r\n 'detail': \"ช่วงนี้คุณอาจเจอความรักที่ค่อนข้างเพ้อฝันและอยู่ในโลกมโน มองอะไรก็สวยไปหมด และอาจทำให้คุณเผลอมีใจให้คนมีเจ้าของหรือรักเขาฝ่ายเดียว ช่วงนี้ถ้าใครเข้ามาในชีวิต เขาอาจแค่มาบริหารเสน่ห์ คุณต้องอย่าเผลอใจ เพราะที่คิดว่าหอมหวาน อาจกลายเป็นความท็อกซิก แม่แนะนำมองหาอะไรเฮลท์ตี้ๆ ดีต่อใจให้ตัวเองดีกว่านะ\"\r\n },\r\n {\r\n 'cardid': 'C08',\r\n 'cardnumber': 'C8',\r\n 'image': require('@/assets/images/card/C8.jpg'),\r\n 'name': 'Eight of Cups',\r\n 'subtitle': 'เปลี่ยนตัวเองเป็นสายซอฟท์',\r\n 'detail': \"ไพ่ใบนี้บ่งบอกว่าคุณอาจจะเจอปัญหาความรักไม่เป็นไปดั่งหวัง และให้ระวังการทะเลาะเพราะคำพูดที่ตรงไปตรงมาของคุณ หรือพูดไม่คิด จะส่งผลให้ความรักที่มีพังได้ ลองฝึกพูดหวานๆ นุ่มๆ จะช่วยเสริมให้คุณดูน่ารักน่าคุยด้วย และส่งผลดีกับตัวคุณ\"\r\n },\r\n {\r\n 'cardid': 'C09',\r\n 'cardnumber': 'C9',\r\n 'image': require('@/assets/images/card/C9.jpg'),\r\n 'name': 'Nine of Cups',\r\n 'subtitle': 'คนคลั่งรักคืนวงการ',\r\n 'detail': \"ไพ่ใบนี้บ่งบอกว่าคุณอาจจะเจอคนที่เข้ามาเติมเต็มความรู้สึก จากที่เคยรู้สึกโดดเดี่ยวเหงาเศร้า จะเจอความรักที่สุขเต็มเปี่ยม ชีวิตหวานสดชื่นแบบที่ไม่เคยสัมผัสมาก่อน ส่งผลให้คุณมีความมั่นใจมากยิ่งขึ้น ใครได้ไพ่ใบนี้ติดตัวไปมงลงแน่นอน\"\r\n },\r\n {\r\n 'cardid': 'C10',\r\n 'cardnumber': 'C10',\r\n 'image': require('@/assets/images/card/C10.jpg'),\r\n 'name': 'Ten of Cups',\r\n 'subtitle': 'ฟินจัง ปังปุริเย่',\r\n 'detail': \"ไพ่ใบนี้ต้องบอกเลยว่ารักปัง เปรียบดังความสุขความสดใสก็ว่าได้ คุณจะเจอคนที่เข้ามาดูแลกันได้ทุกวันแบบไม่แผ่วเลย ส่งผลให้ในแต่ละวันนั้นคุณมองเห็นอะไรก็เป็นสีชมพู นุ่มนวล บอกเลยว่าฟินกรุบไปเลยค่ะลูก ได้ไพ่นี้แล้วต้องโหลดเก็บอย่าให้ห่างตัว เชื่อแม่\"\r\n },\r\n {\r\n 'cardid': 'C11',\r\n 'cardnumber': 'C11',\r\n 'image': require('@/assets/images/card/C11.jpg'),\r\n 'name': 'Page of Cups',\r\n 'subtitle': 'ความรักดีๆ เริ่มที่รักตัวเอง',\r\n 'detail': \"ไพ่ใบนี้อาจทำให้คุณรู้สึกถึงความไม่แน่ใจ สับสนในความรัก จะรักใครชอบใครในช่วงนี้ก็ไม่ค่อยเวิร์คเพราะอารมณ์ของคุณไม่คงที่ ความรักที่เข้ามายังไม่ทันไรก็เหี่ยวเฉาเป็นอันแยกย้าย ถ้าอยากมีรักฟินๆ ก็ต้องปรับใจปรับความรู้สึกให้เฮลท์ตี้ ดูแลตัวเองให้ดูดี จะช่วยเสริมดวงให้พร้อมรับพลังงานดีๆ นะลูก\"\r\n },\r\n {\r\n 'cardid': 'C12',\r\n 'cardnumber': 'C12',\r\n 'image': require('@/assets/images/card/C12.jpg'),\r\n 'name': 'Knight of Cups',\r\n 'subtitle': 'ไม่ได้ตั้งใจชอบ แต่ตั้งใจรัก',\r\n 'detail': \"ไพ่บ่งบอกว่าคุณอาจเจอรักโรแมนติกจู่โจมเข้ามาแบบไม่ทันตั้งตัว และที่ฟินไปกว่านั้นก็คือ ถูกใจถูกสเป็กไปทุกอย่าง ทำให้คุณมีความสุขสุดๆ เหมือนได้ลิ้มลองรสชาติใหม่ๆ ที่ไม่เคยกิน ฟินมาก หรือใครที่คบกันมานานๆ จนไม่มีรสชาติ ความสัมพันธ์จะกลับมาหอมหวานอีกครั้ง\"\r\n },\r\n {\r\n 'cardid': 'C13',\r\n 'cardnumber': 'C13',\r\n 'image': require('@/assets/images/card/C13.jpg'),\r\n 'name': 'Queen of Cups',\r\n 'subtitle': 'ขึ้นบัลลังก์ออร่าพุ่ง',\r\n 'detail': \"ไพ่ใบนี้บอกเลยว่าคุณอาจเจอความรักที่ทำให้รู้สึกเป็นดั่งเจ้าหญิงในเทพนิยาย มีคนเข้ามาดูแลหัวใจจนใครๆ ก็อิจฉา และที่สำคัญคุณมีเกณฑ์พบรักจากการเดินทางเพราะคุณมีเสน่ห์โดดเด่น ใครอยู่ใกล้ก็อ่อนไหว ช่วงนี้บอกเลย สวยเลือกได้ จะเลือกแบบนุ่ม แบบแน่น แบบอร่อย เลือกที่ใช่แล้วกินเลยค่ะลูก\"\r\n },\r\n {\r\n 'cardid': 'C14',\r\n 'cardnumber': 'C14',\r\n 'image': require('@/assets/images/card/C14.jpg'),\r\n 'name': 'King of Cups',\r\n 'subtitle': 'เทคแคร์กันคือคำตอบ',\r\n 'detail': \"ไพ่ใบนี้บอกว่าคุณค่อนข้างควบคุมอารมณ์ได้ดี ถึงแม้จะเจอปัญหาความรักอยู่บ้าง แต่ก็จัดการกับปัญหาได้ดีมากๆ ปัญหาจะอยู่กับคุณไม่นาน หลังจากนั้นจะมีแต่ความฟิน กลับมาดูแลกันและกันเหมือนเดิม เชื่อแม่ แค่ไม่ปล่อยให้รักหมดโปร ช่วงโปรน่ะดีที่สุดแล้ว\"\r\n },\r\n {\r\n 'cardid': 'G01',\r\n 'cardnumber': 'G1',\r\n 'image': require('@/assets/images/card/G1.jpg'),\r\n 'name': 'Page of Cups - Golden Card!',\r\n 'subtitle': 'ความรักดีๆ เริ่มที่รักตัวเอง',\r\n 'detail': \"ไพ่ใบนี้อาจทำให้คุณรู้สึกถึงความไม่แน่ใจ สับสนในความรัก จะรักใครชอบใครในช่วงนี้ก็ไม่ค่อยเวิร์คเพราะอารมณ์ของคุณไม่คงที่ ความรักที่เข้ามายังไม่ทันไรก็เหี่ยวเฉาเป็นอันแยกย้าย ถ้าอยากมีรักฟินๆ ก็ต้องปรับใจปรับความรู้สึกให้เฮลท์ตี้ ดูแลตัวเองให้ดูดี จะช่วยเสริมดวงให้พร้อมรับพลังงานดีๆ นะลูก\"\r\n },\r\n {\r\n 'cardid': 'G02',\r\n 'cardnumber': 'G2',\r\n 'image': require('@/assets/images/card/G2.jpg'),\r\n 'name': 'Knight of Cups - Golden Card!',\r\n 'subtitle': 'ไม่ได้ตั้งใจชอบ แต่ตั้งใจรัก',\r\n 'detail': \"ไพ่บ่งบอกว่าคุณอาจเจอรักโรแมนติกจู่โจมเข้ามาแบบไม่ทันตั้งตัว และที่ฟินไปกว่านั้นก็คือ ถูกใจถูกสเป็กไปทุกอย่าง ทำให้คุณมีความสุขสุดๆ เหมือนได้ลิ้มลองรสชาติใหม่ๆ ที่ไม่เคยกิน ฟินมาก หรือใครที่คบกันมานานๆ จนไม่มีรสชาติ ความสัมพันธ์จะกลับมาหอมหวานอีกครั้ง\"\r\n },\r\n {\r\n 'cardid': 'G03',\r\n 'cardnumber': 'G3',\r\n 'image': require('@/assets/images/card/G3.jpg'),\r\n 'name': 'Queen of Cups - Golden Card!',\r\n 'subtitle': 'ขึ้นบัลลังก์ออร่าพุ่ง',\r\n 'detail': \"ไพ่ใบนี้บอกเลยว่าคุณอาจเจอความรักที่ทำให้รู้สึกเป็นดั่งเจ้าหญิงในเทพนิยาย มีคนเข้ามาดูแลหัวใจจนใครๆ ก็อิจฉา และที่สำคัญคุณมีเกณฑ์พบรักจากการเดินทางเพราะคุณมีเสน่ห์โดดเด่น ใครอยู่ใกล้ก็อ่อนไหว ช่วงนี้บอกเลย สวยเลือกได้ จะเลือกแบบนุ่ม แบบแน่น แบบอร่อย เลือกที่ใช่แล้วกินเลยค่ะลูก\"\r\n },\r\n {\r\n 'cardid': 'G04',\r\n 'cardnumber': 'G4',\r\n 'image': require('@/assets/images/card/G4.jpg'),\r\n 'name': 'King of Cups - Golden Card!',\r\n 'subtitle': 'เทคแคร์กันคือคำตอบ',\r\n 'detail': \"ไพ่ใบนี้บอกว่าคุณค่อนข้างควบคุมอารมณ์ได้ดี ถึงแม้จะเจอปัญหาความรักอยู่บ้าง แต่ก็จัดการกับปัญหาได้ดีมากๆ ปัญหาจะอยู่กับคุณไม่นาน หลังจากนั้นจะมีแต่ความฟิน กลับมาดูแลกันและกันเหมือนเดิม เชื่อแม่ แค่ไม่ปล่อยให้รักหมดโปร ช่วงโปรน่ะดีที่สุดแล้ว\"\r\n },\r\n]","\r\n\r\n","import { render } from \"./LottieAnimation.vue?vue&type=template&id=4524c918\"\nimport script from \"./LottieAnimation.vue?vue&type=script&lang=js\"\nexport * from \"./LottieAnimation.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\xampp\\\\htdocs\\\\meiji\\\\meiji_card\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// import { logger } from '@/helpers';\r\nimport { defineComponent, onMounted, ref, computed, reactive } from 'vue'\r\nimport { useRouter } from \"vue-router\";\r\nimport { useStore } from \"vuex\";\r\nimport platform from \"platform\";\r\n\r\nimport LogoSmall from \"@/components/LogoSmall/LogoSmall.vue\";\r\nimport ButtonGold from \"@/components/ButtonGold/ButtonGold.vue\";\r\n// import PopupTerm from \"@/components/PopupTerm/PopupTerm.vue\";\r\n\r\nimport { ApiService } from '@/api/api';\r\n\r\n\r\nimport { CardList} from \"@/assets/data/card\"\r\n\r\nimport LottieAnimation from \"lottie-vuejs/src/LottieAnimation.vue\";\r\n\r\n\r\n\r\nimport { useGtag } from \"vue-gtag-next\";\r\n// eslint-disable-next-line\r\nimport { gsap } from \"gsap\";\r\n\r\ninterface Carddetail {\r\n 'cardid': string | undefined,\r\n 'cardnumber': string | undefined,\r\n 'name': string | undefined,\r\n 'subtitle': string | undefined,\r\n 'detail': string | undefined,\r\n 'image'? : string | undefined\r\n}\r\n\r\nexport default defineComponent({\r\n // type inference enabled\r\n\r\n components:{\r\n LogoSmall,\r\n ButtonGold,\r\n LottieAnimation\r\n },\r\n setup() {\r\n const { pageview,event } = useGtag();\r\n const btActive = ref(true);\r\n const IsGolden = ref(false);\r\n const router = useRouter();\r\n const store = useStore();\r\n const APIDownload = process.env.VUE_APP_API_DOWNLOAD\r\n\r\n\r\n\r\n const IsIos = () =>{\r\n if (platform.os?.family == 'iOS' || platform.os?.family == 'iPadOS'){\r\n return true;\r\n }else if(platform.os?.family =='OS X'){//\r\n return true;\r\n }else{\r\n return false\r\n }\r\n \r\n } \r\n\r\n const Carddetail = reactive ({\r\n 'cardid': '',\r\n 'cardnumber':'',\r\n 'name': '',\r\n 'subtitle': '',\r\n 'detail': '',\r\n 'image':''\r\n })\r\n\r\n\r\n const CardData = computed(() => store.getters['Card/getCard'])\r\n\r\n\r\n const ShareFB = async () =>{\r\n // eslint-disable-next-line\r\n (window as any).fbq('track', 'ShareFacebook') \r\n if( IsGolden.value == true){\r\n event('click', { 'event_category' : 'share_fb', 'event_label': 'Golden' }) \r\n }else{\r\n event('click', { 'event_category' : 'share_fb', 'event_label': 'normal' }) \r\n }\r\n \r\n \r\n const ShareURL = `${process.env.VUE_APP_ShareURL}${CardData.value.cardid}.html`;\r\n const share_url = \"https://www.facebook.com/sharer/sharer.php?u=\" + encodeURIComponent(ShareURL);\r\n window.open(share_url, 'sharer', 'toolbar=0,status=0,width=650,height=400,resizable=yes');\r\n \r\n const RequestParam = {\r\n \"activity\": \"consent\",\r\n }\r\n \r\n await ApiService.SaveUserActivity(RequestParam)\r\n }\r\n\r\n const Luckydraw = async () =>{\r\n\r\n // let RequestData = {\r\n \r\n // }\r\n // let RequestResp = await ApiService.CheckStatus(RequestData)\r\n router.push('/Form')\r\n\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\r\n \r\n\r\n onMounted( ()=>{\r\n pageview({ page_path: \"/Result\" });\r\n \r\n if(CardData.value.cardid == ''){\r\n router.push('/')\r\n }else{\r\n\r\n if (CardData.value.cardtype == 'Golden'){\r\n event('getcard', { 'event_category' : 'golden', })\r\n // setTimeout(() => {\r\n IsGolden.value = true\r\n // }, 1000);\r\n \r\n }else{\r\n event('getcard', { 'event_category' : 'normal', })\r\n }\r\n\r\n const CardId = CardData.value.cardid;\r\n\r\n const Detail = CardList.find(Card => Card.cardid == CardId);\r\n \r\n Carddetail.cardid = Detail?.cardid;\r\n Carddetail.cardnumber = Detail?.cardnumber;\r\n Carddetail.detail = Detail?.detail;\r\n Carddetail.name = Detail?.name;\r\n Carddetail.subtitle = Detail?.subtitle;\r\n Carddetail.image = Detail?.image;\r\n \r\n \r\n \r\n \r\n\r\n // gsap.fromTo('.card-title ', { alpha: 0, scale: 0 }, { alpha: 1, scale: 1, delay: 0, duration: 1.2 })\r\n\r\n // gsap.fromTo('.Result_detail ', { alpha: 0 }, { alpha: 1, scale: 1, delay: 0, duration: 2 })\r\n\r\n // gsap.fromTo('.card-shadow ', { scale: 0,opacity:0 }, { scale: 1,opacity:1, delay: 1, duration: 0.3 })\r\n\r\n setTimeout(() => {\r\n // document.getElementById('card')?.classList.add(\"flip\")\r\n \r\n \r\n }, 200);\r\n }\r\n \r\n\r\n\r\n })\r\n\r\n return { btActive, IsGolden, Carddetail, ShareFB, Luckydraw, IsIos,platform,APIDownload}\r\n \r\n\r\n },\r\n})\r\n","import { render } from \"./Result.vue?vue&type=template&id=61b69c3c&ts=true\"\nimport script from \"./Result.ts?vue&type=script&lang=ts\"\nexport * from \"./Result.ts?vue&type=script&lang=ts\"\n\nimport \"./Result.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"D:\\\\xampp\\\\htdocs\\\\meiji\\\\meiji_card\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n"],"sourceRoot":""}