Found very weird ReactJS element systax {..props} in mesh element, Why is {...props} inside "mesh", Usually if there is then it can have properties but in this case its taking {..props}, How does this systax work and what is it doing with {..props}, Is it declaring it ? Can props be used in rest of element like <mesh {...props} att="{props.el}" />
 const ref = useRef()
  // Hold state for hovered and clicked events
  const [hovered, hover] = useState(false)
  const [clicked, click] = useState(false)
  // Subscribe this component to the render-loop, rotate the mesh every frame
  //useFrame((state, delta) => (ref.current.rotation.x += delta))
  // Return the view, these are regular Threejs elements expressed in JSX
  return (
    <mesh
      {...props}
      ref={ref}
      scale={clicked ? 1.5 : 1}
      onClick={(event) => click(!clicked)}
      onPointerOver={(event) => hover(true)}
      onPointerOut={(event) => hover(false)}>
      <boxGeometry args={[2, 2, 2]} />
      <meshBasicMaterial color={hovered ? 'hotpink' : 'brown'} />
    </mesh>
  )
}
 
    