-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Terminal-based presentations using Pandoc
--   
--   Terminal-based presentations using Pandoc.
@package patat
@version 0.15.2.0


-- | Defines a cleanup action that needs to be run after we're done with a
--   slide or image.
module Patat.Cleanup
type Cleanup = IO ()


-- | When we try to read a file that is encoded in UTF-8, and the system
--   locale is not set to UTF-8, the GHC runtime system will throw an
--   error:
--   
--   <a>https://github.com/jaspervdj/patat/issues/127</a>
--   
--   However, we don't want to force people to use UTF-8 for everything. So
--   what we do is provide a replacement readFile, which first tries to
--   read the file in the system locale, and then falls back to forcing
--   UTF-8.
--   
--   If we forced UTF-8, we also want to propagate that to the output
--   handle; otherwise will get errors when we try to display these
--   characters; so withHandle should be used on the output handle
--   (typically stdout).
module Patat.EncodingFallback
data EncodingFallback
NoFallback :: EncodingFallback
Utf8Fallback :: EncodingFallback
readFile :: FilePath -> IO (EncodingFallback, Text)
withHandle :: Handle -> EncodingFallback -> IO a -> IO a
instance GHC.Classes.Eq Patat.EncodingFallback.EncodingFallback
instance GHC.Internal.Show.Show Patat.EncodingFallback.EncodingFallback

module Patat.Images.Internal
data Config a
Auto :: Config a
Explicit :: a -> Config a
data Backend
Backend :: (Config a -> IO Handle) -> Backend
data BackendNotSupported
BackendNotSupported :: String -> BackendNotSupported
data Handle
Handle :: (FilePath -> IO Cleanup) -> Handle
[hDrawImage] :: Handle -> FilePath -> IO Cleanup
withEscapeSequence :: IO () -> IO ()
instance GHC.Internal.Data.Data.Data Patat.Images.Internal.BackendNotSupported
instance GHC.Classes.Eq a => GHC.Classes.Eq (Patat.Images.Internal.Config a)
instance GHC.Internal.Exception.Type.Exception Patat.Images.Internal.BackendNotSupported
instance GHC.Internal.Show.Show Patat.Images.Internal.BackendNotSupported

module Patat.Images.ITerm2
backend :: Backend
instance GHC.Classes.Eq Patat.Images.ITerm2.Config
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Images.ITerm2.Config

module Patat.Images.Kitty
backend :: Backend
instance GHC.Classes.Eq Patat.Images.Kitty.Config
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Images.Kitty.Config

module Patat.Images.W3m
backend :: Backend
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Images.W3m.Config
instance GHC.Internal.Show.Show Patat.Images.W3m.Config
instance GHC.Internal.Show.Show Patat.Images.W3m.W3m

module Patat.Images.WezTerm
backend :: Backend
instance GHC.Classes.Eq Patat.Images.WezTerm.Config
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Images.WezTerm.Config
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Images.WezTerm.Pane
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Images.WezTerm.Size
instance GHC.Internal.Show.Show Patat.Images.WezTerm.Pane
instance GHC.Internal.Show.Show Patat.Images.WezTerm.Size


-- | This is a small pretty-printing library.
module Patat.PrettyPrint.Internal

-- | Control actions for the terminal.
data Control
ClearScreenControl :: Control
GoToLineControl :: Int -> Control

-- | A simple chunk of text. All ANSI codes are "reset" after printing.
data Chunk
StringChunk :: [SGR] -> String -> Chunk
HyperlinkChunk :: HyperlinkID -> [SGR] -> String -> String -> Chunk
NewlineChunk :: Chunk
ControlChunk :: Control -> Chunk
type Chunks = [Chunk]
chunkToString :: Chunk -> String
chunkLines :: Chunks -> [Chunks]
data DocE d
String :: String -> DocE d
Softspace :: DocE d
Hardspace :: DocE d
Softline :: DocE d
Hardline :: DocE d
WrapAt :: Maybe Int -> d -> DocE d
[wrapAtCol] :: DocE d -> Maybe Int
[wrapDoc] :: DocE d -> d
Ansi :: ([SGR] -> [SGR]) -> d -> DocE d

-- | Modifies current codes.
[ansiCode] :: DocE d -> [SGR] -> [SGR]
[ansiDoc] :: DocE d -> d
Indent :: Indentation [Chunk] -> Indentation [Chunk] -> d -> DocE d
[indentFirstLine] :: DocE d -> Indentation [Chunk]
[indentOtherLines] :: DocE d -> Indentation [Chunk]
[indentDoc] :: DocE d -> d
Hyperlink :: String -> d -> DocE d
Control :: Control -> DocE d
chunkToDocE :: Chunk -> DocE Doc
data Indentation a
Indentation :: Int -> a -> Indentation a
newtype Doc
Doc :: [DocE Doc] -> Doc
[unDoc] :: Doc -> [DocE Doc]
docToChunks :: Doc -> Chunks
toString :: Doc -> String

-- | Returns the rows and columns necessary to render this document
dimensions :: Doc -> (Int, Int)
null :: Doc -> Bool
hPutDoc :: Handle -> Doc -> IO ()
putDoc :: Doc -> IO ()
mkDoc :: DocE Doc -> Doc
string :: String -> Doc
instance GHC.Classes.Eq Patat.PrettyPrint.Internal.Chunk
instance GHC.Classes.Eq Patat.PrettyPrint.Internal.Control
instance GHC.Internal.Data.Foldable.Foldable Patat.PrettyPrint.Internal.Indentation
instance GHC.Internal.Base.Functor Patat.PrettyPrint.Internal.DocE
instance GHC.Internal.Base.Functor Patat.PrettyPrint.Internal.Indentation
instance GHC.Internal.Data.String.IsString Patat.PrettyPrint.Internal.Doc
instance GHC.Internal.Base.Monoid Patat.PrettyPrint.Internal.Doc
instance GHC.Internal.Base.Semigroup Patat.PrettyPrint.Internal.Doc
instance GHC.Internal.Show.Show Patat.PrettyPrint.Internal.Chunk
instance GHC.Internal.Show.Show Patat.PrettyPrint.Internal.Control
instance GHC.Internal.Show.Show Patat.PrettyPrint.Internal.Doc
instance GHC.Internal.Data.Traversable.Traversable Patat.PrettyPrint.Internal.Indentation


-- | This is a small pretty-printing library.
module Patat.PrettyPrint
data Doc
toString :: Doc -> String

-- | Returns the rows and columns necessary to render this document
dimensions :: Doc -> (Int, Int)
null :: Doc -> Bool
hPutDoc :: Handle -> Doc -> IO ()
putDoc :: Doc -> IO ()
char :: Char -> Doc
string :: String -> Doc
text :: Text -> Doc
space :: Doc
spaces :: Int -> Doc
softline :: Doc
hardline :: Doc
wrapAt :: Maybe Int -> Doc -> Doc
data Indentation a
Indentation :: Int -> a -> Indentation a
indent :: Indentation Doc -> Indentation Doc -> Doc -> Doc

-- | Only strips leading spaces
deindent :: Doc -> Doc
ansi :: [SGR] -> Doc -> Doc
hyperlink :: String -> Doc -> Doc
(<+>) :: Doc -> Doc -> Doc
infixr 6 <+>
(<$$>) :: Doc -> Doc -> Doc
infixr 5 <$$>
vcat :: [Doc] -> Doc
intersperse :: Doc -> [Doc] -> Doc
data Alignment
AlignLeft :: Alignment
AlignCenter :: Alignment
AlignRight :: Alignment
align :: Int -> Alignment -> Doc -> Doc

-- | Like the unix program <a>paste</a>.
paste :: [Doc] -> Doc
removeControls :: Doc -> Doc
clearScreen :: Doc
goToLine :: Int -> Doc
instance GHC.Classes.Eq Patat.PrettyPrint.Alignment
instance GHC.Classes.Ord Patat.PrettyPrint.Alignment
instance GHC.Internal.Show.Show Patat.PrettyPrint.Alignment

module Patat.Size
data Size
Size :: Int -> Int -> Size
[sRows] :: Size -> Int
[sCols] :: Size -> Int
getTerminalSize :: IO Size
instance GHC.Internal.Show.Show Patat.Size.Size

module Patat.PrettyPrint.Matrix
type Matrix = Vector Cell
data Cell
Cell :: [SGR] -> Char -> Cell
emptyCell :: Cell
docToMatrix :: Size -> Doc -> Matrix
hPutMatrix :: Handle -> Size -> Matrix -> IO ()
instance GHC.Classes.Eq Patat.PrettyPrint.Matrix.Cell
instance GHC.Internal.Show.Show Patat.PrettyPrint.Matrix.Cell

module Patat.Theme
newtype Style
Style :: [SGR] -> Style
[unStyle] :: Style -> [SGR]
data HeaderAlign
LeftHeaderAlign :: HeaderAlign
CenterHeaderAlign :: HeaderAlign
data HeaderTheme
HeaderTheme :: !Maybe Style -> !Maybe Text -> !Maybe Text -> !Maybe HeaderAlign -> HeaderTheme
[htStyle] :: HeaderTheme -> !Maybe Style
[htPrefix] :: HeaderTheme -> !Maybe Text
[htUnderline] :: HeaderTheme -> !Maybe Text
[htAlign] :: HeaderTheme -> !Maybe HeaderAlign
newtype HeaderThemes
HeaderThemes :: Map String HeaderTheme -> HeaderThemes
data Theme
Theme :: !Maybe Style -> !Maybe Style -> !Maybe HeaderThemes -> !Maybe Style -> !Maybe Style -> !Maybe Text -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe SyntaxHighlighting -> Theme
[themeBorders] :: Theme -> !Maybe Style
[themeHeader] :: Theme -> !Maybe Style
[themeHeaders] :: Theme -> !Maybe HeaderThemes
[themeCodeBlock] :: Theme -> !Maybe Style
[themeBulletList] :: Theme -> !Maybe Style
[themeBulletListMarkers] :: Theme -> !Maybe Text
[themeOrderedList] :: Theme -> !Maybe Style
[themeBlockQuote] :: Theme -> !Maybe Style
[themeDefinitionTerm] :: Theme -> !Maybe Style
[themeDefinitionList] :: Theme -> !Maybe Style
[themeTableHeader] :: Theme -> !Maybe Style
[themeTableSeparator] :: Theme -> !Maybe Style
[themeLineBlock] :: Theme -> !Maybe Style
[themeEmph] :: Theme -> !Maybe Style
[themeStrong] :: Theme -> !Maybe Style
[themeUnderline] :: Theme -> !Maybe Style
[themeCode] :: Theme -> !Maybe Style
[themeLinkText] :: Theme -> !Maybe Style
[themeLinkTarget] :: Theme -> !Maybe Style
[themeStrikeout] :: Theme -> !Maybe Style
[themeQuoted] :: Theme -> !Maybe Style
[themeMath] :: Theme -> !Maybe Style
[themeImageText] :: Theme -> !Maybe Style
[themeImageTarget] :: Theme -> !Maybe Style
[themeSyntaxHighlighting] :: Theme -> !Maybe SyntaxHighlighting
defaultTheme :: Theme
themeForHeader :: Int -> Theme -> HeaderTheme
newtype SyntaxHighlighting
SyntaxHighlighting :: Map String Style -> SyntaxHighlighting
[unSyntaxHighlighting] :: SyntaxHighlighting -> Map String Style
defaultSyntaxHighlighting :: SyntaxHighlighting
syntaxHighlight :: Theme -> TokenType -> Maybe Style
instance GHC.Classes.Eq Patat.Theme.HeaderAlign
instance GHC.Classes.Eq Patat.Theme.HeaderTheme
instance GHC.Classes.Eq Patat.Theme.HeaderThemes
instance GHC.Classes.Eq Patat.Theme.Style
instance GHC.Classes.Eq Patat.Theme.SyntaxHighlighting
instance GHC.Classes.Eq Patat.Theme.Theme
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Theme.HeaderAlign
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Theme.HeaderTheme
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Theme.HeaderThemes
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Theme.Style
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Theme.SyntaxHighlighting
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Theme.Theme
instance GHC.Internal.Base.Monoid Patat.Theme.Style
instance GHC.Internal.Base.Monoid Patat.Theme.SyntaxHighlighting
instance GHC.Internal.Base.Monoid Patat.Theme.Theme
instance GHC.Internal.Base.Semigroup Patat.Theme.HeaderTheme
instance GHC.Internal.Base.Semigroup Patat.Theme.HeaderThemes
instance GHC.Internal.Base.Semigroup Patat.Theme.Style
instance GHC.Internal.Base.Semigroup Patat.Theme.SyntaxHighlighting
instance GHC.Internal.Base.Semigroup Patat.Theme.Theme
instance GHC.Internal.Show.Show Patat.Theme.HeaderAlign
instance GHC.Internal.Show.Show Patat.Theme.HeaderTheme
instance GHC.Internal.Show.Show Patat.Theme.HeaderThemes
instance GHC.Internal.Show.Show Patat.Theme.Style
instance GHC.Internal.Show.Show Patat.Theme.SyntaxHighlighting
instance GHC.Internal.Show.Show Patat.Theme.Theme
instance Data.Aeson.Types.ToJSON.ToJSON Patat.Theme.HeaderAlign
instance Data.Aeson.Types.ToJSON.ToJSON Patat.Theme.HeaderTheme
instance Data.Aeson.Types.ToJSON.ToJSON Patat.Theme.HeaderThemes
instance Data.Aeson.Types.ToJSON.ToJSON Patat.Theme.Style
instance Data.Aeson.Types.ToJSON.ToJSON Patat.Theme.SyntaxHighlighting
instance Data.Aeson.Types.ToJSON.ToJSON Patat.Theme.Theme

module Patat.Presentation.Settings

-- | These are patat-specific settings. That is where they differ from more
--   general metadata (author, title...)
data PresentationSettings
PresentationSettings :: !Maybe (FlexibleNum Int) -> !Maybe (FlexibleNum Int) -> !Maybe MarginSettings -> !Maybe Wrap -> !Maybe (FlexibleNum Int) -> !Maybe Theme -> !Maybe Bool -> !Maybe (FlexibleNum Int) -> !Maybe Int -> !Maybe ExtensionList -> !Maybe ImageSettings -> !Maybe Bool -> !Maybe EvalSettingsMap -> !Maybe Bool -> !Maybe [FilePath] -> !Maybe SpeakerNotesSettings -> !Maybe TransitionSettings -> !Maybe LinkSettings -> PresentationSettings
[psRows] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psColumns] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psMargins] :: PresentationSettings -> !Maybe MarginSettings
[psWrap] :: PresentationSettings -> !Maybe Wrap
[psTabStop] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psTheme] :: PresentationSettings -> !Maybe Theme
[psIncrementalLists] :: PresentationSettings -> !Maybe Bool
[psAutoAdvanceDelay] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psSlideLevel] :: PresentationSettings -> !Maybe Int
[psPandocExtensions] :: PresentationSettings -> !Maybe ExtensionList
[psImages] :: PresentationSettings -> !Maybe ImageSettings
[psBreadcrumbs] :: PresentationSettings -> !Maybe Bool
[psEval] :: PresentationSettings -> !Maybe EvalSettingsMap
[psSlideNumber] :: PresentationSettings -> !Maybe Bool
[psSyntaxDefinitions] :: PresentationSettings -> !Maybe [FilePath]
[psSpeakerNotes] :: PresentationSettings -> !Maybe SpeakerNotesSettings
[psTransition] :: PresentationSettings -> !Maybe TransitionSettings
[psLinks] :: PresentationSettings -> !Maybe LinkSettings
defaultPresentationSettings :: PresentationSettings
data Wrap
NoWrap :: Wrap
AutoWrap :: Wrap
WrapAt :: Int -> Wrap
data AutoOr a
Auto :: AutoOr a
NotAuto :: a -> AutoOr a
data MarginSettings
MarginSettings :: !Maybe (AutoOr (FlexibleNum Int)) -> !Maybe (AutoOr (FlexibleNum Int)) -> !Maybe (AutoOr (FlexibleNum Int)) -> MarginSettings
[msTop] :: MarginSettings -> !Maybe (AutoOr (FlexibleNum Int))
[msLeft] :: MarginSettings -> !Maybe (AutoOr (FlexibleNum Int))
[msRight] :: MarginSettings -> !Maybe (AutoOr (FlexibleNum Int))
newtype ExtensionList
ExtensionList :: Extensions -> ExtensionList
[unExtensionList] :: ExtensionList -> Extensions
defaultExtensionList :: ExtensionList
data ImageSettings
ImageSettings :: !Text -> !Object -> ImageSettings
[isBackend] :: ImageSettings -> !Text
[isParams] :: ImageSettings -> !Object
newtype EvalSettingsMap
EvalSettingsMap :: HashMap (CI Text) EvalSettings -> EvalSettingsMap
data EvalSettingsContainer
EvalContainerCode :: EvalSettingsContainer
EvalContainerNone :: EvalSettingsContainer
EvalContainerInline :: EvalSettingsContainer
data EvalSettings
EvalSettings :: !Text -> !Bool -> !Bool -> !EvalSettingsContainer -> !Bool -> !Maybe (CI Text) -> EvalSettings
[evalCommand] :: EvalSettings -> !Text
[evalReplace] :: EvalSettings -> !Bool
[evalReveal] :: EvalSettings -> !Bool
[evalContainer] :: EvalSettings -> !EvalSettingsContainer
[evalStderr] :: EvalSettings -> !Bool
[evalSyntax] :: EvalSettings -> !Maybe (CI Text)
data SpeakerNotesSettings
SpeakerNotesSettings :: !FilePath -> SpeakerNotesSettings
[snsFile] :: SpeakerNotesSettings -> !FilePath
data TransitionSettings
TransitionSettings :: !Text -> !Object -> TransitionSettings
[tsType] :: TransitionSettings -> !Text
[tsParams] :: TransitionSettings -> !Object
data LinkSettings
LinkSettings :: !Maybe Bool -> LinkSettings
[lsOSC8] :: LinkSettings -> !Maybe Bool
parseSlideSettings :: PresentationSettings -> Either String PresentationSettings
instance GHC.Classes.Eq a => GHC.Classes.Eq (Patat.Presentation.Settings.AutoOr a)
instance GHC.Classes.Eq Patat.Presentation.Settings.EvalSettings
instance GHC.Classes.Eq Patat.Presentation.Settings.EvalSettingsContainer
instance GHC.Classes.Eq Patat.Presentation.Settings.EvalSettingsMap
instance GHC.Classes.Eq Patat.Presentation.Settings.ExtensionList
instance GHC.Classes.Eq Patat.Presentation.Settings.ImageSettings
instance GHC.Classes.Eq Patat.Presentation.Settings.LinkSettings
instance GHC.Classes.Eq Patat.Presentation.Settings.MarginSettings
instance GHC.Classes.Eq Patat.Presentation.Settings.PresentationSettings
instance GHC.Classes.Eq Patat.Presentation.Settings.SpeakerNotesSettings
instance GHC.Classes.Eq Patat.Presentation.Settings.TransitionSettings
instance GHC.Classes.Eq Patat.Presentation.Settings.Wrap
instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Patat.Presentation.Settings.AutoOr a)
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Presentation.Settings.EvalSettings
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Presentation.Settings.EvalSettingsContainer
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Presentation.Settings.EvalSettingsMap
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Presentation.Settings.ExtensionList
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Presentation.Settings.ImageSettings
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Presentation.Settings.LinkSettings
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Presentation.Settings.MarginSettings
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Presentation.Settings.PresentationSettings
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Presentation.Settings.SpeakerNotesSettings
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Presentation.Settings.TransitionSettings
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Presentation.Settings.Wrap
instance GHC.Internal.Base.Monoid Patat.Presentation.Settings.MarginSettings
instance GHC.Internal.Base.Monoid Patat.Presentation.Settings.PresentationSettings
instance GHC.Internal.Base.Semigroup Patat.Presentation.Settings.EvalSettingsMap
instance GHC.Internal.Base.Semigroup Patat.Presentation.Settings.LinkSettings
instance GHC.Internal.Base.Semigroup Patat.Presentation.Settings.MarginSettings
instance GHC.Internal.Base.Semigroup Patat.Presentation.Settings.PresentationSettings
instance GHC.Internal.Show.Show a => GHC.Internal.Show.Show (Patat.Presentation.Settings.AutoOr a)
instance GHC.Internal.Show.Show Patat.Presentation.Settings.EvalSettings
instance GHC.Internal.Show.Show Patat.Presentation.Settings.EvalSettingsContainer
instance GHC.Internal.Show.Show Patat.Presentation.Settings.EvalSettingsMap
instance GHC.Internal.Show.Show Patat.Presentation.Settings.ExtensionList
instance GHC.Internal.Show.Show Patat.Presentation.Settings.ImageSettings
instance GHC.Internal.Show.Show Patat.Presentation.Settings.LinkSettings
instance GHC.Internal.Show.Show Patat.Presentation.Settings.MarginSettings
instance GHC.Internal.Show.Show Patat.Presentation.Settings.PresentationSettings
instance GHC.Internal.Show.Show Patat.Presentation.Settings.SpeakerNotesSettings
instance GHC.Internal.Show.Show Patat.Presentation.Settings.TransitionSettings
instance GHC.Internal.Show.Show Patat.Presentation.Settings.Wrap

module Patat.Presentation.SpeakerNotes
newtype SpeakerNotes
SpeakerNotes :: [Text] -> SpeakerNotes
toText :: SpeakerNotes -> Text
data Handle
withHandle :: SpeakerNotesSettings -> (Handle -> IO a) -> IO a
write :: Handle -> EncodingFallback -> SpeakerNotes -> IO ()
parseSlideSettings :: PresentationSettings -> Either String PresentationSettings
instance GHC.Classes.Eq Patat.Presentation.SpeakerNotes.SpeakerNotes
instance GHC.Internal.Base.Monoid Patat.Presentation.SpeakerNotes.SpeakerNotes
instance GHC.Internal.Base.Semigroup Patat.Presentation.SpeakerNotes.SpeakerNotes
instance GHC.Internal.Show.Show Patat.Presentation.SpeakerNotes.SpeakerNotes

module Patat.Transition.Internal
newtype Duration
Duration :: Double -> Duration
threadDelayDuration :: Duration -> IO ()
data Transition
[Transition] :: forall conf. FromJSON conf => (conf -> TransitionGen) -> Transition
type TransitionGen = Size -> Matrix -> Matrix -> StdGen -> NonEmpty (Matrix, Duration)
data TransitionId
data TransitionInstance
TransitionInstance :: TransitionId -> Size -> NonEmpty (Matrix, Duration) -> TransitionInstance
[tiId] :: TransitionInstance -> TransitionId
[tiSize] :: TransitionInstance -> Size
[tiFrames] :: TransitionInstance -> NonEmpty (Matrix, Duration)
newTransition :: TransitionGen -> Size -> Doc -> Doc -> IO TransitionInstance
stepTransition :: TransitionId -> TransitionInstance -> Maybe TransitionInstance

-- | Given an optional duration and frame rate, generate a sequence of
--   evenly spaced frames, represented by a number ranging from [0 .. 1].
evenlySpacedFrames :: Maybe Double -> Maybe Int -> NonEmpty (Double, Duration)
instance GHC.Classes.Eq Patat.Transition.Internal.TransitionId
instance GHC.Internal.Show.Show Patat.Transition.Internal.Duration

module Patat.Transition.Dissolve
transition :: Config -> TransitionGen
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Transition.Dissolve.Config

module Patat.Transition.Matrix
transition :: Config -> TransitionGen
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Transition.Matrix.Config

module Patat.Transition.SlideLeft
transition :: Config -> TransitionGen
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Transition.SlideLeft.Config

module Patat.Transition
newtype Duration
Duration :: Double -> Duration
threadDelayDuration :: Duration -> IO ()
type TransitionGen = Size -> Matrix -> Matrix -> StdGen -> NonEmpty (Matrix, Duration)
data TransitionId
data TransitionInstance
TransitionInstance :: TransitionId -> Size -> NonEmpty (Matrix, Duration) -> TransitionInstance
[tiId] :: TransitionInstance -> TransitionId
[tiSize] :: TransitionInstance -> Size
[tiFrames] :: TransitionInstance -> NonEmpty (Matrix, Duration)
parseTransitionSettings :: TransitionSettings -> Either String TransitionGen
newTransition :: TransitionGen -> Size -> Doc -> Doc -> IO TransitionInstance
stepTransition :: TransitionId -> TransitionInstance -> Maybe TransitionInstance
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Transition.RandomTransitionSettings

module Patat.Unique

-- | Can be used as a unique identifier.
data Unique

-- | Used to generate fresh variables.
data UniqueGen
zeroUniqueGen :: UniqueGen
freshUnique :: UniqueGen -> (Unique, UniqueGen)
instance GHC.Classes.Eq Patat.Unique.Unique
instance Data.Hashable.Class.Hashable Patat.Unique.Unique
instance GHC.Classes.Ord Patat.Unique.Unique
instance GHC.Internal.Show.Show Patat.Unique.Unique
instance GHC.Internal.Show.Show Patat.Unique.UniqueGen

module Patat.Presentation.Syntax

-- | This is similar to <a>Block</a>. Having our own datatype has some
--   advantages:
--   
--   <ul>
--   <li>We can extend it with slide-specific data (eval, reveals)</li>
--   <li>We can remove stuff we don't care about</li>
--   <li>We can parse attributes and move them to haskell datatypes</li>
--   <li>This conversion can happen in a single parsing phase</li>
--   <li>We can catch backwards-incompatible pandoc changes in this
--   module</li>
--   </ul>
--   
--   We try to follow the naming conventions from Pandoc as much as
--   possible.
data Block
Plain :: ![Inline] -> Block
Para :: ![Inline] -> Block
LineBlock :: ![[Inline]] -> Block
CodeBlock :: ![CI Text] -> !Text -> Block
RawBlock :: !Format -> !Text -> Block
BlockQuote :: ![Block] -> Block
OrderedList :: !ListAttributes -> ![[Block]] -> Block
BulletList :: ![[Block]] -> Block
DefinitionList :: ![([Inline], [[Block]])] -> Block
Header :: Int -> !Attr -> ![Inline] -> Block
HorizontalRule :: Block
Table :: ![Inline] -> ![Alignment] -> ![[Block]] -> ![[[Block]]] -> Block
Figure :: !Attr -> ![Block] -> Block
Div :: !Attr -> ![Block] -> Block
Reveal :: !RevealWrapper -> !RevealSequence [Block] -> Block
VarBlock :: !Var -> Block
SpeakerNote :: !Text -> Block
Config :: !Either String PresentationSettings -> Block

-- | See comment on <a>Block</a>.
data Inline
Str :: !Text -> Inline
Emph :: ![Inline] -> Inline
Underline :: ![Inline] -> Inline
Strong :: ![Inline] -> Inline
Strikeout :: ![Inline] -> Inline
Superscript :: ![Inline] -> Inline
Subscript :: ![Inline] -> Inline
SmallCaps :: ![Inline] -> Inline
Quoted :: !QuoteType -> ![Inline] -> Inline
Cite :: ![Citation] -> ![Inline] -> Inline
Code :: !Attr -> !Text -> Inline
Space :: Inline
SoftBreak :: Inline
LineBreak :: Inline
Math :: !MathType -> !Text -> Inline
RawInline :: !Format -> !Text -> Inline
Link :: !Attr -> ![Inline] -> !Target -> Inline
Image :: !Attr -> ![Inline] -> !Target -> Inline
Note :: ![Block] -> Inline
Span :: !Attr -> ![Inline] -> Inline

-- | Depth-First Traversal of blocks (and inlines).
dftBlocks :: Monad m => (Block -> m [Block]) -> (Inline -> m [Inline]) -> [Block] -> m [Block]

-- | Depth-First Traversal of inlines (and blocks).
dftInlines :: Monad m => (Block -> m [Block]) -> (Inline -> m [Inline]) -> [Inline] -> m [Inline]
fromPandocBlocks :: [Block] -> [Block]
fromPandocInlines :: [Inline] -> [Inline]
isHorizontalRule :: Block -> Bool
isComment :: Block -> Bool

-- | A variable is like a placeholder in the instructions, something we
--   don't know yet, dynamic content. Currently this is only used for code
--   evaluation.
newtype Var
Var :: Unique -> Var

-- | Finds all variables that appear in some content.
variables :: [Block] -> HashSet Var

-- | A counter is used to change state in a slide. As counters increment,
--   content may deterministically show or hide.
newtype RevealID
RevealID :: Unique -> RevealID

-- | Number of reveal steps in some blocks.
blocksRevealSteps :: [Block] -> Int

-- | Construct the reveal state for a specific step.
blocksRevealStep :: Int -> [Block] -> RevealState

-- | Construct the final reveal state.
blocksRevealLastStep :: [Block] -> RevealState

-- | This does a deep traversal of some blocks, and returns all reveals
--   that should be advanced in-order.
blocksRevealOrder :: [Block] -> [RevealID]

-- | Apply <a>revealToBlocks</a> recursively at each position, removing
--   reveals in favor of their currently visible content.
blocksReveal :: RevealState -> [Block] -> [Block]

-- | Stores the state of several counters.
type RevealState = Map RevealID Int

-- | Render a reveal by applying its constructor to what is visible.
revealToBlocks :: RevealState -> RevealWrapper -> RevealSequence [Block] -> [Block]

-- | This determines how we construct content based on the visible items.
--   This could also be represented as `[[Block]] -&gt; [Block]` but then
--   we lose the convenient Eq and Show instances.
data RevealWrapper
ConcatWrapper :: RevealWrapper
BulletListWrapper :: RevealWrapper
OrderedListWrapper :: ListAttributes -> RevealWrapper
revealWrapper :: RevealWrapper -> [[Block]] -> [Block]

-- | A reveal sequence stores content which can be hidden or shown
--   depending on a counter state.
--   
--   The easiest example to think about is a bullet list which appears
--   incrmentally on a slide. Initially, the counter state is 0. As it is
--   incremented (the user goes to the next fragment in the slide), more
--   list items become visible.
data RevealSequence a
RevealSequence :: RevealID -> [RevealID] -> [(Set Int, a)] -> RevealSequence a
[rsID] :: RevealSequence a -> RevealID
[rsOrder] :: RevealSequence a -> [RevealID]
[rsVisible] :: RevealSequence a -> [(Set Int, a)]
instance GHC.Classes.Eq Patat.Presentation.Syntax.Block
instance GHC.Classes.Eq Patat.Presentation.Syntax.Inline
instance GHC.Classes.Eq Patat.Presentation.Syntax.RevealID
instance GHC.Classes.Eq a => GHC.Classes.Eq (Patat.Presentation.Syntax.RevealSequence a)
instance GHC.Classes.Eq Patat.Presentation.Syntax.RevealWrapper
instance GHC.Classes.Eq Patat.Presentation.Syntax.Var
instance GHC.Internal.Data.Foldable.Foldable Patat.Presentation.Syntax.RevealSequence
instance GHC.Internal.Base.Functor Patat.Presentation.Syntax.RevealSequence
instance Data.Hashable.Class.Hashable Patat.Presentation.Syntax.Var
instance GHC.Classes.Ord Patat.Presentation.Syntax.RevealID
instance GHC.Classes.Ord Patat.Presentation.Syntax.Var
instance GHC.Internal.Show.Show Patat.Presentation.Syntax.Block
instance GHC.Internal.Show.Show Patat.Presentation.Syntax.Inline
instance GHC.Internal.Show.Show Patat.Presentation.Syntax.RevealID
instance GHC.Internal.Show.Show a => GHC.Internal.Show.Show (Patat.Presentation.Syntax.RevealSequence a)
instance GHC.Internal.Show.Show Patat.Presentation.Syntax.RevealWrapper
instance GHC.Internal.Show.Show Patat.Presentation.Syntax.Var
instance GHC.Internal.Data.Traversable.Traversable Patat.Presentation.Syntax.RevealSequence

module Patat.Eval.Internal
type EvalBlocks = HashMap Var EvalBlock

-- | Block that needs to be evaluated.
data EvalBlock
EvalBlock :: !EvalSettings -> ![CI Text] -> !Text -> !Maybe (Async ()) -> EvalBlock
[ebSettings] :: EvalBlock -> !EvalSettings
[ebClasses] :: EvalBlock -> ![CI Text]
[ebInput] :: EvalBlock -> !Text
[ebAsync] :: EvalBlock -> !Maybe (Async ())
renderEvalBlock :: EvalBlock -> Text -> [Block]

module Patat.Presentation.Internal
type Breadcrumbs = [(Int, [Inline])]
data Presentation
Presentation :: !FilePath -> !EncodingFallback -> ![Inline] -> ![Inline] -> !PresentationSettings -> !Seq Slide -> !Seq Breadcrumbs -> !Seq PresentationSettings -> !Seq (Maybe TransitionGen) -> !Index -> !SyntaxMap -> !EvalBlocks -> !UniqueGen -> !HashMap Var [Block] -> Presentation
[pFilePath] :: Presentation -> !FilePath
[pEncodingFallback] :: Presentation -> !EncodingFallback
[pTitle] :: Presentation -> ![Inline]
[pAuthor] :: Presentation -> ![Inline]
[pSettings] :: Presentation -> !PresentationSettings
[pSlides] :: Presentation -> !Seq Slide
[pBreadcrumbs] :: Presentation -> !Seq Breadcrumbs
[pSlideSettings] :: Presentation -> !Seq PresentationSettings
[pTransitionGens] :: Presentation -> !Seq (Maybe TransitionGen)
[pActiveFragment] :: Presentation -> !Index
[pSyntaxMap] :: Presentation -> !SyntaxMap
[pEvalBlocks] :: Presentation -> !EvalBlocks
[pUniqueGen] :: Presentation -> !UniqueGen
[pVars] :: Presentation -> !HashMap Var [Block]

-- | These are patat-specific settings. That is where they differ from more
--   general metadata (author, title...)
data PresentationSettings
PresentationSettings :: !Maybe (FlexibleNum Int) -> !Maybe (FlexibleNum Int) -> !Maybe MarginSettings -> !Maybe Wrap -> !Maybe (FlexibleNum Int) -> !Maybe Theme -> !Maybe Bool -> !Maybe (FlexibleNum Int) -> !Maybe Int -> !Maybe ExtensionList -> !Maybe ImageSettings -> !Maybe Bool -> !Maybe EvalSettingsMap -> !Maybe Bool -> !Maybe [FilePath] -> !Maybe SpeakerNotesSettings -> !Maybe TransitionSettings -> !Maybe LinkSettings -> PresentationSettings
[psRows] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psColumns] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psMargins] :: PresentationSettings -> !Maybe MarginSettings
[psWrap] :: PresentationSettings -> !Maybe Wrap
[psTabStop] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psTheme] :: PresentationSettings -> !Maybe Theme
[psIncrementalLists] :: PresentationSettings -> !Maybe Bool
[psAutoAdvanceDelay] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psSlideLevel] :: PresentationSettings -> !Maybe Int
[psPandocExtensions] :: PresentationSettings -> !Maybe ExtensionList
[psImages] :: PresentationSettings -> !Maybe ImageSettings
[psBreadcrumbs] :: PresentationSettings -> !Maybe Bool
[psEval] :: PresentationSettings -> !Maybe EvalSettingsMap
[psSlideNumber] :: PresentationSettings -> !Maybe Bool
[psSyntaxDefinitions] :: PresentationSettings -> !Maybe [FilePath]
[psSpeakerNotes] :: PresentationSettings -> !Maybe SpeakerNotesSettings
[psTransition] :: PresentationSettings -> !Maybe TransitionSettings
[psLinks] :: PresentationSettings -> !Maybe LinkSettings
defaultPresentationSettings :: PresentationSettings
data MarginSettings
MarginSettings :: !Maybe (AutoOr (FlexibleNum Int)) -> !Maybe (AutoOr (FlexibleNum Int)) -> !Maybe (AutoOr (FlexibleNum Int)) -> MarginSettings
[msTop] :: MarginSettings -> !Maybe (AutoOr (FlexibleNum Int))
[msLeft] :: MarginSettings -> !Maybe (AutoOr (FlexibleNum Int))
[msRight] :: MarginSettings -> !Maybe (AutoOr (FlexibleNum Int))
data Margins
Margins :: AutoOr Int -> AutoOr Int -> AutoOr Int -> Margins
[mTop] :: Margins -> AutoOr Int
[mLeft] :: Margins -> AutoOr Int
[mRight] :: Margins -> AutoOr Int
margins :: PresentationSettings -> Margins
newtype ExtensionList
ExtensionList :: Extensions -> ExtensionList
[unExtensionList] :: ExtensionList -> Extensions
defaultExtensionList :: ExtensionList
data ImageSettings
ImageSettings :: !Text -> !Object -> ImageSettings
[isBackend] :: ImageSettings -> !Text
[isParams] :: ImageSettings -> !Object
newtype EvalSettingsMap
EvalSettingsMap :: HashMap (CI Text) EvalSettings -> EvalSettingsMap
data EvalSettings
EvalSettings :: !Text -> !Bool -> !Bool -> !EvalSettingsContainer -> !Bool -> !Maybe (CI Text) -> EvalSettings
[evalCommand] :: EvalSettings -> !Text
[evalReplace] :: EvalSettings -> !Bool
[evalReveal] :: EvalSettings -> !Bool
[evalContainer] :: EvalSettings -> !EvalSettingsContainer
[evalStderr] :: EvalSettings -> !Bool
[evalSyntax] :: EvalSettings -> !Maybe (CI Text)
data Slide
Slide :: !SpeakerNotes -> !Either String PresentationSettings -> !SlideContent -> Slide
[slideSpeakerNotes] :: Slide -> !SpeakerNotes
[slideSettings] :: Slide -> !Either String PresentationSettings
[slideContent] :: Slide -> !SlideContent
data SlideContent
ContentSlide :: [Block] -> SlideContent
TitleSlide :: Int -> [Inline] -> SlideContent

-- | Active slide, active fragment.
type Index = (Int, Int)
getSlide :: Int -> Presentation -> Maybe Slide
numFragments :: Slide -> Int
data ActiveFragment
ActiveContent :: [Block] -> HashSet Var -> RevealState -> ActiveFragment
ActiveTitle :: Block -> ActiveFragment
activeFragment :: Presentation -> Maybe ActiveFragment
activeSpeakerNotes :: Presentation -> SpeakerNotes
activeVars :: Presentation -> HashSet Var
getSettings :: Int -> Presentation -> PresentationSettings
activeSettings :: Presentation -> PresentationSettings
data Size
getPresentationSize :: Presentation -> IO Size
updateVar :: Var -> [Block] -> Presentation -> Presentation
instance GHC.Internal.Show.Show Patat.Presentation.Internal.ActiveFragment
instance GHC.Internal.Show.Show Patat.Presentation.Internal.Margins
instance GHC.Internal.Show.Show Patat.Presentation.Internal.Slide
instance GHC.Internal.Show.Show Patat.Presentation.Internal.SlideContent

module Patat.Presentation.Display.Internal
data DisplaySettings
DisplaySettings :: !Size -> !Wrap -> !Int -> !Margins -> !Bool -> !Theme -> !SyntaxMap -> !Var -> [Block] -> !RevealState -> DisplaySettings
[dsSize] :: DisplaySettings -> !Size
[dsWrap] :: DisplaySettings -> !Wrap
[dsTabStop] :: DisplaySettings -> !Int
[dsMargins] :: DisplaySettings -> !Margins
[dsOSC8] :: DisplaySettings -> !Bool
[dsTheme] :: DisplaySettings -> !Theme
[dsSyntaxMap] :: DisplaySettings -> !SyntaxMap
[dsResolve] :: DisplaySettings -> !Var -> [Block]
[dsRevealState] :: DisplaySettings -> !RevealState
themed :: DisplaySettings -> (Theme -> Maybe Style) -> Doc -> Doc

module Patat.Presentation.Display.Table
data TableDisplay
TableDisplay :: Doc -> [Alignment] -> [Doc] -> [[Doc]] -> TableDisplay
[tdCaption] :: TableDisplay -> Doc
[tdAligns] :: TableDisplay -> [Alignment]
[tdHeaders] :: TableDisplay -> [Doc]
[tdRows] :: TableDisplay -> [[Doc]]
prettyTableDisplay :: DisplaySettings -> TableDisplay -> Doc
themed :: DisplaySettings -> (Theme -> Maybe Style) -> Doc -> Doc


-- | Displaying code blocks, optionally with syntax highlighting.
module Patat.Presentation.Display.CodeBlock
prettyCodeBlock :: DisplaySettings -> [CI Text] -> Text -> Doc

module Patat.Images
data Backend
data Handle
withHandle :: ImageSettings -> (Handle -> IO a) -> IO a
drawImage :: Handle -> FilePath -> IO Cleanup


-- | For background info on the spec, see the "Incremental lists" section
--   of the the pandoc manual.
module Patat.Presentation.Fragment
data FragmentSettings
FragmentSettings :: !Bool -> FragmentSettings
[fsIncrementalLists] :: FragmentSettings -> !Bool
fragmentPresentation :: Presentation -> Presentation
fragmentBlocks :: FragmentSettings -> [Block] -> FragmentM [Block]
fragmentBlock :: FragmentSettings -> Block -> FragmentM [Block]
instance GHC.Internal.Show.Show Patat.Presentation.Fragment.FragmentSettings

module Patat.Eval
parseEvalBlocks :: Presentation -> Presentation
evalVar :: Var -> ([Block] -> IO ()) -> Presentation -> IO Presentation
evalActiveVars :: (Var -> [Block] -> IO ()) -> Presentation -> IO Presentation
evalAllVars :: Presentation -> IO Presentation


-- | Read a presentation from disk.
module Patat.Presentation.Read
readPresentation :: UniqueGen -> FilePath -> IO (Either String Presentation)

-- | Find level of header that starts slides. This is defined as the least
--   header that occurs before a non-header in the blocks.
detectSlideLevel :: [Block] -> Int

-- | Read settings from the metadata block in the Pandoc document.
readMetaSettings :: Text -> Either String PresentationSettings


-- | Module that allows the user to interact with the presentation
module Patat.Presentation.Interactive
data PresentationCommand
Exit :: PresentationCommand
Forward :: PresentationCommand
Backward :: PresentationCommand
SkipForward :: PresentationCommand
SkipBackward :: PresentationCommand
First :: PresentationCommand
Last :: PresentationCommand
Reload :: PresentationCommand
Seek :: Int -> PresentationCommand
UpdateVar :: Var -> [Block] -> PresentationCommand
UnknownCommand :: String -> PresentationCommand
readPresentationCommand :: Handle -> IO PresentationCommand
data UpdatedPresentation
UpdatedPresentation :: !Presentation -> UpdatedPresentation
ExitedPresentation :: UpdatedPresentation
ErroredPresentation :: String -> UpdatedPresentation
updatePresentation :: PresentationCommand -> Presentation -> IO UpdatedPresentation
instance GHC.Classes.Eq Patat.Presentation.Interactive.PresentationCommand
instance GHC.Internal.Show.Show Patat.Presentation.Interactive.PresentationCommand

module Patat.Presentation.Display
data Display
DisplayDoc :: Doc -> Display
DisplayImage :: FilePath -> Display
displayPresentation :: Size -> Presentation -> Display

-- | Displays an error in the place of the presentation. This is useful if
--   we want to display an error but keep the presentation running.
displayPresentationError :: Size -> Presentation -> String -> Doc
dumpPresentation :: Presentation -> IO ()
instance GHC.Internal.Show.Show Patat.Presentation.Display.Display

module Patat.Presentation

-- | These are patat-specific settings. That is where they differ from more
--   general metadata (author, title...)
data PresentationSettings
PresentationSettings :: !Maybe (FlexibleNum Int) -> !Maybe (FlexibleNum Int) -> !Maybe MarginSettings -> !Maybe Wrap -> !Maybe (FlexibleNum Int) -> !Maybe Theme -> !Maybe Bool -> !Maybe (FlexibleNum Int) -> !Maybe Int -> !Maybe ExtensionList -> !Maybe ImageSettings -> !Maybe Bool -> !Maybe EvalSettingsMap -> !Maybe Bool -> !Maybe [FilePath] -> !Maybe SpeakerNotesSettings -> !Maybe TransitionSettings -> !Maybe LinkSettings -> PresentationSettings
[psRows] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psColumns] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psMargins] :: PresentationSettings -> !Maybe MarginSettings
[psWrap] :: PresentationSettings -> !Maybe Wrap
[psTabStop] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psTheme] :: PresentationSettings -> !Maybe Theme
[psIncrementalLists] :: PresentationSettings -> !Maybe Bool
[psAutoAdvanceDelay] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psSlideLevel] :: PresentationSettings -> !Maybe Int
[psPandocExtensions] :: PresentationSettings -> !Maybe ExtensionList
[psImages] :: PresentationSettings -> !Maybe ImageSettings
[psBreadcrumbs] :: PresentationSettings -> !Maybe Bool
[psEval] :: PresentationSettings -> !Maybe EvalSettingsMap
[psSlideNumber] :: PresentationSettings -> !Maybe Bool
[psSyntaxDefinitions] :: PresentationSettings -> !Maybe [FilePath]
[psSpeakerNotes] :: PresentationSettings -> !Maybe SpeakerNotesSettings
[psTransition] :: PresentationSettings -> !Maybe TransitionSettings
[psLinks] :: PresentationSettings -> !Maybe LinkSettings
defaultPresentationSettings :: PresentationSettings

-- | Used to generate fresh variables.
data UniqueGen

-- | Can be used as a unique identifier.
data Unique
zeroUniqueGen :: UniqueGen
data Presentation
Presentation :: !FilePath -> !EncodingFallback -> ![Inline] -> ![Inline] -> !PresentationSettings -> !Seq Slide -> !Seq Breadcrumbs -> !Seq PresentationSettings -> !Seq (Maybe TransitionGen) -> !Index -> !SyntaxMap -> !EvalBlocks -> !UniqueGen -> !HashMap Var [Block] -> Presentation
[pFilePath] :: Presentation -> !FilePath
[pEncodingFallback] :: Presentation -> !EncodingFallback
[pTitle] :: Presentation -> ![Inline]
[pAuthor] :: Presentation -> ![Inline]
[pSettings] :: Presentation -> !PresentationSettings
[pSlides] :: Presentation -> !Seq Slide
[pBreadcrumbs] :: Presentation -> !Seq Breadcrumbs
[pSlideSettings] :: Presentation -> !Seq PresentationSettings
[pTransitionGens] :: Presentation -> !Seq (Maybe TransitionGen)
[pActiveFragment] :: Presentation -> !Index
[pSyntaxMap] :: Presentation -> !SyntaxMap
[pEvalBlocks] :: Presentation -> !EvalBlocks
[pUniqueGen] :: Presentation -> !UniqueGen
[pVars] :: Presentation -> !HashMap Var [Block]
readPresentation :: UniqueGen -> FilePath -> IO (Either String Presentation)
activeSpeakerNotes :: Presentation -> SpeakerNotes
activeVars :: Presentation -> HashSet Var
data Size
getPresentationSize :: Presentation -> IO Size
data Display
DisplayDoc :: Doc -> Display
DisplayImage :: FilePath -> Display
displayPresentation :: Size -> Presentation -> Display

-- | Displays an error in the place of the presentation. This is useful if
--   we want to display an error but keep the presentation running.
displayPresentationError :: Size -> Presentation -> String -> Doc
dumpPresentation :: Presentation -> IO ()
data PresentationCommand
Exit :: PresentationCommand
Forward :: PresentationCommand
Backward :: PresentationCommand
SkipForward :: PresentationCommand
SkipBackward :: PresentationCommand
First :: PresentationCommand
Last :: PresentationCommand
Reload :: PresentationCommand
Seek :: Int -> PresentationCommand
UpdateVar :: Var -> [Block] -> PresentationCommand
UnknownCommand :: String -> PresentationCommand
readPresentationCommand :: Handle -> IO PresentationCommand
data UpdatedPresentation
UpdatedPresentation :: !Presentation -> UpdatedPresentation
ExitedPresentation :: UpdatedPresentation
ErroredPresentation :: String -> UpdatedPresentation
updatePresentation :: PresentationCommand -> Presentation -> IO UpdatedPresentation

module Patat.AutoAdvance

-- | Utility to make auto advancing optional.
maybeAutoAdvance :: Maybe Int -> Chan PresentationCommand -> (Chan PresentationCommand -> IO a) -> IO a

-- | This function takes an existing channel for presentation commands
--   (presumably coming from human input) and creates a new one that
--   <i>also</i> sends a <a>Forward</a> command if nothing happens for N
--   seconds.
autoAdvance :: Int -> Chan PresentationCommand -> (Chan PresentationCommand -> IO a) -> IO a

module Patat.Main
main :: IO ()
instance GHC.Internal.Show.Show Patat.Main.Options
