@shell-shock/plugin-console 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"console-builtin.mjs","names":["code","For","Show","ElseClause","ElseIfClause","FunctionDeclaration","IfStatement","InterfaceDeclaration","InterfaceMember","TypeDeclaration","VarDeclaration","ReflectionKind","Spacing","ClassDeclaration","ClassField","ClassMethod","ClassPropertyGet","ClassPropertySet","BuiltinFile","TSDoc","TSDocDefaultValue","TSDocExample","TSDocParam","TSDocRemarks","TSDocReturns","IsNotDebug","IsNotVerbose","useColors","useTheme","getIndefiniteArticle","defu","AnsiHelpersDeclarations","_$createComponent","name","doc","children","parameters","type","ColorFunction","ansi16","ansi256","ansi16m","open","close","ColorsDeclaration","colors","each","Object","keys","filter","color","idx","_$createIntrinsic","heading","initializer","comma","doubleHardline","enderPunctuation","theme","text","banner","header","primary","secondary","tertiary","footer","command","title","link","description","body","message","help","success","info","debug","warning","danger","error","usage","bin","dynamic","options","arguments","prompt","icon","active","submitted","cancelled","disabled","input","inactive","placeholder","spinner","border","outline","divider","app","table","WriteLineFunctionDeclaration","returnType","optional","method","defaultValue","default","padding","MessageFunctionDeclaration","props","variant","consoleFnName","prefix","timestamp","when","Boolean","_$memo","labels","borderStyles","bottom","topLeft","icons","top","Math","max","length","topRight","left","right","repeat","bottomLeft","bottomRight","WrapAnsiFunction","StripAnsiFunctionDeclaration","DividerFunctionDeclaration","string","number","LinkFunctionDeclaration","condition","SpinnerFunctionDeclaration","isPrivateMember","JSON","stringify","extractBorderOptionsObject","direction","extractBorderOptionsString","TableFunctionDeclaration","property","_$mergeProps","ConsoleBuiltin","imports","builtinImports","id","utils","env"],"sources":["../../src/components/console-builtin.tsx"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Shell Shock\n\n This code was released as part of the Shell Shock project. Shell Shock\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/shell-shock.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/shell-shock\n Documentation: https://docs.stormsoftware.com/projects/shell-shock\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport type { Children } from \"@alloy-js/core\";\nimport { code, For, Show } from \"@alloy-js/core\";\nimport type { FunctionDeclarationProps } from \"@alloy-js/typescript\";\nimport {\n ElseClause,\n ElseIfClause,\n FunctionDeclaration,\n IfStatement,\n InterfaceDeclaration,\n InterfaceMember,\n TypeDeclaration,\n VarDeclaration\n} from \"@alloy-js/typescript\";\nimport { ReflectionKind } from \"@powerlines/deepkit/vendor/type\";\nimport { Spacing } from \"@powerlines/plugin-alloy/core/components/spacing\";\nimport {\n ClassDeclaration,\n ClassField,\n ClassMethod,\n ClassPropertyGet,\n ClassPropertySet\n} from \"@powerlines/plugin-alloy/typescript\";\nimport type { BuiltinFileProps } from \"@powerlines/plugin-alloy/typescript/components/builtin-file\";\nimport { BuiltinFile } from \"@powerlines/plugin-alloy/typescript/components/builtin-file\";\nimport {\n TSDoc,\n TSDocDefaultValue,\n TSDocExample,\n TSDocParam,\n TSDocRemarks,\n TSDocReturns\n} from \"@powerlines/plugin-alloy/typescript/components/tsdoc\";\nimport { IsNotDebug, IsNotVerbose } from \"@shell-shock/core/components/helpers\";\nimport { useColors, useTheme } from \"@shell-shock/plugin-theme/contexts/theme\";\nimport type {\n AnsiWrappers,\n BaseAnsiStylesKeys\n} from \"@shell-shock/plugin-theme/helpers/ansi-utils\";\nimport type {\n ThemeMessageVariant,\n ThemeResolvedConfig\n} from \"@shell-shock/plugin-theme/types/theme\";\nimport { getIndefiniteArticle } from \"@stryke/string-format/vowels\";\nimport { defu } from \"defu\";\n\nexport function AnsiHelpersDeclarations() {\n return (\n <>\n <VarDeclaration\n const\n export\n name=\"beep\"\n doc=\"The ASCII Bell character, which can be used to trigger a beep sound in the console.\">\n {code` \"\\\\u0007\"; `}\n </VarDeclaration>\n <Spacing />\n <VarDeclaration\n const\n export\n name=\"cursor\"\n doc=\"An object containing ANSI escape codes for controlling the console cursor.\">\n {code` {\n to(x: number, y?: number) {\n if (!y) {\n return \\`\\\\x1B[\\${x + 1}G\\`;\n }\n\n return \\`\\\\x1B[\\${y + 1};\\${x + 1}H\\`;\n },\n move(x: number, y: number) {\n let ret = '';\n\n if (x < 0) {\n ret += \\`\\\\x1B[\\${-x}D\\`;\n } else if (x > 0) {\n ret += \\`\\\\x1B[\\${x}C\\`;\n }\n\n if (y < 0) {\n ret += \\`\\\\x1B[\\${-y}A\\`;\n } else if (y > 0) {\n ret += \\`\\\\x1B[\\${y}B\\`;\n }\n\n return ret;\n },\n up: (count = 1) => \\`\\\\x1B[\\${count}A\\`,\n down: (count = 1) => \\`\\\\x1B[\\${count}B\\`,\n forward: (count = 1) => \\`\\\\x1B[\\${count}C\\`,\n backward: (count = 1) => \\`\\\\x1B[\\${count}D\\`,\n nextLine: (count = 1) => \"\\\\x1B[E\".repeat(count),\n prevLine: (count = 1) => \"\\\\x1B[F\".repeat(count),\n left: \"\\\\x1B[G\",\n hide: \"\\\\x1B[?25l\",\n show: \"\\\\x1B[?25h\",\n save: \"\\\\x1B7\",\n restore: \"\\\\x1B8\"\n } `}\n </VarDeclaration>\n <Spacing />\n <VarDeclaration\n const\n export\n name=\"erase\"\n doc=\"An object containing ANSI escape codes for erasing parts of the console.\">\n {code` {\n screen: \"\\\\x1B[2J\",\n up: (count = 1) => \"\\\\x1B[1J\".repeat(count),\n down: (count = 1) => \"\\\\x1B[J\".repeat(count),\n line: \"\\\\x1B[2K\",\n lineEnd: \"\\\\x1B[K\",\n lineStart: \"\\\\x1B[1K\",\n lines(count) {\n let lineClear = \"\";\n for (let i = 0; i < count; i++) {\n lineClear += this.line + (i < count - 1 ? cursor.up() : \"\");\n }\n\n if (count) {\n lineClear += cursor.left;\n }\n\n return lineClear;\n }\n } `}\n </VarDeclaration>\n <Spacing />\n <VarDeclaration\n const\n export\n name=\"scroll\"\n doc=\"An object containing ANSI escape codes for scrolling the console.\">\n {code` {\n up: (count = 1) => \"\\\\x1B[S\".repeat(count),\n down: (count = 1) => \"\\\\x1B[T\".repeat(count)\n } `}\n </VarDeclaration>\n <Spacing />\n <FunctionDeclaration\n export\n name=\"clear\"\n doc=\"A helper function to clear the console based on a count of lines\"\n parameters={[\n {\n name: \"current\",\n type: \"string\",\n doc: \"The current console output to be cleared\"\n },\n {\n name: \"consoleWidth\",\n type: \"number\",\n doc: \"The number of characters per line in the console\"\n }\n ]}>\n {code`if (!consoleWidth) {\n return erase.line + cursor.to(0);\n }\n\n let rows = 0;\n const lines = current.split(/\\\\r?\\\\n/);\n for (let line of lines) {\n rows += 1 + Math.floor(Math.max([...stripAnsi(line)].length - 1, 0) / consoleWidth);\n }\n\n return erase.lines(rows); `}\n </FunctionDeclaration>\n <Spacing />\n </>\n );\n}\n\n/**\n * A component to generate a console message function in a Shell Shock project.\n */\nfunction ColorFunction({\n ansi16,\n ansi256,\n ansi16m\n}: Record<\"ansi16\" | \"ansi256\" | \"ansi16m\", AnsiWrappers>) {\n return code` (text: string) => {\n try {\n if (!isColorSupported) {\n return String(text);\n }\n\n if (colorSupportLevels.stdout === 1) {\n return wrapAnsi(text, \"${ansi16.open}\", \"${ansi16.close}\");\n } else if (colorSupportLevels.stdout === 2) {\n return wrapAnsi(text, \"${ansi256.open}\", \"${ansi256.close}\");\n }\n\n return wrapAnsi(text, \"${ansi16m.open}\", \"${ansi16m.close}\");\n } catch {\n return String(text);\n }\n }\n`;\n}\n\n/**\n * A component to generate an object containing functions for coloring text in a Shell Shock project.\n */\nexport function ColorsDeclaration() {\n const colors = useColors();\n\n return (\n <>\n <TypeDeclaration\n export\n name=\"AnsiColor\"\n doc=\"The available ANSI colors for console text.\">\n <For\n each={Object.keys(colors.ansi16).filter(color => color !== \"theme\")}>\n {(color, idx) => `${idx > 0 ? \" | \" : \"\"}\"${color}\"`}\n </For>\n </TypeDeclaration>\n <Spacing />\n <hbr />\n {code`\n /**\n * A recursive type that defines theme colors for console text.\n *\n * @remarks\n * This type allows for nested theme color definitions, enabling complex theming structures for console applications.\n */\n export type ThemeColors<T> = T extends object ? { [K in keyof T]: ThemeColors<T[K]>; } : ((text: string) => string); `}\n <Spacing />\n <TypeDeclaration\n export\n name=\"Colors\"\n doc=\"An object containing functions for coloring console applications. Each function corresponds to a terminal color. See {@link AnsiColor} for available colors.\">\n {code`Record<AnsiColor, (text: string) => string> & ThemeColors<ThemeColorsResolvedConfig>`}\n </TypeDeclaration>\n <Spacing />\n <TSDoc heading=\"An object containing functions for coloring console applications. Each function corresponds to a terminal color. See {@link Colors} for available colors.\" />\n <VarDeclaration\n const\n export\n name=\"colors\"\n type=\"Colors\"\n initializer={\n <>\n {code` {\n `}\n <hbr />\n <For\n each={Object.keys(colors.ansi16).filter(\n color => color !== \"theme\"\n )}\n comma\n doubleHardline\n enderPunctuation>\n {color => (\n <>\n {code`${color}: `}\n <ColorFunction\n ansi16={colors.ansi16[color as BaseAnsiStylesKeys]}\n ansi256={colors.ansi256[color as BaseAnsiStylesKeys]}\n ansi16m={colors.ansi16m[color as BaseAnsiStylesKeys]}\n />\n </>\n )}\n </For>\n <hbr />\n {code`text: {\n banner: {\n header: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.header.primary\n }\n ansi256={\n colors.ansi256.theme.text.banner.header.primary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.header.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.header.secondary\n }\n ansi256={\n colors.ansi256.theme.text.banner.header.secondary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.header.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.header.tertiary\n }\n ansi256={\n colors.ansi256.theme.text.banner.header.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.header.tertiary\n }\n />\n )}\n },\n footer: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.footer.primary\n }\n ansi256={\n colors.ansi256.theme.text.banner.footer.primary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.footer.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.footer.secondary\n }\n ansi256={\n colors.ansi256.theme.text.banner.footer.secondary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.footer.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.footer.tertiary\n }\n ansi256={\n colors.ansi256.theme.text.banner.footer.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.footer.tertiary\n }\n />\n )}\n },\n command: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.command.primary\n }\n ansi256={\n colors.ansi256.theme.text.banner.command.primary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.command.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.command.secondary\n }\n ansi256={\n colors.ansi256.theme.text.banner.command.secondary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.command.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.command.tertiary\n }\n ansi256={\n colors.ansi256.theme.text.banner.command.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.command.tertiary\n }\n />\n )},\n },\n title: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.title.primary\n }\n ansi256={\n colors.ansi256.theme.text.banner.title.primary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.title.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.title.secondary\n }\n ansi256={\n colors.ansi256.theme.text.banner.title.secondary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.title.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.title.tertiary\n }\n ansi256={\n colors.ansi256.theme.text.banner.title.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.title.tertiary\n }\n />\n )},\n },\n link: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.link.primary\n }\n ansi256={\n colors.ansi256.theme.text.banner.link.primary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.link.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.link.secondary\n }\n ansi256={\n colors.ansi256.theme.text.banner.link.secondary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.link.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.link.tertiary\n }\n ansi256={\n colors.ansi256.theme.text.banner.link.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.link.tertiary\n }\n />\n )},\n },\n description: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.description\n .primary\n }\n ansi256={\n colors.ansi256.theme.text.banner.description\n .primary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.description\n .primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.description\n .secondary\n }\n ansi256={\n colors.ansi256.theme.text.banner.description\n .secondary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.description\n .secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.description\n .tertiary\n }\n ansi256={\n colors.ansi256.theme.text.banner.description\n .tertiary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.description\n .tertiary\n }\n />\n )},\n }\n },\n heading: {\n primary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.heading.primary}\n ansi256={colors.ansi256.theme.text.heading.primary}\n ansi16m={colors.ansi16m.theme.text.heading.primary}\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.heading.secondary}\n ansi256={colors.ansi256.theme.text.heading.secondary}\n ansi16m={colors.ansi16m.theme.text.heading.secondary}\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.heading.tertiary}\n ansi256={colors.ansi256.theme.text.heading.tertiary}\n ansi16m={colors.ansi16m.theme.text.heading.tertiary}\n />\n )},\n },\n body: {\n primary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.body.primary}\n ansi256={colors.ansi256.theme.text.body.primary}\n ansi16m={colors.ansi16m.theme.text.body.primary}\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.body.secondary}\n ansi256={colors.ansi256.theme.text.body.secondary}\n ansi16m={colors.ansi16m.theme.text.body.secondary}\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.body.tertiary}\n ansi256={colors.ansi256.theme.text.body.tertiary}\n ansi16m={colors.ansi16m.theme.text.body.tertiary}\n />\n )},\n link: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.body.link}\n ansi256={colors.ansi256.theme.text.body.link}\n ansi16m={colors.ansi16m.theme.text.body.link}\n />\n )}\n },\n message: {\n link: {\n help: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.message.link.help}\n ansi256={\n colors.ansi256.theme.text.message.link.help\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.link.success\n }\n ansi256={\n colors.ansi256.theme.text.message.link.success\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.message.link.info}\n ansi256={\n colors.ansi256.theme.text.message.link.info\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.message.link.debug}\n ansi256={\n colors.ansi256.theme.text.message.link.debug\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.link.warning\n }\n ansi256={\n colors.ansi256.theme.text.message.link.warning\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.link.danger\n }\n ansi256={\n colors.ansi256.theme.text.message.link.danger\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.message.link.error}\n ansi256={\n colors.ansi256.theme.text.message.link.error\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.error\n }\n />\n )}\n },\n header: {\n help: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.help\n }\n ansi256={\n colors.ansi256.theme.text.message.header.help\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.success\n }\n ansi256={\n colors.ansi256.theme.text.message.header.success\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.info\n }\n ansi256={\n colors.ansi256.theme.text.message.header.info\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.debug\n }\n ansi256={\n colors.ansi256.theme.text.message.header.debug\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.warning\n }\n ansi256={\n colors.ansi256.theme.text.message.header.warning\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.danger\n }\n ansi256={\n colors.ansi256.theme.text.message.header.danger\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.error\n }\n ansi256={\n colors.ansi256.theme.text.message.header.error\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.error\n }\n />\n )}\n },\n footer: {\n help: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.help\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.help\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.success\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.success\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.info\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.info\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.debug\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.debug\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.warning\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.warning\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.danger\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.danger\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.error\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.error\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.error\n }\n />\n )}\n },\n description: {\n help: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description.help\n }\n ansi256={\n colors.ansi256.theme.text.message.description.help\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description\n .success\n }\n ansi256={\n colors.ansi256.theme.text.message.description\n .success\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description\n .success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description.info\n }\n ansi256={\n colors.ansi256.theme.text.message.description.info\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description.debug\n }\n ansi256={\n colors.ansi256.theme.text.message.description\n .debug\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description\n .debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description\n .warning\n }\n ansi256={\n colors.ansi256.theme.text.message.description\n .warning\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description\n .warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description\n .danger\n }\n ansi256={\n colors.ansi256.theme.text.message.description\n .danger\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description\n .danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description.error\n }\n ansi256={\n colors.ansi256.theme.text.message.description\n .error\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description\n .error\n }\n />\n )}\n }\n },\n usage: {\n bin: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.bin}\n ansi256={colors.ansi256.theme.text.usage.bin}\n ansi16m={colors.ansi16m.theme.text.usage.bin}\n />\n )},\n command: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.command}\n ansi256={colors.ansi256.theme.text.usage.command}\n ansi16m={colors.ansi16m.theme.text.usage.command}\n />\n )},\n dynamic: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.dynamic}\n ansi256={colors.ansi256.theme.text.usage.dynamic}\n ansi16m={colors.ansi16m.theme.text.usage.dynamic}\n />\n )},\n options: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.options}\n ansi256={colors.ansi256.theme.text.usage.options}\n ansi16m={colors.ansi16m.theme.text.usage.options}\n />\n )},\n arguments: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.arguments}\n ansi256={colors.ansi256.theme.text.usage.arguments}\n ansi16m={colors.ansi16m.theme.text.usage.arguments}\n />\n )},\n description: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.description}\n ansi256={colors.ansi256.theme.text.usage.description}\n ansi16m={colors.ansi16m.theme.text.usage.description}\n />\n )}\n },\n prompt: {\n icon: {\n active: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.prompt.icon.active}\n ansi256={\n colors.ansi256.theme.text.prompt.icon.active\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.icon.active\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.icon.warning\n }\n ansi256={\n colors.ansi256.theme.text.prompt.icon.warning\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.icon.warning\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.prompt.icon.error}\n ansi256={\n colors.ansi256.theme.text.prompt.icon.error\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.icon.error\n }\n />\n )},\n submitted: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.icon.submitted\n }\n ansi256={\n colors.ansi256.theme.text.prompt.icon.submitted\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.icon.submitted\n }\n />\n )},\n cancelled: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.icon.cancelled\n }\n ansi256={\n colors.ansi256.theme.text.prompt.icon.cancelled\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.icon.cancelled\n }\n />\n )},\n disabled: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.icon.disabled\n }\n ansi256={\n colors.ansi256.theme.text.prompt.icon.disabled\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.icon.disabled\n }\n />\n )}\n },\n message: {\n active: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.message.active\n }\n ansi256={\n colors.ansi256.theme.text.prompt.message.active\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.message.active\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.message.warning\n }\n ansi256={\n colors.ansi256.theme.text.prompt.message.warning\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.message.warning\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.message.error\n }\n ansi256={\n colors.ansi256.theme.text.prompt.message.error\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.message.error\n }\n />\n )},\n submitted: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.message.submitted\n }\n ansi256={\n colors.ansi256.theme.text.prompt.message.submitted\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.message.submitted\n }\n />\n )},\n cancelled: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.message.cancelled\n }\n ansi256={\n colors.ansi256.theme.text.prompt.message.cancelled\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.message.cancelled\n }\n />\n )},\n disabled: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.message.disabled\n }\n ansi256={\n colors.ansi256.theme.text.prompt.message.disabled\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.message.disabled\n }\n />\n )}\n },\n input: {\n active: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.input.active\n }\n ansi256={\n colors.ansi256.theme.text.prompt.input.active\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.input.active\n }\n />\n )},\n inactive: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.input.inactive\n }\n ansi256={\n colors.ansi256.theme.text.prompt.input.inactive\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.input.inactive\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.input.warning\n }\n ansi256={\n colors.ansi256.theme.text.prompt.input.warning\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.input.warning\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.prompt.input.error}\n ansi256={\n colors.ansi256.theme.text.prompt.input.error\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.input.error\n }\n />\n )},\n submitted: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.input.submitted\n }\n ansi256={\n colors.ansi256.theme.text.prompt.input.submitted\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.input.submitted\n }\n />\n )},\n cancelled: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.input.cancelled\n }\n ansi256={\n colors.ansi256.theme.text.prompt.input.cancelled\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.input.cancelled\n }\n />\n )},\n disabled: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.input.disabled\n }\n ansi256={\n colors.ansi256.theme.text.prompt.input.disabled\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.input.disabled\n }\n />\n )},\n placeholder: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.input.placeholder\n }\n ansi256={\n colors.ansi256.theme.text.prompt.input.placeholder\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.input.placeholder\n }\n />\n )}\n },\n description: {\n active: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.description.active\n }\n ansi256={\n colors.ansi256.theme.text.prompt.description\n .active\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.description\n .active\n }\n />\n )},\n inactive: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.description\n .inactive\n }\n ansi256={\n colors.ansi256.theme.text.prompt.description\n .inactive\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.description\n .inactive\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.description\n .warning\n }\n ansi256={\n colors.ansi256.theme.text.prompt.description\n .warning\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.description\n .warning\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.description.error\n }\n ansi256={\n colors.ansi256.theme.text.prompt.description.error\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.description.error\n }\n />\n )},\n submitted: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.description\n .submitted\n }\n ansi256={\n colors.ansi256.theme.text.prompt.description\n .submitted\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.description\n .submitted\n }\n />\n )},\n cancelled: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.description\n .cancelled\n }\n ansi256={\n colors.ansi256.theme.text.prompt.description\n .cancelled\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.description\n .cancelled\n }\n />\n )},\n disabled: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.description\n .disabled\n }\n ansi256={\n colors.ansi256.theme.text.prompt.description\n .disabled\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.description\n .disabled\n }\n />\n )}\n }\n },\n spinner: {\n icon: {\n active: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.spinner.icon.active\n }\n ansi256={\n colors.ansi256.theme.text.spinner.icon.active\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.icon.active\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.spinner.icon.warning\n }\n ansi256={\n colors.ansi256.theme.text.spinner.icon.warning\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.icon.warning\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.spinner.icon.error}\n ansi256={\n colors.ansi256.theme.text.spinner.icon.error\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.icon.error\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.spinner.icon.success\n }\n ansi256={\n colors.ansi256.theme.text.spinner.icon.success\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.icon.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.spinner.icon.info}\n ansi256={\n colors.ansi256.theme.text.spinner.icon.info\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.icon.info\n }\n />\n )},\n help: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.spinner.icon.help}\n ansi256={\n colors.ansi256.theme.text.spinner.icon.help\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.icon.help\n }\n />\n )}\n },\n message: {\n active: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.spinner.message.active\n }\n ansi256={\n colors.ansi256.theme.text.spinner.message.active\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.message.active\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.spinner.message.warning\n }\n ansi256={\n colors.ansi256.theme.text.spinner.message.warning\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.message.warning\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.spinner.message.error\n }\n ansi256={\n colors.ansi256.theme.text.spinner.message.error\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.message.error\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.spinner.message.success\n }\n ansi256={\n colors.ansi256.theme.text.spinner.message.success\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.message.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.spinner.message.info\n }\n ansi256={\n colors.ansi256.theme.text.spinner.message.info\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.message.info\n }\n />\n )},\n help: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.spinner.message.help\n }\n ansi256={\n colors.ansi256.theme.text.spinner.message.help\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.message.help\n }\n />\n )}\n }\n }\n },\n border: {\n banner: {\n outline: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.outline.primary\n }\n ansi256={\n colors.ansi256.theme.border.banner.outline.primary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.outline.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.outline\n .secondary\n }\n ansi256={\n colors.ansi256.theme.border.banner.outline\n .secondary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.outline\n .secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.outline.tertiary\n }\n ansi256={\n colors.ansi256.theme.border.banner.outline\n .tertiary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.outline\n .tertiary\n }\n />\n )}\n },\n divider: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.divider.primary\n }\n ansi256={\n colors.ansi256.theme.border.banner.divider.primary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.divider.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.divider\n .secondary\n }\n ansi256={\n colors.ansi256.theme.border.banner.divider\n .secondary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.divider\n .secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.divider.tertiary\n }\n ansi256={\n colors.ansi256.theme.border.banner.divider\n .tertiary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.divider\n .tertiary\n }\n />\n )}\n }\n },\n app: {\n table: {\n primary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.border.app.table.primary}\n ansi256={\n colors.ansi256.theme.border.app.table.primary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.table.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.app.table.secondary\n }\n ansi256={\n colors.ansi256.theme.border.app.table.secondary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.table.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.border.app.table.tertiary}\n ansi256={\n colors.ansi256.theme.border.app.table.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.table.tertiary\n }\n />\n )}\n },\n divider: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.app.divider.primary\n }\n ansi256={\n colors.ansi256.theme.border.app.divider.primary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.divider.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.app.divider.secondary\n }\n ansi256={\n colors.ansi256.theme.border.app.divider.secondary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.divider.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.app.divider.tertiary\n }\n ansi256={\n colors.ansi256.theme.border.app.divider.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.divider.tertiary\n }\n />\n )}\n }\n },\n message: {\n outline: {\n help: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.help\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.help\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.success\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.success\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.info\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.info\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.debug\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.debug\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.warning\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.warning\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.danger\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.danger\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.error\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.error\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.error\n }\n />\n )}\n },\n divider: {\n help: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.help\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.help\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.success\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.success\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.info\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.info\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.debug\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.debug\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.warning\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.warning\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.danger\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.danger\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.error\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.error\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.error\n }\n />\n )}\n }\n }\n }\n }\n`}\n </>\n }\n />\n </>\n );\n}\n\n/**\n * A component to generate the `writeLine` function in the `shell-shock:console` builtin module.\n */\nexport function WriteLineFunctionDeclaration() {\n const theme = useTheme();\n\n return (\n <>\n <FunctionDeclaration\n name=\"adjustIndex\"\n parameters={[\n {\n name: \"line\",\n type: \"string\"\n },\n {\n name: \"index\",\n type: \"number\"\n }\n ]}\n returnType=\"number\">\n {code`let adjustedIndex = 0;\n\n const segments = line.match(/\\\\x1b\\\\[(\\\\d|;)+m.*\\\\x1b\\\\[(\\\\d|;)+m/gi);\n if (segments && segments.length > 0) {\n segments.reduce((count, matched) => {\n if (count < index) {\n const stripped = stripAnsi(matched);\n if (count + stripped.length < index) {\n count += stripped.length;\n adjustedIndex += matched.length;\n } else {\n adjustedIndex += index - count + (matched.slice(0, index - count).match(/\\\\x1b\\\\[(\\\\d|;)+m/g)?.join(\"\")?.length ?? 0);\n count = index;\n }\n }\n\n return count;\n }, 0);\n } else {\n adjustedIndex = index;\n }\n\n return adjustedIndex - (line.slice(0, adjustedIndex).match(/\\\\x1b\\\\[/g)?.length ?? 0); `}\n </FunctionDeclaration>\n <Spacing />\n <FunctionDeclaration\n name=\"breakLine\"\n parameters={[\n {\n name: \"line\",\n type: \"string\"\n },\n {\n name: \"index\",\n type: \"number\"\n }\n ]}\n returnType=\"[string, string]\">\n {code`const first = line.slice(0, index);\n const second = line.slice(index);\n\n // Match all ANSI escape sequences in the first string\n const ansiRegex = /[\\\\x1b\\\\u009b][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?(?:\\\\u0007))|(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))/g;\n\n const openCodes: string[] = [];\n const closeCodes: string[] = [];\n let match: RegExpExecArray | null;\n\n while ((match = ansiRegex.exec(first)) !== null) {\n const code = match[0];\n // Check if this is a reset/close code (e.g., \\\\x1b[0m, \\\\x1b[39m, \\\\x1b[49m, etc.)\n if (/\\\\x1b\\\\[(?:0|22|23|24|27|28|29|39|49)m/.test(code)) {\n // A close/reset code cancels the last open code\n openCodes.pop();\n closeCodes.pop();\n } else {\n openCodes.push(code);\n // Derive a close code: map SGR open codes to their reset counterparts\n const sgrMatch = code.match(/\\\\x1b\\\\[(\\\\d+)m/);\n if (sgrMatch) {\n const n = parseInt(sgrMatch[1]!, 10);\n let closeCode: string;\n if (n >= 30 && n <= 37) closeCode = \"\\\\x1b[39m\";\n else if (n >= 40 && n <= 47) closeCode = \"\\\\x1b[49m\";\n else if (n >= 90 && n <= 97) closeCode = \"\\\\x1b[39m\";\n else if (n >= 100 && n <= 107) closeCode = \"\\\\x1b[49m\";\n else if (n === 1) closeCode = \"\\\\x1b[22m\";\n else if (n === 2) closeCode = \"\\\\x1b[22m\";\n else if (n === 3) closeCode = \"\\\\x1b[23m\";\n else if (n === 4) closeCode = \"\\\\x1b[24m\";\n else if (n === 7) closeCode = \"\\\\x1b[27m\";\n else if (n === 8) closeCode = \"\\\\x1b[28m\";\n else if (n === 9) closeCode = \"\\\\x1b[29m\";\n else closeCode = \"\\\\x1b[0m\";\n closeCodes.push(closeCode);\n } else {\n closeCodes.push(\"\\\\x1b[0m\");\n }\n }\n }\n\n // Append close codes to the end of \"first\" (in reverse order)\n const closeSequence = closeCodes.slice().reverse().join(\"\");\n // Prepend open codes to the start of \"second\"\n const openSequence = openCodes.join(\"\");\n\n return [first.replace(/^\\\\s+/, \"\").replace(/\\\\s+$/, \"\") + closeSequence, openSequence + second.replace(/^\\\\s+/, \"\").replace(/\\\\s+$/, \"\")]; `}\n </FunctionDeclaration>\n <Spacing />\n <TSDoc heading=\"Split text into multiple lines based on a maximum length.\">\n <TSDocRemarks>\n {`This function splits the provided text into multiple lines based on the specified maximum length, ensuring that words are not broken in the middle.`}\n </TSDocRemarks>\n <hbr />\n <TSDocParam name=\"text\">\n {`The text to split into multiple lines.`}\n </TSDocParam>\n <TSDocParam name=\"maxLength\">\n {`The maximum length of each line.`}\n </TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n export\n name=\"splitText\"\n parameters={[\n {\n name: \"text\",\n type: \"string\"\n },\n {\n name: \"maxLength\",\n type: \"number | SizeToken\"\n }\n ]}>\n {code`\n let line = text;\n let result = [] as string[];\n\n const calculatedMaxLength = isSizeToken(maxLength) ? calculateWidth(maxLength) : maxLength;\n while (stripAnsi(line).length > calculatedMaxLength || line.indexOf(\"\\\\n\") !== -1) {\n if (line.indexOf(\"\\\\n\") !== -1) {\n result.push(...splitText(line.slice(0, line.indexOf(\"\\\\n\")).replace(/(\\\\r)?\\\\n/, \"\"), calculatedMaxLength));\n line = line.indexOf(\"\\\\n\") + 1 < line.length\n ? line.slice(line.indexOf(\"\\\\n\") + 1)\n : \"\";\n } else {\n const index = [\" \", \"/\", \".\", \",\", \"-\", \":\", \"|\", \"@\", \"+\"].reduce((ret, split) => {\n let current = ret;\n while (stripAnsi(line).indexOf(split, current + 1) !== -1 && stripAnsi(line).indexOf(split, current + 1) <= calculatedMaxLength) {\n current = line.indexOf(split, adjustIndex(line, current + 1));\n }\n\n return current;\n }, -1);\n if (index === -1) {\n break;\n }\n\n const lines = breakLine(line, index);\n result.push(lines[0]);\n line = lines[1];\n }\n }\n\n while (stripAnsi(line).length > calculatedMaxLength) {\n const lines = breakLine(line, calculatedMaxLength);\n result.push(lines[0]);\n line = lines[1];\n }\n\n result.push(line);\n return result;\n`}\n </FunctionDeclaration>\n <Spacing />\n <InterfaceDeclaration\n export\n name=\"WriteLineOptions\"\n doc=\"Options for writing a line to the console.\">\n <TSDoc heading=\"Padding to apply to the line\">\n <TSDocRemarks>\n {`The amount of padding (in spaces) to apply to the line when writing to the console. This value is applied to both the left and right sides of the line. If not specified, the default padding defined in the current theme configuration will be used.`}\n </TSDocRemarks>\n </TSDoc>\n <InterfaceMember name=\"padding\" optional type=\"number\" />\n <hbr />\n <TSDoc heading=\"Console function to use for writing the line\">\n <TSDocRemarks>\n {`The console function to use for writing the line. If not specified, the default console function \\`console.log\\` will be used.`}\n </TSDocRemarks>\n <hbr />\n <TSDocDefaultValue\n type={ReflectionKind.method}\n defaultValue={`\\`console.log\\``}\n />\n </TSDoc>\n <InterfaceMember\n name=\"consoleFn\"\n optional\n type=\"(text: string) => void\"\n />\n <hbr />\n <TSDoc heading=\"Color of the line text\">\n <TSDocRemarks>\n {`The color to apply to the line text when writing to the console. This can be one of the predefined color themes: \"primary\", \"secondary\", or \"tertiary\". If not specified, no specific coloring will be applied to the text (the default/system terminal text color will likely be used).`}\n </TSDocRemarks>\n <hbr />\n </TSDoc>\n <InterfaceMember\n name=\"color\"\n optional\n type='\"primary\" | \"secondary\" | \"tertiary\"'\n />\n </InterfaceDeclaration>\n <Spacing />\n <TSDoc heading=\"Write a line to the console.\">\n <TSDocRemarks>\n {`This function writes a line to the console, applying the appropriate padding as defined in the current theme configuration and wrapping as needed.`}\n </TSDocRemarks>\n <hbr />\n <TSDocParam name=\"text\">\n {`The line text to write to the console.`}\n </TSDocParam>\n <TSDocParam name=\"options\">{`The options to apply when writing the line to the console.`}</TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n export\n name=\"writeLine\"\n parameters={[\n {\n name: \"text\",\n type: \"string | number | boolean | null\",\n optional: true\n },\n {\n name: \"options\",\n type: \"WriteLineOptions\",\n default: \"{}\"\n }\n ]}>\n {code`const consoleFn = options.consoleFn ?? console.log;\n const color = options.color;\nif (text === undefined || text === null || text === \"\") {\n consoleFn(\"\");\n return;\n}\n\nconsoleFn(\\`\\${\" \".repeat(Math.max(options.padding ?? ${\n theme.padding.app\n }, 0))}\\${color ? colors.text.body[color](String(text)) : String(text)}\\`);\n`}\n </FunctionDeclaration>\n </>\n );\n}\n\nexport type MessageFunctionDeclarationProps = Partial<\n Pick<FunctionDeclarationProps, \"parameters\">\n> & {\n type:\n | \"success\"\n | \"help\"\n | \"info\"\n | \"debug\"\n | \"verbose\"\n | \"warn\"\n | \"danger\"\n | \"error\";\n variant: ThemeMessageVariant;\n color?: ThemeMessageVariant;\n consoleFnName: \"log\" | \"info\" | \"warn\" | \"error\" | \"debug\";\n description: string;\n prefix?: Children;\n timestamp?: boolean;\n};\n\n/**\n * A component to generate the message functions in the `shell-shock:console` builtin module.\n */\nexport function MessageFunctionDeclaration(\n props: MessageFunctionDeclarationProps\n) {\n const {\n type,\n variant,\n consoleFnName,\n description,\n prefix,\n parameters,\n timestamp,\n color = variant\n } = props;\n\n const theme = useTheme();\n\n return (\n <>\n <TSDoc\n heading={`Write ${getIndefiniteArticle(\n description\n )} ${description} message to the console.`}>\n <TSDocRemarks>\n {`This function initializes the Powerlines environment configuration object.`}\n </TSDocRemarks>\n <hbr />\n <TSDocParam name=\"message\">\n {`The message to write to the console.`}\n </TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n export\n name={type}\n parameters={\n parameters ?? [\n {\n name: \"message\",\n type: \"string\",\n optional: false\n }\n ]\n }>\n <Show when={Boolean(prefix)}>\n {prefix}\n <hbr />\n <hbr />\n </Show>\n {code`\n if (!message) {\n return;\n }\n\n ${\n !theme.labels.message.footer[variant] && timestamp\n ? `const timestamp = \\`\\${colors.text.message.footer.${\n color\n }(new Date().toLocaleDateString())} \\${colors.border.message.outline.${\n color\n }(\"${\n theme.borderStyles.message.outline[variant].bottom\n }\")} \\${colors.text.message.footer.${\n color\n }(new Date().toLocaleTimeString())}\\`; `\n : \"\"\n }\n\n writeLine(\"\");\n writeLine(colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].topLeft\n }\") + ${\n theme.labels.message.header[variant] ||\n theme.icons.message.header[variant]\n ? `colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].top\n }\".repeat(4)) + \" \" + ${\n theme.icons.message.header[variant]\n ? `colors.border.message.outline.${color}(\"${\n theme.icons.message.header[variant]\n }\") + \" \" +`\n : \"\"\n } colors.bold(colors.text.message.header.${color}(\"${\n theme.labels.message.header[variant]\n }\")) + \" \" + colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2 +\n theme.borderStyles.message.outline[variant].topLeft.length +\n 4 +\n (theme.icons.message.header[variant]\n ? 2 + (theme.labels.message.header[variant] ? 0 : 1)\n : 0) +\n (theme.labels.message.header[variant]\n ? theme.labels.message.header[variant].length + 2\n : 0) +\n theme.borderStyles.message.outline[variant].topRight.length\n }, 0)))`\n : `colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2 +\n theme.borderStyles.message.outline[variant].topLeft.length +\n theme.borderStyles.message.outline[variant].topRight.length\n }, 0)))`\n } + colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].topRight\n }\"), { consoleFn: console.${consoleFnName} });\n splitText(\n message,\n Math.max(process.stdout.columns - ${\n (Math.max(theme.padding.app, 0) +\n Math.max(theme.padding.message, 0)) *\n 2 +\n theme.borderStyles.message.outline[variant].left.length +\n theme.borderStyles.message.outline[variant].right.length\n }, 0)\n ).forEach((line) => {\n writeLine(colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].left +\n \" \".repeat(Math.max(theme.padding.message, 0))\n }\") + colors.text.message.description.${color}(line) + \" \".repeat(Math.max(process.stdout.columns - (stripAnsi(line).length + ${\n Math.max(theme.padding.app, 0) * 2 +\n Math.max(theme.padding.message, 0) +\n theme.borderStyles.message.outline[variant].left.length +\n theme.borderStyles.message.outline[variant].right.length\n }), 0)) + colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n });\n writeLine(colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].bottomLeft\n }\") + ${\n theme.labels.message.footer[variant] || timestamp\n ? `colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2 +\n 4 +\n (theme.labels.message.footer[variant]\n ? theme.labels.message.footer[variant].length + 2\n : 0) +\n theme.borderStyles.message.outline[variant].bottomLeft.length +\n theme.borderStyles.message.outline[variant].bottomRight.length\n }${\n !theme.labels.message.footer[variant] && timestamp\n ? \" - (stripAnsi(timestamp).length + 2)\"\n : \"\"\n }, 0))) + \" \" + ${`colors.bold(colors.text.message.footer.${color}(${\n theme.labels.message.footer[variant]\n ? `\"${theme.labels.message.footer[variant]}\"`\n : timestamp && \"timestamp\"\n }))`} + \" \" + colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].bottom\n }\".repeat(4))`\n : `colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2 +\n theme.borderStyles.message.outline[variant].bottomLeft.length +\n theme.borderStyles.message.outline[variant].bottomRight.length\n }, 0)))`\n } + colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].bottomRight\n }\"), { consoleFn: console.${consoleFnName} });\n`}\n </FunctionDeclaration>\n </>\n );\n}\n\n/**\n * A component to generate the `wrapAnsi` function in the `shell-shock:console` builtin module.\n */\nexport function WrapAnsiFunction() {\n return (\n <>\n <TSDoc heading=\"Applies ANSI escape codes to a string.\">\n <TSDocRemarks>\n {`Split text by /\\\\\\\\x1b[\\\\[|\\\\]][0-9;]*m/ and wrap non-ANSI parts with open/closeing tags.`}\n </TSDocRemarks>\n\n <TSDocExample>\n {`const result = wrapAnsi(\"Hello\\\\\\\\x1b[31mWorld\\\\\\\\x1b[0mAgain\", \"\\\\\\\\x1b[36m\", \"\\\\\\\\x1b[39\");\\nconsole.log(result); // \"\\\\\\\\x1b[36mHello\\\\\\\\x1b[39\\\\\\\\x1b[31mWorld\\\\\\\\x1b[0m\\\\\\\\x1b[36mAgain\\\\\\\\x1b[39\"`}\n </TSDocExample>\n\n <TSDocParam name=\"text\">\n {`The text to apply ANSI codes to.`}\n </TSDocParam>\n <TSDocParam name=\"open\">{`The opening ANSI code.`}</TSDocParam>\n <TSDocParam name=\"close\">{`The closing ANSI code.`}</TSDocParam>\n <TSDocReturns>{`The text with ANSI codes applied.`}</TSDocReturns>\n </TSDoc>\n <FunctionDeclaration\n name=\"wrapAnsi\"\n parameters={[\n {\n name: \"text\",\n type: \"string | number\",\n optional: false\n },\n {\n name: \"open\",\n type: \"string\",\n optional: false\n },\n { name: \"close\", type: \"string\", optional: false }\n ]}>\n {code`const str = String(text);\n const tokens = [] as string[];\n\n let last = 0;\n let match: RegExpExecArray | null;\n while ((match = /\\\\\\\\x1b[\\\\[|\\\\]][0-9;]*m/g.exec(str)) !== null) {\n if (match.index > last) tokens.push(str.slice(last, match.index));\n tokens.push(match[0]);\n last = match.index + match[0].length;\n }\n\n if (last < str.length) {\n tokens.push(str.slice(last));\n }\n\n let result = \"\";\n for (let i = 0; i < tokens.length; i++) {\n const seg = tokens[i]!;\n if (/^\\\\\\\\x1b[\\\\[|\\\\]][0-9;]*m$/.test(seg)) {\n result += seg;\n continue;\n }\n\n if (!seg) {\n continue;\n }\n\n result += i > 0 && /^\\\\\\\\x1b[\\\\[|\\\\]][0-9;]*m$/.test(tokens[i - 1]!) && i + 1 < tokens.length && /^\\\\\\\\x1b[\\\\[|\\\\]][0-9;]*m$/.test(tokens[i + 1]!)\n ? seg\n : \\`\\${open}\\${seg}\\${close}\\`;\n }\n\n return result;\n`}\n </FunctionDeclaration>\n </>\n );\n}\n\n/**\n * A component to generate the `stripAnsi` function in the `shell-shock:console` builtin module.\n */\nexport function StripAnsiFunctionDeclaration() {\n return (\n <>\n <TSDoc heading=\"Removes ANSI escape codes from a string.\">\n <TSDocExample>\n {`const result = stripAnsi(\"Hello\\\\\\\\x1b[31mWorld\\\\\\\\x1b[0mAgain\"); // \"HelloWorldAgain\"`}\n </TSDocExample>\n\n <TSDocParam name=\"text\">\n {`The text to strip ANSI codes from.`}\n </TSDocParam>\n <TSDocReturns>{`The text with ANSI codes removed.`}</TSDocReturns>\n </TSDoc>\n <FunctionDeclaration\n export\n name=\"stripAnsi\"\n parameters={[\n {\n name: \"text\",\n type: \"string | number\",\n optional: false\n }\n ]}>\n {code`return String(text).replace(new RegExp([\n String.raw\\`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)\\`,\n String.raw\\`(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))\\`\n ].join(\"|\"), \"g\"), \"\");`}\n </FunctionDeclaration>\n </>\n );\n}\n\n/**\n * A component to generate the `stripAnsi` function in the `shell-shock:console` builtin module.\n */\nexport function DividerFunctionDeclaration() {\n const theme = useTheme();\n\n return (\n <>\n <InterfaceDeclaration\n export\n name=\"DividerOptions\"\n doc=\"Options for formatting the divider line written to console.\">\n <InterfaceMember\n name=\"width\"\n optional\n type=\"number\"\n doc=\"The width of the divider line. If not specified, the divider will span the full width of the console, minus the padding.\"\n />\n <hbr />\n <TSDoc heading=\"The border of the divider line. Can be 'primary', 'secondary', 'tertiary', or 'none'. If not specified, the default border style will be used.\">\n <TSDocRemarks>\n {`The value provided will determine the border style and color based on the current theme configuration.`}\n </TSDocRemarks>\n <TSDocDefaultValue\n type={ReflectionKind.string}\n defaultValue=\"primary\"\n />\n </TSDoc>\n <InterfaceMember\n name=\"border\"\n optional\n type='\"primary\" | \"secondary\" | \"tertiary\"'\n doc=\"The border style/color of the divider line. Can be 'primary', 'secondary', 'tertiary', or 'none'. If not specified, the default border style will be used.\"\n />\n <hbr />\n <TSDoc heading=\"Padding to apply to the line\">\n <TSDocRemarks>\n {`The amount of padding (in spaces) to apply to the line when writing to the console. This value is applied to both the left and right sides of the line. If not specified, the default padding defined in the current theme configuration will be used.`}\n </TSDocRemarks>\n <TSDocDefaultValue\n type={ReflectionKind.number}\n defaultValue={theme.padding.app * 4}\n />\n </TSDoc>\n <InterfaceMember name=\"padding\" optional type=\"number\" />\n </InterfaceDeclaration>\n <Spacing />\n <TSDoc heading=\"Write a divider line to the console.\">\n <TSDocExample>\n {`divider({ width: 50, border: \"primary\" }); // Writes a divider line of width 50 with primary border.`}\n </TSDocExample>\n <TSDocParam name=\"options\">\n {`Options for formatting the divider line.`}\n </TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n export\n name=\"divider\"\n parameters={[\n {\n name: \"options\",\n type: \"DividerOptions\",\n optional: false\n }\n ]}>\n {code`const padding = options.padding ?? ${Math.max(theme.padding.app, 1) * 4};\n const width = options.width ?? (process.stdout.columns - (Math.max(padding, 0) * 2));\n const border = options.border === \"tertiary\" ? colors.border.app.divider.tertiary(\"${\n theme.borderStyles.app.divider.tertiary.top\n }\") : options.border === \"secondary\" ? colors.border.app.divider.secondary(\"${\n theme.borderStyles.app.divider.secondary.top\n }\") : colors.border.app.divider.primary(\"${\n theme.borderStyles.app.divider.primary.top\n }\");\n\n writeLine(\" \".repeat(Math.max(padding - ${theme.padding.app}, 0)) + border.repeat(Math.max(width / ${\n theme.borderStyles.app.divider.primary.top.length ?? 1\n }, 0)));\n `}\n </FunctionDeclaration>\n </>\n );\n}\n\n/**\n * A component to generate the `link` function in the `shell-shock:console` builtin module.\n */\nexport function LinkFunctionDeclaration() {\n return (\n <>\n <TSDoc heading=\"Render a hyperlink in the console.\">\n <TSDocParam name=\"url\">\n {`The URL to render as a hyperlink.`}\n </TSDocParam>\n <TSDocParam name=\"text\">\n {`The text to display for the link. If not provided, the URL will be used as the text.`}\n </TSDocParam>\n <TSDocReturns>{`The formatted hyperlink string.`}</TSDocReturns>\n </TSDoc>\n <FunctionDeclaration\n export\n name=\"link\"\n parameters={[\n {\n name: \"url\",\n type: \"string\",\n optional: false\n },\n { name: \"text\", type: \"string\", optional: true }\n ]}>\n <IfStatement condition={code`isHyperlinkSupported()`}>\n {code`return \\`\\\\x1b]8;;\\${url}\\\\u0007\\${text ?? url}\\\\x1b]8;;\\\\u0007\\`;`}\n </IfStatement>\n <hbr />\n <IfStatement condition={code`isColorSupported`}>\n {code`return colors.underline(colors.text.body.link(\\`$\\{text ?? url\\} $\\{url\\}\\`));`}\n </IfStatement>\n <hbr />\n {code`return \\`$\\{text ?? url\\} $\\{url\\}\\`;`}\n </FunctionDeclaration>\n </>\n );\n}\n\n/**\n * A component to generate the `spinner` function in the `shell-shock:console` builtin module.\n */\nexport function SpinnerFunctionDeclaration() {\n const theme = useTheme();\n\n return (\n <>\n <TypeDeclaration name=\"WriteStream\">\n {`NodeJS.WriteStream;`}\n </TypeDeclaration>\n <Spacing />\n <VarDeclaration\n const\n name=\"activeHooksPerStream\"\n initializer=\"new Set();\"\n />\n <Spacing />\n <InterfaceDeclaration\n export\n name=\"SpinnerOptions\"\n doc=\"Options for configuring the spinner.\">\n <InterfaceMember\n name=\"message\"\n optional\n type=\"string\"\n doc=\"The message text to display next to the spinner. Defaults to an empty string.\"\n />\n <hbr />\n <InterfaceMember\n name=\"stream\"\n optional\n type=\"WriteStream\"\n doc=\"The output stream to write the spinner to. Defaults to process.stderr.\"\n />\n <hbr />\n <InterfaceMember\n name=\"spinner\"\n optional\n type=\"ThemeSpinnerResolvedConfig | SpinnerPreset\"\n doc=\"The spinner animation to use. Should be an object with a 'frames' property (an array of strings representing each frame of the animation) and an 'interval' property (the time in milliseconds between each frame). If not specified, a default spinner animation will be used.\"\n />\n </InterfaceDeclaration>\n\n <Spacing />\n <ClassDeclaration name=\"Spinner\">\n <ClassField name=\"frames\" isPrivateMember type=\"string[]\" />\n <hbr />\n <ClassField name=\"interval\" isPrivateMember type=\"number\" />\n <hbr />\n <ClassField name=\"currentFrame\" isPrivateMember type=\"number\">\n {code`-1`}\n </ClassField>\n <hbr />\n <ClassField\n name=\"timer\"\n isPrivateMember\n optional\n type=\"NodeJS.Timeout\"\n />\n <hbr />\n <ClassField name=\"message\" isPrivateMember type=\"string\">\n {code`\"\"`}\n </ClassField>\n <hbr />\n <ClassField name=\"stream\" isPrivateMember type=\"WriteStream\">\n {code`process.stderr`}\n </ClassField>\n <hbr />\n <ClassField name=\"lines\" isPrivateMember type=\"number\">\n {code`0`}\n </ClassField>\n <hbr />\n <ClassField\n name=\"exitHandlerBound\"\n isPrivateMember\n type=\"(signal: any) => void\">\n {code`() => {}`}\n </ClassField>\n <hbr />\n <ClassField name=\"lastSpinnerFrameTime\" isPrivateMember type=\"number\">\n {code`0`}\n </ClassField>\n <hbr />\n <ClassField name=\"isSpinning\" isPrivateMember type=\"boolean\">\n {code`false`}\n </ClassField>\n <hbr />\n <ClassField\n name=\"hookedStreams\"\n isPrivateMember\n type='Map<WriteStream, { write?: WriteStream[\"write\"]; originalWrite: WriteStream[\"write\"]; hookedWrite: WriteStream[\"write\"] }>'>\n {code`new Map()`}\n </ClassField>\n <hbr />\n <ClassField name=\"isInternalWrite\" isPrivateMember type=\"boolean\">\n {code`false`}\n </ClassField>\n <hbr />\n <ClassField name=\"isDeferringRender\" isPrivateMember type=\"boolean\">\n {code`false`}\n </ClassField>\n <Spacing />\n {code`constructor(options: SpinnerOptions = {}) {\n const spinner = (typeof options.spinner === \"string\" ? resolveSpinner(options.spinner as SpinnerPreset) : options.spinner) ?? ${JSON.stringify(\n theme.spinner\n )};\n this.#frames = spinner.frames;\n this.#interval = spinner.interval;\n\n if (options.message) {\n this.#message = options.message;\n }\n if (options.stream) {\n this.#stream = options.stream;\n }\n\n this.#exitHandlerBound = this.#exitHandler.bind(this);\n }\n\n #internalWrite(action: () => unknown) {\n this.#isInternalWrite = true;\n try {\n return action();\n } finally {\n this.#isInternalWrite = false;\n }\n }\n\n #stringifyChunk(chunk: string | Uint8Array<ArrayBufferLike> | ArrayBufferLike) {\n if (chunk === undefined || chunk === null) {\n return \"\";\n }\n\n if (typeof chunk === \"string\") {\n return chunk;\n }\n\n if (Buffer.isBuffer(chunk) || ArrayBuffer.isView(chunk)) {\n return Buffer.from(chunk).toString(\"utf8\");\n }\n\n return String(chunk);\n }\n\n #withSynchronizedOutput(action: () => unknown) {\n if (!isInteractive) {\n return action();\n }\n\n try {\n this.#write(\"\\\\u001B[?2026h\");\n return action();\n } finally {\n this.#write(\"\\\\u001B[?2026l\");\n }\n }\n\n #hookStream(stream: WriteStream) {\n if (!stream || this.#hookedStreams.has(stream) || typeof stream.write !== \"function\") {\n return;\n }\n\n if (activeHooksPerStream.has(stream)) {\n return;\n }\n\n const originalWrite = stream.write;\n const hookedWrite = ((...writeArguments: Parameters<WriteStream[\"write\"]>) => this.#hookedWrite(stream, originalWrite, writeArguments)) as WriteStream[\"write\"];\n\n this.#hookedStreams.set(stream, {originalWrite, hookedWrite});\n activeHooksPerStream.add(stream);\n stream.write = hookedWrite;\n }\n\n #installHook() {\n if (!isInteractive || this.#hookedStreams.size > 0) {\n return;\n }\n\n const streamsToHook = new Set([this.#stream]);\n if (isInteractive && (this.#stream === process.stdout || this.#stream === process.stderr)) {\n streamsToHook.add(process.stdout);\n streamsToHook.add(process.stderr);\n }\n\n for (const stream of streamsToHook) {\n this.#hookStream(stream);\n }\n }\n\n #uninstallHook() {\n for (const [stream, hookInfo] of this.#hookedStreams) {\n if (stream.write === hookInfo.hookedWrite) {\n stream.write = hookInfo.originalWrite;\n }\n\n activeHooksPerStream.delete(stream);\n }\n\n this.#hookedStreams.clear();\n }\n\n #hookedWrite(stream: WriteStream, originalWrite: typeof stream.write, writeArguments: Parameters<typeof stream.write>) {\n const [chunk, callback] = writeArguments;\n\n if (this.#isInternalWrite || !this.isSpinning) {\n return originalWrite.call(stream, chunk);\n }\n\n if (this.#lines > 0) {\n this.clear();\n }\n\n const chunkString = this.#stringifyChunk(chunk);\n const chunkTerminatesLine = chunkString.at(-1) === \"\\\\n\";\n const writeResult = originalWrite.call(stream, chunk);\n\n if (chunkTerminatesLine) {\n this.#isDeferringRender = false;\n } else if (chunkString !== \"\") {\n this.#isDeferringRender = true;\n }\n\n if (this.isSpinning && !this.#isDeferringRender) {\n this.#render();\n }\n\n return writeResult;\n }\n\n #stopWithIcon(icon: string, message: string) {\n return this.stop(\\` \\${icon} \\${message ?? this.#message}\\`);\n }\n\n #render() {\n if (this.#isDeferringRender) {\n return;\n }\n\n if (this.#currentFrame === -1 || Date.now() - this.#lastSpinnerFrameTime >= this.#interval) {\n this.#currentFrame = ++this.#currentFrame % this.#frames.length;\n this.#lastSpinnerFrameTime = Date.now();\n }\n\n let display = \\`\\${colors.text.spinner.icon.active(this.#frames[this.#currentFrame])} \\${colors.text.spinner.message.active(this.#message)}\\`;\n if (!isInteractive) {\n display += \"\\\\n\";\n }\n\n if (isInteractive) {\n this.#withSynchronizedOutput(() => {\n this.clear();\n this.#write(display);\n });\n } else {\n this.#write(display);\n }\n\n if (isInteractive) {\n this.#lines = this.#lineCount(display);\n }\n }\n\n #write(message: string) {\n this.#internalWrite(() => {\n this.#stream.write(message);\n });\n }\n\n #lineCount(message: string) {\n const width = this.#stream.columns ?? 80;\n const lines = stripVTControlCharacters(message).split(\"\\\\n\");\n\n let lineCount = 0;\n for (const line of lines) {\n lineCount += Math.max(1, Math.ceil(line.length / width));\n }\n\n return lineCount;\n }\n\n #hideCursor() {\n if (isInteractive) {\n this.#write(\"\\\\u001B[?25l\");\n }\n }\n\n #showCursor() {\n if (isInteractive) {\n this.#write(\"\\\\u001B[?25h\");\n }\n }\n\n #subscribeToProcessEvents() {\n process.once(\"SIGINT\", this.#exitHandlerBound);\n process.once(\"SIGTERM\", this.#exitHandlerBound);\n }\n\n #unsubscribeFromProcessEvents() {\n process.off(\"SIGINT\", this.#exitHandlerBound);\n process.off(\"SIGTERM\", this.#exitHandlerBound);\n }\n\n #exitHandler(signal: any) {\n if (this.isSpinning) {\n this.stop();\n }\n\n process.exit(signal === \"SIGINT\" ? 130 : (signal === \"SIGTERM\" ? 143 : 1));\n } `}\n <ClassPropertyGet\n public\n name=\"isSpinning\"\n type=\"boolean\"\n doc=\"Whether the spinner is currently active and spinning.\">\n {code`return this.#isSpinning;`}\n </ClassPropertyGet>\n <Spacing />\n <ClassPropertySet\n public\n name=\"message\"\n type=\"string\"\n doc=\"Set the message displayed by the spinner.\">\n {code`this.#message = value;`}\n </ClassPropertySet>\n <Spacing />\n <ClassPropertyGet\n public\n name=\"message\"\n type=\"string\"\n doc=\"Get the message displayed by the spinner.\">\n {code`return this.#message;`}\n </ClassPropertyGet>\n <Spacing />\n <ClassMethod\n name=\"start\"\n doc=\"Start the spinner animation.\"\n parameters={[{ name: \"message\", type: \"string\" }]}>\n <IfStatement condition={code`message !== undefined`}>\n {code`this.#message = message;`}\n </IfStatement>\n <IfStatement condition={code`this.isSpinning`}>\n {code`return this;`}\n </IfStatement>\n {code`this.#isSpinning = true;\n this.#hideCursor();\n this.#installHook();\n this.#render();\n this.#subscribeToProcessEvents();\n\n if (isInteractive) {\n this.#timer = setInterval(() => {\n this.#render();\n }, this.#interval);\n }\n\n return this;\n `}\n </ClassMethod>\n <Spacing />\n <ClassMethod\n name=\"stop\"\n doc=\"Stop the spinner animation.\"\n parameters={[\n { name: \"finalMessage\", optional: true, type: \"string\" }\n ]}>\n {code`if (!this.isSpinning) {\n return this;\n }\n\n const shouldWriteNewline = this.#isDeferringRender;\n this.#isSpinning = false;\n if (this.#timer) {\n clearInterval(this.#timer);\n this.#timer = undefined;\n }\n\n this.#isDeferringRender = false;\n this.#uninstallHook();\n this.#showCursor();\n this.clear();\n this.#unsubscribeFromProcessEvents();\n\n if (finalMessage) {\n const prefix = shouldWriteNewline ? \"\\\\n\" : \"\";\n this.#stream.write(\\`\\${prefix}\\${finalMessage}\\\\n\\`);\n }\n\n return this;\n\n `}\n </ClassMethod>\n <Spacing />\n <ClassMethod name=\"clear\" doc=\"Clear the spinner animation.\">\n {code`if (!isInteractive) {\n return this;\n }\n\n if (this.#lines === 0) {\n return this;\n }\n\n this.#internalWrite(() => {\n this.#stream.cursorTo(0);\n\n for (let index = 0; index < this.#lines; index++) {\n if (index > 0) {\n this.#stream.moveCursor(0, -1);\n }\n\n this.#stream.clearLine(1);\n }\n });\n\n this.#lines = 0;\n return this; `}\n </ClassMethod>\n <Spacing />\n <ClassMethod\n name=\"success\"\n doc=\"Mark the spinner as successful.\"\n parameters={[{ name: \"message\", type: \"string\" }]}>\n {code`return this.#stopWithIcon(colors.text.spinner.icon.success(\"${\n theme.icons.spinner.success\n }\"), colors.text.spinner.message.success(message)); `}\n </ClassMethod>\n <Spacing />\n <ClassMethod\n name=\"error\"\n doc=\"Mark the spinner as failed.\"\n parameters={[{ name: \"message\", type: \"string\" }]}>\n {code`return this.#stopWithIcon(colors.text.spinner.icon.error(\"${\n theme.icons.spinner.error\n }\"), colors.text.spinner.message.error(message)); `}\n </ClassMethod>\n <Spacing />\n <ClassMethod\n name=\"warning\"\n doc=\"Mark the spinner as warning.\"\n parameters={[{ name: \"message\", type: \"string\" }]}>\n {code`return this.#stopWithIcon(colors.text.spinner.icon.warning(\"${\n theme.icons.spinner.warning\n }\"), colors.text.spinner.message.warning(message)); `}\n </ClassMethod>\n <Spacing />\n <ClassMethod\n name=\"info\"\n doc=\"Mark the spinner as informational.\"\n parameters={[{ name: \"message\", type: \"string\" }]}>\n {code`return this.#stopWithIcon(colors.text.spinner.icon.info(\"${\n theme.icons.spinner.info\n }\"), colors.text.spinner.message.info(message)); `}\n </ClassMethod>\n <Spacing />\n <ClassMethod\n name=\"help\"\n doc=\"Mark the spinner as help.\"\n parameters={[{ name: \"message\", type: \"string\" }]}>\n {code`return this.#stopWithIcon(colors.text.spinner.icon.help(\"${\n theme.icons.spinner.help\n }\"), colors.text.spinner.message.help(message)); `}\n </ClassMethod>\n <Spacing />\n </ClassDeclaration>\n <Spacing />\n <TSDoc heading=\"Render a spinner in the console.\">\n <TSDocParam name=\"options\">\n {`Options for configuring the spinner, including the message to display, the output stream to write to, and the spinner animation to use.`}\n </TSDocParam>\n <TSDocReturns>{`An instance of the Spinner class, which can be used to control the spinner animation (e.g., start, stop, mark as success/error, etc.).`}</TSDocReturns>\n </TSDoc>\n <FunctionDeclaration\n export\n name=\"createSpinner\"\n parameters={[\n {\n name: \"options\",\n type: \"SpinnerOptions\",\n optional: true\n }\n ]}>\n {code`return new Spinner(options);`}\n </FunctionDeclaration>\n </>\n );\n}\n\nfunction extractBorderOptionsObject(\n direction:\n | \"top\"\n | \"right\"\n | \"bottom\"\n | \"left\"\n | \"topLeft\"\n | \"topRight\"\n | \"bottomLeft\"\n | \"bottomRight\",\n theme: ThemeResolvedConfig\n): string {\n return `borderOptions.${\n direction\n } === \"primary\" ? colors.border.app.table.primary(\"${\n theme.borderStyles.app.table.primary[direction]\n }\") : borderOptions.${\n direction\n } === \"secondary\" ? colors.border.app.table.secondary(\"${\n theme.borderStyles.app.table.secondary[direction]\n }\") : borderOptions.${\n direction\n } === \"tertiary\" ? colors.border.app.table.tertiary(\"${\n theme.borderStyles.app.table.tertiary[direction]\n }\") : !borderOptions.${direction} || borderOptions.${\n direction\n } === \"none\" ? \"\" : borderOptions.${direction}`;\n}\n\nfunction extractBorderOptionsString(\n direction:\n | \"top\"\n | \"right\"\n | \"bottom\"\n | \"left\"\n | \"topLeft\"\n | \"topRight\"\n | \"bottomLeft\"\n | \"bottomRight\",\n theme: ThemeResolvedConfig\n): string {\n return `borderOptions === \"primary\" ? colors.border.app.table.primary(\"${\n theme.borderStyles.app.table.primary[direction]\n }\") : borderOptions === \"secondary\" ? colors.border.app.table.secondary(\"${\n theme.borderStyles.app.table.secondary[direction]\n }\") : borderOptions === \"tertiary\" ? colors.border.app.table.tertiary(\"${\n theme.borderStyles.app.table.tertiary[direction]\n }\") : !borderOptions || borderOptions === \"none\" ? \"\" : borderOptions`;\n}\n\n/**\n * Props for the TableFunctionDeclaration component.\n */\nexport type TableFunctionDeclarationProps = Omit<\n FunctionDeclarationProps,\n \"parameters\" | \"name\"\n>;\n\n/**\n * A component to generate the table functions in the `shell-shock:console` builtin module.\n */\nexport function TableFunctionDeclaration(props: TableFunctionDeclarationProps) {\n const theme = useTheme();\n\n return (\n <>\n <TypeDeclaration\n export\n name=\"SizeToken\"\n doc=\"A type representing the width size of an item in the console.\">\n {code`\"full\" | \"1/1\" | \"1/2\" | \"1/3\" | \"1/4\" | \"1/5\" | \"1/6\" | \"1/12\" | \"1/24\" | \"100%\" | \"50%\" | \"33.33%\" | \"25%\" | \"20%\" | \"10%\" | \"5%\" | \"2.5%\"`}\n </TypeDeclaration>\n <Spacing />\n <TSDoc heading=\"Determine if a value is a valid size token.\">\n <TSDocRemarks>\n {`This function checks if the provided value is a valid size token, which can be one of the predefined strings representing common width sizes (e.g., \"full\", \"1/2\", \"1/3\", etc.) or percentage strings (e.g., \"50%\").`}\n </TSDocRemarks>\n <TSDocParam name=\"value\">{`The value to check for being a valid size token.`}</TSDocParam>\n <TSDocReturns>{`True if the value is a valid size token, false otherwise.`}</TSDocReturns>\n </TSDoc>\n <FunctionDeclaration\n export\n doc=\"Determines if the provided value is a valid size token.\"\n name=\"isSizeToken\"\n parameters={[\n {\n name: \"value\",\n type: \"any\"\n }\n ]}\n returnType=\"value is SizeToken\">\n <IfStatement\n condition={code`[\"full\", \"1/1\", \"1/2\", \"1/3\", \"1/4\", \"1/5\", \"1/6\", \"1/12\", \"1/24\", \"100%\", \"50%\", \"33.33%\", \"25%\", \"20%\", \"10%\", \"5%\", \"2.5%\"].includes(value)`}>\n {code`return true; `}\n </IfStatement>\n {code`return false; `}\n </FunctionDeclaration>\n <Spacing />\n <TSDoc heading=\"Calculate the width in characters based on the provided width size.\">\n <TSDocRemarks>\n {`This function calculates the width in characters based on the provided width size, which can be a predefined string (e.g., \"full\", \"1/2\", \"1/3\", etc.) or a percentage string (e.g., \"50%\"). The calculation is based on the current width of the console (process.stdout.columns).`}\n </TSDocRemarks>\n <TSDocParam name=\"size\">\n {`The width size to calculate. This can be a predefined string (e.g., \"full\", \"1/2\", \"1/3\", etc.) or a percentage string (e.g., \"50%\").`}\n </TSDocParam>\n <TSDocReturns>{`The calculated width in characters.`}</TSDocReturns>\n </TSDoc>\n <FunctionDeclaration\n export\n name=\"calculateWidth\"\n parameters={[\n {\n name: \"size\",\n type: \"SizeToken\",\n optional: false\n }\n ]}\n returnType=\"number\">\n <IfStatement condition={code`[\"full\", \"100%\", \"1/1\"]. includes(size)`}>\n {code`return process.stdout.columns;`}\n </IfStatement>\n <ElseIfClause condition={code`[\"1/2\", \"50%\"].includes(size)`}>\n {code`return Math.round(process.stdout.columns / 2);`}\n </ElseIfClause>\n <ElseIfClause condition={code`[\"1/3\", \"33.33%\"].includes(size)`}>\n {code`return Math.round(process.stdout.columns / 3);`}\n </ElseIfClause>\n <ElseIfClause condition={code`[\"1/4\", \"25%\"].includes(size)`}>\n {code`return Math.round(process.stdout.columns / 4);`}\n </ElseIfClause>\n <ElseIfClause condition={code`[\"1/5\", \"20%\"].includes(size)`}>\n {code`return Math.round(process.stdout.columns / 5);`}\n </ElseIfClause>\n <ElseIfClause condition={code`[\"1/6\", \"10%\"].includes(size)`}>\n {code`return Math.round(process.stdout.columns / 6);`}\n </ElseIfClause>\n <ElseIfClause condition={code`[\"1/12\", \"5%\"].includes(size)`}>\n {code`return Math.round(process.stdout.columns / 12);`}\n </ElseIfClause>\n <ElseIfClause condition={code`[\"1/24\", \"2.5%\"].includes(size)`}>\n {code`return Math.round(process.stdout.columns / 24);`}\n </ElseIfClause>\n <ElseClause>\n {code`\n const match = size.match(/(\\\\d+(\\\\.\\\\d+)?)%/);\n if (match) {\n return Math.round((process.stdout.columns * parseFloat(match[1])) / 100);\n }\n\n throw new Error(\\`Invalid width size: \\${size}\\`);\n `}\n </ElseClause>\n <hbr />\n <hbr />\n </FunctionDeclaration>\n\n <TypeDeclaration\n export\n name=\"BorderOption\"\n doc=\"The border options applied to table cells.\">\n {code`\"primary\" | \"secondary\" | \"tertiary\" | \"none\" | string; `}\n </TypeDeclaration>\n <Spacing />\n <InterfaceDeclaration\n export\n name=\"TableOutputOptions\"\n doc=\"Options to customize the output of the {@link table} function.\">\n <TSDoc heading=\"Border variant for the table cell.\">\n <TSDocRemarks>\n {`The border variant to use for the table cell. This determines the color and style of the border around the cell.`}\n </TSDocRemarks>\n <hbr />\n <TSDocDefaultValue\n type={ReflectionKind.property}\n defaultValue=\"primary\"\n />\n </TSDoc>\n <InterfaceMember\n name=\"border\"\n optional\n type=\"BorderOption | { top?: BorderOption; right?: BorderOption; bottom?: BorderOption; left?: BorderOption; topLeft?: BorderOption; topRight?: BorderOption; bottomLeft?: BorderOption; bottomRight?: BorderOption; }\"\n />\n <hbr />\n <TSDoc heading=\"Padding for the table cell.\">\n <TSDocRemarks>\n {`The amount of padding (in spaces) to apply to the table cell. This value is applied to both the left and right sides of the cell. If not specified, the default table padding defined in the current theme configuration will be used.`}\n </TSDocRemarks>\n <hbr />\n <TSDocDefaultValue\n type={ReflectionKind.property}\n defaultValue={`\\`${theme.padding.table}\\``}\n />\n </TSDoc>\n <InterfaceMember name=\"padding\" optional type=\"number\" />\n <hbr />\n <TSDoc heading=\"Alignment for the table cell.\">\n <TSDocRemarks>\n {`The alignment for the table cell. This determines how the text within the cell is aligned. If not specified, the default alignment is \"left\".`}\n </TSDocRemarks>\n <hbr />\n <TSDocDefaultValue\n type={ReflectionKind.property}\n defaultValue=\"left\"\n />\n </TSDoc>\n <InterfaceMember\n name=\"align\"\n optional\n type='\"left\" | \"right\" | \"center\"'\n />\n <hbr />\n </InterfaceDeclaration>\n <Spacing />\n <InterfaceDeclaration\n export\n name=\"TableCellOptions\"\n extends=\"TableOutputOptions\"\n doc=\"Options for a specific table cell provided to the {@link table} function.\">\n <InterfaceMember\n name=\"value\"\n optional\n type=\"string\"\n doc=\"The actual string value of the table cell.\"\n />\n <hbr />\n <TSDoc heading=\"Width of the table cell.\">\n <TSDocRemarks>\n {`The width of the table cell (where 1 is a single character in the terminal). If not specified, the width will be determined based on the content of the cell and the available space in the console.`}\n </TSDocRemarks>\n </TSDoc>\n <InterfaceMember\n name=\"maxWidth\"\n type=\"number | SizeToken | undefined\"\n />\n <hbr />\n </InterfaceDeclaration>\n <Spacing />\n <InterfaceDeclaration\n export\n name=\"TableRowOptions\"\n extends=\"TableOutputOptions\"\n doc=\"Options for a specific table row provided to the {@link table} function.\">\n <InterfaceMember\n name=\"values\"\n optional\n type=\"(string | TableCellOptions)[]\"\n doc=\"The actual string values of the table row's cells.\"\n />\n <hbr />\n </InterfaceDeclaration>\n <Spacing />\n <InterfaceDeclaration\n export\n name=\"TableOptions\"\n extends=\"TableOutputOptions\"\n doc=\"Options for a specific table cell provided to the {@link table} function.\">\n <InterfaceMember\n name=\"values\"\n optional\n type=\"(string | TableCellOptions)[][]\"\n doc=\"The actual string values of the table's rows' cells.\"\n />\n <hbr />\n </InterfaceDeclaration>\n <Spacing />\n <InterfaceDeclaration\n name=\"Dimensions\"\n doc=\"The height and width for a specific table/cell used internally in the {@link table} function.\">\n <InterfaceMember\n name=\"height\"\n type=\"number\"\n doc=\"The height of the row/cell (where 1 is a single line in the terminal).\"\n />\n <hbr />\n <InterfaceMember\n name=\"width\"\n type=\"number\"\n doc=\"The width of the row/cell (where 1 is a single character in the terminal).\"\n />\n <hbr />\n </InterfaceDeclaration>\n <Spacing />\n <InterfaceDeclaration\n name=\"TableCellBorder\"\n doc=\"The resolved complete border styles for a table cell.\">\n <InterfaceMember\n name=\"top\"\n type=\"string\"\n doc=\"The top border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"bottom\"\n type=\"string\"\n doc=\"The bottom border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"right\"\n type=\"string\"\n doc=\"The right border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"left\"\n type=\"string\"\n doc=\"The left border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"topLeft\"\n type=\"string\"\n doc=\"The top-left border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"topRight\"\n type=\"string\"\n doc=\"The top-right border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"bottomLeft\"\n type=\"string\"\n doc=\"The bottom-left border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"bottomRight\"\n type=\"string\"\n doc=\"The bottom-right border style of the table cell.\"\n />\n <hbr />\n </InterfaceDeclaration>\n <Spacing />\n <TypeDeclaration\n name=\"TableCell\"\n doc=\"The internal state of a formatted table cell in the {@link table} function.\">\n {code`Required<Omit<TableCellOptions, \"maxWidth\" | \"border\">> & Dimensions & {\n border: TableCellBorder;\n maxWidth?: number;\n };\n `}\n </TypeDeclaration>\n <Spacing />\n <TSDoc heading=\"Write a table to the console.\">\n <TSDocRemarks>\n {`This function writes a table to the console, applying the appropriate padding as defined in the current theme configuration and wrapping as needed.`}\n </TSDocRemarks>\n <hbr />\n <TSDocParam name=\"options\">\n {`Options to customize the table output.`}\n </TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n export\n {...props}\n name=\"table\"\n parameters={[\n {\n name: \"options\",\n type: \"TableOptions | TableRowOptions[] | TableCellOptions[][] | string[] | string[][]\",\n optional: false\n }\n ]}>\n <IfStatement\n condition={code`!options ||\n (!Array.isArray(options) && (typeof options !== \"object\" || !options.values || !Array.isArray(options.values) || options.values.length === 0)) ||\n (Array.isArray(options) && !options.every(item => typeof item === \"object\" || typeof item === \"string\" || Array.isArray(item))) `}>\n {code`return;`}\n </IfStatement>\n <hbr />\n <hbr />\n <VarDeclaration\n let\n name=\"cells\"\n type={`TableCell[][]`}\n initializer={code`[];`}\n />\n <hbr />\n {code`\n const extractTableCell = (cell: string | TableCellOptions, columnIndex: number, rowLength: number, opts?: TableOutputOptions): TableCell => {\n if (typeof cell === \"string\") {\n const borderOptions = opts?.border || \"primary\";\n\n let border = {} as TableCellBorder;\n if (typeof borderOptions === \"object\") {\n border = {\n top: ${extractBorderOptionsObject(\"top\", theme)},\n bottom: ${extractBorderOptionsObject(\"bottom\", theme)},\n left: ${extractBorderOptionsObject(\"left\", theme)},\n right: ${extractBorderOptionsObject(\"right\", theme)},\n topLeft: ${extractBorderOptionsObject(\"topLeft\", theme)},\n topRight: ${extractBorderOptionsObject(\"topRight\", theme)},\n bottomLeft: ${extractBorderOptionsObject(\"bottomLeft\", theme)},\n bottomRight: ${extractBorderOptionsObject(\"bottomRight\", theme)},\n };\n } else {\n border.top = ${extractBorderOptionsString(\"top\", theme)};\n border.bottom = ${extractBorderOptionsString(\"bottom\", theme)};\n border.left = ${extractBorderOptionsString(\"left\", theme)};\n border.right = ${extractBorderOptionsString(\"right\", theme)};\n border.topLeft = ${extractBorderOptionsString(\"topLeft\", theme)};\n border.topRight = ${extractBorderOptionsString(\"topRight\", theme)};\n border.bottomLeft = ${extractBorderOptionsString(\"bottomLeft\", theme)};\n border.bottomRight = ${extractBorderOptionsString(\"bottomRight\", theme)};\n }\n\n const padding = Math.max(0, opts?.padding ?? ${theme.padding.table}) * (columnIndex === 0 || columnIndex === rowLength - 1 ? 2 : 1);\n const value = cell ?? \"\";\n const width = stripAnsi(value).length + padding * 2;\n\n return {\n value,\n height: 1,\n width,\n border,\n padding,\n align: opts?.align || \"left\",\n };\n } else {\n const borderOptions = cell.border || opts?.border || \"primary\";\n\n let border = {} as TableCellBorder;\n if (typeof borderOptions === \"object\") {\n border = {\n top: ${extractBorderOptionsObject(\"top\", theme)},\n bottom: ${extractBorderOptionsObject(\"bottom\", theme)},\n left: ${extractBorderOptionsObject(\"left\", theme)},\n right: ${extractBorderOptionsObject(\"right\", theme)},\n topLeft: ${extractBorderOptionsObject(\"topLeft\", theme)},\n topRight: ${extractBorderOptionsObject(\"topRight\", theme)},\n bottomLeft: ${extractBorderOptionsObject(\"bottomLeft\", theme)},\n bottomRight: ${extractBorderOptionsObject(\"bottomRight\", theme)},\n };\n } else {\n border.top = ${extractBorderOptionsString(\"top\", theme)};\n border.bottom = ${extractBorderOptionsString(\"bottom\", theme)};\n border.left = ${extractBorderOptionsString(\"left\", theme)};\n border.right = ${extractBorderOptionsString(\"right\", theme)};\n border.topLeft = ${extractBorderOptionsString(\"topLeft\", theme)};\n border.topRight = ${extractBorderOptionsString(\"topRight\", theme)};\n border.bottomLeft = ${extractBorderOptionsString(\"bottomLeft\", theme)};\n border.bottomRight = ${extractBorderOptionsString(\"bottomRight\", theme)};\n }\n\n const padding = Math.max(0, cell.padding ?? opts?.padding ?? ${\n theme.padding.table\n });\n const value = cell.value ?? \"\";\n const width = stripAnsi(value).length + padding * 2;\n const maxWidth = cell.maxWidth ? typeof cell.maxWidth === \"number\" ? cell.maxWidth : calculateWidth(cell.maxWidth) : undefined;\n\n return {\n value,\n height: 1,\n width,\n maxWidth,\n border,\n padding,\n align: cell.align || opts?.align || \"left\",\n };\n }\n };\n\n let colMaxWidths = [] as (number | undefined)[];\n `}\n <hbr />\n <IfStatement condition={code`Array.isArray(options)`}>\n <IfStatement\n condition={code`options.every(row => typeof row === \"string\" || (typeof row === \"object\" && !Array.isArray(row) && !(\"values\" in row)))`}>\n {code`cells.push(options.map((cell, index) => extractTableCell(cell as string | TableCellOptions, index, options.length)));`}\n </IfStatement>\n <ElseClause>\n {code`\n cells.push(\n ...options.map(row => Array.isArray(row)\n ? row.reduce((cellRow, cell, index) => {\n if (colMaxWidths.length <= index) {\n colMaxWidths.push(undefined);\n }\n const newCell = extractTableCell(cell, index, row.length);\n if (newCell.maxWidth && (!colMaxWidths[index] || newCell.maxWidth < colMaxWidths[index]!)) {\n colMaxWidths[index] = newCell.maxWidth;\n }\n cellRow.push(newCell);\n return cellRow;\n }, [] as TableCell[])\n : (row as TableRowOptions).values?.reduce((cellRow, cell, index) => {\n if (colMaxWidths.length <= index) {\n colMaxWidths.push(undefined);\n }\n const newCell = extractTableCell(cell, index, (row as TableRowOptions).values?.length ?? 1, row as TableRowOptions);\n if (newCell.maxWidth && (!colMaxWidths[index] || newCell.maxWidth < colMaxWidths[index]!)) {\n colMaxWidths[index] = newCell.maxWidth;\n }\n cellRow.push(newCell);\n return cellRow;\n }, [] as TableCell[]) ?? []\n )\n );\n `}\n </ElseClause>\n </IfStatement>\n <ElseClause>\n {code`\n cells.push(\n ...options.values!.map(row => Array.isArray(row)\n ? row.reduce((cellRow, cell, index) => {\n if (colMaxWidths.length <= index) {\n colMaxWidths.push(undefined);\n }\n const newCell = extractTableCell(cell, index, row.length);\n if (newCell.maxWidth && (!colMaxWidths[index] || newCell.maxWidth < colMaxWidths[index]!)) {\n colMaxWidths[index] = newCell.maxWidth;\n }\n cellRow.push(newCell);\n return cellRow;\n }, [] as TableCell[])\n : (row as TableRowOptions).values?.reduce((cellRow, cell, index) => {\n if (colMaxWidths.length <= index) {\n colMaxWidths.push(undefined);\n }\n const newCell = extractTableCell(cell, index, (row as TableRowOptions).values?.length ?? 1, options);\n if (newCell.maxWidth && (!colMaxWidths[index] || newCell.maxWidth < colMaxWidths[index]!)) {\n colMaxWidths[index] = newCell.maxWidth;\n }\n cellRow.push(newCell);\n return cellRow;\n }, [] as TableCell[]) ?? []\n )\n );\n\n `}\n </ElseClause>\n <hbr />\n {code`\ncells = cells.filter(row => row.length > 0);\nif (cells.length === 0) {\n return;\n}\n\ncells.forEach(row => row.forEach((cell, index) => {\n if (colMaxWidths[index] && cell.maxWidth !== colMaxWidths[index]!) {\n cell.maxWidth = colMaxWidths[index]!;\n }\n}));\n\n// Calculate table dimensions\nlet colWidths = [] as number[];\nlet rowDims = [] as Dimensions[];\n\nconst calculateRowDimensions = () => {\n colWidths = [];\n return cells.reduce((dims, row) => {\n dims.push(row.reduce((dim, cell, index) => {\n dim.width += cell.width;\n if (cell.height > dim.height) {\n dim.height = cell.height;\n }\n if (!colWidths[index] || cell.width > colWidths[index]!) {\n colWidths[index] = cell.width;\n }\n\n return dim;\n }, { width: 0, height: 0 } as Dimensions));\n\n return dims;\n }, [] as Dimensions[]);\n}\n\nlet recalculate!: boolean;\ndo {\n recalculate = false;\n rowDims = calculateRowDimensions();\n\n if (!recalculate && colWidths.some((colWidth, index) => colMaxWidths[index] && colWidth > colMaxWidths[index]!)) {\n (colWidths.map((colWidth, index) => colMaxWidths[index] && colWidth > colMaxWidths[index]! ? index : undefined).filter(colWidth => colWidth !== undefined) as number[]).forEach(index => {\n cells.forEach(row => {\n const cell = row[index]!;\n if (colMaxWidths[index] && cell.width > colMaxWidths[index]) {\n const lines = splitText(\n cell.value,\n colMaxWidths[index] - cell.padding * 2,\n );\n\n cell.value = lines.join(\"\\\\n\");\n cell.height = lines.length;\n cell.width = Math.max(...lines.map(line => stripAnsi(line).length)) + cell.padding * 2;\n\n recalculate = true;\n }\n });\n });\n }\n\n rowDims.forEach((row, rowIndex) => {\n if (!recalculate && row.width > Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2\n }, 0)) {\n const cell = cells[rowIndex]!.reduce((largestCell, cell) => {\n if (cell.width > largestCell.width) {\n return cell;\n }\n return largestCell;\n }, cells[rowIndex]![0]!);\n\n const lines = splitText(\n cell.value,\n Math.min(Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2\n } - (row.width - (cell.width - cell.padding * 2)), 0),\n cell.maxWidth ?? Number.POSITIVE_INFINITY)\n );\n\n cell.value = lines.join(\"\\\\n\");\n cell.height = lines.length;\n cell.width = Math.max(...lines.map(line => stripAnsi(line).length)) + cell.padding * 2;\n\n recalculate = true;\n }\n });\n\n if (!recalculate && colWidths.reduce((a, b) => a + b, 0) > Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2\n }, 0)) {\n let colIndex = 0;\n const cell = cells.reduce((ret, row) => {\n return row.reduce((largest, current, index) => {\n if (largest.width < current.width) {\n colIndex = index;\n return current;\n }\n return largest;\n }, ret);\n }, cells[0]![0]!);\n\n const lines = splitText(\n cell.value,\n Math.min(Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2\n } - (colWidths.filter((_, i) => i !== colIndex).reduce((a, b) => a + b, 0)) - cell.padding * 2, 0),\n cell.maxWidth ?? Number.POSITIVE_INFINITY)\n );\n\n cell.value = lines.join(\"\\\\n\");\n cell.height = lines.length;\n cell.width = Math.max(...lines.map(line => stripAnsi(line).length)) + cell.padding * 2;\n\n recalculate = true;\n }\n} while (recalculate);\n\n// Render table\ncells.forEach((row, rowIndex) => {\n const outputs = [] as string[][];\n row.forEach((cell, colIndex) => {\n const lines = cell.value.split(\"\\\\n\");\n while (lines.length < rowDims[rowIndex]!.height) {\n lines.push(\"\");\n }\n\n outputs.push(lines.map(line => {\n let paddedContent = \"\";\n switch (cell.align) {\n case \"right\":\n paddedContent = \" \".repeat(Math.max(colWidths[colIndex] - stripAnsi(line).length - cell.padding, 0)) + line + \" \".repeat(cell.padding);\n break;\n case \"center\":\n const leftPadding = Math.floor((colWidths[colIndex] - stripAnsi(line).length - cell.padding) / 2);\n const rightPadding = colWidths[colIndex] - stripAnsi(line).length - leftPadding;\n paddedContent = \" \".repeat(leftPadding) + line + \" \".repeat(rightPadding);\n break;\n case \"left\":\n default:\n paddedContent = \" \".repeat(cell.padding) + line + \" \".repeat(Math.max(colWidths[colIndex] - stripAnsi(line).length - cell.padding, 0));\n break;\n }\n\n if (colIndex === row.length - 1) {\n return cell.border.left + paddedContent + cell.border.right;\n } else {\n return cell.border.left + paddedContent;\n }\n }));\n });\n\n for (let index = 0; index < rowDims[rowIndex]!.height; index++) {\n writeLine(outputs.map(output => output[index] ?? \"\").join(\"\"));\n }\n});\n`}\n </FunctionDeclaration>\n </>\n );\n}\n\nexport type ConsoleBuiltinProps = Pick<\n BuiltinFileProps,\n \"children\" | \"imports\" | \"builtinImports\"\n>;\n\n/**\n * A built-in console utilities module for Shell Shock.\n */\nexport function ConsoleBuiltin(props: ConsoleBuiltinProps) {\n const { children, imports, builtinImports } = props;\n\n return (\n <BuiltinFile\n id=\"console\"\n description=\"A collection of helper utilities to assist in generating content meant for display in the console.\"\n imports={defu(imports, {\n \"@shell-shock/plugin-theme/types/theme\": [\n { name: \"ThemeColorsResolvedConfig\", type: true },\n { name: \"ThemeSpinnerResolvedConfig\", type: true }\n ],\n \"@shell-shock/plugin-theme/helpers/spinners\": [\n { name: \"SpinnerPreset\", type: true },\n { name: \"resolveSpinner\" }\n ],\n \"node:buffer\": [\"WithImplicitCoercion\"],\n \"node:util\": [\"stripVTControlCharacters\"]\n })}\n builtinImports={defu(builtinImports, {\n utils: [\n \"hasFlag\",\n \"isMinimal\",\n \"isInteractive\",\n \"isColorSupported\",\n \"colorSupportLevels\",\n \"isHyperlinkSupported\"\n ],\n env: [\"env\", \"isDevelopment\", \"isDebug\"]\n })}>\n <AnsiHelpersDeclarations />\n <Spacing />\n <StripAnsiFunctionDeclaration />\n <Spacing />\n <WrapAnsiFunction />\n <Spacing />\n <ColorsDeclaration />\n <Spacing />\n <WriteLineFunctionDeclaration />\n <Spacing />\n <LinkFunctionDeclaration />\n <Spacing />\n <DividerFunctionDeclaration />\n <Spacing />\n <SpinnerFunctionDeclaration />\n <Spacing />\n <MessageFunctionDeclaration\n type=\"help\"\n variant=\"help\"\n consoleFnName=\"log\"\n description=\"help\"\n />\n <Spacing />\n <MessageFunctionDeclaration\n type=\"success\"\n variant=\"success\"\n consoleFnName=\"info\"\n description=\"success\"\n />\n <Spacing />\n <MessageFunctionDeclaration\n type=\"info\"\n variant=\"info\"\n consoleFnName=\"info\"\n description=\"informational\"\n />\n <Spacing />\n <MessageFunctionDeclaration\n type=\"debug\"\n variant=\"debug\"\n consoleFnName=\"debug\"\n description=\"debug\"\n timestamp\n prefix={\n <IfStatement condition={<IsNotDebug />}>{code`return; `}</IfStatement>\n }\n />\n <Spacing />\n <MessageFunctionDeclaration\n type=\"verbose\"\n variant=\"info\"\n color=\"debug\"\n consoleFnName=\"debug\"\n description=\"verbose\"\n timestamp\n prefix={\n <IfStatement\n condition={<IsNotVerbose />}>{code`return; `}</IfStatement>\n }\n />\n <Spacing />\n <MessageFunctionDeclaration\n type=\"warn\"\n variant=\"warning\"\n consoleFnName=\"warn\"\n description=\"warning\"\n />\n <Spacing />\n <MessageFunctionDeclaration\n type=\"danger\"\n variant=\"danger\"\n consoleFnName=\"error\"\n description=\"destructive/danger\"\n />\n <Spacing />\n <MessageFunctionDeclaration\n type=\"error\"\n variant=\"error\"\n consoleFnName=\"error\"\n description=\"error\"\n timestamp\n parameters={[\n {\n name: \"err\",\n type: \"string | Error\",\n optional: false\n }\n ]}\n prefix={\n <>\n <VarDeclaration let name=\"message\" type=\"string | undefined\" />\n <Spacing />\n <IfStatement condition={code`(err as Error)?.message`}>\n {code`message = (err as Error).message;`}\n </IfStatement>\n <ElseClause>{code`message = String(err);`}</ElseClause>\n <Spacing />\n <IfStatement condition={code`env.STACKTRACE`}>\n <IfStatement condition={code`(err as Error)?.stack`}>\n {code`message += \" \\\\n\\\\n\" + ((err as Error).stack || \"\");`}\n </IfStatement>\n <ElseClause>{code`message += \" \\\\n\\\\n\" + ((new Error(\" \")).stack || \"\").split(\"\\\\n\").slice(2).map(line => line.trim()).join(\"\\\\n\");`}</ElseClause>\n </IfStatement>\n </>\n }\n />\n <Spacing />\n <TableFunctionDeclaration />\n <Spacing />\n {children}\n <Spacing />\n </BuiltinFile>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"console-builtin.mjs","names":["code","For","Show","ElseClause","ElseIfClause","FunctionDeclaration","IfStatement","InterfaceDeclaration","InterfaceMember","TypeDeclaration","VarDeclaration","ReflectionKind","Spacing","ClassDeclaration","ClassField","ClassMethod","ClassPropertyGet","ClassPropertySet","BuiltinFile","TSDoc","TSDocDefaultValue","TSDocExample","TSDocParam","TSDocRemarks","TSDocReturns","IsNotDebug","IsNotVerbose","useColors","useTheme","getIndefiniteArticle","defu","AnsiHelpersDeclarations","_$createComponent","name","doc","children","parameters","type","ColorFunction","ansi16","ansi256","ansi16m","open","close","ColorsDeclaration","colors","each","Object","keys","filter","color","idx","_$createIntrinsic","heading","initializer","comma","doubleHardline","enderPunctuation","theme","text","banner","header","primary","secondary","tertiary","footer","command","title","link","description","body","message","help","success","info","debug","warning","danger","error","usage","bin","dynamic","options","args","prompt","icon","active","submitted","cancelled","disabled","input","inactive","placeholder","spinner","border","outline","divider","app","table","WriteLineFunctionDeclaration","returnType","optional","method","defaultValue","default","padding","MessageFunctionDeclaration","props","variant","consoleFnName","prefix","timestamp","when","Boolean","_$memo","labels","borderStyles","bottom","topLeft","icons","top","Math","max","length","topRight","left","right","repeat","bottomLeft","bottomRight","WrapAnsiFunction","StripAnsiFunctionDeclaration","DividerFunctionDeclaration","string","number","LinkFunctionDeclaration","condition","SpinnerFunctionDeclaration","isPrivateMember","JSON","stringify","extractBorderOptionsObject","direction","extractBorderOptionsString","TableFunctionDeclaration","property","_$mergeProps","ConsoleBuiltin","imports","builtinImports","id","utils","env"],"sources":["../../src/components/console-builtin.tsx"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Shell Shock\n\n This code was released as part of the Shell Shock project. Shell Shock\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/shell-shock.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/shell-shock\n Documentation: https://docs.stormsoftware.com/projects/shell-shock\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport type { Children } from \"@alloy-js/core\";\nimport { code, For, Show } from \"@alloy-js/core\";\nimport type { FunctionDeclarationProps } from \"@alloy-js/typescript\";\nimport {\n ElseClause,\n ElseIfClause,\n FunctionDeclaration,\n IfStatement,\n InterfaceDeclaration,\n InterfaceMember,\n TypeDeclaration,\n VarDeclaration\n} from \"@alloy-js/typescript\";\nimport { ReflectionKind } from \"@powerlines/deepkit/vendor/type\";\nimport { Spacing } from \"@powerlines/plugin-alloy/core/components/spacing\";\nimport {\n ClassDeclaration,\n ClassField,\n ClassMethod,\n ClassPropertyGet,\n ClassPropertySet\n} from \"@powerlines/plugin-alloy/typescript\";\nimport type { BuiltinFileProps } from \"@powerlines/plugin-alloy/typescript/components/builtin-file\";\nimport { BuiltinFile } from \"@powerlines/plugin-alloy/typescript/components/builtin-file\";\nimport {\n TSDoc,\n TSDocDefaultValue,\n TSDocExample,\n TSDocParam,\n TSDocRemarks,\n TSDocReturns\n} from \"@powerlines/plugin-alloy/typescript/components/tsdoc\";\nimport { IsNotDebug, IsNotVerbose } from \"@shell-shock/core/components/helpers\";\nimport type {\n ThemeMessageVariant,\n ThemeResolvedConfig\n} from \"@shell-shock/plugin-theme\";\nimport { useColors, useTheme } from \"@shell-shock/plugin-theme/contexts/theme\";\nimport type {\n AnsiWrappers,\n BaseAnsiStylesKeys\n} from \"@shell-shock/plugin-theme/helpers/ansi-utils\";\nimport { getIndefiniteArticle } from \"@stryke/string-format/vowels\";\nimport { defu } from \"defu\";\n\nexport function AnsiHelpersDeclarations() {\n return (\n <>\n <VarDeclaration\n const\n export\n name=\"beep\"\n doc=\"The ASCII Bell character, which can be used to trigger a beep sound in the console.\">\n {code` \"\\\\u0007\"; `}\n </VarDeclaration>\n <Spacing />\n <VarDeclaration\n const\n export\n name=\"cursor\"\n doc=\"An object containing ANSI escape codes for controlling the console cursor.\">\n {code` {\n to(x: number, y?: number) {\n if (!y) {\n return \\`\\\\x1B[\\${x + 1}G\\`;\n }\n\n return \\`\\\\x1B[\\${y + 1};\\${x + 1}H\\`;\n },\n move(x: number, y: number) {\n let ret = '';\n\n if (x < 0) {\n ret += \\`\\\\x1B[\\${-x}D\\`;\n } else if (x > 0) {\n ret += \\`\\\\x1B[\\${x}C\\`;\n }\n\n if (y < 0) {\n ret += \\`\\\\x1B[\\${-y}A\\`;\n } else if (y > 0) {\n ret += \\`\\\\x1B[\\${y}B\\`;\n }\n\n return ret;\n },\n up: (count = 1) => \\`\\\\x1B[\\${count}A\\`,\n down: (count = 1) => \\`\\\\x1B[\\${count}B\\`,\n forward: (count = 1) => \\`\\\\x1B[\\${count}C\\`,\n backward: (count = 1) => \\`\\\\x1B[\\${count}D\\`,\n nextLine: (count = 1) => \"\\\\x1B[E\".repeat(count),\n prevLine: (count = 1) => \"\\\\x1B[F\".repeat(count),\n left: \"\\\\x1B[G\",\n hide: \"\\\\x1B[?25l\",\n show: \"\\\\x1B[?25h\",\n save: \"\\\\x1B7\",\n restore: \"\\\\x1B8\"\n } `}\n </VarDeclaration>\n <Spacing />\n <VarDeclaration\n const\n export\n name=\"erase\"\n doc=\"An object containing ANSI escape codes for erasing parts of the console.\">\n {code` {\n screen: \"\\\\x1B[2J\",\n up: (count = 1) => \"\\\\x1B[1J\".repeat(count),\n down: (count = 1) => \"\\\\x1B[J\".repeat(count),\n line: \"\\\\x1B[2K\",\n lineEnd: \"\\\\x1B[K\",\n lineStart: \"\\\\x1B[1K\",\n lines(count) {\n let lineClear = \"\";\n for (let i = 0; i < count; i++) {\n lineClear += this.line + (i < count - 1 ? cursor.up() : \"\");\n }\n\n if (count) {\n lineClear += cursor.left;\n }\n\n return lineClear;\n }\n } `}\n </VarDeclaration>\n <Spacing />\n <VarDeclaration\n const\n export\n name=\"scroll\"\n doc=\"An object containing ANSI escape codes for scrolling the console.\">\n {code` {\n up: (count = 1) => \"\\\\x1B[S\".repeat(count),\n down: (count = 1) => \"\\\\x1B[T\".repeat(count)\n } `}\n </VarDeclaration>\n <Spacing />\n <FunctionDeclaration\n export\n name=\"clear\"\n doc=\"A helper function to clear the console based on a count of lines\"\n parameters={[\n {\n name: \"current\",\n type: \"string\",\n doc: \"The current console output to be cleared\"\n },\n {\n name: \"consoleWidth\",\n type: \"number\",\n doc: \"The number of characters per line in the console\"\n }\n ]}>\n {code`if (!consoleWidth) {\n return erase.line + cursor.to(0);\n }\n\n let rows = 0;\n const lines = current.split(/\\\\r?\\\\n/);\n for (let line of lines) {\n rows += 1 + Math.floor(Math.max([...stripAnsi(line)].length - 1, 0) / consoleWidth);\n }\n\n return erase.lines(rows); `}\n </FunctionDeclaration>\n <Spacing />\n </>\n );\n}\n\n/**\n * A component to generate a console message function in a Shell Shock project.\n */\nfunction ColorFunction({\n ansi16,\n ansi256,\n ansi16m\n}: Record<\"ansi16\" | \"ansi256\" | \"ansi16m\", AnsiWrappers>) {\n return code` (text: string) => {\n try {\n if (!isColorSupported) {\n return String(text);\n }\n\n if (colorSupportLevels.stdout === 1) {\n return wrapAnsi(text, \"${ansi16.open}\", \"${ansi16.close}\");\n } else if (colorSupportLevels.stdout === 2) {\n return wrapAnsi(text, \"${ansi256.open}\", \"${ansi256.close}\");\n }\n\n return wrapAnsi(text, \"${ansi16m.open}\", \"${ansi16m.close}\");\n } catch {\n return String(text);\n }\n }\n`;\n}\n\n/**\n * A component to generate an object containing functions for coloring text in a Shell Shock project.\n */\nexport function ColorsDeclaration() {\n const colors = useColors();\n\n return (\n <>\n <TypeDeclaration\n export\n name=\"AnsiColor\"\n doc=\"The available ANSI colors for console text.\">\n <For\n each={Object.keys(colors.ansi16).filter(color => color !== \"theme\")}>\n {(color, idx) => `${idx > 0 ? \" | \" : \"\"}\"${color}\"`}\n </For>\n </TypeDeclaration>\n <Spacing />\n <hbr />\n {code`\n /**\n * A recursive type that defines theme colors for console text.\n *\n * @remarks\n * This type allows for nested theme color definitions, enabling complex theming structures for console applications.\n */\n export type ThemeColors<T> = T extends object ? { [K in keyof T]: ThemeColors<T[K]>; } : ((text: string) => string); `}\n <Spacing />\n <TypeDeclaration\n export\n name=\"Colors\"\n doc=\"An object containing functions for coloring console applications. Each function corresponds to a terminal color. See {@link AnsiColor} for available colors.\">\n {code`Record<AnsiColor, (text: string) => string> & ThemeColors<ThemeColorsResolvedConfig>`}\n </TypeDeclaration>\n <Spacing />\n <TSDoc heading=\"An object containing functions for coloring console applications. Each function corresponds to a terminal color. See {@link Colors} for available colors.\" />\n <VarDeclaration\n const\n export\n name=\"colors\"\n type=\"Colors\"\n initializer={\n <>\n {code` {\n `}\n <hbr />\n <For\n each={Object.keys(colors.ansi16).filter(\n color => color !== \"theme\"\n )}\n comma\n doubleHardline\n enderPunctuation>\n {color => (\n <>\n {code`${color}: `}\n <ColorFunction\n ansi16={colors.ansi16[color as BaseAnsiStylesKeys]}\n ansi256={colors.ansi256[color as BaseAnsiStylesKeys]}\n ansi16m={colors.ansi16m[color as BaseAnsiStylesKeys]}\n />\n </>\n )}\n </For>\n <hbr />\n {code`text: {\n banner: {\n header: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.header.primary\n }\n ansi256={\n colors.ansi256.theme.text.banner.header.primary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.header.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.header.secondary\n }\n ansi256={\n colors.ansi256.theme.text.banner.header.secondary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.header.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.header.tertiary\n }\n ansi256={\n colors.ansi256.theme.text.banner.header.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.header.tertiary\n }\n />\n )}\n },\n footer: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.footer.primary\n }\n ansi256={\n colors.ansi256.theme.text.banner.footer.primary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.footer.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.footer.secondary\n }\n ansi256={\n colors.ansi256.theme.text.banner.footer.secondary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.footer.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.footer.tertiary\n }\n ansi256={\n colors.ansi256.theme.text.banner.footer.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.footer.tertiary\n }\n />\n )}\n },\n command: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.command.primary\n }\n ansi256={\n colors.ansi256.theme.text.banner.command.primary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.command.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.command.secondary\n }\n ansi256={\n colors.ansi256.theme.text.banner.command.secondary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.command.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.command.tertiary\n }\n ansi256={\n colors.ansi256.theme.text.banner.command.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.command.tertiary\n }\n />\n )},\n },\n title: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.title.primary\n }\n ansi256={\n colors.ansi256.theme.text.banner.title.primary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.title.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.title.secondary\n }\n ansi256={\n colors.ansi256.theme.text.banner.title.secondary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.title.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.title.tertiary\n }\n ansi256={\n colors.ansi256.theme.text.banner.title.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.title.tertiary\n }\n />\n )},\n },\n link: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.link.primary\n }\n ansi256={\n colors.ansi256.theme.text.banner.link.primary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.link.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.link.secondary\n }\n ansi256={\n colors.ansi256.theme.text.banner.link.secondary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.link.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.link.tertiary\n }\n ansi256={\n colors.ansi256.theme.text.banner.link.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.link.tertiary\n }\n />\n )},\n },\n description: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.description\n .primary\n }\n ansi256={\n colors.ansi256.theme.text.banner.description\n .primary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.description\n .primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.description\n .secondary\n }\n ansi256={\n colors.ansi256.theme.text.banner.description\n .secondary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.description\n .secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.description\n .tertiary\n }\n ansi256={\n colors.ansi256.theme.text.banner.description\n .tertiary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.description\n .tertiary\n }\n />\n )},\n }\n },\n heading: {\n primary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.heading.primary}\n ansi256={colors.ansi256.theme.text.heading.primary}\n ansi16m={colors.ansi16m.theme.text.heading.primary}\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.heading.secondary}\n ansi256={colors.ansi256.theme.text.heading.secondary}\n ansi16m={colors.ansi16m.theme.text.heading.secondary}\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.heading.tertiary}\n ansi256={colors.ansi256.theme.text.heading.tertiary}\n ansi16m={colors.ansi16m.theme.text.heading.tertiary}\n />\n )},\n },\n body: {\n primary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.body.primary}\n ansi256={colors.ansi256.theme.text.body.primary}\n ansi16m={colors.ansi16m.theme.text.body.primary}\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.body.secondary}\n ansi256={colors.ansi256.theme.text.body.secondary}\n ansi16m={colors.ansi16m.theme.text.body.secondary}\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.body.tertiary}\n ansi256={colors.ansi256.theme.text.body.tertiary}\n ansi16m={colors.ansi16m.theme.text.body.tertiary}\n />\n )},\n link: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.body.link}\n ansi256={colors.ansi256.theme.text.body.link}\n ansi16m={colors.ansi16m.theme.text.body.link}\n />\n )}\n },\n message: {\n link: {\n help: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.message.link.help}\n ansi256={\n colors.ansi256.theme.text.message.link.help\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.link.success\n }\n ansi256={\n colors.ansi256.theme.text.message.link.success\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.message.link.info}\n ansi256={\n colors.ansi256.theme.text.message.link.info\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.message.link.debug}\n ansi256={\n colors.ansi256.theme.text.message.link.debug\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.link.warning\n }\n ansi256={\n colors.ansi256.theme.text.message.link.warning\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.link.danger\n }\n ansi256={\n colors.ansi256.theme.text.message.link.danger\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.message.link.error}\n ansi256={\n colors.ansi256.theme.text.message.link.error\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.error\n }\n />\n )}\n },\n header: {\n help: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.help\n }\n ansi256={\n colors.ansi256.theme.text.message.header.help\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.success\n }\n ansi256={\n colors.ansi256.theme.text.message.header.success\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.info\n }\n ansi256={\n colors.ansi256.theme.text.message.header.info\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.debug\n }\n ansi256={\n colors.ansi256.theme.text.message.header.debug\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.warning\n }\n ansi256={\n colors.ansi256.theme.text.message.header.warning\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.danger\n }\n ansi256={\n colors.ansi256.theme.text.message.header.danger\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.error\n }\n ansi256={\n colors.ansi256.theme.text.message.header.error\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.error\n }\n />\n )}\n },\n footer: {\n help: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.help\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.help\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.success\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.success\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.info\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.info\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.debug\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.debug\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.warning\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.warning\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.danger\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.danger\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.error\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.error\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.error\n }\n />\n )}\n },\n description: {\n help: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description.help\n }\n ansi256={\n colors.ansi256.theme.text.message.description.help\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description\n .success\n }\n ansi256={\n colors.ansi256.theme.text.message.description\n .success\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description\n .success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description.info\n }\n ansi256={\n colors.ansi256.theme.text.message.description.info\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description.debug\n }\n ansi256={\n colors.ansi256.theme.text.message.description\n .debug\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description\n .debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description\n .warning\n }\n ansi256={\n colors.ansi256.theme.text.message.description\n .warning\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description\n .warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description\n .danger\n }\n ansi256={\n colors.ansi256.theme.text.message.description\n .danger\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description\n .danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description.error\n }\n ansi256={\n colors.ansi256.theme.text.message.description\n .error\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description\n .error\n }\n />\n )}\n }\n },\n usage: {\n bin: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.bin}\n ansi256={colors.ansi256.theme.text.usage.bin}\n ansi16m={colors.ansi16m.theme.text.usage.bin}\n />\n )},\n command: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.command}\n ansi256={colors.ansi256.theme.text.usage.command}\n ansi16m={colors.ansi16m.theme.text.usage.command}\n />\n )},\n dynamic: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.dynamic}\n ansi256={colors.ansi256.theme.text.usage.dynamic}\n ansi16m={colors.ansi16m.theme.text.usage.dynamic}\n />\n )},\n options: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.options}\n ansi256={colors.ansi256.theme.text.usage.options}\n ansi16m={colors.ansi16m.theme.text.usage.options}\n />\n )},\n arguments: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.args}\n ansi256={colors.ansi256.theme.text.usage.args}\n ansi16m={colors.ansi16m.theme.text.usage.args}\n />\n )},\n description: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.description}\n ansi256={colors.ansi256.theme.text.usage.description}\n ansi16m={colors.ansi16m.theme.text.usage.description}\n />\n )}\n },\n prompt: {\n icon: {\n active: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.prompt.icon.active}\n ansi256={\n colors.ansi256.theme.text.prompt.icon.active\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.icon.active\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.icon.warning\n }\n ansi256={\n colors.ansi256.theme.text.prompt.icon.warning\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.icon.warning\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.prompt.icon.error}\n ansi256={\n colors.ansi256.theme.text.prompt.icon.error\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.icon.error\n }\n />\n )},\n submitted: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.icon.submitted\n }\n ansi256={\n colors.ansi256.theme.text.prompt.icon.submitted\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.icon.submitted\n }\n />\n )},\n cancelled: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.icon.cancelled\n }\n ansi256={\n colors.ansi256.theme.text.prompt.icon.cancelled\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.icon.cancelled\n }\n />\n )},\n disabled: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.icon.disabled\n }\n ansi256={\n colors.ansi256.theme.text.prompt.icon.disabled\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.icon.disabled\n }\n />\n )}\n },\n message: {\n active: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.message.active\n }\n ansi256={\n colors.ansi256.theme.text.prompt.message.active\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.message.active\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.message.warning\n }\n ansi256={\n colors.ansi256.theme.text.prompt.message.warning\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.message.warning\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.message.error\n }\n ansi256={\n colors.ansi256.theme.text.prompt.message.error\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.message.error\n }\n />\n )},\n submitted: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.message.submitted\n }\n ansi256={\n colors.ansi256.theme.text.prompt.message.submitted\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.message.submitted\n }\n />\n )},\n cancelled: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.message.cancelled\n }\n ansi256={\n colors.ansi256.theme.text.prompt.message.cancelled\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.message.cancelled\n }\n />\n )},\n disabled: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.message.disabled\n }\n ansi256={\n colors.ansi256.theme.text.prompt.message.disabled\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.message.disabled\n }\n />\n )}\n },\n input: {\n active: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.input.active\n }\n ansi256={\n colors.ansi256.theme.text.prompt.input.active\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.input.active\n }\n />\n )},\n inactive: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.input.inactive\n }\n ansi256={\n colors.ansi256.theme.text.prompt.input.inactive\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.input.inactive\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.input.warning\n }\n ansi256={\n colors.ansi256.theme.text.prompt.input.warning\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.input.warning\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.prompt.input.error}\n ansi256={\n colors.ansi256.theme.text.prompt.input.error\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.input.error\n }\n />\n )},\n submitted: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.input.submitted\n }\n ansi256={\n colors.ansi256.theme.text.prompt.input.submitted\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.input.submitted\n }\n />\n )},\n cancelled: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.input.cancelled\n }\n ansi256={\n colors.ansi256.theme.text.prompt.input.cancelled\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.input.cancelled\n }\n />\n )},\n disabled: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.input.disabled\n }\n ansi256={\n colors.ansi256.theme.text.prompt.input.disabled\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.input.disabled\n }\n />\n )},\n placeholder: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.input.placeholder\n }\n ansi256={\n colors.ansi256.theme.text.prompt.input.placeholder\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.input.placeholder\n }\n />\n )}\n },\n description: {\n active: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.description.active\n }\n ansi256={\n colors.ansi256.theme.text.prompt.description\n .active\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.description\n .active\n }\n />\n )},\n inactive: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.description\n .inactive\n }\n ansi256={\n colors.ansi256.theme.text.prompt.description\n .inactive\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.description\n .inactive\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.description\n .warning\n }\n ansi256={\n colors.ansi256.theme.text.prompt.description\n .warning\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.description\n .warning\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.description.error\n }\n ansi256={\n colors.ansi256.theme.text.prompt.description.error\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.description.error\n }\n />\n )},\n submitted: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.description\n .submitted\n }\n ansi256={\n colors.ansi256.theme.text.prompt.description\n .submitted\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.description\n .submitted\n }\n />\n )},\n cancelled: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.description\n .cancelled\n }\n ansi256={\n colors.ansi256.theme.text.prompt.description\n .cancelled\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.description\n .cancelled\n }\n />\n )},\n disabled: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.prompt.description\n .disabled\n }\n ansi256={\n colors.ansi256.theme.text.prompt.description\n .disabled\n }\n ansi16m={\n colors.ansi16m.theme.text.prompt.description\n .disabled\n }\n />\n )}\n }\n },\n spinner: {\n icon: {\n active: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.spinner.icon.active\n }\n ansi256={\n colors.ansi256.theme.text.spinner.icon.active\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.icon.active\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.spinner.icon.warning\n }\n ansi256={\n colors.ansi256.theme.text.spinner.icon.warning\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.icon.warning\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.spinner.icon.error}\n ansi256={\n colors.ansi256.theme.text.spinner.icon.error\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.icon.error\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.spinner.icon.success\n }\n ansi256={\n colors.ansi256.theme.text.spinner.icon.success\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.icon.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.spinner.icon.info}\n ansi256={\n colors.ansi256.theme.text.spinner.icon.info\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.icon.info\n }\n />\n )},\n help: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.spinner.icon.help}\n ansi256={\n colors.ansi256.theme.text.spinner.icon.help\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.icon.help\n }\n />\n )}\n },\n message: {\n active: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.spinner.message.active\n }\n ansi256={\n colors.ansi256.theme.text.spinner.message.active\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.message.active\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.spinner.message.warning\n }\n ansi256={\n colors.ansi256.theme.text.spinner.message.warning\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.message.warning\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.spinner.message.error\n }\n ansi256={\n colors.ansi256.theme.text.spinner.message.error\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.message.error\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.spinner.message.success\n }\n ansi256={\n colors.ansi256.theme.text.spinner.message.success\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.message.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.spinner.message.info\n }\n ansi256={\n colors.ansi256.theme.text.spinner.message.info\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.message.info\n }\n />\n )},\n help: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.spinner.message.help\n }\n ansi256={\n colors.ansi256.theme.text.spinner.message.help\n }\n ansi16m={\n colors.ansi16m.theme.text.spinner.message.help\n }\n />\n )}\n }\n }\n },\n border: {\n banner: {\n outline: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.outline.primary\n }\n ansi256={\n colors.ansi256.theme.border.banner.outline.primary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.outline.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.outline\n .secondary\n }\n ansi256={\n colors.ansi256.theme.border.banner.outline\n .secondary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.outline\n .secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.outline.tertiary\n }\n ansi256={\n colors.ansi256.theme.border.banner.outline\n .tertiary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.outline\n .tertiary\n }\n />\n )}\n },\n divider: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.divider.primary\n }\n ansi256={\n colors.ansi256.theme.border.banner.divider.primary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.divider.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.divider\n .secondary\n }\n ansi256={\n colors.ansi256.theme.border.banner.divider\n .secondary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.divider\n .secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.divider.tertiary\n }\n ansi256={\n colors.ansi256.theme.border.banner.divider\n .tertiary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.divider\n .tertiary\n }\n />\n )}\n }\n },\n app: {\n table: {\n primary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.border.app.table.primary}\n ansi256={\n colors.ansi256.theme.border.app.table.primary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.table.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.app.table.secondary\n }\n ansi256={\n colors.ansi256.theme.border.app.table.secondary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.table.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.border.app.table.tertiary}\n ansi256={\n colors.ansi256.theme.border.app.table.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.table.tertiary\n }\n />\n )}\n },\n divider: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.app.divider.primary\n }\n ansi256={\n colors.ansi256.theme.border.app.divider.primary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.divider.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.app.divider.secondary\n }\n ansi256={\n colors.ansi256.theme.border.app.divider.secondary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.divider.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.app.divider.tertiary\n }\n ansi256={\n colors.ansi256.theme.border.app.divider.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.divider.tertiary\n }\n />\n )}\n }\n },\n message: {\n outline: {\n help: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.help\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.help\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.success\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.success\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.info\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.info\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.debug\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.debug\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.warning\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.warning\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.danger\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.danger\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.error\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.error\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.error\n }\n />\n )}\n },\n divider: {\n help: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.help\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.help\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.success\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.success\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.info\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.info\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.debug\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.debug\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.warning\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.warning\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.danger\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.danger\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.error\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.error\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.error\n }\n />\n )}\n }\n }\n }\n }\n`}\n </>\n }\n />\n </>\n );\n}\n\n/**\n * A component to generate the `writeLine` function in the `shell-shock:console` builtin module.\n */\nexport function WriteLineFunctionDeclaration() {\n const theme = useTheme();\n\n return (\n <>\n <FunctionDeclaration\n name=\"adjustIndex\"\n parameters={[\n {\n name: \"line\",\n type: \"string\"\n },\n {\n name: \"index\",\n type: \"number\"\n }\n ]}\n returnType=\"number\">\n {code`let adjustedIndex = 0;\n\n const segments = line.match(/\\\\x1b\\\\[(\\\\d|;)+m.*\\\\x1b\\\\[(\\\\d|;)+m/gi);\n if (segments && segments.length > 0) {\n segments.reduce((count, matched) => {\n if (count < index) {\n const stripped = stripAnsi(matched);\n if (count + stripped.length < index) {\n count += stripped.length;\n adjustedIndex += matched.length;\n } else {\n adjustedIndex += index - count + (matched.slice(0, index - count).match(/\\\\x1b\\\\[(\\\\d|;)+m/g)?.join(\"\")?.length ?? 0);\n count = index;\n }\n }\n\n return count;\n }, 0);\n } else {\n adjustedIndex = index;\n }\n\n return adjustedIndex - (line.slice(0, adjustedIndex).match(/\\\\x1b\\\\[/g)?.length ?? 0); `}\n </FunctionDeclaration>\n <Spacing />\n <FunctionDeclaration\n name=\"breakLine\"\n parameters={[\n {\n name: \"line\",\n type: \"string\"\n },\n {\n name: \"index\",\n type: \"number\"\n }\n ]}\n returnType=\"[string, string]\">\n {code`const first = line.slice(0, index);\n const second = line.slice(index);\n\n // Match all ANSI escape sequences in the first string\n const ansiRegex = /[\\\\x1b\\\\u009b][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?(?:\\\\u0007))|(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))/g;\n\n const openCodes: string[] = [];\n const closeCodes: string[] = [];\n let match: RegExpExecArray | null;\n\n while ((match = ansiRegex.exec(first)) !== null) {\n const code = match[0];\n // Check if this is a reset/close code (e.g., \\\\x1b[0m, \\\\x1b[39m, \\\\x1b[49m, etc.)\n if (/\\\\x1b\\\\[(?:0|22|23|24|27|28|29|39|49)m/.test(code)) {\n // A close/reset code cancels the last open code\n openCodes.pop();\n closeCodes.pop();\n } else {\n openCodes.push(code);\n // Derive a close code: map SGR open codes to their reset counterparts\n const sgrMatch = code.match(/\\\\x1b\\\\[(\\\\d+)m/);\n if (sgrMatch) {\n const n = parseInt(sgrMatch[1]!, 10);\n let closeCode: string;\n if (n >= 30 && n <= 37) closeCode = \"\\\\x1b[39m\";\n else if (n >= 40 && n <= 47) closeCode = \"\\\\x1b[49m\";\n else if (n >= 90 && n <= 97) closeCode = \"\\\\x1b[39m\";\n else if (n >= 100 && n <= 107) closeCode = \"\\\\x1b[49m\";\n else if (n === 1) closeCode = \"\\\\x1b[22m\";\n else if (n === 2) closeCode = \"\\\\x1b[22m\";\n else if (n === 3) closeCode = \"\\\\x1b[23m\";\n else if (n === 4) closeCode = \"\\\\x1b[24m\";\n else if (n === 7) closeCode = \"\\\\x1b[27m\";\n else if (n === 8) closeCode = \"\\\\x1b[28m\";\n else if (n === 9) closeCode = \"\\\\x1b[29m\";\n else closeCode = \"\\\\x1b[0m\";\n closeCodes.push(closeCode);\n } else {\n closeCodes.push(\"\\\\x1b[0m\");\n }\n }\n }\n\n // Append close codes to the end of \"first\" (in reverse order)\n const closeSequence = closeCodes.slice().reverse().join(\"\");\n // Prepend open codes to the start of \"second\"\n const openSequence = openCodes.join(\"\");\n\n return [first.replace(/^\\\\s+/, \"\").replace(/\\\\s+$/, \"\") + closeSequence, openSequence + second.replace(/^\\\\s+/, \"\").replace(/\\\\s+$/, \"\")]; `}\n </FunctionDeclaration>\n <Spacing />\n <TSDoc heading=\"Split text into multiple lines based on a maximum length.\">\n <TSDocRemarks>\n {`This function splits the provided text into multiple lines based on the specified maximum length, ensuring that words are not broken in the middle.`}\n </TSDocRemarks>\n <hbr />\n <TSDocParam name=\"text\">\n {`The text to split into multiple lines.`}\n </TSDocParam>\n <TSDocParam name=\"maxLength\">\n {`The maximum length of each line.`}\n </TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n export\n name=\"splitText\"\n parameters={[\n {\n name: \"text\",\n type: \"string\"\n },\n {\n name: \"maxLength\",\n type: \"number | SizeToken\"\n }\n ]}>\n {code`\n let line = text;\n let result = [] as string[];\n\n const calculatedMaxLength = isSizeToken(maxLength) ? calculateWidth(maxLength) : maxLength;\n while (stripAnsi(line).length > calculatedMaxLength || line.indexOf(\"\\\\n\") !== -1) {\n if (line.indexOf(\"\\\\n\") !== -1) {\n result.push(...splitText(line.slice(0, line.indexOf(\"\\\\n\")).replace(/(\\\\r)?\\\\n/, \"\"), calculatedMaxLength));\n line = line.indexOf(\"\\\\n\") + 1 < line.length\n ? line.slice(line.indexOf(\"\\\\n\") + 1)\n : \"\";\n } else {\n const index = [\" \", \"/\", \".\", \",\", \"-\", \":\", \"|\", \"@\", \"+\"].reduce((ret, split) => {\n let current = ret;\n while (stripAnsi(line).indexOf(split, current + 1) !== -1 && stripAnsi(line).indexOf(split, current + 1) <= calculatedMaxLength) {\n current = line.indexOf(split, adjustIndex(line, current + 1));\n }\n\n return current;\n }, -1);\n if (index === -1) {\n break;\n }\n\n const lines = breakLine(line, index);\n result.push(lines[0]);\n line = lines[1];\n }\n }\n\n while (stripAnsi(line).length > calculatedMaxLength) {\n const lines = breakLine(line, calculatedMaxLength);\n result.push(lines[0]);\n line = lines[1];\n }\n\n result.push(line);\n return result;\n`}\n </FunctionDeclaration>\n <Spacing />\n <InterfaceDeclaration\n export\n name=\"WriteLineOptions\"\n doc=\"Options for writing a line to the console.\">\n <TSDoc heading=\"Padding to apply to the line\">\n <TSDocRemarks>\n {`The amount of padding (in spaces) to apply to the line when writing to the console. This value is applied to both the left and right sides of the line. If not specified, the default padding defined in the current theme configuration will be used.`}\n </TSDocRemarks>\n </TSDoc>\n <InterfaceMember name=\"padding\" optional type=\"number\" />\n <hbr />\n <TSDoc heading=\"Console function to use for writing the line\">\n <TSDocRemarks>\n {`The console function to use for writing the line. If not specified, the default console function \\`console.log\\` will be used.`}\n </TSDocRemarks>\n <hbr />\n <TSDocDefaultValue\n type={ReflectionKind.method}\n defaultValue={`\\`console.log\\``}\n />\n </TSDoc>\n <InterfaceMember\n name=\"consoleFn\"\n optional\n type=\"(text: string) => void\"\n />\n <hbr />\n <TSDoc heading=\"Color of the line text\">\n <TSDocRemarks>\n {`The color to apply to the line text when writing to the console. This can be one of the predefined color themes: \"primary\", \"secondary\", or \"tertiary\". If not specified, no specific coloring will be applied to the text (the default/system terminal text color will likely be used).`}\n </TSDocRemarks>\n <hbr />\n </TSDoc>\n <InterfaceMember\n name=\"color\"\n optional\n type='\"primary\" | \"secondary\" | \"tertiary\"'\n />\n </InterfaceDeclaration>\n <Spacing />\n <TSDoc heading=\"Write a line to the console.\">\n <TSDocRemarks>\n {`This function writes a line to the console, applying the appropriate padding as defined in the current theme configuration and wrapping as needed.`}\n </TSDocRemarks>\n <hbr />\n <TSDocParam name=\"text\">\n {`The line text to write to the console.`}\n </TSDocParam>\n <TSDocParam name=\"options\">{`The options to apply when writing the line to the console.`}</TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n export\n name=\"writeLine\"\n parameters={[\n {\n name: \"text\",\n type: \"string | number | boolean | null\",\n optional: true\n },\n {\n name: \"options\",\n type: \"WriteLineOptions\",\n default: \"{}\"\n }\n ]}>\n {code`const consoleFn = options.consoleFn ?? console.log;\n const color = options.color;\nif (text === undefined || text === null || text === \"\") {\n consoleFn(\"\");\n return;\n}\n\nconsoleFn(\\`\\${\" \".repeat(Math.max(options.padding ?? ${\n theme.padding.app\n }, 0))}\\${color ? colors.text.body[color](String(text)) : String(text)}\\`);\n`}\n </FunctionDeclaration>\n </>\n );\n}\n\nexport type MessageFunctionDeclarationProps = Partial<\n Pick<FunctionDeclarationProps, \"parameters\">\n> & {\n type:\n | \"success\"\n | \"help\"\n | \"info\"\n | \"debug\"\n | \"verbose\"\n | \"warn\"\n | \"danger\"\n | \"error\";\n variant: ThemeMessageVariant;\n color?: ThemeMessageVariant;\n consoleFnName: \"log\" | \"info\" | \"warn\" | \"error\" | \"debug\";\n description: string;\n prefix?: Children;\n timestamp?: boolean;\n};\n\n/**\n * A component to generate the message functions in the `shell-shock:console` builtin module.\n */\nexport function MessageFunctionDeclaration(\n props: MessageFunctionDeclarationProps\n) {\n const {\n type,\n variant,\n consoleFnName,\n description,\n prefix,\n parameters,\n timestamp,\n color = variant\n } = props;\n\n const theme = useTheme();\n\n return (\n <>\n <TSDoc\n heading={`Write ${getIndefiniteArticle(\n description\n )} ${description} message to the console.`}>\n <TSDocRemarks>\n {`This function initializes the Powerlines environment configuration object.`}\n </TSDocRemarks>\n <hbr />\n <TSDocParam name=\"message\">\n {`The message to write to the console.`}\n </TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n export\n name={type}\n parameters={\n parameters ?? [\n {\n name: \"message\",\n type: \"string\",\n optional: false\n }\n ]\n }>\n <Show when={Boolean(prefix)}>\n {prefix}\n <hbr />\n <hbr />\n </Show>\n {code`\n if (!message) {\n return;\n }\n\n ${\n !theme.labels.message.footer[variant] && timestamp\n ? `const timestamp = \\`\\${colors.text.message.footer.${\n color\n }(new Date().toLocaleDateString())} \\${colors.border.message.outline.${\n color\n }(\"${\n theme.borderStyles.message.outline[variant].bottom\n }\")} \\${colors.text.message.footer.${\n color\n }(new Date().toLocaleTimeString())}\\`; `\n : \"\"\n }\n\n writeLine(\"\");\n writeLine(colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].topLeft\n }\") + ${\n theme.labels.message.header[variant] ||\n theme.icons.message.header[variant]\n ? `colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].top\n }\".repeat(4)) + \" \" + ${\n theme.icons.message.header[variant]\n ? `colors.border.message.outline.${color}(\"${\n theme.icons.message.header[variant]\n }\") + \" \" +`\n : \"\"\n } colors.bold(colors.text.message.header.${color}(\"${\n theme.labels.message.header[variant]\n }\")) + \" \" + colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2 +\n theme.borderStyles.message.outline[variant].topLeft.length +\n 4 +\n (theme.icons.message.header[variant]\n ? 2 + (theme.labels.message.header[variant] ? 0 : 1)\n : 0) +\n (theme.labels.message.header[variant]\n ? theme.labels.message.header[variant].length + 2\n : 0) +\n theme.borderStyles.message.outline[variant].topRight.length\n }, 0)))`\n : `colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2 +\n theme.borderStyles.message.outline[variant].topLeft.length +\n theme.borderStyles.message.outline[variant].topRight.length\n }, 0)))`\n } + colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].topRight\n }\"), { consoleFn: console.${consoleFnName} });\n splitText(\n message,\n Math.max(process.stdout.columns - ${\n (Math.max(theme.padding.app, 0) +\n Math.max(theme.padding.message, 0)) *\n 2 +\n theme.borderStyles.message.outline[variant].left.length +\n theme.borderStyles.message.outline[variant].right.length\n }, 0)\n ).forEach((line) => {\n writeLine(colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].left +\n \" \".repeat(Math.max(theme.padding.message, 0))\n }\") + colors.text.message.description.${color}(line) + \" \".repeat(Math.max(process.stdout.columns - (stripAnsi(line).length + ${\n Math.max(theme.padding.app, 0) * 2 +\n Math.max(theme.padding.message, 0) +\n theme.borderStyles.message.outline[variant].left.length +\n theme.borderStyles.message.outline[variant].right.length\n }), 0)) + colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n });\n writeLine(colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].bottomLeft\n }\") + ${\n theme.labels.message.footer[variant] || timestamp\n ? `colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2 +\n 4 +\n (theme.labels.message.footer[variant]\n ? theme.labels.message.footer[variant].length + 2\n : 0) +\n theme.borderStyles.message.outline[variant].bottomLeft.length +\n theme.borderStyles.message.outline[variant].bottomRight.length\n }${\n !theme.labels.message.footer[variant] && timestamp\n ? \" - (stripAnsi(timestamp).length + 2)\"\n : \"\"\n }, 0))) + \" \" + ${`colors.bold(colors.text.message.footer.${color}(${\n theme.labels.message.footer[variant]\n ? `\"${theme.labels.message.footer[variant]}\"`\n : timestamp && \"timestamp\"\n }))`} + \" \" + colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].bottom\n }\".repeat(4))`\n : `colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2 +\n theme.borderStyles.message.outline[variant].bottomLeft.length +\n theme.borderStyles.message.outline[variant].bottomRight.length\n }, 0)))`\n } + colors.border.message.outline.${color}(\"${\n theme.borderStyles.message.outline[variant].bottomRight\n }\"), { consoleFn: console.${consoleFnName} });\n`}\n </FunctionDeclaration>\n </>\n );\n}\n\n/**\n * A component to generate the `wrapAnsi` function in the `shell-shock:console` builtin module.\n */\nexport function WrapAnsiFunction() {\n return (\n <>\n <TSDoc heading=\"Applies ANSI escape codes to a string.\">\n <TSDocRemarks>\n {`Split text by /\\\\\\\\x1b[\\\\[|\\\\]][0-9;]*m/ and wrap non-ANSI parts with open/closing tags.`}\n </TSDocRemarks>\n\n <TSDocExample>\n {`const result = wrapAnsi(\"Hello\\\\\\\\x1b[31mWorld\\\\\\\\x1b[0mAgain\", \"\\\\\\\\x1b[36m\", \"\\\\\\\\x1b[39\");\\nconsole.log(result); // \"\\\\\\\\x1b[36mHello\\\\\\\\x1b[39\\\\\\\\x1b[31mWorld\\\\\\\\x1b[0m\\\\\\\\x1b[36mAgain\\\\\\\\x1b[39\"`}\n </TSDocExample>\n\n <TSDocParam name=\"text\">\n {`The text to apply ANSI codes to.`}\n </TSDocParam>\n <TSDocParam name=\"open\">{`The opening ANSI code.`}</TSDocParam>\n <TSDocParam name=\"close\">{`The closing ANSI code.`}</TSDocParam>\n <TSDocReturns>{`The text with ANSI codes applied.`}</TSDocReturns>\n </TSDoc>\n <FunctionDeclaration\n name=\"wrapAnsi\"\n parameters={[\n {\n name: \"text\",\n type: \"string | number\",\n optional: false\n },\n {\n name: \"open\",\n type: \"string\",\n optional: false\n },\n { name: \"close\", type: \"string\", optional: false }\n ]}>\n {code`const str = String(text);\n const tokens = [] as string[];\n\n let last = 0;\n let match: RegExpExecArray | null;\n while ((match = /\\\\\\\\x1b[\\\\[|\\\\]][0-9;]*m/g.exec(str)) !== null) {\n if (match.index > last) tokens.push(str.slice(last, match.index));\n tokens.push(match[0]);\n last = match.index + match[0].length;\n }\n\n if (last < str.length) {\n tokens.push(str.slice(last));\n }\n\n let result = \"\";\n for (let i = 0; i < tokens.length; i++) {\n const seg = tokens[i]!;\n if (/^\\\\\\\\x1b[\\\\[|\\\\]][0-9;]*m$/.test(seg)) {\n result += seg;\n continue;\n }\n\n if (!seg) {\n continue;\n }\n\n result += i > 0 && /^\\\\\\\\x1b[\\\\[|\\\\]][0-9;]*m$/.test(tokens[i - 1]!) && i + 1 < tokens.length && /^\\\\\\\\x1b[\\\\[|\\\\]][0-9;]*m$/.test(tokens[i + 1]!)\n ? seg\n : \\`\\${open}\\${seg}\\${close}\\`;\n }\n\n return result;\n`}\n </FunctionDeclaration>\n </>\n );\n}\n\n/**\n * A component to generate the `stripAnsi` function in the `shell-shock:console` builtin module.\n */\nexport function StripAnsiFunctionDeclaration() {\n return (\n <>\n <TSDoc heading=\"Removes ANSI escape codes from a string.\">\n <TSDocExample>\n {`const result = stripAnsi(\"Hello\\\\\\\\x1b[31mWorld\\\\\\\\x1b[0mAgain\"); // \"HelloWorldAgain\"`}\n </TSDocExample>\n\n <TSDocParam name=\"text\">\n {`The text to strip ANSI codes from.`}\n </TSDocParam>\n <TSDocReturns>{`The text with ANSI codes removed.`}</TSDocReturns>\n </TSDoc>\n <FunctionDeclaration\n export\n name=\"stripAnsi\"\n parameters={[\n {\n name: \"text\",\n type: \"string | number\",\n optional: false\n }\n ]}>\n {code`return String(text).replace(new RegExp([\n String.raw\\`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)\\`,\n String.raw\\`(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))\\`\n ].join(\"|\"), \"g\"), \"\");`}\n </FunctionDeclaration>\n </>\n );\n}\n\n/**\n * A component to generate the `stripAnsi` function in the `shell-shock:console` builtin module.\n */\nexport function DividerFunctionDeclaration() {\n const theme = useTheme();\n\n return (\n <>\n <InterfaceDeclaration\n export\n name=\"DividerOptions\"\n doc=\"Options for formatting the divider line written to console.\">\n <InterfaceMember\n name=\"width\"\n optional\n type=\"number\"\n doc=\"The width of the divider line. If not specified, the divider will span the full width of the console, minus the padding.\"\n />\n <hbr />\n <TSDoc heading=\"The border of the divider line. Can be 'primary', 'secondary', 'tertiary', or 'none'. If not specified, the default border style will be used.\">\n <TSDocRemarks>\n {`The value provided will determine the border style and color based on the current theme configuration.`}\n </TSDocRemarks>\n <TSDocDefaultValue\n type={ReflectionKind.string}\n defaultValue=\"primary\"\n />\n </TSDoc>\n <InterfaceMember\n name=\"border\"\n optional\n type='\"primary\" | \"secondary\" | \"tertiary\"'\n doc=\"The border style/color of the divider line. Can be 'primary', 'secondary', 'tertiary', or 'none'. If not specified, the default border style will be used.\"\n />\n <hbr />\n <TSDoc heading=\"Padding to apply to the line\">\n <TSDocRemarks>\n {`The amount of padding (in spaces) to apply to the line when writing to the console. This value is applied to both the left and right sides of the line. If not specified, the default padding defined in the current theme configuration will be used.`}\n </TSDocRemarks>\n <TSDocDefaultValue\n type={ReflectionKind.number}\n defaultValue={theme.padding.app * 4}\n />\n </TSDoc>\n <InterfaceMember name=\"padding\" optional type=\"number\" />\n </InterfaceDeclaration>\n <Spacing />\n <TSDoc heading=\"Write a divider line to the console.\">\n <TSDocExample>\n {`divider({ width: 50, border: \"primary\" }); // Writes a divider line of width 50 with primary border.`}\n </TSDocExample>\n <TSDocParam name=\"options\">\n {`Options for formatting the divider line.`}\n </TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n export\n name=\"divider\"\n parameters={[\n {\n name: \"options\",\n type: \"DividerOptions\",\n optional: false\n }\n ]}>\n {code`const padding = options.padding ?? ${Math.max(theme.padding.app, 1) * 4};\n const width = options.width ?? (process.stdout.columns - (Math.max(padding, 0) * 2));\n const border = options.border === \"tertiary\" ? colors.border.app.divider.tertiary(\"${\n theme.borderStyles.app.divider.tertiary.top\n }\") : options.border === \"secondary\" ? colors.border.app.divider.secondary(\"${\n theme.borderStyles.app.divider.secondary.top\n }\") : colors.border.app.divider.primary(\"${\n theme.borderStyles.app.divider.primary.top\n }\");\n\n writeLine(\" \".repeat(Math.max(padding - ${theme.padding.app}, 0)) + border.repeat(Math.max(width / ${\n theme.borderStyles.app.divider.primary.top.length ?? 1\n }, 0)));\n `}\n </FunctionDeclaration>\n </>\n );\n}\n\n/**\n * A component to generate the `link` function in the `shell-shock:console` builtin module.\n */\nexport function LinkFunctionDeclaration() {\n return (\n <>\n <TSDoc heading=\"Render a hyperlink in the console.\">\n <TSDocParam name=\"url\">\n {`The URL to render as a hyperlink.`}\n </TSDocParam>\n <TSDocParam name=\"text\">\n {`The text to display for the link. If not provided, the URL will be used as the text.`}\n </TSDocParam>\n <TSDocReturns>{`The formatted hyperlink string.`}</TSDocReturns>\n </TSDoc>\n <FunctionDeclaration\n export\n name=\"link\"\n parameters={[\n {\n name: \"url\",\n type: \"string\",\n optional: false\n },\n { name: \"text\", type: \"string\", optional: true }\n ]}>\n <IfStatement condition={code`isHyperlinkSupported()`}>\n {code`return \\`\\\\x1b]8;;\\${url}\\\\u0007\\${text ?? url}\\\\x1b]8;;\\\\u0007\\`;`}\n </IfStatement>\n <hbr />\n <IfStatement condition={code`isColorSupported`}>\n {code`return colors.underline(colors.text.body.link(\\`$\\{text ?? url\\} $\\{url\\}\\`));`}\n </IfStatement>\n <hbr />\n {code`return \\`$\\{text ?? url\\} $\\{url\\}\\`;`}\n </FunctionDeclaration>\n </>\n );\n}\n\n/**\n * A component to generate the `spinner` function in the `shell-shock:console` builtin module.\n */\nexport function SpinnerFunctionDeclaration() {\n const theme = useTheme();\n\n return (\n <>\n <TypeDeclaration name=\"WriteStream\">\n {`NodeJS.WriteStream;`}\n </TypeDeclaration>\n <Spacing />\n <VarDeclaration\n const\n name=\"activeHooksPerStream\"\n initializer=\"new Set();\"\n />\n <Spacing />\n <InterfaceDeclaration\n export\n name=\"SpinnerOptions\"\n doc=\"Options for configuring the spinner.\">\n <InterfaceMember\n name=\"message\"\n optional\n type=\"string\"\n doc=\"The message text to display next to the spinner. Defaults to an empty string.\"\n />\n <hbr />\n <InterfaceMember\n name=\"stream\"\n optional\n type=\"WriteStream\"\n doc=\"The output stream to write the spinner to. Defaults to process.stderr.\"\n />\n <hbr />\n <InterfaceMember\n name=\"spinner\"\n optional\n type=\"ThemeSpinnerResolvedConfig | SpinnerPreset\"\n doc=\"The spinner animation to use. Should be an object with a 'frames' property (an array of strings representing each frame of the animation) and an 'interval' property (the time in milliseconds between each frame). If not specified, a default spinner animation will be used.\"\n />\n </InterfaceDeclaration>\n\n <Spacing />\n <ClassDeclaration name=\"Spinner\">\n <ClassField name=\"frames\" isPrivateMember type=\"string[]\" />\n <hbr />\n <ClassField name=\"interval\" isPrivateMember type=\"number\" />\n <hbr />\n <ClassField name=\"currentFrame\" isPrivateMember type=\"number\">\n {code`-1`}\n </ClassField>\n <hbr />\n <ClassField\n name=\"timer\"\n isPrivateMember\n optional\n type=\"NodeJS.Timeout\"\n />\n <hbr />\n <ClassField name=\"message\" isPrivateMember type=\"string\">\n {code`\"\"`}\n </ClassField>\n <hbr />\n <ClassField name=\"stream\" isPrivateMember type=\"WriteStream\">\n {code`process.stderr`}\n </ClassField>\n <hbr />\n <ClassField name=\"lines\" isPrivateMember type=\"number\">\n {code`0`}\n </ClassField>\n <hbr />\n <ClassField\n name=\"exitHandlerBound\"\n isPrivateMember\n type=\"(signal: any) => void\">\n {code`() => {}`}\n </ClassField>\n <hbr />\n <ClassField name=\"lastSpinnerFrameTime\" isPrivateMember type=\"number\">\n {code`0`}\n </ClassField>\n <hbr />\n <ClassField name=\"isSpinning\" isPrivateMember type=\"boolean\">\n {code`false`}\n </ClassField>\n <hbr />\n <ClassField\n name=\"hookedStreams\"\n isPrivateMember\n type='Map<WriteStream, { write?: WriteStream[\"write\"]; originalWrite: WriteStream[\"write\"]; hookedWrite: WriteStream[\"write\"] }>'>\n {code`new Map()`}\n </ClassField>\n <hbr />\n <ClassField name=\"isInternalWrite\" isPrivateMember type=\"boolean\">\n {code`false`}\n </ClassField>\n <hbr />\n <ClassField name=\"isDeferringRender\" isPrivateMember type=\"boolean\">\n {code`false`}\n </ClassField>\n <Spacing />\n {code`constructor(options: SpinnerOptions = {}) {\n const spinner = (typeof options.spinner === \"string\" ? resolveSpinner(options.spinner as SpinnerPreset) : options.spinner) ?? ${JSON.stringify(\n theme.spinner\n )};\n this.#frames = spinner.frames;\n this.#interval = spinner.interval;\n\n if (options.message) {\n this.#message = options.message;\n }\n if (options.stream) {\n this.#stream = options.stream;\n }\n\n this.#exitHandlerBound = this.#exitHandler.bind(this);\n }\n\n #internalWrite(action: () => unknown) {\n this.#isInternalWrite = true;\n try {\n return action();\n } finally {\n this.#isInternalWrite = false;\n }\n }\n\n #stringifyChunk(chunk: string | Uint8Array<ArrayBufferLike> | ArrayBufferLike) {\n if (chunk === undefined || chunk === null) {\n return \"\";\n }\n\n if (typeof chunk === \"string\") {\n return chunk;\n }\n\n if (Buffer.isBuffer(chunk) || ArrayBuffer.isView(chunk)) {\n return Buffer.from(chunk).toString(\"utf8\");\n }\n\n return String(chunk);\n }\n\n #withSynchronizedOutput(action: () => unknown) {\n if (!isInteractive) {\n return action();\n }\n\n try {\n this.#write(\"\\\\u001B[?2026h\");\n return action();\n } finally {\n this.#write(\"\\\\u001B[?2026l\");\n }\n }\n\n #hookStream(stream: WriteStream) {\n if (!stream || this.#hookedStreams.has(stream) || typeof stream.write !== \"function\") {\n return;\n }\n\n if (activeHooksPerStream.has(stream)) {\n return;\n }\n\n const originalWrite = stream.write;\n const hookedWrite = ((...writeArguments: Parameters<WriteStream[\"write\"]>) => this.#hookedWrite(stream, originalWrite, writeArguments)) as WriteStream[\"write\"];\n\n this.#hookedStreams.set(stream, {originalWrite, hookedWrite});\n activeHooksPerStream.add(stream);\n stream.write = hookedWrite;\n }\n\n #installHook() {\n if (!isInteractive || this.#hookedStreams.size > 0) {\n return;\n }\n\n const streamsToHook = new Set([this.#stream]);\n if (isInteractive && (this.#stream === process.stdout || this.#stream === process.stderr)) {\n streamsToHook.add(process.stdout);\n streamsToHook.add(process.stderr);\n }\n\n for (const stream of streamsToHook) {\n this.#hookStream(stream);\n }\n }\n\n #uninstallHook() {\n for (const [stream, hookInfo] of this.#hookedStreams) {\n if (stream.write === hookInfo.hookedWrite) {\n stream.write = hookInfo.originalWrite;\n }\n\n activeHooksPerStream.delete(stream);\n }\n\n this.#hookedStreams.clear();\n }\n\n #hookedWrite(stream: WriteStream, originalWrite: typeof stream.write, writeArguments: Parameters<typeof stream.write>) {\n const [chunk, callback] = writeArguments;\n\n if (this.#isInternalWrite || !this.isSpinning) {\n return originalWrite.call(stream, chunk);\n }\n\n if (this.#lines > 0) {\n this.clear();\n }\n\n const chunkString = this.#stringifyChunk(chunk);\n const chunkTerminatesLine = chunkString.at(-1) === \"\\\\n\";\n const writeResult = originalWrite.call(stream, chunk);\n\n if (chunkTerminatesLine) {\n this.#isDeferringRender = false;\n } else if (chunkString !== \"\") {\n this.#isDeferringRender = true;\n }\n\n if (this.isSpinning && !this.#isDeferringRender) {\n this.#render();\n }\n\n return writeResult;\n }\n\n #stopWithIcon(icon: string, message: string) {\n return this.stop(\\` \\${icon} \\${message ?? this.#message}\\`);\n }\n\n #render() {\n if (this.#isDeferringRender) {\n return;\n }\n\n if (this.#currentFrame === -1 || Date.now() - this.#lastSpinnerFrameTime >= this.#interval) {\n this.#currentFrame = ++this.#currentFrame % this.#frames.length;\n this.#lastSpinnerFrameTime = Date.now();\n }\n\n let display = \\`\\${colors.text.spinner.icon.active(this.#frames[this.#currentFrame])} \\${colors.text.spinner.message.active(this.#message)}\\`;\n if (!isInteractive) {\n display += \"\\\\n\";\n }\n\n if (isInteractive) {\n this.#withSynchronizedOutput(() => {\n this.clear();\n this.#write(display);\n });\n } else {\n this.#write(display);\n }\n\n if (isInteractive) {\n this.#lines = this.#lineCount(display);\n }\n }\n\n #write(message: string) {\n this.#internalWrite(() => {\n this.#stream.write(message);\n });\n }\n\n #lineCount(message: string) {\n const width = this.#stream.columns ?? 80;\n const lines = stripVTControlCharacters(message).split(\"\\\\n\");\n\n let lineCount = 0;\n for (const line of lines) {\n lineCount += Math.max(1, Math.ceil(line.length / width));\n }\n\n return lineCount;\n }\n\n #hideCursor() {\n if (isInteractive) {\n this.#write(\"\\\\u001B[?25l\");\n }\n }\n\n #showCursor() {\n if (isInteractive) {\n this.#write(\"\\\\u001B[?25h\");\n }\n }\n\n #subscribeToProcessEvents() {\n process.once(\"SIGINT\", this.#exitHandlerBound);\n process.once(\"SIGTERM\", this.#exitHandlerBound);\n }\n\n #unsubscribeFromProcessEvents() {\n process.off(\"SIGINT\", this.#exitHandlerBound);\n process.off(\"SIGTERM\", this.#exitHandlerBound);\n }\n\n #exitHandler(signal: any) {\n if (this.isSpinning) {\n this.stop();\n }\n\n process.exit(signal === \"SIGINT\" ? 130 : (signal === \"SIGTERM\" ? 143 : 1));\n } `}\n <ClassPropertyGet\n public\n name=\"isSpinning\"\n type=\"boolean\"\n doc=\"Whether the spinner is currently active and spinning.\">\n {code`return this.#isSpinning;`}\n </ClassPropertyGet>\n <Spacing />\n <ClassPropertySet\n public\n name=\"message\"\n type=\"string\"\n doc=\"Set the message displayed by the spinner.\">\n {code`this.#message = value;`}\n </ClassPropertySet>\n <Spacing />\n <ClassPropertyGet\n public\n name=\"message\"\n type=\"string\"\n doc=\"Get the message displayed by the spinner.\">\n {code`return this.#message;`}\n </ClassPropertyGet>\n <Spacing />\n <ClassMethod\n name=\"start\"\n doc=\"Start the spinner animation.\"\n parameters={[{ name: \"message\", type: \"string\" }]}>\n <IfStatement condition={code`message !== undefined`}>\n {code`this.#message = message;`}\n </IfStatement>\n <IfStatement condition={code`this.isSpinning`}>\n {code`return this;`}\n </IfStatement>\n {code`this.#isSpinning = true;\n this.#hideCursor();\n this.#installHook();\n this.#render();\n this.#subscribeToProcessEvents();\n\n if (isInteractive) {\n this.#timer = setInterval(() => {\n this.#render();\n }, this.#interval);\n }\n\n return this;\n `}\n </ClassMethod>\n <Spacing />\n <ClassMethod\n name=\"stop\"\n doc=\"Stop the spinner animation.\"\n parameters={[\n { name: \"finalMessage\", optional: true, type: \"string\" }\n ]}>\n {code`if (!this.isSpinning) {\n return this;\n }\n\n const shouldWriteNewline = this.#isDeferringRender;\n this.#isSpinning = false;\n if (this.#timer) {\n clearInterval(this.#timer);\n this.#timer = undefined;\n }\n\n this.#isDeferringRender = false;\n this.#uninstallHook();\n this.#showCursor();\n this.clear();\n this.#unsubscribeFromProcessEvents();\n\n if (finalMessage) {\n const prefix = shouldWriteNewline ? \"\\\\n\" : \"\";\n this.#stream.write(\\`\\${prefix}\\${finalMessage}\\\\n\\`);\n }\n\n return this;\n\n `}\n </ClassMethod>\n <Spacing />\n <ClassMethod name=\"clear\" doc=\"Clear the spinner animation.\">\n {code`if (!isInteractive) {\n return this;\n }\n\n if (this.#lines === 0) {\n return this;\n }\n\n this.#internalWrite(() => {\n this.#stream.cursorTo(0);\n\n for (let index = 0; index < this.#lines; index++) {\n if (index > 0) {\n this.#stream.moveCursor(0, -1);\n }\n\n this.#stream.clearLine(1);\n }\n });\n\n this.#lines = 0;\n return this; `}\n </ClassMethod>\n <Spacing />\n <ClassMethod\n name=\"success\"\n doc=\"Mark the spinner as successful.\"\n parameters={[{ name: \"message\", type: \"string\" }]}>\n {code`return this.#stopWithIcon(colors.text.spinner.icon.success(\"${\n theme.icons.spinner.success\n }\"), colors.text.spinner.message.success(message)); `}\n </ClassMethod>\n <Spacing />\n <ClassMethod\n name=\"error\"\n doc=\"Mark the spinner as failed.\"\n parameters={[{ name: \"message\", type: \"string\" }]}>\n {code`return this.#stopWithIcon(colors.text.spinner.icon.error(\"${\n theme.icons.spinner.error\n }\"), colors.text.spinner.message.error(message)); `}\n </ClassMethod>\n <Spacing />\n <ClassMethod\n name=\"warning\"\n doc=\"Mark the spinner as warning.\"\n parameters={[{ name: \"message\", type: \"string\" }]}>\n {code`return this.#stopWithIcon(colors.text.spinner.icon.warning(\"${\n theme.icons.spinner.warning\n }\"), colors.text.spinner.message.warning(message)); `}\n </ClassMethod>\n <Spacing />\n <ClassMethod\n name=\"info\"\n doc=\"Mark the spinner as informational.\"\n parameters={[{ name: \"message\", type: \"string\" }]}>\n {code`return this.#stopWithIcon(colors.text.spinner.icon.info(\"${\n theme.icons.spinner.info\n }\"), colors.text.spinner.message.info(message)); `}\n </ClassMethod>\n <Spacing />\n <ClassMethod\n name=\"help\"\n doc=\"Mark the spinner as help.\"\n parameters={[{ name: \"message\", type: \"string\" }]}>\n {code`return this.#stopWithIcon(colors.text.spinner.icon.help(\"${\n theme.icons.spinner.help\n }\"), colors.text.spinner.message.help(message)); `}\n </ClassMethod>\n <Spacing />\n </ClassDeclaration>\n <Spacing />\n <TSDoc heading=\"Render a spinner in the console.\">\n <TSDocParam name=\"options\">\n {`Options for configuring the spinner, including the message to display, the output stream to write to, and the spinner animation to use.`}\n </TSDocParam>\n <TSDocReturns>{`An instance of the Spinner class, which can be used to control the spinner animation (e.g., start, stop, mark as success/error, etc.).`}</TSDocReturns>\n </TSDoc>\n <FunctionDeclaration\n export\n name=\"createSpinner\"\n parameters={[\n {\n name: \"options\",\n type: \"SpinnerOptions\",\n optional: true\n }\n ]}>\n {code`return new Spinner(options);`}\n </FunctionDeclaration>\n </>\n );\n}\n\nfunction extractBorderOptionsObject(\n direction:\n | \"top\"\n | \"right\"\n | \"bottom\"\n | \"left\"\n | \"topLeft\"\n | \"topRight\"\n | \"bottomLeft\"\n | \"bottomRight\",\n theme: ThemeResolvedConfig\n): string {\n return `borderOptions.${\n direction\n } === \"primary\" ? colors.border.app.table.primary(\"${\n theme.borderStyles.app.table.primary[direction]\n }\") : borderOptions.${\n direction\n } === \"secondary\" ? colors.border.app.table.secondary(\"${\n theme.borderStyles.app.table.secondary[direction]\n }\") : borderOptions.${\n direction\n } === \"tertiary\" ? colors.border.app.table.tertiary(\"${\n theme.borderStyles.app.table.tertiary[direction]\n }\") : !borderOptions.${direction} || borderOptions.${\n direction\n } === \"none\" ? \"\" : borderOptions.${direction}`;\n}\n\nfunction extractBorderOptionsString(\n direction:\n | \"top\"\n | \"right\"\n | \"bottom\"\n | \"left\"\n | \"topLeft\"\n | \"topRight\"\n | \"bottomLeft\"\n | \"bottomRight\",\n theme: ThemeResolvedConfig\n): string {\n return `borderOptions === \"primary\" ? colors.border.app.table.primary(\"${\n theme.borderStyles.app.table.primary[direction]\n }\") : borderOptions === \"secondary\" ? colors.border.app.table.secondary(\"${\n theme.borderStyles.app.table.secondary[direction]\n }\") : borderOptions === \"tertiary\" ? colors.border.app.table.tertiary(\"${\n theme.borderStyles.app.table.tertiary[direction]\n }\") : !borderOptions || borderOptions === \"none\" ? \"\" : borderOptions`;\n}\n\n/**\n * Props for the TableFunctionDeclaration component.\n */\nexport type TableFunctionDeclarationProps = Omit<\n FunctionDeclarationProps,\n \"parameters\" | \"name\"\n>;\n\n/**\n * A component to generate the table functions in the `shell-shock:console` builtin module.\n */\nexport function TableFunctionDeclaration(props: TableFunctionDeclarationProps) {\n const theme = useTheme();\n\n return (\n <>\n <TypeDeclaration\n export\n name=\"SizeToken\"\n doc=\"A type representing the width size of an item in the console.\">\n {code`\"full\" | \"1/1\" | \"1/2\" | \"1/3\" | \"1/4\" | \"1/5\" | \"1/6\" | \"1/12\" | \"1/24\" | \"100%\" | \"50%\" | \"33.33%\" | \"25%\" | \"20%\" | \"10%\" | \"5%\" | \"2.5%\"`}\n </TypeDeclaration>\n <Spacing />\n <TSDoc heading=\"Determine if a value is a valid size token.\">\n <TSDocRemarks>\n {`This function checks if the provided value is a valid size token, which can be one of the predefined strings representing common width sizes (e.g., \"full\", \"1/2\", \"1/3\", etc.) or percentage strings (e.g., \"50%\").`}\n </TSDocRemarks>\n <TSDocParam name=\"value\">{`The value to check for being a valid size token.`}</TSDocParam>\n <TSDocReturns>{`True if the value is a valid size token, false otherwise.`}</TSDocReturns>\n </TSDoc>\n <FunctionDeclaration\n export\n doc=\"Determines if the provided value is a valid size token.\"\n name=\"isSizeToken\"\n parameters={[\n {\n name: \"value\",\n type: \"any\"\n }\n ]}\n returnType=\"value is SizeToken\">\n <IfStatement\n condition={code`[\"full\", \"1/1\", \"1/2\", \"1/3\", \"1/4\", \"1/5\", \"1/6\", \"1/12\", \"1/24\", \"100%\", \"50%\", \"33.33%\", \"25%\", \"20%\", \"10%\", \"5%\", \"2.5%\"].includes(value)`}>\n {code`return true; `}\n </IfStatement>\n {code`return false; `}\n </FunctionDeclaration>\n <Spacing />\n <TSDoc heading=\"Calculate the width in characters based on the provided width size.\">\n <TSDocRemarks>\n {`This function calculates the width in characters based on the provided width size, which can be a predefined string (e.g., \"full\", \"1/2\", \"1/3\", etc.) or a percentage string (e.g., \"50%\"). The calculation is based on the current width of the console (process.stdout.columns).`}\n </TSDocRemarks>\n <TSDocParam name=\"size\">\n {`The width size to calculate. This can be a predefined string (e.g., \"full\", \"1/2\", \"1/3\", etc.) or a percentage string (e.g., \"50%\").`}\n </TSDocParam>\n <TSDocReturns>{`The calculated width in characters.`}</TSDocReturns>\n </TSDoc>\n <FunctionDeclaration\n export\n name=\"calculateWidth\"\n parameters={[\n {\n name: \"size\",\n type: \"SizeToken\",\n optional: false\n }\n ]}\n returnType=\"number\">\n <IfStatement condition={code`[\"full\", \"100%\", \"1/1\"]. includes(size)`}>\n {code`return process.stdout.columns;`}\n </IfStatement>\n <ElseIfClause condition={code`[\"1/2\", \"50%\"].includes(size)`}>\n {code`return Math.round(process.stdout.columns / 2);`}\n </ElseIfClause>\n <ElseIfClause condition={code`[\"1/3\", \"33.33%\"].includes(size)`}>\n {code`return Math.round(process.stdout.columns / 3);`}\n </ElseIfClause>\n <ElseIfClause condition={code`[\"1/4\", \"25%\"].includes(size)`}>\n {code`return Math.round(process.stdout.columns / 4);`}\n </ElseIfClause>\n <ElseIfClause condition={code`[\"1/5\", \"20%\"].includes(size)`}>\n {code`return Math.round(process.stdout.columns / 5);`}\n </ElseIfClause>\n <ElseIfClause condition={code`[\"1/6\", \"10%\"].includes(size)`}>\n {code`return Math.round(process.stdout.columns / 6);`}\n </ElseIfClause>\n <ElseIfClause condition={code`[\"1/12\", \"5%\"].includes(size)`}>\n {code`return Math.round(process.stdout.columns / 12);`}\n </ElseIfClause>\n <ElseIfClause condition={code`[\"1/24\", \"2.5%\"].includes(size)`}>\n {code`return Math.round(process.stdout.columns / 24);`}\n </ElseIfClause>\n <ElseClause>\n {code`\n const match = size.match(/(\\\\d+(\\\\.\\\\d+)?)%/);\n if (match) {\n return Math.round((process.stdout.columns * parseFloat(match[1])) / 100);\n }\n\n throw new Error(\\`Invalid width size: \\${size}\\`);\n `}\n </ElseClause>\n <hbr />\n <hbr />\n </FunctionDeclaration>\n\n <TypeDeclaration\n export\n name=\"BorderOption\"\n doc=\"The border options applied to table cells.\">\n {code`\"primary\" | \"secondary\" | \"tertiary\" | \"none\" | string; `}\n </TypeDeclaration>\n <Spacing />\n <InterfaceDeclaration\n export\n name=\"TableOutputOptions\"\n doc=\"Options to customize the output of the {@link table} function.\">\n <TSDoc heading=\"Border variant for the table cell.\">\n <TSDocRemarks>\n {`The border variant to use for the table cell. This determines the color and style of the border around the cell.`}\n </TSDocRemarks>\n <hbr />\n <TSDocDefaultValue\n type={ReflectionKind.property}\n defaultValue=\"primary\"\n />\n </TSDoc>\n <InterfaceMember\n name=\"border\"\n optional\n type=\"BorderOption | { top?: BorderOption; right?: BorderOption; bottom?: BorderOption; left?: BorderOption; topLeft?: BorderOption; topRight?: BorderOption; bottomLeft?: BorderOption; bottomRight?: BorderOption; }\"\n />\n <hbr />\n <TSDoc heading=\"Padding for the table cell.\">\n <TSDocRemarks>\n {`The amount of padding (in spaces) to apply to the table cell. This value is applied to both the left and right sides of the cell. If not specified, the default table padding defined in the current theme configuration will be used.`}\n </TSDocRemarks>\n <hbr />\n <TSDocDefaultValue\n type={ReflectionKind.property}\n defaultValue={`\\`${theme.padding.table}\\``}\n />\n </TSDoc>\n <InterfaceMember name=\"padding\" optional type=\"number\" />\n <hbr />\n <TSDoc heading=\"Alignment for the table cell.\">\n <TSDocRemarks>\n {`The alignment for the table cell. This determines how the text within the cell is aligned. If not specified, the default alignment is \"left\".`}\n </TSDocRemarks>\n <hbr />\n <TSDocDefaultValue\n type={ReflectionKind.property}\n defaultValue=\"left\"\n />\n </TSDoc>\n <InterfaceMember\n name=\"align\"\n optional\n type='\"left\" | \"right\" | \"center\"'\n />\n <hbr />\n </InterfaceDeclaration>\n <Spacing />\n <InterfaceDeclaration\n export\n name=\"TableCellOptions\"\n extends=\"TableOutputOptions\"\n doc=\"Options for a specific table cell provided to the {@link table} function.\">\n <InterfaceMember\n name=\"value\"\n optional\n type=\"string\"\n doc=\"The actual string value of the table cell.\"\n />\n <hbr />\n <TSDoc heading=\"Width of the table cell.\">\n <TSDocRemarks>\n {`The width of the table cell (where 1 is a single character in the terminal). If not specified, the width will be determined based on the content of the cell and the available space in the console.`}\n </TSDocRemarks>\n </TSDoc>\n <InterfaceMember\n name=\"maxWidth\"\n type=\"number | SizeToken | undefined\"\n />\n <hbr />\n </InterfaceDeclaration>\n <Spacing />\n <InterfaceDeclaration\n export\n name=\"TableRowOptions\"\n extends=\"TableOutputOptions\"\n doc=\"Options for a specific table row provided to the {@link table} function.\">\n <InterfaceMember\n name=\"values\"\n optional\n type=\"(string | TableCellOptions)[]\"\n doc=\"The actual string values of the table row's cells.\"\n />\n <hbr />\n </InterfaceDeclaration>\n <Spacing />\n <InterfaceDeclaration\n export\n name=\"TableOptions\"\n extends=\"TableOutputOptions\"\n doc=\"Options for a specific table cell provided to the {@link table} function.\">\n <InterfaceMember\n name=\"values\"\n optional\n type=\"(string | TableCellOptions)[][]\"\n doc=\"The actual string values of the table's rows' cells.\"\n />\n <hbr />\n </InterfaceDeclaration>\n <Spacing />\n <InterfaceDeclaration\n name=\"Dimensions\"\n doc=\"The height and width for a specific table/cell used internally in the {@link table} function.\">\n <InterfaceMember\n name=\"height\"\n type=\"number\"\n doc=\"The height of the row/cell (where 1 is a single line in the terminal).\"\n />\n <hbr />\n <InterfaceMember\n name=\"width\"\n type=\"number\"\n doc=\"The width of the row/cell (where 1 is a single character in the terminal).\"\n />\n <hbr />\n </InterfaceDeclaration>\n <Spacing />\n <InterfaceDeclaration\n name=\"TableCellBorder\"\n doc=\"The resolved complete border styles for a table cell.\">\n <InterfaceMember\n name=\"top\"\n type=\"string\"\n doc=\"The top border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"bottom\"\n type=\"string\"\n doc=\"The bottom border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"right\"\n type=\"string\"\n doc=\"The right border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"left\"\n type=\"string\"\n doc=\"The left border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"topLeft\"\n type=\"string\"\n doc=\"The top-left border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"topRight\"\n type=\"string\"\n doc=\"The top-right border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"bottomLeft\"\n type=\"string\"\n doc=\"The bottom-left border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"bottomRight\"\n type=\"string\"\n doc=\"The bottom-right border style of the table cell.\"\n />\n <hbr />\n </InterfaceDeclaration>\n <Spacing />\n <TypeDeclaration\n name=\"TableCell\"\n doc=\"The internal state of a formatted table cell in the {@link table} function.\">\n {code`Required<Omit<TableCellOptions, \"maxWidth\" | \"border\">> & Dimensions & {\n border: TableCellBorder;\n maxWidth?: number;\n };\n `}\n </TypeDeclaration>\n <Spacing />\n <TSDoc heading=\"Write a table to the console.\">\n <TSDocRemarks>\n {`This function writes a table to the console, applying the appropriate padding as defined in the current theme configuration and wrapping as needed.`}\n </TSDocRemarks>\n <hbr />\n <TSDocParam name=\"options\">\n {`Options to customize the table output.`}\n </TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n export\n {...props}\n name=\"table\"\n parameters={[\n {\n name: \"options\",\n type: \"TableOptions | TableRowOptions[] | TableCellOptions[][] | string[] | string[][]\",\n optional: false\n }\n ]}>\n <IfStatement\n condition={code`!options ||\n (!Array.isArray(options) && (typeof options !== \"object\" || !options.values || !Array.isArray(options.values) || options.values.length === 0)) ||\n (Array.isArray(options) && !options.every(item => typeof item === \"object\" || typeof item === \"string\" || Array.isArray(item))) `}>\n {code`return;`}\n </IfStatement>\n <hbr />\n <hbr />\n <VarDeclaration\n let\n name=\"cells\"\n type={`TableCell[][]`}\n initializer={code`[];`}\n />\n <hbr />\n {code`\n const extractTableCell = (cell: string | TableCellOptions, columnIndex: number, rowLength: number, opts?: TableOutputOptions): TableCell => {\n if (typeof cell === \"string\") {\n const borderOptions = opts?.border || \"primary\";\n\n let border = {} as TableCellBorder;\n if (typeof borderOptions === \"object\") {\n border = {\n top: ${extractBorderOptionsObject(\"top\", theme)},\n bottom: ${extractBorderOptionsObject(\"bottom\", theme)},\n left: ${extractBorderOptionsObject(\"left\", theme)},\n right: ${extractBorderOptionsObject(\"right\", theme)},\n topLeft: ${extractBorderOptionsObject(\"topLeft\", theme)},\n topRight: ${extractBorderOptionsObject(\"topRight\", theme)},\n bottomLeft: ${extractBorderOptionsObject(\"bottomLeft\", theme)},\n bottomRight: ${extractBorderOptionsObject(\"bottomRight\", theme)},\n };\n } else {\n border.top = ${extractBorderOptionsString(\"top\", theme)};\n border.bottom = ${extractBorderOptionsString(\"bottom\", theme)};\n border.left = ${extractBorderOptionsString(\"left\", theme)};\n border.right = ${extractBorderOptionsString(\"right\", theme)};\n border.topLeft = ${extractBorderOptionsString(\"topLeft\", theme)};\n border.topRight = ${extractBorderOptionsString(\"topRight\", theme)};\n border.bottomLeft = ${extractBorderOptionsString(\"bottomLeft\", theme)};\n border.bottomRight = ${extractBorderOptionsString(\"bottomRight\", theme)};\n }\n\n const padding = Math.max(0, opts?.padding ?? ${theme.padding.table}) * (columnIndex === 0 || columnIndex === rowLength - 1 ? 2 : 1);\n const value = cell ?? \"\";\n const width = stripAnsi(value).length + padding * 2;\n\n return {\n value,\n height: 1,\n width,\n border,\n padding,\n align: opts?.align || \"left\",\n };\n } else {\n const borderOptions = cell.border || opts?.border || \"primary\";\n\n let border = {} as TableCellBorder;\n if (typeof borderOptions === \"object\") {\n border = {\n top: ${extractBorderOptionsObject(\"top\", theme)},\n bottom: ${extractBorderOptionsObject(\"bottom\", theme)},\n left: ${extractBorderOptionsObject(\"left\", theme)},\n right: ${extractBorderOptionsObject(\"right\", theme)},\n topLeft: ${extractBorderOptionsObject(\"topLeft\", theme)},\n topRight: ${extractBorderOptionsObject(\"topRight\", theme)},\n bottomLeft: ${extractBorderOptionsObject(\"bottomLeft\", theme)},\n bottomRight: ${extractBorderOptionsObject(\"bottomRight\", theme)},\n };\n } else {\n border.top = ${extractBorderOptionsString(\"top\", theme)};\n border.bottom = ${extractBorderOptionsString(\"bottom\", theme)};\n border.left = ${extractBorderOptionsString(\"left\", theme)};\n border.right = ${extractBorderOptionsString(\"right\", theme)};\n border.topLeft = ${extractBorderOptionsString(\"topLeft\", theme)};\n border.topRight = ${extractBorderOptionsString(\"topRight\", theme)};\n border.bottomLeft = ${extractBorderOptionsString(\"bottomLeft\", theme)};\n border.bottomRight = ${extractBorderOptionsString(\"bottomRight\", theme)};\n }\n\n const padding = Math.max(0, cell.padding ?? opts?.padding ?? ${\n theme.padding.table\n });\n const value = cell.value ?? \"\";\n const width = stripAnsi(value).length + padding * 2;\n const maxWidth = cell.maxWidth ? typeof cell.maxWidth === \"number\" ? cell.maxWidth : calculateWidth(cell.maxWidth) : undefined;\n\n return {\n value,\n height: 1,\n width,\n maxWidth,\n border,\n padding,\n align: cell.align || opts?.align || \"left\",\n };\n }\n };\n\n let colMaxWidths = [] as (number | undefined)[];\n `}\n <hbr />\n <IfStatement condition={code`Array.isArray(options)`}>\n <IfStatement\n condition={code`options.every(row => typeof row === \"string\" || (typeof row === \"object\" && !Array.isArray(row) && !(\"values\" in row)))`}>\n {code`cells.push(options.map((cell, index) => extractTableCell(cell as string | TableCellOptions, index, options.length)));`}\n </IfStatement>\n <ElseClause>\n {code`\n cells.push(\n ...options.map(row => Array.isArray(row)\n ? row.reduce((cellRow, cell, index) => {\n if (colMaxWidths.length <= index) {\n colMaxWidths.push(undefined);\n }\n const newCell = extractTableCell(cell, index, row.length);\n if (newCell.maxWidth && (!colMaxWidths[index] || newCell.maxWidth < colMaxWidths[index]!)) {\n colMaxWidths[index] = newCell.maxWidth;\n }\n cellRow.push(newCell);\n return cellRow;\n }, [] as TableCell[])\n : (row as TableRowOptions).values?.reduce((cellRow, cell, index) => {\n if (colMaxWidths.length <= index) {\n colMaxWidths.push(undefined);\n }\n const newCell = extractTableCell(cell, index, (row as TableRowOptions).values?.length ?? 1, row as TableRowOptions);\n if (newCell.maxWidth && (!colMaxWidths[index] || newCell.maxWidth < colMaxWidths[index]!)) {\n colMaxWidths[index] = newCell.maxWidth;\n }\n cellRow.push(newCell);\n return cellRow;\n }, [] as TableCell[]) ?? []\n )\n );\n `}\n </ElseClause>\n </IfStatement>\n <ElseClause>\n {code`\n cells.push(\n ...options.values!.map(row => Array.isArray(row)\n ? row.reduce((cellRow, cell, index) => {\n if (colMaxWidths.length <= index) {\n colMaxWidths.push(undefined);\n }\n const newCell = extractTableCell(cell, index, row.length);\n if (newCell.maxWidth && (!colMaxWidths[index] || newCell.maxWidth < colMaxWidths[index]!)) {\n colMaxWidths[index] = newCell.maxWidth;\n }\n cellRow.push(newCell);\n return cellRow;\n }, [] as TableCell[])\n : (row as TableRowOptions).values?.reduce((cellRow, cell, index) => {\n if (colMaxWidths.length <= index) {\n colMaxWidths.push(undefined);\n }\n const newCell = extractTableCell(cell, index, (row as TableRowOptions).values?.length ?? 1, options);\n if (newCell.maxWidth && (!colMaxWidths[index] || newCell.maxWidth < colMaxWidths[index]!)) {\n colMaxWidths[index] = newCell.maxWidth;\n }\n cellRow.push(newCell);\n return cellRow;\n }, [] as TableCell[]) ?? []\n )\n );\n\n `}\n </ElseClause>\n <hbr />\n {code`\ncells = cells.filter(row => row.length > 0);\nif (cells.length === 0) {\n return;\n}\n\ncells.forEach(row => row.forEach((cell, index) => {\n if (colMaxWidths[index] && cell.maxWidth !== colMaxWidths[index]!) {\n cell.maxWidth = colMaxWidths[index]!;\n }\n}));\n\n// Calculate table dimensions\nlet colWidths = [] as number[];\nlet rowDims = [] as Dimensions[];\n\nconst calculateRowDimensions = () => {\n colWidths = [];\n return cells.reduce((dims, row) => {\n dims.push(row.reduce((dim, cell, index) => {\n dim.width += cell.width;\n if (cell.height > dim.height) {\n dim.height = cell.height;\n }\n if (!colWidths[index] || cell.width > colWidths[index]!) {\n colWidths[index] = cell.width;\n }\n\n return dim;\n }, { width: 0, height: 0 } as Dimensions));\n\n return dims;\n }, [] as Dimensions[]);\n}\n\nlet recalculate!: boolean;\ndo {\n recalculate = false;\n rowDims = calculateRowDimensions();\n\n if (!recalculate && colWidths.some((colWidth, index) => colMaxWidths[index] && colWidth > colMaxWidths[index]!)) {\n (colWidths.map((colWidth, index) => colMaxWidths[index] && colWidth > colMaxWidths[index]! ? index : undefined).filter(colWidth => colWidth !== undefined) as number[]).forEach(index => {\n cells.forEach(row => {\n const cell = row[index]!;\n if (colMaxWidths[index] && cell.width > colMaxWidths[index]) {\n const lines = splitText(\n cell.value,\n colMaxWidths[index] - cell.padding * 2,\n );\n\n cell.value = lines.join(\"\\\\n\");\n cell.height = lines.length;\n cell.width = Math.max(...lines.map(line => stripAnsi(line).length)) + cell.padding * 2;\n\n recalculate = true;\n }\n });\n });\n }\n\n rowDims.forEach((row, rowIndex) => {\n if (!recalculate && row.width > Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2\n }, 0)) {\n const cell = cells[rowIndex]!.reduce((largestCell, cell) => {\n if (cell.width > largestCell.width) {\n return cell;\n }\n return largestCell;\n }, cells[rowIndex]![0]!);\n\n const lines = splitText(\n cell.value,\n Math.min(Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2\n } - (row.width - (cell.width - cell.padding * 2)), 0),\n cell.maxWidth ?? Number.POSITIVE_INFINITY)\n );\n\n cell.value = lines.join(\"\\\\n\");\n cell.height = lines.length;\n cell.width = Math.max(...lines.map(line => stripAnsi(line).length)) + cell.padding * 2;\n\n recalculate = true;\n }\n });\n\n if (!recalculate && colWidths.reduce((a, b) => a + b, 0) > Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2\n }, 0)) {\n let colIndex = 0;\n const cell = cells.reduce((ret, row) => {\n return row.reduce((largest, current, index) => {\n if (largest.width < current.width) {\n colIndex = index;\n return current;\n }\n return largest;\n }, ret);\n }, cells[0]![0]!);\n\n const lines = splitText(\n cell.value,\n Math.min(Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2\n } - (colWidths.filter((_, i) => i !== colIndex).reduce((a, b) => a + b, 0)) - cell.padding * 2, 0),\n cell.maxWidth ?? Number.POSITIVE_INFINITY)\n );\n\n cell.value = lines.join(\"\\\\n\");\n cell.height = lines.length;\n cell.width = Math.max(...lines.map(line => stripAnsi(line).length)) + cell.padding * 2;\n\n recalculate = true;\n }\n} while (recalculate);\n\n// Render table\ncells.forEach((row, rowIndex) => {\n const outputs = [] as string[][];\n row.forEach((cell, colIndex) => {\n const lines = cell.value.split(\"\\\\n\");\n while (lines.length < rowDims[rowIndex]!.height) {\n lines.push(\"\");\n }\n\n outputs.push(lines.map(line => {\n let paddedContent = \"\";\n switch (cell.align) {\n case \"right\":\n paddedContent = \" \".repeat(Math.max(colWidths[colIndex] - stripAnsi(line).length - cell.padding, 0)) + line + \" \".repeat(cell.padding);\n break;\n case \"center\":\n const leftPadding = Math.floor((colWidths[colIndex] - stripAnsi(line).length - cell.padding) / 2);\n const rightPadding = colWidths[colIndex] - stripAnsi(line).length - leftPadding;\n paddedContent = \" \".repeat(leftPadding) + line + \" \".repeat(rightPadding);\n break;\n case \"left\":\n default:\n paddedContent = \" \".repeat(cell.padding) + line + \" \".repeat(Math.max(colWidths[colIndex] - stripAnsi(line).length - cell.padding, 0));\n break;\n }\n\n if (colIndex === row.length - 1) {\n return cell.border.left + paddedContent + cell.border.right;\n } else {\n return cell.border.left + paddedContent;\n }\n }));\n });\n\n for (let index = 0; index < rowDims[rowIndex]!.height; index++) {\n writeLine(outputs.map(output => output[index] ?? \"\").join(\"\"));\n }\n});\n`}\n </FunctionDeclaration>\n </>\n );\n}\n\nexport type ConsoleBuiltinProps = Pick<\n BuiltinFileProps,\n \"children\" | \"imports\" | \"builtinImports\"\n>;\n\n/**\n * A built-in console utilities module for Shell Shock.\n */\nexport function ConsoleBuiltin(props: ConsoleBuiltinProps) {\n const { children, imports, builtinImports } = props;\n\n return (\n <BuiltinFile\n id=\"console\"\n description=\"A collection of helper utilities to assist in generating content meant for display in the console.\"\n imports={defu(imports, {\n \"@shell-shock/plugin-theme/types/theme\": [\n { name: \"ThemeColorsResolvedConfig\", type: true },\n { name: \"ThemeSpinnerResolvedConfig\", type: true }\n ],\n \"@shell-shock/plugin-theme/helpers/spinners\": [\n { name: \"SpinnerPreset\", type: true },\n { name: \"resolveSpinner\" }\n ],\n \"node:buffer\": [\"WithImplicitCoercion\"],\n \"node:util\": [\"stripVTControlCharacters\"]\n })}\n builtinImports={defu(builtinImports, {\n utils: [\n \"hasFlag\",\n \"isMinimal\",\n \"isInteractive\",\n \"isColorSupported\",\n \"colorSupportLevels\",\n \"isHyperlinkSupported\"\n ],\n env: [\"env\", \"isDevelopment\", \"isDebug\"]\n })}>\n <AnsiHelpersDeclarations />\n <Spacing />\n <StripAnsiFunctionDeclaration />\n <Spacing />\n <WrapAnsiFunction />\n <Spacing />\n <ColorsDeclaration />\n <Spacing />\n <WriteLineFunctionDeclaration />\n <Spacing />\n <LinkFunctionDeclaration />\n <Spacing />\n <DividerFunctionDeclaration />\n <Spacing />\n <SpinnerFunctionDeclaration />\n <Spacing />\n <MessageFunctionDeclaration\n type=\"help\"\n variant=\"help\"\n consoleFnName=\"log\"\n description=\"help\"\n />\n <Spacing />\n <MessageFunctionDeclaration\n type=\"success\"\n variant=\"success\"\n consoleFnName=\"info\"\n description=\"success\"\n />\n <Spacing />\n <MessageFunctionDeclaration\n type=\"info\"\n variant=\"info\"\n consoleFnName=\"info\"\n description=\"informational\"\n />\n <Spacing />\n <MessageFunctionDeclaration\n type=\"debug\"\n variant=\"debug\"\n consoleFnName=\"debug\"\n description=\"debug\"\n timestamp\n prefix={\n <IfStatement condition={<IsNotDebug />}>{code`return; `}</IfStatement>\n }\n />\n <Spacing />\n <MessageFunctionDeclaration\n type=\"verbose\"\n variant=\"info\"\n color=\"debug\"\n consoleFnName=\"debug\"\n description=\"verbose\"\n timestamp\n prefix={\n <IfStatement\n condition={<IsNotVerbose />}>{code`return; `}</IfStatement>\n }\n />\n <Spacing />\n <MessageFunctionDeclaration\n type=\"warn\"\n variant=\"warning\"\n consoleFnName=\"warn\"\n description=\"warning\"\n />\n <Spacing />\n <MessageFunctionDeclaration\n type=\"danger\"\n variant=\"danger\"\n consoleFnName=\"error\"\n description=\"destructive/danger\"\n />\n <Spacing />\n <MessageFunctionDeclaration\n type=\"error\"\n variant=\"error\"\n consoleFnName=\"error\"\n description=\"error\"\n timestamp\n parameters={[\n {\n name: \"err\",\n type: \"string | Error\",\n optional: false\n }\n ]}\n prefix={\n <>\n <VarDeclaration let name=\"message\" type=\"string | undefined\" />\n <Spacing />\n <IfStatement condition={code`(err as Error)?.message`}>\n {code`message = (err as Error).message;`}\n </IfStatement>\n <ElseClause>{code`message = String(err);`}</ElseClause>\n <Spacing />\n <IfStatement condition={code`env.STACKTRACE`}>\n <IfStatement condition={code`(err as Error)?.stack`}>\n {code`message += \" \\\\n\\\\n\" + ((err as Error).stack || \"\");`}\n </IfStatement>\n <ElseClause>{code`message += \" \\\\n\\\\n\" + ((new Error(\" \")).stack || \"\").split(\"\\\\n\").slice(2).map(line => line.trim()).join(\"\\\\n\");`}</ElseClause>\n </IfStatement>\n </>\n }\n />\n <Spacing />\n <TableFunctionDeclaration />\n <Spacing />\n {children}\n <Spacing />\n </BuiltinFile>\n );\n}\n"],"mappings":"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"}