@flyingrobots/bijou 4.1.0 → 4.4.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.
- package/README.md +6 -1
- package/dist/core/components/alert-v3.js +4 -4
- package/dist/core/components/alert-v3.js.map +1 -1
- package/dist/core/components/alert.d.ts.map +1 -1
- package/dist/core/components/alert.js +12 -5
- package/dist/core/components/alert.js.map +1 -1
- package/dist/core/components/badge.d.ts.map +1 -1
- package/dist/core/components/badge.js +38 -7
- package/dist/core/components/badge.js.map +1 -1
- package/dist/core/components/box-v3.d.ts.map +1 -1
- package/dist/core/components/box-v3.js +101 -26
- package/dist/core/components/box-v3.js.map +1 -1
- package/dist/core/components/braille-chart.d.ts +45 -0
- package/dist/core/components/braille-chart.d.ts.map +1 -0
- package/dist/core/components/braille-chart.js +94 -0
- package/dist/core/components/braille-chart.js.map +1 -0
- package/dist/core/components/data-viz-utils.d.ts +25 -0
- package/dist/core/components/data-viz-utils.d.ts.map +1 -0
- package/dist/core/components/data-viz-utils.js +72 -0
- package/dist/core/components/data-viz-utils.js.map +1 -0
- package/dist/core/components/index.d.ts +8 -0
- package/dist/core/components/index.d.ts.map +1 -1
- package/dist/core/components/index.js +4 -0
- package/dist/core/components/index.js.map +1 -1
- package/dist/core/components/inspector.d.ts.map +1 -1
- package/dist/core/components/inspector.js +2 -1
- package/dist/core/components/inspector.js.map +1 -1
- package/dist/core/components/perf-overlay.d.ts +63 -0
- package/dist/core/components/perf-overlay.d.ts.map +1 -0
- package/dist/core/components/perf-overlay.js +84 -0
- package/dist/core/components/perf-overlay.js.map +1 -0
- package/dist/core/components/preference-list.d.ts.map +1 -1
- package/dist/core/components/preference-list.js +63 -11
- package/dist/core/components/preference-list.js.map +1 -1
- package/dist/core/components/separator-v3.d.ts.map +1 -1
- package/dist/core/components/separator-v3.js +55 -15
- package/dist/core/components/separator-v3.js.map +1 -1
- package/dist/core/components/sparkline.d.ts +33 -0
- package/dist/core/components/sparkline.d.ts.map +1 -0
- package/dist/core/components/sparkline.js +45 -0
- package/dist/core/components/sparkline.js.map +1 -0
- package/dist/core/components/stats-panel.d.ts +50 -0
- package/dist/core/components/stats-panel.d.ts.map +1 -0
- package/dist/core/components/stats-panel.js +83 -0
- package/dist/core/components/stats-panel.js.map +1 -0
- package/dist/core/components/surface-text.d.ts +1 -1
- package/dist/core/components/surface-text.d.ts.map +1 -1
- package/dist/core/components/surface-text.js +80 -9
- package/dist/core/components/surface-text.js.map +1 -1
- package/dist/core/components/table-v3.d.ts.map +1 -1
- package/dist/core/components/table-v3.js +34 -2
- package/dist/core/components/table-v3.js.map +1 -1
- package/dist/core/components/types.d.ts +4 -4
- package/dist/core/components/types.d.ts.map +1 -1
- package/dist/core/render/differ.d.ts +12 -1
- package/dist/core/render/differ.d.ts.map +1 -1
- package/dist/core/render/differ.js +502 -11
- package/dist/core/render/differ.js.map +1 -1
- package/dist/core/render/packed-cell.d.ts +110 -0
- package/dist/core/render/packed-cell.d.ts.map +1 -0
- package/dist/core/render/packed-cell.js +301 -0
- package/dist/core/render/packed-cell.js.map +1 -0
- package/dist/core/text/grapheme.d.ts.map +1 -1
- package/dist/core/text/grapheme.js +17 -5
- package/dist/core/text/grapheme.js.map +1 -1
- package/dist/core/theme/presets.d.ts +9 -1
- package/dist/core/theme/presets.d.ts.map +1 -1
- package/dist/core/theme/presets.js +44 -2
- package/dist/core/theme/presets.js.map +1 -1
- package/dist/core/theme/resolve.d.ts.map +1 -1
- package/dist/core/theme/resolve.js +21 -1
- package/dist/core/theme/resolve.js.map +1 -1
- package/dist/core/theme/tokens.d.ts +12 -0
- package/dist/core/theme/tokens.d.ts.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/ports/io.d.ts +17 -0
- package/dist/ports/io.d.ts.map +1 -1
- package/dist/ports/surface.d.ts +83 -2
- package/dist/ports/surface.d.ts.map +1 -1
- package/dist/ports/surface.js +319 -37
- package/dist/ports/surface.js.map +1 -1
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -4,13 +4,18 @@ The pure, zero-dependency core of Bijou.
|
|
|
4
4
|
|
|
5
5
|
`@flyingrobots/bijou` is the degradation-first terminal toolkit in the Bijou stack. It contains components, prompts, themes, environment detection, test adapters, and the foundational `Surface` and `LayoutNode` primitives that the interactive runtime builds on.
|
|
6
6
|
|
|
7
|
-
## Package Role
|
|
7
|
+
## Package Role
|
|
8
8
|
|
|
9
9
|
- **Core/runtime split stays explicit** — the core package remains the right place for CLIs, prompts, logs, and portable terminal output, while `@flyingrobots/bijou-tui` owns the fullscreen runtime.
|
|
10
10
|
- **Surface primitives without abandoning strings** — the package is intentionally mixed-mode. String-oriented helpers remain first-class where they fit the toolkit identity, and runtime-friendly surface helpers exist where they actually help.
|
|
11
11
|
- **Surface-first companions for common runtime chrome** — `boxSurface`, `headerBoxSurface`, `separatorSurface`, `alertSurface`, and `tableSurface` let runtime apps stay on the `Surface` path for common layout and status primitives.
|
|
12
12
|
- **Explicit seam crossing** — when you move `Surface` output back into string-first APIs, you do it deliberately with `surfaceToString(surface, ctx.style)`.
|
|
13
13
|
- **Same hexagonal core** — ports, themes, output-mode detection, and test adapters remain pure and dependency-free.
|
|
14
|
+
- **Byte-packed surfaces** — `Surface` is backed by a `Uint8Array` (10 bytes per cell). The `setRGB()` method writes character code + numeric RGB directly into the buffer with zero string parsing or object allocation. All built-in surface components use this fast path automatically.
|
|
15
|
+
|
|
16
|
+
## Documentation
|
|
17
|
+
|
|
18
|
+
See the [Bijou repo](https://github.com/flyingrobots/bijou) for the full documentation map, architecture guide, design system, and DOGFOOD proving surface.
|
|
14
19
|
|
|
15
20
|
## Install
|
|
16
21
|
|
|
@@ -3,10 +3,10 @@ import { resolveSafeCtx as resolveCtx } from '../resolve-ctx.js';
|
|
|
3
3
|
import { boxSurface } from './box-v3.js';
|
|
4
4
|
import { createTextSurface, tokenToCellStyle } from './surface-text.js';
|
|
5
5
|
const ICONS = {
|
|
6
|
-
success: '\u2713',
|
|
7
|
-
error: '\u2717',
|
|
8
|
-
warning: '\u26A0',
|
|
9
|
-
info: '\u2139',
|
|
6
|
+
success: '\u2713', // ✓
|
|
7
|
+
error: '\u2717', // ✗
|
|
8
|
+
warning: '\u26A0', // ⚠
|
|
9
|
+
info: '\u2139', // ℹ
|
|
10
10
|
};
|
|
11
11
|
const BORDER_TOKENS = {
|
|
12
12
|
success: 'success',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert-v3.js","sourceRoot":"","sources":["../../../src/core/components/alert-v3.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,cAAc,IAAI,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAExE,MAAM,KAAK,GAAiC;IAC1C,OAAO,EAAE,QAAQ;
|
|
1
|
+
{"version":3,"file":"alert-v3.js","sourceRoot":"","sources":["../../../src/core/components/alert-v3.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,cAAc,IAAI,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAExE,MAAM,KAAK,GAAiC;IAC1C,OAAO,EAAE,QAAQ,EAAG,IAAI;IACxB,KAAK,EAAE,QAAQ,EAAK,IAAI;IACxB,OAAO,EAAE,QAAQ,EAAG,IAAI;IACxB,IAAI,EAAE,QAAQ,EAAM,IAAI;CACzB,CAAC;AAEF,MAAM,aAAa,GAAsE;IACvF,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAyB,EAAE,UAAwB,EAAE;IAChF,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC;IAC1C,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAChG,MAAM,cAAc,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1F,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAE1E,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAEvD,OAAO,UAAU,CAAC,OAAO,EAAE;QACzB,GAAG,OAAO;QACV,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,GAAG,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACvE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC;KACrD,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../src/core/components/alert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAI5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,4BAA4B;AAC5B,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEpE,gDAAgD;AAChD,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD,+CAA+C;IAC/C,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,yFAAyF;IACzF,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,wFAAwF;IACxF,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../src/core/components/alert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAI5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,4BAA4B;AAC5B,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEpE,gDAAgD;AAChD,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD,+CAA+C;IAC/C,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,yFAAyF;IACzF,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,wFAAwF;IACxF,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;AAyCD;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,MAAM,CAsBzE"}
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
import { resolveCtx } from '../resolve-ctx.js';
|
|
2
2
|
import { box } from './box.js';
|
|
3
3
|
import { renderByMode } from '../mode-render.js';
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Unicode icon characters for each alert variant.
|
|
6
|
+
*
|
|
7
|
+
* ✓ (U+2713) and ✗ (U+2717) are Narrow per Unicode East Asian Width.
|
|
8
|
+
* ⚠ (U+26A0) and ℹ (U+2139) are Ambiguous — 1-wide in terminals,
|
|
9
|
+
* potentially 2-wide in some chat UIs. We treat them as 1-wide here
|
|
10
|
+
* since graphemeWidth correctly classifies them as Narrow.
|
|
11
|
+
*/
|
|
5
12
|
const ICONS = {
|
|
6
|
-
success: '\u2713',
|
|
7
|
-
error: '\u2717',
|
|
8
|
-
warning: '\u26A0',
|
|
9
|
-
info: '\u2139',
|
|
13
|
+
success: '\u2713', // ✓ CHECK MARK
|
|
14
|
+
error: '\u2717', // ✗ BALLOT X
|
|
15
|
+
warning: '\u26A0', // ⚠ WARNING SIGN
|
|
16
|
+
info: '\u2139', // ℹ INFORMATION SOURCE
|
|
10
17
|
};
|
|
11
18
|
/** Uppercase labels used in pipe mode output. */
|
|
12
19
|
const PIPE_LABELS = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert.js","sourceRoot":"","sources":["../../../src/core/components/alert.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAgBjD
|
|
1
|
+
{"version":3,"file":"alert.js","sourceRoot":"","sources":["../../../src/core/components/alert.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAgBjD;;;;;;;GAOG;AACH,MAAM,KAAK,GAAiC;IAC1C,OAAO,EAAE,QAAQ,EAAG,eAAe;IACnC,KAAK,EAAE,QAAQ,EAAK,aAAa;IACjC,OAAO,EAAE,QAAQ,EAAG,iBAAiB;IACrC,IAAI,EAAE,QAAQ,EAAM,uBAAuB;CAC5C,CAAC;AAEF,iDAAiD;AACjD,MAAM,WAAW,GAAiC;IAChD,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,yDAAyD;AACzD,MAAM,iBAAiB,GAAiC;IACtD,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,8EAA8E;AAC9E,MAAM,aAAa,GAAgD;IACjE,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,KAAK,CAAC,OAAe,EAAE,UAAwB,EAAE;IAC/D,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC;IAC1C,MAAM,WAAW,GAAG,OAAO,IAAI,EAAE,CAAC;IAElC,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE;QAC5B,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,WAAW,EAAE;QACtD,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,WAAW,EAAE;QACjE,WAAW,EAAE,GAAG,EAAE;YAChB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9E,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAE1D,OAAO,GAAG,CAAC,WAAW,GAAG,GAAG,GAAG,WAAW,EAAE;gBAC1C,WAAW;gBACX,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;gBACnD,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;gBAC9B,GAAG;aACJ,CAAC,CAAC;QACL,CAAC;KACF,EAAE,OAAO,CAAC,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../src/core/components/badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../src/core/components/badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,OAAO,EAAiC,MAAM,wBAAwB,CAAC;AACpG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAInD,6EAA6E;AAC7E,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEhE,2CAA2C;AAC3C,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD,4CAA4C;IAC5C,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CA6DvE"}
|
|
@@ -2,6 +2,7 @@ import { createSurface } from '../../ports/surface.js';
|
|
|
2
2
|
import { resolveSafeCtx as resolveCtx } from '../resolve-ctx.js';
|
|
3
3
|
import { segmentGraphemes } from '../text/grapheme.js';
|
|
4
4
|
import { applyBCSSCellTextStyles } from './bcss-style.js';
|
|
5
|
+
import { parseHex, encodeModifiers } from '../render/packed-cell.js';
|
|
5
6
|
/**
|
|
6
7
|
* Render an inline badge (pill-shaped label) for the given text.
|
|
7
8
|
*
|
|
@@ -28,13 +29,18 @@ export function badge(text, options = {}) {
|
|
|
28
29
|
const baseToken = (variant === 'accent' || variant === 'primary')
|
|
29
30
|
? ctx.semantic(variant)
|
|
30
31
|
: ctx.status(variant);
|
|
32
|
+
// Pass both hex and pre-parsed fgRGB — encodeCellIntoBuf picks
|
|
33
|
+
// fgRGB first, skipping inlineHexRGB on the hot path.
|
|
34
|
+
const baseStyle = {
|
|
35
|
+
fg: baseToken.hex,
|
|
36
|
+
bg: undefined,
|
|
37
|
+
modifiers: [...(baseToken.modifiers ?? []), 'inverse'],
|
|
38
|
+
};
|
|
39
|
+
if (baseToken.fgRGB)
|
|
40
|
+
baseStyle.fgRGB = baseToken.fgRGB;
|
|
31
41
|
const cell = {
|
|
32
42
|
char: ' ',
|
|
33
|
-
...applyBCSSCellTextStyles(
|
|
34
|
-
fg: baseToken.hex,
|
|
35
|
-
bg: undefined,
|
|
36
|
-
modifiers: [...(baseToken.modifiers ?? []), 'inverse'],
|
|
37
|
-
}, bcss),
|
|
43
|
+
...applyBCSSCellTextStyles(baseStyle, bcss),
|
|
38
44
|
empty: false
|
|
39
45
|
};
|
|
40
46
|
// If CSS background is set, we might want to disable 'inverse' modifier
|
|
@@ -42,8 +48,33 @@ export function badge(text, options = {}) {
|
|
|
42
48
|
if (bcss['background']) {
|
|
43
49
|
cell.modifiers = cell.modifiers?.filter(m => m !== 'inverse');
|
|
44
50
|
}
|
|
45
|
-
|
|
46
|
-
|
|
51
|
+
const packed = 'buffer' in surface;
|
|
52
|
+
if (packed && cell.fg) {
|
|
53
|
+
const fg = parseHex(cell.fg);
|
|
54
|
+
if (fg) {
|
|
55
|
+
const [fR, fG, fB] = fg;
|
|
56
|
+
let bR = -1, bG = 0, bB = 0;
|
|
57
|
+
if (cell.bg) {
|
|
58
|
+
const bg = parseHex(cell.bg);
|
|
59
|
+
if (bg) {
|
|
60
|
+
bR = bg[0];
|
|
61
|
+
bG = bg[1];
|
|
62
|
+
bB = bg[2];
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const flags = encodeModifiers(cell.modifiers);
|
|
66
|
+
for (let i = 0; i < width; i++) {
|
|
67
|
+
surface.setRGB(i, 0, graphemes[i], fR, fG, fB, bR, bG, bB, flags);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
for (let i = 0; i < width; i++)
|
|
72
|
+
surface.set(i, 0, { ...cell, char: graphemes[i] });
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
for (let i = 0; i < width; i++)
|
|
77
|
+
surface.set(i, 0, { ...cell, char: graphemes[i] });
|
|
47
78
|
}
|
|
48
79
|
return surface;
|
|
49
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../src/core/components/badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../src/core/components/badge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"box-v3.d.ts","sourceRoot":"","sources":["../../../src/core/components/box-v3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"box-v3.d.ts","sourceRoot":"","sources":["../../../src/core/components/box-v3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,OAAO,EAAiC,MAAM,wBAAwB,CAAC;AAIpG,OAAO,EAAmB,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AA0EnF;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAmIvF;AACD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAmBvF"}
|
|
@@ -6,6 +6,32 @@ import { resolveFillChar } from './box.js';
|
|
|
6
6
|
import { applyBCSSCellTextStyles } from './bcss-style.js';
|
|
7
7
|
import { createSegmentSurface, createTextSurface, segmentSurfaceText, tokenToCellStyle, wrapSurfaceToWidth } from './surface-text.js';
|
|
8
8
|
import { resolveOverflowBehavior } from './overflow.js';
|
|
9
|
+
import { parseHex, encodeModifiers, CELL_STRIDE, OFF_FLAGS, OFF_ALPHA, FLAG_EMPTY, FLAG_BG_SET } from '../render/packed-cell.js';
|
|
10
|
+
function isPackedSurface(s) {
|
|
11
|
+
return 'buffer' in s && s.buffer instanceof Uint8Array;
|
|
12
|
+
}
|
|
13
|
+
/** Pre-parse a CellTextStyle into numeric RGB + flags for setRGB. Returns undefined if not parseable. */
|
|
14
|
+
function parseStyleRGB(style) {
|
|
15
|
+
let fgR = -1, fgG = 0, fgB = 0;
|
|
16
|
+
let bgR = -1, bgG = 0, bgB = 0;
|
|
17
|
+
if (style.fg) {
|
|
18
|
+
const rgb = parseHex(style.fg);
|
|
19
|
+
if (!rgb)
|
|
20
|
+
return undefined;
|
|
21
|
+
fgR = rgb[0];
|
|
22
|
+
fgG = rgb[1];
|
|
23
|
+
fgB = rgb[2];
|
|
24
|
+
}
|
|
25
|
+
if (style.bg) {
|
|
26
|
+
const rgb = parseHex(style.bg);
|
|
27
|
+
if (!rgb)
|
|
28
|
+
return undefined;
|
|
29
|
+
bgR = rgb[0];
|
|
30
|
+
bgG = rgb[1];
|
|
31
|
+
bgB = rgb[2];
|
|
32
|
+
}
|
|
33
|
+
return { fgR, fgG, fgB, bgR, bgG, bgB, flags: encodeModifiers(style.modifiers) };
|
|
34
|
+
}
|
|
9
35
|
const BORDER = { tl: '┌', tr: '┐', bl: '└', br: '┘', h: '─', v: '│' };
|
|
10
36
|
function normalizeFixedWidth(width) {
|
|
11
37
|
if (width == null)
|
|
@@ -18,6 +44,28 @@ function withInheritedBackground(surface, background) {
|
|
|
18
44
|
if (background == null)
|
|
19
45
|
return surface;
|
|
20
46
|
const next = surface.clone();
|
|
47
|
+
if (isPackedSurface(next)) {
|
|
48
|
+
// Fast path: write bg bytes directly into the buffer
|
|
49
|
+
const bgRGB = parseHex(background);
|
|
50
|
+
if (bgRGB) {
|
|
51
|
+
const buf = next.buffer;
|
|
52
|
+
const [bgR, bgG, bgB] = bgRGB;
|
|
53
|
+
const size = next.width * next.height;
|
|
54
|
+
for (let i = 0; i < size; i++) {
|
|
55
|
+
const off = i * CELL_STRIDE;
|
|
56
|
+
if (buf[off + OFF_FLAGS] & FLAG_EMPTY)
|
|
57
|
+
continue;
|
|
58
|
+
if (buf[off + OFF_ALPHA] & FLAG_BG_SET)
|
|
59
|
+
continue;
|
|
60
|
+
buf[off + 5] = bgR;
|
|
61
|
+
buf[off + 6] = bgG;
|
|
62
|
+
buf[off + 7] = bgB;
|
|
63
|
+
buf[off + OFF_ALPHA] = buf[off + OFF_ALPHA] | FLAG_BG_SET;
|
|
64
|
+
}
|
|
65
|
+
next.markAllDirty();
|
|
66
|
+
return next;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
21
69
|
for (let y = 0; y < next.height; y++) {
|
|
22
70
|
for (let x = 0; x < next.width; x++) {
|
|
23
71
|
const cell = next.get(x, y);
|
|
@@ -88,33 +136,60 @@ export function boxSurface(content, options = {}) {
|
|
|
88
136
|
bg: borderToken?.bg,
|
|
89
137
|
modifiers: borderToken?.modifiers,
|
|
90
138
|
}, bcss);
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
surface.
|
|
139
|
+
// Fast path: use setRGB for borders when surface is packed
|
|
140
|
+
const bRGB = isPackedSurface(surface) ? parseStyleRGB(borderStyle) : undefined;
|
|
141
|
+
if (bRGB && isPackedSurface(surface)) {
|
|
142
|
+
const { fgR, fgG, fgB, bgR, bgG, bgB, flags } = bRGB;
|
|
143
|
+
const H = BORDER.h, V = BORDER.v;
|
|
144
|
+
for (let x = 0; x < outerW; x++) {
|
|
145
|
+
surface.setRGB(x, 0, H, fgR, fgG, fgB, bgR, bgG, bgB, flags);
|
|
146
|
+
surface.setRGB(x, outerH - 1, H, fgR, fgG, fgB, bgR, bgG, bgB, flags);
|
|
147
|
+
}
|
|
148
|
+
for (let y = 0; y < outerH; y++) {
|
|
149
|
+
surface.setRGB(0, y, V, fgR, fgG, fgB, bgR, bgG, bgB, flags);
|
|
150
|
+
surface.setRGB(outerW - 1, y, V, fgR, fgG, fgB, bgR, bgG, bgB, flags);
|
|
151
|
+
}
|
|
152
|
+
surface.setRGB(0, 0, BORDER.tl, fgR, fgG, fgB, bgR, bgG, bgB, flags);
|
|
153
|
+
surface.setRGB(outerW - 1, 0, BORDER.tr, fgR, fgG, fgB, bgR, bgG, bgB, flags);
|
|
154
|
+
surface.setRGB(0, outerH - 1, BORDER.bl, fgR, fgG, fgB, bgR, bgG, bgB, flags);
|
|
155
|
+
surface.setRGB(outerW - 1, outerH - 1, BORDER.br, fgR, fgG, fgB, bgR, bgG, bgB, flags);
|
|
156
|
+
if (title && outerW >= 4) {
|
|
157
|
+
const available = Math.max(0, outerW - 4);
|
|
158
|
+
const titleText = clipToWidth(` ${title} `, available);
|
|
159
|
+
const titleGs = segmentSurfaceText(titleText, 'boxSurface title');
|
|
160
|
+
const titleLen = Math.min(titleGs.length, available);
|
|
161
|
+
for (let i = 0; i < titleLen; i++) {
|
|
162
|
+
surface.setRGB(i + 2, 0, titleGs[i], fgR, fgG, fgB, bgR, bgG, bgB, flags);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
105
165
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
166
|
+
else {
|
|
167
|
+
const borderCell = {
|
|
168
|
+
char: ' ',
|
|
169
|
+
fg: borderStyle.fg,
|
|
170
|
+
bg: borderStyle.bg,
|
|
171
|
+
modifiers: borderStyle.modifiers,
|
|
172
|
+
};
|
|
173
|
+
for (let x = 0; x < outerW; x++) {
|
|
174
|
+
surface.set(x, 0, { ...borderCell, char: BORDER.h });
|
|
175
|
+
surface.set(x, outerH - 1, { ...borderCell, char: BORDER.h });
|
|
176
|
+
}
|
|
177
|
+
for (let y = 0; y < outerH; y++) {
|
|
178
|
+
surface.set(0, y, { ...borderCell, char: BORDER.v });
|
|
179
|
+
surface.set(outerW - 1, y, { ...borderCell, char: BORDER.v });
|
|
180
|
+
}
|
|
181
|
+
surface.set(0, 0, { ...borderCell, char: BORDER.tl });
|
|
182
|
+
surface.set(outerW - 1, 0, { ...borderCell, char: BORDER.tr });
|
|
183
|
+
surface.set(0, outerH - 1, { ...borderCell, char: BORDER.bl });
|
|
184
|
+
surface.set(outerW - 1, outerH - 1, { ...borderCell, char: BORDER.br });
|
|
185
|
+
if (title && outerW >= 4) {
|
|
186
|
+
const available = Math.max(0, outerW - 4);
|
|
187
|
+
const titleText = clipToWidth(` ${title} `, available);
|
|
188
|
+
const titleGs = segmentSurfaceText(titleText, 'boxSurface title');
|
|
189
|
+
const titleLen = Math.min(titleGs.length, available);
|
|
190
|
+
for (let i = 0; i < titleLen; i++) {
|
|
191
|
+
surface.set(i + 2, 0, { ...borderCell, char: titleGs[i] });
|
|
192
|
+
}
|
|
118
193
|
}
|
|
119
194
|
}
|
|
120
195
|
// Blit content
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"box-v3.js","sourceRoot":"","sources":["../../../src/core/components/box-v3.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"box-v3.js","sourceRoot":"","sources":["../../../src/core/components/box-v3.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Braille area chart — high-density filled chart using Unicode Braille.
|
|
3
|
+
*
|
|
4
|
+
* Each terminal cell contains a 2×4 dot grid (8 dots per Braille character,
|
|
5
|
+
* starting at U+2800). This gives 2× horizontal and 4× vertical sub-pixel
|
|
6
|
+
* resolution compared to regular characters.
|
|
7
|
+
*
|
|
8
|
+
* The chart renders a filled area from the bottom up — dots below the
|
|
9
|
+
* data line are "on", dots above are "off".
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* const chart = brailleChartSurface([1, 4, 2, 8, 3, 7, 5], {
|
|
14
|
+
* width: 20,
|
|
15
|
+
* height: 6,
|
|
16
|
+
* ctx,
|
|
17
|
+
* });
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
import { type Surface } from '../../ports/surface.js';
|
|
21
|
+
import type { BijouNodeOptions } from './types.js';
|
|
22
|
+
import type { TokenValue } from '../theme/tokens.js';
|
|
23
|
+
export interface BrailleChartOptions extends BijouNodeOptions {
|
|
24
|
+
/** Chart width in terminal columns. Required. */
|
|
25
|
+
readonly width: number;
|
|
26
|
+
/** Chart height in terminal rows. Required. */
|
|
27
|
+
readonly height: number;
|
|
28
|
+
/** Explicit minimum value for scaling. Defaults to the minimum of the sampled values. */
|
|
29
|
+
readonly min?: number;
|
|
30
|
+
/** Explicit maximum value for scaling. Defaults to the maximum of the sampled values. */
|
|
31
|
+
readonly max?: number;
|
|
32
|
+
/** Foreground token for the chart dots. */
|
|
33
|
+
readonly fgToken?: TokenValue;
|
|
34
|
+
/** Background token applied to the surface. */
|
|
35
|
+
readonly bgToken?: TokenValue;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Render a filled area chart using Unicode Braille characters.
|
|
39
|
+
*
|
|
40
|
+
* Values are sampled to fit `width * 2` horizontal sub-pixels and
|
|
41
|
+
* normalized to `height * 4` vertical sub-pixels. Dots below the
|
|
42
|
+
* data line are filled; dots above are empty.
|
|
43
|
+
*/
|
|
44
|
+
export declare function brailleChartSurface(values: readonly number[], options: BrailleChartOptions): Surface;
|
|
45
|
+
//# sourceMappingURL=braille-chart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"braille-chart.d.ts","sourceRoot":"","sources":["../../../src/core/components/braille-chart.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAIrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,yFAAyF;IACzF,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,yFAAyF;IACzF,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAC9B,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;CAC/B;AAiBD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CA0DT"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Braille area chart — high-density filled chart using Unicode Braille.
|
|
3
|
+
*
|
|
4
|
+
* Each terminal cell contains a 2×4 dot grid (8 dots per Braille character,
|
|
5
|
+
* starting at U+2800). This gives 2× horizontal and 4× vertical sub-pixel
|
|
6
|
+
* resolution compared to regular characters.
|
|
7
|
+
*
|
|
8
|
+
* The chart renders a filled area from the bottom up — dots below the
|
|
9
|
+
* data line are "on", dots above are "off".
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* const chart = brailleChartSurface([1, 4, 2, 8, 3, 7, 5], {
|
|
14
|
+
* width: 20,
|
|
15
|
+
* height: 6,
|
|
16
|
+
* ctx,
|
|
17
|
+
* });
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
import { createSurface } from '../../ports/surface.js';
|
|
21
|
+
import { resolveSafeCtx as resolveCtx } from '../resolve-ctx.js';
|
|
22
|
+
import { safeMax, safeMin, sampleToWidth, sanitizeValues } from './data-viz-utils.js';
|
|
23
|
+
import { tokenToCellStyle } from './surface-text.js';
|
|
24
|
+
// Braille dot positions within U+2800 encoding:
|
|
25
|
+
// col 0 col 1
|
|
26
|
+
// bit 0 bit 3 row 0 (top)
|
|
27
|
+
// bit 1 bit 4 row 1
|
|
28
|
+
// bit 2 bit 5 row 2
|
|
29
|
+
// bit 6 bit 7 row 3 (bottom)
|
|
30
|
+
const DOT_BITS = [
|
|
31
|
+
[0x01, 0x08], // row 0
|
|
32
|
+
[0x02, 0x10], // row 1
|
|
33
|
+
[0x04, 0x20], // row 2
|
|
34
|
+
[0x40, 0x80], // row 3
|
|
35
|
+
];
|
|
36
|
+
// sampleToWidth, safeMin, safeMax, sanitizeValues imported from data-viz-utils.
|
|
37
|
+
/**
|
|
38
|
+
* Render a filled area chart using Unicode Braille characters.
|
|
39
|
+
*
|
|
40
|
+
* Values are sampled to fit `width * 2` horizontal sub-pixels and
|
|
41
|
+
* normalized to `height * 4` vertical sub-pixels. Dots below the
|
|
42
|
+
* data line are filled; dots above are empty.
|
|
43
|
+
*/
|
|
44
|
+
export function brailleChartSurface(values, options) {
|
|
45
|
+
const { width, height } = options;
|
|
46
|
+
const ctx = resolveCtx(options.ctx);
|
|
47
|
+
const surface = createSurface(width, height);
|
|
48
|
+
if (width <= 0 || height <= 0 || values.length === 0)
|
|
49
|
+
return surface;
|
|
50
|
+
// Each cell is 2 dots wide, so we have width*2 horizontal sample points.
|
|
51
|
+
const subCols = width * 2;
|
|
52
|
+
const subRows = height * 4;
|
|
53
|
+
const sampled = sampleToWidth(sanitizeValues(values), subCols);
|
|
54
|
+
const min = options.min ?? safeMin(sampled);
|
|
55
|
+
const max = options.max ?? safeMax(sampled);
|
|
56
|
+
const range = max - min;
|
|
57
|
+
// Normalize values to sub-pixel row heights (0 = bottom, subRows = top).
|
|
58
|
+
const heights = sampled.map((v) => {
|
|
59
|
+
const normalized = range === 0 ? 0.5 : (v - min) / range;
|
|
60
|
+
return Math.round(normalized * (subRows - 1));
|
|
61
|
+
});
|
|
62
|
+
// Resolve styling.
|
|
63
|
+
const fgStyle = tokenToCellStyle(options.fgToken ?? ctx?.semantic('info'));
|
|
64
|
+
const bgStyle = tokenToCellStyle(options.bgToken);
|
|
65
|
+
// Build braille characters cell by cell.
|
|
66
|
+
for (let cy = 0; cy < height; cy++) {
|
|
67
|
+
for (let cx = 0; cx < width; cx++) {
|
|
68
|
+
let bits = 0;
|
|
69
|
+
for (let dotRow = 0; dotRow < 4; dotRow++) {
|
|
70
|
+
// subRow 0 = top of surface, subRows-1 = bottom.
|
|
71
|
+
// cy=0 is the top row on screen, so its sub-rows are the highest values.
|
|
72
|
+
const subRow = cy * 4 + dotRow;
|
|
73
|
+
// Invert: sub-row 0 is the top of the chart (highest value).
|
|
74
|
+
const threshold = subRows - 1 - subRow;
|
|
75
|
+
for (let dotCol = 0; dotCol < 2; dotCol++) {
|
|
76
|
+
const sampleIdx = cx * 2 + dotCol;
|
|
77
|
+
if (sampleIdx < heights.length && heights[sampleIdx] >= threshold) {
|
|
78
|
+
bits |= DOT_BITS[dotRow][dotCol];
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const ch = String.fromCharCode(0x2800 + bits);
|
|
83
|
+
surface.set(cx, cy, {
|
|
84
|
+
char: ch,
|
|
85
|
+
fg: fgStyle.fg,
|
|
86
|
+
bg: bgStyle.bg ?? fgStyle.bg,
|
|
87
|
+
modifiers: fgStyle.modifiers,
|
|
88
|
+
empty: false,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return surface;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=braille-chart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"braille-chart.js","sourceRoot":"","sources":["../../../src/core/components/braille-chart.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared math utilities for data-visualization components.
|
|
3
|
+
*
|
|
4
|
+
* Used by sparkline, brailleChartSurface, and their dependents.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Filter non-finite values (NaN, Infinity, -Infinity) from a numeric array,
|
|
8
|
+
* replacing them with 0. Returns the original array unchanged if all values
|
|
9
|
+
* are finite.
|
|
10
|
+
*/
|
|
11
|
+
export declare function sanitizeValues(values: readonly number[]): readonly number[];
|
|
12
|
+
/** Stack-safe minimum of a numeric array. Returns `Infinity` for empty arrays. */
|
|
13
|
+
export declare function safeMin(values: readonly number[]): number;
|
|
14
|
+
/** Stack-safe maximum of a numeric array. Returns `-Infinity` for empty arrays. */
|
|
15
|
+
export declare function safeMax(values: readonly number[]): number;
|
|
16
|
+
/**
|
|
17
|
+
* Sample `values` into `count` buckets. When the data array is longer
|
|
18
|
+
* than the target count, each bucket averages the values that fall into
|
|
19
|
+
* it (using exclusive upper bounds to avoid double-counting). When
|
|
20
|
+
* shorter, values are stretched via nearest-neighbor sampling.
|
|
21
|
+
*
|
|
22
|
+
* Returns an empty array when `count <= 0`.
|
|
23
|
+
*/
|
|
24
|
+
export declare function sampleToWidth(values: readonly number[], count: number): number[];
|
|
25
|
+
//# sourceMappingURL=data-viz-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-viz-utils.d.ts","sourceRoot":"","sources":["../../../src/core/components/data-viz-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,CAO3E;AAED,kFAAkF;AAClF,wBAAgB,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAMzD;AAED,mFAAmF;AACnF,wBAAgB,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAMzD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBhF"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared math utilities for data-visualization components.
|
|
3
|
+
*
|
|
4
|
+
* Used by sparkline, brailleChartSurface, and their dependents.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Filter non-finite values (NaN, Infinity, -Infinity) from a numeric array,
|
|
8
|
+
* replacing them with 0. Returns the original array unchanged if all values
|
|
9
|
+
* are finite.
|
|
10
|
+
*/
|
|
11
|
+
export function sanitizeValues(values) {
|
|
12
|
+
let needsCopy = false;
|
|
13
|
+
for (let i = 0; i < values.length; i++) {
|
|
14
|
+
if (!Number.isFinite(values[i])) {
|
|
15
|
+
needsCopy = true;
|
|
16
|
+
break;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
if (!needsCopy)
|
|
20
|
+
return values;
|
|
21
|
+
return values.map((v) => Number.isFinite(v) ? v : 0);
|
|
22
|
+
}
|
|
23
|
+
/** Stack-safe minimum of a numeric array. Returns `Infinity` for empty arrays. */
|
|
24
|
+
export function safeMin(values) {
|
|
25
|
+
let min = Infinity;
|
|
26
|
+
for (let i = 0; i < values.length; i++) {
|
|
27
|
+
if (values[i] < min)
|
|
28
|
+
min = values[i];
|
|
29
|
+
}
|
|
30
|
+
return min;
|
|
31
|
+
}
|
|
32
|
+
/** Stack-safe maximum of a numeric array. Returns `-Infinity` for empty arrays. */
|
|
33
|
+
export function safeMax(values) {
|
|
34
|
+
let max = -Infinity;
|
|
35
|
+
for (let i = 0; i < values.length; i++) {
|
|
36
|
+
if (values[i] > max)
|
|
37
|
+
max = values[i];
|
|
38
|
+
}
|
|
39
|
+
return max;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Sample `values` into `count` buckets. When the data array is longer
|
|
43
|
+
* than the target count, each bucket averages the values that fall into
|
|
44
|
+
* it (using exclusive upper bounds to avoid double-counting). When
|
|
45
|
+
* shorter, values are stretched via nearest-neighbor sampling.
|
|
46
|
+
*
|
|
47
|
+
* Returns an empty array when `count <= 0`.
|
|
48
|
+
*/
|
|
49
|
+
export function sampleToWidth(values, count) {
|
|
50
|
+
if (values.length === 0)
|
|
51
|
+
return new Array(count).fill(0);
|
|
52
|
+
if (values.length === count)
|
|
53
|
+
return [...values];
|
|
54
|
+
const out = [];
|
|
55
|
+
const ratio = values.length / count;
|
|
56
|
+
for (let i = 0; i < count; i++) {
|
|
57
|
+
const lo = Math.floor(i * ratio);
|
|
58
|
+
const hi = Math.min(values.length, Math.ceil((i + 1) * ratio));
|
|
59
|
+
if (hi - lo <= 1) {
|
|
60
|
+
out.push(values[lo]);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
let sum = 0;
|
|
64
|
+
for (let j = lo; j < hi; j++) {
|
|
65
|
+
sum += values[j];
|
|
66
|
+
}
|
|
67
|
+
out.push(sum / (hi - lo));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return out;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=data-viz-utils.js.map
|