A connectable port rendered on a node.
@type anchor() :: :left | :right | :top | :bottom
@type direction() :: :input | :output | :bidirectional
@type t() :: %PhoenixDnd.Port{ anchor: anchor(), class: term(), data: term(), direction: direction(), id: String.t() }
@spec input(String.t(), map() | keyword()) :: t()
@spec new!(map() | keyword() | t()) :: t()
@spec new!(String.t(), map() | keyword()) :: t()
@spec output(String.t(), map() | keyword()) :: t()