module Dingo.Internal.Application
( Application
, mkApplication
, setApplicationTitle
) where
import Data.Aeson (Value, FromJSON(..), ToJSON(..), Value(..))
import Data.Text (Text)
import qualified Data.Text as T
import Data.Typeable (Typeable)
import Dingo.Internal.Base (zeroWidgetId, Command(..))
import Dingo.Internal.Callback (CallbackM, addCommand)
import Dingo.Internal.Widget (Widget(..))
import Text.Blaze (toHtml)
import Text.Julius (julius)
data Application = Application
deriving (Show, Typeable)
data ApplicationState = ApplicationState ()
deriving (Show, Typeable)
instance FromJSON ApplicationState where
parseJSON _ = return $ ApplicationState ()
instance ToJSON ApplicationState where
toJSON _ = Null
instance Widget Application ApplicationState where
getWidgetId _ = zeroWidgetId
renderWidget _ = toHtml T.empty
encodeClientStateJs _ = [julius| null |]
decodeClientStateJs _ = [julius| null |]
showWidget _ _ = "Application"
mkApplication :: Application
mkApplication = Application
setApplicationTitle :: Application -> Text -> CallbackM ()
setApplicationTitle _ title = addCommand $ SetTitle title