A viewport represented by its scene-space center and zoom level.
@type t() :: %PhoenixDnd.Viewport{ center_x: number(), center_y: number(), zoom: number() }
@spec new!(map() | keyword() | t()) :: t()