Packages
corex
0.1.0-beta.4
0.1.2
0.1.1
0.1.0
0.1.0-rc.1
0.1.0-rc.0
0.1.0-beta.5
0.1.0-beta.4
0.1.0-beta.3
0.1.0-beta.2
0.1.0-beta.1
0.1.0-alpha.33
0.1.0-alpha.32
0.1.0-alpha.31
0.1.0-alpha.30
0.1.0-alpha.29
0.1.0-alpha.28
0.1.0-alpha.27
0.1.0-alpha.26
0.1.0-alpha.25
0.1.0-alpha.24
0.1.0-alpha.23
0.1.0-alpha.22
0.1.0-alpha.21
0.1.0-alpha.20
0.1.0-alpha.19
0.1.0-alpha.18
0.1.0-alpha.17
0.1.0-alpha.16
0.1.0-alpha.15
0.1.0-alpha.14
0.1.0-alpha.13
0.1.0-alpha.12
0.1.0-alpha.11
0.1.0-alpha.10
0.1.0-alpha.9
0.1.0-alpha.8
0.1.0-alpha.7
0.1.0-alpha.6
0.1.0-alpha.5
0.1.0-alpha.4
0.1.0-alpha.3
0.1.0-alpha.2
0.1.0-alpha.1
Accessible and unstyled UI components library written in Elixir and TypeScript that integrates Zag.js state machines into the Phoenix Framework.
Current section
Files
Jump to
Current section
Files
lib/corex/point.ex
defmodule Corex.Point do
@moduledoc "Two-dimensional point as numeric x and y."
@enforce_keys [:x, :y]
defstruct [:x, :y]
@type t :: %__MODULE__{x: number(), y: number()}
@spec to_map(t() | %{x: number(), y: number()} | nil) :: %{x: number(), y: number()} | nil
def to_map(nil), do: nil
def to_map(%__MODULE__{x: x, y: y}) when is_number(x) and is_number(y), do: %{x: x, y: y}
def to_map(%{x: x, y: y}) when is_number(x) and is_number(y), do: %{x: x, y: y}
def to_map(_), do: raise(ArgumentError, "expected %Corex.Point{} or %{x: _, y: _}")
end