// Copyright 2020 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /* eslint-disable @devtools/no-lit-render-outside-of-view */ import * as Buttons from '../../../ui/components/buttons/buttons.js'; import * as UI from '../../../ui/legacy/legacy.js'; import {html, render} from '../../../ui/lit/lit.js'; import computedStyleTraceStyles from './computedStyleTrace.css.js'; export interface ComputedStyleTraceData { selector: string; active: boolean; onNavigateToSource: (event?: Event) => void; ruleOriginNode?: Node; } export class ComputedStyleTrace extends HTMLElement { readonly #shadow = this.attachShadow({mode: 'open'}); #selector = ''; #active = false; #onNavigateToSource: ((event?: Event) => void) = () => {}; #ruleOriginNode?: Node; connectedCallback(): void { this.#render(); } set data(data: ComputedStyleTraceData) { this.#selector = data.selector; this.#active = data.active; this.#onNavigateToSource = data.onNavigateToSource; this.#ruleOriginNode = data.ruleOriginNode; this.#render(); } #render(): void { // Disabled until https://crbug.com/1079231 is fixed. // clang-format off render(html`
${this.#selector} ${this.#ruleOriginNode}
`, this.#shadow, { host: this, }); // clang-format on } } customElements.define('devtools-computed-style-trace', ComputedStyleTrace); declare global { interface HTMLElementTagNameMap { 'devtools-computed-style-trace': ComputedStyleTrace; } }