export class Animator {
  static configureDefault(container, animatorInstance){
    container.registerInstance(Animator, Animator.instance = (animatorInstance || new Animator()));
  }

  move() {
    return Promise.resolve(false);
  }

  enter(element) {
    return Promise.resolve(false);
  }

  leave(element) {
    return Promise.resolve(false);
  }

  removeClass(element, className) {
    return Promise.resolve(false);
  }

  addClass(element, className) {
    return Promise.resolve(false);
  }
}

@@ -235,270 +235,2727 @@
 %0A%0A  
-enter(element) %7B%0A    return Promise.resolve(false);%0A  %7D%0A%0A  leave(element) %7B%0A    return Promise.resolve(false);%0A  %7D%0A%0A  removeClass(element, className) %7B%0A    return Promise.resolve(false);%0A  %7D%0A%0A  addClass(element, className) %7B%0A    return Promise.resolve(false);%0A  %7D%0A%7D%0A
+/**%0A   * Execute an 'enter' animation on an element%0A   * %0A   * @param element %7BHTMLElement%7D         Element to animate%0A   * %0A   * @returns %7BPromise%7D                   Resolved when the animation is done%0A   */%0A  enter(element) %7B%0A    return Promise.resolve(false);%0A  %7D%0A%0A  /**%0A   * Execute a 'leave' animation on an element%0A   * %0A   * @param element %7BHTMLElement%7D         Element to animate%0A   * %0A   * @returns %7BPromise%7D                   Resolved when the animation is done%0A   */%0A  leave(element) %7B%0A    return Promise.resolve(false);%0A  %7D%0A%0A  /**%0A   * Add a class to an element to trigger an animation.%0A   * %0A   * @param element %7BHTMLElement%7D         Element to animate%0A   * @param className %7BString%7D            Properties to animate or name of the effect to use%0A   * %0A   * @returns %7BPromise%7D                   Resolved when the animation is done%0A   */%0A  removeClass(element, className) %7B%0A    return Promise.resolve(false);%0A  %7D%0A%0A  /**%0A   * Add a class to an element to trigger an animation.%0A   * %0A   * @param element %7BHTMLElement%7D         Element to animate%0A   * @param className %7BString%7D            Properties to animate or name of the effect to use%0A   * %0A   * @returns %7BPromise%7D                   Resolved when the animation is done%0A   */%0A  addClass(element, className) %7B%0A    return Promise.resolve(false);%0A  %7D%0A  %0A  /**%0A   * Execute a single animation.%0A   * %0A   * @param element %7BHTMLElement%7D         Element to animate%0A   * @param className %7BObject%7CString%7D    Properties to animate or name of the effect to use%0A   *                                      For css animators this represents the className to %0A   *                                      be added and removed right after the animation is done%0A   * @param options %7BObject%7D              options for the animation (duration, easing, ...)%0A   * %0A   * @returns %7BPromise%7D                   Resolved when the animation is done%0A   */%0A  animate(element,className,options) %7B%0A    return Promise.resolve(false);%0A  %7D%0A%0A  /**%0A   * Run a sequence of animations one after the other.%0A   * for example : animator.runSequence(%22fadeIn%22,%22callout%22)%0A   * %0A   * @param sequence %7BArray%7D          An array of effectNames or classNames%0A   * %0A   * @returns %7BPromise%7D               Resolved when all animations are done%0A   */%0A  runSequence(sequence)%7B%7D%0A%0A  /**%0A   * Register an effect (for JS based animators)%0A   * %0A   * @param effectName %7BString%7D          name identifier of the effect%0A   * @param properties %7BObject%7D          Object with properties for the effect%0A   * %0A   */%0A  registerEffect(effectName, properties)%7B%7D%0A%0A  /**%0A   * Unregister an effect (for JS based animators)%0A   * %0A   * @param effectName %7BString%7D          name identifier of the effect%0A   */%0A  unregisterEffect(effectName)%7B%7D %0A%0A%7D

add extra animator methods