mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-10 05:35:05 +08:00
Bug: chromium:1161501 Change-Id: I24add390adb7cb525b306743cc83d807ca3eaa04 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2602984 Auto-Submit: Mathias Bynens <mathias@chromium.org> Reviewed-by: Jan Scheffler <janscheffler@chromium.org> Commit-Queue: Mathias Bynens <mathias@chromium.org>
86 lines
1.9 KiB
JavaScript
86 lines
1.9 KiB
JavaScript
// Copyright (c) 2014 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 '../common/common.js';
|
|
import * as SDK from '../sdk/sdk.js'; // eslint-disable-line no-unused-vars
|
|
import * as UI from '../ui/ui.js';
|
|
|
|
import {ComputedStyleModel, Events} from './ComputedStyleModel.js';
|
|
|
|
export class ElementsSidebarPane extends UI.Widget.VBox {
|
|
/**
|
|
* @param {boolean=} delegatesFocus
|
|
*/
|
|
constructor(delegatesFocus) {
|
|
super(true, delegatesFocus);
|
|
this.element.classList.add('flex-none');
|
|
this._computedStyleModel = new ComputedStyleModel();
|
|
this._computedStyleModel.addEventListener(Events.ComputedStyleChanged, this.onCSSModelChanged, this);
|
|
|
|
this._updateThrottler = new Common.Throttler.Throttler(100);
|
|
this._updateWhenVisible = false;
|
|
}
|
|
|
|
/**
|
|
* @return {?SDK.DOMModel.DOMNode}
|
|
*/
|
|
node() {
|
|
return this._computedStyleModel.node();
|
|
}
|
|
|
|
/**
|
|
* @return {?SDK.CSSModel.CSSModel}
|
|
*/
|
|
cssModel() {
|
|
return this._computedStyleModel.cssModel();
|
|
}
|
|
|
|
/**
|
|
* @return {!ComputedStyleModel}
|
|
*/
|
|
computedStyleModel() {
|
|
return this._computedStyleModel;
|
|
}
|
|
|
|
/**
|
|
* @protected
|
|
* @return {!Promise.<?>}
|
|
*/
|
|
async doUpdate() {
|
|
return;
|
|
}
|
|
|
|
update() {
|
|
this._updateWhenVisible = !this.isShowing();
|
|
if (this._updateWhenVisible) {
|
|
return;
|
|
}
|
|
this._updateThrottler.schedule(innerUpdate.bind(this));
|
|
|
|
/**
|
|
* @return {!Promise.<?>}
|
|
* @this {ElementsSidebarPane}
|
|
*/
|
|
function innerUpdate() {
|
|
return this.isShowing() ? this.doUpdate() : Promise.resolve();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @override
|
|
*/
|
|
wasShown() {
|
|
super.wasShown();
|
|
if (this._updateWhenVisible) {
|
|
this.update();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param {!Common.EventTarget.EventTargetEvent} event
|
|
*/
|
|
onCSSModelChanged(event) {
|
|
}
|
|
}
|