UNPKG

phaser4-rex-plugins

Version:
2 lines (1 loc) 4.58 kB
var t,e;t=void 0,e=function(){var t={setEventEmitter(t,e){return void 0===e&&(e=Phaser.Events.EventEmitter),this._privateEE=!0===t||void 0===t,this._eventEmitter=this._privateEE?new e:t,this},destroyEventEmitter(){return this._eventEmitter&&this._privateEE&&this._eventEmitter.shutdown(),this},getEventEmitter(){return this._eventEmitter},on(){return this._eventEmitter&&this._eventEmitter.on.apply(this._eventEmitter,arguments),this},once(){return this._eventEmitter&&this._eventEmitter.once.apply(this._eventEmitter,arguments),this},off(){return this._eventEmitter&&this._eventEmitter.off.apply(this._eventEmitter,arguments),this},emit(t){return this._eventEmitter&&t&&this._eventEmitter.emit.apply(this._eventEmitter,arguments),this},addListener(){return this._eventEmitter&&this._eventEmitter.addListener.apply(this._eventEmitter,arguments),this},removeListener(){return this._eventEmitter&&this._eventEmitter.removeListener.apply(this._eventEmitter,arguments),this},removeAllListeners(){return this._eventEmitter&&this._eventEmitter.removeAllListeners.apply(this._eventEmitter,arguments),this},listenerCount(){return this._eventEmitter?this._eventEmitter.listenerCount.apply(this._eventEmitter,arguments):0},listeners(){return this._eventEmitter?this._eventEmitter.listeners.apply(this._eventEmitter,arguments):[]},eventNames(){return this._eventEmitter?this._eventEmitter.eventNames.apply(this._eventEmitter,arguments):[]}};const e=Phaser.Scene;var s=function(t){return t instanceof e};const i=Phaser.Game;var n=function(t){return t instanceof i},r=function(t){return null==t||"object"!=typeof t?null:n(t)?t:n(t.game)?t.game:s(t)?t.sys.game:s(t.scene)?t.scene.sys.game:void 0};const o=Phaser.Utils.Objects.GetValue;class h{constructor(t,e){this.setParent(t),this.isShutdown=!1,this.setEventEmitter(o(e,"eventEmitter",!0)),this.parent&&(this.parent===this.scene?this.scene.sys.events.once("shutdown",this.onEnvDestroy,this):this.parent===this.game?this.game.events.once("shutdown",this.onEnvDestroy,this):this.parent.once&&this.parent.once("destroy",this.onParentDestroy,this))}shutdown(t){this.isShutdown||(this.parent&&(this.parent===this.scene?this.scene.sys.events.off("shutdown",this.onEnvDestroy,this):this.parent===this.game?this.game.events.off("shutdown",this.onEnvDestroy,this):this.parent.once&&this.parent.off("destroy",this.onParentDestroy,this)),this.destroyEventEmitter(),this.parent=void 0,this.scene=void 0,this.game=void 0,this.isShutdown=!0)}destroy(t){this.shutdown(t)}onEnvDestroy(){this.destroy(!0)}onParentDestroy(t,e){this.destroy(e)}setParent(t){var e;return this.parent=t,this.scene=null==(e=t)||"object"!=typeof e?null:s(e)?e:e.scene&&s(e.scene)?e.scene:e.parent&&e.parent.scene&&s(e.parent.scene)?e.parent.scene:null,this.game=r(t),this}}Object.assign(h.prototype,t);class a{constructor(t,e){this.handler=function(s){var i=s.clipboardData.items;if("image"===t)for(var n of i)n.type.startsWith("image/")&&e(n.getAsFile());else for(var n of i)if("string"===n.kind)return void n.getAsString(e)},this.boot()}boot(){document.addEventListener("paste",this.handler)}destroy(){document.removeEventListener("paste",this.handler),this.handler=null}}var v=function(t){return t&&"function"==typeof t},l=function(t,e,s,i,n,o){if(null===n||!1===n);else if(v(n))n();else{var h=function(t,e,s){if(void 0===s)switch(e){case"image":case"svg":s="textures";break;case"animation":s="json";break;case"tilemapTiledJSON":case"tilemapCSV":s="tilemap";break;case"glsl":s="shader";break;default:s=e}return t=r(t),"textures"===s?t.textures:t.cache[s]}(t,s,n);h.exists(i)&&h.remove(i)}var a=t.load;if(o&&a.once(`filecomplete-${s}-${i}`,(function(t,e,s){o(s)})),v(e))e();else{var l=window.URL.createObjectURL(e);a[s](i,l)}a.start()};class c extends h{constructor(t,e){void 0===e&&(e={}),super(t,e);var s=this;this.clickboardPaster=new a("image",(function(t){s.file=t,s.emit("paste",s)}))}saveTexture(t,e){return l(this.scene,this.file,"image",t,void 0,e),this}saveTexturePromise(t){var e=this;return new Promise((function(s,i){l(e.scene,e.file,"image",t,void 0,(function(){s()}))}))}releaseFile(){return this.file=null,this}destroy(){this.clickboardPaster.destroy(),this.clickboardPaster=null,this.file=null}}class u extends Phaser.Plugins.BasePlugin{constructor(t){super(t)}start(){this.game.events.on("destroy",this.destroy,this)}add(t){return new c(t)}}return u},"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).rexclickboardtotextureplugin=e();