@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 4.04 kB
JavaScript
import*as i18n from"../../core/i18n/i18n.js";import*as SDK from"../../core/sdk/sdk.js";import*as UI from"../../ui/legacy/legacy.js";import*as Host from"../../core/host/host.js";import{ApplicationPanelTreeElement,ExpandableApplicationPanelTreeElement}from"./ApplicationPanelTreeElement.js";import{ServiceWorkerCacheView}from"./ServiceWorkerCacheViews.js";const UIStrings={cacheStorage:"Cache storage",refreshCaches:"Refresh Caches",delete:"Delete"},str_=i18n.i18n.registerUIStrings("panels/application/ServiceWorkerCacheTreeElement.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);export class ServiceWorkerCacheTreeElement extends ExpandableApplicationPanelTreeElement{swCacheModels;swCacheTreeElements;storageBucket;constructor(e,t){super(e,i18nString(UIStrings.cacheStorage),"CacheStorage");const s=UI.Icon.Icon.create("database","resource-tree-item");this.setLink("https://developer.chrome.com/docs/devtools/storage/cache/?utm_source=devtools"),this.setLeadingIcons([s]),this.swCacheModels=new Set,this.swCacheTreeElements=new Set,this.storageBucket=t}initialize(){this.swCacheModels.clear(),this.swCacheTreeElements.clear(),SDK.TargetManager.TargetManager.instance().observeModels(SDK.ServiceWorkerCacheModel.ServiceWorkerCacheModel,{modelAdded:e=>this.serviceWorkerCacheModelAdded(e),modelRemoved:e=>this.serviceWorkerCacheModelRemoved(e)})}onattach(){super.onattach(),this.listItemElement.addEventListener("contextmenu",this.handleContextMenuEvent.bind(this),!0)}handleContextMenuEvent(e){const t=new UI.ContextMenu.ContextMenu(e);t.defaultSection().appendItem(i18nString(UIStrings.refreshCaches),this.refreshCaches.bind(this)),t.show()}refreshCaches(){for(const e of this.swCacheModels)e.refreshCacheNames()}serviceWorkerCacheModelAdded(e){e.enable(),this.swCacheModels.add(e);for(const t of e.caches())this.addCache(e,t);e.addEventListener(SDK.ServiceWorkerCacheModel.Events.CacheAdded,this.cacheAdded,this),e.addEventListener(SDK.ServiceWorkerCacheModel.Events.CacheRemoved,this.cacheRemoved,this)}serviceWorkerCacheModelRemoved(e){for(const t of e.caches())this.removeCache(e,t);e.removeEventListener(SDK.ServiceWorkerCacheModel.Events.CacheAdded,this.cacheAdded,this),e.removeEventListener(SDK.ServiceWorkerCacheModel.Events.CacheRemoved,this.cacheRemoved,this),this.swCacheModels.delete(e)}cacheAdded(e){const{model:t,cache:s}=e.data;this.addCache(t,s)}cacheInTree(e){return!this.storageBucket||e.inBucket(this.storageBucket)}addCache(e,t){if(this.cacheInTree(t)){const s=new SWCacheTreeElement(this.resourcesPanel,e,t,void 0===this.storageBucket);this.swCacheTreeElements.add(s),this.appendChild(s)}}cacheRemoved(e){const{model:t,cache:s}=e.data;this.cacheInTree(s)&&this.removeCache(t,s)}removeCache(e,t){const s=this.cacheTreeElement(e,t);s&&(this.removeChild(s),this.swCacheTreeElements.delete(s),this.setExpandable(this.childCount()>0))}cacheTreeElement(e,t){for(const s of this.swCacheTreeElements)if(s.hasModelAndCache(e,t))return s;return null}}export class SWCacheTreeElement extends ApplicationPanelTreeElement{model;cache;view;constructor(e,t,s,c){let r;r=c?s.cacheName+" - "+s.storageKey:s.cacheName,super(e,r,!1),this.model=t,this.cache=s,this.view=null;const a=UI.Icon.Icon.create("table","resource-tree-item");this.setLeadingIcons([a])}get itemURL(){return"cache://"+this.cache.cacheId}onattach(){super.onattach(),this.listItemElement.addEventListener("contextmenu",this.handleContextMenuEvent.bind(this),!0)}handleContextMenuEvent(e){const t=new UI.ContextMenu.ContextMenu(e);t.defaultSection().appendItem(i18nString(UIStrings.delete),this.clearCache.bind(this)),t.show()}clearCache(){this.model.deleteCache(this.cache)}update(e){this.cache=e,this.view&&this.view.update(e)}onselect(e){return super.onselect(e),this.view||(this.view=new ServiceWorkerCacheView(this.model,this.cache)),this.showView(this.view),Host.userMetrics.panelShown(Host.UserMetrics.PanelCodes[Host.UserMetrics.PanelCodes.service_worker_cache]),!1}hasModelAndCache(e,t){return this.cache.equals(t)&&this.model===e}}