module Main ( main ) where import Signal import Html exposing (Html) import Time exposing (..) import Mouse import Json.Encode exposing (Value) import Keyboard import Char import Dict import List import Keyboard exposing (KeyCode) import Model.Model exposing (..) import Model.Position exposing (..) import Model.TimerState exposing (..) import Model.Id exposing (..) import Update.Update exposing (..) import View.View exposing (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 [ actions.signal , 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