UNPKG

@animech-public/playcanvas

Version:
2 lines (1 loc) 3.74 kB
import{EventHandler as s}from"../../core/event-handler.js";import{Asset as t}from"./asset.js";class e extends s{constructor(s){super(),this._app=s,s.i18n.on("set:locale",this._onSetLocale,this),this._autoLoad=!1,this._disableLocalization=!1,this._defaultAsset=null,this._localizedAsset=null}set defaultAsset(s){const e=s instanceof t?s.id:s;this._defaultAsset!==e&&(this._defaultAsset&&this._unbindDefaultAsset(),this._defaultAsset=e,this._defaultAsset&&this._bindDefaultAsset(),this._onSetLocale(this._app.i18n.locale))}get defaultAsset(){return this._defaultAsset}set localizedAsset(s){const e=s instanceof t?s.id:s;if(this._localizedAsset!==e&&(this._localizedAsset&&(this._app.assets.off(`add:${this._localizedAsset}`,this._onLocalizedAssetAdd,this),this._unbindLocalizedAsset()),this._localizedAsset=e,this._localizedAsset)){this._app.assets.get(this._localizedAsset)?this._bindLocalizedAsset():this._app.assets.once(`add:${this._localizedAsset}`,this._onLocalizedAssetAdd,this)}}get localizedAsset(){return this._localizedAsset}set autoLoad(s){this._autoLoad!==s&&(this._autoLoad=s,this._autoLoad&&this._localizedAsset&&(this._unbindLocalizedAsset(),this._bindLocalizedAsset()))}get autoLoad(){return this._autoLoad}set disableLocalization(s){this._disableLocalization!==s&&(this._disableLocalization=s,this._onSetLocale(this._app.i18n.locale))}get disableLocalization(){return this._disableLocalization}_bindDefaultAsset(){const s=this._app.assets.get(this._defaultAsset);s?this._onDefaultAssetAdd(s):this._app.assets.once(`add:${this._defaultAsset}`,this._onDefaultAssetAdd,this)}_unbindDefaultAsset(){if(!this._defaultAsset)return;this._app.assets.off(`add:${this._defaultAsset}`,this._onDefaultAssetAdd,this);const s=this._app.assets.get(this._defaultAsset);s&&(s.off("add:localized",this._onLocaleAdd,this),s.off("remove:localized",this._onLocaleRemove,this),s.off("remove",this._onDefaultAssetRemove,this))}_onDefaultAssetAdd(s){this._defaultAsset===s.id&&(s.on("add:localized",this._onLocaleAdd,this),s.on("remove:localized",this._onLocaleRemove,this),s.once("remove",this._onDefaultAssetRemove,this))}_onDefaultAssetRemove(s){this._defaultAsset===s.id&&(s.off("add:localized",this._onLocaleAdd,this),s.off("remove:localized",this._onLocaleAdd,this),this._app.assets.once(`add:${this._defaultAsset}`,this._onDefaultAssetAdd,this))}_bindLocalizedAsset(){if(!this._autoLoad)return;const s=this._app.assets.get(this._localizedAsset);s&&(s.on("load",this._onLocalizedAssetLoad,this),s.on("change",this._onLocalizedAssetChange,this),s.on("remove",this._onLocalizedAssetRemove,this),s.resource?this._onLocalizedAssetLoad(s):this._app.assets.load(s))}_unbindLocalizedAsset(){const s=this._app.assets.get(this._localizedAsset);s&&(s.off("load",this._onLocalizedAssetLoad,this),s.off("change",this._onLocalizedAssetChange,this),s.off("remove",this._onLocalizedAssetRemove,this))}_onLocalizedAssetAdd(s){this._localizedAsset===s.id&&this._bindLocalizedAsset()}_onLocalizedAssetLoad(s){this.fire("load",s)}_onLocalizedAssetChange(s,t,e,i){this.fire("change",s,t,e,i)}_onLocalizedAssetRemove(s){this._localizedAsset===s.id&&(this.localizedAsset=this._defaultAsset),this.fire("remove",s)}_onLocaleAdd(s,t){this._app.i18n.locale===s&&this._onSetLocale(s)}_onLocaleRemove(s,t){this._app.i18n.locale===s&&this._onSetLocale(s)}_onSetLocale(s){if(!this._defaultAsset)return void(this.localizedAsset=null);const t=this._app.assets.get(this._defaultAsset);if(!t||this._disableLocalization)return void(this.localizedAsset=this._defaultAsset);const e=t.getLocalizedAssetId(s);this.localizedAsset=e||this._defaultAsset}destroy(){this.defaultAsset=null,this._app.i18n.off("set:locale",this._onSetLocale,this),this.off()}}export{e as LocalizedAsset};