"use client"; import { Accordion, Button, Checkbox, Label, TextInput, ToggleSwitch, } from "flowbite-react"; import { useContext, useState } from "react"; import { MapSceneContext, MapSceneContextType, } from "../providers/map-scene-provider"; import { Mesh, MeshStandardMaterial } from "three"; export function Form() { const [enabled, setEnabled] = useState(true); const { mapScene } = useContext(MapSceneContext) as MapSceneContextType; function handleChange() { if (!mapScene) return; mapScene.toggleClippingBox(); setEnabled(!enabled); } function handleCheckboxChange(name: string) { if (!mapScene) return; const mesh = mapScene.model.getObjectByName(name); if (mesh) { mesh.visible = !mesh.visible; } } return (
Layers
{mapScene?.model.children.map((child) => { const key = `toggle-visibility-${child.name}`; const color = `#${( (child as Mesh).material as MeshStandardMaterial ).color.getHexString()}`; return (
handleCheckboxChange(child.name)} className="ml-2" />
); })}
); }