@promptctl/rich-js 0.1.0 → 0.3.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 (158) hide show
  1. package/README.md +29 -15
  2. package/dist/core/cells.d.ts +83 -3
  3. package/dist/core/cells.d.ts.map +1 -1
  4. package/dist/core/cells.js +113 -1
  5. package/dist/core/cells.js.map +1 -1
  6. package/dist/core/console.d.ts +0 -1
  7. package/dist/core/console.d.ts.map +1 -1
  8. package/dist/core/console.js +20 -16
  9. package/dist/core/console.js.map +1 -1
  10. package/dist/core/highlighter.d.ts.map +1 -1
  11. package/dist/core/highlighter.js.map +1 -1
  12. package/dist/core/oklch.d.ts +106 -0
  13. package/dist/core/oklch.d.ts.map +1 -0
  14. package/dist/core/oklch.js +221 -0
  15. package/dist/core/oklch.js.map +1 -0
  16. package/dist/core/render.d.ts +26 -7
  17. package/dist/core/render.d.ts.map +1 -1
  18. package/dist/core/render.js +83 -15
  19. package/dist/core/render.js.map +1 -1
  20. package/dist/core/segment.d.ts +14 -1
  21. package/dist/core/segment.d.ts.map +1 -1
  22. package/dist/core/segment.js +28 -3
  23. package/dist/core/segment.js.map +1 -1
  24. package/dist/core/style.d.ts +11 -2
  25. package/dist/core/style.d.ts.map +1 -1
  26. package/dist/core/style.js +31 -18
  27. package/dist/core/style.js.map +1 -1
  28. package/dist/core/text.d.ts +20 -0
  29. package/dist/core/text.d.ts.map +1 -1
  30. package/dist/core/text.js +31 -0
  31. package/dist/core/text.js.map +1 -1
  32. package/dist/index.d.ts +11 -4
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +12 -3
  35. package/dist/index.js.map +1 -1
  36. package/dist/renderables/columns.d.ts.map +1 -1
  37. package/dist/renderables/columns.js +15 -22
  38. package/dist/renderables/columns.js.map +1 -1
  39. package/dist/renderables/layout.d.ts.map +1 -1
  40. package/dist/renderables/layout.js +8 -29
  41. package/dist/renderables/layout.js.map +1 -1
  42. package/dist/renderables/live.d.ts.map +1 -1
  43. package/dist/renderables/live.js +8 -7
  44. package/dist/renderables/live.js.map +1 -1
  45. package/dist/renderables/panel.d.ts +34 -0
  46. package/dist/renderables/panel.d.ts.map +1 -1
  47. package/dist/renderables/panel.js +66 -23
  48. package/dist/renderables/panel.js.map +1 -1
  49. package/dist/template-bindings/helpers.d.ts +25 -0
  50. package/dist/template-bindings/helpers.d.ts.map +1 -0
  51. package/dist/template-bindings/helpers.js +31 -0
  52. package/dist/template-bindings/helpers.js.map +1 -0
  53. package/dist/template-bindings/index.d.ts +57 -18
  54. package/dist/template-bindings/index.d.ts.map +1 -1
  55. package/dist/template-bindings/index.js +83 -18
  56. package/dist/template-bindings/index.js.map +1 -1
  57. package/dist/template-bindings/palette-funcs.d.ts +76 -0
  58. package/dist/template-bindings/palette-funcs.d.ts.map +1 -0
  59. package/dist/template-bindings/palette-funcs.js +157 -0
  60. package/dist/template-bindings/palette-funcs.js.map +1 -0
  61. package/dist/template-bindings/style-funcs.d.ts.map +1 -1
  62. package/dist/template-bindings/style-funcs.js +33 -27
  63. package/dist/template-bindings/style-funcs.js.map +1 -1
  64. package/dist/themes/colorMath.d.ts +40 -0
  65. package/dist/themes/colorMath.d.ts.map +1 -1
  66. package/dist/themes/colorMath.js +82 -1
  67. package/dist/themes/colorMath.js.map +1 -1
  68. package/dist/themes/data/catppuccin-frappe.d.ts +4 -0
  69. package/dist/themes/data/catppuccin-frappe.d.ts.map +1 -0
  70. package/dist/themes/data/catppuccin-frappe.js +159 -0
  71. package/dist/themes/data/catppuccin-frappe.js.map +1 -0
  72. package/dist/themes/data/catppuccin-macchiato.d.ts +4 -0
  73. package/dist/themes/data/catppuccin-macchiato.d.ts.map +1 -0
  74. package/dist/themes/data/catppuccin-macchiato.js +159 -0
  75. package/dist/themes/data/catppuccin-macchiato.js.map +1 -0
  76. package/dist/themes/data/cyberpunk.d.ts +18 -0
  77. package/dist/themes/data/cyberpunk.d.ts.map +1 -0
  78. package/dist/themes/data/cyberpunk.js +192 -0
  79. package/dist/themes/data/cyberpunk.js.map +1 -0
  80. package/dist/themes/data/default.d.ts +4 -0
  81. package/dist/themes/data/default.d.ts.map +1 -0
  82. package/dist/themes/data/default.js +159 -0
  83. package/dist/themes/data/default.js.map +1 -0
  84. package/dist/themes/data/index.d.ts +10 -3
  85. package/dist/themes/data/index.d.ts.map +1 -1
  86. package/dist/themes/data/index.js +24 -7
  87. package/dist/themes/data/index.js.map +1 -1
  88. package/dist/themes/data/svg-export.d.ts +4 -0
  89. package/dist/themes/data/svg-export.d.ts.map +1 -0
  90. package/dist/themes/data/svg-export.js +159 -0
  91. package/dist/themes/data/svg-export.js.map +1 -0
  92. package/dist/themes/data/types.d.ts +4 -3
  93. package/dist/themes/data/types.d.ts.map +1 -1
  94. package/dist/themes/registry.d.ts +29 -2
  95. package/dist/themes/registry.d.ts.map +1 -1
  96. package/dist/themes/registry.js +62 -12
  97. package/dist/themes/registry.js.map +1 -1
  98. package/dist/themes/terminalThemes.d.ts +29 -20
  99. package/dist/themes/terminalThemes.d.ts.map +1 -1
  100. package/dist/themes/terminalThemes.js +50 -249
  101. package/dist/themes/terminalThemes.js.map +1 -1
  102. package/dist/themes/transpose.d.ts +88 -0
  103. package/dist/themes/transpose.d.ts.map +1 -0
  104. package/dist/themes/transpose.js +139 -0
  105. package/dist/themes/transpose.js.map +1 -0
  106. package/dist/widgets/button.d.ts +8 -5
  107. package/dist/widgets/button.d.ts.map +1 -1
  108. package/dist/widgets/button.js +36 -11
  109. package/dist/widgets/button.js.map +1 -1
  110. package/dist/widgets/checkbox.d.ts +1 -2
  111. package/dist/widgets/checkbox.d.ts.map +1 -1
  112. package/dist/widgets/checkbox.js +20 -7
  113. package/dist/widgets/checkbox.js.map +1 -1
  114. package/dist/widgets/dropdown.d.ts +4 -3
  115. package/dist/widgets/dropdown.d.ts.map +1 -1
  116. package/dist/widgets/dropdown.js +109 -27
  117. package/dist/widgets/dropdown.js.map +1 -1
  118. package/dist/widgets/event-router.d.ts +6 -3
  119. package/dist/widgets/event-router.d.ts.map +1 -1
  120. package/dist/widgets/event-router.js +179 -68
  121. package/dist/widgets/event-router.js.map +1 -1
  122. package/dist/widgets/focus-manager.d.ts +2 -1
  123. package/dist/widgets/focus-manager.d.ts.map +1 -1
  124. package/dist/widgets/focus-manager.js +28 -9
  125. package/dist/widgets/focus-manager.js.map +1 -1
  126. package/dist/widgets/index.d.ts +2 -2
  127. package/dist/widgets/index.d.ts.map +1 -1
  128. package/dist/widgets/index.js +1 -1
  129. package/dist/widgets/index.js.map +1 -1
  130. package/dist/widgets/screen.d.ts +2 -0
  131. package/dist/widgets/screen.d.ts.map +1 -1
  132. package/dist/widgets/screen.js +148 -45
  133. package/dist/widgets/screen.js.map +1 -1
  134. package/dist/widgets/slider.d.ts +6 -3
  135. package/dist/widgets/slider.d.ts.map +1 -1
  136. package/dist/widgets/slider.js +34 -10
  137. package/dist/widgets/slider.js.map +1 -1
  138. package/dist/widgets/static-item.d.ts +1 -1
  139. package/dist/widgets/static-item.d.ts.map +1 -1
  140. package/dist/widgets/static-item.js +12 -13
  141. package/dist/widgets/static-item.js.map +1 -1
  142. package/dist/widgets/text-input.d.ts +239 -13
  143. package/dist/widgets/text-input.d.ts.map +1 -1
  144. package/dist/widgets/text-input.js +1004 -74
  145. package/dist/widgets/text-input.js.map +1 -1
  146. package/dist/widgets/toggle.d.ts +1 -2
  147. package/dist/widgets/toggle.d.ts.map +1 -1
  148. package/dist/widgets/toggle.js +20 -8
  149. package/dist/widgets/toggle.js.map +1 -1
  150. package/dist/widgets/types.d.ts +21 -4
  151. package/dist/widgets/types.d.ts.map +1 -1
  152. package/dist/widgets/types.js +19 -0
  153. package/dist/widgets/types.js.map +1 -1
  154. package/dist/widgets/widget-base.d.ts +1 -0
  155. package/dist/widgets/widget-base.d.ts.map +1 -1
  156. package/dist/widgets/widget-base.js +24 -7
  157. package/dist/widgets/widget-base.js.map +1 -1
  158. package/package.json +5 -3
@@ -0,0 +1,221 @@
1
+ /**
2
+ * OKLCH color space — perceptually-uniform polar form of OKLab.
3
+ *
4
+ * Math from Björn Ottosson's OKLab specification:
5
+ * https://bottosson.github.io/posts/oklab/
6
+ *
7
+ * The full pipeline:
8
+ * sRGB (0..255 int) ↔ sRGB linear (0..1 float) ↔ OKLab ↔ OKLCH polar
9
+ * `fromRgba` walks left→right, `toRgba` walks right→left. The only lossy
10
+ * step is the final 0..255 quantization; the float math itself is
11
+ * reversible to within a few ULP.
12
+ *
13
+ * [LAW:one-type-per-behavior] OKLCH and sRGB are different *behaviors*:
14
+ * sRGB is the wire format terminals consume (what ANSI escape codes
15
+ * carry); OKLCH is the perceptual manipulation space (where equal
16
+ * numerical deltas mean equal perceptual deltas, which is the property
17
+ * "transposition" requires). Two types, mutual conversion, no hybrid.
18
+ *
19
+ * [LAW:one-way-deps] This module imports `ColorRgba` from core/color and
20
+ * nothing else from inside the project. Nothing in core/ depends back on
21
+ * this file.
22
+ */
23
+ import { ColorRgba } from "./color.js";
24
+ export const IDENTITY = Object.freeze({
25
+ hueShift: 0,
26
+ chromaScale: 1,
27
+ lightnessScale: 1,
28
+ lightnessShift: 0,
29
+ });
30
+ /**
31
+ * Flip lightness around the midpoint (`L' = 1 - L`) with hue and chroma
32
+ * untouched. Combined with the anchor logic in `transposePalette`, this
33
+ * converts a dark theme to its light "octave": semantic anchors
34
+ * (error/success/warning) still lightness-invert — only their *hue* is
35
+ * preserved — so errors stay red and dark-on-light becomes light-on-dark.
36
+ */
37
+ export const INVERT_LIGHTNESS = Object.freeze({
38
+ hueShift: 0,
39
+ chromaScale: 1,
40
+ lightnessScale: -1,
41
+ lightnessShift: 1,
42
+ });
43
+ /**
44
+ * Whether a key is the no-op transform. Exported so that callers
45
+ * (`transposePalette`) can fast-path byte-exact identity without going
46
+ * through the lossy sRGB↔OKLCH round-trip. [LAW:one-source-of-truth] —
47
+ * the predicate lives once, here.
48
+ */
49
+ export function isIdentityKey(k) {
50
+ return (k.hueShift % 360 === 0 && // a whole turn (0, 360, -360, …) is a no-op
51
+ k.chromaScale === 1 &&
52
+ k.lightnessScale === 1 &&
53
+ k.lightnessShift === 0);
54
+ }
55
+ // ---------------------------------------------------------------------------
56
+ // Pure conversion helpers (private).
57
+ // ---------------------------------------------------------------------------
58
+ function srgbToLinear(v) {
59
+ return v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);
60
+ }
61
+ function linearToSrgb(v) {
62
+ return v <= 0.0031308 ? 12.92 * v : 1.055 * Math.pow(v, 1 / 2.4) - 0.055;
63
+ }
64
+ function clamp01(v) {
65
+ return v < 0 ? 0 : v > 1 ? 1 : v;
66
+ }
67
+ // Small tolerance so float-fuzz at the gamut edge doesn't trigger needless
68
+ // chroma reduction on colors that are already representable.
69
+ const GAMUT_EPS = 1e-4;
70
+ // [LAW:one-source-of-truth] Below this chroma a color is treated as
71
+ // achromatic, and hue is pinned to 0 so round-trips stay stable. Used
72
+ // by `fromRgba` (after polar conversion) and `applyKey` (after chroma
73
+ // scaling collapses C toward 0). Same threshold both places.
74
+ const ACHROMATIC_EPS = 1e-7;
75
+ function inGamut(r, g, b) {
76
+ return (r >= -GAMUT_EPS && r <= 1 + GAMUT_EPS &&
77
+ g >= -GAMUT_EPS && g <= 1 + GAMUT_EPS &&
78
+ b >= -GAMUT_EPS && b <= 1 + GAMUT_EPS);
79
+ }
80
+ // ---------------------------------------------------------------------------
81
+ // Oklch — the value type.
82
+ // ---------------------------------------------------------------------------
83
+ /**
84
+ * Immutable OKLCH color. `l` ∈ [0, 1] (lightness), `c` ≥ 0 (chroma; typical
85
+ * sRGB-representable colors top out near 0.32), `h` ∈ [0, 360) (hue
86
+ * degrees), `alpha` ∈ [0, 1].
87
+ *
88
+ * [LAW:single-enforcer] Constructor is the only validation site, matching
89
+ * the `ColorRgba` pattern. Out-of-range `alpha` throws. l/c/h must be
90
+ * finite but are *not* clamped at construction — they're clamped during
91
+ * `toRgba` instead, so transforms can pass through intermediate
92
+ * representations (e.g. h = 720°, c = -0.1 mid-pipeline) before the final
93
+ * sRGB-quantization step normalizes them.
94
+ */
95
+ export class Oklch {
96
+ l;
97
+ c;
98
+ h;
99
+ alpha;
100
+ constructor(l, c, h, alpha = 1) {
101
+ this.l = l;
102
+ this.c = c;
103
+ this.h = h;
104
+ this.alpha = alpha;
105
+ if (!Number.isFinite(l))
106
+ throw new RangeError(`Oklch.l must be finite; got ${l}`);
107
+ if (!Number.isFinite(c))
108
+ throw new RangeError(`Oklch.c must be finite; got ${c}`);
109
+ if (!Number.isFinite(h))
110
+ throw new RangeError(`Oklch.h must be finite; got ${h}`);
111
+ if (!Number.isFinite(alpha) || alpha < 0 || alpha > 1) {
112
+ throw new RangeError(`Oklch.alpha must be a finite number in [0,1]; got ${alpha}`);
113
+ }
114
+ }
115
+ /** sRGB → linear → OKLab → polar. Pure; no I/O, no allocation beyond the result. */
116
+ static fromRgba(color) {
117
+ const [r, g, b, a] = color.normalized;
118
+ const lr = srgbToLinear(r);
119
+ const lg = srgbToLinear(g);
120
+ const lb = srgbToLinear(b);
121
+ const lLong = 0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb;
122
+ const mLong = 0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb;
123
+ const sLong = 0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb;
124
+ const lCube = Math.cbrt(lLong);
125
+ const mCube = Math.cbrt(mLong);
126
+ const sCube = Math.cbrt(sLong);
127
+ const L = 0.2104542553 * lCube + 0.7936177850 * mCube - 0.0040720468 * sCube;
128
+ const aLab = 1.9779984951 * lCube - 2.4285922050 * mCube + 0.4505937099 * sCube;
129
+ const bLab = 0.0259040371 * lCube + 0.7827717662 * mCube - 0.8086757660 * sCube;
130
+ const C = Math.sqrt(aLab * aLab + bLab * bLab);
131
+ let H = Math.atan2(bLab, aLab) * (180 / Math.PI);
132
+ if (H < 0)
133
+ H += 360;
134
+ if (C < ACHROMATIC_EPS)
135
+ H = 0;
136
+ return new Oklch(L, C, H, a);
137
+ }
138
+ /**
139
+ * Polar → OKLab → linear → sRGB (with chroma-bisection gamut clamping).
140
+ *
141
+ * [LAW:single-enforcer] All sRGB-gamut clamping for OKLCH happens here.
142
+ * Callers don't see intermediate float channels; they get a valid
143
+ * `ColorRgba` or a thrown error.
144
+ */
145
+ toRgba() {
146
+ // The normalization boundary the constructor promises: clamp L into [0,1]
147
+ // and C to non-negative here, so out-of-range intermediates (e.g. c = -0.1
148
+ // from a mid-pipeline transform) canonicalize to a valid color rather than
149
+ // flipping hue through a negative chroma. H needs no wrap — the cos/sin in
150
+ // the conversion are periodic. [LAW:single-enforcer]
151
+ const l = clamp01(this.l);
152
+ const c = Math.max(0, this.c);
153
+ const cInGamut = this.findInGamutChroma(l, c, this.h);
154
+ const { r, g, b } = this.toLinearRgb(l, cInGamut, this.h);
155
+ const sR = Math.round(clamp01(linearToSrgb(r)) * 255);
156
+ const sG = Math.round(clamp01(linearToSrgb(g)) * 255);
157
+ const sB = Math.round(clamp01(linearToSrgb(b)) * 255);
158
+ return new ColorRgba(sR, sG, sB, this.alpha);
159
+ }
160
+ /**
161
+ * Apply a `ThemeKey`. Returns a new `Oklch`; pure.
162
+ *
163
+ * [LAW:dataflow-not-control-flow] Identity short-circuits to `this` —
164
+ * same shape as `ColorRgba.compositeOver(bg)` returning `this` when
165
+ * `alpha === 1`. Callers invoke unconditionally; the data decides.
166
+ */
167
+ applyKey(k) {
168
+ if (isIdentityKey(k))
169
+ return this;
170
+ const newL = clamp01(this.l * k.lightnessScale + k.lightnessShift);
171
+ const newC = Math.max(0, this.c * k.chromaScale);
172
+ let newH = (this.h + k.hueShift) % 360;
173
+ if (newH < 0)
174
+ newH += 360;
175
+ // Same achromatic convention as fromRgba: collapsed chroma → pinned hue,
176
+ // so applyKey({chromaScale:0}).toRgba() → fromRgba round-trips stably.
177
+ if (newC < ACHROMATIC_EPS)
178
+ newH = 0;
179
+ return new Oklch(newL, newC, newH, this.alpha);
180
+ }
181
+ /** Linear-sRGB coordinates for an explicit (l, C, h). Pure; `toRgba` passes
182
+ * already-normalized values so this never sees out-of-range inputs. */
183
+ toLinearRgb(l, C, h) {
184
+ const hRad = h * (Math.PI / 180);
185
+ const aLab = C * Math.cos(hRad);
186
+ const bLab = C * Math.sin(hRad);
187
+ const lCube = l + 0.3963377774 * aLab + 0.2158037573 * bLab;
188
+ const mCube = l - 0.1055613458 * aLab - 0.0638541728 * bLab;
189
+ const sCube = l - 0.0894841775 * aLab - 1.2914855480 * bLab;
190
+ const lLong = lCube * lCube * lCube;
191
+ const mLong = mCube * mCube * mCube;
192
+ const sLong = sCube * sCube * sCube;
193
+ return {
194
+ r: +4.0767416621 * lLong - 3.3077115913 * mLong + 0.2309699292 * sLong,
195
+ g: -1.2684380046 * lLong + 2.6097574011 * mLong - 0.3413193965 * sLong,
196
+ b: -0.0041960863 * lLong - 0.7034186147 * mLong + 1.7076147010 * sLong,
197
+ };
198
+ }
199
+ /**
200
+ * Largest chroma ≤ `c` whose (l, h) projection lies in sRGB.
201
+ * Standard chroma-reduction-by-bisection: 24 iterations gives ~1e-7
202
+ * precision, more than enough since the next step quantizes to 1/255.
203
+ */
204
+ findInGamutChroma(l, c, h) {
205
+ const direct = this.toLinearRgb(l, c, h);
206
+ if (inGamut(direct.r, direct.g, direct.b))
207
+ return c;
208
+ let lo = 0;
209
+ let hi = c;
210
+ for (let i = 0; i < 24; i++) {
211
+ const mid = (lo + hi) / 2;
212
+ const probe = this.toLinearRgb(l, mid, h);
213
+ if (inGamut(probe.r, probe.g, probe.b))
214
+ lo = mid;
215
+ else
216
+ hi = mid;
217
+ }
218
+ return lo;
219
+ }
220
+ }
221
+ //# sourceMappingURL=oklch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oklch.js","sourceRoot":"","sources":["../../src/core/oklch.ts"],"names":[],"mappings":"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"}
@@ -11,13 +11,22 @@
11
11
  * `isTTY` in the options so detection does not consult ambient process state.
12
12
  *
13
13
  * [LAW:single-enforcer] The Segment-to-ANSI conversion lives in `segmentsToString`
14
- * and is the single way segments become wire bytes. `Console._renderSegment`
15
- * delegates here, so terminal output and string export agree by construction.
14
+ * and is the single way segments become wire bytes. `Console._writeSegments`,
15
+ * `Live.refresh`, and `segmentToString` all delegate here, so terminal output,
16
+ * live frames, string export, and single-segment encoding agree by construction.
16
17
  *
17
- * [LAW:dataflow-not-control-flow] The same loop runs every render: walk the
18
- * generator, drop control segments, encode each remaining segment with the
19
- * configured color system. `colorSystem === null` is data — it makes
20
- * `Style.render` skip codes — not a separate code path.
18
+ * [LAW:dataflow-not-control-flow] The same pipeline runs every render: collect
19
+ * non-control non-empty pieces, partition by SGR-codes (SGR-runs), partition
20
+ * each run by link (link-runs), emit one SGR open/close per run with link
21
+ * open/close pairs sitting inside. `colorSystem === null` is data: every piece
22
+ * is collected with empty SGR-codes *and* no link, so the same pipeline emits
23
+ * plain text — no SGR wraps and no OSC 8 hyperlink wraps. NO_COLOR therefore
24
+ * strips *all* ANSI escape emission, not just colors.
25
+ *
26
+ * [LAW:types-are-the-program] Adjacent same-style segments share an SGR wrap
27
+ * because the SGR-codes string is the same group key for both — the
28
+ * partitioning shape (data) encodes the byte structure; the emit walk is a
29
+ * mechanical fold over it.
21
30
  */
22
31
  import { ColorDepth } from "./color.js";
23
32
  import type { Segment } from "./segment.js";
@@ -28,7 +37,8 @@ export interface RenderToStringOptions {
28
37
  /**
29
38
  * Color encoding to emit. Accepts a string spec (`"auto"`, `"truecolor"`,
30
39
  * `"256"`, `"ansi"`, `"none"`), a `ColorDepth` enum value, or `null` to
31
- * strip all color codes. Default truecolor.
40
+ * strip *all* ANSI escape emission — SGR colors/attributes *and* OSC 8
41
+ * hyperlinks. Default truecolor.
32
42
  */
33
43
  colorSystem?: string | ColorDepth | null;
34
44
  /**
@@ -45,7 +55,16 @@ export interface RenderToStringOptions {
45
55
  /** When true, forces `colorSystem` to `null` regardless of the explicit value. */
46
56
  noColor?: boolean;
47
57
  }
58
+ /**
59
+ * Encodes a single segment as ANSI bytes. Equivalent to
60
+ * `segmentsToString([segment], colorSystem)` — same SGR / OSC 8 layout.
61
+ */
48
62
  export declare function segmentToString(segment: Segment, colorSystem: ColorDepth | null): string;
63
+ /**
64
+ * Encodes a sequence of segments as ANSI bytes, coalescing adjacent
65
+ * same-SGR segments under a single SGR open/close pair, with OSC 8 link
66
+ * pairs nested inside per same-link sub-run.
67
+ */
49
68
  export declare function segmentsToString(segments: Iterable<Segment>, colorSystem: ColorDepth | null): string;
50
69
  export declare function renderToString(renderable: Renderable, options?: RenderToStringOptions): string;
51
70
  //# sourceMappingURL=render.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/core/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,UAAU,EAAsB,MAAM,YAAY,CAAC;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,eAAe,CAAC;AAE/D,MAAM,WAAW,qBAAqB;IACpC,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;IACzC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kFAAkF;IAClF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAID,wBAAgB,eAAe,CAC7B,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,UAAU,GAAG,IAAI,GAC7B,MAAM,CAIR;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAC3B,WAAW,EAAE,UAAU,GAAG,IAAI,GAC7B,MAAM,CAIR;AAED,wBAAgB,cAAc,CAC5B,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CA8BR"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/core/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,UAAU,EAAsB,MAAM,YAAY,CAAC;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,eAAe,CAAC;AAE/D,MAAM,WAAW,qBAAqB;IACpC,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;IACzC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kFAAkF;IAClF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA2BD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,UAAU,GAAG,IAAI,GAC7B,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAC3B,WAAW,EAAE,UAAU,GAAG,IAAI,GAC7B,MAAM,CAoCR;AAED,wBAAgB,cAAc,CAC5B,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CA8BR"}
@@ -11,28 +11,96 @@
11
11
  * `isTTY` in the options so detection does not consult ambient process state.
12
12
  *
13
13
  * [LAW:single-enforcer] The Segment-to-ANSI conversion lives in `segmentsToString`
14
- * and is the single way segments become wire bytes. `Console._renderSegment`
15
- * delegates here, so terminal output and string export agree by construction.
14
+ * and is the single way segments become wire bytes. `Console._writeSegments`,
15
+ * `Live.refresh`, and `segmentToString` all delegate here, so terminal output,
16
+ * live frames, string export, and single-segment encoding agree by construction.
16
17
  *
17
- * [LAW:dataflow-not-control-flow] The same loop runs every render: walk the
18
- * generator, drop control segments, encode each remaining segment with the
19
- * configured color system. `colorSystem === null` is data — it makes
20
- * `Style.render` skip codes — not a separate code path.
18
+ * [LAW:dataflow-not-control-flow] The same pipeline runs every render: collect
19
+ * non-control non-empty pieces, partition by SGR-codes (SGR-runs), partition
20
+ * each run by link (link-runs), emit one SGR open/close per run with link
21
+ * open/close pairs sitting inside. `colorSystem === null` is data: every piece
22
+ * is collected with empty SGR-codes *and* no link, so the same pipeline emits
23
+ * plain text — no SGR wraps and no OSC 8 hyperlink wraps. NO_COLOR therefore
24
+ * strips *all* ANSI escape emission, not just colors.
25
+ *
26
+ * [LAW:types-are-the-program] Adjacent same-style segments share an SGR wrap
27
+ * because the SGR-codes string is the same group key for both — the
28
+ * partitioning shape (data) encodes the byte structure; the emit walk is a
29
+ * mechanical fold over it.
21
30
  */
22
31
  import { ColorDepth, resolveColorSystem } from "./color.js";
23
32
  const DEFAULT_WIDTH = 80;
24
- export function segmentToString(segment, colorSystem) {
33
+ function segmentToPiece(segment, colorSystem) {
25
34
  if (segment.isControl)
26
- return "";
27
- if (!segment.style || colorSystem === null)
28
- return segment.text;
29
- return segment.style.render(segment.text, colorSystem);
35
+ return undefined;
36
+ if (segment.text.length === 0)
37
+ return undefined;
38
+ const style = segment.style;
39
+ if (!style || style.isNull || colorSystem === null) {
40
+ return { text: segment.text, sgrCodes: "", link: undefined };
41
+ }
42
+ return {
43
+ text: segment.text,
44
+ sgrCodes: style.toSgrCodes(colorSystem),
45
+ link: style.link,
46
+ };
30
47
  }
48
+ /**
49
+ * Encodes a single segment as ANSI bytes. Equivalent to
50
+ * `segmentsToString([segment], colorSystem)` — same SGR / OSC 8 layout.
51
+ */
52
+ export function segmentToString(segment, colorSystem) {
53
+ return segmentsToString([segment], colorSystem);
54
+ }
55
+ /**
56
+ * Encodes a sequence of segments as ANSI bytes, coalescing adjacent
57
+ * same-SGR segments under a single SGR open/close pair, with OSC 8 link
58
+ * pairs nested inside per same-link sub-run.
59
+ */
31
60
  export function segmentsToString(segments, colorSystem) {
32
- let out = "";
33
- for (const s of segments)
34
- out += segmentToString(s, colorSystem);
35
- return out;
61
+ const pieces = [];
62
+ for (const s of segments) {
63
+ const p = segmentToPiece(s, colorSystem);
64
+ if (p)
65
+ pieces.push(p);
66
+ }
67
+ if (pieces.length === 0)
68
+ return "";
69
+ // [LAW:dataflow-not-control-flow] One linear chunk accumulator for the
70
+ // entire output; SGR / OSC 8 boundaries and piece texts all push into it
71
+ // in order. No per-link-run intermediate string, no quadratic `+=` chains.
72
+ const parts = [];
73
+ let i = 0;
74
+ while (i < pieces.length) {
75
+ const sgr = pieces[i].sgrCodes;
76
+ let j = i + 1;
77
+ while (j < pieces.length && pieces[j].sgrCodes === sgr)
78
+ j++;
79
+ if (sgr.length > 0)
80
+ parts.push(`\x1b[${sgr}m`);
81
+ let k = i;
82
+ while (k < j) {
83
+ const link = pieces[k].link;
84
+ let l = k + 1;
85
+ while (l < j && pieces[l].link === link)
86
+ l++;
87
+ if (link) {
88
+ parts.push(`\x1b]8;;${link}\x1b\\`);
89
+ for (let m = k; m < l; m++)
90
+ parts.push(pieces[m].text);
91
+ parts.push("\x1b]8;;\x1b\\");
92
+ }
93
+ else {
94
+ for (let m = k; m < l; m++)
95
+ parts.push(pieces[m].text);
96
+ }
97
+ k = l;
98
+ }
99
+ if (sgr.length > 0)
100
+ parts.push("\x1b[0m");
101
+ i = j;
102
+ }
103
+ return parts.join("");
36
104
  }
37
105
  export function renderToString(renderable, options) {
38
106
  const width = options?.width ?? DEFAULT_WIDTH;
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/core/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA6B5D,MAAM,aAAa,GAAG,EAAE,CAAC;AAEzB,MAAM,UAAU,eAAe,CAC7B,OAAgB,EAChB,WAA8B;IAE9B,IAAI,OAAO,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,WAAW,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC;IAChE,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,QAA2B,EAC3B,WAA8B;IAE9B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,GAAG,IAAI,eAAe,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IACjE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,UAAsB,EACtB,OAA+B;IAE/B,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,aAAa,CAAC;IAC9C,uEAAuE;IACvE,0EAA0E;IAC1E,0EAA0E;IAC1E,4EAA4E;IAC5E,kDAAkD;IAClD,yEAAyE;IACzE,oCAAoC;IACpC,MAAM,OAAO,GAAG,OAAO,EAAE,WAAW,CAAC;IACrC,4EAA4E;IAC5E,4DAA4D;IAC5D,MAAM,aAAa,GAAuB,EAAE,CAAC;IAC7C,IAAI,OAAO,EAAE,GAAG,KAAK,SAAS;QAAE,aAAa,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAChE,IAAI,OAAO,EAAE,KAAK,KAAK,SAAS;QAAE,aAAa,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACtE,MAAM,WAAW,GAAG,OAAO,EAAE,OAAO;QAClC,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,OAAO,KAAK,SAAS;YACrB,CAAC,CAAC,UAAU,CAAC,SAAS;YACtB,CAAC,CAAC,OAAO,OAAO,KAAK,QAAQ;gBAC3B,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,aAAa,CAAC;gBAC5C,CAAC,CAAC,OAAO,CAAC;IAChB,MAAM,aAAa,GAAkB;QACnC,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,KAAK;KACjB,CAAC;IAEF,OAAO,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,CAAC;AACzE,CAAC"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/core/render.ts"],"names":[],"mappings":"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"}
@@ -2,6 +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 { type CellCol } from "./cells.js";
5
6
  import { Style } from "./style.js";
6
7
  export declare enum ControlType {
7
8
  BELL = "bell",
@@ -33,7 +34,7 @@ export declare class Segment {
33
34
  /**
34
35
  * Splits at a cell position. Returns [left, right].
35
36
  */
36
- splitCells(position: number): [Segment, Segment];
37
+ splitCells(position: CellCol): [Segment, Segment];
37
38
  private static _line;
38
39
  static line(): Segment;
39
40
  /**
@@ -60,6 +61,18 @@ export declare class Segment {
60
61
  * Returns [width, height] of a set of lines.
61
62
  */
62
63
  static getShape(lines: Segment[][]): [number, number];
64
+ /**
65
+ * Composes cells side by side into full lines. Each cell contributes its
66
+ * own lines cropped/padded to its declared width; a cell shorter than the
67
+ * tallest is filled with blank space so the grid stays aligned. Adjacent
68
+ * cells are separated by a gutter of spaces, and each merged row ends with a
69
+ * line break. This is the single side-by-side merge used by every horizontal
70
+ * layout (Columns grid rows, Layout row splits).
71
+ */
72
+ static mergeHorizontal(cells: readonly {
73
+ readonly lines: Segment[][];
74
+ readonly width: number;
75
+ }[], gutter?: number): Iterable<Segment>;
63
76
  /**
64
77
  * Merges contiguous segments with the same style.
65
78
  */
@@ -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 } from "./cells.js";
5
+ import { cellLen, splitText, asCellCol } from "./cells.js";
6
6
  // --- ControlType ---
7
7
  export var ControlType;
8
8
  (function (ControlType) {
@@ -148,7 +148,7 @@ export class Segment {
148
148
  remaining -= segWidth;
149
149
  }
150
150
  else {
151
- const [left] = segment.splitCells(remaining);
151
+ const [left] = segment.splitCells(asCellCol(remaining));
152
152
  result.push(left);
153
153
  remaining = 0;
154
154
  break;
@@ -182,6 +182,31 @@ export class Segment {
182
182
  }
183
183
  return [maxWidth, lines.length];
184
184
  }
185
+ /**
186
+ * Composes cells side by side into full lines. Each cell contributes its
187
+ * own lines cropped/padded to its declared width; a cell shorter than the
188
+ * tallest is filled with blank space so the grid stays aligned. Adjacent
189
+ * cells are separated by a gutter of spaces, and each merged row ends with a
190
+ * line break. This is the single side-by-side merge used by every horizontal
191
+ * layout (Columns grid rows, Layout row splits).
192
+ */
193
+ static *mergeHorizontal(cells, gutter = 0) {
194
+ let height = 0;
195
+ for (const cell of cells) {
196
+ if (cell.lines.length > height)
197
+ height = cell.lines.length;
198
+ }
199
+ const gap = gutter > 0 ? [new Segment(" ".repeat(gutter))] : [];
200
+ for (let row = 0; row < height; row++) {
201
+ for (let col = 0; col < cells.length; col++) {
202
+ if (col > 0)
203
+ yield* gap;
204
+ const cell = cells[col];
205
+ yield* Segment.adjustLineLength(cell.lines[row] ?? [], cell.width);
206
+ }
207
+ yield Segment.line();
208
+ }
209
+ }
185
210
  /**
186
211
  * Merges contiguous segments with the same style.
187
212
  */
@@ -261,7 +286,7 @@ export class Segment {
261
286
  currentSegment = segments[segmentIndex];
262
287
  }
263
288
  if (currentSegment && !currentSegment.isControl && cellOffset < cut) {
264
- const splitAt = cut - cellOffset;
289
+ const splitAt = asCellCol(cut - cellOffset);
265
290
  const [left, right] = currentSegment.splitCells(splitAt);
266
291
  if (left.hasText)
267
292
  section.push(left);
@@ -1 +1 @@
1
- {"version":3,"file":"segment.js","sourceRoot":"","sources":["../../src/core/segment.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGhD,sBAAsB;AAEtB,MAAM,CAAN,IAAY,WAiBX;AAjBD,WAAY,WAAW;IACrB,4BAAa,CAAA;IACb,kDAAmC,CAAA;IACnC,4BAAa,CAAA;IACb,8BAAe,CAAA;IACf,0CAA2B,CAAA;IAC3B,0CAA2B,CAAA;IAC3B,sDAAuC,CAAA;IACvC,wDAAyC,CAAA;IACzC,sCAAuB,CAAA;IACvB,0CAA2B,CAAA;IAC3B,gDAAiC,CAAA;IACjC,kDAAmC,CAAA;IACnC,8DAA+C,CAAA;IAC/C,gDAAiC,CAAA;IACjC,8CAA+B,CAAA;IAC/B,oDAAqC,CAAA;AACvC,CAAC,EAjBW,WAAW,KAAX,WAAW,QAiBtB;AAID,kBAAkB;AAElB,MAAM,OAAO,OAAO;IACT,IAAI,CAAS;IACb,KAAK,CAAoB;IACzB,OAAO,CAA4B;IAE5C,YACE,IAAY,EACZ,KAAa,EACb,OAAuB;QAEvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,QAAgB;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;QAC5B,IAAI,QAAQ,IAAI,GAAG;YAAE,OAAO,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,QAAQ,IAAI,CAAC;YAAE,OAAO,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAClD,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC7D,OAAO;YACL,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC;YACjC,IAAI,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;SACnC,CAAC;IACJ,CAAC;IAED,2BAA2B;IAEnB,MAAM,CAAC,KAAK,CAAsB;IAC1C,MAAM,CAAC,IAAI;QACT,OAAO,CAAC,OAAO,CAAC,KAAK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,iCAAiC;IAEjC;;OAEG;IACH,MAAM,CAAC,CAAC,UAAU,CAChB,QAA2B,EAC3B,KAAa,EACb,SAAiB;QAEjB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtB,MAAM,OAAO,CAAC;gBACd,SAAS;YACX,CAAC;YACD,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;YACtB,IAAI,KAAK;gBAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,SAAS;gBAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACpD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,CAAC,aAAa,CACnB,QAA2B,EAC3B,SAAkB;QAElB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;gBAAE,MAAM,OAAO,CAAC;QACrD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,QAA2B;QAC3C,MAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,IAAI,WAAW,GAAc,EAAE,CAAC;QAEhC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtB,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC1B,SAAS;YACX,CAAC;YAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC1B,SAAS;YACX,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACV,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACxB,WAAW,GAAG,EAAE,CAAC;gBACnB,CAAC;gBACD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;gBACvB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpB,WAAW,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1B,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CACrB,IAAe,EACf,KAAa,EACb,KAAa,EACb,GAAG,GAAG,IAAI;QAEV,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,YAAY,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC;QAExC,IAAI,YAAY,GAAG,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC;YACtB,OAAO,CAAC,GAAG,IAAI,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QACzE,CAAC;QAED,gBAAgB;QAChB,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;YAC3B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrB,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;YACpC,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrB,SAAS,IAAI,QAAQ,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBAC7C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClB,SAAS,GAAG,CAAC,CAAC;gBACd,MAAM;YACR,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,IAAe;QAClC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBACvB,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC;YAC9B,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAkB;QAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtC,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,GAAG,QAAQ;gBAAE,QAAQ,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,CAAC,QAAQ,CAAC,QAA2B;QAC1C,IAAI,OAA4B,CAAC;QAEjC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,GAAG,OAAO,CAAC;gBAClB,SAAS;YACX,CAAC;YACD,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC1F,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,CAAC;gBACd,OAAO,GAAG,OAAO,CAAC;YACpB,CAAC;QACH,CAAC;QACD,IAAI,OAAO;YAAE,MAAM,OAAO,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,CAAC,UAAU,CAAC,QAA2B;QAC5C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;gBACxB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACtF,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,CAAC;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,CAAC,WAAW,CAAC,QAA2B;QAC7C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,CAAC,WAAW,CAAC,QAA2B;QAC7C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/E,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,CAAC;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,CACX,QAAmB,EACnB,IAAc;QAEd,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEzC,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,cAAc,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;QAE5C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,OAAO,GAAc,EAAE,CAAC;YAE9B,OAAO,cAAc,IAAI,UAAU,GAAG,cAAc,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;gBACvE,IAAI,cAAc,CAAC,SAAS,EAAE,CAAC;oBAC7B,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC/B,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBAC7B,UAAU,IAAI,cAAc,CAAC,UAAU,CAAC;gBAC1C,CAAC;gBACD,YAAY,EAAE,CAAC;gBACf,cAAc,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC1C,CAAC;YAED,IAAI,cAAc,IAAI,CAAC,cAAc,CAAC,SAAS,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;gBACpE,MAAM,OAAO,GAAG,GAAG,GAAG,UAAU,CAAC;gBACjC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACzD,IAAI,IAAI,CAAC,OAAO;oBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;gBAC9B,cAAc,GAAG,KAAK,CAAC;YACzB,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QAED,qBAAqB;QACrB,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,IAAI,cAAc,EAAE,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACvD,YAAY,EAAE,CAAC;QACf,OAAO,YAAY,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAE,CAAC,CAAC;YACnC,YAAY,EAAE,CAAC;QACjB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,yBAAyB;IAEzB;;OAEG;IACH,MAAM,CAAC,QAAQ,CACb,KAAkB,EAClB,KAAa,EACb,MAAc,EACd,KAAY;QAEZ,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAChC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAC7C,CAAC;QACF,MAAM,SAAS,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAChB,KAAkB,EAClB,KAAa,EACb,MAAc,EACd,KAAY;QAEZ,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAClC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAC7C,CAAC;QACF,MAAM,SAAS,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QACzB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAChB,KAAkB,EAClB,KAAa,EACb,MAAc,EACd,KAAY;QAEZ,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAClC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAC7C,CAAC;QACF,MAAM,SAAS,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QACzB,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CACb,KAAkB,EAClB,KAAa,EACb,MAAc,EACd,KAAa;QAEb,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAChC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAC7C,CAAC;QACF,MAAM,SAAS,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB,CACtB,QAA2B,EAC3B,KAAa,EACb,GAAG,GAAG,IAAI,EACV,eAAe,GAAG,KAAK,EACvB,KAAa;QAEb,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAgB,EAAE,CAAC;QAE/B,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YACnE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtB,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,2BAA2B;AAE3B,SAAS,WAAW,CAAC,CAAoB,EAAE,CAAoB;IAC7D,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"segment.js","sourceRoot":"","sources":["../../src/core/segment.ts"],"names":[],"mappings":"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"}
@@ -58,8 +58,6 @@ export declare class Style {
58
58
  readonly overline: boolean | undefined;
59
59
  readonly link: string | undefined;
60
60
  readonly meta: Record<string, unknown> | undefined;
61
- /** @internal */
62
- readonly _linkId: number;
63
61
  constructor(options?: StyleOptions);
64
62
  get isNull(): boolean;
65
63
  get transparentBackground(): boolean;
@@ -71,6 +69,17 @@ export declare class Style {
71
69
  */
72
70
  add(other: Style | undefined): Style;
73
71
  equals(other: Style): boolean;
72
+ /**
73
+ * Returns the SGR parameter list this style emits (e.g. `"1;31;48;2;0;0;255"`),
74
+ * or `""` when the style has no SGR contribution. Excludes OSC 8 link bytes —
75
+ * links are not SGR. The Strip renderer uses this string as the group key for
76
+ * adjacent-same-style coalescing; the per-segment `render` path wraps the
77
+ * returned codes in `\x1b[...m`.
78
+ *
79
+ * [LAW:one-source-of-truth] One computation of SGR codes — both `render` and
80
+ * the segment coalescer derive from this.
81
+ */
82
+ toSgrCodes(colorSystem?: ColorDepth): string;
74
83
  /**
75
84
  * Render text with this style's ANSI escape codes.
76
85
  */
@@ -1 +1 @@
1
- {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../src/core/style.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../src/core/style.ts"],"names":[],"mappings":"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"}