@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,202 @@
1
+ /**
2
+ * Panel — a bordered box that wraps content, with optional title and subtitle.
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 { ROUNDED } from "../core/box.js";
8
+ import { Measurement } from "../core/measure.js";
9
+ import { RichText } from "../core/text.js";
10
+ import { isMeasurable } from "../core/protocol.js";
11
+ function normalizePadding(padding) {
12
+ if (padding === undefined)
13
+ return [0, 1, 0, 1];
14
+ if (typeof padding === "number")
15
+ return [padding, padding, padding, padding];
16
+ if (padding.length === 2)
17
+ return [padding[0], padding[1], padding[0], padding[1]];
18
+ return padding;
19
+ }
20
+ function resolveStyle(style) {
21
+ if (style === undefined)
22
+ return NULL_STYLE;
23
+ if (typeof style === "string")
24
+ return Style.parse(style);
25
+ return style;
26
+ }
27
+ function toRenderable(content) {
28
+ if (typeof content === "string")
29
+ return new RichText(content);
30
+ if (content instanceof RichText)
31
+ return content;
32
+ return content;
33
+ }
34
+ export class Panel {
35
+ renderable;
36
+ box;
37
+ title;
38
+ subtitle;
39
+ expand;
40
+ style;
41
+ borderStyle;
42
+ width;
43
+ padding;
44
+ constructor(content, options) {
45
+ this.renderable = toRenderable(content);
46
+ this.box = options?.box ?? ROUNDED;
47
+ this.title = options?.title;
48
+ this.subtitle = options?.subtitle;
49
+ this.expand = options?.expand !== false;
50
+ this.style = resolveStyle(options?.style);
51
+ this.borderStyle = resolveStyle(options?.borderStyle);
52
+ this.width = options?.width;
53
+ this.padding = normalizePadding(options?.padding);
54
+ }
55
+ *render(options) {
56
+ const box = options.asciiOnly ? this.box.substitute({ asciiOnly: true }) : this.box;
57
+ const border = this.borderStyle.isNull ? undefined : this.borderStyle;
58
+ const contentStyle = this.style.isNull ? undefined : this.style;
59
+ // Determine panel width
60
+ const panelWidth = this._getPanelWidth(options);
61
+ const [padTop, padRight, padBottom, padLeft] = this.padding;
62
+ const innerWidth = Math.max(1, panelWidth - 2 - padLeft - padRight); // 2 for border chars
63
+ // Render content
64
+ const innerOptions = {
65
+ ...options,
66
+ maxWidth: innerWidth,
67
+ };
68
+ const contentSegments = [...this.renderable.render(innerOptions)];
69
+ const contentLines = Segment.splitLines(contentSegments);
70
+ // Top border (with optional title)
71
+ yield* this._renderTopBorder(box, panelWidth, border);
72
+ // Top padding
73
+ for (let i = 0; i < padTop; i++) {
74
+ yield* this._renderBlankLine(box, panelWidth, padLeft, padRight, innerWidth, border, contentStyle);
75
+ }
76
+ // Content lines
77
+ for (const line of contentLines) {
78
+ yield new Segment(box.left, border);
79
+ if (padLeft > 0)
80
+ yield new Segment(" ".repeat(padLeft), contentStyle);
81
+ yield* line;
82
+ // Pad to fill inner width
83
+ const lineWidth = Segment.getLineLength(line);
84
+ const rightPad = innerWidth - lineWidth + padRight;
85
+ if (rightPad > 0)
86
+ yield new Segment(" ".repeat(rightPad), contentStyle);
87
+ yield new Segment(box.right, border);
88
+ yield Segment.line();
89
+ }
90
+ // Bottom padding
91
+ for (let i = 0; i < padBottom; i++) {
92
+ yield* this._renderBlankLine(box, panelWidth, padLeft, padRight, innerWidth, border, contentStyle);
93
+ }
94
+ // Bottom border (with optional subtitle)
95
+ yield* this._renderBottomBorder(box, panelWidth, border);
96
+ }
97
+ measure(options) {
98
+ const [_padTop, padRight, _padBottom, padLeft] = this.padding;
99
+ const borderWidth = 2; // left + right border chars
100
+ const horizontalPad = padLeft + padRight;
101
+ if (isMeasurable(this.renderable)) {
102
+ const innerOptions = {
103
+ ...options,
104
+ maxWidth: Math.max(1, options.maxWidth - borderWidth - horizontalPad),
105
+ };
106
+ const measurement = Measurement.get(innerOptions, this.renderable);
107
+ return {
108
+ minimum: Math.max(borderWidth + horizontalPad, measurement.minimum + borderWidth + horizontalPad),
109
+ maximum: Math.min(options.maxWidth, measurement.maximum + borderWidth + horizontalPad),
110
+ };
111
+ }
112
+ return { minimum: borderWidth + horizontalPad, maximum: options.maxWidth };
113
+ }
114
+ _getPanelWidth(options) {
115
+ if (this.width !== undefined)
116
+ return Math.min(this.width, options.maxWidth);
117
+ if (this.expand)
118
+ return options.maxWidth;
119
+ // Fit mode: measure content
120
+ const [_padTop, padRight, _padBottom, padLeft] = this.padding;
121
+ const borderWidth = 2;
122
+ const horizontalPad = padLeft + padRight;
123
+ if (isMeasurable(this.renderable)) {
124
+ const innerOptions = {
125
+ ...options,
126
+ maxWidth: Math.max(1, options.maxWidth - borderWidth - horizontalPad),
127
+ };
128
+ const measurement = Measurement.get(innerOptions, this.renderable);
129
+ return Math.min(options.maxWidth, measurement.maximum + borderWidth + horizontalPad);
130
+ }
131
+ return options.maxWidth;
132
+ }
133
+ *_renderTopBorder(box, panelWidth, border) {
134
+ const innerBorderWidth = panelWidth - 2; // minus left/right corner
135
+ if (!this.title) {
136
+ yield new Segment(box.topLeft, border);
137
+ yield new Segment(box.top.repeat(innerBorderWidth), border);
138
+ yield new Segment(box.topRight, border);
139
+ yield Segment.line();
140
+ return;
141
+ }
142
+ const titleText = typeof this.title === "string" ? this.title : this.title.plain;
143
+ const titleDisplay = ` ${titleText} `;
144
+ const titleWidth = cellLen(titleDisplay);
145
+ yield new Segment(box.topLeft, border);
146
+ if (titleWidth >= innerBorderWidth) {
147
+ // Title fills the border
148
+ yield new Segment(titleDisplay.slice(0, innerBorderWidth), border);
149
+ }
150
+ else {
151
+ // Center the title in the top border
152
+ const leftRuleWidth = Math.floor((innerBorderWidth - titleWidth) / 2);
153
+ const rightRuleWidth = innerBorderWidth - titleWidth - leftRuleWidth;
154
+ if (leftRuleWidth > 0)
155
+ yield new Segment(box.top.repeat(leftRuleWidth), border);
156
+ yield new Segment(titleDisplay, border);
157
+ if (rightRuleWidth > 0)
158
+ yield new Segment(box.top.repeat(rightRuleWidth), border);
159
+ }
160
+ yield new Segment(box.topRight, border);
161
+ yield Segment.line();
162
+ }
163
+ *_renderBottomBorder(box, panelWidth, border) {
164
+ const innerBorderWidth = panelWidth - 2;
165
+ if (!this.subtitle) {
166
+ yield new Segment(box.bottomLeft, border);
167
+ yield new Segment(box.bottom.repeat(innerBorderWidth), border);
168
+ yield new Segment(box.bottomRight, border);
169
+ yield Segment.line();
170
+ return;
171
+ }
172
+ const subtitleText = typeof this.subtitle === "string" ? this.subtitle : this.subtitle.plain;
173
+ const subtitleDisplay = ` ${subtitleText} `;
174
+ const subtitleWidth = cellLen(subtitleDisplay);
175
+ yield new Segment(box.bottomLeft, border);
176
+ if (subtitleWidth >= innerBorderWidth) {
177
+ yield new Segment(subtitleDisplay.slice(0, innerBorderWidth), border);
178
+ }
179
+ else {
180
+ const leftRuleWidth = Math.floor((innerBorderWidth - subtitleWidth) / 2);
181
+ const rightRuleWidth = innerBorderWidth - subtitleWidth - leftRuleWidth;
182
+ if (leftRuleWidth > 0)
183
+ yield new Segment(box.bottom.repeat(leftRuleWidth), border);
184
+ yield new Segment(subtitleDisplay, border);
185
+ if (rightRuleWidth > 0)
186
+ yield new Segment(box.bottom.repeat(rightRuleWidth), border);
187
+ }
188
+ yield new Segment(box.bottomRight, border);
189
+ yield Segment.line();
190
+ }
191
+ *_renderBlankLine(box, _panelWidth, padLeft, padRight, innerWidth, border, contentStyle) {
192
+ yield new Segment(box.left, border);
193
+ yield new Segment(" ".repeat(padLeft + innerWidth + padRight), contentStyle);
194
+ yield new Segment(box.right, border);
195
+ yield Segment.line();
196
+ }
197
+ // --- Static factory ---
198
+ static fit(content, options) {
199
+ return new Panel(content, { ...options, expand: false });
200
+ }
201
+ }
202
+ //# sourceMappingURL=panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel.js","sourceRoot":"","sources":["../../src/renderables/panel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Pretty — formats JavaScript data structures with highlighting.
3
+ */
4
+ import { Segment } from "../core/segment.js";
5
+ import type { Renderable, Measurable, RenderOptions } from "../core/protocol.js";
6
+ export interface PrettyOptions {
7
+ indent?: number;
8
+ expandAll?: boolean;
9
+ maxLength?: number;
10
+ maxString?: number;
11
+ indentGuides?: boolean;
12
+ }
13
+ export declare class Pretty implements Renderable, Measurable {
14
+ readonly data: unknown;
15
+ readonly indent: number;
16
+ readonly expandAll: boolean;
17
+ readonly maxLength: number | undefined;
18
+ readonly maxString: number | undefined;
19
+ readonly indentGuides: boolean;
20
+ constructor(data: unknown, options?: PrettyOptions);
21
+ render(options: RenderOptions): Iterable<Segment>;
22
+ measure(_options: RenderOptions): {
23
+ minimum: number;
24
+ maximum: number;
25
+ };
26
+ private _format;
27
+ private _addIndentGuides;
28
+ }
29
+ //# sourceMappingURL=pretty.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pretty.d.ts","sourceRoot":"","sources":["../../src/renderables/pretty.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAI7C,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACd,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAID,qBAAa,MAAO,YAAW,UAAU,EAAE,UAAU;IACnD,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;gBAEnB,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa;IASjD,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC;IAYlD,OAAO,CAAC,QAAQ,EAAE,aAAa,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAUtE,OAAO,CAAC,OAAO;IA6Ff,OAAO,CAAC,gBAAgB;CAczB"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Pretty — formats JavaScript data structures with highlighting.
3
+ */
4
+ import { cellLen } from "../core/cells.js";
5
+ import { Style } from "../core/style.js";
6
+ import { RichText } from "../core/text.js";
7
+ import { ReprHighlighter } from "../core/highlighter.js";
8
+ const reprHighlighter = new ReprHighlighter();
9
+ export class Pretty {
10
+ data;
11
+ indent;
12
+ expandAll;
13
+ maxLength;
14
+ maxString;
15
+ indentGuides;
16
+ constructor(data, options) {
17
+ this.data = data;
18
+ this.indent = options?.indent ?? 4;
19
+ this.expandAll = options?.expandAll ?? false;
20
+ this.maxLength = options?.maxLength;
21
+ this.maxString = options?.maxString;
22
+ this.indentGuides = options?.indentGuides !== false;
23
+ }
24
+ *render(options) {
25
+ const formatted = this._format(this.data, 0, options.maxWidth);
26
+ const text = new RichText(formatted, { end: "" });
27
+ reprHighlighter.highlight(text);
28
+ if (this.indentGuides) {
29
+ this._addIndentGuides(text);
30
+ }
31
+ yield* text.render(options);
32
+ }
33
+ measure(_options) {
34
+ const formatted = this._format(this.data, 0, _options.maxWidth);
35
+ const lines = formatted.split("\n");
36
+ let max = 0;
37
+ for (const line of lines) {
38
+ max = Math.max(max, cellLen(line));
39
+ }
40
+ return { minimum: 1, maximum: Math.min(max, _options.maxWidth) };
41
+ }
42
+ _format(value, depth, maxWidth) {
43
+ const indentStr = " ".repeat(this.indent * depth);
44
+ const innerIndent = " ".repeat(this.indent * (depth + 1));
45
+ if (value === null)
46
+ return "null";
47
+ if (value === undefined)
48
+ return "undefined";
49
+ switch (typeof value) {
50
+ case "string": {
51
+ let str = value;
52
+ if (this.maxString !== undefined && str.length > this.maxString) {
53
+ str = str.slice(0, this.maxString) + `+${value.length - this.maxString}`;
54
+ }
55
+ return JSON.stringify(str);
56
+ }
57
+ case "number":
58
+ case "bigint":
59
+ return String(value);
60
+ case "boolean":
61
+ return String(value);
62
+ case "symbol":
63
+ return value.toString();
64
+ case "function":
65
+ return `[Function: ${value.name || "anonymous"}]`;
66
+ }
67
+ if (Array.isArray(value)) {
68
+ if (value.length === 0)
69
+ return "[]";
70
+ const items = this.maxLength !== undefined
71
+ ? value.slice(0, this.maxLength)
72
+ : value;
73
+ const remaining = this.maxLength !== undefined
74
+ ? Math.max(0, value.length - this.maxLength)
75
+ : 0;
76
+ // Try compact first
77
+ if (!this.expandAll) {
78
+ const compact = "[" + items.map((v) => this._format(v, 0, maxWidth)).join(", ") +
79
+ (remaining > 0 ? `, ... +${remaining}` : "") + "]";
80
+ if (cellLen(indentStr + compact) <= maxWidth)
81
+ return compact;
82
+ }
83
+ const parts = items.map((v) => innerIndent + this._format(v, depth + 1, maxWidth));
84
+ if (remaining > 0)
85
+ parts.push(innerIndent + `... +${remaining}`);
86
+ return "[\n" + parts.join(",\n") + "\n" + indentStr + "]";
87
+ }
88
+ if (value instanceof Map) {
89
+ if (value.size === 0)
90
+ return "Map {}";
91
+ const entries = [...value.entries()];
92
+ const items = this.maxLength !== undefined ? entries.slice(0, this.maxLength) : entries;
93
+ const parts = items.map(([k, v]) => innerIndent + this._format(k, depth + 1, maxWidth) + " => " + this._format(v, depth + 1, maxWidth));
94
+ return "Map {\n" + parts.join(",\n") + "\n" + indentStr + "}";
95
+ }
96
+ if (value instanceof Set) {
97
+ if (value.size === 0)
98
+ return "Set {}";
99
+ const items = [...value];
100
+ const bounded = this.maxLength !== undefined ? items.slice(0, this.maxLength) : items;
101
+ const parts = bounded.map((v) => innerIndent + this._format(v, depth + 1, maxWidth));
102
+ return "Set {\n" + parts.join(",\n") + "\n" + indentStr + "}";
103
+ }
104
+ // Plain objects
105
+ if (typeof value === "object") {
106
+ const obj = value;
107
+ const keys = Object.keys(obj);
108
+ if (keys.length === 0)
109
+ return "{}";
110
+ const items = this.maxLength !== undefined ? keys.slice(0, this.maxLength) : keys;
111
+ const remaining = this.maxLength !== undefined ? Math.max(0, keys.length - this.maxLength) : 0;
112
+ // Try compact
113
+ if (!this.expandAll) {
114
+ const compact = "{ " + items.map((k) => `${k}: ${this._format(obj[k], 0, maxWidth)}`).join(", ") +
115
+ (remaining > 0 ? `, ... +${remaining}` : "") + " }";
116
+ if (cellLen(indentStr + compact) <= maxWidth)
117
+ return compact;
118
+ }
119
+ const parts = items.map((k) => innerIndent + `${k}: ${this._format(obj[k], depth + 1, maxWidth)}`);
120
+ if (remaining > 0)
121
+ parts.push(innerIndent + `... +${remaining}`);
122
+ return "{\n" + parts.join(",\n") + "\n" + indentStr + "}";
123
+ }
124
+ return String(value);
125
+ }
126
+ _addIndentGuides(text) {
127
+ const guideStyle = Style.parse("repr.indent");
128
+ const lines = text.plain.split("\n");
129
+ let offset = 0;
130
+ for (const line of lines) {
131
+ const leadingSpaces = line.length - line.trimStart().length;
132
+ for (let i = 0; i < leadingSpaces; i += this.indent) {
133
+ if (i + offset < text.length) {
134
+ text.stylize(guideStyle, offset + i, offset + i + 1);
135
+ }
136
+ }
137
+ offset += line.length + 1; // +1 for newline
138
+ }
139
+ }
140
+ }
141
+ //# sourceMappingURL=pretty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pretty.js","sourceRoot":"","sources":["../../src/renderables/pretty.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Progress — displays continuously updated progress bars.
3
+ */
4
+ import { Segment } from "../core/segment.js";
5
+ import { Console } from "../core/console.js";
6
+ import type { Renderable, RenderOptions } from "../core/protocol.js";
7
+ export interface TaskOptions {
8
+ total?: number;
9
+ start?: boolean;
10
+ visible?: boolean;
11
+ }
12
+ export interface TaskUpdateOptions {
13
+ completed?: number;
14
+ advance?: number;
15
+ description?: string;
16
+ visible?: boolean;
17
+ refresh?: boolean;
18
+ }
19
+ interface Task {
20
+ id: number;
21
+ description: string;
22
+ total: number | undefined;
23
+ completed: number;
24
+ started: boolean;
25
+ visible: boolean;
26
+ startTime: number;
27
+ elapsed: number;
28
+ }
29
+ export interface ProgressColumn extends Renderable {
30
+ render(options: RenderOptions, task?: Task): Iterable<Segment>;
31
+ }
32
+ export declare class TextColumn implements ProgressColumn {
33
+ readonly format: string;
34
+ constructor(format?: string);
35
+ render(options: RenderOptions, task?: Task): Iterable<Segment>;
36
+ }
37
+ export declare class BarColumn implements ProgressColumn {
38
+ readonly barWidth: number;
39
+ constructor(barWidth?: number);
40
+ render(_options: RenderOptions, task?: Task): Iterable<Segment>;
41
+ }
42
+ export declare class TaskProgressColumn implements ProgressColumn {
43
+ render(_options: RenderOptions, task?: Task): Iterable<Segment>;
44
+ }
45
+ export declare class TimeRemainingColumn implements ProgressColumn {
46
+ render(_options: RenderOptions, task?: Task): Iterable<Segment>;
47
+ }
48
+ export declare class TimeElapsedColumn implements ProgressColumn {
49
+ render(_options: RenderOptions, task?: Task): Iterable<Segment>;
50
+ }
51
+ export declare class SpinnerColumn implements ProgressColumn {
52
+ private _spinner;
53
+ constructor(spinnerName?: string);
54
+ render(options: RenderOptions, _task?: Task): Iterable<Segment>;
55
+ }
56
+ export declare class MofNCompleteColumn implements ProgressColumn {
57
+ render(_options: RenderOptions, task?: Task): Iterable<Segment>;
58
+ }
59
+ export interface ProgressOptions {
60
+ refreshPerSecond?: number;
61
+ autoRefresh?: boolean;
62
+ transient?: boolean;
63
+ expand?: boolean;
64
+ console?: Console;
65
+ }
66
+ export declare class Progress implements Renderable {
67
+ private _columns;
68
+ private _tasks;
69
+ private _nextId;
70
+ private _live;
71
+ private _console;
72
+ readonly expand: boolean;
73
+ constructor(...columns: (ProgressColumn | ProgressOptions)[]);
74
+ get console(): Console;
75
+ get finished(): boolean;
76
+ static getDefaultColumns(): ProgressColumn[];
77
+ addTask(description: string, options?: TaskOptions): number;
78
+ updateTask(taskId: number, options: TaskUpdateOptions): void;
79
+ startTask(taskId: number): void;
80
+ start(): void;
81
+ stop(): void;
82
+ refresh(): void;
83
+ render(options: RenderOptions): Iterable<Segment>;
84
+ }
85
+ export declare function track<T>(iterable: Iterable<T>, options?: {
86
+ description?: string;
87
+ total?: number;
88
+ console?: Console;
89
+ }): Iterable<T>;
90
+ export {};
91
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/renderables/progress.ts"],"names":[],"mappings":"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"}