{"version":3,"sources":["webpack:///./src/components/EveryBanner/EveryBanner.vue?51d1","webpack:///./src/api/dianjin.js","webpack:///./src/components/AuthorInfoPanel/AuthorInfoPanel.vue?22a9","webpack:///./src/components/BasePanel/BasePanel.vue?1a7b","webpack:///./src/components/CommentList/CommentList.vue?6691","webpack:///./src/api/comments.js","webpack:///src/components/CommentList/CommentList.vue","webpack:///./src/components/CommentList/CommentList.vue?18e8","webpack:///./src/components/CommentList/CommentList.vue","webpack:///./src/components/JinNangPanel/JinNangPanel.vue?4ff6","webpack:///./src/api/index.js","webpack:///./src/components/CoursePanel/CoursePanel.vue?fc2f","webpack:///./src/components/PersonalDescriptionPanel/PersonalDescriptionPanel.vue?5d5d","webpack:///src/components/PersonalDescriptionPanel/PersonalDescriptionPanel.vue","webpack:///./src/components/PersonalDescriptionPanel/PersonalDescriptionPanel.vue?d3da","webpack:///./src/components/PersonalDescriptionPanel/PersonalDescriptionPanel.vue","webpack:///./src/components/BasePanel/BasePanel.vue?d644","webpack:///src/components/BasePanel/BasePanel.vue","webpack:///./src/components/BasePanel/BasePanel.vue?cf10","webpack:///./src/components/BasePanel/BasePanel.vue","webpack:///./src/api/author.js","webpack:///./src/components/DianJinPanel/DianJinPanel.vue?cb5c","webpack:///src/components/DianJinPanel/DianJinPanel.vue","webpack:///./src/components/DianJinPanel/DianJinPanel.vue?de28","webpack:///./src/components/DianJinPanel/DianJinPanel.vue","webpack:///./node_modules/lottie-web/build/player/lottie.js","webpack:///./src/components/AuthorInfoPanel/AuthorInfoPanel.vue?1d7e","webpack:///src/components/AuthorInfoPanel/AuthorInfoPanel.vue","webpack:///./src/components/AuthorInfoPanel/AuthorInfoPanel.vue?6a11","webpack:///./src/components/AuthorInfoPanel/AuthorInfoPanel.vue","webpack:///./src/views/DianJinDetail/DianJinDetail.vue?b9c5","webpack:///./src/views/DianJinDetail/DianJinDetail.vue?59eb","webpack:///./src/components/AudioPlay/AudioPlay.vue?7ab4","webpack:///./node_modules/vue-lottie/src/lottie.vue?6ec3","webpack:///node_modules/vue-lottie/src/lottie.vue","webpack:///./node_modules/vue-lottie/src/lottie.vue?4aae","webpack:///./node_modules/vue-lottie/src/lottie.vue","webpack:///src/components/AudioPlay/AudioPlay.vue","webpack:///./src/components/AudioPlay/AudioPlay.vue?7fa0","webpack:///./src/components/AudioPlay/AudioPlay.vue","webpack:///./src/components/JinNangPanel/JinNangPanel.vue?e12c","webpack:///src/components/JinNangPanel/JinNangPanel.vue","webpack:///./src/components/JinNangPanel/JinNangPanel.vue?2895","webpack:///./src/components/JinNangPanel/JinNangPanel.vue","webpack:///./src/components/CoursePanel/CoursePanel.vue?d794","webpack:///src/components/CoursePanel/CoursePanel.vue","webpack:///./src/components/CoursePanel/CoursePanel.vue?feb7","webpack:///./src/components/CoursePanel/CoursePanel.vue","webpack:///src/views/DianJinDetail/DianJinDetail.vue","webpack:///./src/views/DianJinDetail/DianJinDetail.vue?2129","webpack:///./src/views/DianJinDetail/DianJinDetail.vue","webpack:///./src/components/AudioPlay/AudioPlay.vue?e642","webpack:///./src/components/EveryBanner/EveryBanner.vue?b027","webpack:///src/components/EveryBanner/EveryBanner.vue","webpack:///./src/components/EveryBanner/EveryBanner.vue?920b","webpack:///./src/components/EveryBanner/EveryBanner.vue","webpack:///./src/components/PersonalDescriptionPanel/PersonalDescriptionPanel.vue?59fb","webpack:///./src/components/CommentList/CommentList.vue?1e11","webpack:///./src/components/DianJinPanel/DianJinPanel.vue?a611","webpack:///./node_modules/core-js/modules/es.json.stringify.js"],"names":["getDianjinList","data","viewState","axios","url","Urls","DOMAIN_YKT","method","headers","then","result","catch","getDianJinDetail","dianjinId","params","id","code","detail","getPlayInfo","videoIdentity","resourceIdentity","getAuthorStatistics","authorPublish","authorGetDetail","authorRemove","authorGetPage","feeApply","render","_vm","this","_h","$createElement","_c","_self","commentsInfo","show","staticClass","attrs","_v","_s","commentsCount","disabled","disableComment","displayPlaceholder","model","value","callback","$$v","comment","expression","directives","name","rawName","ref","replyName","commentSubmitting","on","onSubmit","_l","item","index","key","style","backgroundImage","nickname","content","dayjs","createTime","format","userInfo","userId","$event","delComment","_e","reply","subComment","parentComent","surplusSubComments","unfoldSubComments","staticRenderFns","createComments","getComments","topicId","getSubComments","commentId","list","deleteComment","props","type","placeholder","default","commentList","replyId","computed","isLogin","$store","getters","_disableComment","_placeholder","commentOptions","state","user","watch","immediate","handler","val","mounted","document","event","hash","window","location","created","methods","initReplyHead","replyHeadEl","$refs","replyHead","textareaEl","setTimeout","resetReplyHead","textIndent","position","duration","i","splice","current","displaySubComments","component","getAdvertisements","codes","getRecommendSetList","size","getSilkBagList","pageSize","orderBy","title","_t","description","components","BasePanel","required","hideButton","toMore","buttonText","$emit","getAuthorList","console","log","JSON","stringify","getCourseList","getHotSaledJinNangList","getAuthorDetail","authorId","upsertAuthor","SendChangePwdSmsAsync","phone","ChangePwdSmsCodeCheck","smsCode","SetPassWordSubmit","password","pwd","dianJinList","redirectAuthorPage","authorInfo","dianJinInfo","length","substring","publishTimeDesc","$router","push","path","factory","root","svgNS","locationHref","initialDefaultFrame","_useWebWorker","subframeEnabled","idPrefix","expressionsPlugin","isSafari","test","navigator","userAgent","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","top","left","display","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","currentTime","totalTime","frameMultiplier","direction","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","target","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","_count","HSVtoRGB","h","s","v","r","g","b","f","p","q","t","RGBtoHSV","d","addSaturationToRGB","color","offset","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","hex","colorMap","toString","BaseEvent","prototype","triggerEvent","eventName","args","_cbs","callbacks","addEventListener","removeEventListener","bind","createTypedArray","createRegularArray","arr","createTypedArrayFactory","Float32Array","Int16Array","Uint8ClampedArray","Array","apply","createNS","createElementNS","createTag","createElement","DynamicPropertyContainer","addDynamicProperty","prop","dynamicProperties","indexOf","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","rotate","angle","mCos","mSin","rotateX","rotateY","rotateZ","shear","sx","sy","skew","ax","ay","skewFromAxis","scale","sz","setTransform","a","c","e","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","_d","_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","copy","keylen","me","count","slice","obj","depth","typ","smear","stringseed","charCodeAt","randomBytes","out","Uint8Array","crypto","msCrypto","getRandomValues","browser","plugins","Date","screen","String","fromCharCode","BezierFactory","ob","getBezierEasing","beziers","nm","str","replace","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","Object","hasOwnProperty","call","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","clearTimeout","bez","dataManager","workerFn","workerInstance","_counterId","processes","workerProxy","onmessage","postMessage","_workerSelf","createWorker","fn","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","parse","ks","it","checkVersion","minimum","animVersionString","animVersion","split","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","responseType","response","responseText","loadAsset","fullPath","errorCallback","XMLHttpRequest","err","onreadystatechange","readyState","status","open","error","send","load","payload","animation","process","onComplete","onError","createProcess","loadAnimation","processId","origin","pathname","loadData","completeAnimation","anim","getFontProperties","fontData","styleName","styles","fStyle","fWeight","toLowerCase","weight","FontManager","maxWaitingTime","emptyChar","w","combinedCharacters","concat","surrogateModifiers","zeroWidthJoiner","trimFontOptions","font","familyArray","enabledFamilies","join","setUpNode","family","parentNode","setAttribute","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","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","fPath","querySelectorAll","href","rel","src","sc","helper","cache","addChars","found","ch","getCharData","char","warn","_warned","measureText","fontName","getFontByName","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","undefined","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","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","keys","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","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","transformData","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","line","extra","an","animatorOffset","add","rot","atan","update","updated","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","text","charCode","charactersArray","shouldCombine","charAt","substr","newLineFlag","charData","fontManager","anchorGrouping","currentSize","currentPos","lineWidth","maxLineWidth","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","animatorData","letterData","based","indexes","rn","newInd","currentInd","updateDocumentData","newData","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorPropFactory","_currentTextLength","finalS","finalE","xe","ne","sm","textProperty","easer","tot","smoothness","threshold","newCharsFlag","divisor","poolFactory","initialLength","_create","_release","pooling","create","cloned","shapeCollection","markerParser","parsePayloadLines","lines","keysCount","trim","Error","_markers","markers","_marker","markerData","tm","dr","cm","_","__","BaseRenderer","SVGRenderer","animationItem","config","svgElement","ariaLabel","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","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","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","textSpans","shapesData","stylesList","shapeModifiers","itemsData","processedElements","animatedContents","SVGTintFilter","filter","filterManager","matrixFilter","effectElements","feMergeNode","feMerge","SVGFillFilter","SVGGaussianBlurEffect","feGaussianBlur","SVGStrokeEffect","initialized","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","feOffset","feFlood","feComposite","originalNodeAdded","sequence","processSequence","processSequences","getNewKey","checkMasks","layerInterface","LayerExpressionInterface","registerMaskInterface","effectsInterface","EffectsExpressionInterface","createEffectsInterface","registerEffectsInterface","compInterface","CompExpressionInterface","shapeInterface","ShapeExpressionInterface","textInterface","TextExpressionInterface","setBlendMode","blendModeValue","bm","sr","effectsManager","EffectsManager","getType","matteElement","transformedElement","_sizeChanged","gg","layerElementParent","masker","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","ln","cp","clipId","cpGroup","renderableEffectsManager","SVGEffects","addShapeToModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","shouldBreakProcess","searchProcessedElement","addProcessedElement","textAnimator","buildNewText","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","lineNumber","buildColor","colorData","emptyProp","timeRemapped","setElements","getElements","destroyElements","pr","volumeValue","FootageInterface","getFootageData","textContainer","buildTextContents","textArray","textContents","currentTextContent","tSpan","usesGlyphs","cachedSpansLength","tElement","justify","textBox","bbox","renderedLetter","textSpan","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","GradientConstructor","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","shapeProperty","setElementStyles","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","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","fileName","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","end","pendingFrame","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onSegmentStart","onDestroy","getPath","getDuration","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","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","posterizeTime","framesPerSecond","hasParent","executeExpression","_value","frameExpressionId","expressionHelpers","searchExpressions","_cachingAtTime","getSpeedAtTime","delta","speed","getStaticValueAtTime","setGroupProperty","propertyGroup","durationFlag","cycleDuration","firstKeyFrame","ret","lastKeyFrame","initV","endV","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","start","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","source","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","typeName","authorCompany","followerNum","class","followed","isFollowed","following","follow","inLogin","followAuthor","mapActions","ensureLogin","dianJinDetail","isFree","isPermission","goBuy","staticStyle","coverUrl","playInfo","domProps","isAuthorSelf","hasRight","productId","remark","jinNangList","jinNangPanelTitle","dianjinPanelTitle","courseList","coursePanelTitle","lottiestyle","defaultOptions","handleAnimation","emitBuy","ended","VideoPlayer","animationSpeed","isPlay","getTimeFun","getElementById","transTime","minute","sec","isM0","drawFun","oDiv1","oDiv2","oDiv3","jinNangId","getSymbol","glYield","price","yieldStr","parseFloat","setId","saledCount","query","activeTab","AuthorInfoPanel","PersonalDescriptionPanel","CommentList","JinNangPanel","DianJinPanel","CoursePanel","AudioPlay","EveryBanner","activeVideoIndex","$route","from","userDianJinRights","allRightList","mapGetters","changeVideo","$nextTick","dispatch","goodsId","getDianJinList","getHotJinNangList","limit","middleList","goto","route","getAdvert","router","find","$","getBuiltIn","uncurryThis","fails","$stringify","exec","numberToString","tester","low","hi","fix","match","string","prev","next","FORCED","stat","forced","replacer","space","arguments"],"mappings":"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","file":"js/chunk-dbd0f32c.91943099.js","sourcesContent":["export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EveryBanner.vue?vue&type=style&index=0&id=c45b7fea&lang=scss&scoped=true&\"","import axios from '@/assets/js/axios'\r\nimport Urls from '@/assets/js/Urls'\r\n\r\n/**\r\n * 根据查询条件获取点金列表\r\n * @param data\r\n */\r\nexport function getDianjinList(data, viewState) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/DianJin/Api/List`,\r\n method: 'post',\r\n data,\r\n headers: {\r\n 'Ykt-ViewState': viewState\r\n }\r\n })\r\n .then(result => {\r\n return result\r\n })\r\n .catch(() => null)\r\n}\r\n\r\n/**\r\n * 获取点金详情\r\n * @param {number} setId 点金id\r\n */\r\nexport function getDianJinDetail(dianjinId) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/DianJin/Api/Detail`,\r\n method: 'get',\r\n params: {\r\n id: dianjinId\r\n }\r\n })\r\n .then(data => {\r\n return data.result.code === 0 ? data.detail : null\r\n })\r\n .catch(() => null)\r\n}\r\n\r\n/**\r\n * 获取点金视频的信息\r\n * @param {number} videoIdentity 视频id\r\n */\r\nexport function getPlayInfo(videoIdentity) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/Resource/Api/PlayInfo`,\r\n method: 'get',\r\n params: {\r\n resourceIdentity: videoIdentity\r\n }\r\n })\r\n .then(data => {\r\n return data.result.code === 0 ? data.detail : null\r\n })\r\n .catch(() => null)\r\n}\r\n/**\r\n * 大咖获取点金列表\r\n * @param data\r\n */\r\nexport function authorGetPageList(data, viewState) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/dianjin/Auth/PageList`,\r\n method: 'post',\r\n data,\r\n headers: {\r\n 'Ykt-ViewState': viewState\r\n }\r\n })\r\n .then(result => {\r\n return result\r\n })\r\n .catch(() => null)\r\n}\r\n/**\r\n * 大咖获取统计数据\r\n * @param data\r\n */\r\nexport function getAuthorStatistics() {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/dianjin/Auth/GetAuthorStatistics`,\r\n method: 'get'\r\n })\r\n .then(result => {\r\n return result\r\n })\r\n .catch(() => null)\r\n}\r\n/**\r\n * 大咖发布点金\r\n * @param data\r\n */\r\nexport function authorPublish(data) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/dianjin/Auth/Publish`,\r\n method: 'post',\r\n data\r\n })\r\n .then(result => {\r\n return result\r\n })\r\n .catch(() => null)\r\n}\r\n\r\n/**\r\n * 大咖点金详情\r\n * @param data\r\n */\r\nexport function authorGetDetail(id) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/dianjin/Auth/GetDetail`,\r\n method: 'post',\r\n data: {\r\n id\r\n }\r\n })\r\n .then(result => {\r\n return result\r\n })\r\n .catch(() => null)\r\n}\r\n\r\n/**\r\n * 大咖点金删除\r\n * @param id\r\n */\r\nexport function authorRemove(id) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/dianjin/Auth/Remove`,\r\n method: 'post',\r\n data: {\r\n id\r\n }\r\n })\r\n .then(result => {\r\n return result\r\n })\r\n .catch(() => null)\r\n}\r\n\r\n/**\r\n * 大咖点金分页\r\n * @param data\r\n */\r\nexport function authorGetPage(data) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/dianjin/Auth/getPage`,\r\n method: 'post',\r\n data\r\n })\r\n .then(result => {\r\n return result\r\n })\r\n .catch(() => null)\r\n}\r\n\r\n/**\r\n * 大咖点金收费资格申请\r\n * @param id\r\n */\r\nexport function feeApply(data) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/dianjin/Auth/ChargeApply`,\r\n method: 'post',\r\n data\r\n })\r\n .then(result => {\r\n return result\r\n })\r\n .catch(() => null)\r\n}\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthorInfoPanel.vue?vue&type=style&index=0&id=7b5d2198&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BasePanel.vue?vue&type=style&index=0&id=df9afa20&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.commentsInfo && _vm.show)?_c('div',{staticClass:\"panel\"},[_c('a',{attrs:{\"id\":\"comm\",\"name\":\"comm\"}}),_c('div',{staticClass:\"panel-title\"},[_vm._v(\"评论(\"+_vm._s(_vm.commentsInfo.commentsCount)+\")\")]),_c('el-form',{staticClass:\"comment\",attrs:{\"label-width\":\"46px\"}},[_c('el-form-item',{attrs:{\"label\":\"评论\"}},[_c('el-input',{staticClass:\"comment-textarea\",attrs:{\"type\":\"textarea\",\"rows\":3,\"disabled\":_vm.disabled || _vm.disableComment,\"placeholder\":_vm.displayPlaceholder,\"maxlength\":300},model:{value:(_vm.comment),callback:function ($$v) {_vm.comment=$$v},expression:\"comment\"}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.replyId),expression:\"replyId\"}],ref:\"replyHead\",staticClass:\"reply-head\"},[_vm._v(\" 回复 \"+_vm._s(_vm.replyName)+\": \")])],1),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\",\"disabled\":_vm.disabled || _vm.disableComment,\"loading\":_vm.commentSubmitting},on:{\"click\":_vm.onSubmit}},[_vm._v(\"提交评论\")])],1)],1),_c('ul',{staticClass:\"comment-list\"},_vm._l((_vm.commentList),function(item,index){return _c('li',{key:item.id,staticClass:\"comment-item\"},[_c('div',{staticClass:\"avatar\",style:({ backgroundImage: (\"url(\" + (item.avatar) + \")\") })}),_c('div',{staticClass:\"comment-right\"},[_c('div',{staticClass:\"comment-container\"},[_c('div',{staticClass:\"nick-name\"},[_vm._v(_vm._s(item.nickname))]),_c('div',{staticClass:\"content\"},[_vm._v(_vm._s(item.content))]),_c('div',{staticClass:\"date\"},[_vm._v(\" \"+_vm._s(_vm.dayjs(item.createTime).format('YYYY-MM-DD HH:mm'))+\" \"),(_vm.userInfo && _vm.userInfo.userId === item.userId)?_c('span',{on:{\"click\":function($event){return _vm.delComment(item)}}},[_vm._v(\"删除\")]):_vm._e()]),_c('div',{staticClass:\"reply\",on:{\"click\":function($event){return _vm.reply(item.id, item.nickname)}}},[_vm._v(\"回复\")])]),(item.subComments)?_c('ul',{staticClass:\"sub-comments\"},[_vm._l((item.displaySubComments),function(subComment){return _c('li',{key:subComment.id,staticClass:\"sub-comment-item\"},[_c('div',{staticClass:\"nick-name\"},[_vm._v(\" \"+_vm._s(subComment.nickname)+\" \"),(subComment.parentComent)?[_vm._v(\"回复 \"),_c('span',[_vm._v(_vm._s(subComment.parentComent.nickname))])]:_vm._e()],2),_c('div',{staticClass:\"content\"},[_vm._v(_vm._s(subComment.content))]),_c('div',{staticClass:\"date\"},[_vm._v(\" \"+_vm._s(_vm.dayjs(subComment.createTime).format('YYYY-MM-DD HH:mm'))+\" \"),(_vm.userInfo && _vm.userInfo.userId === subComment.userId)?_c('span',{on:{\"click\":function($event){return _vm.delComment(subComment)}}},[_vm._v(\"删除\")]):_vm._e()]),_c('div',{staticClass:\"reply\",on:{\"click\":function($event){return _vm.reply(subComment.id, subComment.nickname)}}},[_vm._v(\" 回复 \")])])}),(item.surplusSubComments > 0)?_c('li',{staticClass:\"surplus-sub-comments\",on:{\"click\":function($event){return _vm.unfoldSubComments(index)}}},[_vm._v(\" 查看剩余 \"),_c('span',[_vm._v(_vm._s(item.surplusSubComments))]),_vm._v(\" 条回复 \")]):_vm._e()],2):_vm._e()])])}),0)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import axios from '@/assets/js/axios'\r\nimport Urls from '@/assets/js/Urls'\r\n/**\r\n * 创建评论\r\n * @param {{topicId: number, parentCommentId: number, content: string}} params\r\n * @return {*}\r\n */\r\nexport function createComments(params) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/Comments/Comments/CreateComments`,\r\n method: 'post',\r\n data: params\r\n })\r\n .then(data => {\r\n return data\r\n })\r\n .catch(() => null)\r\n}\r\n\r\n/**\r\n * 获取评论列表\r\n * @param topicId\r\n * @return {*}\r\n */\r\nexport function getComments(topicId) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/Comments/Comments/GetComments`,\r\n method: 'post',\r\n data: {\r\n topicId\r\n }\r\n })\r\n .then(data => data)\r\n .catch(() => null)\r\n}\r\n\r\n/**\r\n * 获取子评论\r\n * 分页获取直接评论下的所有子评论(子评论的下级评论也全部加载)\r\n * @param commentId\r\n * @return {*}\r\n */\r\nexport function getSubComments(commentId) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/Comments/Comments/GetSubComments`,\r\n method: 'post',\r\n data: {\r\n commentId\r\n }\r\n })\r\n .then(data => (data.result.code === 0 ? data.detail.list : []))\r\n .catch(() => null)\r\n}\r\nexport function deleteComment(commentId) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/Comments/Comments/DeleteComment`,\r\n method: 'post',\r\n data: { commentId: commentId }\r\n })\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommentList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommentList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CommentList.vue?vue&type=template&id=5eaac2d0&scoped=true&\"\nimport script from \"./CommentList.vue?vue&type=script&lang=js&\"\nexport * from \"./CommentList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CommentList.vue?vue&type=style&index=0&id=5eaac2d0&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5eaac2d0\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JinNangPanel.vue?vue&type=style&index=0&id=1cfb2b2e&lang=scss&scoped=true&\"","import axios from '@/assets/js/axios'\r\nimport Urls from '@/assets/js/Urls'\r\n\r\n/**\r\n * 获取广告banenr\r\n * @param data\r\n */\r\nexport function getAdvertisements(codes) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/Message/Activity/Activities`,\r\n method: 'get',\r\n params: {\r\n codes: codes\r\n }\r\n })\r\n .then(data => {\r\n return data.result.code === 0 ? data.detail : null\r\n })\r\n .catch(() => null)\r\n}\r\n\r\n/**\r\n * 获取热门课程\r\n * @param data\r\n */\r\nexport function getRecommendSetList(size) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/Course/Api/RecommendSetList`,\r\n method: 'get',\r\n params: {\r\n size: size\r\n }\r\n })\r\n .then(data => {\r\n return data.result.code === 0 ? data.detail : null\r\n })\r\n .catch(() => null)\r\n}\r\n\r\n/**\r\n * 获取锦囊\r\n * @param pageSize\r\n */\r\nexport function getSilkBagList(pageSize) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/JinNang/Data/Page`,\r\n method: 'get',\r\n params: {\r\n orderBy: 'desc',\r\n pageSize: pageSize\r\n }\r\n\r\n })\r\n .then(data => {\r\n return data.result.code === 0 ? data.detail : null\r\n })\r\n .catch(() => null)\r\n}\r\n\r\n/**\r\n * 获取锦囊\r\n * @param tag 1每日头条 2电视强档\r\n * @param limit 限制返回的数据个数\r\n */\r\nexport function getDianJinItems(tag, limit) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/DianJin/Api/GetDianJinItems\r\n`,\r\n method: 'get',\r\n params: {\r\n tag: tag,\r\n limit: limit\r\n }\r\n\r\n })\r\n .then(data => {\r\n return data.result.code === 0 ? data.detail : null\r\n })\r\n .catch(() => null)\r\n}\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CoursePanel.vue?vue&type=style&index=0&id=7ab878c6&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('base-panel',{staticClass:\"panel-wrapper\",attrs:{\"title\":_vm.title,\"hide-button\":true}},[_vm._t(\"default\",function(){return [_c('div',{staticClass:\"description\"},[_vm._v(\" \"+_vm._s(_vm.description)+\" \")])]})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PersonalDescriptionPanel.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PersonalDescriptionPanel.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PersonalDescriptionPanel.vue?vue&type=template&id=0bd7c639&scoped=true&\"\nimport script from \"./PersonalDescriptionPanel.vue?vue&type=script&lang=js&\"\nexport * from \"./PersonalDescriptionPanel.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PersonalDescriptionPanel.vue?vue&type=style&index=0&id=0bd7c639&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0bd7c639\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel\"},[(_vm.title)?_c('div',{staticClass:\"title\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \"),(!_vm.hideButton)?_c('div',{staticClass:\"more\",on:{\"click\":_vm.toMore}},[_vm._v(\" \"+_vm._s(_vm.buttonText)+\"> \")]):_vm._e()]):_vm._e(),_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BasePanel.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BasePanel.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BasePanel.vue?vue&type=template&id=df9afa20&scoped=true&\"\nimport script from \"./BasePanel.vue?vue&type=script&lang=js&\"\nexport * from \"./BasePanel.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BasePanel.vue?vue&type=style&index=0&id=df9afa20&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"df9afa20\",\n null\n \n)\n\nexport default component.exports","import axios from '@/assets/js/axios'\r\nimport Urls from '@/assets/js/Urls'\r\n\r\n/**\r\n * 获取大咖列表\r\n * @param data\r\n */\r\nexport function getAuthorList(data, viewState) {\r\n console.log(JSON.stringify(data))\r\n console.log(viewState)\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/Account/Author/Page`,\r\n method: 'post',\r\n data,\r\n headers: {\r\n 'Ykt-ViewState': viewState\r\n }\r\n })\r\n .then(result => {\r\n return result\r\n })\r\n .catch(() => null)\r\n}\r\n\r\n/**\r\n * 获取大咖锦囊\r\n * @param {number} setId 大咖id\r\n */\r\nexport function getJinNangList(data, viewState) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/JinNang/Data/Page`,\r\n method: 'get',\r\n data,\r\n headers: {\r\n 'Ykt-ViewState': viewState\r\n }\r\n })\r\n .then(data => {\r\n return data\r\n })\r\n .catch(() => null)\r\n}\r\n\r\n/**\r\n * 获取大咖课程\r\n * @param {object} 查询条件\r\n */\r\nexport function getCourseList(data) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/Course/Api/SetList`,\r\n method: 'post',\r\n data\r\n })\r\n .then(data => {\r\n return data.result.code === 0 ? data.detail : null\r\n })\r\n .catch(() => null)\r\n}\r\n\r\n/**\r\n * 获取大咖热卖锦囊\r\n */\r\nexport function getHotSaledJinNangList(data) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/JinNang/Data/TopSaleList?limit=8`,\r\n method: 'post',\r\n data\r\n })\r\n .then(data => {\r\n return data.result.code === 0 ? data.detail : null\r\n })\r\n .catch(() => null)\r\n}\r\n\r\n/**\r\n * 获取大咖详情\r\n * @param {number} setId 大咖id\r\n */\r\nexport function getAuthorDetail(authorId) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/Account/Author/Detail`,\r\n method: 'get',\r\n params: {\r\n authorId\r\n }\r\n })\r\n .then(data => {\r\n return data.result.code === 0 ? data.detail : null\r\n })\r\n .catch(() => null)\r\n}\r\n/**\r\n * 大咖申请提交\r\n */\r\nexport function upsertAuthor(data) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/account/auth/UpsertAuthor`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n/**\r\n * 发送修改密码的短信验证码\r\n */\r\nexport function SendChangePwdSmsAsync(phone) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/account/Auth/SendChangePwdSmsAsync`,\r\n method: 'POST',\r\n data: {\r\n phone: phone\r\n }\r\n })\r\n}\r\n\r\n/**\r\n * 修改密码的短信验证码校验\r\n */\r\nexport function ChangePwdSmsCodeCheck(phone, smsCode) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/account/Auth/ChangePwdSmsCodeCheck`,\r\n method: 'POST',\r\n data: {\r\n phone: phone,\r\n code: smsCode\r\n }\r\n })\r\n}\r\n\r\n/**\r\n * 设置密码\r\n */\r\nexport function SetPassWordSubmit(phone, smsCode, password) {\r\n return axios({\r\n url: `${Urls.DOMAIN_YKT}/account/Auth/SetAuthorPwd`,\r\n method: 'POST',\r\n data: {\r\n phone: phone,\r\n smsCode: smsCode,\r\n pwd: password\r\n }\r\n })\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('base-panel',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.dianJinList.length),expression:\"dianJinList.length\"}],staticClass:\"base-panel\",attrs:{\"title\":_vm.title},on:{\"toMore\":function($event){return _vm.redirectAuthorPage(_vm.dianJinList[0].authorInfo.authorId)}}},[_c('ul',{staticClass:\"dian-jins\"},_vm._l((_vm.dianJinList),function(item){return _c('li',{key:item.dianJinInfo.id,staticClass:\"dian-jin\"},[_c('router-link',{staticClass:\"dianjin-icon\",style:({ backgroundImage: (\"url(\" + (item.dianJinInfo.coverImageUrl) + \")\") }),attrs:{\"to\":(\"/dianjin/\" + (item.dianJinInfo.id))}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(\n item.dianJinInfo.type == 1\n ),expression:\"\\n item.dianJinInfo.type == 1\\n \"}],staticClass:\"dianjin-play-icon\"})]),_c('div',{staticClass:\"dianjin-right\"},[_c('router-link',{staticClass:\"name\",attrs:{\"to\":(\"/dianjin/\" + (item.dianJinInfo.id))}},[_vm._v(\" \"+_vm._s(item.dianJinInfo.title.length > 5 ? item.dianJinInfo.title.substring(0, 10) + '...' : item.dianJinInfo.title)+\" \")]),_c('div',{staticClass:\"date\"},[_vm._v(_vm._s(item.dianJinInfo.publishTimeDesc))])],1)],1)}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DianJinPanel.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DianJinPanel.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DianJinPanel.vue?vue&type=template&id=494f5fbd&scoped=true&\"\nimport script from \"./DianJinPanel.vue?vue&type=script&lang=js&\"\nexport * from \"./DianJinPanel.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DianJinPanel.vue?vue&type=style&index=0&id=494f5fbd&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"494f5fbd\",\n null\n \n)\n\nexport default component.exports","(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}));","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('base-panel',[_vm._t(\"default\",function(){return [_c('div',{staticClass:\"author-info\"},[_c('div',{staticClass:\"author-head\",style:({\n backgroundImage: (\"url(\" + (_vm.authorInfo.headPic) + \")\")\n })}),_c('div',{staticClass:\"author-name\"},[_vm._v(_vm._s(_vm.authorInfo.name))]),_c('div',{staticClass:\"author-type-name\"},[_vm._v(\" \"+_vm._s(_vm.authorInfo.typeName)+\" | \"+_vm._s(_vm.authorInfo.authorCompany)+\" \")]),_c('div',{staticClass:\"author-fans\"},[_vm._v(\"粉丝数 \"+_vm._s(_vm.authorInfo.followerNum))]),_vm._l((_vm.authorInfo.tagSkill),function(item,index){return _c('el-tag',{key:index,staticClass:\"skill-tag\"},[_vm._v(_vm._s(item))])}),_c('el-button',{staticClass:\"follow\",class:{ followed: _vm.isFollowed },attrs:{\"type\":\"primary\",\"loading\":_vm.following},on:{\"click\":function($event){return _vm.follow(_vm.isFollowed)}}})],2)]})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthorInfoPanel.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthorInfoPanel.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AuthorInfoPanel.vue?vue&type=template&id=7b5d2198&scoped=true&\"\nimport script from \"./AuthorInfoPanel.vue?vue&type=script&lang=js&\"\nexport * from \"./AuthorInfoPanel.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AuthorInfoPanel.vue?vue&type=style&index=0&id=7b5d2198&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7b5d2198\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DianJinDetail.vue?vue&type=style&index=0&id=4adc04ee&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"dianjin-detail\"},[_c('el-breadcrumb',{attrs:{\"separator-class\":\"el-icon-arrow-right\"}},[_c('el-breadcrumb-item',{attrs:{\"to\":{ path: '/' }}},[_vm._v(\"首页\")]),_c('el-breadcrumb-item',{attrs:{\"to\":{ path: '/dianjin' }}},[_vm._v(\"点金\")]),_c('el-breadcrumb-item',[_vm._v(\"点金详情\")])],1),(_vm.dianJinDetail)?[_c('div',{staticClass:\"dianjin-wrapper\"},[_c('div',{staticClass:\"dianjin-main-content\"},[_c('div',{staticClass:\"dianjin-content\"},[_c('div',{staticClass:\"dianjin-title\"},[_c('div',{staticClass:\"dianjin-name-title\"},[_c('span',[_vm._v(\" \"+_vm._s(_vm.dianJinDetail.authorInfo.name + ':' + _vm.dianJinDetail.dianJinInfo.title)+\" \")]),(!_vm.dianJinDetail.dianJinInfo.isFree && !_vm.isPermission)?_c('div',{staticClass:\"lock-icon\"}):_vm._e(),(!_vm.dianJinDetail.dianJinInfo.isFree && _vm.isPermission)?_c('div',{staticClass:\"unlock-icon\"}):_vm._e()]),_c('div',{staticClass:\"dianjin-date\"},[_vm._v(\" \"+_vm._s(_vm.dianJinDetail.dianJinInfo.publishTimeDesc)+\" \")])]),_c('div',{staticClass:\"dianjin-video\"},[(_vm.dianJinDetail.dianJinInfo.type === 1)?_c('div',{staticClass:\"video-part\"},[(!_vm.isPermission)?_c('div',{staticClass:\"cover-wrap\"},[_c('div',{staticClass:\"lock-icon\"}),_c('div',{staticClass:\"subscribe-btn\",on:{\"click\":_vm.goBuy}},[_vm._v(\"立即订阅\")]),_c('div',{staticClass:\"subscribe-font\"},[_vm._v(\"订阅后播放视频\")])]):_vm._e(),(!_vm.isPermission)?_c('video-player',{staticClass:\"video\",staticStyle:{\"opacity\":\"0.8\"},attrs:{\"coverUrl\":_vm.coverUrl,\"video-height\":\"480px\"}}):_vm._e(),(_vm.isPermission)?_c('video-player',{staticClass:\"video\",attrs:{\"playInfo\":_vm.playInfo,\"video-height\":\"480px\"}}):_vm._e()],1):_vm._e(),(_vm.dianJinDetail.dianJinInfo.type === 2)?_c('audio-play',{attrs:{\"playInfo\":_vm.playInfo,\"isPermission\":_vm.isPermission},on:{\"goBuy\":_vm.goBuy}}):_vm._e(),(_vm.dianJinDetail.dianJinInfo.type === 4)?_c('div',{staticClass:\"dianjin-words\"},[(_vm.isPermission)?_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.dianJinDetail.dianJinInfo.content)}}):_vm._e(),(!_vm.isPermission)?_c('div',{staticClass:\"backStyle\"}):_vm._e(),(!_vm.isPermission)?_c('div',{staticClass:\"cover-wrap\"},[_c('div',{staticClass:\"lock-icon\"}),_c('div',{staticClass:\"subscribe-btn\",on:{\"click\":_vm.goBuy}},[_vm._v(\"立即订阅\")]),_c('div',{staticClass:\"subscribe-font\"},[_vm._v(\"订阅后点击阅读全文\")])]):_vm._e()]):_vm._e()],1)]),_c('EveryBanner',{staticClass:\"dianjin-banner\",attrs:{\"codes\":\"pc_dianjin_detail\"}}),_c('comment-list',{attrs:{\"disabled\":!_vm.dianJinDetail.dianJinInfo.isFree &&\n !_vm.isAuthorSelf &&\n !_vm.hasRight(_vm.dianJinDetail.dianJinInfo.productId),\"comments-info\":_vm.dianJinDetail.commentsInfo}})],1),_c('div',{staticClass:\"dianjin-author-panel\"},[(_vm.dianJinDetail.authorInfo)?_c('author-info-panel',{attrs:{\"authorInfo\":_vm.dianJinDetail.authorInfo}}):_vm._e(),(_vm.dianJinDetail.authorInfo)?_c('personal-description-panel',{attrs:{\"description\":_vm.dianJinDetail.authorInfo.remark}}):_vm._e(),(_vm.jinNangList)?_c('jin-nang-panel',{attrs:{\"jinNangList\":_vm.jinNangList,\"title\":_vm.jinNangPanelTitle}}):_vm._e(),(_vm.dianJinList)?_c('dian-jin-panel',{attrs:{\"dianJinList\":_vm.dianJinList,\"title\":_vm.dianjinPanelTitle}}):_vm._e(),(_vm.courseList)?_c('course-panel',{attrs:{\"courseList\":_vm.courseList,\"title\":_vm.coursePanelTitle}}):_vm._e()],1)])]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"audio-wrap B_C11\"},[_c('lottie',{class:{lottiestyle : true, mask: !_vm.isPermission},attrs:{\"options\":_vm.defaultOptions,\"height\":160,\"width\":505},on:{\"animCreated\":_vm.handleAnimation}}),(!_vm.isPermission)?_c('div',{staticClass:\"cover-wrap\"},[_c('div',{staticClass:\"lock-icon\"}),_c('div',{staticClass:\"subscribe-btn S8 T5\",on:{\"click\":_vm.emitBuy}},[_vm._v(\"立即订阅\")]),_c('div',{staticClass:\"subscribe-font S4 T1\"},[_vm._v(\"订阅后点击播放语音\")])]):_vm._e(),(_vm.isPermission)?_c('video-player',{attrs:{\"play-info\":_vm.playInfo,\"video-height\":\"480px\"},on:{\"pause\":function($event){return _vm.pause()},\"play\":function($event){return _vm.play()},\"ended\":function($event){return _vm.ended()}}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"lavContainer\",style:(_vm.style)})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./lottie.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./lottie.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./lottie.vue?vue&type=template&id=3c796cc7&\"\nimport script from \"./lottie.vue?vue&type=script&lang=js&\"\nexport * from \"./lottie.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AudioPlay.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AudioPlay.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AudioPlay.vue?vue&type=template&id=f01a4320&scoped=true&\"\nimport script from \"./AudioPlay.vue?vue&type=script&lang=js&\"\nexport * from \"./AudioPlay.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AudioPlay.vue?vue&type=style&index=0&id=f01a4320&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f01a4320\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('base-panel',{staticClass:\"panel-wrapper\",attrs:{\"title\":_vm.title,\"hide-button\":true}},[_c('ul',{staticClass:\"jinnangs\"},_vm._l((_vm.jinNangList),function(item){return _c('router-link',{key:item.jinNangId,staticClass:\"jinnang\",attrs:{\"to\":(\"/jinnang/\" + (item.jinNangId))}},[_c('div',{staticClass:\"jinnang-yield\"},[_c('div',{staticClass:\"jinnang-yield-label\"},[_vm._v(\"总收益\")]),_c('div',{class:[\n 'jinnang-yield-value',\n _vm.getSymbol(item.glYield) > 0 ? 'c1' : 'c3'\n ]},[_vm._v(\" \"+_vm._s(item.glYield)+\" \")])]),_c('div',{staticClass:\"sale-info\"},[_c('div',{staticClass:\"jinnang-name\"},[_vm._v(_vm._s(item.title))]),_c('div',{staticClass:\"jinnang-price\"},[_vm._v(\"¥\"+_vm._s(item.price)+\"/月\")])])])}),1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JinNangPanel.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JinNangPanel.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./JinNangPanel.vue?vue&type=template&id=1cfb2b2e&scoped=true&\"\nimport script from \"./JinNangPanel.vue?vue&type=script&lang=js&\"\nexport * from \"./JinNangPanel.vue?vue&type=script&lang=js&\"\nimport style0 from \"./JinNangPanel.vue?vue&type=style&index=0&id=1cfb2b2e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1cfb2b2e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('base-panel',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.courseList.length),expression:\"courseList.length\"}],staticClass:\"base-panel\",attrs:{\"title\":_vm.title},on:{\"toMore\":function($event){return _vm.redirectAuthorPage(_vm.courseList[0].authorId)}}},[_c('ul',{staticClass:\"courses\"},_vm._l((_vm.courseList),function(item){return _c('li',{key:item.setId,staticClass:\"course\"},[_c('router-link',{staticClass:\"course-icon\",style:({ backgroundImage: (\"url(\" + (item.coverImagUrl) + \")\") }),attrs:{\"to\":(\"/course/\" + (item.setId))}}),_c('div',{staticClass:\"course-right\"},[_c('router-link',{staticClass:\"name\",attrs:{\"to\":(\"/course/\" + (item.setId))}},[_vm._v(\" \"+_vm._s(item.title.length > 10 ? item.title.substring(0, 10) + '...' : item.title))]),_c('div',{staticClass:\"bottom\"},[_c('div',{staticClass:\"course-sales\"},[_vm._v(\"¥\"+_vm._s(item.price)+\"/套\")]),_c('div',{staticClass:\"people-buy-count\"},[_vm._v(_vm._s(item.saledCount)+\"人购买\")])])],1)],1)}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CoursePanel.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CoursePanel.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CoursePanel.vue?vue&type=template&id=7ab878c6&scoped=true&\"\nimport script from \"./CoursePanel.vue?vue&type=script&lang=js&\"\nexport * from \"./CoursePanel.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CoursePanel.vue?vue&type=style&index=0&id=7ab878c6&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7ab878c6\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DianJinDetail.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DianJinDetail.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DianJinDetail.vue?vue&type=template&id=4adc04ee&scoped=true&\"\nimport script from \"./DianJinDetail.vue?vue&type=script&lang=js&\"\nexport * from \"./DianJinDetail.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DianJinDetail.vue?vue&type=style&index=0&id=4adc04ee&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4adc04ee\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AudioPlay.vue?vue&type=style&index=0&id=f01a4320&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.middleList.length>0)?_c('div',{staticClass:\"sub-banner\",style:({\n backgroundImage: (\"url(\" + (_vm.middleList[0].imageUrl) + \")\"),\n width:_vm.width,\n height:_vm.height\n }),on:{\"click\":function($event){return _vm.goto(_vm.middleList[0].route)}}}):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EveryBanner.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EveryBanner.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EveryBanner.vue?vue&type=template&id=c45b7fea&scoped=true&\"\nimport script from \"./EveryBanner.vue?vue&type=script&lang=js&\"\nexport * from \"./EveryBanner.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EveryBanner.vue?vue&type=style&index=0&id=c45b7fea&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c45b7fea\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PersonalDescriptionPanel.vue?vue&type=style&index=0&id=0bd7c639&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommentList.vue?vue&type=style&index=0&id=5eaac2d0&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DianJinPanel.vue?vue&type=style&index=0&id=494f5fbd&lang=scss&scoped=true&\"","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\n\nvar Array = global.Array;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar fix = function (match, offset, string) {\n var prev = charAt(string, offset - 1);\n var next = charAt(string, offset + 1);\n if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n } return match;\n};\n\nvar FORCED = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n // https://github.com/tc39/proposal-well-formed-stringify\n $({ target: 'JSON', stat: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n for (var i = 0, l = arguments.length, args = Array(l); i < l; i++) args[i] = arguments[i];\n var result = apply($stringify, null, args);\n return typeof result == 'string' ? replace(result, tester, fix) : result;\n }\n });\n}\n"],"sourceRoot":""}