[{"name":"Ansi","comment":"\n\n\n## Erasing\n\n@docs clearScreen\n@docs eraseScreen\n@docs eraseUp\n@docs eraseDown\n@docs eraseLine\n@docs eraseLineAfter\n@docs eraseLineBefore\n\n\n## State\n\n@docs saveScreen\n@docs restoreScreen\n@docs scrollUpBy\n@docs scrollDownBy\n\n\n## Other\n\n@docs setTitle\n@docs link\n@docs beep\n\n","unions":[],"aliases":[],"values":[{"name":"beep","comment":" Emits an audio beep\n","type":"String.String"},{"name":"clearScreen","comment":" Clears the entire screen\n","type":"String.String"},{"name":"eraseDown","comment":" Erases the screen from the cursor down\n","type":"String.String"},{"name":"eraseLine","comment":" Erases the line the cursor is on\n","type":"String.String"},{"name":"eraseLineAfter","comment":" Erases the line from the cursor to the end\n","type":"String.String"},{"name":"eraseLineBefore","comment":" Erases the line from the beginning through the cursor\n","type":"String.String"},{"name":"eraseScreen","comment":" Erases all of the screen\n","type":"String.String"},{"name":"eraseUp","comment":" Erases the screen from the cursor up\n","type":"String.String"},{"name":"link","comment":" Similar formatting to Markdown URLs. Not all terminals support this format.\n","type":"{ text : String.String, url : String.String } -> String.String"},{"name":"restoreScreen","comment":" ","type":"String.String"},{"name":"saveScreen","comment":" ","type":"String.String"},{"name":"scrollDownBy","comment":" Scrolls the terminal down\n","type":"Basics.Int -> String.String"},{"name":"scrollUpBy","comment":" Scrolls the terminal up\n","type":"Basics.Int -> String.String"},{"name":"setTitle","comment":" Sets the title of the terminal\n","type":"String.String -> String.String"}],"binops":[]},{"name":"Ansi.Box","comment":" Styles borrowed from <https://www.npmjs.com/package/cli-boxes>\n\n@docs Box\n\n@docs single\n@docs double\n@docs singleDouble\n@docs doubleSingle\n@docs bold\n@docs classic\n@docs rounded\n@docs custom\n\n@docs draw\n\n","unions":[],"aliases":[{"name":"Box","comment":" ","args":[],"type":"{ topLeft : String.String, top : String.String, topRight : String.String, right : String.String, bottomRight : String.String, bottom : String.String, bottomLeft : String.String, left : String.String }"}],"values":[{"name":"bold","comment":" A thick box with sharp corners\n\n    ┏━━━━┓\n    ┃    ┃\n    ┗━━━━┛\n\n","type":"Ansi.Box.Box"},{"name":"classic","comment":" A thin box with plus shaped corners\n\n    +----+\n    |    |\n    +----+\n\n","type":"Ansi.Box.Box"},{"name":"custom","comment":" Design your own box, such as\n\n    •————•\n    ∫    ∫\n    •————•\n\nThis can break layout when you use `Char`s that have a width greater than 1.\nE.g. 🌈 is 2 columns wide.\n\n","type":"{ topLeft : Char.Char, top : Char.Char, topRight : Char.Char, right : Char.Char, bottomRight : Char.Char, bottom : Char.Char, bottomLeft : Char.Char, left : Char.Char } -> Ansi.Box.Box"},{"name":"double","comment":" 2 thin, nested boxes with sharp corners\n\n    ╔════╗\n    ║    ║\n    ╚════╝\n\n","type":"Ansi.Box.Box"},{"name":"doubleSingle","comment":" A box with sharp corners, thin on the sides and doubled on top and bottom\n\n    ╒════╕\n    │    │\n    ╘════╛\n\n","type":"Ansi.Box.Box"},{"name":"draw","comment":" Helps to draw the box for you\n","type":"{ width : Basics.Int, height : Basics.Int } -> Ansi.Box.Box -> String.String"},{"name":"rounded","comment":" A thin box with rounded corners\n\n    ╭────╮\n    │    │\n    ╰────╯\n\n","type":"Ansi.Box.Box"},{"name":"single","comment":" A thin box with sharp corners\n\n    ┌────┐\n    │    │\n    └────┘\n\n","type":"Ansi.Box.Box"},{"name":"singleDouble","comment":" A box with sharp corners, thin on the top and bottom and doubled up on the sides\n\n    ╓────╖\n    ║    ║\n    ╙────╜\n\n","type":"Ansi.Box.Box"}],"binops":[]},{"name":"Ansi.Color","comment":" For coloring either the font or the background.\n\n\n## Shorthand\n\n@docs fontColor\n@docs backgroundColor\n@docs invert\n\n\n## Basic Colors\n\n@docs black\n@docs blue\n@docs cyan\n@docs green\n@docs magenta\n@docs red\n@docs white\n@docs yellow\n\n\n## Bright Colors\n\n@docs brightBlack\n@docs brightRed\n@docs brightGreen\n@docs brightYellow\n@docs brightBlue\n@docs brightMagenta\n@docs brightCyan\n@docs brightWhite\n\n\n## Custom Color\n\n@docs rgb\n\n\n## Converting from/to HTML colors\n\n@docs fromHtmlColor\n@docs toHtmlColor\n\n\n## Explicit\n\n@docs Color\n@docs Location\n\n@docs start\n@docs end\n@docs startInvert\n@docs endInvert\n\n","unions":[{"name":"Color","comment":" ","args":[],"cases":[["Black",[]],["Red",[]],["Green",[]],["Yellow",[]],["Blue",[]],["Magenta",[]],["Cyan",[]],["White",[]],["BrightBlack",[]],["BrightRed",[]],["BrightGreen",[]],["BrightYellow",[]],["BrightBlue",[]],["BrightMagenta",[]],["BrightCyan",[]],["BrightWhite",[]],["Custom256",["{ color : Basics.Int }"]],["CustomTrueColor",["{ red : Basics.Int, green : Basics.Int, blue : Basics.Int }"]]]},{"name":"Location","comment":" Whether the color is applied to the `Font` (foreground) or the `Background`\n","args":[],"cases":[["Font",[]],["Background",[]]]}],"aliases":[],"values":[{"name":"backgroundColor","comment":" Sets the color behind the text\n","type":"Ansi.Color.Color -> String.String -> String.String"},{"name":"black","comment":" ","type":"Ansi.Color.Color"},{"name":"blue","comment":" ","type":"Ansi.Color.Color"},{"name":"brightBlack","comment":" ","type":"Ansi.Color.Color"},{"name":"brightBlue","comment":" ","type":"Ansi.Color.Color"},{"name":"brightCyan","comment":" ","type":"Ansi.Color.Color"},{"name":"brightGreen","comment":" ","type":"Ansi.Color.Color"},{"name":"brightMagenta","comment":" ","type":"Ansi.Color.Color"},{"name":"brightRed","comment":" ","type":"Ansi.Color.Color"},{"name":"brightWhite","comment":" ","type":"Ansi.Color.Color"},{"name":"brightYellow","comment":" ","type":"Ansi.Color.Color"},{"name":"cyan","comment":" ","type":"Ansi.Color.Color"},{"name":"end","comment":" Reset to the terminal's default color\n","type":"Ansi.Color.Location -> String.String"},{"name":"endInvert","comment":" Unflip the font and background colors\n","type":"String.String"},{"name":"fontColor","comment":" Sets the color of the text\n","type":"Ansi.Color.Color -> String.String -> String.String"},{"name":"fromHtmlColor","comment":" Convert from [avh4/elm-color](https://package.elm-lang.org/packages/avh4/elm-color/latest/) to an ANSI color\n","type":"Color.Color -> Ansi.Color.Color"},{"name":"green","comment":" ","type":"Ansi.Color.Color"},{"name":"invert","comment":" Swaps the font and background colors\n","type":"String.String -> String.String"},{"name":"magenta","comment":" ","type":"Ansi.Color.Color"},{"name":"red","comment":" ","type":"Ansi.Color.Color"},{"name":"rgb","comment":" Specify the amount of red, green, and blue in the range of 0 - 255\n","type":"{ red : Basics.Int, green : Basics.Int, blue : Basics.Int } -> Ansi.Color.Color"},{"name":"start","comment":" Set the color for the following text or background\n","type":"Ansi.Color.Location -> Ansi.Color.Color -> String.String"},{"name":"startInvert","comment":" Flip the font and background colors\n","type":"String.String"},{"name":"toHtmlColor","comment":" Convert from an ANSI color to [avh4/elm-color](https://package.elm-lang.org/packages/avh4/elm-color/latest/)\n","type":"Ansi.Color.Color -> Color.Color"},{"name":"white","comment":" ","type":"Ansi.Color.Color"},{"name":"yellow","comment":" ","type":"Ansi.Color.Color"}],"binops":[]},{"name":"Ansi.Cursor","comment":" Allows you to move the cursor around the screen\n\n\n## Movement\n\n@docs moveUpBy\n@docs moveDownBy\n@docs moveForwardBy\n@docs moveBackwardBy\n@docs moveForwardLines\n@docs moveBackwardLines\n@docs moveTo\n@docs moveToColumn\n@docs savePosition\n@docs restorePosition\n\n\n## Visibility\n\n@docs hide\n@docs show\n\n","unions":[],"aliases":[],"values":[{"name":"hide","comment":" Hide the cursor\n","type":"String.String"},{"name":"moveBackwardBy","comment":" Move the cursor forward N columns. In an LTR language this is to the left and in an RTL language it's to the right.\n","type":"Basics.Int -> String.String"},{"name":"moveBackwardLines","comment":" Move the cursor backward N lines.\n","type":"Basics.Int -> String.String"},{"name":"moveDownBy","comment":" Move the cursor down N lines\n","type":"Basics.Int -> String.String"},{"name":"moveForwardBy","comment":" Move the cursor forward N columns. In an LTR language this is to the right and in an RTL language it's to the left.\n","type":"Basics.Int -> String.String"},{"name":"moveForwardLines","comment":" Move the cursor forward N lines.\n","type":"Basics.Int -> String.String"},{"name":"moveTo","comment":" Move the cursor to the specified row and column\n","type":"{ row : Basics.Int, column : Basics.Int } -> String.String"},{"name":"moveToColumn","comment":" Move the cursor to the specified column\n","type":"Basics.Int -> String.String"},{"name":"moveUpBy","comment":" Move the cursor up N lines\n","type":"Basics.Int -> String.String"},{"name":"restorePosition","comment":" Move the cursor back to the last saved position\n","type":"String.String"},{"name":"savePosition","comment":" Save the cursor's position\n","type":"String.String"},{"name":"show","comment":" Show the cursor if it was hidden\n","type":"String.String"}],"binops":[]},{"name":"Ansi.Decode","comment":"\n\n@docs Key\n@docs decodeKey\n@docs getCommand\n@docs isDownArrow\n@docs isLeftArrow\n@docs isRightArrow\n@docs isUpArrow\n\n","unions":[],"aliases":[{"name":"Key","comment":" ","args":[],"type":"{ code : Maybe.Maybe String.String, ctrl : Basics.Bool, meta : Basics.Bool, name : String.String, sequence : String.String, shift : Basics.Bool }"}],"values":[{"name":"decodeKey","comment":" You can configure Node to listen for key events, this will parse those into a nice record.\n","type":"Json.Decode.Decoder Ansi.Decode.Key"},{"name":"getCommand","comment":" If the input is an ansi command, return the command portion, with the escape code removed.\n","type":"String.String -> Maybe.Maybe String.String"},{"name":"isDownArrow","comment":" ","type":"String.String -> Basics.Bool"},{"name":"isLeftArrow","comment":" ","type":"String.String -> Basics.Bool"},{"name":"isRightArrow","comment":" ","type":"String.String -> Basics.Bool"},{"name":"isUpArrow","comment":" ","type":"String.String -> Basics.Bool"}],"binops":[]},{"name":"Ansi.Font","comment":" When styling your terminal there are 2 sets of commands, those that add the style and those that remove it. This does make this a little more difficult to use as you have to remember to reset each style when you no longer want it applied. It does however let you mix and match styles however you want. For example\n\n    Ansi.Font.startItalic ++ \"Hello, \" ++ Ansi.Font.startBold ++ \"World\" ++ Ansi.Font.endBold ++ \"!\" ++ Ansi.Font.endItalic\n\nproduces \"_Hello, **World**!_\". However most people don't need this fine grained of control. If you want simpler functions I recommend\n\n    Ansi.Font.italic (\"Hello, \" ++ Ansi.Font.bold \"World\" ++ \"!\")\n\nwhich produces the same result.\n\n\n## Shorthand Styling\n\n@docs bold\n@docs faint\n@docs italic\n@docs underline\n@docs strikeThrough\n\n\n## Explicit Styling\n\n@docs startBold\n@docs endBold\n@docs startFaint\n@docs endBoldFaint\n\n@docs startItalic\n@docs endItalic\n\n@docs startUnderline\n@docs endUnderline\n\n@docs startStrikeThrough\n@docs endStrikeThrough\n\n@docs resetAll\n\n\n## Visibility\n\n@docs hide\n@docs show\n\n\n## Limited Support\n\nThese have some limited support but it varies greatly by terminal\n\n@docs blink, fastBlink\n@docs startBlink, startFastBlink\n@docs endBlink\n\n","unions":[],"aliases":[],"values":[{"name":"blink","comment":" Not supported by some terminals\n","type":"String.String -> String.String"},{"name":"bold","comment":" ","type":"String.String -> String.String"},{"name":"endBlink","comment":" ","type":"String.String"},{"name":"endBold","comment":" Double-underline [per ECMA-48](https://www.ecma-international.org/wp-content/uploads/ECMA-48_5th_edition_june_1991.pdf), but instead disables bold intensity on several terminals, including in the [Linux kernel's console before version 4.17](https://man7.org/linux/man-pages/man4/console_codes.4.html).\n","type":"String.String"},{"name":"endBoldFaint","comment":" ","type":"String.String"},{"name":"endItalic","comment":" ","type":"String.String"},{"name":"endStrikeThrough","comment":" ","type":"String.String"},{"name":"endUnderline","comment":" ","type":"String.String"},{"name":"faint","comment":" The opposite of bold\n","type":"String.String -> String.String"},{"name":"fastBlink","comment":" Not supported by some terminals\n","type":"String.String -> String.String"},{"name":"hide","comment":" ","type":"String.String"},{"name":"italic","comment":" ","type":"String.String -> String.String"},{"name":"resetAll","comment":" ","type":"String.String"},{"name":"show","comment":" ","type":"String.String"},{"name":"startBlink","comment":" ","type":"String.String"},{"name":"startBold","comment":" ","type":"String.String"},{"name":"startFaint","comment":" The opposite of bold\n","type":"String.String"},{"name":"startFastBlink","comment":" ","type":"String.String"},{"name":"startItalic","comment":" ","type":"String.String"},{"name":"startStrikeThrough","comment":" ","type":"String.String"},{"name":"startUnderline","comment":" ","type":"String.String"},{"name":"strikeThrough","comment":" ","type":"String.String -> String.String"},{"name":"underline","comment":" ","type":"String.String -> String.String"}],"binops":[]},{"name":"Ansi.Parser","comment":" For parsing ANSI codes into a custom type.\nUseful for turning ANSI text into another format such as HTML.\n\nBorrowed from [vito/elm-ansi](https://github.com/vito/elm-ansi/blob/05f89150e8bce99ae863cccda83e636564a64561/src/Ansi.elm) and then modified to fit the rest of this package.\n\n@docs parse, parseInto\n\n@docs Command, EraseMode\n\n","unions":[{"name":"Command","comment":" The events relevant to interpreting the stream.\n\n  - `Text` is a chunk of text which should be interpreted with the style implied\n    by the preceding commands (i.e. `[SetBold True, Text \"foo\"]`) should yield a\n    bold `foo`\n  - `Remainder` is a partial ANSI escape sequence, returned at the end of the\n    commands if it was cut off. The next string passed to `parse` should have this\n    prepended to it.\n  - The rest are derived from their respective ANSI escape sequences.\n\n","args":[],"cases":[["Text",["String.String"]],["Remainder",["String.String"]],["SetForeground",["Maybe.Maybe Ansi.Color.Color"]],["SetBackground",["Maybe.Maybe Ansi.Color.Color"]],["SetBold",["Basics.Bool"]],["SetFaint",["Basics.Bool"]],["SetItalic",["Basics.Bool"]],["SetUnderline",["Basics.Bool"]],["SetBlink",["Basics.Bool"]],["SetFastBlink",["Basics.Bool"]],["SetInverted",["Basics.Bool"]],["SetFraktur",["Basics.Bool"]],["SetFramed",["Basics.Bool"]],["Linebreak",[]],["CarriageReturn",[]],["CursorUp",["Basics.Int"]],["CursorDown",["Basics.Int"]],["CursorForward",["Basics.Int"]],["CursorBack",["Basics.Int"]],["CursorPosition",["Basics.Int","Basics.Int"]],["CursorColumn",["Basics.Int"]],["EraseDisplay",["Ansi.Parser.EraseMode"]],["EraseLine",["Ansi.Parser.EraseMode"]],["SaveCursorPosition",[]],["RestoreCursorPosition",[]]]},{"name":"EraseMode","comment":" Method to erase the display or line.\n","args":[],"cases":[["EraseToBeginning",[]],["EraseToEnd",[]],["EraseAll",[]]]}],"aliases":[],"values":[{"name":"parse","comment":" Convert an arbitrary String of text into a sequence of commands.\n\nIf the input string ends with a partial ANSI escape sequence, it will be\nyielded as a `Remainder` command, which should then be prepended to the next\ncall to `parse`.\n\n","type":"String.String -> List.List Ansi.Parser.Command"},{"name":"parseInto","comment":" Update a structure with commands parsed out of the given string.\n","type":"a -> (Ansi.Parser.Command -> a -> a) -> String.String -> a"}],"binops":[]},{"name":"Ansi.String","comment":" Various functions for working with ANSI strings. E.g. when measuring the width of an ANSI string you don't want to include any of the command characters, only those that are displayed in the terminal.\n\n@docs width\n@docs padRight\n@docs strip\n\n@docs regex\n@docs emojiRegex\n\n","unions":[],"aliases":[],"values":[{"name":"emojiRegex","comment":" Matches emojis\n\nBorrowed from <https://github.com/mathiasbynens/emoji-regex>\n\nWith the removal of:\n©®‼⁉™ℹ↔-↙↩↪⌨⏏⏭-⏯⏱⏲⏸-⏺Ⓜ▪▫▶◀◻◼◾☀-☄☎☑☘☠☢☣☦☪☮☯☸-☺♀♂-♟♠♣♥♦♨♻♾⚒⚔-⚗⚙⚛⚜⚠⚧⚰⚱⛈⛏⛑⛩⛰-⛷⛸✂✉✏✒✔✖✝✡✳✴❄❇❣➡\n\n","type":"Regex.Regex"},{"name":"padRight","comment":" Add the specified string to the right side of your `String` so that it's the specified length. If this is impossible, e.g. in `padRight 10 \"🌈\" \"hello\"` the 🌈 is 2 columns wide meaning that your result will be either 9 or 11 columns wide, then white space will be added to fill the remaining space.\n","type":"Basics.Int -> String.String -> String.String -> String.String"},{"name":"regex","comment":" Matches ANSI characters\n\nBorrowed from <https://github.com/chalk/ansi-regex>\n\n","type":"Regex.Regex"},{"name":"strip","comment":" Remove ANSI characters from a `String`. Mostly useful for things like measuring a `String`'s width.\n","type":"String.String -> String.String"},{"name":"width","comment":" Measures the width of a `String` in terminal columns.\n\nCopied from <https://github.com/sindresorhus/string-width/blob/main/index.js>\n\n","type":"String.String -> Basics.Int"}],"binops":[]}]