@promptctl/rich-js 0.1.0

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.
Files changed (318) hide show
  1. package/README.md +418 -0
  2. package/dist/core/box.d.ts +91 -0
  3. package/dist/core/box.d.ts.map +1 -0
  4. package/dist/core/box.js +534 -0
  5. package/dist/core/box.js.map +1 -0
  6. package/dist/core/cells.d.ts +24 -0
  7. package/dist/core/cells.d.ts.map +1 -0
  8. package/dist/core/cells.js +114 -0
  9. package/dist/core/cells.js.map +1 -0
  10. package/dist/core/color.d.ts +158 -0
  11. package/dist/core/color.d.ts.map +1 -0
  12. package/dist/core/color.js +825 -0
  13. package/dist/core/color.js.map +1 -0
  14. package/dist/core/console.d.ts +100 -0
  15. package/dist/core/console.d.ts.map +1 -0
  16. package/dist/core/console.js +353 -0
  17. package/dist/core/console.js.map +1 -0
  18. package/dist/core/emoji.d.ts +25 -0
  19. package/dist/core/emoji.d.ts.map +1 -0
  20. package/dist/core/emoji.js +392 -0
  21. package/dist/core/emoji.js.map +1 -0
  22. package/dist/core/highlighter.d.ts +33 -0
  23. package/dist/core/highlighter.d.ts.map +1 -0
  24. package/dist/core/highlighter.js +103 -0
  25. package/dist/core/highlighter.js.map +1 -0
  26. package/dist/core/markup.d.ts +69 -0
  27. package/dist/core/markup.d.ts.map +1 -0
  28. package/dist/core/markup.js +401 -0
  29. package/dist/core/markup.js.map +1 -0
  30. package/dist/core/measure.d.ts +17 -0
  31. package/dist/core/measure.d.ts.map +1 -0
  32. package/dist/core/measure.js +50 -0
  33. package/dist/core/measure.js.map +1 -0
  34. package/dist/core/protocol.d.ts +32 -0
  35. package/dist/core/protocol.d.ts.map +1 -0
  36. package/dist/core/protocol.js +17 -0
  37. package/dist/core/protocol.js.map +1 -0
  38. package/dist/core/render.d.ts +51 -0
  39. package/dist/core/render.d.ts.map +1 -0
  40. package/dist/core/render.js +69 -0
  41. package/dist/core/render.js.map +1 -0
  42. package/dist/core/segment.d.ts +104 -0
  43. package/dist/core/segment.d.ts.map +1 -0
  44. package/dist/core/segment.js +364 -0
  45. package/dist/core/segment.js.map +1 -0
  46. package/dist/core/spinnerData.d.ts +11 -0
  47. package/dist/core/spinnerData.d.ts.map +1 -0
  48. package/dist/core/spinnerData.js +116 -0
  49. package/dist/core/spinnerData.js.map +1 -0
  50. package/dist/core/strip.d.ts +159 -0
  51. package/dist/core/strip.d.ts.map +1 -0
  52. package/dist/core/strip.js +237 -0
  53. package/dist/core/strip.js.map +1 -0
  54. package/dist/core/style.d.ts +115 -0
  55. package/dist/core/style.d.ts.map +1 -0
  56. package/dist/core/style.js +662 -0
  57. package/dist/core/style.js.map +1 -0
  58. package/dist/core/text.d.ts +91 -0
  59. package/dist/core/text.d.ts.map +1 -0
  60. package/dist/core/text.js +610 -0
  61. package/dist/core/text.js.map +1 -0
  62. package/dist/index.d.ts +99 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +72 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/renderables/align.d.ts +17 -0
  67. package/dist/renderables/align.d.ts.map +1 -0
  68. package/dist/renderables/align.js +47 -0
  69. package/dist/renderables/align.js.map +1 -0
  70. package/dist/renderables/columns.d.ts +28 -0
  71. package/dist/renderables/columns.d.ts.map +1 -0
  72. package/dist/renderables/columns.js +92 -0
  73. package/dist/renderables/columns.js.map +1 -0
  74. package/dist/renderables/constrain.d.ts +16 -0
  75. package/dist/renderables/constrain.d.ts.map +1 -0
  76. package/dist/renderables/constrain.js +38 -0
  77. package/dist/renderables/constrain.js.map +1 -0
  78. package/dist/renderables/flexStrip.d.ts +42 -0
  79. package/dist/renderables/flexStrip.d.ts.map +1 -0
  80. package/dist/renderables/flexStrip.js +201 -0
  81. package/dist/renderables/flexStrip.js.map +1 -0
  82. package/dist/renderables/group.d.ts +12 -0
  83. package/dist/renderables/group.d.ts.map +1 -0
  84. package/dist/renderables/group.js +16 -0
  85. package/dist/renderables/group.js.map +1 -0
  86. package/dist/renderables/json.d.ts +23 -0
  87. package/dist/renderables/json.d.ts.map +1 -0
  88. package/dist/renderables/json.js +49 -0
  89. package/dist/renderables/json.js.map +1 -0
  90. package/dist/renderables/layout.d.ts +37 -0
  91. package/dist/renderables/layout.d.ts.map +1 -0
  92. package/dist/renderables/layout.js +151 -0
  93. package/dist/renderables/layout.js.map +1 -0
  94. package/dist/renderables/live.d.ts +48 -0
  95. package/dist/renderables/live.d.ts.map +1 -0
  96. package/dist/renderables/live.js +131 -0
  97. package/dist/renderables/live.js.map +1 -0
  98. package/dist/renderables/markdown.d.ts +25 -0
  99. package/dist/renderables/markdown.d.ts.map +1 -0
  100. package/dist/renderables/markdown.js +190 -0
  101. package/dist/renderables/markdown.js.map +1 -0
  102. package/dist/renderables/padding.d.ts +26 -0
  103. package/dist/renderables/padding.d.ts.map +1 -0
  104. package/dist/renderables/padding.js +92 -0
  105. package/dist/renderables/padding.js.map +1 -0
  106. package/dist/renderables/panel.d.ts +42 -0
  107. package/dist/renderables/panel.d.ts.map +1 -0
  108. package/dist/renderables/panel.js +202 -0
  109. package/dist/renderables/panel.js.map +1 -0
  110. package/dist/renderables/pretty.d.ts +29 -0
  111. package/dist/renderables/pretty.d.ts.map +1 -0
  112. package/dist/renderables/pretty.js +141 -0
  113. package/dist/renderables/pretty.js.map +1 -0
  114. package/dist/renderables/progress.d.ts +91 -0
  115. package/dist/renderables/progress.d.ts.map +1 -0
  116. package/dist/renderables/progress.js +234 -0
  117. package/dist/renderables/progress.js.map +1 -0
  118. package/dist/renderables/progressBar.d.ts +32 -0
  119. package/dist/renderables/progressBar.d.ts.map +1 -0
  120. package/dist/renderables/progressBar.js +59 -0
  121. package/dist/renderables/progressBar.js.map +1 -0
  122. package/dist/renderables/prompt.d.ts +25 -0
  123. package/dist/renderables/prompt.d.ts.map +1 -0
  124. package/dist/renderables/prompt.js +109 -0
  125. package/dist/renderables/prompt.js.map +1 -0
  126. package/dist/renderables/rule.d.ts +25 -0
  127. package/dist/renderables/rule.d.ts.map +1 -0
  128. package/dist/renderables/rule.js +96 -0
  129. package/dist/renderables/rule.js.map +1 -0
  130. package/dist/renderables/spinner.d.ts +30 -0
  131. package/dist/renderables/spinner.d.ts.map +1 -0
  132. package/dist/renderables/spinner.js +70 -0
  133. package/dist/renderables/spinner.js.map +1 -0
  134. package/dist/renderables/status.d.ts +24 -0
  135. package/dist/renderables/status.d.ts.map +1 -0
  136. package/dist/renderables/status.js +67 -0
  137. package/dist/renderables/status.js.map +1 -0
  138. package/dist/renderables/syntax.d.ts +36 -0
  139. package/dist/renderables/syntax.d.ts.map +1 -0
  140. package/dist/renderables/syntax.js +115 -0
  141. package/dist/renderables/syntax.js.map +1 -0
  142. package/dist/renderables/table.d.ts +109 -0
  143. package/dist/renderables/table.d.ts.map +1 -0
  144. package/dist/renderables/table.js +434 -0
  145. package/dist/renderables/table.js.map +1 -0
  146. package/dist/renderables/traceback.d.ts +26 -0
  147. package/dist/renderables/traceback.d.ts.map +1 -0
  148. package/dist/renderables/traceback.js +108 -0
  149. package/dist/renderables/traceback.js.map +1 -0
  150. package/dist/renderables/tree.d.ts +30 -0
  151. package/dist/renderables/tree.d.ts.map +1 -0
  152. package/dist/renderables/tree.js +107 -0
  153. package/dist/renderables/tree.js.map +1 -0
  154. package/dist/template-bindings/index.d.ts +61 -0
  155. package/dist/template-bindings/index.d.ts.map +1 -0
  156. package/dist/template-bindings/index.js +70 -0
  157. package/dist/template-bindings/index.js.map +1 -0
  158. package/dist/template-bindings/style-funcs.d.ts +30 -0
  159. package/dist/template-bindings/style-funcs.d.ts.map +1 -0
  160. package/dist/template-bindings/style-funcs.js +172 -0
  161. package/dist/template-bindings/style-funcs.js.map +1 -0
  162. package/dist/themes/buildPalette.d.ts +31 -0
  163. package/dist/themes/buildPalette.d.ts.map +1 -0
  164. package/dist/themes/buildPalette.js +43 -0
  165. package/dist/themes/buildPalette.js.map +1 -0
  166. package/dist/themes/colorMath.d.ts +23 -0
  167. package/dist/themes/colorMath.d.ts.map +1 -0
  168. package/dist/themes/colorMath.js +99 -0
  169. package/dist/themes/colorMath.js.map +1 -0
  170. package/dist/themes/data/atom-one-dark.d.ts +4 -0
  171. package/dist/themes/data/atom-one-dark.d.ts.map +1 -0
  172. package/dist/themes/data/atom-one-dark.js +159 -0
  173. package/dist/themes/data/atom-one-dark.js.map +1 -0
  174. package/dist/themes/data/atom-one-light.d.ts +4 -0
  175. package/dist/themes/data/atom-one-light.d.ts.map +1 -0
  176. package/dist/themes/data/atom-one-light.js +159 -0
  177. package/dist/themes/data/atom-one-light.js.map +1 -0
  178. package/dist/themes/data/catppuccin-latte.d.ts +4 -0
  179. package/dist/themes/data/catppuccin-latte.d.ts.map +1 -0
  180. package/dist/themes/data/catppuccin-latte.js +159 -0
  181. package/dist/themes/data/catppuccin-latte.js.map +1 -0
  182. package/dist/themes/data/catppuccin-mocha.d.ts +4 -0
  183. package/dist/themes/data/catppuccin-mocha.d.ts.map +1 -0
  184. package/dist/themes/data/catppuccin-mocha.js +159 -0
  185. package/dist/themes/data/catppuccin-mocha.js.map +1 -0
  186. package/dist/themes/data/dracula.d.ts +4 -0
  187. package/dist/themes/data/dracula.d.ts.map +1 -0
  188. package/dist/themes/data/dracula.js +159 -0
  189. package/dist/themes/data/dracula.js.map +1 -0
  190. package/dist/themes/data/flexoki.d.ts +4 -0
  191. package/dist/themes/data/flexoki.d.ts.map +1 -0
  192. package/dist/themes/data/flexoki.js +159 -0
  193. package/dist/themes/data/flexoki.js.map +1 -0
  194. package/dist/themes/data/gruvbox.d.ts +4 -0
  195. package/dist/themes/data/gruvbox.d.ts.map +1 -0
  196. package/dist/themes/data/gruvbox.js +159 -0
  197. package/dist/themes/data/gruvbox.js.map +1 -0
  198. package/dist/themes/data/index.d.ts +29 -0
  199. package/dist/themes/data/index.d.ts.map +1 -0
  200. package/dist/themes/data/index.js +48 -0
  201. package/dist/themes/data/index.js.map +1 -0
  202. package/dist/themes/data/monokai.d.ts +4 -0
  203. package/dist/themes/data/monokai.d.ts.map +1 -0
  204. package/dist/themes/data/monokai.js +159 -0
  205. package/dist/themes/data/monokai.js.map +1 -0
  206. package/dist/themes/data/nord.d.ts +4 -0
  207. package/dist/themes/data/nord.d.ts.map +1 -0
  208. package/dist/themes/data/nord.js +159 -0
  209. package/dist/themes/data/nord.js.map +1 -0
  210. package/dist/themes/data/rose-pine-dawn.d.ts +4 -0
  211. package/dist/themes/data/rose-pine-dawn.d.ts.map +1 -0
  212. package/dist/themes/data/rose-pine-dawn.js +159 -0
  213. package/dist/themes/data/rose-pine-dawn.js.map +1 -0
  214. package/dist/themes/data/rose-pine-moon.d.ts +4 -0
  215. package/dist/themes/data/rose-pine-moon.d.ts.map +1 -0
  216. package/dist/themes/data/rose-pine-moon.js +159 -0
  217. package/dist/themes/data/rose-pine-moon.js.map +1 -0
  218. package/dist/themes/data/rose-pine.d.ts +4 -0
  219. package/dist/themes/data/rose-pine.d.ts.map +1 -0
  220. package/dist/themes/data/rose-pine.js +159 -0
  221. package/dist/themes/data/rose-pine.js.map +1 -0
  222. package/dist/themes/data/solarized-dark.d.ts +4 -0
  223. package/dist/themes/data/solarized-dark.d.ts.map +1 -0
  224. package/dist/themes/data/solarized-dark.js +159 -0
  225. package/dist/themes/data/solarized-dark.js.map +1 -0
  226. package/dist/themes/data/solarized-light.d.ts +4 -0
  227. package/dist/themes/data/solarized-light.d.ts.map +1 -0
  228. package/dist/themes/data/solarized-light.js +159 -0
  229. package/dist/themes/data/solarized-light.js.map +1 -0
  230. package/dist/themes/data/textual-ansi.d.ts +4 -0
  231. package/dist/themes/data/textual-ansi.d.ts.map +1 -0
  232. package/dist/themes/data/textual-ansi.js +159 -0
  233. package/dist/themes/data/textual-ansi.js.map +1 -0
  234. package/dist/themes/data/textual-dark.d.ts +4 -0
  235. package/dist/themes/data/textual-dark.d.ts.map +1 -0
  236. package/dist/themes/data/textual-dark.js +159 -0
  237. package/dist/themes/data/textual-dark.js.map +1 -0
  238. package/dist/themes/data/textual-light.d.ts +4 -0
  239. package/dist/themes/data/textual-light.d.ts.map +1 -0
  240. package/dist/themes/data/textual-light.js +159 -0
  241. package/dist/themes/data/textual-light.js.map +1 -0
  242. package/dist/themes/data/tokyo-night.d.ts +4 -0
  243. package/dist/themes/data/tokyo-night.d.ts.map +1 -0
  244. package/dist/themes/data/tokyo-night.js +159 -0
  245. package/dist/themes/data/tokyo-night.js.map +1 -0
  246. package/dist/themes/data/types.d.ts +15 -0
  247. package/dist/themes/data/types.d.ts.map +1 -0
  248. package/dist/themes/data/types.js +2 -0
  249. package/dist/themes/data/types.js.map +1 -0
  250. package/dist/themes/palette.d.ts +20 -0
  251. package/dist/themes/palette.d.ts.map +1 -0
  252. package/dist/themes/palette.js +27 -0
  253. package/dist/themes/palette.js.map +1 -0
  254. package/dist/themes/paletteResolver.d.ts +35 -0
  255. package/dist/themes/paletteResolver.d.ts.map +1 -0
  256. package/dist/themes/paletteResolver.js +88 -0
  257. package/dist/themes/paletteResolver.js.map +1 -0
  258. package/dist/themes/registry.d.ts +17 -0
  259. package/dist/themes/registry.d.ts.map +1 -0
  260. package/dist/themes/registry.js +33 -0
  261. package/dist/themes/registry.js.map +1 -0
  262. package/dist/themes/terminalThemes.d.ts +46 -0
  263. package/dist/themes/terminalThemes.d.ts.map +1 -0
  264. package/dist/themes/terminalThemes.js +268 -0
  265. package/dist/themes/terminalThemes.js.map +1 -0
  266. package/dist/widgets/button.d.ts +47 -0
  267. package/dist/widgets/button.d.ts.map +1 -0
  268. package/dist/widgets/button.js +183 -0
  269. package/dist/widgets/button.js.map +1 -0
  270. package/dist/widgets/checkbox.d.ts +43 -0
  271. package/dist/widgets/checkbox.d.ts.map +1 -0
  272. package/dist/widgets/checkbox.js +144 -0
  273. package/dist/widgets/checkbox.js.map +1 -0
  274. package/dist/widgets/dropdown.d.ts +67 -0
  275. package/dist/widgets/dropdown.d.ts.map +1 -0
  276. package/dist/widgets/dropdown.js +373 -0
  277. package/dist/widgets/dropdown.js.map +1 -0
  278. package/dist/widgets/event-router.d.ts +73 -0
  279. package/dist/widgets/event-router.d.ts.map +1 -0
  280. package/dist/widgets/event-router.js +479 -0
  281. package/dist/widgets/event-router.js.map +1 -0
  282. package/dist/widgets/focus-manager.d.ts +26 -0
  283. package/dist/widgets/focus-manager.d.ts.map +1 -0
  284. package/dist/widgets/focus-manager.js +179 -0
  285. package/dist/widgets/focus-manager.js.map +1 -0
  286. package/dist/widgets/index.d.ts +23 -0
  287. package/dist/widgets/index.d.ts.map +1 -0
  288. package/dist/widgets/index.js +13 -0
  289. package/dist/widgets/index.js.map +1 -0
  290. package/dist/widgets/screen.d.ts +90 -0
  291. package/dist/widgets/screen.d.ts.map +1 -0
  292. package/dist/widgets/screen.js +440 -0
  293. package/dist/widgets/screen.js.map +1 -0
  294. package/dist/widgets/slider.d.ts +55 -0
  295. package/dist/widgets/slider.d.ts.map +1 -0
  296. package/dist/widgets/slider.js +248 -0
  297. package/dist/widgets/slider.js.map +1 -0
  298. package/dist/widgets/static-item.d.ts +41 -0
  299. package/dist/widgets/static-item.d.ts.map +1 -0
  300. package/dist/widgets/static-item.js +62 -0
  301. package/dist/widgets/static-item.js.map +1 -0
  302. package/dist/widgets/text-input.d.ts +50 -0
  303. package/dist/widgets/text-input.d.ts.map +1 -0
  304. package/dist/widgets/text-input.js +242 -0
  305. package/dist/widgets/text-input.js.map +1 -0
  306. package/dist/widgets/toggle.d.ts +46 -0
  307. package/dist/widgets/toggle.d.ts.map +1 -0
  308. package/dist/widgets/toggle.js +169 -0
  309. package/dist/widgets/toggle.js.map +1 -0
  310. package/dist/widgets/types.d.ts +92 -0
  311. package/dist/widgets/types.d.ts.map +1 -0
  312. package/dist/widgets/types.js +13 -0
  313. package/dist/widgets/types.js.map +1 -0
  314. package/dist/widgets/widget-base.d.ts +41 -0
  315. package/dist/widgets/widget-base.d.ts.map +1 -0
  316. package/dist/widgets/widget-base.js +159 -0
  317. package/dist/widgets/widget-base.js.map +1 -0
  318. package/package.json +76 -0
@@ -0,0 +1,434 @@
1
+ /**
2
+ * Table — tabular data with headers, borders, auto-sizing, and alignment.
3
+ */
4
+ import { cellLen } from "../core/cells.js";
5
+ import { Segment } from "../core/segment.js";
6
+ import { Style, NULL_STYLE } from "../core/style.js";
7
+ import { HEAVY_HEAD } from "../core/box.js";
8
+ import { RichText } from "../core/text.js";
9
+ function resolveStyle(style) {
10
+ if (style === undefined)
11
+ return NULL_STYLE;
12
+ if (typeof style === "string")
13
+ return Style.parse(style);
14
+ return style;
15
+ }
16
+ function toRenderable(content) {
17
+ if (content instanceof RichText)
18
+ return content;
19
+ if (typeof content === "object" && content !== null && "render" in content) {
20
+ return content;
21
+ }
22
+ return new RichText(String(content ?? ""), { end: "" });
23
+ }
24
+ function normalizePadding(padding) {
25
+ if (padding === undefined)
26
+ return [0, 1, 0, 1];
27
+ if (typeof padding === "number")
28
+ return [padding, padding, padding, padding];
29
+ if (padding.length === 2)
30
+ return [padding[0], padding[1], padding[0], padding[1]];
31
+ return padding;
32
+ }
33
+ export class Column {
34
+ header;
35
+ footer;
36
+ headerStyle;
37
+ footerStyle;
38
+ style;
39
+ justify;
40
+ width;
41
+ minWidth;
42
+ maxWidth;
43
+ ratio;
44
+ noWrap;
45
+ overflow;
46
+ _cells;
47
+ constructor(options) {
48
+ const headerVal = options?.header;
49
+ this.header = headerVal instanceof RichText
50
+ ? headerVal
51
+ : new RichText(headerVal ?? "", { end: "" });
52
+ const footerVal = options?.footer;
53
+ this.footer = footerVal !== undefined
54
+ ? (footerVal instanceof RichText ? footerVal : new RichText(footerVal, { end: "" }))
55
+ : undefined;
56
+ this.headerStyle = resolveStyle(options?.headerStyle);
57
+ this.footerStyle = resolveStyle(options?.footerStyle);
58
+ this.style = resolveStyle(options?.style);
59
+ this.justify = options?.justify ?? "left";
60
+ this.width = options?.width;
61
+ this.minWidth = options?.minWidth;
62
+ this.maxWidth = options?.maxWidth;
63
+ this.ratio = options?.ratio;
64
+ this.noWrap = options?.noWrap ?? false;
65
+ this.overflow = options?.overflow ?? "ellipsis";
66
+ this._cells = [];
67
+ }
68
+ get flexible() {
69
+ return this.ratio !== undefined && this.ratio > 0;
70
+ }
71
+ /** @internal */
72
+ addCell(cell) {
73
+ this._cells.push(cell);
74
+ }
75
+ /** @internal */
76
+ getCells() {
77
+ return this._cells;
78
+ }
79
+ copy() {
80
+ const col = new Column({
81
+ header: this.header.copy(),
82
+ footer: this.footer?.copy(),
83
+ justify: this.justify,
84
+ width: this.width,
85
+ minWidth: this.minWidth,
86
+ maxWidth: this.maxWidth,
87
+ ratio: this.ratio,
88
+ noWrap: this.noWrap,
89
+ overflow: this.overflow,
90
+ });
91
+ col.headerStyle = this.headerStyle;
92
+ col.footerStyle = this.footerStyle;
93
+ col.style = this.style;
94
+ return col;
95
+ }
96
+ }
97
+ export class Table {
98
+ _columns;
99
+ _rows;
100
+ box;
101
+ title;
102
+ caption;
103
+ expand;
104
+ showHeader;
105
+ showFooter;
106
+ showLines;
107
+ showEdge;
108
+ padding;
109
+ style;
110
+ headerStyle;
111
+ footerStyle;
112
+ borderStyle;
113
+ titleStyle;
114
+ captionStyle;
115
+ titleJustify;
116
+ captionJustify;
117
+ tableWidth;
118
+ minWidth;
119
+ rowStyles;
120
+ constructor(options) {
121
+ this._columns = [];
122
+ this._rows = [];
123
+ this.box = options?.box !== undefined ? options.box : HEAVY_HEAD;
124
+ const titleVal = options?.title;
125
+ this.title = titleVal !== undefined
126
+ ? (titleVal instanceof RichText ? titleVal : new RichText(titleVal, { end: "" }))
127
+ : undefined;
128
+ const captionVal = options?.caption;
129
+ this.caption = captionVal !== undefined
130
+ ? (captionVal instanceof RichText ? captionVal : new RichText(captionVal, { end: "" }))
131
+ : undefined;
132
+ this.expand = options?.expand ?? false;
133
+ this.showHeader = options?.showHeader !== false;
134
+ this.showFooter = options?.showFooter ?? false;
135
+ this.showLines = options?.showLines ?? false;
136
+ this.showEdge = options?.showEdge !== false;
137
+ this.padding = normalizePadding(options?.padding);
138
+ this.style = resolveStyle(options?.style);
139
+ this.headerStyle = resolveStyle(options?.headerStyle ?? "table.header");
140
+ this.footerStyle = resolveStyle(options?.footerStyle ?? "table.footer");
141
+ this.borderStyle = resolveStyle(options?.borderStyle);
142
+ this.titleStyle = resolveStyle(options?.titleStyle ?? "table.title");
143
+ this.captionStyle = resolveStyle(options?.captionStyle ?? "table.caption");
144
+ this.titleJustify = options?.titleJustify ?? "center";
145
+ this.captionJustify = options?.captionJustify ?? "center";
146
+ this.tableWidth = options?.width;
147
+ this.minWidth = options?.minWidth;
148
+ this.rowStyles = options?.rowStyles ?? [];
149
+ }
150
+ get columns() {
151
+ return this._columns;
152
+ }
153
+ get rowCount() {
154
+ return this._rows.length;
155
+ }
156
+ addColumn(header, options) {
157
+ const col = new Column({ ...options, header: header ?? options?.header });
158
+ this._columns.push(col);
159
+ return this;
160
+ }
161
+ addRow(...cells) {
162
+ // If last arg is an options object with endSection, extract it
163
+ let endSection = false;
164
+ const lastArg = cells[cells.length - 1];
165
+ if (typeof lastArg === "object" &&
166
+ lastArg !== null &&
167
+ !(lastArg instanceof RichText) &&
168
+ !("render" in lastArg) &&
169
+ "endSection" in lastArg) {
170
+ endSection = lastArg.endSection;
171
+ cells = cells.slice(0, -1);
172
+ }
173
+ // Auto-create columns if needed
174
+ while (this._columns.length < cells.length) {
175
+ this.addColumn();
176
+ }
177
+ this._rows.push({ cells, endSection });
178
+ return this;
179
+ }
180
+ addSection() {
181
+ if (this._rows.length > 0) {
182
+ this._rows[this._rows.length - 1].endSection = true;
183
+ }
184
+ return this;
185
+ }
186
+ *render(options) {
187
+ if (this._columns.length === 0) {
188
+ yield Segment.line();
189
+ return;
190
+ }
191
+ const box = this.box
192
+ ? (options.asciiOnly ? this.box.substitute({ asciiOnly: true }) : this.box)
193
+ : null;
194
+ const border = this.borderStyle.isNull ? undefined : this.borderStyle;
195
+ // Calculate column widths
196
+ const totalWidth = this.tableWidth ?? (this.expand ? options.maxWidth : undefined);
197
+ const colWidths = this._calculateWidths(options, totalWidth);
198
+ const tableActualWidth = this._totalTableWidth(colWidths, box);
199
+ const [_padTop, padRight, _padBottom, padLeft] = this.padding;
200
+ // Title
201
+ if (this.title) {
202
+ yield* this._renderTitle(this.title, tableActualWidth, this.titleStyle, this.titleJustify);
203
+ }
204
+ // Top border
205
+ if (box && this.showEdge) {
206
+ yield* box.getTop(colWidths.map((w) => w + padLeft + padRight), border, true);
207
+ }
208
+ // Header row
209
+ if (this.showHeader && this._columns.some((c) => c.header.hasContent)) {
210
+ const headerCells = this._columns.map((c) => c.header);
211
+ yield* this._renderRow(headerCells, colWidths, box, border, this.headerStyle);
212
+ // Header separator
213
+ if (box) {
214
+ yield* box.getRow(colWidths.map((w) => w + padLeft + padRight), "head", border, this.showEdge);
215
+ }
216
+ }
217
+ // Data rows
218
+ for (let rowIdx = 0; rowIdx < this._rows.length; rowIdx++) {
219
+ const row = this._rows[rowIdx];
220
+ const rowCells = [];
221
+ for (let colIdx = 0; colIdx < this._columns.length; colIdx++) {
222
+ const cell = row.cells[colIdx];
223
+ rowCells.push(toRenderable(cell));
224
+ }
225
+ const rowStyle = this.rowStyles.length > 0
226
+ ? resolveStyle(this.rowStyles[rowIdx % this.rowStyles.length])
227
+ : NULL_STYLE;
228
+ yield* this._renderRow(rowCells, colWidths, box, border, rowStyle);
229
+ // Row separator
230
+ const showSep = this.showLines || row.endSection;
231
+ if (showSep && box && rowIdx < this._rows.length - 1) {
232
+ yield* box.getRow(colWidths.map((w) => w + padLeft + padRight), "row", border, this.showEdge);
233
+ }
234
+ }
235
+ // Footer
236
+ if (this.showFooter && this._columns.some((c) => c.footer)) {
237
+ if (box) {
238
+ yield* box.getRow(colWidths.map((w) => w + padLeft + padRight), "foot", border, this.showEdge);
239
+ }
240
+ const footerCells = this._columns.map((c) => (c.footer ?? new RichText("", { end: "" })));
241
+ yield* this._renderRow(footerCells, colWidths, box, border, this.footerStyle);
242
+ }
243
+ // Bottom border
244
+ if (box && this.showEdge) {
245
+ yield* box.getBottom(colWidths.map((w) => w + padLeft + padRight), border, true);
246
+ }
247
+ // Caption
248
+ if (this.caption) {
249
+ yield* this._renderTitle(this.caption, tableActualWidth, this.captionStyle, this.captionJustify);
250
+ }
251
+ }
252
+ measure(options) {
253
+ const colWidths = this._calculateWidths(options);
254
+ const total = this._totalTableWidth(colWidths, this.box);
255
+ return {
256
+ minimum: Math.max(this._columns.length * 2, this.minWidth ?? 0),
257
+ maximum: Math.min(total, options.maxWidth),
258
+ };
259
+ }
260
+ // --- Static ---
261
+ static grid(options) {
262
+ return new Table({
263
+ ...options,
264
+ box: null,
265
+ showHeader: false,
266
+ showEdge: false,
267
+ padding: options?.padding ?? [0, 1, 0, 0],
268
+ });
269
+ }
270
+ // --- Private ---
271
+ _calculateWidths(options, totalWidth) {
272
+ const numCols = this._columns.length;
273
+ if (numCols === 0)
274
+ return [];
275
+ const [_padTop, padRight, _padBottom, padLeft] = this.padding;
276
+ const cellPad = padLeft + padRight;
277
+ const borders = this.box
278
+ ? (this.showEdge ? 2 : 0) + (numCols - 1)
279
+ : 0;
280
+ const availableWidth = (totalWidth ?? options.maxWidth) - borders - cellPad * numCols;
281
+ const widths = new Array(numCols);
282
+ // Fixed width columns first
283
+ let remainingWidth = availableWidth;
284
+ let flexCols = 0;
285
+ for (let i = 0; i < numCols; i++) {
286
+ const col = this._columns[i];
287
+ if (col.width !== undefined) {
288
+ widths[i] = col.width;
289
+ remainingWidth -= col.width;
290
+ }
291
+ else {
292
+ widths[i] = 0;
293
+ flexCols++;
294
+ }
295
+ }
296
+ // Distribute remaining width among flex columns
297
+ if (flexCols > 0) {
298
+ // Measure content to determine natural widths
299
+ const naturalWidths = [];
300
+ for (let i = 0; i < numCols; i++) {
301
+ const col = this._columns[i];
302
+ if (col.width !== undefined) {
303
+ naturalWidths.push(col.width);
304
+ continue;
305
+ }
306
+ let maxContent = cellLen(col.header.plain);
307
+ for (const row of this._rows) {
308
+ const cell = row.cells[i];
309
+ const cellText = String(cell ?? "");
310
+ maxContent = Math.max(maxContent, cellLen(cellText));
311
+ }
312
+ if (col.minWidth !== undefined)
313
+ maxContent = Math.max(maxContent, col.minWidth);
314
+ if (col.maxWidth !== undefined)
315
+ maxContent = Math.min(maxContent, col.maxWidth);
316
+ naturalWidths.push(maxContent);
317
+ }
318
+ // Check if ratio-based distribution applies
319
+ const hasRatios = this._columns.some((c) => c.flexible);
320
+ if (hasRatios) {
321
+ const totalRatio = this._columns.reduce((s, c) => s + (c.ratio ?? 1), 0);
322
+ for (let i = 0; i < numCols; i++) {
323
+ if (this._columns[i].width !== undefined)
324
+ continue;
325
+ const ratio = this._columns[i].ratio ?? 1;
326
+ widths[i] = Math.max(1, Math.floor(remainingWidth * ratio / totalRatio));
327
+ }
328
+ }
329
+ else {
330
+ // Distribute equally or by natural width
331
+ const totalNatural = naturalWidths.reduce((s, w, i) => this._columns[i].width !== undefined ? s : s + w, 0);
332
+ for (let i = 0; i < numCols; i++) {
333
+ if (this._columns[i].width !== undefined)
334
+ continue;
335
+ const natural = naturalWidths[i];
336
+ if (totalNatural <= remainingWidth) {
337
+ widths[i] = natural;
338
+ }
339
+ else {
340
+ widths[i] = Math.max(1, Math.floor(remainingWidth * natural / totalNatural));
341
+ }
342
+ }
343
+ }
344
+ }
345
+ return widths;
346
+ }
347
+ _totalTableWidth(colWidths, box) {
348
+ const [_padTop, padRight, _padBottom, padLeft] = this.padding;
349
+ const cellPad = padLeft + padRight;
350
+ const contentWidth = colWidths.reduce((s, w) => s + w + cellPad, 0);
351
+ const borders = box
352
+ ? (this.showEdge ? 2 : 0) + (colWidths.length - 1)
353
+ : 0;
354
+ return contentWidth + borders;
355
+ }
356
+ *_renderRow(cells, colWidths, box, border, rowStyle) {
357
+ const [_padTop, padRight, _padBottom, padLeft] = this.padding;
358
+ // Render each cell and split into lines
359
+ const cellLines = [];
360
+ let maxLines = 1;
361
+ for (let i = 0; i < this._columns.length; i++) {
362
+ const col = this._columns[i];
363
+ const cell = cells[i] ?? toRenderable("");
364
+ const cellWidth = colWidths[i] ?? 1;
365
+ const cellOpts = {
366
+ ...({ maxWidth: cellWidth }),
367
+ justify: col.justify,
368
+ overflow: col.overflow,
369
+ noWrap: col.noWrap,
370
+ };
371
+ const segs = [...cell.render(cellOpts)];
372
+ const lines = Segment.splitLines(segs);
373
+ const adjusted = lines.map((line) => Segment.adjustLineLength(line, cellWidth));
374
+ // Ensure at least one line
375
+ const finalLines = adjusted.length > 0 ? adjusted : [[new Segment(" ".repeat(cellWidth))]];
376
+ cellLines.push(finalLines);
377
+ maxLines = Math.max(maxLines, finalLines.length);
378
+ }
379
+ // Render line by line
380
+ for (let lineIdx = 0; lineIdx < maxLines; lineIdx++) {
381
+ if (box && this.showEdge) {
382
+ yield new Segment(box.left, border);
383
+ }
384
+ for (let colIdx = 0; colIdx < this._columns.length; colIdx++) {
385
+ if (colIdx > 0 && box) {
386
+ yield new Segment(box.vertical, border);
387
+ }
388
+ const colLines = cellLines[colIdx];
389
+ const cellWidth = colWidths[colIdx] ?? 1;
390
+ // Left padding
391
+ if (padLeft > 0)
392
+ yield new Segment(" ".repeat(padLeft));
393
+ const line = colLines[lineIdx];
394
+ if (line) {
395
+ const adjusted = Segment.adjustLineLength(line, cellWidth);
396
+ const styled = rowStyle.isNull ? adjusted : [...Segment.applyStyle(adjusted, rowStyle)];
397
+ yield* styled;
398
+ }
399
+ else {
400
+ yield new Segment(" ".repeat(cellWidth));
401
+ }
402
+ // Right padding
403
+ if (padRight > 0)
404
+ yield new Segment(" ".repeat(padRight));
405
+ }
406
+ if (box && this.showEdge) {
407
+ yield new Segment(box.right, border);
408
+ }
409
+ yield Segment.line();
410
+ }
411
+ }
412
+ *_renderTitle(text, tableWidth, style, justify) {
413
+ const titleStyle = style.isNull ? undefined : style;
414
+ const plain = text.plain;
415
+ const textWidth = cellLen(plain);
416
+ if (textWidth >= tableWidth) {
417
+ yield new Segment(plain.slice(0, tableWidth), titleStyle);
418
+ yield Segment.line();
419
+ return;
420
+ }
421
+ const gap = tableWidth - textWidth;
422
+ const leftPad = justify === "right" ? gap
423
+ : justify === "center" ? Math.floor(gap / 2)
424
+ : 0;
425
+ const rightPad = gap - leftPad;
426
+ if (leftPad > 0)
427
+ yield new Segment(" ".repeat(leftPad));
428
+ yield new Segment(plain, titleStyle);
429
+ if (rightPad > 0)
430
+ yield new Segment(" ".repeat(rightPad));
431
+ yield Segment.line();
432
+ }
433
+ }
434
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/renderables/table.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Traceback — renders error tracebacks with formatting.
3
+ */
4
+ import { Segment } from "../core/segment.js";
5
+ import type { Renderable, RenderOptions } from "../core/protocol.js";
6
+ export interface TracebackOptions {
7
+ showLocals?: boolean;
8
+ suppress?: string[];
9
+ maxFrames?: number;
10
+ width?: number;
11
+ theme?: string;
12
+ }
13
+ export declare class Traceback implements Renderable {
14
+ readonly error: Error;
15
+ readonly maxFrames: number;
16
+ readonly suppress: string[];
17
+ readonly showLocals: boolean;
18
+ readonly width: number | undefined;
19
+ readonly theme: string | undefined;
20
+ constructor(error: Error, options?: TracebackOptions);
21
+ render(_options: RenderOptions): Iterable<Segment>;
22
+ private _renderFrame;
23
+ /** Install as global uncaught exception handler */
24
+ static install(options?: TracebackOptions): void;
25
+ }
26
+ //# sourceMappingURL=traceback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traceback.d.ts","sourceRoot":"","sources":["../../src/renderables/traceback.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAErE,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAkCD,qBAAa,SAAU,YAAW,UAAU;IAC1C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;gBAEvB,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,gBAAgB;IASnD,MAAM,CAAC,QAAQ,EAAE,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC;IA6CnD,OAAO,CAAE,YAAY;IAkBrB,mDAAmD;IACnD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI;CAQjD"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Traceback — renders error tracebacks with formatting.
3
+ */
4
+ import { Segment } from "../core/segment.js";
5
+ import { Style } from "../core/style.js";
6
+ import { Console } from "../core/console.js";
7
+ function parseStack(error) {
8
+ const stack = error.stack ?? "";
9
+ const lines = stack.split("\n");
10
+ const frames = [];
11
+ for (const line of lines) {
12
+ const trimmed = line.trim();
13
+ // Node.js format: " at functionName (file:line:column)"
14
+ // or: " at file:line:column"
15
+ const match = /^\s*at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?/.exec(trimmed);
16
+ if (match) {
17
+ frames.push({
18
+ function: match[1] || undefined,
19
+ file: match[2],
20
+ line: parseInt(match[3], 10),
21
+ column: parseInt(match[4], 10),
22
+ });
23
+ }
24
+ }
25
+ return frames;
26
+ }
27
+ export class Traceback {
28
+ error;
29
+ maxFrames;
30
+ suppress;
31
+ showLocals;
32
+ width;
33
+ theme;
34
+ constructor(error, options) {
35
+ this.error = error;
36
+ this.maxFrames = options?.maxFrames ?? 100;
37
+ this.suppress = options?.suppress ?? [];
38
+ this.showLocals = options?.showLocals ?? false;
39
+ this.width = options?.width;
40
+ this.theme = options?.theme;
41
+ }
42
+ *render(_options) {
43
+ const excTypeStyle = Style.parse("traceback.exc_type");
44
+ const textStyle = Style.parse("traceback.text");
45
+ // Error type and message
46
+ const errorName = this.error.name || "Error";
47
+ const errorMessage = this.error.message || "";
48
+ yield new Segment(errorName, excTypeStyle);
49
+ yield new Segment(": ");
50
+ yield new Segment(errorMessage, textStyle);
51
+ yield Segment.line();
52
+ yield Segment.line();
53
+ // Stack frames — suppressed frames show file/line only (not removed)
54
+ const frames = parseStack(this.error);
55
+ const filteredFrames = this.suppress.length > 0
56
+ ? frames.map((f) => ({
57
+ ...f,
58
+ suppressed: this.suppress.some((s) => f.file.includes(s)),
59
+ }))
60
+ : frames;
61
+ let displayFrames = filteredFrames;
62
+ if (this.maxFrames > 0 && displayFrames.length > this.maxFrames) {
63
+ const half = Math.floor(this.maxFrames / 2);
64
+ const first = displayFrames.slice(0, half);
65
+ const last = displayFrames.slice(-half);
66
+ const omitted = displayFrames.length - this.maxFrames;
67
+ for (const frame of first) {
68
+ yield* this._renderFrame(frame);
69
+ }
70
+ yield new Segment(` ... ${omitted} frames omitted ...`, textStyle);
71
+ yield Segment.line();
72
+ for (const frame of last) {
73
+ yield* this._renderFrame(frame);
74
+ }
75
+ }
76
+ else {
77
+ for (const frame of displayFrames) {
78
+ yield* this._renderFrame(frame);
79
+ }
80
+ }
81
+ }
82
+ *_renderFrame(frame) {
83
+ const pathStyle = Style.parse("dim");
84
+ const lineNoStyle = Style.parse("traceback.offset");
85
+ yield new Segment(" ");
86
+ // Spec: suppressed frames show file and line only — no function name
87
+ if (frame.function && !frame.suppressed) {
88
+ yield new Segment(frame.function, Style.parse("bold"));
89
+ yield new Segment(" ");
90
+ }
91
+ yield new Segment(frame.file, pathStyle);
92
+ if (frame.line !== undefined) {
93
+ yield new Segment(":");
94
+ yield new Segment(String(frame.line), lineNoStyle);
95
+ }
96
+ yield Segment.line();
97
+ }
98
+ /** Install as global uncaught exception handler */
99
+ static install(options) {
100
+ process.on("uncaughtException", (error) => {
101
+ const tb = new Traceback(error, options);
102
+ const cons = new Console({ stderr: true });
103
+ cons.print(tb);
104
+ process.exit(1);
105
+ });
106
+ }
107
+ }
108
+ //# sourceMappingURL=traceback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traceback.js","sourceRoot":"","sources":["../../src/renderables/traceback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Tree — hierarchical view with guide lines.
3
+ */
4
+ import { Segment } from "../core/segment.js";
5
+ import { Style } from "../core/style.js";
6
+ import { RichText } from "../core/text.js";
7
+ import type { Renderable, Measurable, RenderOptions } from "../core/protocol.js";
8
+ export interface TreeOptions {
9
+ expanded?: boolean;
10
+ hideRoot?: boolean;
11
+ guide_style?: string | Style;
12
+ style?: string | Style;
13
+ }
14
+ export declare class Tree implements Renderable, Measurable {
15
+ readonly label: Renderable;
16
+ readonly children: Tree[];
17
+ expanded: boolean;
18
+ readonly hideRoot: boolean;
19
+ readonly guideStyle: Style;
20
+ readonly style: Style;
21
+ constructor(label: string | RichText | Renderable, options?: TreeOptions);
22
+ add(label: string | RichText | Renderable, options?: TreeOptions): Tree;
23
+ render(options: RenderOptions): Iterable<Segment>;
24
+ private _renderNode;
25
+ measure(options: RenderOptions): {
26
+ minimum: number;
27
+ maximum: number;
28
+ };
29
+ }
30
+ //# sourceMappingURL=tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/renderables/tree.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAc,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACd,MAAM,qBAAqB,CAAC;AAa7B,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CACxB;AAmBD,qBAAa,IAAK,YAAW,UAAU,EAAE,UAAU;IACjD,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;gBAGpB,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,EACrC,OAAO,CAAC,EAAE,WAAW;IAUvB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI;IAUtE,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC;IAIlD,OAAO,CAAE,WAAW;IAwDpB,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAGtE"}