{"version":3,"sources":["webpack:///./node_modules/zrender/lib/animation/Animator.js","webpack:///./node_modules/zrender/lib/animation/Animation.js","webpack:///./node_modules/zrender/lib/animation/Clip.js","webpack:///./node_modules/zrender/lib/animation/easing.js","webpack:///./node_modules/zrender/lib/animation/requestAnimationFrame.js"],"names":["Clip","color","_util","isArrayLike","arraySlice","Array","prototype","slice","defaultGetter","target","key","defaultSetter","value","interpolateNumber","p0","p1","percent","interpolateString","interpolateArray","out","arrDim","len","length","i","len2","j","fillArr","arr0","arr1","arr0Len","arr1Len","isPreviousLarger","push","call","isNaN","isArraySame","catmullRomInterpolateArray","p2","p3","t","t2","t3","catmullRomInterpolate","v0","v1","cloneValue","ret","rgba2String","rgba","Math","floor","join","getArrayDim","keyframes","lastValue","createTrackClip","animator","easing","oneTrackDone","propName","forceAnimate","getter","_getter","setter","_setter","useSpline","trackLen","trackMaxTime","firstVal","isValueArray","isValueColor","isValueString","sort","a","b","time","kfPercents","kfValues","prevValue","isAllValueEqual","colorArray","parse","_target","start","w","lastFrame","lastFramePercent","onframe","frame","min","range","clip","life","loop","_loop","delay","_delay","ondestroy","Animator","this","_tracks","_clipCount","_doneList","_onframeList","_clipList","when","props","tracks","hasOwnProperty","during","callback","pause","_paused","resume","isPaused","_doneCallback","doneList","lastClip","self","clipCount","animation","addClip","oldOnFrame","stop","forwardToLast","clipList","removeClip","done","cb","getClips","_default","module","exports","util","_event","Dispatcher","requestAnimationFrame","Animation","options","stage","_clips","_running","_time","_pausedTime","_pauseStart","constructor","addAnimator","clips","idx","indexOf","splice","removeAnimator","_update","Date","getTime","delta","deferredEvents","deferredClips","e","step","_needsRemove","pop","fire","trigger","update","_startLoop","clear","isFinished","animate","mixin","easingFuncs","_life","_initialized","gap","onrestart","globalTime","deltaTime","_startTime","easingFunc","schedule","restart","remainder","eventType","arg","linear","k","quadraticIn","quadraticOut","quadraticInOut","cubicIn","cubicOut","cubicInOut","quarticIn","quarticOut","quarticInOut","quinticIn","quinticOut","quinticInOut","sinusoidalIn","cos","PI","sinusoidalOut","sin","sinusoidalInOut","exponentialIn","pow","exponentialOut","exponentialInOut","circularIn","sqrt","circularOut","circularInOut","elasticIn","s","p","asin","elasticOut","elasticInOut","backIn","backOut","backInOut","bounceIn","bounceOut","bounceInOut","window","bind","msRequestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","func","setTimeout"],"mappings":"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","file":"js/chunk-f9061a2c.91aafbec.js","sourcesContent":["var Clip = require(\"./Clip\");\n\nvar color = require(\"../tool/color\");\n\nvar _util = require(\"../core/util\");\n\nvar isArrayLike = _util.isArrayLike;\n\n/**\n * @module echarts/animation/Animator\n */\nvar arraySlice = Array.prototype.slice;\n\nfunction defaultGetter(target, key) {\n return target[key];\n}\n\nfunction defaultSetter(target, key, value) {\n target[key] = value;\n}\n/**\n * @param {number} p0\n * @param {number} p1\n * @param {number} percent\n * @return {number}\n */\n\n\nfunction interpolateNumber(p0, p1, percent) {\n return (p1 - p0) * percent + p0;\n}\n/**\n * @param {string} p0\n * @param {string} p1\n * @param {number} percent\n * @return {string}\n */\n\n\nfunction interpolateString(p0, p1, percent) {\n return percent > 0.5 ? p1 : p0;\n}\n/**\n * @param {Array} p0\n * @param {Array} p1\n * @param {number} percent\n * @param {Array} out\n * @param {number} arrDim\n */\n\n\nfunction interpolateArray(p0, p1, percent, out, arrDim) {\n var len = p0.length;\n\n if (arrDim === 1) {\n for (var i = 0; i < len; i++) {\n out[i] = interpolateNumber(p0[i], p1[i], percent);\n }\n } else {\n var len2 = len && p0[0].length;\n\n for (var i = 0; i < len; i++) {\n for (var j = 0; j < len2; j++) {\n out[i][j] = interpolateNumber(p0[i][j], p1[i][j], percent);\n }\n }\n }\n} // arr0 is source array, arr1 is target array.\n// Do some preprocess to avoid error happened when interpolating from arr0 to arr1\n\n\nfunction fillArr(arr0, arr1, arrDim) {\n var arr0Len = arr0.length;\n var arr1Len = arr1.length;\n\n if (arr0Len !== arr1Len) {\n // FIXME Not work for TypedArray\n var isPreviousLarger = arr0Len > arr1Len;\n\n if (isPreviousLarger) {\n // Cut the previous\n arr0.length = arr1Len;\n } else {\n // Fill the previous\n for (var i = arr0Len; i < arr1Len; i++) {\n arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i]));\n }\n }\n } // Handling NaN value\n\n\n var len2 = arr0[0] && arr0[0].length;\n\n for (var i = 0; i < arr0.length; i++) {\n if (arrDim === 1) {\n if (isNaN(arr0[i])) {\n arr0[i] = arr1[i];\n }\n } else {\n for (var j = 0; j < len2; j++) {\n if (isNaN(arr0[i][j])) {\n arr0[i][j] = arr1[i][j];\n }\n }\n }\n }\n}\n/**\n * @param {Array} arr0\n * @param {Array} arr1\n * @param {number} arrDim\n * @return {boolean}\n */\n\n\nfunction isArraySame(arr0, arr1, arrDim) {\n if (arr0 === arr1) {\n return true;\n }\n\n var len = arr0.length;\n\n if (len !== arr1.length) {\n return false;\n }\n\n if (arrDim === 1) {\n for (var i = 0; i < len; i++) {\n if (arr0[i] !== arr1[i]) {\n return false;\n }\n }\n } else {\n var len2 = arr0[0].length;\n\n for (var i = 0; i < len; i++) {\n for (var j = 0; j < len2; j++) {\n if (arr0[i][j] !== arr1[i][j]) {\n return false;\n }\n }\n }\n }\n\n return true;\n}\n/**\n * Catmull Rom interpolate array\n * @param {Array} p0\n * @param {Array} p1\n * @param {Array} p2\n * @param {Array} p3\n * @param {number} t\n * @param {number} t2\n * @param {number} t3\n * @param {Array} out\n * @param {number} arrDim\n */\n\n\nfunction catmullRomInterpolateArray(p0, p1, p2, p3, t, t2, t3, out, arrDim) {\n var len = p0.length;\n\n if (arrDim === 1) {\n for (var i = 0; i < len; i++) {\n out[i] = catmullRomInterpolate(p0[i], p1[i], p2[i], p3[i], t, t2, t3);\n }\n } else {\n var len2 = p0[0].length;\n\n for (var i = 0; i < len; i++) {\n for (var j = 0; j < len2; j++) {\n out[i][j] = catmullRomInterpolate(p0[i][j], p1[i][j], p2[i][j], p3[i][j], t, t2, t3);\n }\n }\n }\n}\n/**\n * Catmull Rom interpolate number\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} t\n * @param {number} t2\n * @param {number} t3\n * @return {number}\n */\n\n\nfunction catmullRomInterpolate(p0, p1, p2, p3, t, t2, t3) {\n var v0 = (p2 - p0) * 0.5;\n var v1 = (p3 - p1) * 0.5;\n return (2 * (p1 - p2) + v0 + v1) * t3 + (-3 * (p1 - p2) - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\n\nfunction cloneValue(value) {\n if (isArrayLike(value)) {\n var len = value.length;\n\n if (isArrayLike(value[0])) {\n var ret = [];\n\n for (var i = 0; i < len; i++) {\n ret.push(arraySlice.call(value[i]));\n }\n\n return ret;\n }\n\n return arraySlice.call(value);\n }\n\n return value;\n}\n\nfunction rgba2String(rgba) {\n rgba[0] = Math.floor(rgba[0]);\n rgba[1] = Math.floor(rgba[1]);\n rgba[2] = Math.floor(rgba[2]);\n return 'rgba(' + rgba.join(',') + ')';\n}\n\nfunction getArrayDim(keyframes) {\n var lastValue = keyframes[keyframes.length - 1].value;\n return isArrayLike(lastValue && lastValue[0]) ? 2 : 1;\n}\n\nfunction createTrackClip(animator, easing, oneTrackDone, keyframes, propName, forceAnimate) {\n var getter = animator._getter;\n var setter = animator._setter;\n var useSpline = easing === 'spline';\n var trackLen = keyframes.length;\n\n if (!trackLen) {\n return;\n } // Guess data type\n\n\n var firstVal = keyframes[0].value;\n var isValueArray = isArrayLike(firstVal);\n var isValueColor = false;\n var isValueString = false; // For vertices morphing\n\n var arrDim = isValueArray ? getArrayDim(keyframes) : 0;\n var trackMaxTime; // Sort keyframe as ascending\n\n keyframes.sort(function (a, b) {\n return a.time - b.time;\n });\n trackMaxTime = keyframes[trackLen - 1].time; // Percents of each keyframe\n\n var kfPercents = []; // Value of each keyframe\n\n var kfValues = [];\n var prevValue = keyframes[0].value;\n var isAllValueEqual = true;\n\n for (var i = 0; i < trackLen; i++) {\n kfPercents.push(keyframes[i].time / trackMaxTime); // Assume value is a color when it is a string\n\n var value = keyframes[i].value; // Check if value is equal, deep check if value is array\n\n if (!(isValueArray && isArraySame(value, prevValue, arrDim) || !isValueArray && value === prevValue)) {\n isAllValueEqual = false;\n }\n\n prevValue = value; // Try converting a string to a color array\n\n if (typeof value === 'string') {\n var colorArray = color.parse(value);\n\n if (colorArray) {\n value = colorArray;\n isValueColor = true;\n } else {\n isValueString = true;\n }\n }\n\n kfValues.push(value);\n }\n\n if (!forceAnimate && isAllValueEqual) {\n return;\n }\n\n var lastValue = kfValues[trackLen - 1]; // Polyfill array and NaN value\n\n for (var i = 0; i < trackLen - 1; i++) {\n if (isValueArray) {\n fillArr(kfValues[i], lastValue, arrDim);\n } else {\n if (isNaN(kfValues[i]) && !isNaN(lastValue) && !isValueString && !isValueColor) {\n kfValues[i] = lastValue;\n }\n }\n }\n\n isValueArray && fillArr(getter(animator._target, propName), lastValue, arrDim); // Cache the key of last frame to speed up when\n // animation playback is sequency\n\n var lastFrame = 0;\n var lastFramePercent = 0;\n var start;\n var w;\n var p0;\n var p1;\n var p2;\n var p3;\n\n if (isValueColor) {\n var rgba = [0, 0, 0, 0];\n }\n\n var onframe = function (target, percent) {\n // Find the range keyframes\n // kf1-----kf2---------current--------kf3\n // find kf2 and kf3 and do interpolation\n var frame; // In the easing function like elasticOut, percent may less than 0\n\n if (percent < 0) {\n frame = 0;\n } else if (percent < lastFramePercent) {\n // Start from next key\n // PENDING start from lastFrame ?\n start = Math.min(lastFrame + 1, trackLen - 1);\n\n for (frame = start; frame >= 0; frame--) {\n if (kfPercents[frame] <= percent) {\n break;\n }\n } // PENDING really need to do this ?\n\n\n frame = Math.min(frame, trackLen - 2);\n } else {\n for (frame = lastFrame; frame < trackLen; frame++) {\n if (kfPercents[frame] > percent) {\n break;\n }\n }\n\n frame = Math.min(frame - 1, trackLen - 2);\n }\n\n lastFrame = frame;\n lastFramePercent = percent;\n var range = kfPercents[frame + 1] - kfPercents[frame];\n\n if (range === 0) {\n return;\n } else {\n w = (percent - kfPercents[frame]) / range;\n }\n\n if (useSpline) {\n p1 = kfValues[frame];\n p0 = kfValues[frame === 0 ? frame : frame - 1];\n p2 = kfValues[frame > trackLen - 2 ? trackLen - 1 : frame + 1];\n p3 = kfValues[frame > trackLen - 3 ? trackLen - 1 : frame + 2];\n\n if (isValueArray) {\n catmullRomInterpolateArray(p0, p1, p2, p3, w, w * w, w * w * w, getter(target, propName), arrDim);\n } else {\n var value;\n\n if (isValueColor) {\n value = catmullRomInterpolateArray(p0, p1, p2, p3, w, w * w, w * w * w, rgba, 1);\n value = rgba2String(rgba);\n } else if (isValueString) {\n // String is step(0.5)\n return interpolateString(p1, p2, w);\n } else {\n value = catmullRomInterpolate(p0, p1, p2, p3, w, w * w, w * w * w);\n }\n\n setter(target, propName, value);\n }\n } else {\n if (isValueArray) {\n interpolateArray(kfValues[frame], kfValues[frame + 1], w, getter(target, propName), arrDim);\n } else {\n var value;\n\n if (isValueColor) {\n interpolateArray(kfValues[frame], kfValues[frame + 1], w, rgba, 1);\n value = rgba2String(rgba);\n } else if (isValueString) {\n // String is step(0.5)\n return interpolateString(kfValues[frame], kfValues[frame + 1], w);\n } else {\n value = interpolateNumber(kfValues[frame], kfValues[frame + 1], w);\n }\n\n setter(target, propName, value);\n }\n }\n };\n\n var clip = new Clip({\n target: animator._target,\n life: trackMaxTime,\n loop: animator._loop,\n delay: animator._delay,\n onframe: onframe,\n ondestroy: oneTrackDone\n });\n\n if (easing && easing !== 'spline') {\n clip.easing = easing;\n }\n\n return clip;\n}\n/**\n * @alias module:zrender/animation/Animator\n * @constructor\n * @param {Object} target\n * @param {boolean} loop\n * @param {Function} getter\n * @param {Function} setter\n */\n\n\nvar Animator = function (target, loop, getter, setter) {\n this._tracks = {};\n this._target = target;\n this._loop = loop || false;\n this._getter = getter || defaultGetter;\n this._setter = setter || defaultSetter;\n this._clipCount = 0;\n this._delay = 0;\n this._doneList = [];\n this._onframeList = [];\n this._clipList = [];\n};\n\nAnimator.prototype = {\n /**\n * Set Animation keyframe\n * @param {number} time 关键帧时间,单位是ms\n * @param {Object} props 关键帧的属性值,key-value表示\n * @return {module:zrender/animation/Animator}\n */\n when: function (time\n /* ms */\n , props) {\n var tracks = this._tracks;\n\n for (var propName in props) {\n if (!props.hasOwnProperty(propName)) {\n continue;\n }\n\n if (!tracks[propName]) {\n tracks[propName] = []; // Invalid value\n\n var value = this._getter(this._target, propName);\n\n if (value == null) {\n // zrLog('Invalid property ' + propName);\n continue;\n } // If time is 0\n // Then props is given initialize value\n // Else\n // Initialize value from current prop value\n\n\n if (time !== 0) {\n tracks[propName].push({\n time: 0,\n value: cloneValue(value)\n });\n }\n }\n\n tracks[propName].push({\n time: time,\n value: props[propName]\n });\n }\n\n return this;\n },\n\n /**\n * 添加动画每一帧的回调函数\n * @param {Function} callback\n * @return {module:zrender/animation/Animator}\n */\n during: function (callback) {\n this._onframeList.push(callback);\n\n return this;\n },\n pause: function () {\n for (var i = 0; i < this._clipList.length; i++) {\n this._clipList[i].pause();\n }\n\n this._paused = true;\n },\n resume: function () {\n for (var i = 0; i < this._clipList.length; i++) {\n this._clipList[i].resume();\n }\n\n this._paused = false;\n },\n isPaused: function () {\n return !!this._paused;\n },\n _doneCallback: function () {\n // Clear all tracks\n this._tracks = {}; // Clear all clips\n\n this._clipList.length = 0;\n var doneList = this._doneList;\n var len = doneList.length;\n\n for (var i = 0; i < len; i++) {\n doneList[i].call(this);\n }\n },\n\n /**\n * Start the animation\n * @param {string|Function} [easing]\n * 动画缓动函数,详见{@link module:zrender/animation/easing}\n * @param {boolean} forceAnimate\n * @return {module:zrender/animation/Animator}\n */\n start: function (easing, forceAnimate) {\n var self = this;\n var clipCount = 0;\n\n var oneTrackDone = function () {\n clipCount--;\n\n if (!clipCount) {\n self._doneCallback();\n }\n };\n\n var lastClip;\n\n for (var propName in this._tracks) {\n if (!this._tracks.hasOwnProperty(propName)) {\n continue;\n }\n\n var clip = createTrackClip(this, easing, oneTrackDone, this._tracks[propName], propName, forceAnimate);\n\n if (clip) {\n this._clipList.push(clip);\n\n clipCount++; // If start after added to animation\n\n if (this.animation) {\n this.animation.addClip(clip);\n }\n\n lastClip = clip;\n }\n } // Add during callback on the last clip\n\n\n if (lastClip) {\n var oldOnFrame = lastClip.onframe;\n\n lastClip.onframe = function (target, percent) {\n oldOnFrame(target, percent);\n\n for (var i = 0; i < self._onframeList.length; i++) {\n self._onframeList[i](target, percent);\n }\n };\n } // This optimization will help the case that in the upper application\n // the view may be refreshed frequently, where animation will be\n // called repeatly but nothing changed.\n\n\n if (!clipCount) {\n this._doneCallback();\n }\n\n return this;\n },\n\n /**\n * Stop animation\n * @param {boolean} forwardToLast If move to last frame before stop\n */\n stop: function (forwardToLast) {\n var clipList = this._clipList;\n var animation = this.animation;\n\n for (var i = 0; i < clipList.length; i++) {\n var clip = clipList[i];\n\n if (forwardToLast) {\n // Move to last frame before stop\n clip.onframe(this._target, 1);\n }\n\n animation && animation.removeClip(clip);\n }\n\n clipList.length = 0;\n },\n\n /**\n * Set when animation delay starts\n * @param {number} time 单位ms\n * @return {module:zrender/animation/Animator}\n */\n delay: function (time) {\n this._delay = time;\n return this;\n },\n\n /**\n * Add callback for animation end\n * @param {Function} cb\n * @return {module:zrender/animation/Animator}\n */\n done: function (cb) {\n if (cb) {\n this._doneList.push(cb);\n }\n\n return this;\n },\n\n /**\n * @return {Array.}\n */\n getClips: function () {\n return this._clipList;\n }\n};\nvar _default = Animator;\nmodule.exports = _default;","var util = require(\"../core/util\");\n\nvar _event = require(\"../core/event\");\n\nvar Dispatcher = _event.Dispatcher;\n\nvar requestAnimationFrame = require(\"./requestAnimationFrame\");\n\nvar Animator = require(\"./Animator\");\n\n/**\n * Animation main class, dispatch and manage all animation controllers\n *\n * @module zrender/animation/Animation\n * @author pissang(https://github.com/pissang)\n */\n// TODO Additive animation\n// http://iosoteric.com/additive-animations-animatewithduration-in-ios-8/\n// https://developer.apple.com/videos/wwdc2014/#236\n\n/**\n * @typedef {Object} IZRenderStage\n * @property {Function} update\n */\n\n/**\n * @alias module:zrender/animation/Animation\n * @constructor\n * @param {Object} [options]\n * @param {Function} [options.onframe]\n * @param {IZRenderStage} [options.stage]\n * @example\n * var animation = new Animation();\n * var obj = {\n * x: 100,\n * y: 100\n * };\n * animation.animate(node.position)\n * .when(1000, {\n * x: 500,\n * y: 500\n * })\n * .when(2000, {\n * x: 100,\n * y: 100\n * })\n * .start('spline');\n */\nvar Animation = function (options) {\n options = options || {};\n this.stage = options.stage || {};\n\n this.onframe = options.onframe || function () {}; // private properties\n\n\n this._clips = [];\n this._running = false;\n this._time;\n this._pausedTime;\n this._pauseStart;\n this._paused = false;\n Dispatcher.call(this);\n};\n\nAnimation.prototype = {\n constructor: Animation,\n\n /**\n * Add clip\n * @param {module:zrender/animation/Clip} clip\n */\n addClip: function (clip) {\n this._clips.push(clip);\n },\n\n /**\n * Add animator\n * @param {module:zrender/animation/Animator} animator\n */\n addAnimator: function (animator) {\n animator.animation = this;\n var clips = animator.getClips();\n\n for (var i = 0; i < clips.length; i++) {\n this.addClip(clips[i]);\n }\n },\n\n /**\n * Delete animation clip\n * @param {module:zrender/animation/Clip} clip\n */\n removeClip: function (clip) {\n var idx = util.indexOf(this._clips, clip);\n\n if (idx >= 0) {\n this._clips.splice(idx, 1);\n }\n },\n\n /**\n * Delete animation clip\n * @param {module:zrender/animation/Animator} animator\n */\n removeAnimator: function (animator) {\n var clips = animator.getClips();\n\n for (var i = 0; i < clips.length; i++) {\n this.removeClip(clips[i]);\n }\n\n animator.animation = null;\n },\n _update: function () {\n var time = new Date().getTime() - this._pausedTime;\n\n var delta = time - this._time;\n var clips = this._clips;\n var len = clips.length;\n var deferredEvents = [];\n var deferredClips = [];\n\n for (var i = 0; i < len; i++) {\n var clip = clips[i];\n var e = clip.step(time, delta); // Throw out the events need to be called after\n // stage.update, like destroy\n\n if (e) {\n deferredEvents.push(e);\n deferredClips.push(clip);\n }\n } // Remove the finished clip\n\n\n for (var i = 0; i < len;) {\n if (clips[i]._needsRemove) {\n clips[i] = clips[len - 1];\n clips.pop();\n len--;\n } else {\n i++;\n }\n }\n\n len = deferredEvents.length;\n\n for (var i = 0; i < len; i++) {\n deferredClips[i].fire(deferredEvents[i]);\n }\n\n this._time = time;\n this.onframe(delta); // 'frame' should be triggered before stage, because upper application\n // depends on the sequence (e.g., echarts-stream and finish\n // event judge)\n\n this.trigger('frame', delta);\n\n if (this.stage.update) {\n this.stage.update();\n }\n },\n _startLoop: function () {\n var self = this;\n this._running = true;\n\n function step() {\n if (self._running) {\n requestAnimationFrame(step);\n !self._paused && self._update();\n }\n }\n\n requestAnimationFrame(step);\n },\n\n /**\n * Start animation.\n */\n start: function () {\n this._time = new Date().getTime();\n this._pausedTime = 0;\n\n this._startLoop();\n },\n\n /**\n * Stop animation.\n */\n stop: function () {\n this._running = false;\n },\n\n /**\n * Pause animation.\n */\n pause: function () {\n if (!this._paused) {\n this._pauseStart = new Date().getTime();\n this._paused = true;\n }\n },\n\n /**\n * Resume animation.\n */\n resume: function () {\n if (this._paused) {\n this._pausedTime += new Date().getTime() - this._pauseStart;\n this._paused = false;\n }\n },\n\n /**\n * Clear animation.\n */\n clear: function () {\n this._clips = [];\n },\n\n /**\n * Whether animation finished.\n */\n isFinished: function () {\n return !this._clips.length;\n },\n\n /**\n * Creat animator for a target, whose props can be animated.\n *\n * @param {Object} target\n * @param {Object} options\n * @param {boolean} [options.loop=false] Whether loop animation.\n * @param {Function} [options.getter=null] Get value from target.\n * @param {Function} [options.setter=null] Set value to target.\n * @return {module:zrender/animation/Animation~Animator}\n */\n // TODO Gap\n animate: function (target, options) {\n options = options || {};\n var animator = new Animator(target, options.loop, options.getter, options.setter);\n this.addAnimator(animator);\n return animator;\n }\n};\nutil.mixin(Animation, Dispatcher);\nvar _default = Animation;\nmodule.exports = _default;","var easingFuncs = require(\"./easing\");\n\n/**\n * 动画主控制器\n * @config target 动画对象,可以是数组,如果是数组的话会批量分发onframe等事件\n * @config life(1000) 动画时长\n * @config delay(0) 动画延迟时间\n * @config loop(true)\n * @config gap(0) 循环的间隔时间\n * @config onframe\n * @config easing(optional)\n * @config ondestroy(optional)\n * @config onrestart(optional)\n *\n * TODO pause\n */\nfunction Clip(options) {\n this._target = options.target; // 生命周期\n\n this._life = options.life || 1000; // 延时\n\n this._delay = options.delay || 0; // 开始时间\n // this._startTime = new Date().getTime() + this._delay;// 单位毫秒\n\n this._initialized = false; // 是否循环\n\n this.loop = options.loop == null ? false : options.loop;\n this.gap = options.gap || 0;\n this.easing = options.easing || 'Linear';\n this.onframe = options.onframe;\n this.ondestroy = options.ondestroy;\n this.onrestart = options.onrestart;\n this._pausedTime = 0;\n this._paused = false;\n}\n\nClip.prototype = {\n constructor: Clip,\n step: function (globalTime, deltaTime) {\n // Set startTime on first step, or _startTime may has milleseconds different between clips\n // PENDING\n if (!this._initialized) {\n this._startTime = globalTime + this._delay;\n this._initialized = true;\n }\n\n if (this._paused) {\n this._pausedTime += deltaTime;\n return;\n }\n\n var percent = (globalTime - this._startTime - this._pausedTime) / this._life; // 还没开始\n\n if (percent < 0) {\n return;\n }\n\n percent = Math.min(percent, 1);\n var easing = this.easing;\n var easingFunc = typeof easing === 'string' ? easingFuncs[easing] : easing;\n var schedule = typeof easingFunc === 'function' ? easingFunc(percent) : percent;\n this.fire('frame', schedule); // 结束\n\n if (percent === 1) {\n if (this.loop) {\n this.restart(globalTime); // 重新开始周期\n // 抛出而不是直接调用事件直到 stage.update 后再统一调用这些事件\n\n return 'restart';\n } // 动画完成将这个控制器标识为待删除\n // 在Animation.update中进行批量删除\n\n\n this._needsRemove = true;\n return 'destroy';\n }\n\n return null;\n },\n restart: function (globalTime) {\n var remainder = (globalTime - this._startTime - this._pausedTime) % this._life;\n this._startTime = globalTime - remainder + this.gap;\n this._pausedTime = 0;\n this._needsRemove = false;\n },\n fire: function (eventType, arg) {\n eventType = 'on' + eventType;\n\n if (this[eventType]) {\n this[eventType](this._target, arg);\n }\n },\n pause: function () {\n this._paused = true;\n },\n resume: function () {\n this._paused = false;\n }\n};\nvar _default = Clip;\nmodule.exports = _default;","/**\n * 缓动代码来自 https://github.com/sole/tween.js/blob/master/src/Tween.js\n * @see http://sole.github.io/tween.js/examples/03_graphs.html\n * @exports zrender/animation/easing\n */\nvar easing = {\n /**\n * @param {number} k\n * @return {number}\n */\n linear: function (k) {\n return k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quadraticIn: function (k) {\n return k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quadraticOut: function (k) {\n return k * (2 - k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quadraticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k;\n }\n\n return -0.5 * (--k * (k - 2) - 1);\n },\n // 三次方的缓动(t^3)\n\n /**\n * @param {number} k\n * @return {number}\n */\n cubicIn: function (k) {\n return k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n cubicOut: function (k) {\n return --k * k * k + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n cubicInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k;\n }\n\n return 0.5 * ((k -= 2) * k * k + 2);\n },\n // 四次方的缓动(t^4)\n\n /**\n * @param {number} k\n * @return {number}\n */\n quarticIn: function (k) {\n return k * k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quarticOut: function (k) {\n return 1 - --k * k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quarticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k * k;\n }\n\n return -0.5 * ((k -= 2) * k * k * k - 2);\n },\n // 五次方的缓动(t^5)\n\n /**\n * @param {number} k\n * @return {number}\n */\n quinticIn: function (k) {\n return k * k * k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quinticOut: function (k) {\n return --k * k * k * k * k + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quinticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k * k * k;\n }\n\n return 0.5 * ((k -= 2) * k * k * k * k + 2);\n },\n // 正弦曲线的缓动(sin(t))\n\n /**\n * @param {number} k\n * @return {number}\n */\n sinusoidalIn: function (k) {\n return 1 - Math.cos(k * Math.PI / 2);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n sinusoidalOut: function (k) {\n return Math.sin(k * Math.PI / 2);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n sinusoidalInOut: function (k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n },\n // 指数曲线的缓动(2^t)\n\n /**\n * @param {number} k\n * @return {number}\n */\n exponentialIn: function (k) {\n return k === 0 ? 0 : Math.pow(1024, k - 1);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n exponentialOut: function (k) {\n return k === 1 ? 1 : 1 - Math.pow(2, -10 * k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n exponentialInOut: function (k) {\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if ((k *= 2) < 1) {\n return 0.5 * Math.pow(1024, k - 1);\n }\n\n return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2);\n },\n // 圆形曲线的缓动(sqrt(1-t^2))\n\n /**\n * @param {number} k\n * @return {number}\n */\n circularIn: function (k) {\n return 1 - Math.sqrt(1 - k * k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n circularOut: function (k) {\n return Math.sqrt(1 - --k * k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n circularInOut: function (k) {\n if ((k *= 2) < 1) {\n return -0.5 * (Math.sqrt(1 - k * k) - 1);\n }\n\n return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);\n },\n // 创建类似于弹簧在停止前来回振荡的动画\n\n /**\n * @param {number} k\n * @return {number}\n */\n elasticIn: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n\n return -(a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n elasticOut: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n\n return a * Math.pow(2, -10 * k) * Math.sin((k - s) * (2 * Math.PI) / p) + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n elasticInOut: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n\n if ((k *= 2) < 1) {\n return -0.5 * (a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));\n }\n\n return a * Math.pow(2, -10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1;\n },\n // 在某一动画开始沿指示的路径进行动画处理前稍稍收回该动画的移动\n\n /**\n * @param {number} k\n * @return {number}\n */\n backIn: function (k) {\n var s = 1.70158;\n return k * k * ((s + 1) * k - s);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n backOut: function (k) {\n var s = 1.70158;\n return --k * k * ((s + 1) * k + s) + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n backInOut: function (k) {\n var s = 1.70158 * 1.525;\n\n if ((k *= 2) < 1) {\n return 0.5 * (k * k * ((s + 1) * k - s));\n }\n\n return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);\n },\n // 创建弹跳效果\n\n /**\n * @param {number} k\n * @return {number}\n */\n bounceIn: function (k) {\n return 1 - easing.bounceOut(1 - k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n bounceOut: function (k) {\n if (k < 1 / 2.75) {\n return 7.5625 * k * k;\n } else if (k < 2 / 2.75) {\n return 7.5625 * (k -= 1.5 / 2.75) * k + 0.75;\n } else if (k < 2.5 / 2.75) {\n return 7.5625 * (k -= 2.25 / 2.75) * k + 0.9375;\n } else {\n return 7.5625 * (k -= 2.625 / 2.75) * k + 0.984375;\n }\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n bounceInOut: function (k) {\n if (k < 0.5) {\n return easing.bounceIn(k * 2) * 0.5;\n }\n\n return easing.bounceOut(k * 2 - 1) * 0.5 + 0.5;\n }\n};\nvar _default = easing;\nmodule.exports = _default;","var _default = typeof window !== 'undefined' && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || // https://github.com/ecomfe/zrender/issues/189#issuecomment-224919809\nwindow.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function (func) {\n setTimeout(func, 16);\n};\n\nmodule.exports = _default;"],"sourceRoot":""}