{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE RecordWildCards #-}

-- : out devalloc.js
--
-- : dep clay
-- : dep ghcjs-base
-- : dep miso
-- : dep potolude
-- : dep servant
-- : dep text
module Biz.Devalloc.Node (main) where

import Alpha
import qualified Biz.Devalloc.Core as Core
import Miso

main :: IO ()
main = miso <| \currentURI -> App {model = Core.make currentURI, ..}
  where
    update = move
    view = view
    subs = []
    events = defaultEvents
    initialAction = Core.NoOp
    mountPoint = Nothing

move :: Core.Move -> Core.Form -> Effect Core.Move Core.Form
move mov form = case mov of
  Core.NoOp -> noEff form
  Core.ChangeURI u -> form <# (pushURI u >> pure Core.NoOp)