module Main ( main ) where import Signal import Html (Html) import Time (..) import Mouse import Json.Encode (Value) import Keyboard import Char import Dict import List import Keyboard (KeyCode) import Model.Model (..) import Model.Position (..) import Model.TimerState (..) import Model.Id (..) import Update.Update (..) import View.View (view) main : Signal Html main = Signal.map view model model : Signal Model model = Signal.foldp logUpdate (initialModel initialTime) input input : Signal Action input = Signal.mergeMany [ Signal.subscribe updates , Signal.map DeltaTime (fps 30) , Signal.map KeyPressed keyPress ] port ringingTimers : Signal Bool port ringingTimers = Signal.map (\model -> model.timers |> Dict.toList |> List.map snd |> List.any (\timer -> timer.state == Ringing) ) model |> Signal.dropRepeats port keyPress : Signal KeyCode port initialTime : Time