@quick-game/cli
Version:
Command line interface for rapid qg development
228 lines • 8.46 kB
JavaScript
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import * as Common from '../../core/common/common.js';
import * as SDK from '../../core/sdk/sdk.js';
import * as SourceFrame from '../../ui/legacy/components/source_frame/source_frame.js';
import * as UI from '../../ui/legacy/legacy.js';
import resourcesPanelStyles from './resourcesPanel.css.js';
import { ApplicationPanelSidebar, StorageCategoryView } from './ApplicationPanelSidebar.js';
import { CookieItemsView } from './CookieItemsView.js';
import { DatabaseQueryView } from './DatabaseQueryView.js';
import { DatabaseTableView } from './DatabaseTableView.js';
import { DOMStorageItemsView } from './DOMStorageItemsView.js';
import { StorageItemsView } from './StorageItemsView.js';
import * as PreloadingHelper from './preloading/helper/helper.js';
let resourcesPanelInstance;
export class ResourcesPanel extends UI.Panel.PanelWithSidebar {
resourcesLastSelectedItemSetting;
visibleView;
pendingViewPromise;
categoryView;
storageViews;
storageViewToolbar;
domStorageView;
cookieView;
emptyWidget;
sidebar;
constructor() {
super('resources');
this.resourcesLastSelectedItemSetting =
Common.Settings.Settings.instance().createSetting('resourcesLastSelectedElementPath', []);
this.visibleView = null;
this.pendingViewPromise = null;
this.categoryView = null;
const mainContainer = new UI.Widget.VBox();
this.storageViews = mainContainer.element.createChild('div', 'vbox flex-auto');
this.storageViewToolbar = new UI.Toolbar.Toolbar('resources-toolbar', mainContainer.element);
this.splitWidget().setMainWidget(mainContainer);
this.domStorageView = null;
this.cookieView = null;
this.emptyWidget = null;
this.sidebar = new ApplicationPanelSidebar(this);
this.sidebar.show(this.panelSidebarElement());
}
static instance(opts = { forceNew: null }) {
const { forceNew } = opts;
if (!resourcesPanelInstance || forceNew) {
resourcesPanelInstance = new ResourcesPanel();
}
return resourcesPanelInstance;
}
static shouldCloseOnReset(view) {
const viewClassesToClose = [
SourceFrame.ResourceSourceFrame.ResourceSourceFrame,
SourceFrame.ImageView.ImageView,
SourceFrame.FontView.FontView,
StorageItemsView,
DatabaseQueryView,
DatabaseTableView,
];
return viewClassesToClose.some(type => view instanceof type);
}
static async showAndGetSidebar() {
await UI.ViewManager.ViewManager.instance().showView('resources');
return ResourcesPanel.instance().sidebar;
}
focus() {
this.sidebar.focus();
}
lastSelectedItemPath() {
return this.resourcesLastSelectedItemSetting.get();
}
setLastSelectedItemPath(path) {
this.resourcesLastSelectedItemSetting.set(path);
}
resetView() {
if (this.visibleView && ResourcesPanel.shouldCloseOnReset(this.visibleView)) {
this.showView(null);
}
}
showView(view) {
this.pendingViewPromise = null;
if (this.visibleView === view) {
return;
}
if (this.visibleView) {
this.visibleView.detach();
}
if (view) {
view.show(this.storageViews);
}
this.visibleView = view;
this.storageViewToolbar.removeToolbarItems();
this.storageViewToolbar.element.classList.toggle('hidden', true);
if (view instanceof UI.View.SimpleView) {
void view.toolbarItems().then(items => {
items.map(item => this.storageViewToolbar.appendToolbarItem(item));
this.storageViewToolbar.element.classList.toggle('hidden', !items.length);
});
}
}
async scheduleShowView(viewPromise) {
this.pendingViewPromise = viewPromise;
const view = await viewPromise;
if (this.pendingViewPromise !== viewPromise) {
return null;
}
this.showView(view);
return view;
}
showCategoryView(categoryName, categoryLink) {
if (!this.categoryView) {
this.categoryView = new StorageCategoryView();
}
this.categoryView.setText(categoryName);
this.categoryView.setLink(categoryLink);
this.showView(this.categoryView);
}
showDOMStorage(domStorage) {
if (!domStorage) {
return;
}
if (!this.domStorageView) {
this.domStorageView = new DOMStorageItemsView(domStorage);
}
else {
this.domStorageView.setStorage(domStorage);
}
this.showView(this.domStorageView);
}
showCookies(cookieFrameTarget, cookieDomain) {
const model = cookieFrameTarget.model(SDK.CookieModel.CookieModel);
if (!model) {
return;
}
if (!this.cookieView) {
this.cookieView = new CookieItemsView(model, cookieDomain);
}
else {
this.cookieView.setCookiesDomain(model, cookieDomain);
}
this.showView(this.cookieView);
}
clearCookies(target, cookieDomain) {
const model = target.model(SDK.CookieModel.CookieModel);
if (!model) {
return;
}
void model.clear(cookieDomain).then(() => {
if (this.cookieView) {
this.cookieView.refreshItems();
}
});
}
wasShown() {
super.wasShown();
this.registerCSSFiles([resourcesPanelStyles]);
}
}
let resourceRevealerInstance;
export class ResourceRevealer {
static instance(opts = { forceNew: null }) {
const { forceNew } = opts;
if (!resourceRevealerInstance || forceNew) {
resourceRevealerInstance = new ResourceRevealer();
}
return resourceRevealerInstance;
}
async reveal(resource) {
if (!(resource instanceof SDK.Resource.Resource)) {
throw new Error('Internal error: not a resource');
}
const sidebar = await ResourcesPanel.showAndGetSidebar();
await sidebar.showResource(resource);
}
}
let frameDetailsRevealerInstance;
export class FrameDetailsRevealer {
static instance(opts = { forceNew: null }) {
const { forceNew } = opts;
if (!frameDetailsRevealerInstance || forceNew) {
frameDetailsRevealerInstance = new FrameDetailsRevealer();
}
return frameDetailsRevealerInstance;
}
async reveal(frame) {
if (!(frame instanceof SDK.ResourceTreeModel.ResourceTreeFrame)) {
throw new Error('Internal error: not a frame');
}
const sidebar = await ResourcesPanel.showAndGetSidebar();
sidebar.showFrame(frame);
}
}
let ruleSetViewRevealerInstance;
export class RuleSetViewRevealer {
static instance(opts = { forceNew: null }) {
const { forceNew } = opts;
if (!ruleSetViewRevealerInstance || forceNew) {
ruleSetViewRevealerInstance = new RuleSetViewRevealer();
}
return ruleSetViewRevealerInstance;
}
async reveal(revealInfo) {
if (!(revealInfo instanceof PreloadingHelper.PreloadingForward.RuleSetView)) {
throw new Error('Internal error: not an RuleSetView');
}
const sidebar = await ResourcesPanel.showAndGetSidebar();
sidebar.showPreloadingRuleSetView(revealInfo);
}
}
let attemptViewWithFilterRevealerInstance;
export class AttemptViewWithFilterRevealer {
static instance(opts = { forceNew: null }) {
const { forceNew } = opts;
if (!attemptViewWithFilterRevealerInstance || forceNew) {
attemptViewWithFilterRevealerInstance = new AttemptViewWithFilterRevealer();
}
return attemptViewWithFilterRevealerInstance;
}
async reveal(filter) {
if (!(filter instanceof PreloadingHelper.PreloadingForward.AttemptViewWithFilter)) {
throw new Error('Internal error: not an AttemptViewWithFilter');
}
const sidebar = await ResourcesPanel.showAndGetSidebar();
sidebar.showPreloadingAttemptViewWithFilter(filter);
}
}
//# sourceMappingURL=ResourcesPanel.js.map