{-# LANGUAGE AllowAmbiguousTypes #-}
module Web.Hyperbole.View.Tag where
import Control.Monad (forM_)
import Data.ByteString (ByteString)
import Data.String.Conversions (cs)
import Data.Text (Text, pack)
import Data.Text qualified as T
import Effectful
import Effectful.State.Static.Local
import Web.Atomic.CSS
import Web.Atomic.Types
import Web.Hyperbole.Data.URI
import Web.Hyperbole.View.Types
el :: View c () -> View c ()
el :: forall c. View c () -> View c ()
el = Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"div"
row :: View c () -> View c ()
row :: forall c. View c () -> View c ()
row = Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"div" (View c () -> View c ())
-> (CSS (View c () -> View c ()) -> CSS (View c () -> View c ()))
-> View c ()
-> View c ()
forall h. Styleable h => h -> (CSS h -> CSS h) -> h
~ CSS (View c () -> View c ()) -> CSS (View c () -> View c ())
forall h. Styleable h => CSS h -> CSS h
flexRow
col :: View c () -> View c ()
col :: forall c. View c () -> View c ()
col = Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"div" (View c () -> View c ())
-> (CSS (View c () -> View c ()) -> CSS (View c () -> View c ()))
-> View c ()
-> View c ()
forall h. Styleable h => h -> (CSS h -> CSS h) -> h
~ CSS (View c () -> View c ()) -> CSS (View c () -> View c ())
forall h. Styleable h => CSS h -> CSS h
flexCol
space :: View c ()
space :: forall c. View c ()
space = Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"div" View c ()
forall c. View c ()
none View c () -> (CSS (View c ()) -> CSS (View c ())) -> View c ()
forall h. Styleable h => h -> (CSS h -> CSS h) -> h
~ CSS (View c ()) -> CSS (View c ())
forall h. Styleable h => CSS h -> CSS h
grow
pre :: Text -> View c ()
pre :: forall c. Text -> View c ()
pre Text
t = Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"pre" (Text -> View c ()
forall c. Text -> View c ()
text Text
t)
code :: Text -> View c ()
code :: forall c. Text -> View c ()
code Text
t = Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"code" (Text -> View c ()
forall c. Text -> View c ()
text Text
t)
link :: URI -> View c () -> View c ()
link :: forall c. URI -> View c () -> View c ()
link URI
u = Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"a" (View c () -> View c ())
-> (Attributes (View c () -> View c ())
-> Attributes (View c () -> View c ()))
-> View c ()
-> View c ()
forall h.
Attributable h =>
h -> (Attributes h -> Attributes h) -> h
@ Text
-> Text
-> Attributes (View c () -> View c ())
-> Attributes (View c () -> View c ())
forall h.
Attributable h =>
Text -> Text -> Attributes h -> Attributes h
att Text
"href" (URI -> Text
uriToText URI
u)
img :: Text -> View c ()
img :: forall c. Text -> View c ()
img Text
sc = Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"img" (View c () -> View c ())
-> (Attributes (View c () -> View c ())
-> Attributes (View c () -> View c ()))
-> View c ()
-> View c ()
forall h.
Attributable h =>
h -> (Attributes h -> Attributes h) -> h
@ Text
-> Attributes (View c () -> View c ())
-> Attributes (View c () -> View c ())
forall h. Attributable h => Text -> Attributes h -> Attributes h
src Text
sc (View c () -> View c ()) -> View c () -> View c ()
forall a b. (a -> b) -> a -> b
$ View c ()
forall c. View c ()
none
form :: View c () -> View c ()
form :: forall c. View c () -> View c ()
form = Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"form"
input :: View c ()
input :: forall c. View c ()
input = Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"input" (View c () -> View c ())
-> (Attributes (View c () -> View c ())
-> Attributes (View c () -> View c ()))
-> View c ()
-> View c ()
forall h.
Attributable h =>
h -> (Attributes h -> Attributes h) -> h
@ Text
-> Text
-> Attributes (View c () -> View c ())
-> Attributes (View c () -> View c ())
forall h.
Attributable h =>
Text -> Text -> Attributes h -> Attributes h
att Text
"type" Text
"text" (View c () -> View c ()) -> View c () -> View c ()
forall a b. (a -> b) -> a -> b
$ View c ()
forall c. View c ()
none
name :: (Attributable h) => Text -> Attributes h -> Attributes h
name :: forall h. Attributable h => Text -> Attributes h -> Attributes h
name = Text -> Text -> Attributes h -> Attributes h
forall h.
Attributable h =>
Text -> Text -> Attributes h -> Attributes h
att Text
"name"
value :: (Attributable h) => Text -> Attributes h -> Attributes h
value :: forall h. Attributable h => Text -> Attributes h -> Attributes h
value = Text -> Text -> Attributes h -> Attributes h
forall h.
Attributable h =>
Text -> Text -> Attributes h -> Attributes h
att Text
"value"
label :: View c () -> View c ()
label :: forall c. View c () -> View c ()
label = Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"label"
placeholder :: (Attributable h) => Text -> Attributes h -> Attributes h
placeholder :: forall h. Attributable h => Text -> Attributes h -> Attributes h
placeholder = Text -> Text -> Attributes h -> Attributes h
forall h.
Attributable h =>
Text -> Text -> Attributes h -> Attributes h
att Text
"placeholder"
autofocus :: (Attributable h) => Attributes h -> Attributes h
autofocus :: forall h. Attributable h => Attributes h -> Attributes h
autofocus = Text -> Text -> Attributes h -> Attributes h
forall h.
Attributable h =>
Text -> Text -> Attributes h -> Attributes h
att Text
"autofocus" Text
""
meta :: View c ()
meta :: forall c. View c ()
meta = Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"meta" View c ()
forall c. View c ()
none
title :: Text -> View c ()
title :: forall c. Text -> View c ()
title = Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"title" (View c () -> View c ())
-> (Text -> View c ()) -> Text -> View c ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> View c ()
forall c. Text -> View c ()
text
content :: (Attributable h) => Text -> Attributes h -> Attributes h
content :: forall h. Attributable h => Text -> Attributes h -> Attributes h
content = Text -> Text -> Attributes h -> Attributes h
forall h.
Attributable h =>
Text -> Text -> Attributes h -> Attributes h
att Text
"content"
httpEquiv :: (Attributable h) => Text -> Attributes h -> Attributes h
httpEquiv :: forall h. Attributable h => Text -> Attributes h -> Attributes h
httpEquiv = Text -> Text -> Attributes h -> Attributes h
forall h.
Attributable h =>
Text -> Text -> Attributes h -> Attributes h
att Text
"httpEquiv"
charset :: (Attributable h) => Text -> Attributes h -> Attributes h
charset :: forall h. Attributable h => Text -> Attributes h -> Attributes h
charset = Text -> Text -> Attributes h -> Attributes h
forall h.
Attributable h =>
Text -> Text -> Attributes h -> Attributes h
att Text
"charset"
type_ :: (Attributable h) => Text -> Attributes h -> Attributes h
type_ :: forall h. Attributable h => Text -> Attributes h -> Attributes h
type_ = Text -> Text -> Attributes h -> Attributes h
forall h.
Attributable h =>
Text -> Text -> Attributes h -> Attributes h
att Text
"type"
src :: (Attributable h) => Text -> Attributes h -> Attributes h
src :: forall h. Attributable h => Text -> Attributes h -> Attributes h
src = Text -> Text -> Attributes h -> Attributes h
forall h.
Attributable h =>
Text -> Text -> Attributes h -> Attributes h
att Text
"src"
script :: Text -> View c ()
script :: forall c. Text -> View c ()
script Text
sc = Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"script" View c ()
forall c. View c ()
none View c ()
-> (Attributes (View c ()) -> Attributes (View c ())) -> View c ()
forall h.
Attributable h =>
h -> (Attributes h -> Attributes h) -> h
@ Text -> Attributes (View c ()) -> Attributes (View c ())
forall h. Attributable h => Text -> Attributes h -> Attributes h
src Text
sc
script' :: ByteString -> View c ()
script' :: forall c. ByteString -> View c ()
script' ByteString
dat = Bool -> Text -> View c () -> View c ()
forall c. Bool -> Text -> View c () -> View c ()
tag' Bool
True Text
"script" (View c () -> View c ()) -> View c () -> View c ()
forall a b. (a -> b) -> a -> b
$ Text -> View c ()
forall c. Text -> View c ()
raw (Text -> View c ()) -> Text -> View c ()
forall a b. (a -> b) -> a -> b
$ HasCallStack => Text -> Text -> Text -> Text
Text -> Text -> Text -> Text
T.replace Text
"</" Text
"\\u003C/" (Text -> Text) -> Text -> Text
forall a b. (a -> b) -> a -> b
$ ByteString -> Text
forall a b. ConvertibleStrings a b => a -> b
cs ByteString
dat
style :: ByteString -> View c ()
style :: forall c. ByteString -> View c ()
style ByteString
cnt = Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"style" (Text -> View c ()
forall c. Text -> View c ()
raw (Text -> View c ()) -> Text -> View c ()
forall a b. (a -> b) -> a -> b
$ ByteString -> Text
forall a b. ConvertibleStrings a b => a -> b
cs ByteString
cnt) View c ()
-> (Attributes (View c ()) -> Attributes (View c ())) -> View c ()
forall h.
Attributable h =>
h -> (Attributes h -> Attributes h) -> h
@ Text -> Attributes (View c ()) -> Attributes (View c ())
forall h. Attributable h => Text -> Attributes h -> Attributes h
type_ Text
"text/css"
stylesheet :: Text -> View c ()
stylesheet :: forall c. Text -> View c ()
stylesheet Text
href = Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"link" (View c () -> View c ())
-> (Attributes (View c () -> View c ())
-> Attributes (View c () -> View c ()))
-> View c ()
-> View c ()
forall h.
Attributable h =>
h -> (Attributes h -> Attributes h) -> h
@ Text
-> Text
-> Attributes (View c () -> View c ())
-> Attributes (View c () -> View c ())
forall h.
Attributable h =>
Text -> Text -> Attributes h -> Attributes h
att Text
"rel" Text
"stylesheet" (Attributes (View c () -> View c ())
-> Attributes (View c () -> View c ()))
-> (Attributes (View c () -> View c ())
-> Attributes (View c () -> View c ()))
-> Attributes (View c () -> View c ())
-> Attributes (View c () -> View c ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text
-> Text
-> Attributes (View c () -> View c ())
-> Attributes (View c () -> View c ())
forall h.
Attributable h =>
Text -> Text -> Attributes h -> Attributes h
att Text
"href" Text
href (View c () -> View c ()) -> View c () -> View c ()
forall a b. (a -> b) -> a -> b
$ View c ()
forall c. View c ()
none
nav :: View c () -> View c ()
nav :: forall c. View c () -> View c ()
nav = Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"nav"
table :: [dt] -> TableColumns c dt () -> View c ()
table :: forall dt c. [dt] -> TableColumns c dt () -> View c ()
table [dt]
dts (TableColumns Eff '[State [TableColumn c dt]] ()
wcs) = do
let cols :: [TableColumn c dt]
cols = Eff '[] [TableColumn c dt] -> [TableColumn c dt]
forall a. HasCallStack => Eff '[] a -> a
runPureEff (Eff '[] [TableColumn c dt] -> [TableColumn c dt])
-> (Eff '[State [TableColumn c dt]] ()
-> Eff '[] [TableColumn c dt])
-> Eff '[State [TableColumn c dt]] ()
-> [TableColumn c dt]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [TableColumn c dt]
-> Eff '[State [TableColumn c dt]] () -> Eff '[] [TableColumn c dt]
forall s (es :: [(* -> *) -> * -> *]) a.
HasCallStack =>
s -> Eff (State s : es) a -> Eff es s
execState [] (Eff '[State [TableColumn c dt]] () -> [TableColumn c dt])
-> Eff '[State [TableColumn c dt]] () -> [TableColumn c dt]
forall a b. (a -> b) -> a -> b
$ Eff '[State [TableColumn c dt]] ()
wcs
Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"table" (View c () -> View c ()) -> View c () -> View c ()
forall a b. (a -> b) -> a -> b
$ do
Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"thead" (View c () -> View c ()) -> View c () -> View c ()
forall a b. (a -> b) -> a -> b
$ do
Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"tr" (View c () -> View c ()) -> View c () -> View c ()
forall a b. (a -> b) -> a -> b
$ do
[TableColumn c dt] -> (TableColumn c dt -> View c ()) -> View c ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
t a -> (a -> m b) -> m ()
forM_ [TableColumn c dt]
cols ((TableColumn c dt -> View c ()) -> View c ())
-> (TableColumn c dt -> View c ()) -> View c ()
forall a b. (a -> b) -> a -> b
$ \TableColumn c dt
tc -> do
let TableHead View c ()
hd = TableColumn c dt
tc.headCell
View c ()
hd
Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"tbody" (View c () -> View c ()) -> View c () -> View c ()
forall a b. (a -> b) -> a -> b
$ do
[dt] -> (dt -> View c ()) -> View c ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
t a -> (a -> m b) -> m ()
forM_ [dt]
dts ((dt -> View c ()) -> View c ()) -> (dt -> View c ()) -> View c ()
forall a b. (a -> b) -> a -> b
$ \dt
dt -> do
Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"tr" (View c () -> View c ()) -> View c () -> View c ()
forall a b. (a -> b) -> a -> b
$ do
[TableColumn c dt] -> (TableColumn c dt -> View c ()) -> View c ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
t a -> (a -> m b) -> m ()
forM_ [TableColumn c dt]
cols ((TableColumn c dt -> View c ()) -> View c ())
-> (TableColumn c dt -> View c ()) -> View c ()
forall a b. (a -> b) -> a -> b
$ \TableColumn c dt
tc -> do
TableColumn c dt
tc.dataCell dt
dt
usersTable :: View c ()
usersTable :: forall c. View c ()
usersTable = do
[(Int, Text)] -> TableColumns c (Int, Text) () -> View c ()
forall dt c. [dt] -> TableColumns c dt () -> View c ()
table [(Int, Text)]
items (TableColumns c (Int, Text) () -> View c ())
-> TableColumns c (Int, Text) () -> View c ()
forall a b. (a -> b) -> a -> b
$ do
TableHead c ()
-> ((Int, Text) -> View c ()) -> TableColumns c (Int, Text) ()
forall dt c.
TableHead c () -> (dt -> View c ()) -> TableColumns c dt ()
tcol (View c () -> TableHead c ()
forall c. View c () -> TableHead c ()
th View c ()
"Index" TableHead c ()
-> (CSS (TableHead c ()) -> CSS (TableHead c ())) -> TableHead c ()
forall h. Styleable h => h -> (CSS h -> CSS h) -> h
~ CSS (TableHead c ()) -> CSS (TableHead c ())
forall h. Styleable h => CSS h -> CSS h
bold) (((Int, Text) -> View c ()) -> TableColumns c (Int, Text) ())
-> ((Int, Text) -> View c ()) -> TableColumns c (Int, Text) ()
forall a b. (a -> b) -> a -> b
$ \(Int, Text)
u -> View c () -> View c ()
forall c. View c () -> View c ()
td (View c () -> View c ())
-> (CSS (View c () -> View c ()) -> CSS (View c () -> View c ()))
-> View c ()
-> View c ()
forall h. Styleable h => h -> (CSS h -> CSS h) -> h
~ CSS (View c () -> View c ()) -> CSS (View c () -> View c ())
forall h. Styleable h => CSS h -> CSS h
cell (View c () -> View c ()) -> View c () -> View c ()
forall a b. (a -> b) -> a -> b
$ Text -> View c ()
forall c. Text -> View c ()
text (Text -> View c ()) -> Text -> View c ()
forall a b. (a -> b) -> a -> b
$ String -> Text
pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$ Int -> String
forall a. Show a => a -> String
show (Int -> String) -> Int -> String
forall a b. (a -> b) -> a -> b
$ (Int, Text) -> Int
forall a b. (a, b) -> a
fst (Int, Text)
u
TableHead c ()
-> ((Int, Text) -> View c ()) -> TableColumns c (Int, Text) ()
forall dt c.
TableHead c () -> (dt -> View c ()) -> TableColumns c dt ()
tcol (View c () -> TableHead c ()
forall c. View c () -> TableHead c ()
th View c ()
"Item" TableHead c ()
-> (CSS (TableHead c ()) -> CSS (TableHead c ())) -> TableHead c ()
forall h. Styleable h => h -> (CSS h -> CSS h) -> h
~ CSS (TableHead c ()) -> CSS (TableHead c ())
forall h. Styleable h => CSS h -> CSS h
bold) (((Int, Text) -> View c ()) -> TableColumns c (Int, Text) ())
-> ((Int, Text) -> View c ()) -> TableColumns c (Int, Text) ()
forall a b. (a -> b) -> a -> b
$ \(Int, Text)
u -> View c () -> View c ()
forall c. View c () -> View c ()
td (View c () -> View c ())
-> (CSS (View c () -> View c ()) -> CSS (View c () -> View c ()))
-> View c ()
-> View c ()
forall h. Styleable h => h -> (CSS h -> CSS h) -> h
~ CSS (View c () -> View c ()) -> CSS (View c () -> View c ())
forall h. Styleable h => CSS h -> CSS h
cell (View c () -> View c ()) -> View c () -> View c ()
forall a b. (a -> b) -> a -> b
$ Text -> View c ()
forall c. Text -> View c ()
text (Text -> View c ()) -> Text -> View c ()
forall a b. (a -> b) -> a -> b
$ (Int, Text) -> Text
forall a b. (a, b) -> b
snd (Int, Text)
u
where
items :: [(Int, Text)]
items :: [(Int, Text)]
items = [Int] -> [Text] -> [(Int, Text)]
forall a b. [a] -> [b] -> [(a, b)]
zip [Int
0 ..] [Text
"one", Text
"two", Text
"three"]
cell :: (Styleable h) => CSS h -> CSS h
cell :: forall h. Styleable h => CSS h -> CSS h
cell = Sides Length -> CSS h -> CSS h
forall h. Styleable h => Sides Length -> CSS h -> CSS h
pad Sides Length
4 (CSS h -> CSS h) -> (CSS h -> CSS h) -> CSS h -> CSS h
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sides PxRem -> CSS h -> CSS h
forall h. Styleable h => Sides PxRem -> CSS h -> CSS h
border Sides PxRem
1
newtype Table c a = Table (View c a)
deriving newtype ((forall a b. (a -> b) -> Table c a -> Table c b)
-> (forall a b. a -> Table c b -> Table c a) -> Functor (Table c)
forall a b. a -> Table c b -> Table c a
forall a b. (a -> b) -> Table c a -> Table c b
forall c a b. a -> Table c b -> Table c a
forall c a b. (a -> b) -> Table c a -> Table c b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
$cfmap :: forall c a b. (a -> b) -> Table c a -> Table c b
fmap :: forall a b. (a -> b) -> Table c a -> Table c b
$c<$ :: forall c a b. a -> Table c b -> Table c a
<$ :: forall a b. a -> Table c b -> Table c a
Functor, Functor (Table c)
Functor (Table c) =>
(forall a. a -> Table c a)
-> (forall a b. Table c (a -> b) -> Table c a -> Table c b)
-> (forall a b c.
(a -> b -> c) -> Table c a -> Table c b -> Table c c)
-> (forall a b. Table c a -> Table c b -> Table c b)
-> (forall a b. Table c a -> Table c b -> Table c a)
-> Applicative (Table c)
forall c. Functor (Table c)
forall a. a -> Table c a
forall c a. a -> Table c a
forall a b. Table c a -> Table c b -> Table c a
forall a b. Table c a -> Table c b -> Table c b
forall a b. Table c (a -> b) -> Table c a -> Table c b
forall c a b. Table c a -> Table c b -> Table c a
forall c a b. Table c a -> Table c b -> Table c b
forall c a b. Table c (a -> b) -> Table c a -> Table c b
forall a b c. (a -> b -> c) -> Table c a -> Table c b -> Table c c
forall c a b c.
(a -> b -> c) -> Table c a -> Table c b -> Table c c
forall (f :: * -> *).
Functor f =>
(forall a. a -> f a)
-> (forall a b. f (a -> b) -> f a -> f b)
-> (forall a b c. (a -> b -> c) -> f a -> f b -> f c)
-> (forall a b. f a -> f b -> f b)
-> (forall a b. f a -> f b -> f a)
-> Applicative f
$cpure :: forall c a. a -> Table c a
pure :: forall a. a -> Table c a
$c<*> :: forall c a b. Table c (a -> b) -> Table c a -> Table c b
<*> :: forall a b. Table c (a -> b) -> Table c a -> Table c b
$cliftA2 :: forall c a b c.
(a -> b -> c) -> Table c a -> Table c b -> Table c c
liftA2 :: forall a b c. (a -> b -> c) -> Table c a -> Table c b -> Table c c
$c*> :: forall c a b. Table c a -> Table c b -> Table c b
*> :: forall a b. Table c a -> Table c b -> Table c b
$c<* :: forall c a b. Table c a -> Table c b -> Table c a
<* :: forall a b. Table c a -> Table c b -> Table c a
Applicative, Applicative (Table c)
Applicative (Table c) =>
(forall a b. Table c a -> (a -> Table c b) -> Table c b)
-> (forall a b. Table c a -> Table c b -> Table c b)
-> (forall a. a -> Table c a)
-> Monad (Table c)
forall c. Applicative (Table c)
forall a. a -> Table c a
forall c a. a -> Table c a
forall a b. Table c a -> Table c b -> Table c b
forall a b. Table c a -> (a -> Table c b) -> Table c b
forall c a b. Table c a -> Table c b -> Table c b
forall c a b. Table c a -> (a -> Table c b) -> Table c b
forall (m :: * -> *).
Applicative m =>
(forall a b. m a -> (a -> m b) -> m b)
-> (forall a b. m a -> m b -> m b)
-> (forall a. a -> m a)
-> Monad m
$c>>= :: forall c a b. Table c a -> (a -> Table c b) -> Table c b
>>= :: forall a b. Table c a -> (a -> Table c b) -> Table c b
$c>> :: forall c a b. Table c a -> Table c b -> Table c b
>> :: forall a b. Table c a -> Table c b -> Table c b
$creturn :: forall c a. a -> Table c a
return :: forall a. a -> Table c a
Monad, Table c a -> (CSS (Table c a) -> CSS (Table c a)) -> Table c a
([Rule] -> [Rule]) -> Table c a -> Table c a
(Table c a -> (CSS (Table c a) -> CSS (Table c a)) -> Table c a)
-> (([Rule] -> [Rule]) -> Table c a -> Table c a)
-> Styleable (Table c a)
forall h.
(h -> (CSS h -> CSS h) -> h)
-> (([Rule] -> [Rule]) -> h -> h) -> Styleable h
forall c a.
Table c a -> (CSS (Table c a) -> CSS (Table c a)) -> Table c a
forall c a. ([Rule] -> [Rule]) -> Table c a -> Table c a
$c~ :: forall c a.
Table c a -> (CSS (Table c a) -> CSS (Table c a)) -> Table c a
~ :: Table c a -> (CSS (Table c a) -> CSS (Table c a)) -> Table c a
$cmodCSS :: forall c a. ([Rule] -> [Rule]) -> Table c a -> Table c a
modCSS :: ([Rule] -> [Rule]) -> Table c a -> Table c a
Styleable)
tcol :: forall dt c. TableHead c () -> (dt -> View c ()) -> TableColumns c dt ()
tcol :: forall dt c.
TableHead c () -> (dt -> View c ()) -> TableColumns c dt ()
tcol TableHead c ()
hd dt -> View c ()
cell = Eff '[State [TableColumn c dt]] () -> TableColumns c dt ()
forall c dt a.
Eff '[State [TableColumn c dt]] a -> TableColumns c dt a
TableColumns (Eff '[State [TableColumn c dt]] () -> TableColumns c dt ())
-> Eff '[State [TableColumn c dt]] () -> TableColumns c dt ()
forall a b. (a -> b) -> a -> b
$ do
forall s (es :: [(* -> *) -> * -> *]).
(HasCallStack, State s :> es) =>
(s -> s) -> Eff es ()
modify @[TableColumn c dt] (([TableColumn c dt] -> [TableColumn c dt])
-> Eff '[State [TableColumn c dt]] ())
-> ([TableColumn c dt] -> [TableColumn c dt])
-> Eff '[State [TableColumn c dt]] ()
forall a b. (a -> b) -> a -> b
$ \[TableColumn c dt]
cols -> [TableColumn c dt]
cols [TableColumn c dt] -> [TableColumn c dt] -> [TableColumn c dt]
forall a. Semigroup a => a -> a -> a
<> [TableHead c () -> (dt -> View c ()) -> TableColumn c dt
forall c dt.
TableHead c () -> (dt -> View c ()) -> TableColumn c dt
TableColumn TableHead c ()
hd dt -> View c ()
cell]
th :: View c () -> TableHead c ()
th :: forall c. View c () -> TableHead c ()
th View c ()
cnt = do
View c () -> TableHead c ()
forall id a. View id a -> TableHead id a
TableHead (View c () -> TableHead c ()) -> View c () -> TableHead c ()
forall a b. (a -> b) -> a -> b
$ Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"th" View c ()
cnt
td :: View c () -> View c ()
td :: forall c. View c () -> View c ()
td = Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"td"
instance {-# OVERLAPS #-} Styleable (TableColumns c dt () -> View c ()) where
modCSS :: ([Rule] -> [Rule])
-> (TableColumns c dt () -> View c ())
-> TableColumns c dt ()
-> View c ()
modCSS [Rule] -> [Rule]
frr TableColumns c dt () -> View c ()
parent TableColumns c dt ()
eff = ([Rule] -> [Rule]) -> View c () -> View c ()
forall h. Styleable h => ([Rule] -> [Rule]) -> h -> h
modCSS [Rule] -> [Rule]
frr (TableColumns c dt () -> View c ()
parent TableColumns c dt ()
eff)
newtype TableHead id a = TableHead (View id a)
deriving newtype ((forall a b. (a -> b) -> TableHead id a -> TableHead id b)
-> (forall a b. a -> TableHead id b -> TableHead id a)
-> Functor (TableHead id)
forall a b. a -> TableHead id b -> TableHead id a
forall a b. (a -> b) -> TableHead id a -> TableHead id b
forall id a b. a -> TableHead id b -> TableHead id a
forall id a b. (a -> b) -> TableHead id a -> TableHead id b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
$cfmap :: forall id a b. (a -> b) -> TableHead id a -> TableHead id b
fmap :: forall a b. (a -> b) -> TableHead id a -> TableHead id b
$c<$ :: forall id a b. a -> TableHead id b -> TableHead id a
<$ :: forall a b. a -> TableHead id b -> TableHead id a
Functor, Functor (TableHead id)
Functor (TableHead id) =>
(forall a. a -> TableHead id a)
-> (forall a b.
TableHead id (a -> b) -> TableHead id a -> TableHead id b)
-> (forall a b c.
(a -> b -> c)
-> TableHead id a -> TableHead id b -> TableHead id c)
-> (forall a b. TableHead id a -> TableHead id b -> TableHead id b)
-> (forall a b. TableHead id a -> TableHead id b -> TableHead id a)
-> Applicative (TableHead id)
forall id. Functor (TableHead id)
forall a. a -> TableHead id a
forall id a. a -> TableHead id a
forall a b. TableHead id a -> TableHead id b -> TableHead id a
forall a b. TableHead id a -> TableHead id b -> TableHead id b
forall a b.
TableHead id (a -> b) -> TableHead id a -> TableHead id b
forall id a b. TableHead id a -> TableHead id b -> TableHead id a
forall id a b. TableHead id a -> TableHead id b -> TableHead id b
forall id a b.
TableHead id (a -> b) -> TableHead id a -> TableHead id b
forall a b c.
(a -> b -> c) -> TableHead id a -> TableHead id b -> TableHead id c
forall id a b c.
(a -> b -> c) -> TableHead id a -> TableHead id b -> TableHead id c
forall (f :: * -> *).
Functor f =>
(forall a. a -> f a)
-> (forall a b. f (a -> b) -> f a -> f b)
-> (forall a b c. (a -> b -> c) -> f a -> f b -> f c)
-> (forall a b. f a -> f b -> f b)
-> (forall a b. f a -> f b -> f a)
-> Applicative f
$cpure :: forall id a. a -> TableHead id a
pure :: forall a. a -> TableHead id a
$c<*> :: forall id a b.
TableHead id (a -> b) -> TableHead id a -> TableHead id b
<*> :: forall a b.
TableHead id (a -> b) -> TableHead id a -> TableHead id b
$cliftA2 :: forall id a b c.
(a -> b -> c) -> TableHead id a -> TableHead id b -> TableHead id c
liftA2 :: forall a b c.
(a -> b -> c) -> TableHead id a -> TableHead id b -> TableHead id c
$c*> :: forall id a b. TableHead id a -> TableHead id b -> TableHead id b
*> :: forall a b. TableHead id a -> TableHead id b -> TableHead id b
$c<* :: forall id a b. TableHead id a -> TableHead id b -> TableHead id a
<* :: forall a b. TableHead id a -> TableHead id b -> TableHead id a
Applicative, Applicative (TableHead id)
Applicative (TableHead id) =>
(forall a b.
TableHead id a -> (a -> TableHead id b) -> TableHead id b)
-> (forall a b. TableHead id a -> TableHead id b -> TableHead id b)
-> (forall a. a -> TableHead id a)
-> Monad (TableHead id)
forall id. Applicative (TableHead id)
forall a. a -> TableHead id a
forall id a. a -> TableHead id a
forall a b. TableHead id a -> TableHead id b -> TableHead id b
forall a b.
TableHead id a -> (a -> TableHead id b) -> TableHead id b
forall id a b. TableHead id a -> TableHead id b -> TableHead id b
forall id a b.
TableHead id a -> (a -> TableHead id b) -> TableHead id b
forall (m :: * -> *).
Applicative m =>
(forall a b. m a -> (a -> m b) -> m b)
-> (forall a b. m a -> m b -> m b)
-> (forall a. a -> m a)
-> Monad m
$c>>= :: forall id a b.
TableHead id a -> (a -> TableHead id b) -> TableHead id b
>>= :: forall a b.
TableHead id a -> (a -> TableHead id b) -> TableHead id b
$c>> :: forall id a b. TableHead id a -> TableHead id b -> TableHead id b
>> :: forall a b. TableHead id a -> TableHead id b -> TableHead id b
$creturn :: forall id a. a -> TableHead id a
return :: forall a. a -> TableHead id a
Monad, TableHead id a
-> (CSS (TableHead id a) -> CSS (TableHead id a)) -> TableHead id a
([Rule] -> [Rule]) -> TableHead id a -> TableHead id a
(TableHead id a
-> (CSS (TableHead id a) -> CSS (TableHead id a))
-> TableHead id a)
-> (([Rule] -> [Rule]) -> TableHead id a -> TableHead id a)
-> Styleable (TableHead id a)
forall h.
(h -> (CSS h -> CSS h) -> h)
-> (([Rule] -> [Rule]) -> h -> h) -> Styleable h
forall id a.
TableHead id a
-> (CSS (TableHead id a) -> CSS (TableHead id a)) -> TableHead id a
forall id a. ([Rule] -> [Rule]) -> TableHead id a -> TableHead id a
$c~ :: forall id a.
TableHead id a
-> (CSS (TableHead id a) -> CSS (TableHead id a)) -> TableHead id a
~ :: TableHead id a
-> (CSS (TableHead id a) -> CSS (TableHead id a)) -> TableHead id a
$cmodCSS :: forall id a. ([Rule] -> [Rule]) -> TableHead id a -> TableHead id a
modCSS :: ([Rule] -> [Rule]) -> TableHead id a -> TableHead id a
Styleable)
newtype TableColumns c dt a = TableColumns (Eff '[State [TableColumn c dt]] a)
deriving newtype ((forall a b.
(a -> b) -> TableColumns c dt a -> TableColumns c dt b)
-> (forall a b. a -> TableColumns c dt b -> TableColumns c dt a)
-> Functor (TableColumns c dt)
forall a b. a -> TableColumns c dt b -> TableColumns c dt a
forall a b. (a -> b) -> TableColumns c dt a -> TableColumns c dt b
forall c dt a b. a -> TableColumns c dt b -> TableColumns c dt a
forall c dt a b.
(a -> b) -> TableColumns c dt a -> TableColumns c dt b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
$cfmap :: forall c dt a b.
(a -> b) -> TableColumns c dt a -> TableColumns c dt b
fmap :: forall a b. (a -> b) -> TableColumns c dt a -> TableColumns c dt b
$c<$ :: forall c dt a b. a -> TableColumns c dt b -> TableColumns c dt a
<$ :: forall a b. a -> TableColumns c dt b -> TableColumns c dt a
Functor, Functor (TableColumns c dt)
Functor (TableColumns c dt) =>
(forall a. a -> TableColumns c dt a)
-> (forall a b.
TableColumns c dt (a -> b)
-> TableColumns c dt a -> TableColumns c dt b)
-> (forall a b c.
(a -> b -> c)
-> TableColumns c dt a
-> TableColumns c dt b
-> TableColumns c dt c)
-> (forall a b.
TableColumns c dt a -> TableColumns c dt b -> TableColumns c dt b)
-> (forall a b.
TableColumns c dt a -> TableColumns c dt b -> TableColumns c dt a)
-> Applicative (TableColumns c dt)
forall a. a -> TableColumns c dt a
forall c dt. Functor (TableColumns c dt)
forall a b.
TableColumns c dt a -> TableColumns c dt b -> TableColumns c dt a
forall a b.
TableColumns c dt a -> TableColumns c dt b -> TableColumns c dt b
forall a b.
TableColumns c dt (a -> b)
-> TableColumns c dt a -> TableColumns c dt b
forall c dt a. a -> TableColumns c dt a
forall a b c.
(a -> b -> c)
-> TableColumns c dt a
-> TableColumns c dt b
-> TableColumns c dt c
forall c dt a b.
TableColumns c dt a -> TableColumns c dt b -> TableColumns c dt a
forall c dt a b.
TableColumns c dt a -> TableColumns c dt b -> TableColumns c dt b
forall c dt a b.
TableColumns c dt (a -> b)
-> TableColumns c dt a -> TableColumns c dt b
forall c dt a b c.
(a -> b -> c)
-> TableColumns c dt a
-> TableColumns c dt b
-> TableColumns c dt c
forall (f :: * -> *).
Functor f =>
(forall a. a -> f a)
-> (forall a b. f (a -> b) -> f a -> f b)
-> (forall a b c. (a -> b -> c) -> f a -> f b -> f c)
-> (forall a b. f a -> f b -> f b)
-> (forall a b. f a -> f b -> f a)
-> Applicative f
$cpure :: forall c dt a. a -> TableColumns c dt a
pure :: forall a. a -> TableColumns c dt a
$c<*> :: forall c dt a b.
TableColumns c dt (a -> b)
-> TableColumns c dt a -> TableColumns c dt b
<*> :: forall a b.
TableColumns c dt (a -> b)
-> TableColumns c dt a -> TableColumns c dt b
$cliftA2 :: forall c dt a b c.
(a -> b -> c)
-> TableColumns c dt a
-> TableColumns c dt b
-> TableColumns c dt c
liftA2 :: forall a b c.
(a -> b -> c)
-> TableColumns c dt a
-> TableColumns c dt b
-> TableColumns c dt c
$c*> :: forall c dt a b.
TableColumns c dt a -> TableColumns c dt b -> TableColumns c dt b
*> :: forall a b.
TableColumns c dt a -> TableColumns c dt b -> TableColumns c dt b
$c<* :: forall c dt a b.
TableColumns c dt a -> TableColumns c dt b -> TableColumns c dt a
<* :: forall a b.
TableColumns c dt a -> TableColumns c dt b -> TableColumns c dt a
Applicative, Applicative (TableColumns c dt)
Applicative (TableColumns c dt) =>
(forall a b.
TableColumns c dt a
-> (a -> TableColumns c dt b) -> TableColumns c dt b)
-> (forall a b.
TableColumns c dt a -> TableColumns c dt b -> TableColumns c dt b)
-> (forall a. a -> TableColumns c dt a)
-> Monad (TableColumns c dt)
forall a. a -> TableColumns c dt a
forall c dt. Applicative (TableColumns c dt)
forall a b.
TableColumns c dt a -> TableColumns c dt b -> TableColumns c dt b
forall a b.
TableColumns c dt a
-> (a -> TableColumns c dt b) -> TableColumns c dt b
forall c dt a. a -> TableColumns c dt a
forall c dt a b.
TableColumns c dt a -> TableColumns c dt b -> TableColumns c dt b
forall c dt a b.
TableColumns c dt a
-> (a -> TableColumns c dt b) -> TableColumns c dt b
forall (m :: * -> *).
Applicative m =>
(forall a b. m a -> (a -> m b) -> m b)
-> (forall a b. m a -> m b -> m b)
-> (forall a. a -> m a)
-> Monad m
$c>>= :: forall c dt a b.
TableColumns c dt a
-> (a -> TableColumns c dt b) -> TableColumns c dt b
>>= :: forall a b.
TableColumns c dt a
-> (a -> TableColumns c dt b) -> TableColumns c dt b
$c>> :: forall c dt a b.
TableColumns c dt a -> TableColumns c dt b -> TableColumns c dt b
>> :: forall a b.
TableColumns c dt a -> TableColumns c dt b -> TableColumns c dt b
$creturn :: forall c dt a. a -> TableColumns c dt a
return :: forall a. a -> TableColumns c dt a
Monad)
data TableColumn c dt = TableColumn
{ forall c dt. TableColumn c dt -> TableHead c ()
headCell :: TableHead c ()
, forall c dt. TableColumn c dt -> dt -> View c ()
dataCell :: dt -> View c ()
}
ol :: ListItem c () -> View c ()
ol :: forall c. ListItem c () -> View c ()
ol (ListItem View c ()
cnt) = do
Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"ol" View c ()
cnt
ul :: ListItem c () -> View c ()
ul :: forall c. ListItem c () -> View c ()
ul (ListItem View c ()
cnt) = do
Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"ul" View c ()
cnt
li :: View c () -> ListItem c ()
li :: forall c. View c () -> ListItem c ()
li View c ()
cnt = View c () -> ListItem c ()
forall c a. View c a -> ListItem c a
ListItem (View c () -> ListItem c ()) -> View c () -> ListItem c ()
forall a b. (a -> b) -> a -> b
$ do
Text -> View c () -> View c ()
forall c. Text -> View c () -> View c ()
tag Text
"li" View c ()
cnt
newtype ListItem c a = ListItem (View c a)
deriving newtype ((forall a b. (a -> b) -> ListItem c a -> ListItem c b)
-> (forall a b. a -> ListItem c b -> ListItem c a)
-> Functor (ListItem c)
forall a b. a -> ListItem c b -> ListItem c a
forall a b. (a -> b) -> ListItem c a -> ListItem c b
forall c a b. a -> ListItem c b -> ListItem c a
forall c a b. (a -> b) -> ListItem c a -> ListItem c b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
$cfmap :: forall c a b. (a -> b) -> ListItem c a -> ListItem c b
fmap :: forall a b. (a -> b) -> ListItem c a -> ListItem c b
$c<$ :: forall c a b. a -> ListItem c b -> ListItem c a
<$ :: forall a b. a -> ListItem c b -> ListItem c a
Functor, Functor (ListItem c)
Functor (ListItem c) =>
(forall a. a -> ListItem c a)
-> (forall a b.
ListItem c (a -> b) -> ListItem c a -> ListItem c b)
-> (forall a b c.
(a -> b -> c) -> ListItem c a -> ListItem c b -> ListItem c c)
-> (forall a b. ListItem c a -> ListItem c b -> ListItem c b)
-> (forall a b. ListItem c a -> ListItem c b -> ListItem c a)
-> Applicative (ListItem c)
forall c. Functor (ListItem c)
forall a. a -> ListItem c a
forall c a. a -> ListItem c a
forall a b. ListItem c a -> ListItem c b -> ListItem c a
forall a b. ListItem c a -> ListItem c b -> ListItem c b
forall a b. ListItem c (a -> b) -> ListItem c a -> ListItem c b
forall c a b. ListItem c a -> ListItem c b -> ListItem c a
forall c a b. ListItem c a -> ListItem c b -> ListItem c b
forall c a b. ListItem c (a -> b) -> ListItem c a -> ListItem c b
forall a b c.
(a -> b -> c) -> ListItem c a -> ListItem c b -> ListItem c c
forall c a b c.
(a -> b -> c) -> ListItem c a -> ListItem c b -> ListItem c c
forall (f :: * -> *).
Functor f =>
(forall a. a -> f a)
-> (forall a b. f (a -> b) -> f a -> f b)
-> (forall a b c. (a -> b -> c) -> f a -> f b -> f c)
-> (forall a b. f a -> f b -> f b)
-> (forall a b. f a -> f b -> f a)
-> Applicative f
$cpure :: forall c a. a -> ListItem c a
pure :: forall a. a -> ListItem c a
$c<*> :: forall c a b. ListItem c (a -> b) -> ListItem c a -> ListItem c b
<*> :: forall a b. ListItem c (a -> b) -> ListItem c a -> ListItem c b
$cliftA2 :: forall c a b c.
(a -> b -> c) -> ListItem c a -> ListItem c b -> ListItem c c
liftA2 :: forall a b c.
(a -> b -> c) -> ListItem c a -> ListItem c b -> ListItem c c
$c*> :: forall c a b. ListItem c a -> ListItem c b -> ListItem c b
*> :: forall a b. ListItem c a -> ListItem c b -> ListItem c b
$c<* :: forall c a b. ListItem c a -> ListItem c b -> ListItem c a
<* :: forall a b. ListItem c a -> ListItem c b -> ListItem c a
Applicative, Applicative (ListItem c)
Applicative (ListItem c) =>
(forall a b. ListItem c a -> (a -> ListItem c b) -> ListItem c b)
-> (forall a b. ListItem c a -> ListItem c b -> ListItem c b)
-> (forall a. a -> ListItem c a)
-> Monad (ListItem c)
forall c. Applicative (ListItem c)
forall a. a -> ListItem c a
forall c a. a -> ListItem c a
forall a b. ListItem c a -> ListItem c b -> ListItem c b
forall a b. ListItem c a -> (a -> ListItem c b) -> ListItem c b
forall c a b. ListItem c a -> ListItem c b -> ListItem c b
forall c a b. ListItem c a -> (a -> ListItem c b) -> ListItem c b
forall (m :: * -> *).
Applicative m =>
(forall a b. m a -> (a -> m b) -> m b)
-> (forall a b. m a -> m b -> m b)
-> (forall a. a -> m a)
-> Monad m
$c>>= :: forall c a b. ListItem c a -> (a -> ListItem c b) -> ListItem c b
>>= :: forall a b. ListItem c a -> (a -> ListItem c b) -> ListItem c b
$c>> :: forall c a b. ListItem c a -> ListItem c b -> ListItem c b
>> :: forall a b. ListItem c a -> ListItem c b -> ListItem c b
$creturn :: forall c a. a -> ListItem c a
return :: forall a. a -> ListItem c a
Monad, ListItem c a
-> (CSS (ListItem c a) -> CSS (ListItem c a)) -> ListItem c a
([Rule] -> [Rule]) -> ListItem c a -> ListItem c a
(ListItem c a
-> (CSS (ListItem c a) -> CSS (ListItem c a)) -> ListItem c a)
-> (([Rule] -> [Rule]) -> ListItem c a -> ListItem c a)
-> Styleable (ListItem c a)
forall h.
(h -> (CSS h -> CSS h) -> h)
-> (([Rule] -> [Rule]) -> h -> h) -> Styleable h
forall c a.
ListItem c a
-> (CSS (ListItem c a) -> CSS (ListItem c a)) -> ListItem c a
forall c a. ([Rule] -> [Rule]) -> ListItem c a -> ListItem c a
$c~ :: forall c a.
ListItem c a
-> (CSS (ListItem c a) -> CSS (ListItem c a)) -> ListItem c a
~ :: ListItem c a
-> (CSS (ListItem c a) -> CSS (ListItem c a)) -> ListItem c a
$cmodCSS :: forall c a. ([Rule] -> [Rule]) -> ListItem c a -> ListItem c a
modCSS :: ([Rule] -> [Rule]) -> ListItem c a -> ListItem c a
Styleable)