{"version":3,"sources":["webpack:///./node_modules/dayjs/plugin/utc.js","webpack:///./src/api/permission.js","webpack:///./node_modules/core-js/internals/string-repeat.js","webpack:///./src/views/comment/components/ShrinkCommentItem.vue?f2bb","webpack:///./src/static/ic_close.png","webpack:///./src/views/comment/components/CommentItem.vue?015e","webpack:///src/views/comment/components/CommentItem.vue","webpack:///./src/views/comment/components/CommentItem.vue?cceb","webpack:///./src/views/comment/components/CommentItem.vue","webpack:///./node_modules/core-js/modules/es.string.iterator.js","webpack:///./node_modules/core-js/internals/this-number-value.js","webpack:///./node_modules/core-js/internals/array-from.js","webpack:///./src/views/comment/CommentDetail.vue?4394","webpack:///./src/components/ViewPoint/ViewPoint.vue?44dc","webpack:///./src/views/comment/components/CommentItem.vue?9ec5","webpack:///./src/components/Stock/Stock.vue?beca","webpack:///./src/views/detail/Detail.vue?83dc","webpack:///./src/components/ViewPoint/ViewPoint.vue?40c9","webpack:///src/components/ViewPoint/ViewPoint.vue","webpack:///./src/components/ViewPoint/ViewPoint.vue?9d0c","webpack:///./src/components/ViewPoint/ViewPoint.vue","webpack:///./src/components/AudioPlay/AudioPlay.vue?6b3c","webpack:///src/components/AudioPlay/AudioPlay.vue","webpack:///./src/components/AudioPlay/AudioPlay.vue?9c19","webpack:///./src/components/AudioPlay/AudioPlay.vue","webpack:///./src/components/Stock/Stock.vue?ac54","webpack:///src/components/Stock/Stock.vue","webpack:///./src/components/Stock/Stock.vue?d940","webpack:///./src/components/Stock/Stock.vue","webpack:///src/views/detail/Detail.vue","webpack:///./src/views/detail/Detail.vue?3bfe","webpack:///./src/views/detail/Detail.vue","webpack:///./src/views/comment/components/CommentInputPopup.vue?f718","webpack:///./src/views/detail/Detail.vue?9edc","webpack:///./node_modules/vant/es/popup/style/index.js","webpack:///./node_modules/vue-lottie/src/lottie.vue?4671","webpack:///node_modules/vue-lottie/src/lottie.vue","webpack:///./node_modules/vue-lottie/src/lottie.vue?a7c5","webpack:///./node_modules/vue-lottie/src/lottie.vue","webpack:///./node_modules/lottie-web/build/player/lottie.js","webpack:///./src/views/comment/CommentDetail.vue?e0e7","webpack:///src/views/comment/CommentDetail.vue","webpack:///./src/views/comment/CommentDetail.vue?cddd","webpack:///./src/views/comment/CommentDetail.vue","webpack:///./src/views/comment/Comment.vue?0aef","webpack:///./src/views/comment/components/ShrinkCommentItem.vue?a946","webpack:///src/views/comment/components/ShrinkCommentItem.vue","webpack:///./src/views/comment/components/ShrinkCommentItem.vue?4624","webpack:///./src/views/comment/components/ShrinkCommentItem.vue","webpack:///./src/views/comment/components/CommentInputPopup.vue?beaf","webpack:///src/views/comment/components/CommentInputPopup.vue","webpack:///./src/views/comment/components/CommentInputPopup.vue?aae9","webpack:///./src/views/comment/components/CommentInputPopup.vue","webpack:///src/views/comment/Comment.vue","webpack:///./src/views/comment/Comment.vue?2013","webpack:///./src/views/comment/Comment.vue","webpack:///./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///./node_modules/core-js/modules/es.array.from.js","webpack:///./src/views/comment/Comment.vue?3515","webpack:///./node_modules/core-js/modules/es.number.to-fixed.js","webpack:///./src/views/video/VideoMask.vue?bc42","webpack:///./node_modules/vant/es/popup/index.js","webpack:///./src/views/video/VideoMask.vue?441a","webpack:///src/views/video/VideoMask.vue","webpack:///./src/views/video/VideoMask.vue?832c","webpack:///./src/views/video/VideoMask.vue","webpack:///./src/components/AudioPlay/AudioPlay.vue?161a","webpack:///./node_modules/core-js/modules/es.array.slice.js"],"names":["t","i","module","exports","this","e","s","prototype","utc","date","args","arguments","toDate","locale","$L","add","utcOffset","local","f","parse","$u","$utils","u","$offset","call","n","init","$d","$y","getUTCFullYear","$M","getUTCMonth","$D","getUTCDate","$W","getUTCDay","$H","getUTCHours","$m","getUTCMinutes","$s","getUTCSeconds","$ms","getUTCMilliseconds","Math","abs","getTimezoneOffset","$x","$localOffset","o","format","valueOf","Date","isUTC","toISOString","toString","toUTCString","r","a","diff","permissions","Vue","observable","data","checkPermission","productId","callback","window","goods","permissionCallback","result","indexOf","concat","hasPermission","toInteger","requireObjectCoercible","repeat","count","str","String","Infinity","RangeError","render","_vm","_h","$createElement","_c","_self","on","$event","onReplyEvent","item","staticClass","attrs","avatar","_e","_v","_s","nickname","class","commentColor","content","parentComent","parentCommentColor","createTime","staticStyle","replyTitle","stopPropagation","onDeleteEvent","staticRenderFns","name","props","type","Object","default","showReplyCount","Boolean","showDelete","showOwner","computed","replyCount","isAuthor","canDelete","methods","dayjs","$emit","title","message","confirmButtonColor","cancelButtonColor","mounted","component","charAt","InternalStateModule","defineIterator","STRING_ITERATOR","setInternalState","set","getInternalState","getterFor","iterated","string","index","point","state","length","value","undefined","done","classof","TypeError","bind","toObject","callWithSafeIterationClosing","isArrayIteratorMethod","toLength","createProperty","getIteratorMethod","arrayLike","step","iterator","next","O","C","Array","argumentsLength","mapfn","mapping","iteratorMethod","ref","dianJinInfo","goManager","authorInfo","headPic","getDesc","isFollowed","follow","isPermission","domProps","goBuy","playData","duration","playURL","isLogin","style","skinLayout","videoHeight","startPlay","stocks","stockListCode","RelatesData","handleId","commentsInfo","id","showCommentDetail","isFavored","onCloseEvent","commentStyle","onScrollEvent","currComment","articleList","_l","key","goto","uri","publishTime","backgroundImage","components","console","log","urL","util","defaultOptions","handleAnimation","isPlay","playPause","currentTime","_m","totalTime","emitBuy","audioFileUrl","lottie","animationSpeed","anim","watch","audioLength","transTime","created","$onResume","$onPause","audio","document","querySelector","pause","stop","play","ontimeupdate","drawFun","setTimeout","getTimeFun","getElementById","width","processWidth","left","minute","sec","isM0","oDiv1","oDiv2","oDiv3","addEventListener","stockList","gotoStocks","stockId","handleCode","conversion","stockMSG","Value","extends","list","includes","addZxg","handler","getStockPrice","queryStock","val","deep","immediate","code","slice","ym","goodsIds","onSuccess","onFail","gotoStock","stockIds","getValue","forEach","element","percentValue","isNaN","fieldValue","extendsObj","fieldsRule","others","push","resultArray","Name","Code","goodsId","divisor","parseFloat","toFixed","VideoMask","AudioPlay","ViewPoint","Stock","Comment","CommentDetail","VueAliplayer","appInfo","weChatAppId","weChatAppKey","isPlayed","onscroll","updateMaskPosition","innerWidth","innerHeight","getTime","lastOrientationChangeTime","orientation","scrollBy","innerH","pageId","bodyElm","body","overflow","videoHeightStyle","height","isFree","resourceIdentity","keys","desc","authInfo","typeName","authorCompany","publishTimeDesc","isAvailable","statusPading","marginTop","bottom","commentHeight","isMaskShowFix","setWeChatAppInfo","requestviewPointFun","requestRelatesFun","handleContent","HANDLE_HREF","url","eventId","eventData","dom","from","test","href","requestfollow","authorid","authorId","payUrl","$toast","updateVideoMask","showMenuItems","menuItems","factory","root","svgNS","locationHref","initialDefaultFrame","subframeEnabled","expressionsPlugin","isSafari","navigator","userAgent","cachedColors","bmRnd","bmPow","pow","bmSqrt","sqrt","bmFloor","floor","bmMax","max","bmMin","min","BMMath","ProjectInterface","propertyNames","len","random","tOfVal","absArr","createSizedArray","defaultCurveSegments","degToRads","PI","roundCorner","roundValues","flag","round","styleDiv","position","top","display","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","frameMultiplier","direction","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","target","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","_count","HSVtoRGB","h","v","g","b","p","q","RGBtoHSV","d","addSaturationToRGB","color","offset","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","hex","colorMap","BaseEvent","triggerEvent","eventName","_cbs","removeEventListener","splice","createTypedArray","createRegularArray","arr","createTypedArrayFactory","Float32Array","Int16Array","Uint8ClampedArray","apply","createNS","createElementNS","createTag","createElement","DynamicPropertyContainer","addDynamicProperty","prop","dynamicProperties","container","_isAnimated","iterateDynamicProperties","_mdf","initDynamicPropertyContainer","getBlendMode","blendModeEnums","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","mode","Matrix","_cos","cos","_sin","sin","_tan","tan","_rnd","reset","rotate","angle","mCos","mSin","_t","rotateX","rotateY","rotateZ","shear","sx","sy","skew","ax","ay","skewFromAxis","scale","sz","setTransform","c","j","k","l","m","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","chunks","digits","rngname","startdenom","significance","mask","seedrandom","seed","options","entropy","shortseed","mixkey","flatten","tostring","autoseed","arc4","ARC4","prng","int32","quick","double","S","pass","is_math_call","copy","keylen","me","obj","depth","typ","smear","stringseed","charCodeAt","randomBytes","out","Uint8Array","crypto","msCrypto","getRandomValues","browser","plugins","screen","fromCharCode","BezierFactory","ob","getBezierEasing","beziers","nm","replace","bezEasing","BezierEasing","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","A","aA1","aA2","B","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","newtonRaphsonIterate","aGuessT","currentSlope","points","_mSampleValues","_precomputed","get","mY1","mY2","_precompute","_getTForX","_calcSampleValues","mSampleValues","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope","extendPrototype","sources","destination","sourcePrototype","attr","hasOwnProperty","getDescriptor","object","getOwnPropertyDescriptor","createProxyFunction","ProxyFunction","bezFunction","pointOnLine2D","x1","y1","x2","y2","x3","y3","det1","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","getBezierLength","pt4","ptCoord","perc","ptDistance","curveSegments","addedLength","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","timeToCall","clearTimeout","bez","dataFunctionManager","completeLayers","layers","comps","fontManager","layerData","jLen","kLen","completed","tt","td","hasMask","maskProps","masksProperties","convertPathsToAbsoluteValues","findCompLayers","refId","completeShapes","shapes","completeText","__used","JSON","stringify","ks","it","path","checkVersion","minimum","animVersionString","animVersion","split","checkText","minimumVersion","updateTextLayer","textLayer","documentData","iterateLayers","animationData","assets","checkChars","chars","pathData","paths","__converted","checkColors","iterateShapes","checkShapes","completeClosingShapes","cl","completeData","__complete","singleShape","moduleOb","dataManager","getFontProperties","fontData","styleName","styles","fStyle","fWeight","toLowerCase","weight","FontManager","maxWaitingTime","emptyChar","w","size","combinedCharacters","trimFontOptions","font","familyArray","enabledFamilies","join","setUpNode","family","parentNode","fontFamily","node","innerText","fontSize","fontVariant","fontStyle","fontWeight","letterSpacing","appendChild","offsetWidth","parent","checkLoadedFonts","fonts","loadedCount","loaded","fOrigin","origin","monoCase","sansCase","removeChild","now","initTime","checkLoadedFontsBinded","setIsLoadedBinded","createHelper","def","tHelper","fontProps","setAttribute","fFamily","textContent","fClass","tCanvasHelper","getContext","addFonts","defs","isLoaded","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","fPath","querySelectorAll","rel","src","sc","helper","cache","addChars","found","ch","getCharData","char","warn","_warned","measureText","fontName","getFontByName","doubleSize","getComputedTextLength","singleSize","fName","getCombinedCharacterCodes","setIsLoaded","Font","typekitLoaded","fontPrototype","PropertyFactory","initFrame","mathAbs","interpolateValue","frameNum","caching","newValue","offsetTime","propType","pv","keyData","nextKeyData","fnc","iterationIndex","lastIndex","keyframes","endValue","nextKeyTime","keyTime","to","ti","ind","__fnct","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quatStart","createQuaternion","quatEnd","time","quaternionToEuler","slerp","constructor","omega","cosom","sinom","scale0","scale1","az","aw","bx","by","bz","bw","acos","quat","qx","qy","qz","qw","heading","atan2","attitude","asin","bank","values","c3","s1","s2","s3","getValueAtCurrentTime","comp","renderedFrame","endTime","_caching","renderResult","setVValue","multipliedValue","mult","processEffectsSequence","elem","globalData","frameId","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","ValueProperty","vel","MultiDimensionalProperty","KeyframedValueProperty","st","KeyframedMultidimensionalProperty","arrLen","getProp","TransformPropertyFactory","defaultVector","applyToMatrix","mat","sk","sa","rz","ry","rx","or","px","py","pz","processKeys","forceRender","_isDirty","precalculateMatrix","frameRate","pre","appliedTransformations","autoOriented","v1","v2","getValueAtTime","autoOrient","_addDynamicProperty","TransformProperty","getTransformProperty","ShapePath","_maxLength","setPathData","setLength","pointPool","doubleArrayLength","setXYAt","pos","setTripleAt","vX","vY","oX","oY","iX","iY","reverse","newPath","vertices","outPoints","inPoints","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","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","copies","ceil","group","ix","reloadShapes","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","op","comparePoints","buildShapeString","pathNodes","_o","_i","shapeString","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","resume","setRate","rateValue","createAudio","assetPath","Howl","isPlaying","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","ImagePreloader","proxyImage","canvas","ctx","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","imagesLoadedCb","getAssetsPath","assetData","assetsPath","originalPath","imagePath","testImageLoaded","img","intervalId","setInterval","box","getBBox","_imageLoaded","clearInterval","createImageData","setAttributeNS","_elementHelper","append","createImgData","crossOrigin","loadAssets","cb","images","_createImageData","setPath","setAssetsPath","getImage","destroy","setCacheType","elementHelper","ImagePreloaderFactory","featureSupport","maskType","filtersFactory","createFilter","filId","fil","createAlphaToLuminanceFilter","feColorMatrix","assetLoader","formatResponse","xhr","response","responseText","loadAsset","errorCallback","XMLHttpRequest","open","responseType","err","send","onreadystatechange","readyState","status","load","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","rot","atan","update","updated","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","text","charCode","charactersArray","substr","newLineFlag","charData","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","textProperty","easer","tot","newCharsFlag","poolFactory","initialLength","_create","_release","pooling","create","cloned","shapeCollection","BaseRenderer","SVGRenderer","animationItem","config","svgElement","ariaLabel","titleElement","titleId","description","descElement","descId","maskElement","layerElement","renderConfig","preserveAspectRatio","imagePreserveAspectRatio","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","Error","AudioElement","buildAllItems","includeLayers","newLayers","setProjectInterface","pInterface","projectInterface","initItems","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","searchExtraCompositions","xt","initExpressions","registerComposition","setupGlobalData","animData","fontsContainer","getAssetData","imageLoader","imagePreloader","audioController","fr","compSize","NullElement","SVGShapeElement","SVGTextLottieElement","IImageElement","SVGCompElement","ISolidElement","configAnimation","maskId","updateContainerSize","appendElementInPos","setMatte","checkParenting","renderFrame","currentFrame","prepareFrame","getBaseElement","nextElement","insertBefore","hide","show","CVShapeElement","CVTextElement","CVImageElement","CVCompElement","CVSolidElement","ctxTransform","cProps","cTr","trProps","canvasContext","ctxOpacity","globalAlpha","cO","restore","save","actionFlag","cArrPos","duplicate","saved","savedOp","blendMode","popped","containerStyle","mozTransformOrigin","transformCanvas","isDashed","elementWidth","elementHeight","elementRel","animationRel","offsetHeight","par","fillType","beginPath","closePath","clip","clearRect","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","tmpDOMElement","getThreeDContainerByPos","HShapeElement","HTextElement","HCameraElement","HImageElement","HCompElement","HSolidElement","startPos","endPos","perspectiveElem","createThreeDContainer","center","webkitTransform","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","svg","setup","cWidth","cHeight","webkitPerspective","perspective","floatingContainer","isFirstFrame","finalMat","finalTransform","mProp","getMaskelement","pathString","pathShapeValue","initHierarchy","_isParent","prepareProperties","isVisible","initTransform","_matMdf","_opMdf","ao","renderTransform","globalToLocal","transforms","ptNew","initRenderable","isInRange","hidden","isTransparent","renderableComponents","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","gf","cst","opacityId","opFill","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","tm","_placeholder","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","lcEnum","ljEnum","searchProcessedElement","addProcessedElement","textAnimator","buildNewText","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","lineNumber","buildColor","colorData","emptyProp","timeRemapped","setElements","elems","getElements","destroyElements","pr","volumeValue","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","lc","lj","ml","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","shapeProperty","fn","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","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","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","animation","isPaused","subtractPlayingCount","registerAnimation","AnimationItem","setupAnimation","setData","getRegisteredAnimations","lenAnims","animations","addPlayingCount","activate","loadAnimation","params","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","animType","rendererSettings","parseInt","autoloadSegments","initialSegment","lastIndexOf","fileName","trigger","wrapperAttributes","attributes","getNamedItem","prerender","loadNextSegment","shift","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","updaFrameModifier","waitForFontsLoaded","error","triggerConfigError","gotoFrame","setSubframe","triggerRenderFrameError","setCurrentRawFrameValue","frameModifier","goToAndPlay","nextValue","_isComplete","checkSegments","adjustSegment","setSegment","end","pendingFrame","playSegments","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onComplete","onSegmentStart","onDestroy","getPath","getDuration","onError","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","ExpressionManager","$bm_isInstanceOfArray","isNumerable","tOfV","Number","$bm_neg","tOfA","lenA","retArr","easeInBez","easeOutBez","easeInOutBez","sum","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","frames","fps","timeToFrames","seedRandom","randSeed","substring","posterizeTime","framesPerSecond","hasParent","executeExpression","_value","frameExpressionId","expressionHelpers","searchExpressions","_cachingAtTime","getSpeedAtTime","delta","speed","getStaticValueAtTime","setGroupProperty","propertyGroup","durationFlag","cycleDuration","firstKeyFrame","ret","lastKeyFrame","initV","endV","current","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","endFrame","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","anchor","skewAxis","rotationZ","rotationY","rotationX","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","contentsInterfaceFactory","interfaces","numProperties","transformInterface","transformInterfaceFactory","cix","np","ExpressionPropertyInterface","_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","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","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","effectItem","GroupEffect","getValueProxy","total","propertyGetTextProp","TextExpressionSelectorPropFactory","eff","setLocationHref","setSubframeRendering","setQuality","inBrowser","installPlugin","plugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","variable","vars","queryString","pair","decodeURIComponent","__getFactory","version","scripts","myScript","subComments","comment","userId","bottomClass","currentComment","onInputEvent","onBlurEvent","onCommitEvent","CommentItem","CommentInput","isShowAll","getSubCommentsList","commitComments","$refs","startInput","deleteComments","then","commentCount","videoType","commentsCount","comments","getComponent","tag","onShowAllEvent","showPopup","subComment","model","$$v","onFocusEvent","showAd","AdTip","showPupInput","ShrinkCommentItem","CommentInputPopup","componentName","getCommentLists","oldValue","commitCommentFunc","anObject","iteratorClose","ENTRIES","$","checkCorrectnessOfIteration","INCORRECT_ITERATION","iterable","stat","forced","thisNumberValue","fails","nativeToFixed","acc","FORCED","proto","fractionDigits","number","fractDigits","sign","multiply","divide","dataToString","_createNamespace","createComponent","bem","mixins","closeable","transition","safeAreaInsetBottom","closeIcon","closeIconPosition","overlay","closeOnClickOverlay","beforeCreate","_this","createEmitter","event","onClick","onOpened","onClosed","onClickCloseIcon","close","_bem","isCenter","transitionName","transitionAppear","slots","getWaterMark","isObject","isArray","toAbsoluteIndex","toIndexedObject","wellKnownSymbol","arrayMethodHasSpeciesSupport","arrayMethodUsesToLength","HAS_SPECIES_SUPPORT","USES_TO_LENGTH","ACCESSORS","SPECIES","nativeSlice","Constructor","fin"],"mappings":"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","file":"js/chunk-7172db5c.5741390f.js","sourcesContent":["!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):t.dayjs_plugin_utc=i()}(this,function(){\"use strict\";return function(t,i,e){var s=i.prototype;e.utc=function(t){return new i({date:t,utc:!0,args:arguments})},s.utc=function(t){var i=e(this.toDate(),{locale:this.$L,utc:!0});return t?i.add(this.utcOffset(),\"minute\"):i},s.local=function(){return e(this.toDate(),{locale:this.$L,utc:!1})};var f=s.parse;s.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),f.call(this,t)};var n=s.init;s.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else n.call(this)};var u=s.utcOffset;s.utcOffset=function(t,i){var e=this.$utils().u;if(e(t))return this.$u?0:e(this.$offset)?u.call(this):this.$offset;var s=Math.abs(t)<=16?60*t:t,f=this;if(i)return f.$offset=s,f.$u=0===t,f;if(0!==t){var n=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(f=this.local().add(s+n,\"minute\")).$offset=s,f.$x.$localOffset=n}else f=this.utc();return f};var o=s.format;s.format=function(t){var i=t||(this.$u?\"YYYY-MM-DDTHH:mm:ss[Z]\":\"\");return o.call(this,i)},s.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||(new Date).getTimezoneOffset());return this.$d.valueOf()-6e4*t},s.isUTC=function(){return!!this.$u},s.toISOString=function(){return this.toDate().toISOString()},s.toString=function(){return this.toDate().toUTCString()};var r=s.toDate;s.toDate=function(t){return\"s\"===t&&this.$offset?e(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\")).toDate():r.call(this)};var a=s.diff;s.diff=function(t,i,s){if(t&&this.$u===t.$u)return a.call(this,t,i,s);var f=this.local(),n=e(t).local();return a.call(f,n,i,s)}}});\n","import Vue from 'vue'\r\n\r\nexport var permissions = Vue.observable({\r\n data: []\r\n})\r\n\r\nexport function checkPermission(productId,callback) {\r\n if (!window.goods) return\r\n window.permissionCallback = (result) => {\r\n if (result === true && permissions.data.indexOf(productId) === -1) {\r\n permissions.data = permissions.data.concat(productId)\r\n if(callback){\r\n callback()\r\n }\r\n }\r\n };\r\n window.goods.checkPermission(productId, 'permissionCallback')\r\n}\r\n\r\n\r\nexport function hasPermission(productId) {\r\n return permissions.data.indexOf(productId) !== -1\r\n}\r\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShrinkCommentItem.vue?vue&type=style&index=0&id=b210533c&scoped=true&lang=scss&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAABS2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzggNzkuMTU5ODI0LCAyMDE2LzA5LzE0LTAxOjA5OjAxICAgICAgICAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIi8+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgo8P3hwYWNrZXQgZW5kPSJyIj8+IEmuOgAAAStJREFUSIm11z1OwzAUAOCP0IWVqj1Cl3IGpLICYoLzMZeNn5Veor1Eq3IGhiRSFSWxnThvtC1/8s97sq9Wq9UN3vCFP9PGLZ6xneEV79jjAaeJ0AV+cQcFfnCoGnbVgCnRA74LnJUrPWA9Ad5ENzgXVedxIrwNPVFudR258U60CefEe9E2OAceRLvgMXgU2gcPwRfVmCAagmt8E4HX6DoGjYFVE/ThyWgs3IcPQmEWCV/iNbSr2pPRVLgNNwQlfquzRyrcPNPBFS4FbrtIMak2Cu66vaFUGwWHUmYQHoJj8zQZ74NTi0MS3gUPrUjReBs8uAym4E14LBqNX8LLTGgUXsNL5cshFxrEC8wbaO7fRBs+L/DYQI8Z0S78aYYPXONT+auYKk64xwu2/8tvnxC/XFHrAAAAAElFTkSuQmCC\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{on:{\"click\":function($event){return _vm.onReplyEvent(_vm.item)}}},[_c('div',{staticClass:\"item-container\"},[_c('div',{staticClass:\"avatar-container\"},[_c('img',{staticClass:\"item-avatar\",attrs:{\"src\":_vm.item.avatar}}),(_vm.item.isAuthor)?_c('img',{staticClass:\"icon_header_v\",attrs:{\"src\":require(\"@/static/ic_v_log.png\")}}):_vm._e()]),_c('div',{staticClass:\"right-continer\"},[_c('div',{staticClass:\"S8 T1 title-container\"},[_vm._v(\" \"+_vm._s(_vm.item.nickname)+\" \"),(_vm.showOwner)?_c('span',{staticClass:\"item-owner C5 S2 B_C6\"},[_vm._v(\" 楼主 \")]):_vm._e()]),_c('div',{staticClass:\"S8 item-comment\",class:_vm.commentColor},[_vm._v(\" \"+_vm._s(_vm.item.content)+\" \"),(_vm.item.parentComent)?_c('span',[_c('span',{staticClass:\"T1\"},[_vm._v(\" // \")]),_c('span',{staticClass:\"C5\"},[_vm._v(_vm._s('@' + _vm.item.parentComent.nickname + ':'))]),_c('span',{class:_vm.parentCommentColor},[_vm._v(_vm._s(_vm.item.parentComent.content))])]):_vm._e()]),_c('div',{staticClass:\"timer-container\"},[_c('div',{staticClass:\"S4 T3\"},[_vm._v(\" \"+_vm._s(_vm.item.createTime)+\" \")]),_c('div',{staticClass:\"item-replay\",staticStyle:{\"padding\":\"0 5px\"}},[_c('div',{staticClass:\"S4 T1\"},[_vm._v(_vm._s(_vm.replyTitle))])])]),(_vm.canDelete)?_c('div',{staticClass:\"delete-container\",on:{\"click\":function($event){$event.stopPropagation();return _vm.onDeleteEvent(_vm.item)}}},[_c('div',{staticClass:\"btn-delete S2 T1\"},[_vm._v(\"删除\")])]):_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--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommentItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommentItem.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CommentItem.vue?vue&type=template&id=59cc880c&scoped=true&\"\nimport script from \"./CommentItem.vue?vue&type=script&lang=js&\"\nexport * from \"./CommentItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CommentItem.vue?vue&type=style&index=0&id=59cc880c&scoped=true&lang=css&\"\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 \"59cc880c\",\n null\n \n)\n\nexport default component.exports","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommentDetail.vue?vue&type=style&index=0&id=091af418&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ViewPoint.vue?vue&type=style&index=0&id=2d433b14&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommentItem.vue?vue&type=style&index=0&id=59cc880c&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Stock.vue?vue&type=style&index=0&id=cba5a33c&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page\"},[(_vm.authorInfo)?_c('div',{ref:\"container\",staticClass:\"page-container\",attrs:{\"autoplay\":\"autoplay\"}},[_c('div',{staticClass:\"L2\",staticStyle:{\"height\":\"1px\",\"position\":\"fixed\",\"width\":\"100%\",\"transform\":\"scaleY(0.5)\"}}),_c('div',{staticClass:\"title S14 T1\"},[_vm._v(_vm._s(_vm.dianJinInfo.title))]),_c('div',{staticClass:\"head\"},[_c('div',{staticClass:\"avatarWrap marginL30\",on:{\"click\":function($event){return _vm.goManager()}}},[_c('img',{staticClass:\"avatar\",attrs:{\"src\":_vm.authorInfo.headPic,\"alt\":\"\"}}),_c('img',{staticClass:\"log\",attrs:{\"src\":require(\"../../static/ic_v_log.png\"),\"alt\":\"\"}})]),_c('div',{staticClass:\"row1\",on:{\"click\":function($event){return _vm.goManager()}}},[_c('div',{staticClass:\"S8 T1\"},[_vm._v(_vm._s(_vm.authorInfo.name))]),_c('div',{staticClass:\"S4 T3 desc\"},[_vm._v(_vm._s(_vm.getDesc))])]),_c('div',{staticClass:\"follow S5 C5\",class:_vm.authorInfo.isFollowed === 1 ? 'followed' : '',on:{\"click\":function($event){return _vm.follow()}}},[_c('span',[_vm._v(_vm._s(_vm.authorInfo.isFollowed === 1 ? '已关注' : '+关注'))])])]),_c('div',{staticClass:\"L2 headDiv\",staticStyle:{\"height\":\"1px\",\"width\":\"100%\",\"transform\":\"scaleY(0.5)\"}}),(_vm.type === 4)?_c('div',{staticClass:\"ariticle-wrap S10 T1\",class:{ 'ariticle-hidden': !_vm.isPermission }},[_c('div',{staticClass:\"ariticle-content s10 t1\",domProps:{\"innerHTML\":_vm._s(_vm.dianJinInfo.content)}}),(!_vm.isPermission)?_c('div',{staticClass:\"article-cover B_C1\"},[_c('div',{staticClass:\"subscribe-font S4 T1\"},[_vm._v(\"订阅后阅读全文\")]),_c('div',{staticClass:\"arrow\"}),_c('div',{staticClass:\"subscribe-btn S8 T5\",on:{\"click\":function($event){return _vm.goBuy()}}},[_c('div',{staticClass:\"lock-icon\"}),_c('div',[_vm._v(\"立即订阅\")])])]):_vm._e()]):_vm._e(),(_vm.type === 2)?_c('div',[_c('AudioPlay',{attrs:{\"audioLength\":_vm.playData.duration,\"audioFileUrl\":_vm.playData.playURL,\"isPermission\":_vm.isPermission,\"isLogin\":_vm.isLogin},on:{\"childGoBuy\":function($event){return _vm.goBuy()}}})],1):_vm._e(),(_vm.type === 1 && _vm.playData.playURL)?_c('div',{staticClass:\"video-wrap\",style:(_vm.videoHeightStyle)},[_c('div',{ref:\"videoMask\",staticStyle:{\"position\":\"relative\"},style:(_vm.videoHeightStyle)},[_c('VueAliplayer',{staticClass:\"video\",staticStyle:{\"width\":\"100%\"},attrs:{\"preload\":false,\"autoplay\":_vm.isPermission && _vm.isLogin ? true : false,\"playsinline\":false,\"source\":_vm.playData.playURL,\"skinLayout\":_vm.skinLayout,\"height\":_vm.videoHeight,\"video-height\":_vm.videoHeight},on:{\"play\":_vm.startPlay}}),(_vm.isMaskShowFix)?_c('VideoMask',{staticStyle:{\"position\":\"absolute\",\"height\":\"100%\",\"width\":\"100%\",\"top\":\"0\",\"left\":\"0\"},style:(_vm.videoHeightStyle)}):_vm._e()],1),(!_vm.isPermission || !_vm.isLogin)?_c('div',{staticClass:\"cover-wrap\",class:{ 'no-login-wrap': !_vm.isLogin }},[(_vm.isLogin)?_c('div',{staticClass:\"lock-icon\"}):_vm._e(),_c('div',{staticClass:\"subscribe-btn S8 T5\",on:{\"click\":function($event){return _vm.goBuy()}}},[_vm._v(\" \"+_vm._s(_vm.isLogin ? '立即订阅' : '立即登录')+\" \")]),_c('div',{staticClass:\"subscribe-font S4 T1\"},[_vm._v(\" \"+_vm._s(_vm.isLogin ? '订阅后点击播放视频' : '登录后可收看完整视频')+\" \")])]):_vm._e()]):_vm._e(),_c('div',{staticClass:\"risk-tip T3 S3\"},[_vm._v(\" 风险提示:本内容仅供投资参考,不作为投资建议,股市有风险,投资需谨慎。 \")]),(_vm.stocks.length > 0)?_c('div',{staticClass:\"space\"}):_vm._e(),_c('Stock',{attrs:{\"stockList\":_vm.stocks,\"stockListCode\":_vm.stockListCode}}),_c('div',{staticClass:\"space\"}),_c('ViewPoint',{attrs:{\"articleList\":_vm.RelatesData},on:{\"emitId\":_vm.handleId}}),_c('div',{staticClass:\"space\"}),(_vm.commentsInfo)?_c('Comment',{attrs:{\"commentsInfo\":_vm.commentsInfo,\"showInput\":true,\"hasPermission\":_vm.isPermission,\"id\":_vm.id,\"currentIndex\":\"1\",\"showPupInput\":!_vm.showCommentDetail,\"isFavored\":_vm.dianJinInfo.isFavored},on:{\"onReplyEvent\":_vm.onReplyEvent}}):_vm._e(),(_vm.showCommentDetail)?_c('div',{staticClass:\"comment-mask B1\",on:{\"touchmove\":function($event){$event.stopPropagation();return _vm.onCloseEvent($event)},\"click\":function($event){$event.stopPropagation();return _vm.onCloseEvent($event)}}}):_vm._e(),(_vm.showCommentDetail)?_c('div',{staticClass:\"comment-container B1\",style:([_vm.commentStyle]),on:{\"touchmove\":function($event){$event.stopPropagation();return _vm.onScrollEvent($event)}}},[_c('CommentDetail',{attrs:{\"comment\":_vm.currComment,\"isPermission\":_vm.isPermission},on:{\"onCloseEvent\":_vm.onCloseEvent}})],1):_vm._e(),(_vm.showCommentDetail)?_c('div',{staticStyle:{\"height\":\"300px\"}}):_vm._e()],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.articleList.length>0)?_c('div',{staticClass:\"view-point-wrap\"},[_c('div',{staticClass:\"title sepBottom S8 T1\"},[_vm._v(\"相关观点\")]),_vm._l((_vm.articleList),function(item,index){return _c('div',{key:index,staticClass:\"content sepBottom\",on:{\"click\":function($event){return _vm.goto(item.uri)}}},[_c('div',{staticClass:\"left\"},[_c('div',{staticClass:\"top S8 T1\"},[_vm._v(_vm._s(item.title))]),_c('div',{staticClass:\"time S4 T3\"},[_vm._v(_vm._s(_vm.dayjs(item.publishTime).format('YYYY-MM-DD')))])]),_c('div',{staticClass:\"right\",style:({backgroundImage:(\"url('\" + (item.coverImageUrl) + \"')\")})})])})],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ViewPoint.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ViewPoint.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ViewPoint.vue?vue&type=template&id=2d433b14&scoped=true&\"\nimport script from \"./ViewPoint.vue?vue&type=script&lang=js&\"\nexport * from \"./ViewPoint.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ViewPoint.vue?vue&type=style&index=0&id=2d433b14&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 \"2d433b14\",\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 (_vm.audioFileUrl)?_c('div',{staticClass:\"audio-wrap B_C11\"},[_c('lottie',{attrs:{\"options\":_vm.defaultOptions,\"height\":200,\"width\":300},on:{\"animCreated\":_vm.handleAnimation}}),(_vm.isPermission)?_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"play\",class:{'pause':_vm.isPlay},on:{\"click\":function($event){return _vm.playPause()}}}),_c('div',{staticClass:\"bottom-wrap S2 T3\"},[_c('div',{staticClass:\"current\"},[_vm._v(_vm._s(_vm.currentTime))]),_vm._m(0),_c('div',{staticClass:\"totle\"},[_vm._v(_vm._s(_vm.totalTime))])])]):_vm._e(),(!_vm.isPermission||!_vm.isLogin)?_c('div',{staticClass:\"cover-wrap\",class:{'no-login-wrap':!_vm.isLogin}},[(_vm.isLogin)?_c('div',{staticClass:\"lock-icon\"}):_vm._e(),_c('div',{staticClass:\"subscribe-btn S8 T5\",on:{\"click\":_vm.emitBuy}},[_vm._v(_vm._s(_vm.isLogin?'立即订阅':'立即登录'))]),_c('div',{staticClass:\"subscribe-font S4 T1\"},[_vm._v(_vm._s(_vm.isLogin?'订阅后点击播放音频':'登录后可收听完整音频'))])]):_vm._e(),_c('audio',{attrs:{\"id\":\"mp3Btn\"}},[_c('source',{attrs:{\"src\":_vm.audioFileUrl,\"type\":\"audio/mpeg\"}})])],1):_vm._e()}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"progress-wrap\",attrs:{\"id\":\"box\"}},[_c('div',{staticClass:\"progress\",attrs:{\"id\":\"progress\"}}),_c('div',{staticClass:\"dot\",attrs:{\"id\":\"dot\"}},[_c('div',{staticClass:\"dot-style\"})])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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=685e2ff5&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=685e2ff5&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 \"685e2ff5\",\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 (_vm.stockList.length>0)?_c('div',{staticClass:\"stock-wrap\"},[_c('div',{staticClass:\"title sepBottom S8 T1 bold\"},[_vm._v(\"相关股票\")]),_vm._l((_vm.stockList),function(item,index){return _c('div',{key:index,staticClass:\"content\",class:index!==_vm.stockList.length-1?'sepBottom':'',on:{\"click\":function($event){return _vm.gotoStocks(item.stockId)}}},[_c('div',{staticClass:\"first\"},[_c('div',{staticClass:\"name S8 T1\"},[_vm._v(_vm._s(item.name))]),_c('div',{staticClass:\"code S4 T3 digitFont\"},[_vm._v(_vm._s(_vm.handleCode(item.stockId)))])]),_c('div',{staticClass:\"second S10 T1 digitFont\"},[_vm._v(_vm._s(_vm.conversion(_vm.stockMSG[index] ? _vm.stockMSG[index].Value : 0)))]),_c('div',{staticClass:\"third S10 digitFont\",class:[_vm.conversion(_vm.stockMSG[index] ? _vm.stockMSG[index].extends[1] : 0, 1) >0?'C1':'C3']},[_vm._v(_vm._s(_vm.conversion(_vm.stockMSG[index] ? _vm.stockMSG[index].extends[1] : 0, 1))+\"%\")]),(_vm.list.includes(item.stockId))?_c('div',{staticClass:\"four S5 T3 aly\"},[_vm._v(\"已添加\")]):_c('div',{staticClass:\"four S5 C5\",on:{\"click\":function($event){$event.stopPropagation();return _vm.addZxg(item.stockId)}}},[_vm._v(\"+自选\")])])})],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Stock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Stock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Stock.vue?vue&type=template&id=cba5a33c&scoped=true&\"\nimport script from \"./Stock.vue?vue&type=script&lang=js&\"\nexport * from \"./Stock.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Stock.vue?vue&type=style&index=0&id=cba5a33c&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 \"cba5a33c\",\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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Detail.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Detail.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Detail.vue?vue&type=template&id=4635f9a1&scoped=true&\"\nimport script from \"./Detail.vue?vue&type=script&lang=js&\"\nexport * from \"./Detail.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Detail.vue?vue&type=style&index=0&id=4635f9a1&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 \"4635f9a1\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommentInputPopup.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Detail.vue?vue&type=style&index=0&id=4635f9a1&lang=scss&scoped=true&\"","import '../../style/base.css';\nimport '../../overlay/index.css';\nimport '../../info/index.css';\nimport '../../icon/index.css';\nimport '../index.css';","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--13-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--1-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--13-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--1-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","(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 */\r\n/* exported locationHref, subframeEnabled, expressionsPlugin */\r\n\r\n'use strict';\r\n\r\n/* exported svgNS, locationHref, initialDefaultFrame */\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\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 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 '__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 len = this._cbs[eventName].length;\r\n for (var i = 0; i < len; i += 1) {\r\n this._cbs[eventName][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/* 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/* exported dataManager */\r\n\r\nfunction dataFunctionManager() {\r\n // var tCanvasHelper = createTag('canvas').getContext('2d');\r\n\r\n function completeLayers(layers, comps, fontManager) {\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, fontManager);\r\n } else if (layerData.ty === 4) {\r\n completeShapes(layerData.shapes);\r\n } else if (layerData.ty === 5) {\r\n completeText(layerData, fontManager);\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 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, fontManager) {\r\n if (animationData.__complete) {\r\n return;\r\n }\r\n checkColors(animationData);\r\n checkText(animationData);\r\n checkChars(animationData);\r\n checkShapes(animationData);\r\n completeLayers(animationData.layers, animationData.assets, fontManager);\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.checkShapes = checkShapes;\r\n moduleOb.completeLayers = completeLayers;\r\n\r\n return moduleOb;\r\n}\r\n\r\nvar dataManager = dataFunctionManager();\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 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 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 getCombinedCharacterCodes() {\r\n return combinedCharacters;\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 // TODO: for now I'm adding these methods to the Class and not the prototype. Think of a better way to implement it.\r\n Font.getCombinedCharacterCodes = getCombinedCharacterCodes;\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\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\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 (!keyData.bezierData) {\r\n keyData.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\r\n }\r\n var bezierData = keyData.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 (keyData.__fnct) {\r\n fnc = keyData.__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 keyData.__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 (!keyData.__fnct) {\r\n keyData.__fnct = [];\r\n }\r\n if (!keyData.__fnct[i]) {\r\n outX = (typeof keyData.o.x[i] === 'undefined') ? keyData.o.x[0] : keyData.o.x[i];\r\n outY = (typeof keyData.o.y[i] === 'undefined') ? keyData.o.y[0] : keyData.o.y[i];\r\n inX = (typeof keyData.i.x[i] === 'undefined') ? keyData.i.x[0] : keyData.i.x[i];\r\n inY = (typeof 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 keyData.__fnct[i] = fnc;\r\n } else {\r\n fnc = keyData.__fnct[i];\r\n }\r\n } else if (!keyData.__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.__fnct = fnc;\r\n } else {\r\n fnc = keyData.__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.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.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 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 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 (keyData.__fnct) {\r\n fnc = keyData.__fnct;\r\n } else {\r\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\r\n keyData.__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.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 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 }\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 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.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\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};\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 */\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) {\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 this._elementHelper.append(img);\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 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 this.totalImages += 1;\r\n this.images.push(this._createImageData(assets[i]));\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 getImage(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 loaded() {\r\n return this.totalImages === this.loadedAssets;\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.testImageLoaded = testImageLoaded.bind(this);\r\n this.assetsPath = '';\r\n this.path = '';\r\n this.totalImages = 0;\r\n this.loadedAssets = 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 loaded: loaded,\r\n destroy: destroy,\r\n getImage: getImage,\r\n createImgData: createImgData,\r\n createImageData: createImageData,\r\n imageLoaded: imageLoaded,\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) {\r\n var fil = createNS('filter');\r\n fil.setAttribute('id', filId);\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 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/* exported assetLoader */\r\n\r\nvar assetLoader = (function () {\r\n function formatResponse(xhr) {\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, callback, errorCallback) {\r\n var response;\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', path, true);\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.send();\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status === 200) {\r\n response = formatResponse(xhr);\r\n callback(response);\r\n } else {\r\n try {\r\n response = formatResponse(xhr);\r\n callback(response);\r\n } catch (err) {\r\n if (errorCallback) {\r\n errorCallback(err);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }\r\n return {\r\n load: loadAsset,\r\n };\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 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: this._textData.p.r,\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) {\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 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 (textData.p.p) {\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 combinedCharacters = FontManager.getCombinedCharacterCodes();\r\n var charactersArray = [];\r\n var i = 0; var\r\n len = text.length;\r\n var charCode;\r\n while (i < len) {\r\n charCode = text.charCodeAt(i);\r\n if (combinedCharacters.indexOf(charCode) !== -1) {\r\n charactersArray[charactersArray.length - 1] += text.charAt(i);\r\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\r\n charCode = text.charCodeAt(i + 1);\r\n if (charCode >= 0xDC00 && charCode <= 0xDFFF) {\r\n charactersArray.push(text.substr(i, 2));\r\n i += 1;\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\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.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 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/* global AudioElement, 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 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.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 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 }\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 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 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 */\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\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 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 for (i = len - 1; i >= 0; i -= 1) {\r\n this.shapeModifiers[i].processShapes(this._isFirstFrame);\r\n }\r\n },\r\n lcEnum: {\r\n 1: 'butt',\r\n 2: 'round',\r\n 3: 'square',\r\n },\r\n ljEnum: {\r\n 1: 'miter',\r\n 2: 'round',\r\n 3: 'bevel',\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 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\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', this.lcEnum[data.lc] || 'round');\r\n pathElement.setAttribute('stroke-linejoin', this.ljEnum[data.lj] || 'round');\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 container.appendChild(itemsData[i].style.pElem);\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 container.appendChild(itemsData[i].gr);\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);\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.getImage(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 */\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 = this.lcEnum[data.lc] || 'round';\r\n styleElem.lj = this.ljEnum[data.lj] || 'round';\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 */\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', 'butt');\r\n tSpan.setAttribute('stroke-linejoin', 'round');\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, assetLoader, dataManager, expressionsPlugin, BMEnterFrameEvent, BMCompleteLoopEvent,\r\nBMCompleteEvent, BMSegmentStartEvent, BMDestroyEvent, BMEnterFrameEvent, BMCompleteLoopEvent, BMCompleteEvent, BMSegmentStartEvent,\r\nBMDestroyEvent, BMRenderFrameErrorEvent, BMConfigErrorEvent */\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};\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.configAnimation(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\r\n assetLoader.load(params.path, this.configAnimation.bind(this), function () {\r\n this.trigger('data_failed');\r\n }.bind(this));\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.completeData(this.animationData, this.renderer.globalData.fontManager);\r\n this.renderer.includeLayers(data.layers);\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 assetLoader.load(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\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.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.loaded() || this.renderer.rendererType !== 'canvas')\r\n ) {\r\n this.isLoaded = true;\r\n dataManager.completeData(this.animationData, this.renderer.globalData.fontManager);\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};\r\n\r\nAnimationItem.prototype.renderFrame = function () {\r\n if (this.isLoaded === false) {\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.goToAndStop = function (value, isFrame, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n 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 this.goToAndStop(value, isFrame, name);\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 // this.segments.push([this.animationData.ip*this.frameRate,Math.floor(this.animationData.op - this.animationData.ip+this.animationData.ip*this.frameRate)]);\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 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\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 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(frames, fps) {\r\n if (!fps) {\r\n fps = elem.comp.globalData.frameRate;\r\n }\r\n return frames / 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 (_needsRandom) {\r\n seedRandom(randSeed);\r\n }\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 (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 }\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 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\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/* 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 TextExpressionSelectorProp */\r\n\r\n(function () {\r\n var TextExpressionSelectorProp = (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 TextExpressionSelectorPropFactory(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\n var propertyGetTextProp = TextSelectorProp.getTextSelectorProp;\r\n TextSelectorProp.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\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 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.__getFactory = getFactory;\r\nlottie.version = '5.7.6';\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('div',{staticClass:\"cdetail-container\"},[_c('div',{staticClass:\"page-header\"},[_c('div',{staticClass:\"S8 T1 font-bold\"},[_vm._v(_vm._s(_vm.subComments.length + '条回复'))]),_c('img',{attrs:{\"src\":require(\"@/static/ic_close.png\"),\"alt\":\"\"},on:{\"click\":_vm.onCloseEvent}})]),_c('div',{staticClass:\"content-container\",on:{\"touchmove\":function($event){$event.stopPropagation();}}},[_c('comment-item',{attrs:{\"item\":_vm.comment,\"showDelete\":false,\"showOwner\":true},on:{\"onReplyEvent\":function($event){return _vm.onReplyEvent(_vm.comment)}}}),_c('div',{staticClass:\"line-margin item-line L2\"}),(_vm.subComments.length > 0)?_c('div',{staticClass:\"S10 comments-header\"},[_vm._v(\" 全部回复 \")]):_vm._e(),_c('div',{staticClass:\"subcomment-list\"},_vm._l((_vm.subComments),function(item){return _c('div',{key:item.id},[_c('comment-item',{attrs:{\"item\":item,\"showOwner\":_vm.comment.userId === item.userId},on:{\"onReplyEvent\":function($event){return _vm.onReplyEvent(item)},\"onDeleteEvent\":function($event){return _vm.onDeleteEvent(item)}}})],1)}),0),_c('div',{staticStyle:{\"height\":\"20px\"}})],1),(_vm.isPermission)?_c('div',{class:_vm.bottomClass},[_c('comment-input',{ref:\"detail-input\",attrs:{\"commentsInfo\":_vm.commentsInfo,\"comment\":_vm.currentComment},on:{\"onInputEvent\":_vm.onInputEvent,\"onBlurEvent\":_vm.onBlurEvent,\"onCommitEvent\":_vm.onCommitEvent}})],1):_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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommentDetail.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommentDetail.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CommentDetail.vue?vue&type=template&id=091af418&scoped=true&\"\nimport script from \"./CommentDetail.vue?vue&type=script&lang=js&\"\nexport * from \"./CommentDetail.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CommentDetail.vue?vue&type=style&index=0&id=091af418&scoped=true&lang=css&\"\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 \"091af418\",\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:\"comment-list\"},[(_vm.commentCount && _vm.videoType !== 'shrink')?[_c('div',{staticClass:\"page-header\"},[_c('div',{staticClass:\"S8 T1 font-bold\"},[_vm._v(\" \"+_vm._s('评论 (' + _vm.commentsInfo.commentsCount + ')')+\" \")])]),_c('div',{staticClass:\"item-line L2\"})]:_vm._e(),(_vm.comments.length == 0)?_c('div',{staticClass:\"nodata-container\"},[_c('img',{attrs:{\"src\":require(\"../../static/bg_comments.png\"),\"alt\":\"\"}}),_c('div',{staticClass:\"S6 T3\"},[_vm._v(\"暂无评论\")])]):_vm._l((_vm.comments),function(item){return _c('div',{key:item.id,staticClass:\"list-container\"},[_c(_vm.getComponent,{tag:\"component\",attrs:{\"item\":item,\"showReplyCount\":true},on:{\"onReplyEvent\":function($event){return _vm.onReplyEvent(item)},\"onDeleteEvent\":function($event){return _vm.onDeleteEvent(item)},\"onShowAllEvent\":_vm.onShowAllEvent}})],1)}),(_vm.showPopup)?_c('comment-input-popup',{attrs:{\"commentsInfo\":_vm.commentsInfo,\"hasPermission\":_vm.hasPermission,\"id\":_vm.id,\"showPopup\":_vm.showPopup,\"isFavored\":_vm.isFavored},on:{\"onCommitEvent\":_vm.onCommitEvent}}):_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:\"item-container iflex\"},[_c('div',{staticClass:\"avatar-container\"},[_c('img',{staticClass:\"item-avatar\",attrs:{\"src\":_vm.item.avatar}}),(_vm.item.isAuthor)?_c('img',{staticClass:\"icon_header_v\",attrs:{\"src\":require(\"@/static/ic_v_log.png\")}}):_vm._e()]),_c('div',{staticClass:\"right-continer iflex\"},[_c('div',{staticClass:\"S8 T1 title-container iflex\"},[_vm._v(\" \"+_vm._s(_vm.item.nickname)+\" \"),(_vm.showOwner)?_c('span',{staticClass:\"item-owner C5 S2 B_C6\"},[_vm._v(\" 楼主 \")]):_vm._e()]),_c('div',{staticClass:\"S8 item-comment\",class:_vm.item.isAuthor ? 'C9' : 'T1'},[_vm._v(\" \"+_vm._s(_vm.item.content)+\" \"),(_vm.item.parentComent)?_c('span',[_c('span',{staticClass:\"T1\"},[_vm._v(\" // \")]),_c('span',{staticClass:\"C5\"},[_vm._v(_vm._s('@' + _vm.item.parentComent.nickname + ':'))]),_c('span',{class:_vm.item.parentComent.isAuthor ? 'C9' : 'T1'},[_vm._v(_vm._s(_vm.item.parentComent.content))])]):_vm._e()]),_c('div',{staticClass:\"timer-container iflex\",on:{\"click\":function($event){return _vm.onReplyEvent(_vm.item)}}},[_c('div',{staticClass:\"S4 T3\"},[_vm._v(\" \"+_vm._s(_vm.item.createTime)+\" \")]),_c('div',{staticClass:\"item-replay iflex S4 T1\"},[_vm._v(\" 回复 \")])]),(_vm.canDelete)?_c('div',{staticClass:\"delete-container iflex\",on:{\"click\":function($event){$event.stopPropagation();return _vm.onDeleteEvent(_vm.item)}}},[_c('div',{staticClass:\"btn-delete S2 T1\"},[_vm._v(\"删除\")])]):_vm._e(),(_vm.showReplyCount && _vm.item.replyCount > 0)?_c('div',{staticClass:\"reply-container T3 relative\",on:{\"click\":function($event){return _vm.onReplyEvent(_vm.item, true)}}},[_vm._l((_vm.item.subComments),function(subComment,index){return _c('div',{key:index,staticClass:\"reply-item T6 S7\"},[_c('span',{staticClass:\"T3 left\"},[_vm._v(_vm._s(subComment.nickname)+\":\")]),_vm._v(_vm._s(subComment.content)+\" \")])}),(_vm.item.replyCount > 2)?_c('div',{staticClass:\"S4 C5\"},[_vm._v(\" 查看全部\"+_vm._s(_vm.item.replyCount)+\"条回复 \")]):_vm._e()],2):_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--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShrinkCommentItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShrinkCommentItem.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ShrinkCommentItem.vue?vue&type=template&id=b210533c&scoped=true&\"\nimport script from \"./ShrinkCommentItem.vue?vue&type=script&lang=js&\"\nexport * from \"./ShrinkCommentItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ShrinkCommentItem.vue?vue&type=style&index=0&id=b210533c&scoped=true&lang=scss&\"\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 \"b210533c\",\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',[_c('van-popup',{staticClass:\"input-popup\",attrs:{\"overlay-class\":\"my-popup\",\"position\":\"bottom\",\"get-container\":\"#app\",\"close-on-click-overlay\":false},model:{value:(_vm.showPopup),callback:function ($$v) {_vm.showPopup=$$v},expression:\"showPopup\"}},[_c('comment-input',{ref:\"detail-input\",attrs:{\"commentsInfo\":_vm.commentsInfo,\"id\":_vm.id,\"isFavored\":_vm.isFavored},on:{\"onCommitEvent\":_vm.onCommitEvent,\"onFocusEvent\":_vm.onFocusEvent,\"onBlurEvent\":_vm.onBlurEvent}}),(_vm.showAd)?_c('ad-tip'):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommentInputPopup.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommentInputPopup.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CommentInputPopup.vue?vue&type=template&id=37721ec4&\"\nimport script from \"./CommentInputPopup.vue?vue&type=script&lang=js&\"\nexport * from \"./CommentInputPopup.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CommentInputPopup.vue?vue&type=style&index=0&lang=css&\"\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 null,\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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Comment.vue?vue&type=template&id=243b6126&scoped=true&\"\nimport script from \"./Comment.vue?vue&type=script&lang=js&\"\nexport * from \"./Comment.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Comment.vue?vue&type=style&index=0&id=243b6126&scoped=true&lang=css&\"\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 \"243b6126\",\n null\n \n)\n\nexport default component.exports","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n};\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=style&index=0&id=243b6126&scoped=true&lang=css&\"","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n // eslint-disable-next-line max-statements\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n var multiply = function (n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n };\n\n var divide = function (n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n };\n\n var dataToString = function () {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n };\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n result = dataToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n result = dataToString() + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VideoMask.vue?vue&type=style&index=0&id=3db0e79c&scoped=true&lang=css&\"","import { createNamespace, isDef } from '../utils';\nimport { PopupMixin } from '../mixins/popup';\nimport Icon from '../icon';\n\nvar _createNamespace = createNamespace('popup'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [PopupMixin()],\n props: {\n round: Boolean,\n duration: [Number, String],\n closeable: Boolean,\n transition: String,\n safeAreaInsetBottom: Boolean,\n closeIcon: {\n type: String,\n default: 'cross'\n },\n closeIconPosition: {\n type: String,\n default: 'top-right'\n },\n position: {\n type: String,\n default: 'center'\n },\n overlay: {\n type: Boolean,\n default: true\n },\n closeOnClickOverlay: {\n type: Boolean,\n default: true\n }\n },\n beforeCreate: function beforeCreate() {\n var _this = this;\n\n var createEmitter = function createEmitter(eventName) {\n return function (event) {\n return _this.$emit(eventName, event);\n };\n };\n\n this.onClick = createEmitter('click');\n this.onOpened = createEmitter('opened');\n this.onClosed = createEmitter('closed');\n },\n methods: {\n onClickCloseIcon: function onClickCloseIcon(event) {\n this.$emit('click-close-icon', event);\n this.close();\n }\n },\n render: function render() {\n var _bem;\n\n var h = arguments[0];\n\n if (!this.shouldRender) {\n return;\n }\n\n var round = this.round,\n position = this.position,\n duration = this.duration;\n var isCenter = position === 'center';\n var transitionName = this.transition || (isCenter ? 'van-fade' : \"van-popup-slide-\" + position);\n var style = {};\n\n if (isDef(duration)) {\n var key = isCenter ? 'animationDuration' : 'transitionDuration';\n style[key] = duration + \"s\";\n }\n\n return h(\"transition\", {\n \"attrs\": {\n \"appear\": this.transitionAppear,\n \"name\": transitionName\n },\n \"on\": {\n \"afterEnter\": this.onOpened,\n \"afterLeave\": this.onClosed\n }\n }, [h(\"div\", {\n \"directives\": [{\n name: \"show\",\n value: this.value\n }],\n \"style\": style,\n \"class\": bem((_bem = {\n round: round\n }, _bem[position] = position, _bem['safe-area-inset-bottom'] = this.safeAreaInsetBottom, _bem)),\n \"on\": {\n \"click\": this.onClick\n }\n }, [this.slots(), this.closeable && h(Icon, {\n \"attrs\": {\n \"role\": \"button\",\n \"tabindex\": \"0\",\n \"name\": this.closeIcon\n },\n \"class\": bem('close-icon', this.closeIconPosition),\n \"on\": {\n \"click\": this.onClickCloseIcon\n }\n })])]);\n }\n});","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"maskConstain\"},[_c('div',{staticClass:\"anim\"},[_vm._v(\"用户ID:\"+_vm._s(_vm.getWaterMark))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VideoMask.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VideoMask.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./VideoMask.vue?vue&type=template&id=3db0e79c&scoped=true&\"\nimport script from \"./VideoMask.vue?vue&type=script&lang=js&\"\nexport * from \"./VideoMask.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VideoMask.vue?vue&type=style&index=0&id=3db0e79c&scoped=true&lang=css&\"\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 \"3db0e79c\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AudioPlay.vue?vue&type=style&index=0&id=685e2ff5&lang=scss&scoped=true&\"","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n"],"sourceRoot":""}