{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ViewPatterns #-} {-# OPTIONS_GHC -Wno-unused-record-wildcards #-} {-# OPTIONS_GHC -Wno-unused-matches #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE BangPatterns #-} {-# LANGUAGE InstanceSigs #-} {- This module contains the BrickState. One could be tempted to include this data structure in GHCup.Brick.Common, but it is better to make a separated module in order to avoid cyclic dependencies. This happens because the BrickState is sort of a container for all widgets, but widgets depends on common functionality, hence: BrickState `depends on` Widgets.XYZ `depends on` Common The linear relation above breaks if BrickState is defined in Common. -} module GHCup.Brick.BrickState where import GHCup.Types ( KeyBindings ) import GHCup.Brick.Common ( BrickData(..), BrickSettings(..), Mode(..)) import GHCup.Brick.Widgets.Navigation ( BrickInternalState) import GHCup.Brick.Widgets.Menus.Context (ContextMenu) import Optics.TH (makeLenses) data BrickState = BrickState { _appData :: BrickData , _appSettings :: BrickSettings , _appState :: BrickInternalState , _contextMenu :: ContextMenu , _appKeys :: KeyBindings , _mode :: Mode } --deriving Show makeLenses ''BrickState