@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 2.92 kB
JavaScript
import*as Common from"../../core/common/common.js";import*as SDK from"../../core/sdk/sdk.js";import*as UI from"../../ui/legacy/legacy.js";export class ComputedStyleModel extends Common.ObjectWrapper.ObjectWrapper{nodeInternal;cssModelInternal;eventListeners;frameResizedTimer;computedStylePromise;constructor(){super(),this.nodeInternal=UI.Context.Context.instance().flavor(SDK.DOMModel.DOMNode),this.cssModelInternal=null,this.eventListeners=[],UI.Context.Context.instance().addFlavorChangeListener(SDK.DOMModel.DOMNode,this.onNodeChanged,this)}node(){return this.nodeInternal}cssModel(){return this.cssModelInternal&&this.cssModelInternal.isEnabled()?this.cssModelInternal:null}onNodeChanged(e){this.nodeInternal=e.data,this.updateModel(this.nodeInternal?this.nodeInternal.domModel().cssModel():null),this.onComputedStyleChanged(null)}updateModel(e){if(this.cssModelInternal===e)return;Common.EventTarget.removeEventListeners(this.eventListeners),this.cssModelInternal=e;const t=e?e.domModel():null,n=e?e.target().model(SDK.ResourceTreeModel.ResourceTreeModel):null;e&&t&&n&&(this.eventListeners=[e.addEventListener(SDK.CSSModel.Events.StyleSheetAdded,this.onComputedStyleChanged,this),e.addEventListener(SDK.CSSModel.Events.StyleSheetRemoved,this.onComputedStyleChanged,this),e.addEventListener(SDK.CSSModel.Events.StyleSheetChanged,this.onComputedStyleChanged,this),e.addEventListener(SDK.CSSModel.Events.FontsUpdated,this.onComputedStyleChanged,this),e.addEventListener(SDK.CSSModel.Events.MediaQueryResultChanged,this.onComputedStyleChanged,this),e.addEventListener(SDK.CSSModel.Events.PseudoStateForced,this.onComputedStyleChanged,this),e.addEventListener(SDK.CSSModel.Events.ModelWasEnabled,this.onComputedStyleChanged,this),t.addEventListener(SDK.DOMModel.Events.DOMMutated,this.onDOMModelChanged,this),n.addEventListener(SDK.ResourceTreeModel.Events.FrameResized,this.onFrameResized,this)])}onComputedStyleChanged(e){delete this.computedStylePromise,this.dispatchEventToListeners("ComputedStyleChanged",e?.data??null)}onDOMModelChanged(e){const t=e.data;this.nodeInternal&&(this.nodeInternal===t||t.parentNode===this.nodeInternal.parentNode||t.isAncestor(this.nodeInternal))&&this.onComputedStyleChanged(null)}onFrameResized(){this.frameResizedTimer&&clearTimeout(this.frameResizedTimer),this.frameResizedTimer=window.setTimeout(function(){this.onComputedStyleChanged(null),delete this.frameResizedTimer}.bind(this),100)}elementNode(){const e=this.node();return e?e.enclosingElementOrSelf():null}async fetchComputedStyle(){const e=this.elementNode(),t=this.cssModel();if(!e||!t)return null;const n=e.id;return n?(this.computedStylePromise||(this.computedStylePromise=t.getComputedStyle(n).then(function(e,t){return e===this.elementNode()&&t?new ComputedStyle(e,t):null}.bind(this,e))),this.computedStylePromise):null}}export class ComputedStyle{node;computedStyle;constructor(e,t){this.node=e,this.computedStyle=t}}