Source: lib/THREEx/WindowResize.js

/**
 * @module  lib/THREEx/WindowResize
 */

/**
 * This helper makes it easy to handle window resize.
 * It will update renderer and camera when window is resized.
 *
 * @example
 * // Start updating renderer and camera
 * var windowResize = WindowResize(aRenderer, aCamera);
 * //Start updating renderer and camera
 * windowResize.stop()
 *
 * @namespace
 * @param {Object} renderer the renderer to update
 * @param {Object} Camera the camera to update
 */
var windowResize = function (renderer, camera) {
	var callback = function() {
		// notify the renderer of the size change
		renderer.setSize( window.innerWidth, window.innerHeight );
		// update the camera
		camera.aspect	= window.innerWidth / window.innerHeight;
		camera.updateProjectionMatrix();
	};
	// bind the resize event
	window.addEventListener('resize', callback, false);
	// return .stop() the function to stop watching window resize
	return {
		stop	: function(){
			window.removeEventListener('resize', callback);
		}
	};
};

/**
 * @static
 * @param  {THREE.WebGLRenderer} renderer
 * @param  {THREE.PerspectiveCamera} camera
 * @return {Object}
 */
windowResize.bind	= function(renderer, camera){
	return windowResize(renderer, camera);
};

module.exports = windowResize;