git.iko.soy/rowtype-yoga/purescript-opencode
on main help sign in
119 lines 2.7 kB history raw
1module OpenTUI
2 ( Renderer
3 , Renderable
4 , Buffer
5 , Color
6 , Metrics
7 , Bounds
8 , Capabilities
9 , BoxOptions
10 , createBox
11 , metrics
12 , bounds
13 , capabilities
14 , controlState
15 , isDestroyed
16 , focused
17 , focus
18 , blur
19 , setHeight
20 , requestRender
21 , writeControl
22 , prependInputHandler
23 , onFrame
24 , onResize
25 , onRendererDestroy
26 , onDestroyed
27 , rgba
28 , drawText
29 , pushScissor
30 , popScissor
31 ) where
33import Prelude
35import Data.Nullable (Nullable)
36import Effect (Effect)
38type Metrics =
39 { columns :: Int
40 , rows :: Int
41 , width :: Int
42 , height :: Int
43 , resolution :: Nullable { width :: Number, height :: Number }
44 }
46type Bounds =
47 { x :: Int
48 , y :: Int
49 , width :: Int
50 , height :: Int
51 , visible :: Boolean
52 , destroyed :: Boolean
53 , focused :: Boolean
54 }
56type Capabilities =
57 { kittyGraphics :: Boolean
58 , rgb :: Boolean
59 , remote :: Boolean
60 , multiplexer :: Boolean
61 }
63type BoxOptions =
64 { width :: String
65 , height :: Int
66 , flexShrink :: Int
67 , backgroundColor :: String
68 , focusable :: Boolean
69 }
71foreign import data Renderer :: Type
73foreign import data Renderable :: Type
75foreign import data Buffer :: Type
77foreign import data Color :: Type
79foreign import createBox :: Renderer -> BoxOptions -> (Renderable -> Buffer -> Effect Unit) -> Effect Renderable
81foreign import metrics :: Renderer -> Effect Metrics
83foreign import bounds :: Renderable -> Effect Bounds
85foreign import capabilities :: Renderer -> Effect (Nullable Capabilities)
87foreign import controlState :: Renderer -> Effect String
89foreign import isDestroyed :: Renderer -> Effect Boolean
91foreign import focused :: Renderer -> Effect (Nullable Renderable)
93foreign import focus :: Renderable -> Effect Unit
95foreign import blur :: Renderable -> Effect Unit
97foreign import setHeight :: Renderable -> Int -> Effect Unit
99foreign import requestRender :: Renderer -> Effect Unit
101foreign import writeControl :: Renderer -> String -> Effect Unit
103foreign import prependInputHandler :: Renderer -> (String -> Effect Boolean) -> Effect (Effect Unit)
105foreign import onFrame :: Renderer -> Effect Unit -> Effect (Effect Unit)
107foreign import onResize :: Renderer -> Effect Unit -> Effect (Effect Unit)
109foreign import onRendererDestroy :: Renderer -> Effect Unit -> Effect (Effect Unit)
111foreign import onDestroyed :: Renderable -> Effect Unit -> Effect (Effect Unit)
113foreign import rgba :: Int -> Int -> Int -> Int -> Color
115foreign import drawText :: Buffer -> String -> Int -> Int -> Color -> Color -> Effect Unit
117foreign import pushScissor :: Buffer -> { x :: Int, y :: Int, width :: Int, height :: Int } -> Effect Unit
119foreign import popScissor :: Buffer -> Effect Unit