import { Controller } from "@hotwired/stimulus"

export default class extends Controller {
    static targets = ['coords'];
    END_ZOOM = 19;
    mapAnimate = {
        animate: true,
        duration: 1,
        easeLinearity: 0.25
    };

    /**
     * @param {Event} event 
     */
    go(event) {
        let map = window.LMap;
        const coords = event.currentTarget
            .getAttribute('data-coords').split(' ');

        map.setView(
            coords,
            this.END_ZOOM,
            this.mapAnimate
        );

        let marker = this.getMarker(map, coords);
        marker?.openTooltip();
    }
    /**
     * @param {L.Map} map
     * @param {Array<String>} coords
     * @returns {L.Marker}
     */
    getMarker(map, coords) {
        let marker;
        map.eachLayer(layer => {
            if (layer instanceof L.Marker) {
                const latLng = layer.getLatLng();
                const {lat, lng} = latLng;
                if (lat === Number(coords[0]) && lng === Number(coords[1])) {
                    marker = layer;
                    return;
                }
            }
        });

        return marker;
    }
}
