blob: 6eed61c00f925420142a14a11d34874a7ecafdab [file] [log] [blame]
// Copyright 2020 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 LitHtml from '../third_party/lit-html/lit-html.js';
export interface ElementsPanelLinkData {
onElementRevealIconClick: (event?: Event) => void;
onElementRevealIconMouseEnter: (event?: Event) => void;
onElementRevealIconMouseLeave: (event?: Event) => void;
}
export class ElementsPanelLink extends HTMLElement {
private readonly shadow = this.attachShadow({mode: 'open'});
private onElementRevealIconClick: ((event?: Event) => void) = () => {};
private onElementRevealIconMouseEnter: ((event?: Event) => void) = () => {};
private onElementRevealIconMouseLeave: ((event?: Event) => void) = () => {};
set data(data: ElementsPanelLinkData) {
this.onElementRevealIconClick = data.onElementRevealIconClick;
this.onElementRevealIconMouseEnter = data.onElementRevealIconMouseEnter;
this.onElementRevealIconMouseLeave = data.onElementRevealIconMouseLeave;
this.update();
}
private update() {
this.render();
}
private render() {
// clang-format off
LitHtml.render(LitHtml.html`
<style>
.element-reveal-icon {
display: inline-block;
width: 28px;
height: 24px;
-webkit-mask-position:-140px 96px;
-webkit-mask-image: url(Images/largeIcons.svg);
background-color: rgb(110 110 110);
}
</style>
<span
class="element-reveal-icon"
@click=${this.onElementRevealIconClick}
@mouseenter=${this.onElementRevealIconMouseEnter}
@mouseleave=${this.onElementRevealIconMouseLeave}></span>
`, this.shadow);
// clang-format on
}
}
customElements.define('devtools-elements-panel-link', ElementsPanelLink);
declare global {
interface HTMLElementTagNameMap {
'devtools-elements-panel-link': ElementsPanelLink;
}
}