{-# LANGUAGE OverloadedStrings #-}

module Brick.Widgets.BetterDialog ( dialog )where

import Brick
import Brick.Widgets.Border
import Graphics.Vty
import Data.Text (Text)
import Lens.Micro

dialog :: Text -> Text -> Widget n
dialog title = center . dialog' title

-- TODO Remove duplication from HelpMessage
center :: Widget n -> Widget n
center w = Widget Fixed Fixed $ do
  c <- getContext
  res <- render w
  let rWidth = res^.imageL.to imageWidth
      rHeight = res^.imageL.to imageHeight
      x = (c^.availWidthL `div` 2) - (rWidth `div` 2)
      y = (c^.availHeightL `div` 2) - (rHeight `div` 2)

  render $ translateBy (Location (x,y)) $ raw (res^.imageL)

dialog' :: Text -> Text -> Widget n
dialog' title content = Widget Fixed Fixed $ do
  c <- getContext

  render $
    hLimit (min 80 $ c^.availWidthL) $
    vLimit (min 30 $ c^.availHeightL) $
    borderWithLabel (txt title) $
          txt " "
      <=> (txt " " <+> txt content <+> txt " ")
      <=> txt " "