0 | module Text.CSS.Dir
 1 |
 2 | import Data.List
 3 | import Text.CSS.Length
 4 | import Text.CSS.Percentage
 5 |
 6 | %default total
 7 |
 8 | public export
 9 | data Dir : Type -> Type where
10 |   All    : a -> Dir a
11 |   Left   : a -> Dir a
12 |   Right  : a -> Dir a
13 |   Top    : a -> Dir a
14 |   Bottom : a -> Dir a
15 |   ||| Vertical and horizontal width
16 |   VH   : (v, h : a) -> Dir a
17 |   ||| Top, horizontal, bottom width
18 |   THB  : (t, h, b : a) -> Dir a
19 |   ||| Top, right, bottom, left
20 |   TRBL : (t, r, b, l : a) -> Dir a
21 |
22 | export
23 | vals : Dir a -> List a
24 | vals (All  x)       = [x]
25 | vals (Left  x)      = [x]
26 | vals (Right  x)     = [x]
27 | vals (Top  x)       = [x]
28 | vals (Bottom  x)    = [x]
29 | vals (VH   v h)     = [v,h]
30 | vals (THB  t h b)   = [t,h,b]
31 | vals (TRBL t r b l) = [t,r,b,l]
32 |
33 | export %inline
34 | Cast Length a => Cast Length (Dir a) where
35 |   cast = All . cast
36 |
37 | export %inline
38 | Cast Percentage a => Cast Percentage (Dir a) where
39 |   cast = All . cast
40 |