import React, { useState, useEffect, useRef } from "react"; import ReactDOM from "react-dom"; import searchIcon from "../../assets/search_icon.png"; import routeIcon from "../../assets/route_icon.png"; import closeIcon from "../../assets/close_icon.png"; import styles from "./SearchBar.module.css"; function SearchBar({ map, handleDirectionsSubmit, setIsPanelOpen, setSelectedRoom, availableShapes,handleFloorChange }) { const [isExpanded, setIsExpanded] = useState(false); const [from, setFrom] = useState(""); const [to, setTo] = useState(""); const [availableOptions, setAvailableOptions] = useState([]); const [filteredOptions, setFilteredOptions] = useState([]); const [dropdownVisible, setDropdownVisible] = useState(false); const [inputFieldType, setInputFieldType] = useState(""); const dropdownRef = useRef(null); const toggleExpanded = () => { setIsExpanded(!isExpanded); }; function searchRoom() { let foundRoom = availableShapes.find(sh => sh.info.name === from) console.log("map fnum",map.floorNum) if(foundRoom.floorNum !== map.floorNum){ handleFloorChange(foundRoom.floorNum); } console.log("FOUND ROOM: " + foundRoom) map.highlightShape(from); setSelectedRoom(foundRoom); setIsPanelOpen(true); } const handleInputFocus = (field) => { if (availableOptions.length === 0 && map) { setAvailableOptions( availableShapes .filter((sh) => sh.className === "RenderedRoom") .map((shape) => shape.info.name) ); } setDropdownVisible(true); setInputFieldType(field); }; const handleInputChange = (setter) => (event) => { const value = event.target.value; setter(value); setDropdownVisible(true); const filtered = availableOptions.filter((option) => option.toLowerCase().includes(value.toLowerCase()) ); setFilteredOptions(filtered); }; const handleOptionClick = (option) => { if (inputFieldType === "from") { setFrom(option); } else if (inputFieldType === "to") { setTo(option); } setDropdownVisible(false); }; const renderDropdown = () => { if (!dropdownVisible || filteredOptions.length === 0) return null; const position = dropdownRef.current?.getBoundingClientRect() || { top: 0, left: 0, width: 0 }; return ReactDOM.createPortal(