function AnimationModule(app, isDeferred) {
	    var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};

	    classCallCheck(this, AnimationModule);

	    defineProperty$3(this, "bridge", {
	      mesh: function mesh(_mesh, self) {
	        _mesh.geometry.skeleton = _mesh.skeleton;
	        self.mixer = new AnimationMixer(_mesh.geometry);
	        self.clips = _mesh.geometry.animations;
	        return _mesh;
	      }
	    });

	    this.params = Object.assign({
	      speed: 1
	    }, params);
	    this.app = app;
	    this.isDeferred = isDeferred;
	  }
@class AnimationModule
@category modules/mesh
@description Convenience module that wraps the <a href='https://threejs.org/docs/#manual/introduction/Animation-system'>three.js animation system</a>
@param {App} app - the app
@param {Boolean} [isDeferred=false] - set to true if animation should not start automatically
@param {Object} [params={speed: 1}] - the params
@memberof module:modules/mesh
@example <caption>Create animation module and play a given clip of an imported model</caption>
const animationModule = new AnimationModule(app, false, {
  speed: 1.2 // speed up animation by 20%
});

new Importer({
  parser(geometry, materials) {
    // Override parse to generate a skinnedMesh, needed for skinned models
    return new THREE.SkinnedMesh(geometry, materials);
  },

  url: `path/to/model.json`,
  useCustomMaterial: true,

  material: new THREE.MeshStandardMaterial({
    skinning: true
  }),

  modules: [animationModule]
}).addTo(app).then(() => {
  // adding model to app returns a promise, so pipe the function to kick off the animation clip
  animationModule.play('clipName');
});