code: function Animation(target, opts, opts2) {
    var isCore = core(target);
    var isEle = !isCore;
  
    var _p = this._private = extend({
      duration: 1000
    }, opts, opts2);
  
    _p.target = target;
    _p.style = _p.style || _p.css;
    _p.started = false;
    _p.playing = false;
    _p.hooked = false;
    _p.applying = false;
    _p.progress = 0;
    _p.completes = [];
    _p.frames = [];
  
    if (_p.complete && fn(_p.complete)) {
      _p.completes.push(_p.complete);
    }
  
    if (isEle) {
      var pos = target.position();
      _p.startPosition = _p.startPosition || {
        x: pos.x,
        y: pos.y
      };
      _p.startStyle = _p.startStyle || target.cy().style().getAnimationStartStyle(target, _p.style);
    }
  
    if (isCore) {
      var pan = target.pan();
      _p.startPan = {
        x: pan.x,
        y: pan.y
      };
      _p.startZoom = target.zoom();
    } // for future timeline/animations impl
  
  
    this.length = 1;
    this[0] = this;
  }
docs: eslint-disable-line no-undef