Bot-Man-Toe/elm/ScreenSize.elm

42 lines
940 B
Elm

module ScreenSize exposing (..)
import Browser.Dom
import Browser.Events
import Pixels exposing (Pixels)
import Quantity exposing (Quantity)
import Task
type alias ScreenSize =
{ height : Quantity Int Pixels
, width : Quantity Int Pixels
}
init : ScreenSize
init =
{ width = Pixels.pixels 960, height = Pixels.pixels 480 }
onResize : (ScreenSize -> msg) -> Sub msg
onResize toMsg =
Browser.Events.onResize
(\w h ->
toMsg
{ height = Pixels.pixels h
, width = Pixels.pixels w
}
)
updateScreenSize : (ScreenSize -> msg) -> Cmd msg
updateScreenSize toMsg =
Browser.Dom.getViewport
|> Task.map
(\viewport ->
{ height = Pixels.pixels (floor viewport.viewport.height)
, width = Pixels.pixels (floor viewport.viewport.width)
}
)
|> Task.perform toMsg