import { useEffect, useState } from "react"; import InputWithDropDown from "../../../ui/inputs/InputWithDropDown"; import InputToggle from "../../../ui/inputs/InputToggle"; import defaultTexture from '../../../../assets/textures/floor/white.png'; import floorTexture1 from '../../../../assets/textures/floor/factory wall texture.jpg'; import { useBuilderStore } from "../../../../store/builder/useBuilderStore"; import { useSceneContext } from "../../../../modules/scene/sceneContext"; import { useVersionContext } from "../../../../modules/builder/version/versionContext"; import { useParams } from "react-router-dom"; import { getUserData } from "../../../../functions/getUserData"; import { useSocketStore } from "../../../../store/builder/store"; // import { upsertFloorApi } from "../../../../services/factoryBuilder/floor/upsertFloorApi"; const SelectedFloorProperties = () => { const [depth, setDepth] = useState(""); const [isBeveled, setIsBeveled] = useState(false); const [bevelStrength, setBevelStrength] = useState(""); const { selectedFloor } = useBuilderStore(); const { floorStore } = useSceneContext(); const { selectedVersionStore } = useVersionContext(); const { selectedVersion } = selectedVersionStore(); const { socket } = useSocketStore(); const { userId, organization } = getUserData(); const { projectId } = useParams(); const { getFloorById, updateFloor } = floorStore(); const [activeSurface, setActiveSurface] = useState<"top" | "side">("top"); const materials = [ { texture: defaultTexture, textureId: "Default Material", textureName: "Default Material" }, { texture: floorTexture1, textureId: "Material 1", textureName: "Grunge Concrete" } ]; const floor = selectedFloor ? getFloorById(selectedFloor.userData.floorUuid) : null; useEffect(() => { if (floor) { setDepth(floor.floorDepth.toString()); setIsBeveled(floor.isBeveled); setBevelStrength(floor.bevelStrength.toString()); } }, [floor]); const handleDepthChange = (val: string) => { setDepth(val); const parsed = parseFloat(val); if (!isNaN(parsed) && floor) { const updatedFloor = updateFloor(floor.floorUuid, { floorDepth: parsed }); if (projectId) { // API // upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); // SOCKET const data = { floorData: updatedFloor, projectId: projectId, versionId: selectedVersion?.versionId || '', userId: userId, organization: organization } socket.emit('v1:model-Floor:add', data); } } }; const handleBevelChange = (val: string) => { setBevelStrength(val); const parsed = parseFloat(val); if (!isNaN(parsed) && floor) { const updatedFloor = updateFloor(floor.floorUuid, { bevelStrength: parsed }); if (projectId) { // API // upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); // SOCKET const data = { floorData: updatedFloor, projectId: projectId, versionId: selectedVersion?.versionId || '', userId: userId, organization: organization } socket.emit('v1:model-Floor:add', data); } } }; const handleIsBeveledToggle = () => { setIsBeveled(!isBeveled); if (!floor) return; const updatedFloor = updateFloor(floor.floorUuid, { isBeveled: !floor.isBeveled }); if (projectId) { // API // upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); // SOCKET const data = { floorData: updatedFloor, projectId: projectId, versionId: selectedVersion?.versionId || '', userId: userId, organization: organization } socket.emit('v1:model-Floor:add', data); } }; const handleSelectMaterial = (material: { textureId: string; textureName: string }) => { if (!floor) return; const key = activeSurface === "top" ? "topMaterial" : "sideMaterial"; const updatedFloor = updateFloor(floor.floorUuid, { [key]: material.textureId }); if (projectId) { // API // upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); // SOCKET const data = { floorData: updatedFloor, projectId: projectId, versionId: selectedVersion?.versionId || '', userId: userId, organization: organization } socket.emit('v1:model-Floor:add', data); } }; if (!floor) return null; const selectedMaterials = { top: materials.find((m) => m.textureId === floor.topMaterial) ?? materials[0], side: materials.find((m) => m.textureId === floor.sideMaterial) ?? materials[0], }; return (