!E      !"#$%&'()*+,-./0123456789:;<=>?@ABCDE,The type of textual tokens. Tokens have an  annotation type, A which is the type of values that can be used to annotate tokens 6 (e.g., position in a file, visual attributes, etc.). FGHIJCGeneral splitter function; given a list and a predicate, split the C list into sublists wherever the predicate matches, discarding the  matching elements. KLM4Tokenize a string using a default annotation value. NO9Serialize tokens to an underlying string representation,  discarding annotations. PReplace a token's annotation. QIs the token whitespace? RAGiven a list of tokens, truncate the list so that its underlying C string representation does not exceed the specified column width. " Note that this does not truncate within a token; it merely E returns the largest sublist of tokens that has the required length. S@Given a list of tokens without Newlines, (potentially) wrap the % list to the specified column width. EHIMOPQRS EHIHIHIMOPQRS!AAn intermediate type used in the rendering process. Widgets are  converted into collections of Ts and represented with this E type, using a few primitive rendering instructions to determine how E the rendered images are combined to form a complete terminal window  image. See . UVW$The collection of widget names (see  ) and their $ rendering addresses as a result of . 2Information about the rendered state of a widget. X#The rendered position of a widget. The rendered size of a widget. 'The type of user interface widgets. A  provides several  properties:  Growth properties( which provide information about how to > allocate space to widgets depending on their propensity to  consume available space  A primary attribute$ which is the attribute most easily  identifiable with the widget's visual presentation  An attribute override* which allows the widget and its children C to be rendered using a single attribute specified by the caller  A rendering routine which converts the widget's internal state  into a  value. -Of primary concern is the rendering routine, . The A rendering routine takes one parameter: the size of the space in > which the widget should be rendered. The space is important A because it provides a maximum size for the widget. For widgets = that consume all available space, the size of the resulting  : will be equal to the supplied size. For smaller widgets 2 (e.g., a simple string of text), the size of the  will B likely be much smaller than the supplied size. In any case, any   implementation must" obey the rule that the resulting   must not exceed the supplied YZ in size. If  it does, there'0s a good chance your interface will be garbled. =If the widget has child widgets, the supplied size should be D subdivided to fit the child widgets as appropriate. How the space C is subdivided may depend on the growth properties of the children " or it may be a matter of policy. 9Render the widget with the given dimensions. The result  must9 not be larger than the specified dimensions, but may be  smaller. 7Will this widget expand to take advantage of available  horizontal space? 7Will this widget expand to take advantage of available  vertical space? :The primary attribute of this widget, used when composing 8 widgets. For example, if you want to compose a widget A with  a space-filling widget B, you probably want B's text ( attributes to be identical to those of A. .Apply the specified attribute to this widget. A simple orientation type. :Annotate a widget with a rendering identifier so that its B rendering address will be stored by the rendering process. Once @ the widget has been rendered, its address will be found in the  resulting &. To retrieve the address of such an  identifier, use . /The identifier of the widget to be used in the  . $The widget whose rendering address ( ) should  be stored.  Create a  containing a single T.  Create a ( representing a render together with an  identifier. This type of  is used with  to  locate a widget''s position and dimensions in the final T. 'The identifier of the widget that this   represents. Should be the same  identifier that was passed to . The  to identify.  Create a , representing a collection of renders which % should be combined in the specified  . $Compute the width, in columns, of a . "Compute the height, in rows, of a . [#Given a starting position (usually YZ 0 0) and a  , combine the Render's contents into a single T and & track the positions and sizes of any s with positioning / addresses. Returns the resulting image and a   containing the $ values of all addressable widgets. BRetrieve the rendering address for a given widget. To annotate a . widget to induce storage of its address, use . ;Add an address for the specified identifier, position, and T  to the . The  identifier. The position of the image. 'The image whose size should be stored. \Compute the size of an T as a YZ. Given a  and a ]% object, render the widget using the = current size of the terminal controlled by Vty. Returns the  rendered  as an T along with the   containing the es of  widgets. ^ Modify the width component of a YZ. !Modify the height component of a YZ.         <A vertical fill widget. Fills all available space with the $ specified character and attribute. AA horizontal fill widget. Fills the available horizontal space, < one row high, using the specified character and attribute. _.A box layout widget capable of containing two s " horizontally or vertically. See  and . Boxes lay out @ their children by using the growth properties of the children: C If both children are expandable in the same dimension (i.e., both A vertically or both horizontally), the children are each given  half of the parent container's available space C If one of the children is expandable and the other is static, the C static child is rendered first and the remaining space is given  to the expandable child ; Otherwise, both children are rendered in top-to-bottom or E left-to-right order and the resulting container uses only as much " space as its children combined `BCreate a horizontal box layout widget containing two widgets side E by side. Space consumed by the box will depend on its contents and  the available space.  An alias for $ intended as sugar to chain widgets  horizontally. CCreate a vertical box layout widget containing two widgets. Space C consumed by the box will depend on its contents and the available  space.  An alias for 0 intended as sugar to chain widgets vertically. 3Impose a maximum horizontal size, in columns, on a . !.Impose a maximum vertical size, in rows, on a .  ! ! !"*Add expanding bottom padding to a widget. #'Add expanding top padding to a widget. $3Impose a maximum size (width, height) on a widget. Maximum width in columns Maximum height in rows "#$"#$"#$%% represents a a that can be manipulated with  (s at rendering time. b&2The default attribute for all tokens in this text  object. '*The tokens of the underlying text stream. (5A formatter makes changes to text at rendering time. It'"d be nice if formatters were just :: % -> %, but E some formatting use cases involve knowing the size of the rendering C area, which is not known until render time (e.g., text wrapping).  Thus, a formatter takes a Z and runs at render time. )Formatter composition: a &.& b applies a followed by b. c*CPrepare a string for rendering and assign it the specified default  attribute. +BConstruct a Widget directly from an attribute and a String. This  is recommended if you don't need to use a (. ,>A formatter for wrapping text into the available space. This D formatter will insert line breaks where appropriate so if you want A to use other structure-sensitive formatters, run this formatter  last. -BA highlight formatter takes a regular expression used to scan the E text and an attribute to assign to matches. Highlighters only scan + non-whitespace tokens in the text stream. dAPossibly annotate a token with the specified annotation value if E the predicate matches; otherwise, return the input token unchanged. e(Does the specified regex match the token's string value? .AConstruct a text widget formatted with the specified formatters. E the formatters will be applied in the order given here, so be aware E of how the formatters will modify the text (and affect each other). f"Low-level text-rendering routine. %&'()*+,-. %&'(*+.)-, %&'&'()*+,-./8The list widget type. Lists are parameterized over the internal  identifier type a+, the type of internal identifiers used to D refer to the visible representations of the list contents, and the   widget type b1, the type of widgets used to represent the list  visually. ghi0#The currently selected list index. 1.The start index of the window of visible list  items. 2.The size of the window of visible list items. 3The items in the list. 4AA list item. Each item contains an arbitrary internal identifier  a and a  representing it. 5@Create a new list. Emtpy lists and empty scrolling windows are  not allowed. ,The attribute of normal, non-selected items #The attribute of the selected item 5The scrolling window size, i.e., the number of items 7 which should be visible to the user at any given time The list items 6j72A convenience function to create a new list using a s as the  internal identifiers and Text% widgets to represent those strings. ,The attribute of normal, non-selected items #The attribute of the selected item /The scrolling window size, i.e., the number of . items which should be visible to the user at  any given time The list items 8&Get the currently selected list item. 9ASet the window size of the list. This automatically adjusts the 4 window position to keep the selected item visible. :BScroll a list up or down by the specified number of positions and ? return the new scrolled list. Scrolling by a positive amount E scrolls downward and scrolling by a negative amount scrolls upward. @ This automatically takes care of managing internal list state: @ Moves the cursor by the specified amount and clamps the cursor : position to the beginning or the end of the list where  appropriate @ Moves the scrolling window position if necessary (i.e., if the 2 cursor moves to an item not currently in view) ;$Scroll a list down by one position. <"Scroll a list up by one position. =AScroll a list down by one page from the current cursor position. >?Scroll a list up by one page from the current cursor position. ?Given a /., return the items that are currently visible D according to the state of the list. Returns the visible items and , flags indicating whether each is selected. /0123456789:;<=>?/01234576:<;>=938012?/01230123456789:;<=>?@'Create a single-row horizontal border. A:Create a single-row horizontal border using the specified  attribute and character. B(Create a single-column vertical border. C;Create a single-column vertical border using the specified  attribute and character. D@Wrap a widget in a bordering box using the specified attribute. k@ABCDB@CAD@ABCDE  !"#$%&'()*+,-./0123456789:;<=>?@ABCDl      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMMNOPQRSTUVWXYZ[\]^_` [ab[abcd[efghijkl-mnop7qrstu vty-ui-0.4Graphics.Vty.Widgets.RenderingGraphics.Vty.Widgets.BaseGraphics.Vty.Widgets.ComposedGraphics.Vty.Widgets.TextGraphics.Vty.Widgets.ListGraphics.Vty.Widgets.BordersText.Trans.TokenizeGraphics.Vty.Widgets.AllRender RenderStateAddress addrPositionaddrSizeWidgetrendergrowHorizontal growVerticalprimaryAttribute withAttribute OrientationVertical Horizontal addressable renderImg renderAddr renderMany renderWidth renderHeightaddress addAddressmkImage withWidth withHeightvFillhFillhBox<++>vBox<-->hLimitvLimit bottomPadded topPaddedboxLimitText defaultAttrtokens Formatter&.& prepareText simpleTextwrap highlight textWidgetList selectedIndexscrollTopIndexscrollWindowSize listItemsListItemmkList listWidget mkSimpleList getSelectedresizescrollBy scrollDownscrollUppageDownpageUpgetVisibleItemshBorder hBorderWithvBorder vBorderWithborderedToken Whitespace tokenStringtokenAnnotation splitWithwsCharsisWstokenize tokenize' serializewithAnnotation isWhitespace truncLinewrapLine vty-4.4.0.0Graphics.Vty.ImageImageMany AddressedImgGraphics.Vty.DisplayRegion DisplayRegion doPositioning imageSize Graphics.VtyVty mkImageSizebox renderBoxbaseGHC.BaseString nullFormatterannotate matchesRegex renderText normalAttr selectedAttrrenderListWidgetrenderBordered