2 lines
24 KiB
JavaScript
2 lines
24 KiB
JavaScript
import{w as u,l as g}from"./index-D4mISQVM.js";import{y as v}from"./eventemitter2-BZbyr5yF.js";import"./index-BbYcdrlh.js";var M=Object.defineProperty,f=(l,e,t)=>e in l?M(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t,n=(l,e,t)=>f(l,typeof e!="symbol"?e+"":e,t);class A{constructor(e){n(this,"_map"),n(this,"_observers",new Set),this._map=new Map(e)}notifyObservers(e,t,i){for(const s of this._observers)s(e,t,i)}observe(e){this._observers.add(e)}unobserve(e){this._observers.delete(e)}get(e){return this._map.get(e)}set(e,t){const i=this._map.has(e)?"update":"add";return this._map.set(e,t),this.notifyObservers(i,e,t),this}has(e){return this._map.has(e)}delete(e){const t=this._map.get(e),i=this._map.delete(e);return t&&this.notifyObservers("delete",e,t),i}clear(){this._map.clear()}get size(){return this._map.size}keys(){return this._map.keys()}values(){return this._map.values()}entries(){return this._map.entries()}forEach(e,t){this._map.forEach(e,t)}}const y=Object.keys;class S{constructor(e){n(this,"control"),n(this,"plugin"),n(this,"storageObserver"),n(this,"stateDisposer"),this.control=e.control,this.plugin=e.plugin,this.storageObserver=new A(Object.entries(this.getAttributes())),this.storageObserver.observe((t,i,s)=>{this.control.onAppStateChange(t,i,s)}),this.observeStorage()}get storage(){return this.storageObserver}getAppState(e){return this.storageObserver.get(e)}addAppState(e,t){var i;this.control.isWritable&&((i=this.plugin)==null||i.updateAttributes([e],t))}deleteAppState(e){var t;this.control.isWritable&&((t=this.plugin)==null||t.updateAttributes([e],void 0))}updateAppState(e,t){var i;this.control.isWritable&&((i=this.plugin)==null||i.updateAttributes([e],t))}getAttributes(){return u.toJS(this.plugin.attributes)||{}}diff(e){const t=y(e);for(const i of t)this.storageObserver.has(i)?g.isEqual(this.storageObserver.get(i),e[i])||this.storageObserver.set(i,e[i]):this.storageObserver.set(i,e[i]);for(const i of[...this.storageObserver.keys()])t.includes(i)||this.storageObserver.delete(i)}observeStorage(){this.stateDisposer=u.autorun(async()=>{const e=this.getAttributes();this.diff(e)})}destroy(){var e;(e=this.stateDisposer)==null||e.call(this)}}const b="0.0.9",C="@netless/app-in-mainview-plugin";if(typeof window<"u"){let l=window.__netlessUA||"";l+=` ${C}@${b}`,window.__netlessUA=l}const m={enableDefaultUI:!0,onlyShowHidden:!1,language:"en",theme:"light"},w="default-app-in-main-view-plugin",x={en:{show:"show all",hidden:"hidden all"},"zh-CN":{show:"全部展开",hidden:"全部收起"}};class P{constructor(e){n(this,"namespace",w),n(this,"container",document.createElement("div")),n(this,"badge",document.createElement("div")),n(this,"menuView",document.createElement("div")),n(this,"manager"),n(this,"onlyShowHidden"),n(this,"language"),n(this,"i18n"),n(this,"theme"),n(this,"isBindContainer",!1),n(this,"containerClickHandler",t=>{t.stopPropagation(),t.stopImmediatePropagation(),!this.manager.control.wm.readonly&&(getComputedStyle(this.menuView).display==="flex"?this.menuView.style.display="none":this.menuView.style.display="flex")}),n(this,"menuViewClickHandler",t=>{t.stopPropagation(),t.stopImmediatePropagation();const i=t.target,s=i.getAttribute(`data-${this.c("app-id")}`);if(s){this.manager.control.showApp(s);return}const r=i.getAttribute(`data-${this.c("btn-type")}`);if(r==="show-all"){this.manager.control.showCurrentPageApps();return}if(r==="hidden-all"){this.manager.control.hiddenCurrentPageApps();return}}),n(this,"appMenuChangeHandler",t=>{this.render(t)}),n(this,"onPrefersColorSchemeChangeHandler",()=>{this.container.classList.remove(this.theme),this.theme=this.manager.control.wmTheme,this.container.classList.add(this.theme)}),n(this,"onMainViewMountedHandler",()=>{this.isBindContainer||this.bindContainer()}),n(this,"onMainViewRebindHandler",()=>{this.removeContainer(),this.bindContainer()}),n(this,"onFullscreenChangeHandler",t=>{t?this.container.style.display="none":this.container.style.display="block"}),this.manager=e.manager,this.onlyShowHidden=e.onlyShowHidden,this.language=e.language,this.i18n=x[this.language],this.theme=e.theme,this.init(),this.observe()}c(e){return`${this.namespace}-${e}`}bindContainer(){const e=document.querySelector("button.telebox-collector");e&&(e.insertAdjacentElement("afterend",this.container),this.isBindContainer=!0)}removeContainer(){const e=this.container.parentElement;e&&(e.removeChild(this.container),this.isBindContainer=!1)}createDefaultAppMenu(){this.badge.classList.add(this.c("app-menu-badge")),this.menuView.classList.add(this.c("app-menu-tooltip")),this.container.classList.add(this.c("app-menu-container"),this.theme),this.menuView.addEventListener("click",this.menuViewClickHandler),this.container.addEventListener("click",this.containerClickHandler),this.container.append(this.badge,this.menuView),this.bindContainer()}async init(){const e=await this.manager.getApps();this.createDefaultAppMenu(),this.render(e)}observe(){this.manager.control.publicEventEmitter.on("appMenuChange",this.appMenuChangeHandler),this.manager.control.wm.emitter.on("prefersColorSchemeChange",this.onPrefersColorSchemeChangeHandler),this.manager.control.wm.emitter.on("onMainViewMounted",this.onMainViewMountedHandler),this.manager.control.wm.emitter.on("onMainViewRebind",this.onMainViewRebindHandler),this.manager.control.wm.emitter.on("fullscreenChange",this.onFullscreenChangeHandler)}unobserve(){this.manager.control.publicEventEmitter.off("appMenuChange",this.appMenuChangeHandler),this.manager.control.wm.emitter.off("prefersColorSchemeChange",this.onPrefersColorSchemeChangeHandler),this.manager.control.wm.emitter.off("onMainViewMounted",this.onMainViewMountedHandler),this.manager.control.wm.emitter.off("onMainViewRebind",this.onMainViewRebindHandler),this.manager.control.wm.emitter.off("fullscreenChange",this.onFullscreenChangeHandler)}createItem(e,t){const i=document.createElement("div");if(i.classList.add(this.c("app-menu-item")),t.status==="hidden"&&i.classList.add("active"),this.onlyShowHidden||i.classList.add("has-dot"),i.setAttribute(`data-${this.c("app-id")}`,e),!this.onlyShowHidden&&t.status==="visible"){const r=document.createElement("div");r.classList.add(this.c("app-menu-item-dot")),i.appendChild(r)}const s=document.createElement("div");if(s.classList.add(this.c("app-menu-item-title")),t.appInfo){const r=t.appInfo.appAttributes.options.title||e;s.innerText=r}else s.innerText=e;return i.appendChild(s),i}createShowBtn(){const e=document.createElement("div");e.classList.add(this.c("app-menu-item"),"show-all"),e.setAttribute(`data-${this.c("btn-type")}`,"show-all");const t=document.createElement("div");return t.classList.add(this.c("app-menu-item-title")),t.innerText=this.i18n.show,e.appendChild(t),e}createHidBtn(){const e=document.createElement("div");e.classList.add(this.c("app-menu-item"),"hidden-all"),e.setAttribute(`data-${this.c("btn-type")}`,"hidden-all");const t=document.createElement("div");return t.classList.add(this.c("app-menu-item-title")),t.innerText=this.i18n.hidden,e.appendChild(t),e}updateMenuView(e){let t=!1,i=!1;this.manager.control.getCurrentPageApps().forEach(o=>{o==="visible"?i=!0:t=!0});const s=[];e.forEach((o,h)=>{s.push(this.createItem(h,o))});const r=this.createShowBtn();t&&r.classList.add("active");const c=this.createHidBtn();i&&c.classList.add("active"),this.menuView.append(...s,r,c)}render(e){this.menuView.style.display="none",this.badge.innerText="",this.menuView.innerHTML="",e.size===0?this.container.style.display="none":(this.badge.innerText=e.size.toString(),this.updateMenuView(e),this.container.style.display="block")}destroy(){this.unobserve(),this.badge.remove(),this.menuView.removeEventListener("click",this.menuViewClickHandler),this.menuView.remove(),this.container.removeEventListener("click",this.containerClickHandler),this.container.remove(),this.removeContainer()}}class V{constructor(e){n(this,"enableDefaultUI",m.enableDefaultUI),n(this,"onlyShowHidden"),n(this,"apps"),n(this,"scenePath"),n(this,"resolvePublicEventEmitter"),n(this,"resolveTimer"),n(this,"appMenu"),n(this,"timer"),n(this,"control"),this.control=e.control,this.enableDefaultUI=g.isBoolean(e.options.enableDefaultUI)?e.options.enableDefaultUI:m.enableDefaultUI,this.onlyShowHidden=g.isBoolean(e.options.onlyShowHidden)?e.options.onlyShowHidden:m.onlyShowHidden,this.scenePath=this.currentScenePath,this.apps=this.getCurrentApps(),this.enableDefaultUI&&(this.appMenu=new P({manager:this,onlyShowHidden:this.onlyShowHidden,language:e.options.language||m.language,theme:e.options.theme||this.control.wmTheme}))}get mainView(){return this.control.wm.mainView}get currentScenePath(){return this.mainView.focusScenePath}get wmAppProxies(){var e;return((e=this.control.wm.appManager)==null?void 0:e.appProxies)||new Map}async getApps(){return this.checkAppChangeAllReady()?this.apps:(await this.willAppInfoAllReady(),this.apps)}updateAppInfo(e){const t=this.apps.get(e);t&&(t.appInfo=this.wmAppProxies.get(e),this.resolvePublicEventEmitter&&this.checkAppChangeAllReady()&&this.resolvePublicEventEmitter(!0))}async pageChangeHandler(e,t){this.scenePath=e,this.apps=this.getCurrentApps(t),await this.willPublicEmitterMenuChange()}appChangeHandler(e,t,i){if(i.scenePath===this.scenePath)if(this.onlyShowHidden&&i.status==="visible")this.apps.delete(t);else if((e==="add"||e==="update")&&this.wmAppProxies.has(t)){const s={status:i.status,appInfo:this.wmAppProxies.get(t)};this.apps.set(t,s)}else e==="delete"&&this.apps.delete(t);this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.timer=void 0,this.willPublicEmitterMenuChange()},100)}destroy(){var e;this.apps.clear(),(e=this.appMenu)==null||e.destroy(),this.timer&&clearTimeout(this.timer),this.timer=void 0,this.resolveTimer&&clearTimeout(this.resolveTimer),this.resolveTimer=void 0}getCurrentApps(e){let t=e;t||(t=this.control.getCurrentPageApps());const i=new Map;return t.forEach((s,r)=>{this.onlyShowHidden&&s==="visible"||i.set(r,{status:s,appInfo:this.wmAppProxies.get(r)})}),i}checkAppChangeAllReady(){for(const e of this.apps.values())if(!e.appInfo)return!1;return!0}async willAppInfoAllReady(e){if(this.resolvePublicEventEmitter&&this.resolvePublicEventEmitter(!1),this.checkAppChangeAllReady()){e&&e();return}const t=await new Promise(i=>{this.resolvePublicEventEmitter=i,this.resolveTimer=setTimeout(()=>{this.resolveTimer=void 0,this.resolvePublicEventEmitter&&this.resolvePublicEventEmitter(!0)},2e3)});this.resolveTimer&&(clearTimeout(this.resolveTimer),this.resolveTimer=void 0),this.resolvePublicEventEmitter=void 0,t&&e&&e()}async willPublicEmitterMenuChange(){await this.willAppInfoAllReady(()=>{this.control.publicEventEmitter.emit("appMenuChange",this.apps),this.control.logger.info("[AppInMainViewPlugin] emit appMenuChange")})}}class T extends v{emit(e,...t){return super.emit(e,...t)}on(e,t){return super.on(e,t)}}class H{constructor(e){n(this,"wm"),n(this,"publicEventEmitter",new T),n(this,"logger"),n(this,"version",b),n(this,"pluginOptions"),n(this,"injectStyleId",`${w}-inject-style`),n(this,"collector"),n(this,"plugin"),n(this,"isCurWritable",!1),n(this,"originSetBoxState"),n(this,"originSetMinimized"),n(this,"appMenuManager"),n(this,"focueTimer"),n(this,"titlebarTimer"),n(this,"onWritableChange",()=>{const t=this.wm.displayer.isWritable;this.isCurWritable=t}),n(this,"observeTitlebarHandler",()=>{const t=this.wm.boxState;let i=!1;const s=this.getCurrentPageVisibleApps();t==="maximized"?(s.size<2?this.setTitlebarNodeDisplay("none"):this.setTitlebarNodeDisplay("flex"),i=!0):this.setTitlebarNodeDisplay("none");for(const r of s)i?this.setAppNodeDisplay(r,"block",!0):this.activeMaximizeBtn(r,!1)}),n(this,"observeBoxStateChangeHandler",()=>{this.checkBoxState()&&(this.observeTitlebarTimer(),this.wm.boxState==="maximized"&&this.observerFocusAppTimer())}),n(this,"getTargetParent",t=>t.hasAttribute("data-tele-box-i-d")?t:t.parentElement?this.getTargetParent(t.parentElement):null),n(this,"minimizeBtnClickHandler",t=>{if(t.stopPropagation(),t.stopImmediatePropagation(),this.wm.readonly)return;const i=this.getTargetParent(t.target);if(i){const s=i.getAttribute("data-tele-box-i-d");s&&this.hideApp(s)}}),n(this,"observeAppSetupHandler",t=>{if(document.querySelector(`div.telebox-box[data-tele-box-i-d="${t}"]`)){const i=this.collector.getAppState(t),s=this.wm.mainView.focusScenePath;i?(i.status==="visible"&&s===i.scenePath?this.setAppNodeDisplay(t,"block"):i.status==="hidden"&&this.setAppNodeDisplay(t,"none"),this.wm.boxState==="maximized"&&(this.observeTitlebarTimer(),this.observerFocusAppTimer())):s&&this.collector.addAppState(t,{scenePath:s,status:"visible"});const r=document.querySelector(`div[data-tele-box-i-d="${t}"] .telebox-titlebar-icon-minimize`);r&&(r.removeEventListener("click",this.minimizeBtnClickHandler),r.addEventListener("click",this.minimizeBtnClickHandler))}this.appMenuManager.updateAppInfo(t)}),n(this,"observeBoxCloseHandler",t=>{this.collector.storage.has(t.appId)&&this.collector.deleteAppState(t.appId);const i=document.querySelector(`div[data-tele-box-i-d="${t.appId}"] .telebox-titlebar-icon-minimize`);i&&i.removeEventListener("click",this.minimizeBtnClickHandler)}),n(this,"observeMainViewScenePathChangeHandler",t=>{this.collector.storage.forEach((s,r)=>{s.scenePath===t&&s.status==="visible"?this.setAppNodeDisplay(r,"block"):this.setAppNodeDisplay(r,"none")}),this.wm.boxState==="maximized"&&(this.observeTitlebarTimer(),this.observerFocusAppTimer());const i=this.getTargetPageApps(t);this.appMenuManager.pageChangeHandler(t,i)}),n(this,"observeMaxStateMinimizeBtnClickHandler",t=>{t.stopPropagation(),t.stopImmediatePropagation();const i=this.topBoxId;i&&this.hideApp(i)}),n(this,"observeMainViewMountedHandler",()=>{this.bindMaxStateMinimizeBtnClickHandler()}),n(this,"observeMainViewRebindHandler",()=>{this.removeMaxStateMinimizeBtnClickHandler(),this.bindMaxStateMinimizeBtnClickHandler()}),this.wm=e.windowManager,this.wm.room&&(this.isCurWritable=this.wm.room.isWritable),this.logger=e.logger,this.pluginOptions=e.options,this.restrictedSetBoxState()}get isWritable(){return this.isCurWritable}get wmTheme(){return this.wm.prefersColorScheme&&this.wm.prefersColorScheme!=="auto"?this.wm.prefersColorScheme:m.theme}get topBoxId(){const e=Array.from(document.querySelectorAll("div.telebox-box"));if(!e.length)return;let t=0,i;for(const s of e){if(getComputedStyle(s).display==="none")continue;const r=Number(getComputedStyle(s).zIndex),c=s.getAttribute("data-tele-box-i-d");r>t&&c&&(t=r,i=c)}return i}get focused(){return this.wm.focused}init(){this.wm.room&&this.wm.room.logger.info(`[AppInMainViewPlugin] appInMainViewManager init ${JSON.stringify(this.pluginOptions)}`),this.initInjectStyle(),this.collector=new S({control:this,plugin:this.plugin}),this.observeWm(),this.appMenuManager=new V({control:this,options:this.pluginOptions})}initInjectStyle(){this.removeInjectStyle();const e=document.createElement("style");e.id=this.injectStyleId,document.head.appendChild(e);try{if(!e.sheet){console.error("Style sheet is not available");return}e.sheet.insertRule(".telebox-titles .telebox-titles-tab[data-tele-box-i-d], .telebox-box[data-tele-box-i-d], .telebox-titlebar.telebox-max-titlebar { display: none; }",e.sheet.cssRules.length)}catch(t){console.warn("Failed to insert style rule:",t),e.textContent=".telebox-titles .telebox-titles-tab[data-tele-box-i-d], .telebox-box[data-tele-box-i-d], .telebox-titlebar.telebox-max-titlebar { display: none; }"}}removeInjectStyle(){const e=document.getElementById(this.injectStyleId);e&&e.remove()}bindPlugin(e){this.plugin=e,this.init()}destroy(){this.unobserveWm(),this.focueTimer&&(clearTimeout(this.focueTimer),this.focueTimer=void 0),this.titlebarTimer&&(clearTimeout(this.titlebarTimer),this.titlebarTimer=void 0),this.appMenuManager.destroy(),this.removeInjectStyle(),this.wm.room&&this.wm.room.logger.info("[AppInMainViewPlugin] AppInMainViewManager has been destroyed")}setTitlebarNodeDisplay(e){const t=document.querySelector("div.telebox-titlebar.telebox-max-titlebar");t&&(e==="flex"?t.style.display=`${e}`:t.style.removeProperty("display"))}activeMaximizeBtn(e,t=!1){let i;e instanceof HTMLDivElement?i=e.querySelector("button.telebox-titlebar-icon-maximize"):i=document.querySelector(`.telebox-box[data-tele-box-i-d="${e}"] button.telebox-titlebar-icon-maximize`),i&&(t&&!i.classList.contains("is-active")?i.classList.add("is-active"):!t&&i.classList.contains("is-active")&&i.classList.remove("is-active"))}setAppNodeDisplay(e,t,i=!1){const s=Array.from(document.querySelectorAll(`[data-tele-box-i-d="${e}"]`));s.length&&s.forEach(r=>{t==="block"?(r.style.display=`${t}`,i&&r instanceof HTMLDivElement&&(this.wm.boxState==="maximized"?this.activeMaximizeBtn(r,!0):this.activeMaximizeBtn(r,!1))):r.style.removeProperty("display")})}observerFocusAppTimer(){this.focueTimer&&clearTimeout(this.focueTimer),this.focueTimer=setTimeout(()=>{if(this.focueTimer=void 0,this.wm.boxState==="maximized"){const e=this.topBoxId;e&&this.focused!==e&&this.wm.focusApp(e)}},100)}observeTitlebarTimer(){this.titlebarTimer&&clearTimeout(this.titlebarTimer),this.titlebarTimer=setTimeout(()=>{this.titlebarTimer=void 0,this.observeTitlebarHandler()},100)}restrictedSetBoxState(){this.originSetBoxState=this.wm.setBoxState,this.originSetMinimized=this.wm.setMinimized,this.wm.setBoxState=e=>{if(e==="minimized"){this.logger.warn("[AppInMainViewPlugin] when use appInMainViewManager, setBoxState can not set to minimized");return}this.originSetBoxState&&this.originSetBoxState.call(this.wm,e)},this.wm.setMinimized=e=>{if(e){this.logger.warn("[AppInMainViewPlugin] when use appInMainViewManager, setMinimized can not set to minimized");return}this.originSetMinimized&&this.originSetMinimized.call(this.wm,e)}}bindMaxStateMinimizeBtnClickHandler(){const e=document.querySelector("div.telebox-max-titlebar .telebox-titlebar-icon-minimize");e&&e.addEventListener("click",this.observeMaxStateMinimizeBtnClickHandler)}removeMaxStateMinimizeBtnClickHandler(){const e=document.querySelector("div.telebox-max-titlebar .telebox-titlebar-icon-minimize");e&&e.removeEventListener("click",this.observeMaxStateMinimizeBtnClickHandler)}checkBoxState(){return this.wm.boxState==="minimized"?(this.logger.warn("[AppInMainViewPlugin] when use appInMainViewManager boxState can not minimized, but boxState is minimized now"),this.isWritable?this.wm.setMinimized(!1):this.logger.error(`[AppInMainViewPlugin] when use appInMainViewManager boxState can not minimized, but boxState is ${this.wm.boxState} and isWritable is ${this.isWritable} now.`),!1):!0}observeWm(){this.bindMaxStateMinimizeBtnClickHandler(),this.wm.emitter.on("boxStateChange",this.observeBoxStateChangeHandler),this.wm.emitter.on("onAppSetup",this.observeAppSetupHandler),this.wm.emitter.on("onBoxClose",this.observeBoxCloseHandler),this.wm.emitter.on("mainViewScenePathChange",this.observeMainViewScenePathChangeHandler),this.wm.emitter.on("onMainViewMounted",this.observeMainViewMountedHandler),this.wm.emitter.on("onMainViewRebind",this.observeMainViewRebindHandler),this.wm.displayer.callbacks.on("onEnableWriteNowChanged",this.onWritableChange),this.checkBoxState()}unobserveWm(){this.wm.setBoxState=this.originSetBoxState,this.wm.setMinimized=this.originSetMinimized,this.wm.emitter.off("boxStateChange",this.observeBoxStateChangeHandler),this.wm.emitter.off("onAppSetup",this.observeAppSetupHandler),this.wm.emitter.off("onBoxClose",this.observeBoxCloseHandler),this.wm.emitter.off("mainViewScenePathChange",this.observeMainViewScenePathChangeHandler),this.wm.emitter.off("onMainViewMounted",this.observeMainViewMountedHandler),this.wm.emitter.off("onMainViewRebind",this.observeMainViewRebindHandler),this.wm.displayer.callbacks.off("onEnableWriteNowChanged",this.onWritableChange),this.removeMaxStateMinimizeBtnClickHandler()}onAppStateChange(e,t,i){const s=this.wm.mainView.focusScenePath;if(s){if(i.scenePath!==s)this.setAppNodeDisplay(t,"none");else{switch(e){case"add":{this.setAppNodeDisplay(t,"block");break}case"delete":{this.setAppNodeDisplay(t,"none");break}case"update":{i.status==="visible"?this.setAppNodeDisplay(t,"block"):this.setAppNodeDisplay(t,"none");break}}this.wm.boxState==="maximized"&&(this.observeTitlebarTimer(),this.observerFocusAppTimer())}this.appMenuManager.appChangeHandler(e,t,i)}}hideApp(e){const t=this.collector.getAppState(e);t&&t.status==="visible"&&this.collector.updateAppState(e,{...t,status:"hidden"})}showApp(e){const t=this.collector.getAppState(e);t&&t.status==="hidden"&&this.collector.updateAppState(e,{...t,status:"visible"})}showCurrentPageApps(){this.getCurrentPageApps().forEach((e,t)=>{e==="hidden"&&this.showApp(t)})}hiddenCurrentPageApps(){this.getCurrentPageVisibleApps().forEach(e=>{this.hideApp(e)})}get isCurrentPageAppsAllVisible(){return this.getCurrentPageApps().values().every(e=>e==="visible")}get isCurrentPageAppsAllHidden(){return this.getCurrentPageApps().values().every(e=>e==="hidden")}getTargetPageVisibleApps(e){const t=new Set;return this.collector.storage.forEach((i,s)=>{i.scenePath===e&&i.status==="visible"&&t.add(s)}),t}getTargetPageApps(e){const t=new Map;return this.collector.storage.forEach((i,s)=>{i.scenePath===e&&t.set(s,i.status)}),t}getCurrentPageVisibleApps(){const e=this.wm.mainView.focusScenePath;return e?this.getTargetPageVisibleApps(e):new Set}getCurrentPageApps(){const e=this.wm.mainView.focusScenePath;return e?this.getTargetPageApps(e):new Map}}const p=class a extends u.InvisiblePlugin{static async getInstance(e,t,i){i&&(a.logger=i);const s=e.displayer;let r=s.getInvisiblePlugin(a.kind);a.currentManager||a.createCurrentManager(e,t||{}),r||(r=await a.createAppInMainViewPlugin(s,a.kind)),r&&a.currentManager&&a.currentManager.bindPlugin(r);const c={displayer:s,windowManager:e,currentManager:a.currentManager,destroy(){a.currentManager&&(a.logger.info("[AppInMainViewPlugin] has been destroyed"),a.currentManager.destroy(),a.currentManager=void 0)},addListener:(o,h)=>{var d;(d=a.currentManager)==null||d.publicEventEmitter.on(o,h)},removeListener:(o,h)=>{var d;(d=a.currentManager)==null||d.publicEventEmitter.off(o,h)},hideApp:o=>{var h;a.logger.info(`[AppInMainViewPlugin] hideApp ${o}`),(h=a.currentManager)==null||h.hideApp(o)},showApp:o=>{var h;a.logger.info(`[AppInMainViewPlugin] showApp ${o}`),(h=a.currentManager)==null||h.showApp(o)},showCurrentPageApps:()=>{var o;a.logger.info("[AppInMainViewPlugin] showCurrentPageApps"),(o=a.currentManager)==null||o.showCurrentPageApps()},hiddenCurrentPageApps:()=>{var o;a.logger.info("[AppInMainViewPlugin] hiddenCurrentPageApps"),(o=a.currentManager)==null||o.hiddenCurrentPageApps()}};return Object.defineProperty(c,"currentPageVisibleApps",{get(){return a.currentManager?a.currentManager.getCurrentPageVisibleApps():new Set}}),Object.defineProperty(c,"currentPageApps",{get(){return a.currentManager?a.currentManager.getCurrentPageApps():new Map}}),e._appInMainViewPlugin=c,e._appInMainViewPlugin}static onCreate(e){e&&a.currentManager&&(a.timer&&(clearTimeout(a.timer),a.timer=void 0),a.currentManager.bindPlugin(e))}static async createAppInMainViewPlugin(e,t){if(u.isRoom(e))try{if(e.isWritable)return await e.createInvisiblePlugin(a,{});{await e.setWritable(!0);const s=await a.createAppInMainViewPlugin(e,t);return await e.setWritable(!1),s}}catch(s){a.logger.error("[AppInMainViewPlugin] createAppInMainViewPlugin error",s)}let i=e.getInvisiblePlugin(t);return i||(await new Promise(s=>{a.timer&&(clearTimeout(a.timer),a.timer=void 0),a.timer=setTimeout(()=>{a.timer=void 0,s(!0)},1e3)}),i=await a.createAppInMainViewPlugin(e,t)),i}destroy(){var e;a.logger.info("[AppInMainViewPlugin] passive destroyed"),(e=a.currentManager)==null||e.destroy(),a.currentManager=void 0}};n(p,"kind","app-in-main-view-plugin"),n(p,"currentManager"),n(p,"timer"),n(p,"logger",{info:console.log,warn:console.warn,error:console.error}),n(p,"createCurrentManager",(l,e)=>{p.currentManager&&p.currentManager.destroy();const t={windowManager:l,options:e,logger:p.logger},i=new H(t);l.room&&p.logger.info("[AppInMainViewPlugin] new appInMainViewManager"),p.currentManager=i});let z=p;export{H as AppInMainViewManager,z as AppInMainViewPlugin,S as Collector,T as EventEmitter,y as plainObjectKeys};
|