{"version":3,"sources":["webpack:///./node_modules/vant/es/utils/dom/node.js","webpack:///./node_modules/core-js/internals/get-substitution.js","webpack:///./src/util/util.js","webpack:///./node_modules/dayjs/plugin/utc.js","webpack:///./src/api/permission.js","webpack:///./src/assets/js/ym.js","webpack:///./node_modules/core-js/internals/string-repeat.js","webpack:///./node_modules/core-js/modules/es.string.split.js","webpack:///./node_modules/vant/es/utils/dom/event.js","webpack:///./src/views/comment/components/CommentInput.vue?a4ec","webpack:///src/views/comment/components/CommentInput.vue","webpack:///./src/views/comment/components/CommentInput.vue?9521","webpack:///./src/views/comment/components/CommentInput.vue","webpack:///./src/store/modules/video.js","webpack:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///./src/views/comment/components/ShrinkCommentItem.vue?6dd5","webpack:///./node_modules/vant/es/utils/vnodes.js","webpack:///./node_modules/vant/es/mixins/relation.js","webpack:///./node_modules/vant/es/goods-action/index.js","webpack:///./node_modules/vant/es/dialog/index.js","webpack:///./node_modules/vant/es/goods-action-button/index.js","webpack:///./node_modules/vant/es/dialog/Dialog.js","webpack:///./src/static/ic_close.png","webpack:///./src/views/comment/Comment.vue?e6db","webpack:///./src/views/comment/components/CommentItem.vue?0d6b","webpack:///src/views/comment/components/CommentItem.vue","webpack:///./src/views/comment/components/CommentItem.vue?aa25","webpack:///./src/views/comment/components/CommentItem.vue","webpack:///./src/views/test/VueAliplayer.vue?8c0c","webpack:///src/views/test/VueAliplayer.vue","webpack:///./src/views/test/VueAliplayer.vue?2a73","webpack:///./src/views/test/VueAliplayer.vue","webpack:///./node_modules/vant/es/mixins/touch.js","webpack:///./src/static/ic_favored.png","webpack:///./node_modules/core-js/modules/es.string.iterator.js","webpack:///./src/views/video/AdTip.vue?7734","webpack:///./node_modules/core-js/internals/this-number-value.js","webpack:///./src/store/index.js","webpack:///./node_modules/vant/es/utils/router.js","webpack:///./src/assets/js/appInfo.js","webpack:///./node_modules/core-js/internals/array-from.js","webpack:///./src/static/ic_favor.png","webpack:///./src/views/comment/CommentDetail.vue?b698","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./src/components/ViewPoint/ViewPoint.vue?e35a","webpack:///./node_modules/dayjs/dayjs.min.js","webpack:///./src/views/comment/components/CommentItem.vue?7e5d","webpack:///./src/components/Stock/Stock.vue?9fc5","webpack:///./node_modules/vant/es/mixins/bind-event.js","webpack:///./node_modules/vant/es/mixins/popup/context.js","webpack:///./node_modules/vant/es/overlay/index.js","webpack:///./node_modules/vant/es/mixins/popup/overlay.js","webpack:///./node_modules/vant/es/mixins/portal.js","webpack:///./node_modules/vant/es/mixins/close-on-popstate.js","webpack:///./node_modules/vant/es/mixins/popup/index.js","webpack:///./src/views/detail/Detail.vue?88e8","webpack:///./src/components/ViewPoint/ViewPoint.vue?7dcb","webpack:///src/components/ViewPoint/ViewPoint.vue","webpack:///./src/components/ViewPoint/ViewPoint.vue?6cb5","webpack:///./src/components/ViewPoint/ViewPoint.vue","webpack:///./src/components/AudioPlay/AudioPlay.vue?0114","webpack:///src/components/AudioPlay/AudioPlay.vue","webpack:///./src/components/AudioPlay/AudioPlay.vue?7fa0","webpack:///./src/components/AudioPlay/AudioPlay.vue","webpack:///./src/components/Stock/Stock.vue?605d","webpack:///src/components/Stock/Stock.vue","webpack:///./src/components/Stock/Stock.vue?1eea","webpack:///./src/components/Stock/Stock.vue","webpack:///src/views/detail/Detail.vue","webpack:///./src/views/detail/Detail.vue?bd78","webpack:///./src/views/detail/Detail.vue","webpack:///./src/views/comment/components/CommentInputPopup.vue?0887","webpack:///./src/views/detail/Detail.vue?d7c5","webpack:///./src/views/test/VueAliplayer.vue?147f","webpack:///./node_modules/vant/es/popup/style/index.js","webpack:///./node_modules/vue-lottie/src/lottie.vue?8ec5","webpack:///node_modules/vue-lottie/src/lottie.vue","webpack:///./node_modules/vue-lottie/src/lottie.vue?4aae","webpack:///./node_modules/vue-lottie/src/lottie.vue","webpack:///./src/static/bg_comments.png","webpack:///./node_modules/lottie-web/build/player/lottie.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./src/views/comment/components/CommentInput.vue?03e8","webpack:///./src/views/comment/CommentDetail.vue?578a","webpack:///src/views/comment/CommentDetail.vue","webpack:///./src/views/comment/CommentDetail.vue?3b5e","webpack:///./src/views/comment/CommentDetail.vue","webpack:///./src/views/comment/Comment.vue?44ab","webpack:///./src/views/comment/components/ShrinkCommentItem.vue?b40b","webpack:///src/views/comment/components/ShrinkCommentItem.vue","webpack:///./src/views/comment/components/ShrinkCommentItem.vue?f7cb","webpack:///./src/views/comment/components/ShrinkCommentItem.vue","webpack:///./src/views/comment/components/CommentInputPopup.vue?0f0b","webpack:///src/views/comment/components/CommentInputPopup.vue","webpack:///./src/views/comment/components/CommentInputPopup.vue?f0cf","webpack:///./src/views/comment/components/CommentInputPopup.vue","webpack:///src/views/comment/Comment.vue","webpack:///./src/views/comment/Comment.vue?a9d3","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:///./node_modules/vant/es/utils/dom/scroll.js","webpack:///./node_modules/vant/es/utils/constant.js","webpack:///./src/api/appInfo.js","webpack:///./node_modules/vant/es/button/index.js","webpack:///./node_modules/core-js/modules/es.number.to-fixed.js","webpack:///./src/store/modules/viewPointDetail.js","webpack:///./node_modules/vant/es/icon/style/index.js","webpack:///./src/store/modules sync \\.js$","webpack:///./src/views/video/VideoMask.vue?2808","webpack:///./src/static/ic_input.png","webpack:///./src/static/ic_v_log.png","webpack:///./node_modules/vant/es/toast/lock-click.js","webpack:///./node_modules/vant/es/toast/Toast.js","webpack:///./node_modules/vant/es/toast/index.js","webpack:///./src/store/modules/follow.js","webpack:///./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./node_modules/vant/es/dialog/style/index.js","webpack:///./node_modules/vant/es/popup/index.js","webpack:///./src/views/video/VideoMask.vue?27f0","webpack:///src/views/video/VideoMask.vue","webpack:///./src/views/video/VideoMask.vue?5343","webpack:///./src/views/video/VideoMask.vue","webpack:///./node_modules/vant/es/toast/style/index.js","webpack:///./src/store/modules/comment.js","webpack:///./src/views/video/AdTip.vue?b193","webpack:///src/views/video/AdTip.vue","webpack:///./src/views/video/AdTip.vue?8c1a","webpack:///./src/views/video/AdTip.vue","webpack:///./src/components/AudioPlay/AudioPlay.vue?20e2","webpack:///./node_modules/core-js/modules/es.array.slice.js"],"names":["removeNode","el","parent","parentNode","removeChild","toObject","floor","Math","replace","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","module","exports","matched","str","position","captures","namedCaptures","replacement","tailPos","length","m","symbols","undefined","call","match","ch","capture","charAt","slice","n","f","Util","window","screen","width","url","console","log","location","href","px","htmlFontSize","document","body","currentStyle","defaultView","getComputedStyle","fontSize","scale","on","goods","keepScreenOn","e","targetMv","currentMv","isIncludeEqual","isSupport","this","mv","targetMvArr","split","currentMvArr","i","warn","t","s","prototype","utc","date","args","arguments","toDate","locale","$L","add","utcOffset","local","parse","$u","$utils","u","$offset","init","$d","$y","getUTCFullYear","$M","getUTCMonth","$D","getUTCDate","$W","getUTCDay","$H","getUTCHours","$m","getUTCMinutes","$s","getUTCSeconds","$ms","getUTCMilliseconds","abs","getTimezoneOffset","$x","$localOffset","o","format","valueOf","Date","isUTC","toISOString","toString","toUTCString","r","a","diff","permissions","Vue","observable","data","checkPermission","productId","callback","permissionCallback","result","indexOf","concat","hasPermission","WEB_CALLBACK","onSuccessCache","Object","create","onFailCache","onSuccess","params","callbackParams","info","onFail","callbackProxy","callbackName","middlewareCallback","json","JSON","timeStr","getTime","push","ym","type","openurl","search","error","encodeURI","goback","closeWebPage","text","showNotify","showTips","openApp","appInfo","platform","Android","stringify","pkg","encodeURIComponent","imageUrl","openImageBroswer","imgUrl","startX","startY","imgWidth","imgHeight","options","videoId","test","exec","category","videoName","key","hasOwnProperty","float","stockids","stockid","codeIndex","openstocks","goodsids","index","option","isGoodsAddedZxg","controlZxg","showTipsDialog","menuItems","forEach","item","showMenuItems","showSharePop","param","isSharePopEnable","toInteger","requireObjectCoercible","repeat","count","String","Infinity","RangeError","fixRegExpWellKnownSymbolLogic","isRegExp","anObject","speciesConstructor","advanceStringIndex","toLength","callRegExpExec","regexpExec","fails","arrayPush","min","MAX_UINT32","SUPPORTS_Y","RegExp","SPLIT","nativeSplit","maybeCallNative","internalSplit","separator","limit","string","lim","lastIndex","lastLength","output","flags","ignoreCase","multiline","unicode","sticky","lastLastIndex","separatorCopy","source","apply","O","splitter","regexp","res","done","value","rx","S","C","unicodeMatching","p","q","A","z","supportsPassive","opts","defineProperty","get","addEventListener","target","event","handler","passive","off","removeEventListener","stopPropagation","preventDefault","isStopPropagation","cancelable","render","_vm","_h","$createElement","_c","_self","staticClass","class","bottomClass","ref","$event","onInputEvent","attrs","_v","_s","bottomTitle","Favored","collectFun","_e","directives","name","rawName","expression","placeholder","domProps","onFocusEvent","onBlurEvent","onTextChanged","composing","content","onCommitEvent","staticRenderFns","props","comment","default","commentsInfo","isFavored","Boolean","id","focus","currComment","isClick","FavoredTem","computed","commentInputType","inputType","commentOptions","title","methods","util","startInput","$emit","popupDom","style","height","$refs","stopInput","substring","$toast","visibility","$nextTick","getElementsByClassName","scrollTop","component","state","resp","playInfo","currentVideo","respReport","mutations","setResp","setPlayInfo","setCurrentVideo","videoIdentity","setrespReport","setProgress","progress","actions","request","commit","http","post","then","requestVideo","requestUploadProgress","courses","detail","page","list","v","requestDetail","namespaced","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","Promise","_asyncToGenerator","fn","self","err","flattenVNodes","vnodes","traverse","vnode","componentInstance","$children","map","$vnode","children","sortChildren","componentOptions","sort","b","ChildrenMixin","_parent","_inject","_computed","indexKey","inject","disableBindRelation","bindRelation","watch","val","mounted","beforeDestroy","_this","filter","ParentMixin","provide","_ref","instance","_createNamespace","createComponent","bem","mixins","safeAreaInsetBottom","h","unfit","slots","icon","color","loading","disabled","isFirst","prev","$options","isLast","next","onClick","$router","first","last","theme","Number","message","className","Function","beforeClose","messageAlign","cancelButtonText","cancelButtonColor","confirmButtonText","confirmButtonColor","showCancelButton","overlay","allowHtml","transition","showConfirmButton","closeOnPopstate","closeOnClickOverlay","confirm","cancel","onClickOverlay","handleAction","action","onClose","close","onOpened","onClosed","genRoundButtons","_this2","genButtons","_this3","multiple","genContent","hasTitle","messageSlot","_bem","_domProps","isolated","shouldRender","Title","isInDocument","element","contains","initInstance","$destroy","extend","createElement","propsData","lazyRender","$on","$el","currentOptions","defaultOptions","lockScroll","overlayClass","overlayStyle","getContainer","alert","setDefaultOptions","resetDefaultOptions","install","use","Component","$dialog","onReplyEvent","avatar","nickname","commentColor","parentComent","parentCommentColor","createTime","staticStyle","replyTitle","onDeleteEvent","showReplyCount","showDelete","showOwner","replyCount","isAuthor","canDelete","dayjs","playerId","vid","playauth","videoWidth","videoHeight","preload","cover","isLive","autoplay","rePlay","useH5Prism","useFlashPrism","playsinline","showBuffer","skinRes","skinLayout","Array","controlBarVisibility","showBarTime","extraInfo","enableSystemMenu","mediaType","qualitySort","definition","defaultDefinition","x5_type","x5_fullscreen","x5_video_position","x5_orientation","x5LandscapeAsFullScreen","autoPlayDelay","autoPlayDelayDisplayText","language","languageTexts","snapshot","snapshotWatermark","useHlsPluginForSafari","enableStashBufferForFlv","stashInitialSizeForFlv","loadDataTimeout","waitingTimeout","liveStartTime","liveOverTime","liveTimeShiftUrl","recreatePlayer","diagnosisButtonVisible","disableSeek","encryptType","progressMarkers","vodRetry","liveRetry","playStyle","aliplayerSdkPath","random","substr","scriptTagStatus","isReload","created","Aliplayer","initAliplayer","insertScriptTag","$onResume","play","$onPause","pause","playerScriptTag","src","appendChild","loaded","dispose","querySelector","innerHTML","liveShiftSource","video","setAttribute","replay","seek","time","getCurrentTime","getDuration","getVolume","setVolume","vol","loadByUrl","setSpeed","speed","setPlayerSize","w","replayByVidAndPlayAuth","replayByVidAndAuthInfo","reloaduserPlayInfoAndVidRequestMts","setSanpshotProperties","rate","setCover","reloadPlayer","MIN_DISTANCE","getDirection","x","y","TouchMixin","direction","touchStart","resetTouchStatus","touches","clientX","clientY","touchMove","touch","deltaX","deltaY","offsetX","offsetY","bindTouchEvent","onTouchStart","onTouchMove","onTouchEnd","InternalStateModule","defineIterator","STRING_ITERATOR","setInternalState","set","getInternalState","getterFor","iterated","point","classof","TypeError","Vuex","store","Store","storeContext","require","keys","modules","registerModule","$store","isRedundantNavigation","route","router","config","to","promise","catch","functionalRoute","context","routeProps","parseToInt","num","parseInt","isNaN","navigator","userAgent","iOS","Weixin","getQueryStringArgs","qs","items","len","regx","decodeURIComponent","refreshAppInfoCallbacks","getClientInfo","callbackMiddleware","WEB_CALLBACK_APPINFO","updateAppInfo","loadAppinfo","getAppInfo","app","toLowerCase","getParam","toLocaleLowerCase","loginType","isPhoneNum","isBindPhone","isLogin","isPhone","bindPhone","login","token","compareMv","ar","css","bind","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIteratorMethod","arrayLike","step","iterator","argumentsLength","mapfn","mapping","iteratorMethod","getSubstitution","regExpExec","max","maybeToString","it","REPLACE","nativeReplace","reason","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","REPLACE_KEEPS_$0","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","functionalReplace","global","fullUnicode","results","matchStr","accumulatedResult","nextSourcePosition","j","groups","replacerArgs","c","d","weekdays","months","$","join","l","year","month","clone","ceil","M","D","ms","Q","g","NaN","UTC","getFullYear","getMonth","getDate","getDay","getHours","getMinutes","getSeconds","getMilliseconds","isValid","isSame","startOf","endOf","isAfter","isBefore","$g","unix","$locale","weekStart","$set","daysInMonth","round","subtract","meridiem","YY","YYYY","MM","MMM","monthsShort","MMMM","DD","dd","weekdaysMin","ddd","weekdaysShort","dddd","H","HH","hh","mm","ss","SSS","Z","toJSON","$i","isDayjs","en","Ls","uid","BindEventMixin","unbind","activated","deactivated","zIndex","lockCount","stack","find","vm","preventTouchMove","Overlay","ctx","customStyle","duration","animationDuration","show","defaultConfig","mountOverlay","click","updateOverlay","insertBefore","openOverlay","closeOverlay","removeOverlay","getElement","selector","PortalMixin","_temp","afterPortal","portal","container","$parent","CloseOnPopstateMixin","isBind","handlePopstate","bindStatus","onPopstate","shouldReopen","$isServer","popupMixinProps","transitionAppear","PopupMixin","inited","skipToggleEvent","open","opened","removeLock","renderOverlay","addLock","classList","remove","scrollHeight","offsetHeight","status","updateZIndex","dianJinInfo","goManager","authorInfo","headPic","getDesc","isFollowed","follow","isPermission","goBuy","playData","playURL","startPlay","stocks","stockListCode","RelatesData","handleId","showCommentDetail","onCloseEvent","commentStyle","onScrollEvent","articleList","_l","goto","uri","publishTime","backgroundImage","components","urL","handleAnimation","isPlay","playPause","currentTime","_m","totalTime","emitBuy","audioFileUrl","lottie","animationSpeed","anim","audioLength","transTime","audio","stop","ontimeupdate","drawFun","setTimeout","getTimeFun","getElementById","processWidth","left","minute","sec","isM0","oDiv1","oDiv2","oDiv3","stockList","gotoStocks","stockId","handleCode","conversion","stockMSG","Value","extends","includes","addZxg","getStockPrice","queryStock","deep","immediate","code","goodsIds","gotoStock","stockIds","getValue","percentValue","fieldValue","extendsObj","fieldsRule","others","resultArray","Name","Code","goodsId","divisor","parseFloat","toFixed","VideoMask","AudioPlay","ViewPoint","Stock","Comment","CommentDetail","VueAliplayer","weChatAppId","weChatAppKey","isPlayed","onscroll","updateMaskPosition","innerWidth","innerHeight","lastOrientationChangeTime","orientation","scrollBy","innerH","pageId","bodyElm","overflow","videoHeightStyle","isFree","resourceIdentity","desc","authInfo","typeName","authorCompany","publishTimeDesc","statusPading","marginTop","bottom","commentHeight","isMaskShowFix","setWeChatAppInfo","requestviewPointFun","requestRelatesFun","handleContent","HANDLE_HREF","eventId","eventData","dom","from","requestfollow","authorid","authorId","payUrl","updateVideoMask","factory","root","svgNS","locationHref","initialDefaultFrame","subframeEnabled","expressionsPlugin","isSafari","cachedColors","bmRnd","bmPow","pow","bmSqrt","sqrt","bmFloor","bmMax","bmMin","BMMath","ProjectInterface","propertyNames","tOfVal","absArr","createSizedArray","defaultCurveSegments","degToRads","PI","roundCorner","roundValues","flag","styleDiv","top","display","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","frameMultiplier","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","_count","HSVtoRGB","RGBtoHSV","addSaturationToRGB","offset","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","hex","colorMap","BaseEvent","triggerEvent","eventName","_cbs","splice","createTypedArray","createRegularArray","arr","createTypedArrayFactory","Float32Array","Int16Array","Uint8ClampedArray","createNS","createElementNS","createTag","DynamicPropertyContainer","addDynamicProperty","prop","dynamicProperties","_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","sz","setTransform","k","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","cloneFromProps","applyToPoint","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","chunks","digits","rngname","startdenom","significance","mask","seedrandom","seed","entropy","shortseed","mixkey","flatten","tostring","autoseed","arc4","ARC4","prng","int32","quick","double","pass","is_math_call","copy","keylen","me","obj","depth","typ","smear","stringseed","charCodeAt","randomBytes","out","Uint8Array","crypto","msCrypto","getRandomValues","browser","plugins","fromCharCode","BezierFactory","ob","getBezierEasing","beziers","nm","bezEasing","BezierEasing","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","aA1","aA2","B","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","newtonRaphsonIterate","aGuessT","currentSlope","points","_mSampleValues","_precomputed","mY1","mY2","_precompute","_getTForX","_calcSampleValues","mSampleValues","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope","extendPrototype","sources","destination","sourcePrototype","attr","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","ks","path","checkVersion","minimum","animVersionString","animVersion","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","weight","FontManager","maxWaitingTime","emptyChar","size","combinedCharacters","trimFontOptions","font","familyArray","enabledFamilies","setUpNode","family","fontFamily","node","innerText","fontVariant","fontStyle","fontWeight","letterSpacing","offsetWidth","checkLoadedFonts","fonts","loadedCount","fOrigin","origin","monoCase","sansCase","now","initTime","checkLoadedFontsBinded","setIsLoadedBinded","createHelper","def","tHelper","fontProps","fFamily","textContent","fClass","tCanvasHelper","getContext","addFonts","defs","isLoaded","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","fPath","querySelectorAll","rel","sc","helper","cache","addChars","found","getCharData","char","_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","keyframes","endValue","nextKeyTime","keyTime","ti","ind","__fnct","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quatStart","createQuaternion","quatEnd","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","or","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","itemsTransform","cont","copies","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","playing","setAudioFactory","_updateVolume","mute","unmute","volume","ImagePreloader","proxyImage","canvas","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","responseType","send","onreadystatechange","readyState","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","charCode","charactersArray","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","cloned","shapeCollection","BaseRenderer","SVGRenderer","animationItem","svgElement","ariaLabel","titleElement","titleId","description","descElement","descId","maskElement","layerElement","renderConfig","preserveAspectRatio","imagePreserveAspectRatio","progressiveLoad","hideOnTransparent","viewBoxOnly","viewBoxSize","focusable","filterSize","pendingElements","destroyed","rendererType","CanvasRenderer","clearCanvas","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","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","hide","CVShapeElement","CVTextElement","CVImageElement","CVCompElement","CVSolidElement","ctxTransform","cProps","cTr","trProps","canvasContext","ctxOpacity","globalAlpha","cO","restore","save","actionFlag","cArrPos","duplicate","saved","savedOp","blendMode","popped","containerStyle","mozTransformOrigin","transformCanvas","isDashed","elementWidth","elementHeight","elementRel","animationRel","par","fillType","beginPath","closePath","clip","clearRect","newDOMElement","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","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","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","setElementStyles","currentTransform","modifier","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","colorBlack","colorWhite","opacity","kBlurrinessToSigma","sigma","dimensions","sigmaX","sigmaY","edgeMode","initialize","groupPath","elemChildren","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","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","nodes","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","setParams","setDirection","nowTime","elapsedTime","advanceTime","goToAndStop","isFrame","togglePause","searchAnimations","standalone","animElements","getElementsByTagName","div","resize","freeze","unfreeze","currentRawFrame","frameMult","playSpeed","playDirection","playCount","loop","animationID","timeCompleted","segmentPos","isSubframeEnabled","_idle","_completedLoop","animType","rendererSettings","autoloadSegments","initialSegment","lastIndexOf","fileName","trigger","wrapperAttributes","attributes","getNamedItem","prerender","loadNextSegment","shift","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","updaFrameModifier","waitForFontsLoaded","triggerConfigError","gotoFrame","setSubframe","triggerRenderFrameError","setCurrentRawFrameValue","frameModifier","goToAndPlay","nextValue","_isComplete","checkSegments","adjustSegment","setSegment","end","pendingFrame","playSegments","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onComplete","onSegmentStart","onDestroy","getPath","onError","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","ExpressionManager","$bm_isInstanceOfArray","isNumerable","tOfV","$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","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","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","posterizeTime","framesPerSecond","hasParent","executeExpression","_value","frameExpressionId","expressionHelpers","searchExpressions","_cachingAtTime","getSpeedAtTime","delta","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","pixelAspect","numLayers","_thisFunction","xRotation","yRotation","xPosition","yPosition","zPosition","_px","_py","_pz","_transformFactory","compositions","_thisProjectFunction","effectsData","createGroupInterface","groupInterface","createValueInterface","enabled","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","__getFactory","version","scripts","myScript","runtime","Op","hasOwn","$Symbol","Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","defineIteratorMethods","method","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","iter","skipTempReset","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","subComments","userId","currentComment","CommentItem","CommentInput","isShowAll","getSubCommentsList","commitComments","deleteComments","commentCount","videoType","commentsCount","comments","getComponent","tag","onShowAllEvent","showPopup","subComment","model","$$v","showAd","AdTip","showPupInput","ShrinkCommentItem","CommentInputPopup","componentName","getCommentLists","oldValue","commitCommentFunc","iteratorClose","ENTRIES","checkCorrectnessOfIteration","INCORRECT_ITERATION","stat","forced","isWindow","overflowScrollReg","getScroller","tagName","nodeType","_window$getComputedSt","overflowY","getScrollTop","pageYOffset","setScrollTop","scrollTo","scrollX","getRootScrollTop","documentElement","setRootScrollTop","getElementTop","scroller","getBoundingClientRect","BORDER","BORDER_TOP","BORDER_LEFT","BORDER_SURROUND","appInfoResp","requestappInfo","callBack","clientInfoCallback","isIOS","isAndroid","getStatusHeight","statusBarHeight","clientHeight","screenHeight","titleStatusBarHeight","titleBarHeight","TYPE_GUEST","isGuest","Button","plain","hairline","loadingText","iconPosition","onTouchstart","background","border","borderColor","classes","block","square","renderIcon","loadingSize","loadingType","iconPrefix","renderContent","nativeType","thisNumberValue","nativeToFixed","acc","FORCED","proto","fractionDigits","number","fractDigits","sign","multiply","divide","dataToString","viewPointResp","RelatesResp","setviewPointResp","relatesResp","requestviewPoint","requestRelates","webpackContext","req","webpackContextResolve","__webpack_require__","lockClick","forbidClick","closeOnClick","clickable","toggleClickable","onAfterEnter","onAfterLeave","genIcon","hasIcon","genMessage","defaultOptionsMap","queue","parseOptions","createInstance","toast","transformOptions","clear","timer","all","allowMultiple","followResp","setfollowResp","DOMIterables","ArrayIteratorMethods","createNonEnumerableProperty","wellKnownSymbol","ITERATOR","TO_STRING_TAG","ArrayValues","COLLECTION_NAME","Collection","CollectionPrototype","METHOD_NAME","closeable","closeIcon","closeIconPosition","beforeCreate","createEmitter","onClickCloseIcon","isCenter","transitionName","getWaterMark","setComments","setSubComments","deleteComment","commentId","deleteSubComment","setInputType","commitComment","api","getComments","pageSize","parseComments","getCommentList","getSubComments","getLiveComments","commitLiveComment","tip","tipClass","goAd","viewDetail","isObject","isArray","toAbsoluteIndex","toIndexedObject","arrayMethodHasSpeciesSupport","arrayMethodUsesToLength","HAS_SPECIES_SUPPORT","USES_TO_LENGTH","ACCESSORS","SPECIES","nativeSlice","Constructor","fin"],"mappings":"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","file":"js/chunk-7315ecd2.60108e15.js","sourcesContent":["export function removeNode(el) {\n var parent = el.parentNode;\n\n if (parent) {\n parent.removeChild(el);\n }\n}","var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","class Util {\r\n getVideoHeight() {\r\n return window.screen.width * 9 / 16\r\n }\r\n\r\n go(url) {\r\n console.log(url)\r\n if (url === undefined) {\r\n console.log(\"跳转地址不存在\")\r\n return\r\n }\r\n window.location.href = url\r\n }\r\n\r\n px2Rem(px) {\r\n var htmlFontSize = document.body.currentStyle || document.defaultView.getComputedStyle(document.body, '').fontSize\r\n let scale = 16 / (htmlFontSize.replace(\"px\", \"\"))\r\n return px.replace(\"px\", \"\") * scale + 'px'\r\n }\r\n\r\n keepScreenOn(on) {\r\n try {\r\n window.goods.keepScreenOn(on)\r\n }catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n\r\n compareMv(targetMv, currentMv, isIncludeEqual = true) {\r\n if (!targetMv) {\r\n console.warn('版本比对异常:请传入要比对的版本')\r\n return\r\n }\r\n\r\n if (typeof currentMv === 'boolean') {\r\n isIncludeEqual = currentMv\r\n currentMv = undefined\r\n }\r\n\r\n let isSupport = false\r\n currentMv = currentMv || this.mv\r\n\r\n if (targetMv === currentMv) {\r\n isSupport = isIncludeEqual\r\n } else {\r\n const targetMvArr = targetMv.split('.')\r\n const currentMvArr = currentMv.split('.')\r\n if (currentMvArr.length === targetMvArr.length) {\r\n for (let i = 0; i < currentMvArr.length; i++) {\r\n if (currentMvArr[i] !== targetMvArr[i]) {\r\n isSupport = +currentMvArr[i] > +targetMvArr[i]\r\n break\r\n }\r\n }\r\n } else {\r\n isSupport = currentMvArr.length > targetMvArr.length\r\n }\r\n }\r\n\r\n return isSupport\r\n }\r\n\r\n}\r\n\r\nexport default new Util()","!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","import appInfo from './appInfo'\r\n\r\n// 声明全局回调\r\nconst WEB_CALLBACK = []\r\nconst onSuccessCache = Object.create(null)\r\nconst onFailCache = Object.create(null)\r\n\r\nwindow.WEB_CALLBACK = WEB_CALLBACK\r\n\r\nwindow.onSuccess = function (params, callbackParams) {\r\n console.info('onSuccess', params, callbackParams)\r\n if (onSuccessCache[callbackParams]) {\r\n onSuccessCache[callbackParams](params)\r\n }\r\n}\r\n\r\nwindow.onFail = function (params, callbackParams) {\r\n console.info('onFail', params, callbackParams)\r\n if (onFailCache[callbackParams]) {\r\n onFailCache[callbackParams](params)\r\n }\r\n}\r\n\r\n/**\r\n * 回调函数代理\r\n */\r\nconst callbackProxy = (params = {}, callbackName = 'callback') => {\r\n const middlewareCallback = params.callback || function () { }\r\n\r\n const callback = json => {\r\n if (typeof json === 'string') {\r\n json = JSON.parse(json)\r\n }\r\n\r\n if (middlewareCallback) {\r\n middlewareCallback(json)\r\n }\r\n }\r\n\r\n if (params.onSuccess || params.onFail) {\r\n const timeStr = new Date().getTime() + ''\r\n params.callbackParams = timeStr\r\n onSuccessCache[timeStr] = params.onSuccess || function () { }\r\n onFailCache[timeStr] = params.onFail || function () { }\r\n } else {\r\n params[callbackName] = `WEB_CALLBACK[${WEB_CALLBACK.push(callback) - 1}]`\r\n }\r\n\r\n if (params.onSuccess) {\r\n delete params.onSuccess\r\n }\r\n\r\n if (params.onFail) {\r\n delete params.onFail\r\n }\r\n\r\n return params\r\n}\r\n\r\n/**\r\n * 和客户端的通用交互方法\r\n *\r\n * @param {string} name - 交互方法的名称\r\n * @param {object} [params={}] - 所传参数\r\n * @returns\r\n */\r\n/* eslint-disable no-unused-vars */\r\nconst EMJSBridge = (name, params = {}) => {\r\n return new Promise((resolve, reject) => {\r\n // 超时\r\n let timeout = null\r\n\r\n const executeNative = () => {\r\n clearTimeout(timeout)\r\n\r\n const middlewareCallback = params.callback || function () { }\r\n\r\n const callback = json => {\r\n let result = json\r\n\r\n if (typeof params === 'string') {\r\n result = JSON.parse(params)\r\n }\r\n\r\n if (middlewareCallback) {\r\n middlewareCallback(result)\r\n }\r\n resolve(result)\r\n }\r\n\r\n params.callback = `WEB_CALLBACK[${WEB_CALLBACK.push(callback) - 1}]`\r\n\r\n window.goods[name](JSON.stringify(params))\r\n }\r\n\r\n if (typeof goods !== 'undefined' && window.goods[name]) {\r\n executeNative()\r\n } else {\r\n const errorMsg = 'goods or goods.' + name + ' is undefined!'\r\n\r\n console.warn(errorMsg)\r\n\r\n const waitTime =\r\n typeof params.timeOut === 'undefined' ? 1000 : params.timeOut\r\n // 如果1s内未触发 goodsReady 事件,则视为失败\r\n timeout = setTimeout(() => {\r\n reject(errorMsg)\r\n }, waitTime)\r\n\r\n // 监听ios goodsReady事件\r\n document.addEventListener('goodsReady', executeNative)\r\n }\r\n })\r\n}\r\n\r\n/**\r\n * 与客户端的交互方法集合\r\n *\r\n * @class ym\r\n */\r\nclass ym {\r\n /**\r\n * 调用客户端的登录\r\n * @param {string} [url=location.href] - 登录成功后跳转的地址\r\n */\r\n static login(type = 2) {\r\n console.info('匿名用户跳转登录页面')\r\n this.openurl(`ycstock://login?type=${type}`)\r\n }\r\n\r\n /**\r\n * 调用客户端的绑定手机号\r\n */\r\n static bindPhone() {\r\n console.info('实名未绑定手机号跳转绑定手机号页面')\r\n this.openurl('ycstock://phonebind')\r\n }\r\n\r\n /**\r\n * 保留当前页面,在新的webview中打开页面\r\n * @param {string} url 要打开的页面地址\r\n */\r\n static openurl(url, data) {\r\n if (!url) {\r\n console.error('请传入要打开的页面地址')\r\n return\r\n }\r\n\r\n if (url.indexOf('http://') === -1 && url.indexOf('https://') === -1) {\r\n location.href = url\r\n return\r\n }\r\n\r\n if (typeof window.goods !== 'undefined' && window.goods.openurl) {\r\n if (data) {\r\n window.goods.openurl(url, data)\r\n } else {\r\n window.goods.openurl(url)\r\n }\r\n } else {\r\n const search = location.search\r\n // let url = params.url;\r\n if (url.indexOf('?') > -1) {\r\n url = url + search.replace('?', '&')\r\n } else {\r\n url = url + search\r\n }\r\n // 使用原生打开失败时,尝试使用location直接跳转\r\n location.href = url\r\n }\r\n }\r\n\r\n /**\r\n * 使用系统或第三方浏览器打开网页\r\n * @param {String} url 网页地址\r\n */\r\n static openBrowser(url) {\r\n location.href = `ycstock://browser?thirdapp=true&url=${encodeURI(url)}`\r\n }\r\n\r\n /**\r\n * 关闭当前页面(webview)\r\n */\r\n static goback() {\r\n if (window.goods) {\r\n if (window.goods.goback) {\r\n window.goods.goback()\r\n } else if (window.goods.closeWebPage) {\r\n window.goods.closeWebPage()\r\n } else {\r\n console.info('goods.goback and goods.closeWebPage are undefined')\r\n }\r\n } else {\r\n console.warn('goods or goods.goback is undefined')\r\n }\r\n }\r\n\r\n /**\r\n * 轻提示(弹出类似于toast的提示框)\r\n * @param {string} text - 提示的内容\r\n */\r\n static showNotify(text) {\r\n if (window.goods) {\r\n if (window.goods.showNotify) {\r\n window.goods.showNotify(text)\r\n } else if (window.goods.showTips) {\r\n window.goods.showTips(text)\r\n } else {\r\n console.info('goods.showNotify and goods.showTips are undefined')\r\n }\r\n } else {\r\n console.info('goods or goods.showNotify is undefined')\r\n }\r\n }\r\n\r\n /**\r\n * 打开微信\r\n */\r\n static openWechat() {\r\n if (window.goods && window.goods.openApp && appInfo.platform.Android) {\r\n window.goods.openApp(\r\n JSON.stringify({ pkg: 'com.tencent.mm', url: 'weixin://' })\r\n )\r\n } else {\r\n location.href = `ycstock://browser?thirdapp=true&url=${encodeURIComponent(\r\n 'https://appstatic.emoney.cn/html/open-wechat/index.html'\r\n )}`\r\n }\r\n }\r\n\r\n /**\r\n * 打开大图\r\n * @param {string} imageUrl 图片地址\r\n */\r\n static openImageBrowser(imageUrl) {\r\n if (imageUrl) {\r\n // 小图换成大图\r\n imageUrl = imageUrl.replace('_small.', '_big.')\r\n }\r\n\r\n console.info('[ym.openImageBrowser]: 打开大图', imageUrl)\r\n\r\n if (window.goods && window.goods.openImageBroswer) {\r\n window.goods.openImageBroswer(\r\n JSON.stringify({\r\n imgUrl: imageUrl,\r\n startX: 0,\r\n startY: 0,\r\n imgWidth: 100,\r\n imgHeight: 100\r\n })\r\n )\r\n } else {\r\n console.info('goods or goods.openImageBroswer is undefined')\r\n }\r\n }\r\n\r\n /**\r\n * @typedef PlayVideoOptions\r\n * @property { string } videoId 视频id,如果为url,则会尝试自动从url中截取\r\n * @property { number } [type=0] 视屏类型(0:竖屏,1:横屏)\r\n * @property { string } [videoName] 视频名称,即视频播放页面的标题\r\n * @property { string } [category] 视频分类,用于识别并显示视频下面的网页url\r\n * @property { boolean } [float] 是否启用窗口播放\r\n */\r\n\r\n /**\r\n * 播放视频,使用原生播放器\r\n * @param { PlayVideoOptions } options\r\n * @param { Object } [params] 自定义参数\r\n */\r\n static playVideo(options, params) {\r\n let videoId = options.videoId\r\n\r\n if (/^http/.test(options.videoId)) {\r\n videoId = /-([a-z0-9]+)$/i.exec(options.videoId)[1]\r\n }\r\n\r\n if (options.category) {\r\n videoId += `,category:${options.category}`\r\n }\r\n\r\n if (options.videoName) {\r\n videoId += `,VideoName:${encodeURIComponent(options.videoName || '视频')}`\r\n }\r\n\r\n if (params) {\r\n for (const key in params) {\r\n if (Object.prototype.hasOwnProperty.call(params, key)) {\r\n videoId += `,${key}:${params[key]}`\r\n }\r\n }\r\n }\r\n\r\n const url = `ycstock://playvideo?id=${videoId}&float=${!!options.float}&type=${options.type ||\r\n 0}`\r\n\r\n console.info('[native] 播放视频:', url)\r\n\r\n location.href = url\r\n }\r\n\r\n /**\r\n * 打开多个个股的行情\r\n * @param {Array} stockids 股票代码列表\r\n * @param {string|number} stockid 当前股票代码\r\n */\r\n static openstocks(stockids, stockid) {\r\n let codeIndex = stockids.indexOf(stockid)\r\n if (codeIndex < 0 || codeIndex > stockids.length - 1) {\r\n codeIndex = 0\r\n }\r\n\r\n const url = `ycstock://stock?codes=${stockids}&index=${codeIndex}`\r\n console.info('[native] 打开股票:', url)\r\n\r\n location.href = url\r\n }\r\n\r\n /**\r\n * 打开个股行情\r\n * @param {string|number} stockid 股票代码\r\n */\r\n static openstock(stockid) {\r\n this.openstocks([stockid])\r\n }\r\n\r\n /**\r\n * 打开个股龙虎榜\r\n * @param {Array} goodsids 股票id列表\r\n * @param {string|number} index 当前显示股票索引,默认为0\r\n */\r\n static openLongHuStocks(goodsids, index = 0) {\r\n const url = `ycstock://stock-longhu?goodsids=${goodsids}&index=${index}`\r\n\r\n console.info('[native] 打开个股龙虎榜:', url)\r\n\r\n location.href = url\r\n }\r\n\r\n /**\r\n * @callback isGoodsAddedZxgCallback\r\n * @param {Array} goodsIds 加入自选股的股票代码jsonArray\r\n */\r\n\r\n /**\r\n * @typedef isGoodsAddedZxgOption\r\n * @property {Array} goodsIds 需要判断是否加入自选股的股票id,[600600, 600100, 600300]\r\n * @property {isGoodsAddedZxgCallback} callback 客户端判别之后的回调\r\n */\r\n\r\n /**\r\n * 是否已添加到自选股\r\n * @param {isGoodsAddedZxgOption} option\r\n */\r\n static isGoodsAddedZxg(option) {\r\n if (window.goods && window.goods.isGoodsAddedZxg) {\r\n window.goods.isGoodsAddedZxg(JSON.stringify(callbackProxy(option)))\r\n } else {\r\n console.info('goods or goods.isGoodsAddedZxg is undefined')\r\n }\r\n }\r\n\r\n /**\r\n * @typedef controlZxgOption\r\n * @property {number} type 操作类型(1:增加, 2:删除)\r\n * @property {Array} goodsIds 股票id列表[600600, 600100, 600300]\r\n * @property {Function} onSuccess 成功回调\r\n * @property {Function} onFail 失败回调\r\n */\r\n\r\n /**\r\n * 添加/删除 自选股\r\n * @param {controlZxgOption} option\r\n */\r\n static controlZxg(option) {\r\n if (window.goods && window.goods.controlZxg) {\r\n window.goods.controlZxg(JSON.stringify(callbackProxy(option)))\r\n } else {\r\n console.info('goods or goods.controlZxg is undefined')\r\n }\r\n }\r\n\r\n /**\r\n * 显示提示对话框\r\n * @param {Object} option 参数\r\n * @param {string} option.title 标题(可选参数,默认无标题)\r\n * @param {string} option.content 对话框内容文本\r\n * @param {number} option['align-content'] 对话框内容文本对齐方式,0:左对齐 1:水平居中对齐, 默认为0\r\n * @param {string} option.button 按钮文字\r\n */\r\n static showTipsDialog(option) {\r\n if (window.goods && window.goods.showTipsDialog) {\r\n window.goods.showTipsDialog(JSON.stringify(option))\r\n } else {\r\n console.info('goods or goods.showTipsDialog is undefined')\r\n }\r\n }\r\n\r\n /**\r\n * 右上角菜单配置\r\n * @typedef MenuItem\r\n * @property {string} title 标题\r\n * @property {string} tintColor 颜色\r\n * @property {Function} callback 点击回调\r\n */\r\n\r\n /**\r\n * 显示右上角菜单\r\n * @param {{menuItems:Array}} options 菜单配置\r\n */\r\n static showMenuItems(options) {\r\n const menuItems = []\r\n options.menuItems.forEach(item => menuItems.push(callbackProxy(item)))\r\n\r\n if (window.goods && window.goods.showMenuItems) {\r\n console.info(\r\n '[native] goods.showMenuItems',\r\n JSON.stringify({ menuItems })\r\n )\r\n window.goods.showMenuItems(JSON.stringify({ menuItems }))\r\n } else {\r\n console.info('goods.showMenuItems are undefined', { menuItems })\r\n }\r\n }\r\n\r\n /**\r\n * 微信分享弹窗是否可用\r\n */\r\n static isSharePopEnable() {\r\n return window.goods && window.goods.showMenuItems && window.goods.showSharePop\r\n }\r\n\r\n /**\r\n * 微信分享弹窗\r\n */\r\n static showSharePop(param) {\r\n if (this.isSharePopEnable()) {\r\n window.goods.showSharePop(JSON.stringify(param))\r\n }\r\n }\r\n}\r\n\r\nif (typeof window !== 'undefined') {\r\n window.ym = ym\r\n}\r\n\r\nexport default ym\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","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n","import { isServer } from '..';\n// eslint-disable-next-line import/no-mutable-exports\nexport var supportsPassive = false;\n\nif (!isServer) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', {\n // eslint-disable-next-line getter-return\n get: function get() {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n });\n window.addEventListener('test-passive', null, opts); // eslint-disable-next-line no-empty\n } catch (e) {}\n}\n\nexport function on(target, event, handler, passive) {\n if (passive === void 0) {\n passive = false;\n }\n\n if (!isServer) {\n target.addEventListener(event, handler, supportsPassive ? {\n capture: false,\n passive: passive\n } : false);\n }\n}\nexport function off(target, event, handler) {\n if (!isServer) {\n target.removeEventListener(event, handler);\n }\n}\nexport function stopPropagation(event) {\n event.stopPropagation();\n}\nexport function preventDefault(event, isStopPropagation) {\n /* istanbul ignore else */\n if (typeof event.cancelable !== 'boolean' || event.cancelable) {\n event.preventDefault();\n }\n\n if (isStopPropagation) {\n stopPropagation(event);\n }\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"B1 sepTop\",class:_vm.bottomClass},[_c('div',{staticClass:\"bottom-content\"},[_c('div',{ref:\"ref-input\",staticClass:\"input-container B6\",on:{\"click\":function($event){$event.stopPropagation();return _vm.onInputEvent($event)}}},[_c('img',{attrs:{\"src\":require(\"@/static/ic_input.png\"),\"alt\":\"\"}}),_c('div',{staticClass:\"S6 T3 tips\"},[_vm._v(_vm._s(_vm.bottomTitle))])]),(_vm.id)?_c('img',{staticClass:\"collect\",attrs:{\"src\":require(_vm.Favored ? '@/static/ic_favored.png' : '@/static/ic_favor.png'),\"alt\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.collectFun()}}}):_vm._e(),_c('div',{ref:\"ref-text\",staticClass:\"text-container B1\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.content),expression:\"content\"}],ref:\"textarea\",staticClass:\"S6 T1\",attrs:{\"placeholder\":_vm.placeholder,\"autofocus\":\"\",\"rows\":\"1\"},domProps:{\"value\":(_vm.content)},on:{\"focus\":_vm.onFocusEvent,\"blur\":_vm.onBlurEvent,\"change\":_vm.onTextChanged,\"keydown\":_vm.onTextChanged,\"keyup\":_vm.onTextChanged,\"input\":function($event){if($event.target.composing){ return; }_vm.content=$event.target.value}}}),_c('div',{staticClass:\"send-button\",on:{\"click\":function($event){$event.stopPropagation();return _vm.onCommitEvent($event)}}},[_c('div',{staticClass:\"S6\",class:_vm.content.length == 0 ? 'T3' : 'C5'},[_vm._v(\"发送\")])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommentInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommentInput.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CommentInput.vue?vue&type=template&id=92f7e458&scoped=true&\"\nimport script from \"./CommentInput.vue?vue&type=script&lang=js&\"\nexport * from \"./CommentInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CommentInput.vue?vue&type=style&index=0&id=92f7e458&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 \"92f7e458\",\n null\n \n)\n\nexport default component.exports","import http from \"@/api/http\";\r\n\r\nconst state = {\r\n resp: Object,\r\n playInfo: Object,\r\n currentVideo:String,\r\n respReport:Object,\r\n}\r\n\r\nconst mutations = {\r\n setResp: (state, resp) => {\r\n state.resp = resp\r\n },\r\n setPlayInfo: (state, playInfo) => {\r\n state.playInfo = playInfo\r\n },\r\n setCurrentVideo: (state, videoIdentity) => {\r\n state.currentVideo = videoIdentity\r\n },\r\n setrespReport: (state, respReport) => {\r\n state.respReport = respReport\r\n },\r\n setProgress:(state,progress)=>{\r\n state.progress = progress\r\n }\r\n}\r\n\r\nconst actions = {\r\n request({commit}, params) {\r\n let url = '/Course/api/SetDetail'\r\n return http.post(url, params).then(res => {\r\n commit('setResp', res)\r\n })\r\n },\r\n requestVideo({commit}, params) {\r\n let url = '/Course/api/playinfo'\r\n commit('setCurrentVideo',params.videoIdentity)\r\n return http.post(url, params).then(res => {\r\n commit('setPlayInfo', res)\r\n })\r\n },\r\n requestUploadProgress({commit}, params) {\r\n let courses = state.resp.detail.courses.page.list;\r\n for (let i = 0; i < courses.length; i++) {\r\n let v = courses[i]\r\n if(v.videoIdentity===params.videoIdentity){\r\n v.progress=params.progress\r\n }\r\n }\r\n commit('setProgress',params.progress)\r\n\r\n let url = '/Course/Progress/Report'\r\n return http.post(url, params).then(resp=>{\r\n commit('setrespReport',resp)\r\n })\r\n },\r\n //订阅课\r\n requestDetail({ commit }, params) {\r\n let url = '/Course/Subscribe/SetDetail'\r\n return http.post(url, params).then(res => {\r\n commit('setResp', res)\r\n })\r\n }\r\n\r\n}\r\n\r\nexport default {\r\n namespaced: true,\r\n state,\r\n mutations,\r\n actions\r\n}\r\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShrinkCommentItem.vue?vue&type=style&index=0&id=b210533c&scoped=true&lang=scss&\"","function flattenVNodes(vnodes) {\n var result = [];\n\n function traverse(vnodes) {\n vnodes.forEach(function (vnode) {\n result.push(vnode);\n\n if (vnode.componentInstance) {\n traverse(vnode.componentInstance.$children.map(function (item) {\n return item.$vnode;\n }));\n }\n\n if (vnode.children) {\n traverse(vnode.children);\n }\n });\n }\n\n traverse(vnodes);\n return result;\n} // sort children instances by vnodes order\n\n\nexport function sortChildren(children, parent) {\n var componentOptions = parent.$vnode.componentOptions;\n\n if (!componentOptions || !componentOptions.children) {\n return;\n }\n\n var vnodes = flattenVNodes(componentOptions.children);\n children.sort(function (a, b) {\n return vnodes.indexOf(a.$vnode) - vnodes.indexOf(b.$vnode);\n });\n}","import { sortChildren } from '../utils/vnodes';\nexport function ChildrenMixin(_parent, options) {\n var _inject, _computed;\n\n if (options === void 0) {\n options = {};\n }\n\n var indexKey = options.indexKey || 'index';\n return {\n inject: (_inject = {}, _inject[_parent] = {\n default: null\n }, _inject),\n computed: (_computed = {\n parent: function parent() {\n if (this.disableBindRelation) {\n return null;\n }\n\n return this[_parent];\n }\n }, _computed[indexKey] = function () {\n this.bindRelation();\n\n if (this.parent) {\n return this.parent.children.indexOf(this);\n }\n\n return null;\n }, _computed),\n watch: {\n disableBindRelation: function disableBindRelation(val) {\n if (!val) {\n this.bindRelation();\n }\n }\n },\n mounted: function mounted() {\n this.bindRelation();\n },\n beforeDestroy: function beforeDestroy() {\n var _this = this;\n\n if (this.parent) {\n this.parent.children = this.parent.children.filter(function (item) {\n return item !== _this;\n });\n }\n },\n methods: {\n bindRelation: function bindRelation() {\n if (!this.parent || this.parent.children.indexOf(this) !== -1) {\n return;\n }\n\n var children = [].concat(this.parent.children, [this]);\n sortChildren(children, this.parent);\n this.parent.children = children;\n }\n }\n };\n}\nexport function ParentMixin(parent) {\n return {\n provide: function provide() {\n var _ref;\n\n return _ref = {}, _ref[parent] = this, _ref;\n },\n data: function data() {\n return {\n children: []\n };\n }\n };\n}","import { createNamespace } from '../utils';\nimport { ParentMixin } from '../mixins/relation';\n\nvar _createNamespace = createNamespace('goods-action'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ParentMixin('vanGoodsAction')],\n props: {\n safeAreaInsetBottom: {\n type: Boolean,\n default: true\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"class\": bem({\n unfit: !this.safeAreaInsetBottom\n })\n }, [this.slots()]);\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport Vue from 'vue';\nimport VanDialog from './Dialog';\nimport { isServer } from '../utils';\nvar instance;\n\nfunction isInDocument(element) {\n return document.body.contains(element);\n}\n\nfunction initInstance() {\n if (instance) {\n instance.$destroy();\n }\n\n instance = new (Vue.extend(VanDialog))({\n el: document.createElement('div'),\n // avoid missing animation when first rendered\n propsData: {\n lazyRender: false\n }\n });\n instance.$on('input', function (value) {\n instance.value = value;\n });\n}\n\nfunction Dialog(options) {\n /* istanbul ignore if */\n if (isServer) {\n return Promise.resolve();\n }\n\n return new Promise(function (resolve, reject) {\n if (!instance || !isInDocument(instance.$el)) {\n initInstance();\n }\n\n _extends(instance, Dialog.currentOptions, options, {\n resolve: resolve,\n reject: reject\n });\n });\n}\n\nDialog.defaultOptions = {\n value: true,\n title: '',\n width: '',\n theme: null,\n message: '',\n overlay: true,\n className: '',\n allowHtml: true,\n lockScroll: true,\n transition: 'van-dialog-bounce',\n beforeClose: null,\n overlayClass: '',\n overlayStyle: null,\n messageAlign: '',\n getContainer: 'body',\n cancelButtonText: '',\n cancelButtonColor: null,\n confirmButtonText: '',\n confirmButtonColor: null,\n showConfirmButton: true,\n showCancelButton: false,\n closeOnPopstate: true,\n closeOnClickOverlay: false,\n callback: function callback(action) {\n instance[action === 'confirm' ? 'resolve' : 'reject'](action);\n }\n};\nDialog.alert = Dialog;\n\nDialog.confirm = function (options) {\n return Dialog(_extends({\n showCancelButton: true\n }, options));\n};\n\nDialog.close = function () {\n if (instance) {\n instance.value = false;\n }\n};\n\nDialog.setDefaultOptions = function (options) {\n _extends(Dialog.currentOptions, options);\n};\n\nDialog.resetDefaultOptions = function () {\n Dialog.currentOptions = _extends({}, Dialog.defaultOptions);\n};\n\nDialog.resetDefaultOptions();\n\nDialog.install = function () {\n Vue.use(VanDialog);\n};\n\nDialog.Component = VanDialog;\nVue.prototype.$dialog = Dialog;\nexport default Dialog;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createNamespace } from '../utils';\nimport { route, routeProps } from '../utils/router';\nimport { ChildrenMixin } from '../mixins/relation';\nimport Button from '../button';\n\nvar _createNamespace = createNamespace('goods-action-button'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ChildrenMixin('vanGoodsAction')],\n props: _extends({}, routeProps, {\n type: String,\n text: String,\n icon: String,\n color: String,\n loading: Boolean,\n disabled: Boolean\n }),\n computed: {\n isFirst: function isFirst() {\n var prev = this.parent && this.parent.children[this.index - 1];\n return !prev || prev.$options.name !== this.$options.name;\n },\n isLast: function isLast() {\n var next = this.parent && this.parent.children[this.index + 1];\n return !next || next.$options.name !== this.$options.name;\n }\n },\n methods: {\n onClick: function onClick(event) {\n this.$emit('click', event);\n route(this.$router, this);\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(Button, {\n \"class\": bem([{\n first: this.isFirst,\n last: this.isLast\n }, this.type]),\n \"attrs\": {\n \"size\": \"large\",\n \"type\": this.type,\n \"icon\": this.icon,\n \"color\": this.color,\n \"loading\": this.loading,\n \"disabled\": this.disabled\n },\n \"on\": {\n \"click\": this.onClick\n }\n }, [this.slots() || this.text]);\n }\n});","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { createNamespace, addUnit } from '../utils';\nimport { BORDER_TOP, BORDER_LEFT } from '../utils/constant';\nimport { PopupMixin } from '../mixins/popup';\nimport Button from '../button';\nimport GoodsAction from '../goods-action';\nimport GoodsActionButton from '../goods-action-button';\n\nvar _createNamespace = createNamespace('dialog'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nexport default createComponent({\n mixins: [PopupMixin()],\n props: {\n title: String,\n theme: String,\n width: [Number, String],\n message: String,\n className: null,\n callback: Function,\n beforeClose: Function,\n messageAlign: String,\n cancelButtonText: String,\n cancelButtonColor: String,\n confirmButtonText: String,\n confirmButtonColor: String,\n showCancelButton: Boolean,\n overlay: {\n type: Boolean,\n default: true\n },\n allowHtml: {\n type: Boolean,\n default: true\n },\n transition: {\n type: String,\n default: 'van-dialog-bounce'\n },\n showConfirmButton: {\n type: Boolean,\n default: true\n },\n closeOnPopstate: {\n type: Boolean,\n default: true\n },\n closeOnClickOverlay: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n loading: {\n confirm: false,\n cancel: false\n }\n };\n },\n methods: {\n onClickOverlay: function onClickOverlay() {\n this.handleAction('overlay');\n },\n handleAction: function handleAction(action) {\n var _this = this;\n\n this.$emit(action); // show not trigger close event when hidden\n\n if (!this.value) {\n return;\n }\n\n if (this.beforeClose) {\n this.loading[action] = true;\n this.beforeClose(action, function (state) {\n if (state !== false && _this.loading[action]) {\n _this.onClose(action);\n }\n\n _this.loading.confirm = false;\n _this.loading.cancel = false;\n });\n } else {\n this.onClose(action);\n }\n },\n onClose: function onClose(action) {\n this.close();\n\n if (this.callback) {\n this.callback(action);\n }\n },\n onOpened: function onOpened() {\n this.$emit('opened');\n },\n onClosed: function onClosed() {\n this.$emit('closed');\n },\n genRoundButtons: function genRoundButtons() {\n var _this2 = this;\n\n var h = this.$createElement;\n return h(GoodsAction, {\n \"class\": bem('footer')\n }, [this.showCancelButton && h(GoodsActionButton, {\n \"attrs\": {\n \"size\": \"large\",\n \"type\": \"warning\",\n \"text\": this.cancelButtonText || t('cancel'),\n \"color\": this.cancelButtonColor,\n \"loading\": this.loading.cancel\n },\n \"class\": bem('cancel'),\n \"on\": {\n \"click\": function click() {\n _this2.handleAction('cancel');\n }\n }\n }), this.showConfirmButton && h(GoodsActionButton, {\n \"attrs\": {\n \"size\": \"large\",\n \"type\": \"danger\",\n \"text\": this.confirmButtonText || t('confirm'),\n \"color\": this.confirmButtonColor,\n \"loading\": this.loading.confirm\n },\n \"class\": bem('confirm'),\n \"on\": {\n \"click\": function click() {\n _this2.handleAction('confirm');\n }\n }\n })]);\n },\n genButtons: function genButtons() {\n var _this3 = this,\n _ref;\n\n var h = this.$createElement;\n var multiple = this.showCancelButton && this.showConfirmButton;\n return h(\"div\", {\n \"class\": [BORDER_TOP, bem('footer')]\n }, [this.showCancelButton && h(Button, {\n \"attrs\": {\n \"size\": \"large\",\n \"loading\": this.loading.cancel,\n \"text\": this.cancelButtonText || t('cancel')\n },\n \"class\": bem('cancel'),\n \"style\": {\n color: this.cancelButtonColor\n },\n \"on\": {\n \"click\": function click() {\n _this3.handleAction('cancel');\n }\n }\n }), this.showConfirmButton && h(Button, {\n \"attrs\": {\n \"size\": \"large\",\n \"loading\": this.loading.confirm,\n \"text\": this.confirmButtonText || t('confirm')\n },\n \"class\": [bem('confirm'), (_ref = {}, _ref[BORDER_LEFT] = multiple, _ref)],\n \"style\": {\n color: this.confirmButtonColor\n },\n \"on\": {\n \"click\": function click() {\n _this3.handleAction('confirm');\n }\n }\n })]);\n },\n genContent: function genContent(hasTitle, messageSlot) {\n var h = this.$createElement;\n\n if (messageSlot) {\n return h(\"div\", {\n \"class\": bem('content')\n }, [messageSlot]);\n }\n\n var message = this.message,\n messageAlign = this.messageAlign;\n\n if (message) {\n var _bem, _domProps;\n\n var data = {\n class: bem('message', (_bem = {\n 'has-title': hasTitle\n }, _bem[messageAlign] = messageAlign, _bem)),\n domProps: (_domProps = {}, _domProps[this.allowHtml ? 'innerHTML' : 'textContent'] = message, _domProps)\n };\n return h(\"div\", {\n \"class\": bem('content', {\n isolated: !hasTitle\n })\n }, [h(\"div\", _mergeJSXProps([{}, data]))]);\n }\n }\n },\n render: function render() {\n var h = arguments[0];\n\n if (!this.shouldRender) {\n return;\n }\n\n var message = this.message;\n var messageSlot = this.slots();\n var title = this.slots('title') || this.title;\n var Title = title && h(\"div\", {\n \"class\": bem('header', {\n isolated: !message && !messageSlot\n })\n }, [title]);\n return h(\"transition\", {\n \"attrs\": {\n \"name\": this.transition\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 \"attrs\": {\n \"role\": \"dialog\",\n \"aria-labelledby\": this.title || message\n },\n \"class\": [bem([this.theme]), this.className],\n \"style\": {\n width: addUnit(this.width)\n }\n }, [Title, this.genContent(title, messageSlot), this.theme === 'round-button' ? this.genRoundButtons() : this.genButtons()])]);\n }\n});","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAABS2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzggNzkuMTU5ODI0LCAyMDE2LzA5LzE0LTAxOjA5OjAxICAgICAgICAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIi8+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgo8P3hwYWNrZXQgZW5kPSJyIj8+IEmuOgAAAStJREFUSIm11z1OwzAUAOCP0IWVqj1Cl3IGpLICYoLzMZeNn5Veor1Eq3IGhiRSFSWxnThvtC1/8s97sq9Wq9UN3vCFP9PGLZ6xneEV79jjAaeJ0AV+cQcFfnCoGnbVgCnRA74LnJUrPWA9Ad5ENzgXVedxIrwNPVFudR258U60CefEe9E2OAceRLvgMXgU2gcPwRfVmCAagmt8E4HX6DoGjYFVE/ThyWgs3IcPQmEWCV/iNbSr2pPRVLgNNwQlfquzRyrcPNPBFS4FbrtIMak2Cu66vaFUGwWHUmYQHoJj8zQZ74NTi0MS3gUPrUjReBs8uAym4E14LBqNX8LLTGgUXsNL5cshFxrEC8wbaO7fRBs+L/DYQI8Z0S78aYYPXONT+auYKk64xwu2/8tvnxC/XFHrAAAAAElFTkSuQmCC\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=style&index=0&id=99daa944&scoped=true&lang=css&\"","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--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommentItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"prism-player\",style:(_vm.playStyle),attrs:{\"id\":_vm.playerId}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VueAliplayer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VueAliplayer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./VueAliplayer.vue?vue&type=template&id=4e7890cb&\"\nimport script from \"./VueAliplayer.vue?vue&type=script&lang=js&\"\nexport * from \"./VueAliplayer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VueAliplayer.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","import { on } from '../utils/dom/event';\nvar MIN_DISTANCE = 10;\n\nfunction getDirection(x, y) {\n if (x > y && x > MIN_DISTANCE) {\n return 'horizontal';\n }\n\n if (y > x && y > MIN_DISTANCE) {\n return 'vertical';\n }\n\n return '';\n}\n\nexport var TouchMixin = {\n data: function data() {\n return {\n direction: ''\n };\n },\n methods: {\n touchStart: function touchStart(event) {\n this.resetTouchStatus();\n this.startX = event.touches[0].clientX;\n this.startY = event.touches[0].clientY;\n },\n touchMove: function touchMove(event) {\n var touch = event.touches[0]; // Fix: Safari back will set clientX to negative number\n\n this.deltaX = touch.clientX < 0 ? 0 : touch.clientX - this.startX;\n this.deltaY = touch.clientY - this.startY;\n this.offsetX = Math.abs(this.deltaX);\n this.offsetY = Math.abs(this.deltaY);\n this.direction = this.direction || getDirection(this.offsetX, this.offsetY);\n },\n resetTouchStatus: function resetTouchStatus() {\n this.direction = '';\n this.deltaX = 0;\n this.deltaY = 0;\n this.offsetX = 0;\n this.offsetY = 0;\n },\n // avoid Vue 2.6 event bubble issues by manually binding events\n // https://github.com/youzan/vant/issues/3015\n bindTouchEvent: function bindTouchEvent(el) {\n var onTouchStart = this.onTouchStart,\n onTouchMove = this.onTouchMove,\n onTouchEnd = this.onTouchEnd;\n on(el, 'touchstart', onTouchStart);\n on(el, 'touchmove', onTouchMove);\n\n if (onTouchEnd) {\n on(el, 'touchend', onTouchEnd);\n on(el, 'touchcancel', onTouchEnd);\n }\n }\n }\n};","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjQ5NzczMTg1QkFCNTExRUFBODJGOTdEMEYxQUJGNzM0IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjQ5NzczMTg2QkFCNTExRUFBODJGOTdEMEYxQUJGNzM0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NDk3NzMxODNCQUI1MTFFQUE4MkY5N0QwRjFBQkY3MzQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NDk3NzMxODRCQUI1MTFFQUE4MkY5N0QwRjFBQkY3MzQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6UctULAAADZElEQVR42uybW4hMcRzH/2caixrlfital13TrM0TaaN4kNxJLi9KKbehyKXlwRPJy5ZElDYh5fKEsIvcWvdLSpL1gCTKsIPF7sb4/prfbKeTuZyr//9/9lefZprzP2fOZ/73//+MEU0+FGGK6H/4zglgEvgDroBnugqXgcNgmemzDNgLNoPfQdxEJEDhXRZZCgNsABuDuomghAeDZIHjtSCmkzDlYM8Cx/uBVboI9wFrSki3CfTQQXg96FVCuiFguerCMRYuNbb43XP4LbwS9LeRfiRYqqpwd66XdqPWz/vyU5jq41AH51WBeaoJUz3c6uL8baoJL+H66DTGg2mqCBtcD93GdlWEqf6N9eA6U0CNCsJe5ozndTnq8txyUAHioBIkuP55FbNAI3gJXoBmfv+G59O+CA80CVXwa5wbpTKfBy4GN17WBqyNxXM08w9C71N2hGM8Z61hMaK3kC9oUFPNWCNlKhFN4Cjo6PwFTWtao0GDy+5ExngKpoOP1karXkNZinHggLWVHgUmC31jARhgFh4m9A6DG99OYarkGY2Ff4DXZuH34LjGwvtAq7XRWg1uaih7Fuz419CSsn0muKWR7HmwCLTnG0u38nCuSQPZC2ChWTbf5OEb5/RthWUvclfUXups6StL31FQ9lI+2WLTwzSYAe4pJNvAsm1O58NpHoc+UEC2kWV/uV0ASPP0TOad88ss+9OrFY+c9CMJZa+C+dytCq+EKVpY+rFEstfA3FJl7QpTfGHpJxLI3gCz7cg6Eab4DI5IIHzQrqxTYYqEBMKO7sGpcFXYhEOVw7RT31cCYVoy7haEsAy5S0FLzPEwCTu6ly5hRVrorhz2S3iQyD41J0tU2m2pIwoX51xLPcZPYS+KM81Z94jsfk9H0MU6SGHawK7nvpOeAUny9U4Ld7seCRmLNC2Z0i7eCvDW9PkrsFhk96Ovyyg83Gb6+2CqyK51F3rU/y6nmwOe2/yOEX4Kp0pMRzlHz0xOtJlztFNQzSXhncf35Ej4TJHjn8A6LvonHdbNXF2nLoeeCGopkv6En8J1XB+t8R3s5OK1X+RZBHfQmu/mWVFdnmueAsfsXNRw8L+lCDc0BD3FQ2vWh8AHn/vccrCWS0+KS9s5u6XICNsftYxMJhMq4YgIWfwVYABqd6CPkB0SEQAAAABJRU5ErkJggg==\"","'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","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdTip.vue?vue&type=style&index=0&id=80568d24&scoped=true&lang=scss&\"","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","import Vue from 'vue';\r\nimport Vuex from 'vuex';\r\n\r\nVue.use(Vuex);\r\n\r\nconst store = new Vuex.Store({\r\n state: {\r\n }\r\n});\r\n\r\nconst storeContext = require.context('@/store/modules', true, /\\.js$/);\r\n\r\nstoreContext.keys().forEach(modules => {\r\n store.registerModule(modules.replace(/(^\\.\\/)|(\\.js$)/g, ''), storeContext(modules).default);\r\n});\r\n\r\nVue.prototype.$store = store;\r\nexport default store;\r\n","/**\n * Vue Router support\n */\nfunction isRedundantNavigation(err) {\n return err.name === 'NavigationDuplicated' || // compatible with vue-router@3.3\n err.message && err.message.indexOf('redundant navigation') !== -1;\n}\n\nexport function route(router, config) {\n var to = config.to,\n url = config.url,\n replace = config.replace;\n\n if (to && router) {\n var promise = router[replace ? 'replace' : 'push'](to);\n /* istanbul ignore else */\n\n if (promise && promise.catch) {\n promise.catch(function (err) {\n if (err && !isRedundantNavigation(err)) {\n throw err;\n }\n });\n }\n } else if (url) {\n replace ? location.replace(url) : location.href = url;\n }\n}\nexport function functionalRoute(context) {\n route(context.parent && context.parent.$router, context.props);\n}\nexport var routeProps = {\n url: String,\n replace: Boolean,\n to: [String, Object]\n};","import ym from './ym'\r\n\r\n/* eslint-disable no-inner-declarations */\r\nlet appInfo = Object.create(null)\r\n\r\n/**\r\n * 转化为int类型\r\n * 如果不是无法转换为有效的int类型,则返回空字符串\r\n */\r\nfunction parseToInt(num) {\r\n if (!num) return ''\r\n num = parseInt(num, 10)\r\n return isNaN(num) ? '' : num\r\n}\r\n\r\nconst platform = (() => {\r\n if (typeof window === 'undefined') {\r\n return {}\r\n }\r\n\r\n const u = navigator.userAgent\r\n return {\r\n iOS: /ipad|iphone|mac/i.test(u),\r\n Android: /android/i.test(u),\r\n Weixin: /micromessenger/i.test(u)\r\n }\r\n})()\r\n\r\n/**\r\n * 解析url param\r\n */\r\nfunction getQueryStringArgs() {\r\n if (typeof window === 'undefined') {\r\n return {}\r\n }\r\n\r\n const qs = location.search.length > 0 ? location.search.substring(1) : ''\r\n const args = {}\r\n const items = qs.length ? qs.split('&') : []\r\n let item = null\r\n let name = null\r\n let value = null\r\n let i = 0\r\n const len = items.length\r\n const regx = new RegExp('(.*)=([^$].*)$', 'i')\r\n\r\n for (i = 0; i < len; i++) {\r\n item = items[i].match(regx)\r\n if (!item) {\r\n continue\r\n }\r\n // decodeURIComponent解码\r\n name = decodeURIComponent(item[1])\r\n // 移除某些版本的意外字符(换行符)\r\n const s = item[2].replace(/%0A/g, '')\r\n value = decodeURIComponent(s)\r\n if (name.length && !args[name]) {\r\n args[name] = value\r\n }\r\n }\r\n\r\n return args\r\n}\r\n\r\nconst refreshAppInfoCallbacks = []\r\n\r\n/**\r\n * 调用客户端的goods.getClientInfo方法,获取用户基础的信息\r\n * @param callback {Function} 用户信息刷新后的回调\r\n */\r\nfunction getClientInfo(callback = () => {}) {\r\n if (typeof window === 'undefined') {\r\n return\r\n }\r\n\r\n refreshAppInfoCallbacks.push(callback)\r\n\r\n if (refreshAppInfoCallbacks.length > 1) {\r\n return\r\n }\r\n\r\n const callbackMiddleware = result => {\r\n refreshAppInfoCallbacks.forEach(callback => callback(result))\r\n refreshAppInfoCallbacks.length = 0\r\n }\r\n\r\n window.WEB_CALLBACK_APPINFO = json => {\r\n let result = json\r\n if (typeof json === 'string') {\r\n result = JSON.parse(json)\r\n }\r\n\r\n updateAppInfo(result)\r\n\r\n callbackMiddleware(result)\r\n }\r\n\r\n let result\r\n\r\n const loadAppinfo = () => {\r\n if (window.goods.getAppInfo || window.goods.getClientInfo) {\r\n try {\r\n if (window.goods.getClientInfo) {\r\n window.goods.getClientInfo('WEB_CALLBACK_APPINFO')\r\n } else {\r\n result = window.goods.getAppInfo(\r\n JSON.stringify({\r\n callback: 'WEB_CALLBACK_APPINFO'\r\n })\r\n )\r\n }\r\n } catch (err) {\r\n result = window.goods.getAppInfo()\r\n }\r\n if (result) {\r\n result = typeof result === 'string' ? JSON.parse(result) : result\r\n updateAppInfo(result)\r\n callbackMiddleware(result)\r\n }\r\n }\r\n }\r\n\r\n if (window.goods) {\r\n loadAppinfo()\r\n } else {\r\n callbackMiddleware(result)\r\n }\r\n}\r\n\r\n/**\r\n * 更新app信息\r\n *\r\n * @param {object} target\r\n *\r\n * @memberOf appInfo\r\n */\r\nfunction updateAppInfo(target) {\r\n const app = {}\r\n\r\n for (const key in target) {\r\n if (Object.hasOwnProperty.call(target, key)) {\r\n const element = target[key]\r\n if (element !== null && element !== '') {\r\n // 键值全部转换为小写,防止部分参数小写部分大写的异常情况\r\n app[key.toLowerCase()] = target[key]\r\n }\r\n }\r\n }\r\n\r\n appInfo = { ...appInfo, ...app }\r\n}\r\n\r\nfunction getParam(name) {\r\n // 键值全部转换为小写,防止部分参数小写部分大写的异常情况\r\n const result = appInfo[name.toLocaleLowerCase()]\r\n return result !== undefined ? result : ''\r\n}\r\n\r\n// 初始化参数\r\nupdateAppInfo(getQueryStringArgs())\r\n\r\nexport default {\r\n /**\r\n * 是否为手机号实名登陆\r\n *\r\n * @memberOf appInfo\r\n */\r\n get isPhone() {\r\n const loginType = parseInt(getParam('loginType'), 10)\r\n const isPhoneNum = getParam('isPhoneNum')\r\n\r\n return loginType === 2 && (isPhoneNum || isPhoneNum === '')\r\n },\r\n /**\r\n * 是否为实名登录\r\n */\r\n get isLogin() {\r\n const loginType = this.loginType\r\n return !(loginType === '' || loginType === 4)\r\n },\r\n /**\r\n * 是否已绑定手机号\r\n */\r\n get isBindPhone() {\r\n return this.loginType === 2 || getParam('hasBindPhone')\r\n },\r\n /**\r\n * 检查是否为手机号登录或者第三方绑定手机号,如果不是则自动跳转登录\r\n */\r\n get checkBindPhone() {\r\n let isBindPhone = true\r\n if (!this.isLogin) {\r\n ym.login()\r\n isBindPhone = false\r\n } else if (!this.isPhone && !getParam('hasBindPhone')) {\r\n ym.bindPhone()\r\n isBindPhone = false\r\n }\r\n return isBindPhone\r\n },\r\n /**\r\n * 是否为益盟号登录\r\n */\r\n get isEmLogin() {\r\n return this.loginType === 0\r\n },\r\n\r\n /**\r\n * 老版token\r\n */\r\n get webAuthToken() {\r\n let token = getParam('webAuthToken')\r\n\r\n if (!token) {\r\n return ''\r\n }\r\n\r\n if (platform.Android) {\r\n token = decodeURIComponent(token)\r\n }\r\n\r\n return token\r\n },\r\n\r\n /**\r\n * 新版token\r\n */\r\n get emoneyToken() {\r\n return getParam('emoneyToken') || getParam('token')\r\n },\r\n\r\n /**\r\n * 益盟股票token\r\n */\r\n get token() {\r\n const token = getParam('token') || getParam('emoneyToken')\r\n\r\n return token || ''\r\n },\r\n\r\n /**\r\n * 版本\r\n */\r\n get mv() {\r\n const currentMv = getParam('mv') || getParam('appVersion')\r\n\r\n return currentMv\r\n },\r\n\r\n /**\r\n * 比较当前版本是否大于或等于目标版本\r\n * @param {string} targetMv - 目标版本\r\n * @param {string} [currentMv] - 当前版本\r\n * @param {boolean} [isIncludeEqual] - 是否包含等于\r\n */\r\n compareMv(targetMv, currentMv, isIncludeEqual = true) {\r\n if (!targetMv) {\r\n console.warn('版本比对异常:请传入要比对的版本')\r\n return\r\n }\r\n\r\n if (typeof currentMv === 'boolean') {\r\n isIncludeEqual = currentMv\r\n currentMv = undefined\r\n }\r\n\r\n let isSupport = false\r\n currentMv = currentMv || this.mv\r\n\r\n if (targetMv === currentMv) {\r\n isSupport = isIncludeEqual\r\n } else {\r\n const targetMvArr = targetMv.split('.')\r\n const currentMvArr = currentMv.split('.')\r\n if (currentMvArr.length === targetMvArr.length) {\r\n for (let i = 0; i < currentMvArr.length; i++) {\r\n if (currentMvArr[i] !== targetMvArr[i]) {\r\n isSupport = +currentMvArr[i] > +targetMvArr[i]\r\n break\r\n }\r\n }\r\n } else {\r\n isSupport = currentMvArr.length > targetMvArr.length\r\n }\r\n }\r\n\r\n return isSupport\r\n },\r\n\r\n /**\r\n * 平台\r\n * 2 - 益盟经典版\r\n * 4 - 益盟股票\r\n * 15 - 益盟加强版\r\n */\r\n get pd() {\r\n return (\r\n parseToInt(getParam('pd') || getParam('pid') || getParam('appId')) || 4\r\n )\r\n },\r\n\r\n /**\r\n * 平台号\r\n * 9 - 安卓\r\n * 10 - 苹果\r\n */\r\n get ar() {\r\n let ar = getParam('ar')\r\n const platform = getParam('platform')\r\n\r\n if (!ar && platform) {\r\n ar = platform === 'android' ? '10' : '9'\r\n }\r\n\r\n return parseToInt(ar)\r\n },\r\n\r\n /**\r\n * 渠道号\r\n */\r\n get vd() {\r\n return parseToInt(getParam('vd') || getParam('channelId'))\r\n },\r\n\r\n /**\r\n * 登录类型\r\n * 2 - 手机号登录\r\n * 0 - 匿名登录\r\n */\r\n get loginType() {\r\n return parseToInt(getParam('loginType'))\r\n },\r\n\r\n /**\r\n * 是否为夜间模式\r\n * @returns {boolean} true-夜间模式\r\n */\r\n get isNight() {\r\n const css = getParam('css')\r\n return css === 'b' || css === 'night'\r\n },\r\n\r\n platform,\r\n getParam,\r\n updateAppInfo,\r\n getClientInfo\r\n}\r\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","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjA4ODJFQzU2QjlERjExRUE4OUUwRUFBRjNGNDAwMDQxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjA4ODJFQzU3QjlERjExRUE4OUUwRUFBRjNGNDAwMDQxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDg4MkVDNTRCOURGMTFFQTg5RTBFQUFGM0Y0MDAwNDEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDg4MkVDNTVCOURGMTFFQTg5RTBFQUFGM0Y0MDAwNDEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7t1aldAAADjUlEQVR42syYW2wMURjHu1vVoNRL4xKX9MFurQe3hkRdWg+k7ioSUQ8SJBIPEnEJDUIQHkTixb1CCIoQJBIeSBGClkj31mq7XaTKAxGqcVv/L/lPcrKZTqedszs9yS8zmev/fPOd8//OeHw+X4abLRqNWp73anpPJtgPPoM2sAN4dDy4jyaBGynKaCK2FZx1+mAdEewHtnK/DKzh/k4dAdAhUAQNAffBDVAJHoJ8sMJtgVlgC/fPKMcvc7vd6TucClwFRoEH4Ipy/ASoBgGwxC2Bcu827l8wOX9TiaIrApcBPyNVaXL+CHgBCsGcdAv0KJG5bnHdbW4r0i2wFEwEz8BRi+tkPgyCmaAolRO1h4NhDBBvXM/jt7q47x+4A8bxk0sq1IMG8M7Wi5O8eDDzysAQ5OOErLbHYIbNDhq5qLYfFGsIjnAf9hz9liwwF5wDCy0+e5wPkoc8Ape6+bXK2SEfOz6ik+v+gqtiABDabnziA2Ax959LL0iD0st2h3PmRWK0HEWsbAu4LaQDNYu/GwKNBJbEf52mSus7qEWUatWDfr9/Fq1ymjqKw9zuBdlu1YYQl6tURSFVoPjpe+ZgFejrgrhBtEuZ1BvBHlWgiJsNPoBFFJmVRnEDKW4uaAIl+PRtZtOMj8Y/nF66HPxJsb4cBqSUA6MY4uKdOUk9I9nKKqSK5Xyq2gBGTsTFGLl4V1YXpciPYClFelMgrj/FzQMtFNdi14sjFNnGMr5K1yJIWSaIuPk0ABEX626xEKbITyytTmsUeAosoB+LuGa7XmzWxOhrOD9KzzscipO57isQv50EcY1Oy62YMi/+0hC938p6JqajHhzL/Kth+eS0iae/5dfI1yEwoFqPphZS0qdXCwzoEGj0MqhRYFBnBI2H1Nm4Ntumh2uLoFjRaKWi7qyN5I+iDo70kyDP4voItwUoFLxOBBbwmhqW4maLrmMUv5ripLhYB96AgxYjucnOSPbaHCBhk3MVFCErvATXKJIO4/kTaSj/PLwCm3qah3YFBpP+ZsmKbh/nSCnPp4CVnN9C9O/p4CmYAA6zjCs3ERhwItBwkHy+9B49uYjRkzKpBLw0ufcJ1xVlzLli/sO5Sx/OS3pHj7x4Kl+UmbT83A3Od8NZJFfXgl1gmHJccnYy/LjOSbEga4TNHNHXwHHw00H1vIFL3C/gEMRVO4lgyltXf/k9iUQioze3/wIMALQh6m5LuwxUAAAAAElFTkSuQmCC\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommentDetail.vue?vue&type=style&index=0&id=091af418&scoped=true&lang=css&\"","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n});\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ViewPoint.vue?vue&type=style&index=0&id=2d433b14&lang=scss&scoped=true&\"","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.dayjs=e()}(this,function(){\"use strict\";var t=\"millisecond\",e=\"second\",n=\"minute\",r=\"hour\",i=\"day\",s=\"week\",u=\"month\",a=\"quarter\",o=\"year\",f=\"date\",h=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[^0-9]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,c=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,d={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\")},$=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},l={s:$,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+$(r,2,\"0\")+\":\"+$(i,2,\"0\")},m:function t(e,n){if(e.date() 0 ? '10' : '01';\n var el = getScroller(event.target, this.$el);\n var scrollHeight = el.scrollHeight,\n offsetHeight = el.offsetHeight,\n scrollTop = el.scrollTop;\n var status = '11';\n /* istanbul ignore next */\n\n if (scrollTop === 0) {\n status = offsetHeight >= scrollHeight ? '00' : '01';\n } else if (scrollTop + offsetHeight >= scrollHeight) {\n status = '10';\n }\n /* istanbul ignore next */\n\n\n if (status !== '11' && this.direction === 'vertical' && !(parseInt(status, 2) & parseInt(direction, 2))) {\n preventDefault(event, true);\n }\n },\n renderOverlay: function renderOverlay() {\n var _this = this;\n\n if (this.$isServer || !this.value) {\n return;\n }\n\n this.$nextTick(function () {\n _this.updateZIndex(_this.overlay ? 1 : 0);\n\n if (_this.overlay) {\n openOverlay(_this, {\n zIndex: context.zIndex++,\n duration: _this.duration,\n className: _this.overlayClass,\n customStyle: _this.overlayStyle\n });\n } else {\n closeOverlay(_this);\n }\n });\n },\n updateZIndex: function updateZIndex(value) {\n if (value === void 0) {\n value = 0;\n }\n\n this.$el.style.zIndex = ++context.zIndex + value;\n }\n }\n };\n}","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--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ViewPoint.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AudioPlay.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AudioPlay.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AudioPlay.vue?vue&type=template&id=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--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Stock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Detail.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Detail.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Detail.vue?vue&type=template&id=32d0821a&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=32d0821a&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 \"32d0821a\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-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--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Detail.vue?vue&type=style&index=0&id=32d0821a&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VueAliplayer.vue?vue&type=style&index=0&lang=css&\"","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--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./lottie.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./lottie.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./lottie.vue?vue&type=template&id=3c796cc7&\"\nimport script from \"./lottie.vue?vue&type=script&lang=js&\"\nexport * from \"./lottie.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","module.exports = __webpack_public_path__ + \"img/bg_comments.0387df04.png\";","(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}));","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommentInput.vue?vue&type=style&index=0&id=92f7e458&scoped=true&lang=css&\"","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--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommentDetail.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShrinkCommentItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommentInputPopup.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Comment.vue?vue&type=template&id=99daa944&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=99daa944&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 \"99daa944\",\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","function isWindow(val) {\n return val === window;\n} // get nearest scroll element\n// https://github.com/youzan/vant/issues/3823\n\n\nvar overflowScrollReg = /scroll|auto/i;\nexport function getScroller(el, root) {\n if (root === void 0) {\n root = window;\n }\n\n var node = el;\n\n while (node && node.tagName !== 'HTML' && node.tagName !== 'BODY' && node.nodeType === 1 && node !== root) {\n var _window$getComputedSt = window.getComputedStyle(node),\n overflowY = _window$getComputedSt.overflowY;\n\n if (overflowScrollReg.test(overflowY)) {\n return node;\n }\n\n node = node.parentNode;\n }\n\n return root;\n}\nexport function getScrollTop(el) {\n var top = 'scrollTop' in el ? el.scrollTop : el.pageYOffset; // iOS scroll bounce cause minus scrollTop\n\n return Math.max(top, 0);\n}\nexport function setScrollTop(el, value) {\n if ('scrollTop' in el) {\n el.scrollTop = value;\n } else {\n el.scrollTo(el.scrollX, value);\n }\n}\nexport function getRootScrollTop() {\n return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n}\nexport function setRootScrollTop(value) {\n setScrollTop(window, value);\n setScrollTop(document.body, value);\n} // get distance from element top to page top or scroller top\n\nexport function getElementTop(el, scroller) {\n if (isWindow(el)) {\n return 0;\n }\n\n var scrollTop = scroller ? getScrollTop(scroller) : getRootScrollTop();\n return el.getBoundingClientRect().top + scrollTop;\n}\nexport function getVisibleHeight(el) {\n if (isWindow(el)) {\n return el.innerHeight;\n }\n\n return el.getBoundingClientRect().height;\n}\nexport function getVisibleTop(el) {\n if (isWindow(el)) {\n return 0;\n }\n\n return el.getBoundingClientRect().top;\n}","// color\nexport var RED = '#ee0a24'; // border\n\nexport var BORDER = 'van-hairline';\nexport var BORDER_TOP = BORDER + \"--top\";\nexport var BORDER_LEFT = BORDER + \"--left\";\nexport var BORDER_BOTTOM = BORDER + \"--bottom\";\nexport var BORDER_SURROUND = BORDER + \"--surround\";\nexport var BORDER_TOP_BOTTOM = BORDER + \"--top-bottom\";\nexport var BORDER_UNSET_TOP_BOTTOM = BORDER + \"-unset--top-bottom\";","import Vue from 'vue'\r\n\r\nexport const state = Vue.observable({ appInfoResp: Object })\r\n\r\n\r\nexport function requestappInfo(callBack) {\r\n window.clientInfoCallback = (info) => {\r\n if (typeof info === 'string') {\r\n info = JSON.parse(info)\r\n }\r\n state.appInfoResp = info\r\n if(callBack){\r\n callBack(info)\r\n }\r\n }\r\n if (window.goods) {\r\n window.goods.getClientInfo(`clientInfoCallback`)\r\n }\r\n}\r\n\r\nexport function isIOS() {\r\n return state.appInfoResp.platform === 'ios'\r\n}\r\nexport function isAndroid() {\r\n return state.appInfoResp.platform === 'android'\r\n}\r\n\r\nexport function getStatusHeight() {\r\n if (state.appInfoResp.platform === 'ios') {\r\n return state.appInfoResp.statusBarHeight\r\n }\r\n return document.documentElement.clientHeight * state.appInfoResp.statusBarHeight / state.appInfoResp.screenHeight\r\n}\r\n\r\nexport function getAppInfo() {\r\n return state.appInfoResp\r\n}\r\n\r\nexport function titleStatusBarHeight() {\r\n return state.appInfoResp.statusBarHeight + state.appInfoResp.titleBarHeight\r\n}\r\n\r\n// const TYPE_NONE = -1\r\n// const TYPE_PHONE = 2\r\nconst TYPE_GUEST = 4\r\n\r\nexport function isGuest() {\r\n if (!state.appInfoResp.loginType || parseInt(state.appInfoResp.loginType) === TYPE_GUEST) {\r\n return true\r\n }\r\n return false\r\n}\r\n\r\n\r\nexport default state","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace } from '../utils';\nimport { emit, inherit } from '../utils/functional';\nimport { BORDER_SURROUND } from '../utils/constant';\nimport { routeProps, functionalRoute } from '../utils/router'; // Components\n\nimport Icon from '../icon';\nimport Loading from '../loading'; // Types\n\nvar _createNamespace = createNamespace('button'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nfunction Button(h, props, slots, ctx) {\n var _ref;\n\n var tag = props.tag,\n icon = props.icon,\n type = props.type,\n color = props.color,\n plain = props.plain,\n disabled = props.disabled,\n loading = props.loading,\n hairline = props.hairline,\n loadingText = props.loadingText,\n iconPosition = props.iconPosition;\n var style = {};\n\n if (color) {\n style.color = plain ? color : 'white';\n\n if (!plain) {\n // Use background instead of backgroundColor to make linear-gradient work\n style.background = color;\n } // hide border when color is linear-gradient\n\n\n if (color.indexOf('gradient') !== -1) {\n style.border = 0;\n } else {\n style.borderColor = color;\n }\n }\n\n function onClick(event) {\n if (!loading && !disabled) {\n emit(ctx, 'click', event);\n functionalRoute(ctx);\n }\n }\n\n function onTouchstart(event) {\n emit(ctx, 'touchstart', event);\n }\n\n var classes = [bem([type, props.size, {\n plain: plain,\n loading: loading,\n disabled: disabled,\n hairline: hairline,\n block: props.block,\n round: props.round,\n square: props.square\n }]), (_ref = {}, _ref[BORDER_SURROUND] = hairline, _ref)];\n\n function renderIcon() {\n if (loading) {\n return slots.loading ? slots.loading() : h(Loading, {\n \"class\": bem('loading'),\n \"attrs\": {\n \"size\": props.loadingSize,\n \"type\": props.loadingType,\n \"color\": \"currentColor\"\n }\n });\n }\n\n if (icon) {\n return h(Icon, {\n \"attrs\": {\n \"name\": icon,\n \"classPrefix\": props.iconPrefix\n },\n \"class\": bem('icon')\n });\n }\n }\n\n function renderContent() {\n var content = [];\n\n if (iconPosition === 'left') {\n content.push(renderIcon());\n }\n\n var text;\n\n if (loading) {\n text = loadingText;\n } else {\n text = slots.default ? slots.default() : props.text;\n }\n\n if (text) {\n content.push(h(\"span\", {\n \"class\": bem('text')\n }, [text]));\n }\n\n if (iconPosition === 'right') {\n content.push(renderIcon());\n }\n\n return content;\n }\n\n return h(tag, _mergeJSXProps([{\n \"style\": style,\n \"class\": classes,\n \"attrs\": {\n \"type\": props.nativeType,\n \"disabled\": disabled\n },\n \"on\": {\n \"click\": onClick,\n \"touchstart\": onTouchstart\n }\n }, inherit(ctx)]), [h(\"div\", {\n \"class\": bem('content')\n }, [renderContent()])]);\n}\n\nButton.props = _extends({}, routeProps, {\n text: String,\n icon: String,\n color: String,\n block: Boolean,\n plain: Boolean,\n round: Boolean,\n square: Boolean,\n loading: Boolean,\n hairline: Boolean,\n disabled: Boolean,\n iconPrefix: String,\n nativeType: String,\n loadingText: String,\n loadingType: String,\n tag: {\n type: String,\n default: 'button'\n },\n type: {\n type: String,\n default: 'default'\n },\n size: {\n type: String,\n default: 'normal'\n },\n loadingSize: {\n type: String,\n default: '20px'\n },\n iconPosition: {\n type: String,\n default: 'left'\n }\n});\nexport default createComponent(Button);","'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","import http from \"@/api/http\";\r\n\r\nconst state = {\r\n viewPointResp: Object,\r\n RelatesResp: Object\r\n}\r\n\r\nconst mutations = {\r\n setviewPointResp: (state, resp) => {\r\n state.viewPointResp = resp\r\n },\r\n relatesResp: (state, resp) => {\r\n state.RelatesResp = resp\r\n },\r\n}\r\n\r\nconst actions = {\r\n requestviewPoint({ commit }, params) {\r\n let url = '/DianJin/api/detail'\r\n return http.post(url, params).then(res => {\r\n commit('setviewPointResp', res)\r\n })\r\n },\r\n requestRelates({ commit }, params) {\r\n let url = '/DianJin/Api/Relates'\r\n return http.post(url, params).then(res => {\r\n commit('relatesResp', res)\r\n })\r\n },\r\n}\r\n\r\nexport default {\r\n namespaced: true,\r\n state,\r\n mutations,\r\n actions\r\n}","import '../../style/base.css';\nimport '../../info/index.css';\nimport '../index.css';","var map = {\n\t\"./comment.js\": \"f07f\",\n\t\"./follow.js\": \"d76a\",\n\t\"./video.js\": \"1c11\",\n\t\"./viewPointDetail.js\": \"bb64\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"c653\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VideoMask.vue?vue&type=style&index=0&id=3db0e79c&scoped=true&lang=css&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAeCAYAAAA/xX6fAAABS2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzggNzkuMTU5ODI0LCAyMDE2LzA5LzE0LTAxOjA5OjAxICAgICAgICAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIi8+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgo8P3hwYWNrZXQgZW5kPSJyIj8+IEmuOgAAAYdJREFUSIm91r1PFEEcxvHPATZKi7H1QuyIsaAggYTGwkBiTSAkBgyWvFWIlS0VlRG1IPwDojQ0FJdoQUFvqGiA0AINECjmNln3vGNffZLN7jy7v/lmJjPPTq1eryugCYziJ36kKegpAHuDb83ntxjGr/uKunLC6liPtWt4kaYwD7AbW+iNeedSTmke4AqGEt4ijqoADuJDwtvGRtoOsgAfClP5IOadYjZDH5mAa3gWa982YWdVAMfwLuF9FvZfJqUB9uGLsPQj/cFSVlha4AaexNrXmMJFFcAZvE54H7GfBwa1DlnajwN/b/DfGMFNXmC7EXZjU2uaTBeBdQK+15om8zgsAmsHHMRqwvuOr0Vh/wI+0pomJ8LvpxQlgaWkSVrgOOYS7z9hpyxYEriuNU2Wy4TFgQN4GvOvhDS5rAo4FvNusKBAmnRSdIgab96PMYm9KmCEET4WNvkunlcJi4AvhXPKKyUu/3bqEVLkvGpQpK7/CYuAkRpCslR5NfKevPOqdv8nJesO1XVU9s9hd2UAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADMAAAAzCAYAAAA6oTAqAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjY3N0YyMkQ2QjA4MjExRUE4NjU5QzNDNEFFQ0Y5NEZGIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjY3N0YyMkQ3QjA4MjExRUE4NjU5QzNDNEFFQ0Y5NEZGIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Njc3RjIyRDRCMDgyMTFFQTg2NTlDM0M0QUVDRjk0RkYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Njc3RjIyRDVCMDgyMTFFQTg2NTlDM0M0QUVDRjk0RkYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz57Tv7ZAAAHgUlEQVR42txa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\"","var lockCount = 0;\nexport function lockClick(lock) {\n if (lock) {\n if (!lockCount) {\n document.body.classList.add('van-toast--unclickable');\n }\n\n lockCount++;\n } else {\n lockCount--;\n\n if (!lockCount) {\n document.body.classList.remove('van-toast--unclickable');\n }\n }\n}","// Utils\nimport { createNamespace, isDef } from '../utils';\nimport { lockClick } from './lock-click'; // Mixins\n\nimport { PopupMixin } from '../mixins/popup'; // Components\n\nimport Icon from '../icon';\nimport Loading from '../loading';\n\nvar _createNamespace = createNamespace('toast'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [PopupMixin()],\n props: {\n icon: String,\n className: null,\n iconPrefix: String,\n loadingType: String,\n forbidClick: Boolean,\n closeOnClick: Boolean,\n message: [Number, String],\n type: {\n type: String,\n default: 'text'\n },\n position: {\n type: String,\n default: 'middle'\n },\n transition: {\n type: String,\n default: 'van-fade'\n },\n lockScroll: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n clickable: false\n };\n },\n mounted: function mounted() {\n this.toggleClickable();\n },\n destroyed: function destroyed() {\n this.toggleClickable();\n },\n watch: {\n value: 'toggleClickable',\n forbidClick: 'toggleClickable'\n },\n methods: {\n onClick: function onClick() {\n if (this.closeOnClick) {\n this.close();\n }\n },\n toggleClickable: function toggleClickable() {\n var clickable = this.value && this.forbidClick;\n\n if (this.clickable !== clickable) {\n this.clickable = clickable;\n lockClick(clickable);\n }\n },\n\n /* istanbul ignore next */\n onAfterEnter: function onAfterEnter() {\n this.$emit('opened');\n\n if (this.onOpened) {\n this.onOpened();\n }\n },\n onAfterLeave: function onAfterLeave() {\n this.$emit('closed');\n },\n genIcon: function genIcon() {\n var h = this.$createElement;\n var icon = this.icon,\n type = this.type,\n iconPrefix = this.iconPrefix,\n loadingType = this.loadingType;\n var hasIcon = icon || type === 'success' || type === 'fail';\n\n if (hasIcon) {\n return h(Icon, {\n \"class\": bem('icon'),\n \"attrs\": {\n \"classPrefix\": iconPrefix,\n \"name\": icon || type\n }\n });\n }\n\n if (type === 'loading') {\n return h(Loading, {\n \"class\": bem('loading'),\n \"attrs\": {\n \"type\": loadingType\n }\n });\n }\n },\n genMessage: function genMessage() {\n var h = this.$createElement;\n var type = this.type,\n message = this.message;\n\n if (!isDef(message) || message === '') {\n return;\n }\n\n if (type === 'html') {\n return h(\"div\", {\n \"class\": bem('text'),\n \"domProps\": {\n \"innerHTML\": message\n }\n });\n }\n\n return h(\"div\", {\n \"class\": bem('text')\n }, [message]);\n }\n },\n render: function render() {\n var _ref;\n\n var h = arguments[0];\n return h(\"transition\", {\n \"attrs\": {\n \"name\": this.transition\n },\n \"on\": {\n \"afterEnter\": this.onAfterEnter,\n \"afterLeave\": this.onAfterLeave\n }\n }, [h(\"div\", {\n \"directives\": [{\n name: \"show\",\n value: this.value\n }],\n \"class\": [bem([this.position, (_ref = {}, _ref[this.type] = !this.icon, _ref)]), this.className],\n \"on\": {\n \"click\": this.onClick\n }\n }, [this.genIcon(), this.genMessage()])]);\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport Vue from 'vue';\nimport VueToast from './Toast';\nimport { isObject, isServer } from '../utils';\nimport { removeNode } from '../utils/dom/node';\nvar defaultOptions = {\n icon: '',\n type: 'text',\n // @deprecated\n mask: false,\n value: true,\n message: '',\n className: '',\n overlay: false,\n onClose: null,\n onOpened: null,\n duration: 2000,\n iconPrefix: undefined,\n position: 'middle',\n transition: 'van-fade',\n forbidClick: false,\n loadingType: undefined,\n getContainer: 'body',\n overlayStyle: null,\n closeOnClick: false,\n closeOnClickOverlay: false\n}; // default options of specific type\n\nvar defaultOptionsMap = {};\nvar queue = [];\nvar multiple = false;\n\nvar currentOptions = _extends({}, defaultOptions);\n\nfunction parseOptions(message) {\n if (isObject(message)) {\n return message;\n }\n\n return {\n message: message\n };\n}\n\nfunction isInDocument(element) {\n return document.body.contains(element);\n}\n\nfunction createInstance() {\n /* istanbul ignore if */\n if (isServer) {\n return {};\n }\n\n queue = queue.filter(function (item) {\n return !item.$el.parentNode || isInDocument(item.$el);\n });\n\n if (!queue.length || multiple) {\n var toast = new (Vue.extend(VueToast))({\n el: document.createElement('div')\n });\n toast.$on('input', function (value) {\n toast.value = value;\n });\n queue.push(toast);\n }\n\n return queue[queue.length - 1];\n} // transform toast options to popup props\n\n\nfunction transformOptions(options) {\n return _extends({}, options, {\n overlay: options.mask || options.overlay,\n mask: undefined,\n duration: undefined\n });\n}\n\nfunction Toast(options) {\n if (options === void 0) {\n options = {};\n }\n\n var toast = createInstance(); // should add z-index if previous toast has not disappeared\n\n if (toast.value) {\n toast.updateZIndex();\n }\n\n options = parseOptions(options);\n options = _extends({}, currentOptions, defaultOptionsMap[options.type || currentOptions.type], options);\n\n if (process.env.NODE_ENV === 'development' && options.mask) {\n console.warn('[Vant] Toast: \"mask\" option is deprecated, use \"overlay\" option instead.');\n }\n\n options.clear = function () {\n toast.value = false;\n\n if (options.onClose) {\n options.onClose();\n options.onClose = null;\n }\n\n if (multiple && !isServer) {\n toast.$on('closed', function () {\n clearTimeout(toast.timer);\n queue = queue.filter(function (item) {\n return item !== toast;\n });\n removeNode(toast.$el);\n toast.$destroy();\n });\n }\n };\n\n _extends(toast, transformOptions(options));\n\n clearTimeout(toast.timer);\n\n if (options.duration > 0) {\n toast.timer = setTimeout(function () {\n toast.clear();\n }, options.duration);\n }\n\n return toast;\n}\n\nvar createMethod = function createMethod(type) {\n return function (options) {\n return Toast(_extends({\n type: type\n }, parseOptions(options)));\n };\n};\n\n['loading', 'success', 'fail'].forEach(function (method) {\n Toast[method] = createMethod(method);\n});\n\nToast.clear = function (all) {\n if (queue.length) {\n if (all) {\n queue.forEach(function (toast) {\n toast.clear();\n });\n queue = [];\n } else if (!multiple) {\n queue[0].clear();\n } else {\n queue.shift().clear();\n }\n }\n};\n\nToast.setDefaultOptions = function (type, options) {\n if (typeof type === 'string') {\n defaultOptionsMap[type] = options;\n } else {\n _extends(currentOptions, type);\n }\n};\n\nToast.resetDefaultOptions = function (type) {\n if (typeof type === 'string') {\n defaultOptionsMap[type] = null;\n } else {\n currentOptions = _extends({}, defaultOptions);\n defaultOptionsMap = {};\n }\n};\n\nToast.allowMultiple = function (value) {\n if (value === void 0) {\n value = true;\n }\n\n multiple = value;\n};\n\nToast.install = function () {\n Vue.use(VueToast);\n};\n\nVue.prototype.$toast = Toast;\nexport default Toast;","import http from \"@/api/http\";\r\n\r\nconst state = {\r\n followResp: Object,\r\n}\r\n\r\nconst mutations = {\r\n setfollowResp: (state, resp) => {\r\n state.followResp = resp\r\n },\r\n}\r\n\r\nconst actions = {\r\n requestfollow({commit}, params) {\r\n let url = '/Account/User/Follow'\r\n return http.post(url, params).then(res => {\r\n commit('setfollowResp', res)\r\n })\r\n },\r\n}\r\n\r\nexport default {\r\n namespaced: true,\r\n state,\r\n mutations,\r\n actions\r\n}","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","import '../../style/base.css';\nimport '../../overlay/index.css';\nimport '../../info/index.css';\nimport '../../icon/index.css';\nimport '../../popup/index.css';\nimport '../../loading/index.css';\nimport '../../button/index.css';\nimport '../../goods-action-button/index.css';\nimport '../../goods-action/index.css';\nimport '../index.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--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VideoMask.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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","import '../../style/base.css';\nimport '../../overlay/index.css';\nimport '../../info/index.css';\nimport '../../icon/index.css';\nimport '../../popup/index.css';\nimport '../../loading/index.css';\nimport '../index.css';","import api from '@/api/api'\r\nimport dayjs from 'dayjs'\r\n\r\nconst state = {\r\n comments: [],\r\n subComments: [],\r\n inputType: 0,\r\n}\r\n\r\nconst mutations = {\r\n\r\n setComments: (state, comments) => {\r\n state.comments = comments\r\n },\r\n setSubComments: (state, comments) => {\r\n state.subComments = comments\r\n },\r\n\r\n deleteComment: (state, commentId) => {\r\n const comments = state.comments.filter(item => {\r\n return item.id !== commentId\r\n })\r\n state.comments = comments\r\n },\r\n\r\n deleteSubComment: (state, commentId) => {\r\n const comments = state.subComments.filter(item => {\r\n return item.id !== commentId\r\n })\r\n state.subComments = comments\r\n },\r\n\r\n setInputType: (state, type) => {\r\n state.inputType = type\r\n }\r\n}\r\n\r\nconst actions = {\r\n commitComment({commit}, params) {\r\n console.log('=====commit comment', commit)\r\n return api.comment.commitComment(params).then(res => {\r\n return res.result\r\n })\r\n },\r\n\r\n getComments({commit}, params) {\r\n params = {\r\n ...params,\r\n pageSize: 1000\r\n }\r\n\r\n return api.comment.getComments(params).then(res => {\r\n commit('setComments', parseComments(res.detail.list))\r\n return res\r\n })\r\n },\r\n\r\n getCommentList({commit}, params) {\r\n params = {\r\n ...params,\r\n pageSize: 1000\r\n }\r\n\r\n return api.comment.getCommentList(params).then(res => {\r\n commit('setComments', parseComments(res.detail.list))\r\n return res\r\n })\r\n },\r\n\r\n getSubComments({commit}, params) {\r\n params = {\r\n ...params,\r\n pageSize: 1000\r\n }\r\n\r\n return api.comment.getSubComments(params).then(res => {\r\n commit('setSubComments', parseComments(res.detail.list))\r\n })\r\n },\r\n\r\n deleteComment({commit}, commentId) {\r\n console.log('=====delete comment', commit)\r\n return api.comment.deleteComment(commentId).then(res => {\r\n return res.result\r\n })\r\n },\r\n getLiveComments({commit}, params) {\r\n return api.comment.getLiveComments(params).then(res => {\r\n return res\r\n })\r\n },\r\n commitLiveComment({commit}, params) {\r\n console.log('=====commit comment', commit)\r\n return api.comment.commitLiveComment(params).then(res => {\r\n return res.result\r\n })\r\n }\r\n}\r\n\r\nconst parseComments = (items) => {\r\n if (items == undefined || items.length == 0) {\r\n return []\r\n }\r\nconsole.log('=======comments', items)\r\n return items.map(item => {\r\n item.createTime = dayjs(item.createTime).format(\"MM-DD HH:mm\")\r\n return item\r\n })\r\n}\r\n\r\nexport default {\r\n namespaced: true,\r\n state,\r\n mutations,\r\n actions\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.resp.detail&&_vm.resp.detail.tip)?_c('div',{staticClass:\"S4 tip\",class:_vm.tipClass,on:{\"click\":function($event){return _vm.goAd()}}},[_c('div',[_vm._v(\" \"+_vm._s(_vm.resp.detail? _vm.resp.detail.tip.text:\"\")+\" \")]),(_vm.viewDetail)?_c('div',{staticClass:\"viewDetail\"},[_vm._v(\" 查看详情 \"),_c('van-icon',{attrs:{\"name\":\"arrow\"}})],1):_vm._e()]):_vm._e()}\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--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdTip.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdTip.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AdTip.vue?vue&type=template&id=80568d24&scoped=true&\"\nimport script from \"./AdTip.vue?vue&type=script&lang=js&\"\nexport * from \"./AdTip.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AdTip.vue?vue&type=style&index=0&id=80568d24&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 \"80568d24\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AudioPlay.vue?vue&type=style&index=0&id=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":""}