@promptctl/rich-js 0.8.0 → 0.10.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 (152) hide show
  1. package/README.md +68 -1
  2. package/dist/core/box.d.ts +93 -39
  3. package/dist/core/box.d.ts.map +1 -1
  4. package/dist/core/box.js +348 -490
  5. package/dist/core/box.js.map +1 -1
  6. package/dist/core/color.d.ts.map +1 -1
  7. package/dist/core/color.js +22 -8
  8. package/dist/core/color.js.map +1 -1
  9. package/dist/core/console.d.ts +2 -4
  10. package/dist/core/console.d.ts.map +1 -1
  11. package/dist/core/console.js +35 -24
  12. package/dist/core/console.js.map +1 -1
  13. package/dist/core/highlighter.d.ts +2 -1
  14. package/dist/core/highlighter.d.ts.map +1 -1
  15. package/dist/core/highlighter.js +28 -6
  16. package/dist/core/highlighter.js.map +1 -1
  17. package/dist/{renderables → core}/json.d.ts +8 -3
  18. package/dist/core/json.d.ts.map +1 -0
  19. package/dist/{renderables → core}/json.js +7 -2
  20. package/dist/core/json.js.map +1 -0
  21. package/dist/core/markup.d.ts +6 -7
  22. package/dist/core/markup.d.ts.map +1 -1
  23. package/dist/core/markup.js +124 -32
  24. package/dist/core/markup.js.map +1 -1
  25. package/dist/core/pretty.d.ts +56 -21
  26. package/dist/core/pretty.d.ts.map +1 -1
  27. package/dist/core/pretty.js +210 -116
  28. package/dist/core/pretty.js.map +1 -1
  29. package/dist/core/protocol.d.ts +16 -0
  30. package/dist/core/protocol.d.ts.map +1 -1
  31. package/dist/core/protocol.js +13 -0
  32. package/dist/core/protocol.js.map +1 -1
  33. package/dist/core/segment.d.ts +5 -0
  34. package/dist/core/segment.d.ts.map +1 -1
  35. package/dist/core/segment.js +9 -3
  36. package/dist/core/segment.js.map +1 -1
  37. package/dist/core/strip.d.ts +9 -5
  38. package/dist/core/strip.d.ts.map +1 -1
  39. package/dist/core/strip.js +39 -41
  40. package/dist/core/strip.js.map +1 -1
  41. package/dist/core/style.d.ts +19 -0
  42. package/dist/core/style.d.ts.map +1 -1
  43. package/dist/core/style.js +46 -38
  44. package/dist/core/style.js.map +1 -1
  45. package/dist/core/text.d.ts +102 -4
  46. package/dist/core/text.d.ts.map +1 -1
  47. package/dist/core/text.js +322 -184
  48. package/dist/core/text.js.map +1 -1
  49. package/dist/core/wrap.d.ts +42 -0
  50. package/dist/core/wrap.d.ts.map +1 -0
  51. package/dist/core/wrap.js +128 -0
  52. package/dist/core/wrap.js.map +1 -0
  53. package/dist/index.d.ts +3 -3
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +2 -1
  56. package/dist/index.js.map +1 -1
  57. package/dist/renderables/markdown.d.ts +1 -1
  58. package/dist/renderables/markdown.d.ts.map +1 -1
  59. package/dist/renderables/markdown.js +7 -14
  60. package/dist/renderables/markdown.js.map +1 -1
  61. package/dist/renderables/padding.d.ts +1 -1
  62. package/dist/renderables/padding.d.ts.map +1 -1
  63. package/dist/renderables/padding.js +5 -11
  64. package/dist/renderables/padding.js.map +1 -1
  65. package/dist/renderables/panel.d.ts +4 -4
  66. package/dist/renderables/panel.d.ts.map +1 -1
  67. package/dist/renderables/panel.js +39 -39
  68. package/dist/renderables/panel.js.map +1 -1
  69. package/dist/renderables/progress.d.ts +3 -3
  70. package/dist/renderables/progress.d.ts.map +1 -1
  71. package/dist/renderables/progress.js +11 -9
  72. package/dist/renderables/progress.js.map +1 -1
  73. package/dist/renderables/progressBar.d.ts +3 -3
  74. package/dist/renderables/progressBar.d.ts.map +1 -1
  75. package/dist/renderables/progressBar.js +9 -15
  76. package/dist/renderables/progressBar.js.map +1 -1
  77. package/dist/renderables/prompt.js +1 -1
  78. package/dist/renderables/prompt.js.map +1 -1
  79. package/dist/renderables/rule.d.ts +1 -1
  80. package/dist/renderables/rule.d.ts.map +1 -1
  81. package/dist/renderables/rule.js +5 -10
  82. package/dist/renderables/rule.js.map +1 -1
  83. package/dist/renderables/spinner.d.ts +2 -2
  84. package/dist/renderables/spinner.d.ts.map +1 -1
  85. package/dist/renderables/spinner.js +6 -11
  86. package/dist/renderables/spinner.js.map +1 -1
  87. package/dist/renderables/status.d.ts.map +1 -1
  88. package/dist/renderables/status.js +5 -11
  89. package/dist/renderables/status.js.map +1 -1
  90. package/dist/renderables/table.d.ts +54 -16
  91. package/dist/renderables/table.d.ts.map +1 -1
  92. package/dist/renderables/table.js +239 -99
  93. package/dist/renderables/table.js.map +1 -1
  94. package/dist/renderables/traceback.d.ts +1 -1
  95. package/dist/renderables/traceback.d.ts.map +1 -1
  96. package/dist/renderables/traceback.js +9 -8
  97. package/dist/renderables/traceback.js.map +1 -1
  98. package/dist/renderables/tree.d.ts +2 -2
  99. package/dist/renderables/tree.d.ts.map +1 -1
  100. package/dist/renderables/tree.js +16 -22
  101. package/dist/renderables/tree.js.map +1 -1
  102. package/dist/template-bindings/helpers.d.ts.map +1 -1
  103. package/dist/template-bindings/helpers.js +19 -1
  104. package/dist/template-bindings/helpers.js.map +1 -1
  105. package/dist/widgets/button.d.ts.map +1 -1
  106. package/dist/widgets/button.js +4 -5
  107. package/dist/widgets/button.js.map +1 -1
  108. package/dist/widgets/checkbox.d.ts.map +1 -1
  109. package/dist/widgets/checkbox.js +3 -4
  110. package/dist/widgets/checkbox.js.map +1 -1
  111. package/dist/widgets/dropdown.d.ts.map +1 -1
  112. package/dist/widgets/dropdown.js +4 -5
  113. package/dist/widgets/dropdown.js.map +1 -1
  114. package/dist/widgets/focus-manager.d.ts +0 -1
  115. package/dist/widgets/focus-manager.d.ts.map +1 -1
  116. package/dist/widgets/focus-manager.js +3 -7
  117. package/dist/widgets/focus-manager.js.map +1 -1
  118. package/dist/widgets/screen.d.ts.map +1 -1
  119. package/dist/widgets/screen.js +2 -4
  120. package/dist/widgets/screen.js.map +1 -1
  121. package/dist/widgets/slider.d.ts.map +1 -1
  122. package/dist/widgets/slider.js +7 -8
  123. package/dist/widgets/slider.js.map +1 -1
  124. package/dist/widgets/text-input.d.ts.map +1 -1
  125. package/dist/widgets/text-input.js +5 -6
  126. package/dist/widgets/text-input.js.map +1 -1
  127. package/dist/widgets/toggle.d.ts.map +1 -1
  128. package/dist/widgets/toggle.js +4 -5
  129. package/dist/widgets/toggle.js.map +1 -1
  130. package/dist/widgets/widget-base.d.ts +3 -3
  131. package/dist/widgets/widget-base.d.ts.map +1 -1
  132. package/dist/widgets/widget-base.js +4 -6
  133. package/dist/widgets/widget-base.js.map +1 -1
  134. package/package.json +26 -10
  135. package/dist/renderables/json.d.ts.map +0 -1
  136. package/dist/renderables/json.js.map +0 -1
  137. package/dist/renderables/pretty.d.ts +0 -29
  138. package/dist/renderables/pretty.d.ts.map +0 -1
  139. package/dist/renderables/pretty.js +0 -141
  140. package/dist/renderables/pretty.js.map +0 -1
  141. package/dist/themes/paletteResolver.d.ts +0 -35
  142. package/dist/themes/paletteResolver.d.ts.map +0 -1
  143. package/dist/themes/paletteResolver.js +0 -88
  144. package/dist/themes/paletteResolver.js.map +0 -1
  145. package/dist/widgets/host-stream.d.ts +0 -31
  146. package/dist/widgets/host-stream.d.ts.map +0 -1
  147. package/dist/widgets/host-stream.js +0 -36
  148. package/dist/widgets/host-stream.js.map +0 -1
  149. package/dist/widgets/terminal-host.d.ts +0 -138
  150. package/dist/widgets/terminal-host.d.ts.map +0 -1
  151. package/dist/widgets/terminal-host.js +0 -127
  152. package/dist/widgets/terminal-host.js.map +0 -1
@@ -1,27 +1,46 @@
1
1
  /**
2
2
  * Table — tabular data with headers, borders, auto-sizing, and alignment.
3
3
  */
4
- import { cellLen, setCellSize, asCellCol, cellCount as cells } from "../core/cells.js";
4
+ import { cellLen, cellCount as cells } from "../core/cells.js";
5
5
  import { Segment } from "../core/segment.js";
6
- import { Style, NULL_STYLE } from "../core/style.js";
6
+ import { NULL_STYLE } from "../core/style.js";
7
7
  import { HEAVY_HEAD } from "../core/box.js";
8
8
  import { RichText } from "../core/text.js";
9
+ import { renderMarkup } from "../core/markup.js";
9
10
  import { normalizePadding } from "./padding.js";
10
- import { withBoundedWidth, withCellWidth } from "../core/protocol.js";
11
- function resolveStyle(style) {
12
- if (style === undefined)
13
- return NULL_STYLE;
14
- if (typeof style === "string")
15
- return Style.parse(style);
16
- return style;
11
+ import { getStyle, withBoundedWidth, withCellWidth } from "../core/protocol.js";
12
+ /**
13
+ * The one crossing where caller text becomes styled table content.
14
+ *
15
+ * Cells, headers, footers, the title and the caption each used to build their
16
+ * own `RichText` straight from the constructor — which does not parse markup —
17
+ * so the markup rule had five homes and was absent from all five, and
18
+ * `[red]Solo[/red]` reached the terminal with its tags intact.
19
+ * [LAW:single-enforcer]
20
+ *
21
+ * Parsing is unconditional because that is what the reference does rather than
22
+ * because it is the simpler branch: Rich's `Console.__init__` declares
23
+ * `markup: bool = True`, and all five positions reach the wire through Rich's
24
+ * own `render_str`. A table-level opt-out would be a mode with no reference
25
+ * behaviour to define. [LAW:no-mode-explosion]
26
+ *
27
+ * `end` is cleared on both arms, not passed in, because a table cell is a
28
+ * fragment rather than a line — the same two steps Rich takes for a printed
29
+ * string. The `RichText` arm copies first: clearing in place would reach back
30
+ * into the caller's object.
31
+ */
32
+ function toCellText(content) {
33
+ const text = content instanceof RichText ? content.copy() : renderMarkup(String(content ?? ""));
34
+ text.end = "";
35
+ return text;
17
36
  }
18
37
  function toRenderable(content) {
19
- if (content instanceof RichText)
20
- return content;
38
+ // A `RichText` leaves through this arm too — it implements `Renderable`, so
39
+ // the prototype carries `render` and the instance is returned untouched.
21
40
  if (typeof content === "object" && content !== null && "render" in content) {
22
41
  return content;
23
42
  }
24
- return new RichText(String(content ?? ""), { end: "" });
43
+ return toCellText(content);
25
44
  }
26
45
  /** A `want` no budget can satisfy: the column takes every cell its weight earns. */
27
46
  const UNBOUNDED = Number.MAX_SAFE_INTEGER;
@@ -140,14 +159,17 @@ function layoutTable(outerWidth, demands, padding, frame) {
140
159
  const seatedDemands = demands.slice(0, seated);
141
160
  const reserved = seatedDemands.map((demand, index) => take(demand.reserved - seats[index]));
142
161
  // What is left to apportion is the rest of what each column wanted. A table
143
- // whose columns all fit leaves this budget partly unspent, which is how it
144
- // stays narrower than the width it was offered.
145
- const extra = distribute(budget, seatedDemands.map((demand, index) => ({
146
- reserved: 0,
162
+ // whose columns all fit leaves this budget partly unspent.
163
+ const wanted = distribute(budget, seatedDemands.map((demand, index) => ({
147
164
  want: Math.max(0, demand.want - seats[index] - reserved[index]),
148
165
  weight: demand.weight,
149
166
  })));
150
- const columns = extra.map((cells, index) => seats[index] + reserved[index] + cells);
167
+ // The unspent part goes to the columns by their stretch. A table that does
168
+ // not expand stretches nothing, which is how it stays narrower than the width
169
+ // it was offered. The order is the reference's: Rich pads an expanding table
170
+ // only once `table_width < max_width`, never while it is collapsing a column.
171
+ const stretched = distribute(budget - wanted.reduce((sum, cells) => sum + cells, 0), seatedDemands.map((demand) => ({ want: UNBOUNDED, weight: demand.stretch })));
172
+ const columns = wanted.map((cells, index) => seats[index] + reserved[index] + cells + stretched[index]);
151
173
  const cellWidths = columns.map((width) => padLeft + width + padRight);
152
174
  return {
153
175
  edge,
@@ -162,8 +184,8 @@ function layoutTable(outerWidth, demands, padding, frame) {
162
184
  };
163
185
  }
164
186
  export class Column {
165
- header;
166
- footer;
187
+ _header;
188
+ _footer;
167
189
  headerStyle;
168
190
  footerStyle;
169
191
  style;
@@ -176,17 +198,11 @@ export class Column {
176
198
  overflow;
177
199
  _cells;
178
200
  constructor(options) {
179
- const headerVal = options?.header;
180
- this.header = headerVal instanceof RichText
181
- ? headerVal
182
- : new RichText(headerVal ?? "", { end: "" });
183
- const footerVal = options?.footer;
184
- this.footer = footerVal !== undefined
185
- ? (footerVal instanceof RichText ? footerVal : new RichText(footerVal, { end: "" }))
186
- : undefined;
187
- this.headerStyle = resolveStyle(options?.headerStyle);
188
- this.footerStyle = resolveStyle(options?.footerStyle);
189
- this.style = resolveStyle(options?.style);
201
+ this.header = options?.header;
202
+ this.footer = options?.footer;
203
+ this.headerStyle = options?.headerStyle ?? NULL_STYLE;
204
+ this.footerStyle = options?.footerStyle ?? NULL_STYLE;
205
+ this.style = options?.style ?? NULL_STYLE;
190
206
  this.justify = options?.justify ?? "left";
191
207
  this.width = options?.width;
192
208
  this.minWidth = options?.minWidth;
@@ -196,6 +212,36 @@ export class Column {
196
212
  this.overflow = options?.overflow ?? "ellipsis";
197
213
  this._cells = [];
198
214
  }
215
+ /**
216
+ * The two stamped cells, parsed on assignment rather than at the constructor.
217
+ * `Table.columns` hands out the live column and both fields are public, so a
218
+ * constructor-only stamp held only until the first `columns[0].footer = mine`
219
+ * — which installed content that had parsed no markup, still carried its
220
+ * `end`, and was still owned by the caller, into a slot every reader below
221
+ * assumes `toCellText` has been through. [LAW:parse-dont-validate] The setter
222
+ * is the border, so the guarantee holds for the object's whole lifetime and
223
+ * the constructor is one caller of it rather than the one place it is true.
224
+ *
225
+ * Absent and empty are the same header, and the same footer.
226
+ * [LAW:types-are-the-program] Rich declares `footer: RenderableType = ""`, so
227
+ * a column always has one and `show_footer` alone decides whether it is
228
+ * drawn. Modelling the absence as `undefined` instead made "no column has a
229
+ * footer" a state the render path could ask about — and it did, skipping the
230
+ * row a caller had asked for. `toCellText` already maps nothing onto empty,
231
+ * which is why the setters take `undefined` rather than defaulting around it.
232
+ */
233
+ get header() {
234
+ return this._header;
235
+ }
236
+ set header(content) {
237
+ this._header = toCellText(content);
238
+ }
239
+ get footer() {
240
+ return this._footer;
241
+ }
242
+ set footer(content) {
243
+ this._footer = toCellText(content);
244
+ }
199
245
  get flexible() {
200
246
  return this.ratio !== undefined && this.ratio > 0;
201
247
  }
@@ -209,8 +255,11 @@ export class Column {
209
255
  }
210
256
  copy() {
211
257
  const col = new Column({
212
- header: this.header.copy(),
213
- footer: this.footer?.copy(),
258
+ // No `.copy()` here: the crossing the constructor routes through copies
259
+ // a `RichText` already, and a second copy is a second home for that rule.
260
+ // [LAW:single-enforcer]
261
+ header: this.header,
262
+ footer: this.footer,
214
263
  justify: this.justify,
215
264
  width: this.width,
216
265
  minWidth: this.minWidth,
@@ -253,25 +302,21 @@ export class Table {
253
302
  this._rows = [];
254
303
  this.box = options?.box !== undefined ? options.box : HEAVY_HEAD;
255
304
  const titleVal = options?.title;
256
- this.title = titleVal !== undefined
257
- ? (titleVal instanceof RichText ? titleVal : new RichText(titleVal, { end: "" }))
258
- : undefined;
305
+ this.title = titleVal !== undefined ? toCellText(titleVal) : undefined;
259
306
  const captionVal = options?.caption;
260
- this.caption = captionVal !== undefined
261
- ? (captionVal instanceof RichText ? captionVal : new RichText(captionVal, { end: "" }))
262
- : undefined;
307
+ this.caption = captionVal !== undefined ? toCellText(captionVal) : undefined;
263
308
  this.expand = options?.expand ?? false;
264
309
  this.showHeader = options?.showHeader !== false;
265
310
  this.showFooter = options?.showFooter ?? false;
266
311
  this.showLines = options?.showLines ?? false;
267
312
  this.showEdge = options?.showEdge !== false;
268
313
  this.padding = normalizePadding(options?.padding ?? [0, 1, 0, 1]);
269
- this.style = resolveStyle(options?.style);
270
- this.headerStyle = resolveStyle(options?.headerStyle ?? "table.header");
271
- this.footerStyle = resolveStyle(options?.footerStyle ?? "table.footer");
272
- this.borderStyle = resolveStyle(options?.borderStyle);
273
- this.titleStyle = resolveStyle(options?.titleStyle ?? "table.title");
274
- this.captionStyle = resolveStyle(options?.captionStyle ?? "table.caption");
314
+ this.style = options?.style ?? NULL_STYLE;
315
+ this.headerStyle = options?.headerStyle ?? "table.header";
316
+ this.footerStyle = options?.footerStyle ?? "table.footer";
317
+ this.borderStyle = options?.borderStyle ?? NULL_STYLE;
318
+ this.titleStyle = options?.titleStyle ?? "table.title";
319
+ this.captionStyle = options?.captionStyle ?? "table.caption";
275
320
  this.titleJustify = options?.titleJustify ?? "center";
276
321
  this.captionJustify = options?.captionJustify ?? "center";
277
322
  this.tableWidth = options?.width;
@@ -301,11 +346,20 @@ export class Table {
301
346
  endSection = lastArg.endSection;
302
347
  cells = cells.slice(0, -1);
303
348
  }
349
+ // Stamped once, here at the border, so sizing and drawing read one resolved
350
+ // cell instead of each converting the raw value for itself. Two converters
351
+ // is two answers to "what is this cell": they disagreed on a `Panel`, which
352
+ // stringifies to `[object Object]` — a string the tag pattern swallows
353
+ // whole, sizing the column to nothing. [LAW:parse-dont-validate]
354
+ //
355
+ // Ahead of the column loop: a cell that throws must leave no phantom column
356
+ // behind. [LAW:no-ambient-temporal-coupling]
357
+ const resolved = cells.map(toRenderable);
304
358
  // Auto-create columns if needed
305
- while (this._columns.length < cells.length) {
359
+ while (this._columns.length < resolved.length) {
306
360
  this.addColumn();
307
361
  }
308
- this._rows.push({ cells, endSection });
362
+ this._rows.push({ cells: resolved, endSection });
309
363
  return this;
310
364
  }
311
365
  addSection() {
@@ -320,25 +374,30 @@ export class Table {
320
374
  return;
321
375
  }
322
376
  const options = withBoundedWidth(rawOptions, this);
323
- const box = this.box
324
- ? (options.asciiOnly ? this.box.substitute({ asciiOnly: true }) : this.box)
325
- : null;
326
- const border = this.borderStyle.isNull ? undefined : this.borderStyle;
377
+ // The two swaps a box goes through before anything is drawn with it, in the
378
+ // reference's order: what the platform can render, then what a table
379
+ // lacking a header should. [LAW:dataflow-not-control-flow] Both run every
380
+ // render and each returns the receiver when it has nothing to change, so
381
+ // the flags arrive as values rather than as branches around a step.
382
+ const drawable = this.box?.substitute({ asciiOnly: options.asciiOnly });
383
+ const box = (this.showHeader ? drawable : drawable?.plainHeaded()) ?? null;
384
+ const borderStyle = getStyle(options, this.borderStyle);
385
+ const border = borderStyle.isNull ? undefined : borderStyle;
327
386
  // The one division of the width every row below is measured against.
328
387
  const geometry = this._geometry(this._outerWidth(options));
329
388
  const edge = geometry.edge === 1;
330
389
  // Title
331
390
  if (this.title) {
332
- yield* this._renderTitle(this.title, geometry.totalWidth, this.titleStyle, this.titleJustify);
391
+ yield* this._renderTitle(options, this.title, geometry.totalWidth, this.titleStyle, this.titleJustify);
333
392
  }
334
393
  // Top border
335
394
  if (box && this.showEdge) {
336
395
  yield* box.getTop(geometry.cellWidths, border, edge);
337
396
  }
338
397
  // Header row
339
- if (this.showHeader && this._columns.some((c) => c.header.hasContent)) {
398
+ if (this.showHeader) {
340
399
  const headerCells = this._columns.map((c) => c.header);
341
- yield* this._renderRow(headerCells, geometry, box, border, this.headerStyle);
400
+ yield* this._renderRow(options, headerCells, geometry, box, "head", border, this.headerStyle);
342
401
  // Header separator
343
402
  if (box) {
344
403
  yield* box.getRow(geometry.cellWidths, "head", border, edge);
@@ -347,11 +406,11 @@ export class Table {
347
406
  // Data rows
348
407
  for (let rowIdx = 0; rowIdx < this._rows.length; rowIdx++) {
349
408
  const row = this._rows[rowIdx];
350
- const rowCells = this._columns.map((_, colIdx) => toRenderable(row.cells[colIdx]));
409
+ const rowCells = this._columns.map((_, colIdx) => row.cells[colIdx] ?? toCellText(undefined));
351
410
  const rowStyle = this.rowStyles.length > 0
352
- ? resolveStyle(this.rowStyles[rowIdx % this.rowStyles.length])
411
+ ? this.rowStyles[rowIdx % this.rowStyles.length]
353
412
  : NULL_STYLE;
354
- yield* this._renderRow(rowCells, geometry, box, border, rowStyle);
413
+ yield* this._renderRow(options, rowCells, geometry, box, "row", border, rowStyle);
355
414
  // Row separator
356
415
  const showSep = this.showLines || row.endSection;
357
416
  if (showSep && box && rowIdx < this._rows.length - 1) {
@@ -359,12 +418,12 @@ export class Table {
359
418
  }
360
419
  }
361
420
  // Footer
362
- if (this.showFooter && this._columns.some((c) => c.footer)) {
421
+ if (this.showFooter) {
363
422
  if (box) {
364
423
  yield* box.getRow(geometry.cellWidths, "foot", border, edge);
365
424
  }
366
- const footerCells = this._columns.map((c) => (c.footer ?? new RichText("", { end: "" })));
367
- yield* this._renderRow(footerCells, geometry, box, border, this.footerStyle);
425
+ const footerCells = this._columns.map((c) => c.footer);
426
+ yield* this._renderRow(options, footerCells, geometry, box, "foot", border, this.footerStyle);
368
427
  }
369
428
  // Bottom border
370
429
  if (box && this.showEdge) {
@@ -372,13 +431,18 @@ export class Table {
372
431
  }
373
432
  // Caption
374
433
  if (this.caption) {
375
- yield* this._renderTitle(this.caption, geometry.totalWidth, this.captionStyle, this.captionJustify);
434
+ yield* this._renderTitle(options, this.caption, geometry.totalWidth, this.captionStyle, this.captionJustify);
376
435
  }
377
436
  }
378
437
  /**
379
438
  * [LAW:one-source-of-truth] Both ends of the range are widths the geometry
380
439
  * actually produced — the maximum from the demands as they stand, the
381
440
  * minimum from the same layout with every column asking for a single cell.
441
+ * Neither end stretches: a stretch only spends cells an offer happens to
442
+ * leave over, and a renderable reports the width its content wants rather
443
+ * than the width it was offered. Letting it in made an expanding table
444
+ * measure `Infinity` against an unbounded offer, where `withBoundedWidth`
445
+ * needs a natural width to fall back on.
382
446
  * Neither can exceed the width offered and the tighter request cannot exceed
383
447
  * the looser one, so the range cannot invert. Deriving the minimum from raw
384
448
  * column and padding counts instead is what used to return
@@ -389,7 +453,7 @@ export class Table {
389
453
  const outerWidth = this._outerWidth(options);
390
454
  const frame = this._frame();
391
455
  const demands = this._columnDemands();
392
- const laidOut = layoutTable(outerWidth, demands, this.padding, frame).totalWidth;
456
+ const laidOut = layoutTable(outerWidth, demands.map((demand) => ({ ...demand, stretch: 0 })), this.padding, frame).totalWidth;
393
457
  // `UNBOUNDED` is this table's own infinity, so a layout that reached it has
394
458
  // no natural width to report — a column asked for every cell there is. Said
395
459
  // as the number, it escapes as a width a caller would try to draw:
@@ -400,6 +464,7 @@ export class Table {
400
464
  reserved: 0,
401
465
  want: Math.min(1, demand.want),
402
466
  weight: 1,
467
+ stretch: 0,
403
468
  })), this.padding, frame).totalWidth;
404
469
  return {
405
470
  minimum: Math.min(maximum, Math.max(tightest, this.minWidth ?? 0)),
@@ -443,8 +508,8 @@ export class Table {
443
508
  }
444
509
  /**
445
510
  * [LAW:dataflow-not-control-flow] The three ways a column can be sized —
446
- * declared width, ratio, natural content — differ only in the `want` and
447
- * `weight` they produce. They are resolved once, here, into uniform data, so
511
+ * declared width, ratio, natural content — differ only in the demand they
512
+ * produce, and `expand` only in its `stretch`. They are resolved once, here, into uniform data, so
448
513
  * `layoutTable` runs the same apportionment for every table and no sizing
449
514
  * mode gets its own path through the width division.
450
515
  */
@@ -458,23 +523,65 @@ export class Table {
458
523
  // [LAW:single-enforcer] floored where it is parsed, the same rule
459
524
  // `normalizePadding` applies to a negative padding side.
460
525
  const declared = demandCells(col.width);
461
- return { reserved: declared, want: declared, weight: 0 };
526
+ return { reserved: declared, want: declared, weight: 0, stretch: 0 };
527
+ }
528
+ if (elastic) {
529
+ return { reserved: 0, want: UNBOUNDED, weight: demandCells(col.ratio ?? 1), stretch: 0 };
462
530
  }
463
- if (elastic)
464
- return { reserved: 0, want: UNBOUNDED, weight: demandCells(col.ratio ?? 1) };
465
531
  const natural = demandCells(this._naturalWidth(col, index));
466
- return { reserved: 0, want: natural, weight: natural };
532
+ // `expand` is a stretch rather than a larger want: the column still
533
+ // competes for its natural width like any other, and only the cells left
534
+ // once every column has that are shared out. A larger want looks
535
+ // equivalent and is not — it lets a one-cell column claim cells while its
536
+ // neighbour is still truncated. The stretch is the natural width, so the
537
+ // widest column grows most, which is what keeps a `Progress` bar from
538
+ // getting no more of the slack than its percentage label. The reference
539
+ // weighs by width too: `ratio_distribute(max_width - table_width, widths)`.
540
+ //
541
+ // One deliberate divergence: Rich stretches declared-width columns as
542
+ // well, so `width: 6` under `expand` renders 21 cells wide — an option
543
+ // quietly meaning something else, the defect rich-justify-0cr exists to
544
+ // remove. A reservation's stretch is zero above.
545
+ return { reserved: 0, want: natural, weight: natural, stretch: this.expand ? natural : 0 };
467
546
  });
468
547
  }
548
+ /**
549
+ * Every cell column `index` draws, in draw order.
550
+ *
551
+ * [LAW:one-source-of-truth] The reference's `_get_cells` is the one answer to
552
+ * "which cells belong to this column", and both `_measure_column` and
553
+ * `_render` read it. Enumerating that set a second time inside the width path
554
+ * is how the two ends drifted: the header was measured whether or not
555
+ * `showHeader` drew it, and `col.footer` was never measured at all, so a
556
+ * footer wider than its column — a totals row, exactly — was cut to `…`.
557
+ * A flag is the whole membership rule; nothing here asks after content.
558
+ */
559
+ *_columnCells(col, index) {
560
+ if (this.showHeader)
561
+ yield col.header;
562
+ for (const row of this._rows)
563
+ yield row.cells[index] ?? toCellText(undefined);
564
+ if (this.showFooter)
565
+ yield col.footer;
566
+ }
469
567
  /**
470
568
  * The widest cell in a column, bounded by its own `minWidth`/`maxWidth`.
471
- * Zero for a column with no header and no content — a gutter asks for its
472
- * padding and nothing else.
569
+ * Zero for a column that draws nothing — a gutter asks for its padding and
570
+ * nothing else.
473
571
  */
474
572
  _naturalWidth(col, index) {
475
- let natural = cellLen(col.header.plain);
476
- for (const row of this._rows) {
477
- natural = Math.max(natural, cellLen(String(row.cells[index] ?? "")));
573
+ let natural = 0;
574
+ for (const cell of this._columnCells(col, index)) {
575
+ // The stamped cell, so the width a column asks for is the width its text
576
+ // will occupy — measuring the raw value sized this column to
577
+ // `[red]Solo[/red]`, fifteen cells for four cells of text.
578
+ // [LAW:one-source-of-truth]
579
+ //
580
+ // A cell that draws itself is stringified rather than measured, which is
581
+ // a pre-existing gap: `_columnDemands` carries no `RenderOptions`, so
582
+ // `Measurement.get` is not reachable from here. It contributes a wrong
583
+ // non-zero width, and narrowing that is its own change.
584
+ natural = Math.max(natural, cell instanceof RichText ? cellLen(cell.plain) : cellLen(String(cell)));
478
585
  }
479
586
  if (col.minWidth !== undefined)
480
587
  natural = Math.max(natural, col.minWidth);
@@ -482,31 +589,42 @@ export class Table {
482
589
  natural = Math.min(natural, col.maxWidth);
483
590
  return natural;
484
591
  }
485
- *_renderRow(cells, geometry, box, border, rowStyle) {
592
+ *_renderRow(options, cells, geometry, box, level, border, ownStyle) {
486
593
  const { padLeft, padRight, columns } = geometry;
594
+ const rowStyle = getStyle(options, ownStyle);
595
+ // [LAW:dataflow-not-control-flow] Header, body and footer share this path;
596
+ // the level crosses as a value the box answers with glyphs, not a branch.
597
+ const frame = box?.getContentChars(level);
487
598
  // Render each cell onto the canvas the geometry gave its column. Columns
488
599
  // the width could not seat are absent from `columns` and so are never
489
600
  // rendered at all.
490
601
  const cellLines = columns.map((cellWidth, index) => {
491
602
  const col = this._columns[index];
492
603
  const cell = cells[index] ?? toRenderable("");
604
+ // The render's own options with the column's canvas laid over them, so a
605
+ // cell resolves its style names against the same theme as the table. The
606
+ // table owns the row's height: a cell inherits none, as the reference's
607
+ // `height=None` has it.
493
608
  const segs = [...cell.render({
609
+ ...options,
494
610
  maxWidth: cellWidth,
495
611
  justify: col.justify,
496
612
  overflow: col.overflow,
497
613
  noWrap: col.noWrap,
614
+ height: undefined,
615
+ maxHeight: undefined,
498
616
  })];
499
617
  const lines = Segment.splitLines(segs).map((line) => Segment.adjustLineLength(line, cellWidth));
500
618
  return lines.length > 0 ? lines : [[new Segment(" ".repeat(cellWidth))]];
501
619
  });
502
620
  const maxLines = cellLines.reduce((most, lines) => Math.max(most, lines.length), 1);
503
621
  for (let lineIdx = 0; lineIdx < maxLines; lineIdx++) {
504
- if (box && geometry.edge === 1) {
505
- yield new Segment(box.left, border);
622
+ if (frame && geometry.edge === 1) {
623
+ yield new Segment(frame.left, border);
506
624
  }
507
625
  for (let colIdx = 0; colIdx < columns.length; colIdx++) {
508
- if (colIdx > 0 && box) {
509
- yield new Segment(box.vertical, border);
626
+ if (colIdx > 0 && frame) {
627
+ yield new Segment(frame.vertical, border);
510
628
  }
511
629
  const cellWidth = columns[colIdx];
512
630
  if (padLeft > 0)
@@ -518,35 +636,57 @@ export class Table {
518
636
  if (padRight > 0)
519
637
  yield new Segment(" ".repeat(padRight));
520
638
  }
521
- if (box && geometry.edge === 1) {
522
- yield new Segment(box.right, border);
639
+ if (frame && geometry.edge === 1) {
640
+ yield new Segment(frame.right, border);
523
641
  }
524
642
  yield Segment.line();
525
643
  }
526
644
  }
527
- *_renderTitle(text, tableWidth, style, justify) {
645
+ *_renderTitle(options, text, tableWidth, ownStyle, justify) {
646
+ const style = getStyle(options, ownStyle);
528
647
  const titleStyle = style.isNull ? undefined : style;
529
- const plain = text.plain;
530
- const textWidth = cellLen(plain);
531
- // Cropped by cells, not by code units: a title of wide characters sliced
532
- // at `tableWidth` code units is up to twice `tableWidth` cells on screen,
533
- // which is the overflow this crop exists to prevent.
534
- if (textWidth >= tableWidth) {
535
- yield new Segment(setCellSize(plain, asCellCol(tableWidth)), titleStyle);
648
+ // The table owns the canvas; the caller's text still says how it meets the
649
+ // edge. A `RichText`'s own `justify` and `noWrap` outrank the options
650
+ // `render` is handed, so `titleJustify` would lose to a property the caller
651
+ // may not know it set, and a `noWrap` title would leave at its natural width
652
+ // and run straight through the frame. `overflow` stays theirs: every method
653
+ // cuts within a bound it cannot lift, so none can escape. Cleared on a copy
654
+ // rather than in place — the caller's text is theirs. [LAW:one-source-of-truth]
655
+ const source = text.copy();
656
+ source.justify = undefined;
657
+ source.noWrap = false;
658
+ // The table's title style is the *base* the content's own spans layer over,
659
+ // which is what the reference emits: a `[red]` title inside an italic table
660
+ // title arrives as italic-red, not one or the other. Rendering `text.plain`
661
+ // here read the characters and dropped every span attached to them, so a
662
+ // styled title lost its styling and parsed markup silently did nothing.
663
+ //
664
+ // Rendered at the table's own width with nothing suppressed, because that
665
+ // is what the reference hands its title: an annotation too wide for the
666
+ // frame wraps down it rather than being cut off at the corner. `noWrap` and
667
+ // an explicit `crop` stood here and did the cutting (rich-table-6uy.7).
668
+ //
669
+ // [LAW:single-enforcer] The alignment is the renderable's to perform, not
670
+ // just to be told. Padding the lines here as well needed the same
671
+ // rules — that a wrap's trailing whitespace is not content to centre
672
+ // around, that `left` fills the canvas and an unset justify does not — and
673
+ // a second copy of those is a second answer waiting to disagree.
674
+ const rendered = [...source.render({
675
+ ...options,
676
+ maxWidth: tableWidth,
677
+ justify,
678
+ overflow: undefined,
679
+ noWrap: false,
680
+ height: undefined,
681
+ maxHeight: undefined,
682
+ })];
683
+ // Every line the text has, because that is what the reference renders — a
684
+ // title of "one\ntwo" occupies two lines there. Taking only the first
685
+ // dropped the rest with no truncation mark.
686
+ for (const line of Segment.splitLines(rendered)) {
687
+ yield* Segment.applyStyle(line, titleStyle);
536
688
  yield Segment.line();
537
- return;
538
689
  }
539
- const gap = tableWidth - textWidth;
540
- const leftPad = justify === "right" ? gap
541
- : justify === "center" ? Math.floor(gap / 2)
542
- : 0;
543
- const rightPad = gap - leftPad;
544
- if (leftPad > 0)
545
- yield new Segment(" ".repeat(leftPad));
546
- yield new Segment(plain, titleStyle);
547
- if (rightPad > 0)
548
- yield new Segment(" ".repeat(rightPad));
549
- yield Segment.line();
550
690
  }
551
691
  }
552
692
  //# sourceMappingURL=table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/renderables/table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/renderables/table.ts"],"names":[],"mappings":"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"}