blob: bcf8f9c9aa18671ce890b01d01cef50d2efe4eef [file] [log] [blame]
// Copyright 2020 the V8 project 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 {FocusEvent} from '../events.mjs';
import {DOM, V8CustomElement} from '../helper.mjs';
DOM.defineCustomElement(
'./map-panel/map-details',
(templateText) => class MapDetails extends V8CustomElement {
_map;
constructor() {
super(templateText);
this._filePositionNode.onclick = e => this._handleFilePositionClick(e);
}
get _mapDetails() {
return this.$('#mapDetails');
}
get _filePositionNode() {
return this.$('#filePositionNode');
}
set map(map) {
if (this._map === map) return;
this._map = map;
this.update();
}
_update() {
let details = '';
let clickableDetails = '';
if (this._map) {
clickableDetails = `ID: ${this._map.id}`;
clickableDetails += `\nSource location: ${this._map.filePosition}`;
details = this._map.description;
}
this._filePositionNode.innerText = clickableDetails;
this._filePositionNode.classList.add('clickable');
this._mapDetails.innerText = details;
}
_handleFilePositionClick(event) {
this.dispatchEvent(new FocusEvent(this._map.sourcePosition));
}
});