// 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 './stats-panel.mjs'; import './map-panel/map-details.mjs'; import './map-panel/map-transitions.mjs'; import {FocusEvent} from './events.mjs'; import {DOM, V8CustomElement} from './helper.mjs'; import {MapLogEntry} from './log/map.mjs'; DOM.defineCustomElement('map-panel', (templateText) => class MapPanel extends V8CustomElement { _map; constructor() { super(templateText); this.searchBarBtn.addEventListener('click', e => this.handleSearchBar(e)); this.addEventListener(FocusEvent.name, e => this.handleUpdateMapDetails(e)); } handleUpdateMapDetails(e) { if (e.entry instanceof MapLogEntry) { this.mapDetailsPanel.map = e.entry; } } get mapTransitionsPanel() { return this.$('#map-transitions'); } get mapDetailsPanel() { return this.$('#map-details'); } get searchBarBtn() { return this.$('#searchBarBtn'); } get searchBar() { return this.$('#searchBar'); } set timeline(timeline) { this._timeline = timeline; } set map(value) { this._map = value; this.mapTransitionsPanel.map = this._map; } handleSearchBar(e) { let searchBar = this.$('#searchBarInput'); let searchBarInput = searchBar.value; // access the map from model cache let selectedMap = MapLogEntry.get(parseInt(searchBarInput)); if (selectedMap) { searchBar.className = 'success'; } else { searchBar.className = 'failure'; } this.dispatchEvent(new FocusEvent(selectedMap)); } set selectedMapLogEntries(list) { this.mapTransitionsPanel.selectedMapLogEntries = list; } get selectedMapLogEntries() { return this.mapTransitionsPanel.selectedMapLogEntries; } });