@profullstack/hqtui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/README.md +144 -0
  2. package/dist/ansi.d.ts +42 -0
  3. package/dist/ansi.d.ts.map +1 -0
  4. package/dist/ansi.js +66 -0
  5. package/dist/ansi.js.map +1 -0
  6. package/dist/app.d.ts +128 -0
  7. package/dist/app.d.ts.map +1 -0
  8. package/dist/app.js +296 -0
  9. package/dist/app.js.map +1 -0
  10. package/dist/buffer.d.ts +50 -0
  11. package/dist/buffer.d.ts.map +1 -0
  12. package/dist/buffer.js +184 -0
  13. package/dist/buffer.js.map +1 -0
  14. package/dist/capabilities.d.ts +36 -0
  15. package/dist/capabilities.d.ts.map +1 -0
  16. package/dist/capabilities.js +93 -0
  17. package/dist/capabilities.js.map +1 -0
  18. package/dist/color.d.ts +47 -0
  19. package/dist/color.d.ts.map +1 -0
  20. package/dist/color.js +176 -0
  21. package/dist/color.js.map +1 -0
  22. package/dist/diff.d.ts +39 -0
  23. package/dist/diff.d.ts.map +1 -0
  24. package/dist/diff.js +203 -0
  25. package/dist/diff.js.map +1 -0
  26. package/dist/graphics/blocks.d.ts +26 -0
  27. package/dist/graphics/blocks.d.ts.map +1 -0
  28. package/dist/graphics/blocks.js +49 -0
  29. package/dist/graphics/blocks.js.map +1 -0
  30. package/dist/graphics/braille.d.ts +33 -0
  31. package/dist/graphics/braille.d.ts.map +1 -0
  32. package/dist/graphics/braille.js +166 -0
  33. package/dist/graphics/braille.js.map +1 -0
  34. package/dist/graphics/index.d.ts +4 -0
  35. package/dist/graphics/index.d.ts.map +1 -0
  36. package/dist/graphics/index.js +4 -0
  37. package/dist/graphics/index.js.map +1 -0
  38. package/dist/graphics/plot.d.ts +91 -0
  39. package/dist/graphics/plot.d.ts.map +1 -0
  40. package/dist/graphics/plot.js +291 -0
  41. package/dist/graphics/plot.js.map +1 -0
  42. package/dist/index.d.ts +34 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +42 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/input.d.ts +62 -0
  47. package/dist/input.d.ts.map +1 -0
  48. package/dist/input.js +245 -0
  49. package/dist/input.js.map +1 -0
  50. package/dist/layout.d.ts +51 -0
  51. package/dist/layout.d.ts.map +1 -0
  52. package/dist/layout.js +163 -0
  53. package/dist/layout.js.map +1 -0
  54. package/dist/surface.d.ts +81 -0
  55. package/dist/surface.d.ts.map +1 -0
  56. package/dist/surface.js +181 -0
  57. package/dist/surface.js.map +1 -0
  58. package/dist/terminal.d.ts +63 -0
  59. package/dist/terminal.d.ts.map +1 -0
  60. package/dist/terminal.js +189 -0
  61. package/dist/terminal.js.map +1 -0
  62. package/dist/testing.d.ts +71 -0
  63. package/dist/testing.d.ts.map +1 -0
  64. package/dist/testing.js +171 -0
  65. package/dist/testing.js.map +1 -0
  66. package/dist/theme.d.ts +58 -0
  67. package/dist/theme.d.ts.map +1 -0
  68. package/dist/theme.js +238 -0
  69. package/dist/theme.js.map +1 -0
  70. package/dist/ui.d.ts +194 -0
  71. package/dist/ui.d.ts.map +1 -0
  72. package/dist/ui.js +439 -0
  73. package/dist/ui.js.map +1 -0
  74. package/dist/unicode.d.ts +36 -0
  75. package/dist/unicode.d.ts.map +1 -0
  76. package/dist/unicode.js +221 -0
  77. package/dist/unicode.js.map +1 -0
  78. package/dist/widgets/controls.d.ts +95 -0
  79. package/dist/widgets/controls.d.ts.map +1 -0
  80. package/dist/widgets/controls.js +231 -0
  81. package/dist/widgets/controls.js.map +1 -0
  82. package/dist/widgets/index.d.ts +5 -0
  83. package/dist/widgets/index.d.ts.map +1 -0
  84. package/dist/widgets/index.js +5 -0
  85. package/dist/widgets/index.js.map +1 -0
  86. package/dist/widgets/meters.d.ts +100 -0
  87. package/dist/widgets/meters.d.ts.map +1 -0
  88. package/dist/widgets/meters.js +209 -0
  89. package/dist/widgets/meters.js.map +1 -0
  90. package/dist/widgets/table.d.ts +92 -0
  91. package/dist/widgets/table.d.ts.map +1 -0
  92. package/dist/widgets/table.js +228 -0
  93. package/dist/widgets/table.js.map +1 -0
  94. package/dist/widgets/text.d.ts +64 -0
  95. package/dist/widgets/text.d.ts.map +1 -0
  96. package/dist/widgets/text.js +123 -0
  97. package/dist/widgets/text.js.map +1 -0
  98. package/package.json +56 -0
@@ -0,0 +1,49 @@
1
+ /** Sub-cell glyph ramps. Every one degrades to ASCII when Unicode is off. */
2
+ /** Left-to-right eighths: ▏▎▍▌▋▊▉█ — horizontal bars and meters. */
3
+ export const HORIZONTAL_EIGHTHS = ["", "▏", "▎", "▍", "▌", "▋", "▊", "▉", "█"];
4
+ /** Bottom-up eighths: ▁▂▃▄▅▆▇█ — sparklines and column charts. */
5
+ export const VERTICAL_EIGHTHS = ["", "▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"];
6
+ /** Two vertical halves, for double-density line plots. */
7
+ export const HALF_BLOCKS = { upper: "▀", lower: "▄", full: "█", empty: " " };
8
+ /** Quadrants indexed by a 4-bit mask: 1=TL, 2=TR, 4=BL, 8=BR. */
9
+ export const QUADRANTS = [
10
+ " ", "▘", "▝", "▀", "▖", "▌", "▞", "▛", "▗", "▚", "▐", "▜", "▄", "▙", "▟", "█",
11
+ ];
12
+ export const SHADES = ["░", "▒", "▓", "█"];
13
+ export const ASCII_RAMP = [" ", ".", ":", "-", "=", "+", "*", "#", "%", "@"];
14
+ /** Pick the glyph for a 0-1 fill of one cell, bottom-up. */
15
+ export function verticalGlyph(ratio, mode = "block") {
16
+ const r = ratio <= 0 ? 0 : ratio >= 1 ? 1 : ratio;
17
+ if (mode === "ascii")
18
+ return r === 0 ? " " : r < 0.4 ? "." : r < 0.7 ? "=" : "#";
19
+ if (mode === "half")
20
+ return r === 0 ? " " : r < 0.5 ? "▄" : "█";
21
+ const i = Math.round(r * 8);
22
+ return i === 0 ? " " : VERTICAL_EIGHTHS[i];
23
+ }
24
+ /** Pick the glyph for a 0-1 fill of one cell, left to right. */
25
+ export function horizontalGlyph(ratio, mode = "block") {
26
+ const r = ratio <= 0 ? 0 : ratio >= 1 ? 1 : ratio;
27
+ if (mode === "ascii")
28
+ return r === 0 ? " " : r < 0.5 ? "-" : "#";
29
+ const i = Math.round(r * 8);
30
+ return i === 0 ? " " : HORIZONTAL_EIGHTHS[i];
31
+ }
32
+ /** Map a 0-1 value onto a shade block, for heatmaps and dim fills. */
33
+ export function shadeGlyph(ratio, unicode = true) {
34
+ const r = ratio <= 0 ? 0 : ratio >= 1 ? 1 : ratio;
35
+ if (!unicode)
36
+ return ASCII_RAMP[Math.round(r * (ASCII_RAMP.length - 1))];
37
+ if (r === 0)
38
+ return " ";
39
+ return SHADES[Math.min(SHADES.length - 1, Math.floor(r * SHADES.length))];
40
+ }
41
+ /** Braille when the terminal supports it, blocks when it does not. */
42
+ export function bestMode(unicode, braille) {
43
+ if (braille)
44
+ return "braille";
45
+ if (unicode)
46
+ return "block";
47
+ return "ascii";
48
+ }
49
+ //# sourceMappingURL=blocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/graphics/blocks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Braille turns every terminal cell into a 2x4 pixel matrix, which is why a
3
+ * terminal graph can look like a real plot instead of a bar chart of hashes.
4
+ */
5
+ export declare class BrailleCanvas {
6
+ /** Pixel dimensions (cells * 2 wide, cells * 4 tall). */
7
+ readonly width: number;
8
+ readonly height: number;
9
+ readonly cols: number;
10
+ readonly rows: number;
11
+ private dots;
12
+ constructor(cols: number, rows: number);
13
+ clear(): void;
14
+ /** Set one pixel. Out-of-range coordinates are ignored, not clamped. */
15
+ pixel(x: number, y: number): void;
16
+ unset(x: number, y: number): void;
17
+ get(x: number, y: number): boolean;
18
+ /** Bresenham. Used for every line graph in the library. */
19
+ line(x0: number, y0: number, x1: number, y1: number): void;
20
+ polyline(points: [number, number][]): void;
21
+ vline(x: number, y0: number, y1: number): void;
22
+ hline(y: number, x0: number, x1: number): void;
23
+ rect(x0: number, y0: number, x1: number, y1: number): void;
24
+ fillRect(x0: number, y0: number, x1: number, y1: number): void;
25
+ /** Fill the area under a series — the shaded region of an area graph. */
26
+ fillUnder(points: [number, number][], baseline: number): void;
27
+ circle(cx: number, cy: number, radius: number): void;
28
+ /** The Braille codepoint for one cell, or 0 when the cell is empty. */
29
+ cell(col: number, row: number): number;
30
+ /** Rows of Braille text — handy for tests and for the HTML renderer. */
31
+ toLines(): string[];
32
+ }
33
+ //# sourceMappingURL=braille.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"braille.d.ts","sourceRoot":"","sources":["../../src/graphics/braille.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,qBAAa,aAAa;IACxB,yDAAyD;IACzD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,IAAI,CAAa;gBAEb,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAQtC,KAAK,IAAI,IAAI;IAIb,wEAAwE;IACxE,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAQjC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAQjC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAQlC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAyB1D,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI;IAM1C,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAM9C,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAM9C,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAO1D,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAM9D,yEAAyE;IACzE,SAAS,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAc7D,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAsBpD,uEAAuE;IACvE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAMtC,wEAAwE;IACxE,OAAO,IAAI,MAAM,EAAE;CAYpB"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Braille turns every terminal cell into a 2x4 pixel matrix, which is why a
3
+ * terminal graph can look like a real plot instead of a bar chart of hashes.
4
+ */
5
+ const BRAILLE_BASE = 0x2800;
6
+ // Dot numbering is column-major and famously not sequential.
7
+ const DOT_BITS = [
8
+ [0x01, 0x08],
9
+ [0x02, 0x10],
10
+ [0x04, 0x20],
11
+ [0x40, 0x80],
12
+ ];
13
+ export class BrailleCanvas {
14
+ /** Pixel dimensions (cells * 2 wide, cells * 4 tall). */
15
+ width;
16
+ height;
17
+ cols;
18
+ rows;
19
+ dots;
20
+ constructor(cols, rows) {
21
+ this.cols = Math.max(0, cols | 0);
22
+ this.rows = Math.max(0, rows | 0);
23
+ this.width = this.cols * 2;
24
+ this.height = this.rows * 4;
25
+ this.dots = new Uint8Array(this.cols * this.rows);
26
+ }
27
+ clear() {
28
+ this.dots.fill(0);
29
+ }
30
+ /** Set one pixel. Out-of-range coordinates are ignored, not clamped. */
31
+ pixel(x, y) {
32
+ const px = Math.round(x);
33
+ const py = Math.round(y);
34
+ if (px < 0 || py < 0 || px >= this.width || py >= this.height)
35
+ return;
36
+ const cell = (py >> 2) * this.cols + (px >> 1);
37
+ this.dots[cell] |= DOT_BITS[py & 3][px & 1];
38
+ }
39
+ unset(x, y) {
40
+ const px = Math.round(x);
41
+ const py = Math.round(y);
42
+ if (px < 0 || py < 0 || px >= this.width || py >= this.height)
43
+ return;
44
+ const cell = (py >> 2) * this.cols + (px >> 1);
45
+ this.dots[cell] &= ~DOT_BITS[py & 3][px & 1];
46
+ }
47
+ get(x, y) {
48
+ const px = Math.round(x);
49
+ const py = Math.round(y);
50
+ if (px < 0 || py < 0 || px >= this.width || py >= this.height)
51
+ return false;
52
+ const cell = (py >> 2) * this.cols + (px >> 1);
53
+ return (this.dots[cell] & DOT_BITS[py & 3][px & 1]) !== 0;
54
+ }
55
+ /** Bresenham. Used for every line graph in the library. */
56
+ line(x0, y0, x1, y1) {
57
+ let x = Math.round(x0);
58
+ let y = Math.round(y0);
59
+ const ex = Math.round(x1);
60
+ const ey = Math.round(y1);
61
+ const dx = Math.abs(ex - x);
62
+ const dy = -Math.abs(ey - y);
63
+ const sx = x < ex ? 1 : -1;
64
+ const sy = y < ey ? 1 : -1;
65
+ let err = dx + dy;
66
+ for (;;) {
67
+ this.pixel(x, y);
68
+ if (x === ex && y === ey)
69
+ break;
70
+ const e2 = 2 * err;
71
+ if (e2 >= dy) {
72
+ err += dy;
73
+ x += sx;
74
+ }
75
+ if (e2 <= dx) {
76
+ err += dx;
77
+ y += sy;
78
+ }
79
+ }
80
+ }
81
+ polyline(points) {
82
+ for (let i = 1; i < points.length; i++) {
83
+ this.line(points[i - 1][0], points[i - 1][1], points[i][0], points[i][1]);
84
+ }
85
+ }
86
+ vline(x, y0, y1) {
87
+ const a = Math.min(y0, y1);
88
+ const b = Math.max(y0, y1);
89
+ for (let y = a; y <= b; y++)
90
+ this.pixel(x, y);
91
+ }
92
+ hline(y, x0, x1) {
93
+ const a = Math.min(x0, x1);
94
+ const b = Math.max(x0, x1);
95
+ for (let x = a; x <= b; x++)
96
+ this.pixel(x, y);
97
+ }
98
+ rect(x0, y0, x1, y1) {
99
+ this.hline(y0, x0, x1);
100
+ this.hline(y1, x0, x1);
101
+ this.vline(x0, y0, y1);
102
+ this.vline(x1, y0, y1);
103
+ }
104
+ fillRect(x0, y0, x1, y1) {
105
+ for (let y = Math.min(y0, y1); y <= Math.max(y0, y1); y++) {
106
+ this.hline(y, x0, x1);
107
+ }
108
+ }
109
+ /** Fill the area under a series — the shaded region of an area graph. */
110
+ fillUnder(points, baseline) {
111
+ for (let i = 1; i < points.length; i++) {
112
+ const [x0, y0] = points[i - 1];
113
+ const [x1, y1] = points[i];
114
+ const steps = Math.max(1, Math.round(Math.abs(x1 - x0)));
115
+ for (let s = 0; s <= steps; s++) {
116
+ const t = steps === 0 ? 0 : s / steps;
117
+ const x = x0 + (x1 - x0) * t;
118
+ const y = y0 + (y1 - y0) * t;
119
+ this.vline(x, y, baseline);
120
+ }
121
+ }
122
+ }
123
+ circle(cx, cy, radius) {
124
+ let x = Math.round(radius);
125
+ let y = 0;
126
+ let err = 1 - x;
127
+ while (x >= y) {
128
+ this.pixel(cx + x, cy + y);
129
+ this.pixel(cx + y, cy + x);
130
+ this.pixel(cx - y, cy + x);
131
+ this.pixel(cx - x, cy + y);
132
+ this.pixel(cx - x, cy - y);
133
+ this.pixel(cx - y, cy - x);
134
+ this.pixel(cx + y, cy - x);
135
+ this.pixel(cx + x, cy - y);
136
+ y++;
137
+ if (err < 0)
138
+ err += 2 * y + 1;
139
+ else {
140
+ x--;
141
+ err += 2 * (y - x) + 1;
142
+ }
143
+ }
144
+ }
145
+ /** The Braille codepoint for one cell, or 0 when the cell is empty. */
146
+ cell(col, row) {
147
+ if (col < 0 || row < 0 || col >= this.cols || row >= this.rows)
148
+ return 0;
149
+ const bits = this.dots[row * this.cols + col];
150
+ return bits === 0 ? 0 : BRAILLE_BASE | bits;
151
+ }
152
+ /** Rows of Braille text — handy for tests and for the HTML renderer. */
153
+ toLines() {
154
+ const lines = [];
155
+ for (let row = 0; row < this.rows; row++) {
156
+ let line = "";
157
+ for (let col = 0; col < this.cols; col++) {
158
+ const c = this.cell(col, row);
159
+ line += c === 0 ? " " : String.fromCodePoint(c);
160
+ }
161
+ lines.push(line);
162
+ }
163
+ return lines;
164
+ }
165
+ }
166
+ //# sourceMappingURL=braille.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"braille.js","sourceRoot":"","sources":["../../src/graphics/braille.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { BrailleCanvas } from "./braille.ts";
2
+ export * from "./blocks.ts";
3
+ export * from "./plot.ts";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graphics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { BrailleCanvas } from "./braille.js";
2
+ export * from "./blocks.js";
3
+ export * from "./plot.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graphics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,91 @@
1
+ import type { Surface } from "../surface.ts";
2
+ import { type Color } from "../color.ts";
3
+ import { BrailleCanvas } from "./braille.ts";
4
+ import { type FillMode } from "./blocks.ts";
5
+ export interface Series {
6
+ values: number[];
7
+ color?: Color;
8
+ label?: string;
9
+ /** Shade the area beneath the line. */
10
+ fill?: boolean;
11
+ }
12
+ export interface PlotOptions {
13
+ /** braille is sharpest; block and ascii are the graceful degradations. */
14
+ mode?: FillMode;
15
+ min?: number;
16
+ max?: number;
17
+ color?: Color;
18
+ /** Color the plot along a ramp by value rather than one flat color. */
19
+ colors?: Color[];
20
+ fill?: boolean;
21
+ /** 0-1 opacity of the area fill against the background. */
22
+ fillAlpha?: number;
23
+ background?: Color;
24
+ /** Draw a faint dotted grid behind the series. */
25
+ grid?: boolean;
26
+ gridColor?: Color;
27
+ baseline?: number;
28
+ }
29
+ /**
30
+ * Draw one or more series across the whole surface.
31
+ * With `mode: "braille"` each cell carries a 2x4 pixel matrix, so a 40x10 panel
32
+ * plots at 80x40 resolution.
33
+ */
34
+ export declare function plot(surface: Surface, series: Series[], options?: PlotOptions): void;
35
+ /** Copy a Braille canvas onto a surface, one glyph per cell. */
36
+ export declare function blit(surface: Surface, canvas: BrailleCanvas, colorAt: (col: number, row: number) => Color, bg?: Color): void;
37
+ export interface SparklineOptions {
38
+ color?: Color;
39
+ colors?: Color[];
40
+ min?: number;
41
+ max?: number;
42
+ background?: Color;
43
+ mode?: FillMode;
44
+ }
45
+ /** A single-row trend line. Cheap enough to put in a table cell. */
46
+ export declare function sparkline(surface: Surface, values: number[], options?: SparklineOptions): void;
47
+ export interface BarOptions {
48
+ /** 0-1. Values outside are clamped. */
49
+ value: number;
50
+ color?: Color;
51
+ /** Color by fill level using the theme heat ramp. */
52
+ heat?: boolean;
53
+ track?: Color;
54
+ background?: Color;
55
+ /** Segmented gives the btop look; smooth uses eighth-blocks. */
56
+ style?: "smooth" | "segmented" | "ascii";
57
+ trackChar?: string;
58
+ }
59
+ /** A horizontal bar filling the surface's first row. */
60
+ export declare function bar(surface: Surface, options: BarOptions): void;
61
+ export interface GaugeOptions {
62
+ value: number;
63
+ color?: Color;
64
+ background?: Color;
65
+ label?: string;
66
+ heat?: boolean;
67
+ }
68
+ /**
69
+ * A semicircular dial drawn with Braille. Needs about 9x5 cells to look right.
70
+ */
71
+ export declare function gauge(surface: Surface, options: GaugeOptions): void;
72
+ export interface DonutOptions {
73
+ segments: {
74
+ value: number;
75
+ color?: Color;
76
+ label?: string;
77
+ }[];
78
+ background?: Color;
79
+ }
80
+ /** A ring chart. Reads well from about 12x6 cells. */
81
+ export declare function donut(surface: Surface, options: DonutOptions): void;
82
+ export interface HistogramOptions {
83
+ values: number[];
84
+ color?: Color;
85
+ colors?: Color[];
86
+ background?: Color;
87
+ max?: number;
88
+ }
89
+ /** Vertical column chart, one column per value, newest on the right. */
90
+ export declare function histogram(surface: Surface, options: HistogramOptions): void;
91
+ //# sourceMappingURL=plot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plot.d.ts","sourceRoot":"","sources":["../../src/graphics/plot.ts"],"names":[],"mappings":"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"}