@promptctl/rich-js 0.7.0 → 0.8.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 (137) hide show
  1. package/README.md +31 -30
  2. package/dist/core/box.d.ts +3 -3
  3. package/dist/core/box.d.ts.map +1 -1
  4. package/dist/core/box.js.map +1 -1
  5. package/dist/core/cells.d.ts +46 -1
  6. package/dist/core/cells.d.ts.map +1 -1
  7. package/dist/core/cells.js +55 -14
  8. package/dist/core/cells.js.map +1 -1
  9. package/dist/core/console.d.ts +28 -10
  10. package/dist/core/console.d.ts.map +1 -1
  11. package/dist/core/console.js +141 -80
  12. package/dist/core/console.js.map +1 -1
  13. package/dist/core/markup.d.ts +0 -2
  14. package/dist/core/markup.d.ts.map +1 -1
  15. package/dist/core/markup.js +31 -17
  16. package/dist/core/markup.js.map +1 -1
  17. package/dist/core/measure.d.ts +11 -0
  18. package/dist/core/measure.d.ts.map +1 -1
  19. package/dist/core/measure.js +15 -3
  20. package/dist/core/measure.js.map +1 -1
  21. package/dist/core/oklch.d.ts +22 -0
  22. package/dist/core/oklch.d.ts.map +1 -1
  23. package/dist/core/oklch.js +62 -18
  24. package/dist/core/oklch.js.map +1 -1
  25. package/dist/core/pretty.d.ts +87 -0
  26. package/dist/core/pretty.d.ts.map +1 -0
  27. package/dist/core/pretty.js +304 -0
  28. package/dist/core/pretty.js.map +1 -0
  29. package/dist/core/protocol.d.ts +64 -0
  30. package/dist/core/protocol.d.ts.map +1 -1
  31. package/dist/core/protocol.js +72 -0
  32. package/dist/core/protocol.js.map +1 -1
  33. package/dist/core/segment.d.ts +21 -0
  34. package/dist/core/segment.d.ts.map +1 -1
  35. package/dist/core/segment.js +40 -1
  36. package/dist/core/segment.js.map +1 -1
  37. package/dist/core/subscription.d.ts +13 -0
  38. package/dist/core/subscription.d.ts.map +1 -0
  39. package/dist/core/subscription.js +13 -0
  40. package/dist/core/subscription.js.map +1 -0
  41. package/dist/core/text.d.ts.map +1 -1
  42. package/dist/core/text.js +45 -13
  43. package/dist/core/text.js.map +1 -1
  44. package/dist/host/host-stream.d.ts +31 -0
  45. package/dist/host/host-stream.d.ts.map +1 -0
  46. package/dist/host/host-stream.js +36 -0
  47. package/dist/host/host-stream.js.map +1 -0
  48. package/dist/host/index.d.ts +4 -0
  49. package/dist/host/index.d.ts.map +1 -0
  50. package/dist/host/index.js +3 -0
  51. package/dist/host/index.js.map +1 -0
  52. package/dist/host/terminal-host.d.ts +144 -0
  53. package/dist/host/terminal-host.d.ts.map +1 -0
  54. package/dist/host/terminal-host.js +133 -0
  55. package/dist/host/terminal-host.js.map +1 -0
  56. package/dist/index.d.ts +10 -33
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +33 -21
  59. package/dist/index.js.map +1 -1
  60. package/dist/node/terminal-host.d.ts +85 -0
  61. package/dist/node/terminal-host.d.ts.map +1 -0
  62. package/dist/node/terminal-host.js +161 -0
  63. package/dist/node/terminal-host.js.map +1 -0
  64. package/dist/node/traceback.d.ts +28 -0
  65. package/dist/node/traceback.d.ts.map +1 -0
  66. package/dist/node/traceback.js +113 -0
  67. package/dist/node/traceback.js.map +1 -0
  68. package/dist/renderables/columns.d.ts +24 -2
  69. package/dist/renderables/columns.d.ts.map +1 -1
  70. package/dist/renderables/columns.js +91 -32
  71. package/dist/renderables/columns.js.map +1 -1
  72. package/dist/renderables/layout.d.ts +61 -5
  73. package/dist/renderables/layout.d.ts.map +1 -1
  74. package/dist/renderables/layout.js +191 -19
  75. package/dist/renderables/layout.js.map +1 -1
  76. package/dist/renderables/padding.d.ts +15 -2
  77. package/dist/renderables/padding.d.ts.map +1 -1
  78. package/dist/renderables/padding.js +92 -37
  79. package/dist/renderables/padding.js.map +1 -1
  80. package/dist/renderables/panel.d.ts +44 -3
  81. package/dist/renderables/panel.d.ts.map +1 -1
  82. package/dist/renderables/panel.js +149 -80
  83. package/dist/renderables/panel.js.map +1 -1
  84. package/dist/renderables/table.d.ts +40 -4
  85. package/dist/renderables/table.d.ts.map +1 -1
  86. package/dist/renderables/table.js +276 -158
  87. package/dist/renderables/table.js.map +1 -1
  88. package/dist/renderables/traceback.d.ts +6 -2
  89. package/dist/renderables/traceback.d.ts.map +1 -1
  90. package/dist/renderables/traceback.js +6 -10
  91. package/dist/renderables/traceback.js.map +1 -1
  92. package/dist/renderables/tree.d.ts +27 -2
  93. package/dist/renderables/tree.d.ts.map +1 -1
  94. package/dist/renderables/tree.js +82 -23
  95. package/dist/renderables/tree.js.map +1 -1
  96. package/dist/template-bindings/color-funcs.d.ts +3 -3
  97. package/dist/template-bindings/color-funcs.js +3 -3
  98. package/dist/template-bindings/index.d.ts +6 -7
  99. package/dist/template-bindings/index.d.ts.map +1 -1
  100. package/dist/template-bindings/index.js +6 -7
  101. package/dist/template-bindings/index.js.map +1 -1
  102. package/dist/template-bindings/palette-funcs.d.ts +17 -5
  103. package/dist/template-bindings/palette-funcs.d.ts.map +1 -1
  104. package/dist/template-bindings/palette-funcs.js +69 -6
  105. package/dist/template-bindings/palette-funcs.js.map +1 -1
  106. package/dist/template-bindings/style-funcs.d.ts +1 -1
  107. package/dist/template-bindings/style-funcs.js +1 -1
  108. package/dist/themes/ramp.d.ts +84 -0
  109. package/dist/themes/ramp.d.ts.map +1 -0
  110. package/dist/themes/ramp.js +123 -0
  111. package/dist/themes/ramp.js.map +1 -0
  112. package/dist/widgets/dropdown.d.ts +1 -1
  113. package/dist/widgets/dropdown.js +1 -1
  114. package/dist/widgets/event-router.d.ts +3 -2
  115. package/dist/widgets/event-router.d.ts.map +1 -1
  116. package/dist/widgets/focus-manager.d.ts +2 -1
  117. package/dist/widgets/focus-manager.d.ts.map +1 -1
  118. package/dist/widgets/index.d.ts +3 -6
  119. package/dist/widgets/index.d.ts.map +1 -1
  120. package/dist/widgets/index.js +4 -3
  121. package/dist/widgets/index.js.map +1 -1
  122. package/dist/widgets/screen.d.ts +1 -1
  123. package/dist/widgets/screen.d.ts.map +1 -1
  124. package/dist/widgets/terminal-host.d.ts +13 -63
  125. package/dist/widgets/terminal-host.d.ts.map +1 -1
  126. package/dist/widgets/terminal-host.js +11 -142
  127. package/dist/widgets/terminal-host.js.map +1 -1
  128. package/dist/widgets/text-input.d.ts +2 -3
  129. package/dist/widgets/text-input.d.ts.map +1 -1
  130. package/dist/widgets/text-input.js +4 -12
  131. package/dist/widgets/text-input.js.map +1 -1
  132. package/dist/widgets/types.d.ts +1 -1
  133. package/dist/widgets/types.d.ts.map +1 -1
  134. package/dist/widgets/types.js.map +1 -1
  135. package/dist/widgets/widget-base.d.ts +2 -1
  136. package/dist/widgets/widget-base.d.ts.map +1 -1
  137. package/package.json +20 -4
@@ -4,6 +4,13 @@
4
4
  */
5
5
  import type { Segment } from "./segment.js";
6
6
  export interface RenderOptions {
7
+ /**
8
+ * The cells this renderable may occupy. A count of cells, so a non-negative
9
+ * integer — but the field is a plain `number` because it is public API and a
10
+ * caller can write anything into it. `withCellWidth` is where that becomes
11
+ * true rather than assumed; see its comment for why every renderable must
12
+ * call it rather than trusting this declaration.
13
+ */
7
14
  maxWidth: number;
8
15
  minWidth?: number;
9
16
  height?: number;
@@ -18,6 +25,63 @@ export interface RenderOptions {
18
25
  highlight?: unknown;
19
26
  markup?: unknown;
20
27
  }
28
+ /**
29
+ * The options a renderable should work from: the caller's, with `maxWidth`
30
+ * parsed into an actual count of cells.
31
+ *
32
+ * [LAW:parse-dont-validate] The stamp has to travel, which is the whole reason
33
+ * this returns options rather than a number. Parsing `options.maxWidth` into a
34
+ * local leaves the caller's raw value sitting in `options` for whatever the
35
+ * renderable forwards it to — and every renderable forwards it, to a child's
36
+ * `render`, to `Measurement.get`, to a nested layout. `Columns` was fixed that
37
+ * way first and still threw `Invalid array length` on a NaN width, because it
38
+ * handed the unparsed original to `Measurement.get` and got a NaN column count
39
+ * back. Replace the field, and nothing downstream can see the number the
40
+ * caller actually wrote.
41
+ *
42
+ * [LAW:single-enforcer] This is the width checkpoint for the render contract.
43
+ * There is no second one: a renderable that re-derives its own answer is how
44
+ * `Panel`, `Table`, `Tree`, `Columns` and `Layout` came to disagree about what
45
+ * a NaN width means — one collapsed to a cell of garbage, two threw, one
46
+ * ignored the request and emitted its full natural width.
47
+ */
48
+ export declare function withCellWidth(options: RenderOptions): RenderOptions;
49
+ /**
50
+ * The options a renderable should *lay out against*: `withCellWidth`, with an
51
+ * unbounded offer resolved to the renderable's own natural width.
52
+ *
53
+ * [LAW:parse-dont-validate] `cellCount` cannot finish the job alone. It floors
54
+ * a negative width and NaN to zero from the number alone, but `Infinity` is not
55
+ * a quantity it can floor — the only finite answer is "as wide as this
56
+ * renderable's content wants", which is a question about the renderable and not
57
+ * about the number. So the parse is completed here, where the renderable is in
58
+ * hand, and the stamped options travel exactly as `withCellWidth`'s do.
59
+ *
60
+ * [LAW:single-enforcer] One checkpoint for the whole rule, not one per
61
+ * renderable. `Panel`, `Padding`, `Columns` and `Layout` each expand into the
62
+ * width they are offered, and each independently reached `" ".repeat(Infinity)`
63
+ * — Columns twice over, since its column *count* is derived from the width too
64
+ * and `new Array(Infinity)` throws a different error again.
65
+ *
66
+ * The natural width comes from `measure`, which every one of them already
67
+ * implements, and the recursion terminates because `measure` reports content
68
+ * rather than the offer: `Panel.measure({maxWidth: Infinity})` is `{9, 9}` for
69
+ * nine cells of content and frame, not `{9, Infinity}`.
70
+ *
71
+ * So this belongs at the top of `render` and never at the top of `measure`:
72
+ * `measure` is the method being asked, and asking it through here would ask it
73
+ * with itself. `measure` parses with `withCellWidth` and reports a natural
74
+ * width of its own — that is the half of the contract that makes this half work.
75
+ *
76
+ * A `maximum` of `Infinity` means the renderable genuinely cannot answer. Two
77
+ * ways in: it wraps a `Renderable` with no `measure`, so nothing in the tree
78
+ * knows how wide the content wants to be; or something inside it asked for an
79
+ * unbounded width of its own, as a `Table` column declared
80
+ * `{ ratio: Infinity }` does. [LAW:no-silent-failure] Both are unanswerable
81
+ * rather than zero, and saying so names the cause — where `String.repeat` and
82
+ * `new Array` only ever name their own argument.
83
+ */
84
+ export declare function withBoundedWidth(options: RenderOptions, self: Measurable): RenderOptions;
21
85
  export interface Renderable {
22
86
  render(options: RenderOptions): Iterable<Segment>;
23
87
  }
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/core/protocol.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IACxC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACvE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,UAAU,CAO5D;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,UAAU,CAO5D"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/core/protocol.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,WAAW,aAAa;IAC5B;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IACxC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,CAEnE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,UAAU,GACf,aAAa,CAcf;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACvE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,UAAU,CAO5D;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,UAAU,CAO5D"}
@@ -2,6 +2,78 @@
2
2
  * Rendering protocol interfaces — Renderable, Measurable, RenderOptions.
3
3
  * [LAW:one-source-of-truth] These interfaces are the single authority for the rendering contract.
4
4
  */
5
+ import { cellCount } from "./cells.js";
6
+ /**
7
+ * The options a renderable should work from: the caller's, with `maxWidth`
8
+ * parsed into an actual count of cells.
9
+ *
10
+ * [LAW:parse-dont-validate] The stamp has to travel, which is the whole reason
11
+ * this returns options rather than a number. Parsing `options.maxWidth` into a
12
+ * local leaves the caller's raw value sitting in `options` for whatever the
13
+ * renderable forwards it to — and every renderable forwards it, to a child's
14
+ * `render`, to `Measurement.get`, to a nested layout. `Columns` was fixed that
15
+ * way first and still threw `Invalid array length` on a NaN width, because it
16
+ * handed the unparsed original to `Measurement.get` and got a NaN column count
17
+ * back. Replace the field, and nothing downstream can see the number the
18
+ * caller actually wrote.
19
+ *
20
+ * [LAW:single-enforcer] This is the width checkpoint for the render contract.
21
+ * There is no second one: a renderable that re-derives its own answer is how
22
+ * `Panel`, `Table`, `Tree`, `Columns` and `Layout` came to disagree about what
23
+ * a NaN width means — one collapsed to a cell of garbage, two threw, one
24
+ * ignored the request and emitted its full natural width.
25
+ */
26
+ export function withCellWidth(options) {
27
+ return { ...options, maxWidth: cellCount(options.maxWidth) };
28
+ }
29
+ /**
30
+ * The options a renderable should *lay out against*: `withCellWidth`, with an
31
+ * unbounded offer resolved to the renderable's own natural width.
32
+ *
33
+ * [LAW:parse-dont-validate] `cellCount` cannot finish the job alone. It floors
34
+ * a negative width and NaN to zero from the number alone, but `Infinity` is not
35
+ * a quantity it can floor — the only finite answer is "as wide as this
36
+ * renderable's content wants", which is a question about the renderable and not
37
+ * about the number. So the parse is completed here, where the renderable is in
38
+ * hand, and the stamped options travel exactly as `withCellWidth`'s do.
39
+ *
40
+ * [LAW:single-enforcer] One checkpoint for the whole rule, not one per
41
+ * renderable. `Panel`, `Padding`, `Columns` and `Layout` each expand into the
42
+ * width they are offered, and each independently reached `" ".repeat(Infinity)`
43
+ * — Columns twice over, since its column *count* is derived from the width too
44
+ * and `new Array(Infinity)` throws a different error again.
45
+ *
46
+ * The natural width comes from `measure`, which every one of them already
47
+ * implements, and the recursion terminates because `measure` reports content
48
+ * rather than the offer: `Panel.measure({maxWidth: Infinity})` is `{9, 9}` for
49
+ * nine cells of content and frame, not `{9, Infinity}`.
50
+ *
51
+ * So this belongs at the top of `render` and never at the top of `measure`:
52
+ * `measure` is the method being asked, and asking it through here would ask it
53
+ * with itself. `measure` parses with `withCellWidth` and reports a natural
54
+ * width of its own — that is the half of the contract that makes this half work.
55
+ *
56
+ * A `maximum` of `Infinity` means the renderable genuinely cannot answer. Two
57
+ * ways in: it wraps a `Renderable` with no `measure`, so nothing in the tree
58
+ * knows how wide the content wants to be; or something inside it asked for an
59
+ * unbounded width of its own, as a `Table` column declared
60
+ * `{ ratio: Infinity }` does. [LAW:no-silent-failure] Both are unanswerable
61
+ * rather than zero, and saying so names the cause — where `String.repeat` and
62
+ * `new Array` only ever name their own argument.
63
+ */
64
+ export function withBoundedWidth(options, self) {
65
+ const parsed = withCellWidth(options);
66
+ if (Number.isFinite(parsed.maxWidth))
67
+ return parsed;
68
+ const natural = self.measure(parsed).maximum;
69
+ if (!Number.isFinite(natural)) {
70
+ throw new RangeError("maxWidth is unbounded and this renderable has no natural width to fall " +
71
+ "back on: its content does not implement measure(), or something inside " +
72
+ "it asked for an unbounded width of its own. Render it at a finite " +
73
+ "width, or give the content a measure() that reports a finite maximum.");
74
+ }
75
+ return { ...parsed, maxWidth: cellCount(natural) };
76
+ }
5
77
  export function isRenderable(obj) {
6
78
  return (typeof obj === "object" &&
7
79
  obj !== null &&
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/core/protocol.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4BH,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,QAAQ,IAAI,GAAG;QACf,OAAQ,GAAkB,CAAC,MAAM,KAAK,UAAU,CACjD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,SAAS,IAAI,GAAG;QAChB,OAAQ,GAAkB,CAAC,OAAO,KAAK,UAAU,CAClD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/core/protocol.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAyBvC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,aAAa,CAAC,OAAsB;IAClD,OAAO,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAsB,EACtB,IAAgB;IAEhB,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,MAAM,CAAC;IAEpD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,UAAU,CAClB,yEAAyE;YACvE,yEAAyE;YACzE,oEAAoE;YACpE,uEAAuE,CAC1E,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;AACrD,CAAC;AAUD,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,QAAQ,IAAI,GAAG;QACf,OAAQ,GAAkB,CAAC,MAAM,KAAK,UAAU,CACjD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,SAAS,IAAI,GAAG;QAChB,OAAQ,GAAkB,CAAC,OAAO,KAAK,UAAU,CAClD,CAAC;AACJ,CAAC"}
@@ -53,6 +53,27 @@ export declare class Segment {
53
53
  * Adjusts a line of segments to exactly `width` cells.
54
54
  */
55
55
  static adjustLineLength(line: Segment[], width: number, style?: Style, pad?: boolean): Segment[];
56
+ /**
57
+ * Crops a renderable's output so no line exceeds `width`, leaving short lines
58
+ * alone and the line structure exactly as it arrived.
59
+ *
60
+ * [LAW:single-enforcer] `adjustLineLength` is where a width is enforced, but
61
+ * it takes one line and a container holding arbitrary content has a stream of
62
+ * them. Without this step the container has to trust content to honour the
63
+ * offer, and content that ignores it overflows the region — which is how a
64
+ * `Layout` leaf and a `Tree` label came to emit forty cells into a one-cell
65
+ * offer while `Panel` and `Padding`, which split and adjust, did not.
66
+ *
67
+ * One segment in, one segment out, shortening text and nothing else — so the
68
+ * line structure that arrives is the line structure that leaves. Two earlier
69
+ * shapes of this both decided how many lines there were and both were wrong:
70
+ * built on `splitLines`, which cannot tell `"abc"` from `"abc\n"`, it invented
71
+ * a trailing newline and dropped the row of an empty `Tree` label entirely,
72
+ * running its guides into the next row; rebuilt to accumulate lines, it
73
+ * dropped the zero-width-but-present line `RichText` emits at an offer of 0,
74
+ * and a row split rendered nothing at all. A crop shortens; it does not count.
75
+ */
76
+ static cropLines(segments: Iterable<Segment>, width: number): Iterable<Segment>;
56
77
  /**
57
78
  * Returns total cell width of a line. Ignores control segments.
58
79
  */
@@ -1 +1 @@
1
- {"version":3,"file":"segment.d.ts","sourceRoot":"","sources":["../../src/core/segment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"segment.d.ts","sourceRoot":"","sources":["../../src/core/segment.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Segment — the atomic rendering unit. Every piece of styled terminal output
3
3
  * is represented as a Segment: (text, style?, control?).
4
4
  */
5
- import { cellLen, splitText, asCellCol } from "./cells.js";
5
+ import { cellLen, cellFit, splitText, asCellCol } from "./cells.js";
6
6
  // --- ControlType ---
7
7
  export var ControlType;
8
8
  (function (ControlType) {
@@ -156,6 +156,45 @@ export class Segment {
156
156
  }
157
157
  return result;
158
158
  }
159
+ /**
160
+ * Crops a renderable's output so no line exceeds `width`, leaving short lines
161
+ * alone and the line structure exactly as it arrived.
162
+ *
163
+ * [LAW:single-enforcer] `adjustLineLength` is where a width is enforced, but
164
+ * it takes one line and a container holding arbitrary content has a stream of
165
+ * them. Without this step the container has to trust content to honour the
166
+ * offer, and content that ignores it overflows the region — which is how a
167
+ * `Layout` leaf and a `Tree` label came to emit forty cells into a one-cell
168
+ * offer while `Panel` and `Padding`, which split and adjust, did not.
169
+ *
170
+ * One segment in, one segment out, shortening text and nothing else — so the
171
+ * line structure that arrives is the line structure that leaves. Two earlier
172
+ * shapes of this both decided how many lines there were and both were wrong:
173
+ * built on `splitLines`, which cannot tell `"abc"` from `"abc\n"`, it invented
174
+ * a trailing newline and dropped the row of an empty `Tree` label entirely,
175
+ * running its guides into the next row; rebuilt to accumulate lines, it
176
+ * dropped the zero-width-but-present line `RichText` emits at an offer of 0,
177
+ * and a row split rendered nothing at all. A crop shortens; it does not count.
178
+ */
179
+ static *cropLines(segments, width) {
180
+ const cap = Math.max(0, width);
181
+ let used = 0;
182
+ for (const segment of segments) {
183
+ if (segment.isControl) {
184
+ yield segment;
185
+ continue;
186
+ }
187
+ const parts = segment.text.split("\n");
188
+ for (let i = 0; i < parts.length; i++) {
189
+ if (i > 0)
190
+ used = 0;
191
+ const piece = cellFit(parts[i], asCellCol(cap - used));
192
+ used += cellLen(piece);
193
+ parts[i] = piece;
194
+ }
195
+ yield new Segment(parts.join("\n"), segment.style);
196
+ }
197
+ }
159
198
  /**
160
199
  * Returns total cell width of a line. Ignores control segments.
161
200
  */
@@ -1 +1 @@
1
- {"version":3,"file":"segment.js","sourceRoot":"","sources":["../../src/core/segment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"segment.js","sourceRoot":"","sources":["../../src/core/segment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Unsubscribe — the shape every `on…()` in this library hands back.
3
+ *
4
+ * [LAW:decomposition] It lives in `core/` because two subsystems that must not
5
+ * depend on each other both need it: `host/` returns one from `onData` and
6
+ * `onResize`, `widgets/` returns one from `onChange`, `onSubmit`, `onKey` and
7
+ * `onMouse`. Either home above this tier would make the other import a
8
+ * subsystem it has no business knowing about — the extraction of `src/host/`
9
+ * out of `src/widgets/` is what surfaced that, since the type was sitting in
10
+ * `widgets/types.ts` and the host seam was importing it from there.
11
+ */
12
+ export type Unsubscribe = () => void;
13
+ //# sourceMappingURL=subscription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../../src/core/subscription.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Unsubscribe — the shape every `on…()` in this library hands back.
3
+ *
4
+ * [LAW:decomposition] It lives in `core/` because two subsystems that must not
5
+ * depend on each other both need it: `host/` returns one from `onData` and
6
+ * `onResize`, `widgets/` returns one from `onChange`, `onSubmit`, `onKey` and
7
+ * `onMouse`. Either home above this tier would make the other import a
8
+ * subsystem it has no business knowing about — the extraction of `src/host/`
9
+ * out of `src/widgets/` is what surfaced that, since the type was sitting in
10
+ * `widgets/types.ts` and the host seam was importing it from there.
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=subscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../src/core/subscription.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/core/text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/core/text.ts"],"names":[],"mappings":"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"}
package/dist/core/text.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * RichText — styled text with spans. The primary text type for the library.
3
3
  */
4
- import { cellLen } from "./cells.js";
4
+ import { cellLen, cellCount } from "./cells.js";
5
5
  import { Segment } from "./segment.js";
6
6
  import { Style, NULL_STYLE, StyleSyntaxError } from "./style.js";
7
7
  import { stripOscTerminators } from "./sanitize.js";
@@ -11,6 +11,18 @@ const CONTROL_CHARS_RE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g;
11
11
  function stripControlChars(text) {
12
12
  return text.replace(CONTROL_CHARS_RE, "");
13
13
  }
14
+ /**
15
+ * The offsets a line of `lineWidth` cells is cut at to fold it into pieces of
16
+ * at most `maxWidth`. Requires `maxWidth >= 1`: the caller answers the
17
+ * zero-cell canvas, because "no cut fits" and "no cell fits" are different
18
+ * facts and only one of them is a list of offsets.
19
+ */
20
+ function foldCuts(lineWidth, maxWidth) {
21
+ const cuts = [];
22
+ for (let w = maxWidth; w < lineWidth; w += maxWidth)
23
+ cuts.push(w);
24
+ return cuts;
25
+ }
14
26
  // [LAW:single-enforcer] RichText is the *data-model* trust boundary for
15
27
  // link URLs — any Style carrying a link that enters a RichText is sanitized
16
28
  // in place, so callers that inspect `richText.style.link` or
@@ -664,7 +676,11 @@ export class RichText {
664
676
  }
665
677
  const allSegments = this._buildSegments(text);
666
678
  const logicalLines = Segment.splitLines(allSegments);
667
- const maxWidth = options.maxWidth;
679
+ // [LAW:parse-dont-validate] The one crossing for this renderable's width.
680
+ // Unparsed, a NaN width made `lineWidth <= maxWidth` false and every
681
+ // overflow arm a no-op, so the text emitted its full natural width and
682
+ // silently overflowed whatever asked for it.
683
+ const maxWidth = cellCount(options.maxWidth);
668
684
  const overflow = this._overflow ?? options.overflow ?? "fold";
669
685
  const justify = this._justify ?? options.justify;
670
686
  const noWrap = this._noWrap || (options.noWrap ?? false);
@@ -706,9 +722,13 @@ export class RichText {
706
722
  }
707
723
  }
708
724
  }
725
+ // Parsed for the same reason `render` parses it: an unparsed NaN ceiling
726
+ // makes both `Math.min` calls NaN, and a range of NaN..NaN is one no parent
727
+ // layout can divide.
728
+ const ceiling = cellCount(options.maxWidth);
709
729
  return {
710
- minimum: Math.min(maxWordWidth, options.maxWidth),
711
- maximum: Math.min(maxLineWidth, options.maxWidth),
730
+ minimum: Math.min(maxWordWidth, ceiling),
731
+ maximum: Math.min(maxLineWidth, ceiling),
712
732
  };
713
733
  }
714
734
  // --- Internal ---
@@ -784,11 +804,16 @@ export class RichText {
784
804
  *_overflowLine(line, lineWidth, maxWidth, overflow, terminateLine) {
785
805
  switch (overflow) {
786
806
  case "fold": {
787
- // Split at maxWidth boundaries
788
- const cuts = [];
789
- for (let w = maxWidth; w < lineWidth; w += maxWidth)
790
- cuts.push(w);
791
- const foldedLines = Segment.divide(line, cuts);
807
+ // Split at maxWidth boundaries. A cell cannot be split, so a zero-cell
808
+ // canvas holds no piece of the line and the fold is one empty piece —
809
+ // the same thing `crop` and `ellipsis` yield there, which is what makes
810
+ // the three overflow modes agree at the bottom of the range instead of
811
+ // this loop stepping by zero forever. It did exactly that before:
812
+ // ~2^27 pushes and about a gigabyte before a `RangeError`, reachable
813
+ // from any `Columns` or `Layout` squeezed to no width at all.
814
+ const foldedLines = maxWidth === 0
815
+ ? [Segment.adjustLineLength(line, 0, undefined, false)]
816
+ : Segment.divide(line, foldCuts(lineWidth, maxWidth));
792
817
  for (let index = 0; index < foldedLines.length; index += 1) {
793
818
  const fLine = foldedLines[index];
794
819
  yield* fLine;
@@ -807,11 +832,18 @@ export class RichText {
807
832
  break;
808
833
  }
809
834
  case "ellipsis": {
810
- if (maxWidth > 1) {
811
- const cropped = Segment.adjustLineLength(line, maxWidth - 1, undefined, false);
812
- yield* cropped;
835
+ // The marker takes the last cell and the text keeps the rest. At
836
+ // maxWidth 1 that is zero cells of text and the marker alone, which is
837
+ // the honest rendering of "all of this was cut"; the `maxWidth > 1`
838
+ // guard that used to stand here emitted no line at all, so every table
839
+ // column squeezed to a single cell rendered blank rather than
840
+ // truncated — `ellipsis` being the default column overflow, a
841
+ // hard-squeezed table looked like an empty frame.
842
+ yield* Segment.adjustLineLength(line, Math.max(0, maxWidth - 1), undefined, false);
843
+ // No cell to put it in at maxWidth 0, where every mode emits the bare
844
+ // line terminator.
845
+ if (maxWidth > 0)
813
846
  yield new Segment("\u2026");
814
- }
815
847
  if (terminateLine) {
816
848
  yield Segment.line();
817
849
  }