/**
* Middleware for for Application's resize functionality
* @private
* @class
*/
export class ResizePlugin
{
/**
* Initialize the plugin with scope of application instance
* @static
* @private
* @param {object} [options] - See application options
*/
static init(options)
{
/**
* The element or window to resize the application to.
* @type {Window|HTMLElement}
* @name resizeTo
* @memberof PIXI.Application#
*/
Object.defineProperty(this, 'resizeTo', {
set(dom)
{
window.removeEventListener('resize', this.resize);
this._resizeTo = dom;
if (dom)
{
window.addEventListener('resize', this.resize);
this.resize();
}
},
get()
{
return this._resizeTo;
},
});
/**
* If `resizeTo` is set, calling this function
* will resize to the width and height of that element.
* @method PIXI.Application#resize
*/
this.resize = () =>
{
if (this._resizeTo)
{
// Resize to the window
if (this._resizeTo === window)
{
this.renderer.resize(window.innerWidth, window.innerHeight);
}
// Resize to other HTML entities
else
{
this.renderer.resize(this._resizeTo.clientWidth, this._resizeTo.clientHeight);
}
}
};
// On resize
this._resizeTo = null;
this.resizeTo = options.resizeTo || null;
}
/**
* Clean up the ticker, scoped to application
* @static
* @private
*/
static destroy()
{
this.resizeTo = null;
this.resize = null;
}
}