@effect-tui/core 0.1.1 → 0.1.4
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 +31 -11
- package/dist/ansi.d.ts +127 -32
- package/dist/ansi.d.ts.map +1 -1
- package/dist/ansi.js +159 -37
- package/dist/ansi.js.map +1 -1
- package/dist/colors.d.ts +139 -0
- package/dist/colors.d.ts.map +1 -0
- package/dist/colors.js +339 -0
- package/dist/colors.js.map +1 -0
- package/dist/index.d.ts +6 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -11
- package/dist/index.js.map +1 -1
- package/dist/keys.d.ts +21 -0
- package/dist/keys.d.ts.map +1 -1
- package/dist/keys.js +199 -58
- package/dist/keys.js.map +1 -1
- package/dist/layout/axis-helpers.d.ts +19 -0
- package/dist/layout/axis-helpers.d.ts.map +1 -0
- package/dist/layout/axis-helpers.js +19 -0
- package/dist/layout/axis-helpers.js.map +1 -0
- package/dist/output.d.ts +59 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +142 -0
- package/dist/output.js.map +1 -0
- package/dist/render/buffer.d.ts.map +1 -1
- package/dist/render/buffer.js +6 -25
- package/dist/render/buffer.js.map +1 -1
- package/dist/render/graphemes.d.ts +15 -0
- package/dist/render/graphemes.d.ts.map +1 -0
- package/dist/render/graphemes.js +28 -0
- package/dist/render/graphemes.js.map +1 -0
- package/dist/render/measure.d.ts +1 -0
- package/dist/render/measure.d.ts.map +1 -1
- package/dist/render/measure.js +14 -36
- package/dist/render/measure.js.map +1 -1
- package/dist/render/palette.d.ts.map +1 -1
- package/dist/render/palette.js +26 -1
- package/dist/render/palette.js.map +1 -1
- package/dist/render/segmenter.d.ts +8 -0
- package/dist/render/segmenter.d.ts.map +1 -0
- package/dist/render/segmenter.js +23 -0
- package/dist/render/segmenter.js.map +1 -0
- package/dist/render/surface.d.ts +6 -32
- package/dist/render/surface.d.ts.map +1 -1
- package/dist/render/surface.js +11 -80
- package/dist/render/surface.js.map +1 -1
- package/dist/runtime/backend_node.d.ts.map +1 -1
- package/dist/runtime/backend_node.js.map +1 -1
- package/dist/tailwind-colors.d.ts +291 -0
- package/dist/tailwind-colors.d.ts.map +1 -0
- package/dist/tailwind-colors.js +291 -0
- package/dist/tailwind-colors.js.map +1 -0
- package/dist/types.d.ts +15 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +55 -55
- package/src/ansi.ts +201 -73
- package/src/colors.ts +468 -0
- package/src/index.ts +28 -14
- package/src/keys.ts +467 -287
- package/src/layout/axis-helpers.ts +33 -0
- package/src/output.ts +175 -0
- package/src/render/buffer.ts +161 -184
- package/src/render/graphemes.ts +34 -0
- package/src/render/measure.ts +15 -38
- package/src/render/palette.ts +98 -77
- package/src/render/segmenter.ts +27 -0
- package/src/render/surface.ts +139 -225
- package/src/runtime/backend_node.ts +71 -71
- package/src/tailwind-colors.ts +295 -0
- package/src/types.ts +18 -0
- package/dist/anim.d.ts +0 -4
- package/dist/anim.d.ts.map +0 -1
- package/dist/anim.js +0 -5
- package/dist/anim.js.map +0 -1
- package/dist/layout/linearStack.d.ts +0 -17
- package/dist/layout/linearStack.d.ts.map +0 -1
- package/dist/layout/linearStack.js +0 -86
- package/dist/layout/linearStack.js.map +0 -1
- package/dist/motion-value.d.ts +0 -58
- package/dist/motion-value.d.ts.map +0 -1
- package/dist/motion-value.js +0 -250
- package/dist/motion-value.js.map +0 -1
- package/dist/present/display.d.ts +0 -58
- package/dist/present/display.d.ts.map +0 -1
- package/dist/present/display.js +0 -168
- package/dist/present/display.js.map +0 -1
- package/dist/present/writers/fullscreen.d.ts +0 -19
- package/dist/present/writers/fullscreen.d.ts.map +0 -1
- package/dist/present/writers/fullscreen.js +0 -55
- package/dist/present/writers/fullscreen.js.map +0 -1
- package/dist/present/writers/inline.d.ts +0 -20
- package/dist/present/writers/inline.d.ts.map +0 -1
- package/dist/present/writers/inline.js +0 -92
- package/dist/present/writers/inline.js.map +0 -1
- package/dist/render/color-utils.d.ts +0 -18
- package/dist/render/color-utils.d.ts.map +0 -1
- package/dist/render/color-utils.js +0 -58
- package/dist/render/color-utils.js.map +0 -1
- package/dist/render/diff.d.ts +0 -30
- package/dist/render/diff.d.ts.map +0 -1
- package/dist/render/diff.js +0 -83
- package/dist/render/diff.js.map +0 -1
- package/dist/spring-physics.d.ts +0 -36
- package/dist/spring-physics.d.ts.map +0 -1
- package/dist/spring-physics.js +0 -113
- package/dist/spring-physics.js.map +0 -1
- package/dist/spring.d.ts +0 -73
- package/dist/spring.d.ts.map +0 -1
- package/dist/spring.js +0 -136
- package/dist/spring.js.map +0 -1
- package/dist/ui/containers/canvas.d.ts +0 -13
- package/dist/ui/containers/canvas.d.ts.map +0 -1
- package/dist/ui/containers/canvas.js +0 -16
- package/dist/ui/containers/canvas.js.map +0 -1
- package/dist/ui/containers/geometry-reader.d.ts +0 -17
- package/dist/ui/containers/geometry-reader.d.ts.map +0 -1
- package/dist/ui/containers/geometry-reader.js +0 -24
- package/dist/ui/containers/geometry-reader.js.map +0 -1
- package/dist/ui/containers/hstack.d.ts +0 -12
- package/dist/ui/containers/hstack.d.ts.map +0 -1
- package/dist/ui/containers/hstack.js +0 -28
- package/dist/ui/containers/hstack.js.map +0 -1
- package/dist/ui/containers/scroll.d.ts +0 -28
- package/dist/ui/containers/scroll.d.ts.map +0 -1
- package/dist/ui/containers/scroll.js +0 -97
- package/dist/ui/containers/scroll.js.map +0 -1
- package/dist/ui/containers/shared.d.ts +0 -12
- package/dist/ui/containers/shared.d.ts.map +0 -1
- package/dist/ui/containers/shared.js +0 -19
- package/dist/ui/containers/shared.js.map +0 -1
- package/dist/ui/containers/vstack.d.ts +0 -12
- package/dist/ui/containers/vstack.d.ts.map +0 -1
- package/dist/ui/containers/vstack.js +0 -28
- package/dist/ui/containers/vstack.js.map +0 -1
- package/dist/ui/containers/zstack.d.ts +0 -14
- package/dist/ui/containers/zstack.d.ts.map +0 -1
- package/dist/ui/containers/zstack.js +0 -36
- package/dist/ui/containers/zstack.js.map +0 -1
- package/dist/ui/core/geometry-store.d.ts +0 -22
- package/dist/ui/core/geometry-store.d.ts.map +0 -1
- package/dist/ui/core/geometry-store.js +0 -29
- package/dist/ui/core/geometry-store.js.map +0 -1
- package/dist/ui/core/geometry.d.ts +0 -34
- package/dist/ui/core/geometry.d.ts.map +0 -1
- package/dist/ui/core/geometry.js +0 -14
- package/dist/ui/core/geometry.js.map +0 -1
- package/dist/ui/core/view.d.ts +0 -25
- package/dist/ui/core/view.d.ts.map +0 -1
- package/dist/ui/core/view.js +0 -34
- package/dist/ui/core/view.js.map +0 -1
- package/dist/ui/index.d.ts +0 -44
- package/dist/ui/index.d.ts.map +0 -1
- package/dist/ui/index.js +0 -39
- package/dist/ui/index.js.map +0 -1
- package/dist/ui/inlinetext.d.ts +0 -24
- package/dist/ui/inlinetext.d.ts.map +0 -1
- package/dist/ui/inlinetext.js +0 -131
- package/dist/ui/inlinetext.js.map +0 -1
- package/dist/ui/install.d.ts +0 -22
- package/dist/ui/install.d.ts.map +0 -1
- package/dist/ui/install.js +0 -66
- package/dist/ui/install.js.map +0 -1
- package/dist/ui/markdown.d.ts +0 -40
- package/dist/ui/markdown.d.ts.map +0 -1
- package/dist/ui/markdown.js +0 -351
- package/dist/ui/markdown.js.map +0 -1
- package/dist/ui/modifiers/border.d.ts +0 -33
- package/dist/ui/modifiers/border.d.ts.map +0 -1
- package/dist/ui/modifiers/border.js +0 -82
- package/dist/ui/modifiers/border.js.map +0 -1
- package/dist/ui/modifiers/fill.d.ts +0 -14
- package/dist/ui/modifiers/fill.d.ts.map +0 -1
- package/dist/ui/modifiers/fill.js +0 -25
- package/dist/ui/modifiers/fill.js.map +0 -1
- package/dist/ui/modifiers/frame.d.ts +0 -23
- package/dist/ui/modifiers/frame.d.ts.map +0 -1
- package/dist/ui/modifiers/frame.js +0 -54
- package/dist/ui/modifiers/frame.js.map +0 -1
- package/dist/ui/modifiers/offset.d.ts +0 -15
- package/dist/ui/modifiers/offset.d.ts.map +0 -1
- package/dist/ui/modifiers/offset.js +0 -21
- package/dist/ui/modifiers/offset.js.map +0 -1
- package/dist/ui/modifiers/opacity.d.ts +0 -15
- package/dist/ui/modifiers/opacity.d.ts.map +0 -1
- package/dist/ui/modifiers/opacity.js +0 -95
- package/dist/ui/modifiers/opacity.js.map +0 -1
- package/dist/ui/modifiers/padding.d.ts +0 -20
- package/dist/ui/modifiers/padding.d.ts.map +0 -1
- package/dist/ui/modifiers/padding.js +0 -36
- package/dist/ui/modifiers/padding.js.map +0 -1
- package/dist/ui/modifiers/styled.d.ts +0 -14
- package/dist/ui/modifiers/styled.d.ts.map +0 -1
- package/dist/ui/modifiers/styled.js +0 -26
- package/dist/ui/modifiers/styled.js.map +0 -1
- package/dist/ui/primitives/rectangle.d.ts +0 -15
- package/dist/ui/primitives/rectangle.d.ts.map +0 -1
- package/dist/ui/primitives/rectangle.js +0 -23
- package/dist/ui/primitives/rectangle.js.map +0 -1
- package/dist/ui/primitives/spacer.d.ts +0 -13
- package/dist/ui/primitives/spacer.d.ts.map +0 -1
- package/dist/ui/primitives/spacer.js +0 -16
- package/dist/ui/primitives/spacer.js.map +0 -1
- package/dist/ui/primitives/text.d.ts +0 -15
- package/dist/ui/primitives/text.d.ts.map +0 -1
- package/dist/ui/primitives/text.js +0 -79
- package/dist/ui/primitives/text.js.map +0 -1
- package/dist/ui/primitives/wrapped-text.d.ts +0 -30
- package/dist/ui/primitives/wrapped-text.d.ts.map +0 -1
- package/dist/ui/primitives/wrapped-text.js +0 -117
- package/dist/ui/primitives/wrapped-text.js.map +0 -1
- package/dist/ui/shinytext.d.ts +0 -66
- package/dist/ui/shinytext.d.ts.map +0 -1
- package/dist/ui/shinytext.js +0 -99
- package/dist/ui/shinytext.js.map +0 -1
- package/dist/ui/text/layout.d.ts +0 -35
- package/dist/ui/text/layout.d.ts.map +0 -1
- package/dist/ui/text/layout.js +0 -102
- package/dist/ui/text/layout.js.map +0 -1
- package/dist/ui/textinput.d.ts +0 -140
- package/dist/ui/textinput.d.ts.map +0 -1
- package/dist/ui/textinput.js +0 -402
- package/dist/ui/textinput.js.map +0 -1
- package/dist/ui/view-constructors.d.ts +0 -72
- package/dist/ui/view-constructors.d.ts.map +0 -1
- package/dist/ui/view-constructors.js +0 -74
- package/dist/ui/view-constructors.js.map +0 -1
- package/src/anim.ts +0 -5
- package/src/layout/linearStack.ts +0 -115
- package/src/motion-value.ts +0 -335
- package/src/present/display.ts +0 -206
- package/src/present/writers/fullscreen.ts +0 -58
- package/src/present/writers/inline.ts +0 -101
- package/src/render/color-utils.ts +0 -60
- package/src/render/diff.ts +0 -95
- package/src/spring-physics.ts +0 -151
- package/src/spring.ts +0 -234
- package/src/ui/__snapshots__/wrappedtext.test.ts.snap +0 -57
- package/src/ui/containers/canvas.ts +0 -18
- package/src/ui/containers/geometry-reader.ts +0 -32
- package/src/ui/containers/hstack.ts +0 -33
- package/src/ui/containers/scroll.ts +0 -106
- package/src/ui/containers/shared.ts +0 -27
- package/src/ui/containers/vstack.ts +0 -34
- package/src/ui/containers/zstack.ts +0 -37
- package/src/ui/core/geometry-store.ts +0 -42
- package/src/ui/core/geometry.ts +0 -30
- package/src/ui/core/view.ts +0 -49
- package/src/ui/index.ts +0 -84
- package/src/ui/inlinetext.ts +0 -135
- package/src/ui/install.ts +0 -110
- package/src/ui/markdown.test.ts +0 -74
- package/src/ui/markdown.ts +0 -388
- package/src/ui/modifiers/border.ts +0 -100
- package/src/ui/modifiers/fill.ts +0 -28
- package/src/ui/modifiers/frame.ts +0 -74
- package/src/ui/modifiers/offset.ts +0 -23
- package/src/ui/modifiers/opacity.ts +0 -93
- package/src/ui/modifiers/padding.ts +0 -53
- package/src/ui/modifiers/styled.ts +0 -31
- package/src/ui/primitives/rectangle.ts +0 -25
- package/src/ui/primitives/spacer.ts +0 -18
- package/src/ui/primitives/text.ts +0 -85
- package/src/ui/primitives/wrapped-text.ts +0 -131
- package/src/ui/shinytext.ts +0 -159
- package/src/ui/text/layout.ts +0 -119
- package/src/ui/textinput.ts +0 -496
- package/src/ui/view-constructors.ts +0 -96
- package/src/ui/wrappedtext.test.ts +0 -138
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { ANSI } from "../../ansi.js";
|
|
2
|
-
export class LineDiffWriter {
|
|
3
|
-
palette;
|
|
4
|
-
shadow = new Map();
|
|
5
|
-
printed = new Map(); // canonical content per row
|
|
6
|
-
rows = 0;
|
|
7
|
-
baseRow = 0;
|
|
8
|
-
constructor(palette) {
|
|
9
|
-
this.palette = palette;
|
|
10
|
-
}
|
|
11
|
-
begin(vp) {
|
|
12
|
-
this.rows = vp.rows;
|
|
13
|
-
this.shadow.clear();
|
|
14
|
-
}
|
|
15
|
-
setBaseRow(n) {
|
|
16
|
-
this.baseRow = Math.max(0, n | 0);
|
|
17
|
-
}
|
|
18
|
-
run(row, col, style, text) {
|
|
19
|
-
if (!text)
|
|
20
|
-
return;
|
|
21
|
-
const list = this.shadow.get(row) ?? [];
|
|
22
|
-
list.push({ col, style, text });
|
|
23
|
-
this.shadow.set(row, list);
|
|
24
|
-
}
|
|
25
|
-
end() {
|
|
26
|
-
/* no-op */
|
|
27
|
-
}
|
|
28
|
-
sameRow(a, b) {
|
|
29
|
-
if (!a && !b)
|
|
30
|
-
return true;
|
|
31
|
-
if (!a || !b || a.length !== b.length)
|
|
32
|
-
return false;
|
|
33
|
-
for (let i = 0; i < a.length; i++) {
|
|
34
|
-
const A = a[i], B = b[i];
|
|
35
|
-
if (A.col !== B.col || A.style !== B.style || A.text !== B.text)
|
|
36
|
-
return false;
|
|
37
|
-
}
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
40
|
-
flush() {
|
|
41
|
-
// Only process rows that the diff reported as changed.
|
|
42
|
-
// Unchanged rows are left intact to avoid accidental clearing.
|
|
43
|
-
const rowsToProcess = Array.from(this.shadow.keys()).sort((a, b) => a - b);
|
|
44
|
-
let out = "";
|
|
45
|
-
for (const row of rowsToProcess) {
|
|
46
|
-
const segs = (this.shadow.get(row) ?? []).sort((a, b) => a.col - b.col);
|
|
47
|
-
const prev = this.printed.get(row);
|
|
48
|
-
if (this.sameRow(prev, segs))
|
|
49
|
-
continue; // nothing changed effectively
|
|
50
|
-
// coalesce adjacent segments with same style (keep this optimization)
|
|
51
|
-
const merged = [];
|
|
52
|
-
for (const s of segs) {
|
|
53
|
-
const last = merged[merged.length - 1];
|
|
54
|
-
if (last && last.style === s.style && last.col + last.text.length === s.col) {
|
|
55
|
-
last.text += s.text;
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
merged.push({ ...s });
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
// Move to absolute row (1-based) and place segments in-place.
|
|
62
|
-
// Avoid clearing the entire line; we only overwrite changed cells.
|
|
63
|
-
const termRow1 = this.baseRow + row + 1;
|
|
64
|
-
out += ANSI.cursor.to(termRow1, 1);
|
|
65
|
-
let curStyle = -1;
|
|
66
|
-
for (const s of merged) {
|
|
67
|
-
// Move to column (1-based) within the current row
|
|
68
|
-
out += ANSI.cursor.toCol(s.col + 1);
|
|
69
|
-
if (curStyle !== s.style) {
|
|
70
|
-
out += this.palette.sgr(s.style);
|
|
71
|
-
curStyle = s.style;
|
|
72
|
-
}
|
|
73
|
-
out += s.text;
|
|
74
|
-
}
|
|
75
|
-
if (curStyle !== -1)
|
|
76
|
-
out += ANSI.reset;
|
|
77
|
-
this.printed.set(row, merged);
|
|
78
|
-
}
|
|
79
|
-
// Determine printed height (last row index with any segments + 1)
|
|
80
|
-
let lastRow = -1;
|
|
81
|
-
for (const [r, segs] of this.printed) {
|
|
82
|
-
if (segs.length > 0 && r > lastRow)
|
|
83
|
-
lastRow = r;
|
|
84
|
-
}
|
|
85
|
-
const printedHeight = lastRow + 1;
|
|
86
|
-
// Park cursor at bottom-left of our region (clamped to viewport)
|
|
87
|
-
const parkRow = Math.min(this.rows, Math.max(1, this.baseRow + (printedHeight > 0 ? printedHeight : 1)));
|
|
88
|
-
out += ANSI.cursor.to(parkRow, 1);
|
|
89
|
-
return out;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=inline.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inline.js","sourceRoot":"","sources":["../../../src/present/writers/inline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Clamp a number to the 0-255 range and convert to integer.
|
|
3
|
-
*/
|
|
4
|
-
export declare function clamp255(n: number): number;
|
|
5
|
-
/**
|
|
6
|
-
* Convert a 256-color index to RGB values (approximate xterm palette).
|
|
7
|
-
*
|
|
8
|
-
* The 256-color palette is divided into:
|
|
9
|
-
* - 0-15: Standard ANSI colors (system colors)
|
|
10
|
-
* - 16-231: 6x6x6 RGB cube
|
|
11
|
-
* - 232-255: Grayscale ramp (24 shades)
|
|
12
|
-
*/
|
|
13
|
-
export declare function idxToRGB(idx: number): {
|
|
14
|
-
r: number;
|
|
15
|
-
g: number;
|
|
16
|
-
b: number;
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=color-utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"color-utils.d.ts","sourceRoot":"","sources":["../../src/render/color-utils.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1C;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CA0CzE"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
// color-utils.ts - Shared color conversion utilities
|
|
2
|
-
/**
|
|
3
|
-
* Clamp a number to the 0-255 range and convert to integer.
|
|
4
|
-
*/
|
|
5
|
-
export function clamp255(n) {
|
|
6
|
-
return n < 0 ? 0 : n > 255 ? 255 : n | 0;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Convert a 256-color index to RGB values (approximate xterm palette).
|
|
10
|
-
*
|
|
11
|
-
* The 256-color palette is divided into:
|
|
12
|
-
* - 0-15: Standard ANSI colors (system colors)
|
|
13
|
-
* - 16-231: 6x6x6 RGB cube
|
|
14
|
-
* - 232-255: Grayscale ramp (24 shades)
|
|
15
|
-
*/
|
|
16
|
-
export function idxToRGB(idx) {
|
|
17
|
-
if (idx < 0)
|
|
18
|
-
idx = 0;
|
|
19
|
-
if (idx > 255)
|
|
20
|
-
idx = 255;
|
|
21
|
-
// Standard ANSI colors (0-15)
|
|
22
|
-
if (idx < 16) {
|
|
23
|
-
const base = [
|
|
24
|
-
[0x00, 0x00, 0x00], // 0: black
|
|
25
|
-
[0x80, 0x00, 0x00], // 1: red
|
|
26
|
-
[0x00, 0x80, 0x00], // 2: green
|
|
27
|
-
[0x80, 0x80, 0x00], // 3: yellow
|
|
28
|
-
[0x00, 0x00, 0x80], // 4: blue
|
|
29
|
-
[0x80, 0x00, 0x80], // 5: magenta
|
|
30
|
-
[0x00, 0x80, 0x80], // 6: cyan
|
|
31
|
-
[0xc0, 0xc0, 0xc0], // 7: white
|
|
32
|
-
[0x80, 0x80, 0x80], // 8: bright black (gray)
|
|
33
|
-
[0xff, 0x00, 0x00], // 9: bright red
|
|
34
|
-
[0x00, 0xff, 0x00], // 10: bright green
|
|
35
|
-
[0xff, 0xff, 0x00], // 11: bright yellow
|
|
36
|
-
[0x00, 0x00, 0xff], // 12: bright blue
|
|
37
|
-
[0xff, 0x00, 0xff], // 13: bright magenta
|
|
38
|
-
[0x00, 0xff, 0xff], // 14: bright cyan
|
|
39
|
-
[0xff, 0xff, 0xff], // 15: bright white
|
|
40
|
-
];
|
|
41
|
-
const [r, g, b] = base[idx] ?? [0, 0, 0];
|
|
42
|
-
return { r, g, b };
|
|
43
|
-
}
|
|
44
|
-
// Grayscale ramp (232-255)
|
|
45
|
-
if (idx >= 232) {
|
|
46
|
-
const n = idx - 232; // 0..23
|
|
47
|
-
const v = 8 + n * 10;
|
|
48
|
-
return { r: v, g: v, b: v };
|
|
49
|
-
}
|
|
50
|
-
// 6x6x6 RGB cube (16-231)
|
|
51
|
-
const n = idx - 16; // 0..215
|
|
52
|
-
const r = Math.floor(n / 36) % 6;
|
|
53
|
-
const g = Math.floor(n / 6) % 6;
|
|
54
|
-
const b = n % 6;
|
|
55
|
-
const steps = [0, 95, 135, 175, 215, 255];
|
|
56
|
-
return { r: steps[r] ?? 0, g: steps[g] ?? 0, b: steps[b] ?? 0 };
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=color-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"color-utils.js","sourceRoot":"","sources":["../../src/render/color-utils.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,CAAS;IACjC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AACzC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW;IACnC,IAAI,GAAG,GAAG,CAAC;QAAE,GAAG,GAAG,CAAC,CAAA;IACpB,IAAI,GAAG,GAAG,GAAG;QAAE,GAAG,GAAG,GAAG,CAAA;IAExB,8BAA8B;IAC9B,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC;QACd,MAAM,IAAI,GAAoC;YAC7C,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,WAAW;YAC/B,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS;YAC7B,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,WAAW;YAC/B,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,YAAY;YAChC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,UAAU;YAC9B,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,aAAa;YACjC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,UAAU;YAC9B,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,WAAW;YAC/B,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,yBAAyB;YAC7C,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,gBAAgB;YACpC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,mBAAmB;YACvC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,oBAAoB;YACxC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,kBAAkB;YACtC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,qBAAqB;YACzC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,kBAAkB;YACtC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,mBAAmB;SACvC,CAAA;QACD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACxC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACnB,CAAC;IAED,2BAA2B;IAC3B,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QAChB,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,CAAA,CAAC,QAAQ;QAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;QACpB,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IAC5B,CAAC;IAED,0BAA0B;IAC1B,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAA,CAAC,SAAS;IAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;IAChC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;IAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACf,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;IACzC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAA;AAChE,CAAC"}
|
package/dist/render/diff.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { Surface } from "./surface.js";
|
|
2
|
-
/**
|
|
3
|
-
* Writer that consumes style runs produced by diffing two frames.
|
|
4
|
-
* - Coordinates are 0-based: `row` in [0..rows), `col` in [0..cols).
|
|
5
|
-
* - `begin` is called once with the viewport size, then `run` zero or more times,
|
|
6
|
-
* then `end`. Implementations may buffer and expose the result via `flush`.
|
|
7
|
-
*/
|
|
8
|
-
export interface RunWriter {
|
|
9
|
-
begin(viewport: {
|
|
10
|
-
cols: number;
|
|
11
|
-
rows: number;
|
|
12
|
-
}): void;
|
|
13
|
-
run(row: number, col: number, styleId: number, text: string): void;
|
|
14
|
-
end(): void;
|
|
15
|
-
flush(): string;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Stream a minimal set of style-runs for changes from prev → next.
|
|
19
|
-
*
|
|
20
|
-
* Algorithm (row-wise):
|
|
21
|
-
* - For each row, compute a tight change window [left, right]. Skip entirely if equal.
|
|
22
|
-
* - Within the window, emit contiguous runs grouped by style. A new run begins when:
|
|
23
|
-
* - A cell changes, and
|
|
24
|
-
* - Its style differs from the current run (or the run just started).
|
|
25
|
-
* - Wide glyph continuation cells (cw=0) are skipped so they are not reprinted.
|
|
26
|
-
*
|
|
27
|
-
* Assumes both Surfaces are same size and compares their back buffers (B).
|
|
28
|
-
*/
|
|
29
|
-
export declare function diffFrames(prev: Surface, next: Surface, w: RunWriter): void;
|
|
30
|
-
//# sourceMappingURL=diff.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/render/diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAE3C;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACrD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAClE,GAAG,IAAI,IAAI,CAAA;IACX,KAAK,IAAI,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,GAAG,IAAI,CAmE3E"}
|
package/dist/render/diff.js
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Stream a minimal set of style-runs for changes from prev → next.
|
|
3
|
-
*
|
|
4
|
-
* Algorithm (row-wise):
|
|
5
|
-
* - For each row, compute a tight change window [left, right]. Skip entirely if equal.
|
|
6
|
-
* - Within the window, emit contiguous runs grouped by style. A new run begins when:
|
|
7
|
-
* - A cell changes, and
|
|
8
|
-
* - Its style differs from the current run (or the run just started).
|
|
9
|
-
* - Wide glyph continuation cells (cw=0) are skipped so they are not reprinted.
|
|
10
|
-
*
|
|
11
|
-
* Assumes both Surfaces are same size and compares their back buffers (B).
|
|
12
|
-
*/
|
|
13
|
-
export function diffFrames(prev, next, w) {
|
|
14
|
-
const width = next.w;
|
|
15
|
-
const height = next.h;
|
|
16
|
-
// Access back buffers (like Surface.flush does). B is private on Surface, so use `any`.
|
|
17
|
-
const gA = prev.B.g;
|
|
18
|
-
const sA = prev.B.s;
|
|
19
|
-
const gB = next.B.g;
|
|
20
|
-
const sB = next.B.s;
|
|
21
|
-
const cwB = next.B.cw;
|
|
22
|
-
w.begin({ cols: width, rows: height });
|
|
23
|
-
for (let y = 0; y < height; y++) {
|
|
24
|
-
const row = y * width;
|
|
25
|
-
// Fast skip window: [left..right] bounds that changed
|
|
26
|
-
let left = 0, right = width - 1;
|
|
27
|
-
while (left <= right) {
|
|
28
|
-
const i = row + left;
|
|
29
|
-
if (gA[i] === gB[i] && sA[i] === sB[i])
|
|
30
|
-
left++;
|
|
31
|
-
else
|
|
32
|
-
break;
|
|
33
|
-
}
|
|
34
|
-
if (left > right)
|
|
35
|
-
continue;
|
|
36
|
-
while (right >= left) {
|
|
37
|
-
const i = row + right;
|
|
38
|
-
if (gA[i] === gB[i] && sA[i] === sB[i])
|
|
39
|
-
right--;
|
|
40
|
-
else
|
|
41
|
-
break;
|
|
42
|
-
}
|
|
43
|
-
// Emit contiguous style runs within [left..right]
|
|
44
|
-
let x = left;
|
|
45
|
-
while (x <= right) {
|
|
46
|
-
// Skip unchanged within window
|
|
47
|
-
while (x <= right) {
|
|
48
|
-
const i = row + x;
|
|
49
|
-
if (gA[i] !== gB[i] || sA[i] !== sB[i])
|
|
50
|
-
break;
|
|
51
|
-
x++;
|
|
52
|
-
}
|
|
53
|
-
if (x > right)
|
|
54
|
-
break;
|
|
55
|
-
const style = sB[row + x];
|
|
56
|
-
const runX = x;
|
|
57
|
-
let text = "";
|
|
58
|
-
while (x <= right) {
|
|
59
|
-
const i = row + x;
|
|
60
|
-
if (sB[i] !== style)
|
|
61
|
-
break;
|
|
62
|
-
const cp = gB[i];
|
|
63
|
-
const ww = cwB[i];
|
|
64
|
-
if (ww !== 0)
|
|
65
|
-
text += cp === 32 ? " " : String.fromCodePoint(cp);
|
|
66
|
-
x++;
|
|
67
|
-
// skip continuation cells of wide glyphs from the next buffer
|
|
68
|
-
while (x <= right && cwB[row + x] === 0)
|
|
69
|
-
x++;
|
|
70
|
-
// Stop run if next cell is unchanged; diff window will reposition
|
|
71
|
-
if (x <= right) {
|
|
72
|
-
const j = row + x;
|
|
73
|
-
if (gA[j] === gB[j] && sA[j] === sB[j])
|
|
74
|
-
break;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
if (text.length > 0)
|
|
78
|
-
w.run(y, runX, style, text);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
w.end();
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=diff.js.map
|
package/dist/render/diff.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/render/diff.ts"],"names":[],"mappings":"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"}
|
package/dist/spring-physics.d.ts
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
export type SpringState = {
|
|
2
|
-
x: number;
|
|
3
|
-
v: number;
|
|
4
|
-
target: number;
|
|
5
|
-
};
|
|
6
|
-
export type SpringConfig = {
|
|
7
|
-
frequency?: number;
|
|
8
|
-
dampingRatio?: number;
|
|
9
|
-
epsilon?: number;
|
|
10
|
-
duration?: number;
|
|
11
|
-
bounce?: number;
|
|
12
|
-
};
|
|
13
|
-
export declare const DEFAULTS: Required<Omit<SpringConfig, "duration">> & {
|
|
14
|
-
duration?: number;
|
|
15
|
-
};
|
|
16
|
-
export declare function fromDurationBounce(durationSec: number, bounce?: number): {
|
|
17
|
-
frequency: number;
|
|
18
|
-
dampingRatio: number;
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* Advance a 1D damped spring towards its target using a semi-implicit Euler step.
|
|
22
|
-
* - Stable enough for small dt (<= ~1/30s) typical of frame ticks.
|
|
23
|
-
* - Uses frequency/dampingRatio to feel similar across frame rates.
|
|
24
|
-
*/
|
|
25
|
-
export declare function advanceSpring(state: SpringState, dtSeconds: number, config?: SpringConfig): SpringState & {
|
|
26
|
-
settled: boolean;
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
* Internal exact spring step for 1D channel (frame-rate independent).
|
|
30
|
-
* Uses closed-form analytical solution for underdamped/critically-damped/overdamped cases.
|
|
31
|
-
*/
|
|
32
|
-
export declare function stepSpring1D(x: number, v: number, target: number, dt: number, freq: number, zeta: number): {
|
|
33
|
-
x: number;
|
|
34
|
-
v: number;
|
|
35
|
-
};
|
|
36
|
-
//# sourceMappingURL=spring-physics.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spring-physics.d.ts","sourceRoot":"","sources":["../src/spring-physics.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG;IAEzB,CAAC,EAAE,MAAM,CAAA;IAET,CAAC,EAAE,MAAM,CAAA;IAET,MAAM,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IAE1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB,OAAO,CAAC,EAAE,MAAM,CAAA;IAGhB,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,MAAM,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAMpF,CAAA;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAgB/G;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC5B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,YAAY,GACnB,WAAW,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CA4CpC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC3B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACV;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAiC1B"}
|
package/dist/spring-physics.js
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
// spring-physics.ts - Core spring physics primitives
|
|
2
|
-
export const DEFAULTS = {
|
|
3
|
-
frequency: 3,
|
|
4
|
-
dampingRatio: 1,
|
|
5
|
-
epsilon: 0.0005,
|
|
6
|
-
duration: undefined,
|
|
7
|
-
bounce: 0,
|
|
8
|
-
};
|
|
9
|
-
export function fromDurationBounce(durationSec, bounce = 0) {
|
|
10
|
-
const d = Math.max(0.05, durationSec);
|
|
11
|
-
let zeta;
|
|
12
|
-
const b = Math.max(0, Math.min(0.999, bounce));
|
|
13
|
-
if (b <= 0) {
|
|
14
|
-
zeta = 1; // critically damped, no overshoot
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
// Map overshoot ratio M_p=b to damping ratio via standard 2nd-order step response
|
|
18
|
-
const lnMp = Math.log(Math.max(1e-6, b));
|
|
19
|
-
zeta = Math.sqrt((lnMp * lnMp) / (Math.PI * Math.PI + lnMp * lnMp));
|
|
20
|
-
zeta = Math.max(0.02, Math.min(0.999, zeta));
|
|
21
|
-
}
|
|
22
|
-
// Use ~2% settling time approximation Ts ≈ 4/(ζ ω_n)
|
|
23
|
-
const omega = 4 / (Math.max(0.02, zeta) * d);
|
|
24
|
-
const freq = omega / (2 * Math.PI);
|
|
25
|
-
return { frequency: freq, dampingRatio: zeta };
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Advance a 1D damped spring towards its target using a semi-implicit Euler step.
|
|
29
|
-
* - Stable enough for small dt (<= ~1/30s) typical of frame ticks.
|
|
30
|
-
* - Uses frequency/dampingRatio to feel similar across frame rates.
|
|
31
|
-
*/
|
|
32
|
-
export function advanceSpring(state, dtSeconds, config) {
|
|
33
|
-
let { frequency, dampingRatio, epsilon } = { ...DEFAULTS, ...(config ?? {}) };
|
|
34
|
-
const bounce = config?.bounce ?? DEFAULTS.bounce;
|
|
35
|
-
// If duration is provided, derive frequency/dampingRatio from it and bounce
|
|
36
|
-
if (config?.duration != null) {
|
|
37
|
-
const derived = fromDurationBounce(config.duration, config.bounce ?? DEFAULTS.bounce);
|
|
38
|
-
frequency = derived.frequency;
|
|
39
|
-
dampingRatio = derived.dampingRatio;
|
|
40
|
-
}
|
|
41
|
-
const omega = Math.PI * 2 * Math.max(0.001, frequency);
|
|
42
|
-
const k = omega * omega; // stiffness
|
|
43
|
-
const c = 2 * dampingRatio * omega; // damping
|
|
44
|
-
let { x, v, target } = state;
|
|
45
|
-
const prevX = x;
|
|
46
|
-
if (dtSeconds <= 0)
|
|
47
|
-
return {
|
|
48
|
-
x,
|
|
49
|
-
v,
|
|
50
|
-
target,
|
|
51
|
-
settled: Math.abs(x - target) < epsilon && Math.abs(v) < epsilon,
|
|
52
|
-
};
|
|
53
|
-
// semi-implicit Euler integration
|
|
54
|
-
const a = k * (target - x) - c * v;
|
|
55
|
-
v += a * dtSeconds;
|
|
56
|
-
x += v * dtSeconds;
|
|
57
|
-
// With bounce=0 users expect a monotonic approach; clamp if we cross the target.
|
|
58
|
-
if (bounce <= 0) {
|
|
59
|
-
const crossed = (prevX - target) * (x - target) <= 0;
|
|
60
|
-
if (crossed) {
|
|
61
|
-
x = target;
|
|
62
|
-
v = 0;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
// snap to target when sufficiently close to avoid long tails
|
|
66
|
-
const settled = Math.abs(x - target) < epsilon && Math.abs(v) < epsilon;
|
|
67
|
-
if (settled) {
|
|
68
|
-
x = target;
|
|
69
|
-
v = 0;
|
|
70
|
-
}
|
|
71
|
-
return { x, v, target, settled };
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Internal exact spring step for 1D channel (frame-rate independent).
|
|
75
|
-
* Uses closed-form analytical solution for underdamped/critically-damped/overdamped cases.
|
|
76
|
-
*/
|
|
77
|
-
export function stepSpring1D(x, v, target, dt, freq, zeta) {
|
|
78
|
-
const omega = Math.max(0.001, freq) * 2 * Math.PI;
|
|
79
|
-
const A0 = x - target;
|
|
80
|
-
const exp = Math.exp(-zeta * omega * dt);
|
|
81
|
-
if (zeta < 1) {
|
|
82
|
-
// Underdamped
|
|
83
|
-
const wd = omega * Math.sqrt(1 - zeta * zeta);
|
|
84
|
-
const cos = Math.cos(wd * dt);
|
|
85
|
-
const sin = Math.sin(wd * dt);
|
|
86
|
-
const B0 = v + zeta * omega * A0;
|
|
87
|
-
const A = exp * (A0 * cos + (B0 / wd) * sin);
|
|
88
|
-
const dA = exp * (-zeta * omega * (A0 * cos + (B0 / wd) * sin) + (-A0 * wd * sin + B0 * cos));
|
|
89
|
-
return { x: target + A, v: dA };
|
|
90
|
-
}
|
|
91
|
-
else if (zeta === 1) {
|
|
92
|
-
// Critically damped
|
|
93
|
-
const t = dt;
|
|
94
|
-
const C2 = v + omega * A0;
|
|
95
|
-
const A = exp * (A0 + C2 * t);
|
|
96
|
-
const dA = exp * (C2 - omega * (A0 + C2 * t));
|
|
97
|
-
return { x: target + A, v: dA };
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
// Overdamped
|
|
101
|
-
const s = Math.sqrt(zeta * zeta - 1);
|
|
102
|
-
const r1 = -omega * (zeta - s);
|
|
103
|
-
const r2 = -omega * (zeta + s);
|
|
104
|
-
const C1 = (v - r2 * A0) / (r1 - r2);
|
|
105
|
-
const C2 = A0 - C1;
|
|
106
|
-
const e1 = Math.exp(r1 * dt);
|
|
107
|
-
const e2 = Math.exp(r2 * dt);
|
|
108
|
-
const A = C1 * e1 + C2 * e2;
|
|
109
|
-
const dA = C1 * r1 * e1 + C2 * r2 * e2;
|
|
110
|
-
return { x: target + A, v: dA };
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
//# sourceMappingURL=spring-physics.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spring-physics.js","sourceRoot":"","sources":["../src/spring-physics.ts"],"names":[],"mappings":"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"}
|
package/dist/spring.d.ts
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import type { ColorLike, ColorValue } from "./render/surface.js";
|
|
2
|
-
import { type SpringConfig, type SpringState } from "./spring-physics.js";
|
|
3
|
-
export type SpringValue = SpringState & {
|
|
4
|
-
/** last timestamp in ms used for dt; hidden from callers */
|
|
5
|
-
_last?: number;
|
|
6
|
-
/** default config for ticks (optional) */
|
|
7
|
-
_config?: SpringConfig;
|
|
8
|
-
};
|
|
9
|
-
export type SpringColorValue = {
|
|
10
|
-
x: {
|
|
11
|
-
r: number;
|
|
12
|
-
g: number;
|
|
13
|
-
b: number;
|
|
14
|
-
};
|
|
15
|
-
v: {
|
|
16
|
-
r: number;
|
|
17
|
-
g: number;
|
|
18
|
-
b: number;
|
|
19
|
-
};
|
|
20
|
-
target: {
|
|
21
|
-
r: number;
|
|
22
|
-
g: number;
|
|
23
|
-
b: number;
|
|
24
|
-
};
|
|
25
|
-
_last?: number;
|
|
26
|
-
_config?: SpringConfig;
|
|
27
|
-
};
|
|
28
|
-
export type AnySpringValue = SpringValue | SpringColorValue;
|
|
29
|
-
export type SpringAutoOptions = SpringConfig & {
|
|
30
|
-
as?: "auto" | "number" | "color";
|
|
31
|
-
};
|
|
32
|
-
export declare function colorLikeToRGB(c: ColorLike): {
|
|
33
|
-
r: number;
|
|
34
|
-
g: number;
|
|
35
|
-
b: number;
|
|
36
|
-
};
|
|
37
|
-
export type SpringAPI = {
|
|
38
|
-
init(initial: number, cfg?: SpringConfig): SpringValue;
|
|
39
|
-
to(s: SpringValue, target: number): SpringValue;
|
|
40
|
-
tick(s: SpringValue, nowMs: number, cfg?: SpringConfig): SpringValue;
|
|
41
|
-
value(s: SpringValue): number;
|
|
42
|
-
settled(s: SpringValue, eps?: number): boolean;
|
|
43
|
-
color: {
|
|
44
|
-
init(initial: ColorLike, cfg?: SpringConfig): SpringColorValue;
|
|
45
|
-
to(s: SpringColorValue, target: ColorLike): SpringColorValue;
|
|
46
|
-
tick(s: SpringColorValue, nowMs: number, cfg?: SpringConfig): SpringColorValue;
|
|
47
|
-
value(s: SpringColorValue): ColorValue;
|
|
48
|
-
settled(s: SpringColorValue, eps?: number): boolean;
|
|
49
|
-
};
|
|
50
|
-
create(initial: number, cfg?: SpringAutoOptions): SpringValue;
|
|
51
|
-
create(initial: ColorLike, cfg?: SpringAutoOptions): SpringColorValue;
|
|
52
|
-
to(s: SpringColorValue, target: ColorLike): SpringColorValue;
|
|
53
|
-
tick(s: SpringColorValue, nowMs: number, cfg?: SpringConfig): SpringColorValue;
|
|
54
|
-
advance(s: SpringValue, nowMs: number, cfg?: SpringConfig): SpringValue;
|
|
55
|
-
advance(s: SpringColorValue, nowMs: number, cfg?: SpringConfig): SpringColorValue;
|
|
56
|
-
read(s: SpringValue): number;
|
|
57
|
-
read(s: SpringColorValue): ColorValue;
|
|
58
|
-
isSettled(s: SpringValue, eps?: number): boolean;
|
|
59
|
-
isSettled(s: SpringColorValue, eps?: number): boolean;
|
|
60
|
-
};
|
|
61
|
-
export declare const Spring: SpringAPI;
|
|
62
|
-
export type Stepper = {
|
|
63
|
-
index: number;
|
|
64
|
-
length: number;
|
|
65
|
-
intervalMs: number;
|
|
66
|
-
_accumMs: number;
|
|
67
|
-
_last?: number;
|
|
68
|
-
};
|
|
69
|
-
export declare const Step: {
|
|
70
|
-
init(length: number, intervalMs: number, startIndex?: number): Stepper;
|
|
71
|
-
tick(s: Stepper, nowMs: number): Stepper;
|
|
72
|
-
};
|
|
73
|
-
//# sourceMappingURL=spring.d.ts.map
|
package/dist/spring.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spring.d.ts","sourceRoot":"","sources":["../src/spring.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAGhE,OAAO,EAA2B,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAIlG,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG;IACvC,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0CAA0C;IAC1C,OAAO,CAAC,EAAE,YAAY,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC9B,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACtC,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACtC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,YAAY,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,gBAAgB,CAAA;AAE3D,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG;IAC9C,EAAE,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;CAChC,CAAA;AAID,wBAAgB,cAAc,CAAC,CAAC,EAAE,SAAS,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAIhF;AAwHD,MAAM,MAAM,SAAS,GAAG;IAEvB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,WAAW,CAAA;IACtD,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAAA;IAC/C,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,WAAW,CAAA;IACpE,KAAK,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAAA;IAC7B,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAG9C,KAAK,EAAE;QACN,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,gBAAgB,CAAA;QAC9D,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,GAAG,gBAAgB,CAAA;QAC5D,IAAI,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,gBAAgB,CAAA;QAC9E,KAAK,CAAC,CAAC,EAAE,gBAAgB,GAAG,UAAU,CAAA;QACtC,OAAO,CAAC,CAAC,EAAE,gBAAgB,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KACnD,CAAA;IAGD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,iBAAiB,GAAG,WAAW,CAAA;IAC7D,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,iBAAiB,GAAG,gBAAgB,CAAA;IACrE,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,GAAG,gBAAgB,CAAA;IAC5D,IAAI,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,gBAAgB,CAAA;IAC9E,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,WAAW,CAAA;IACvE,OAAO,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,gBAAgB,CAAA;IACjF,IAAI,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAAA;IAC5B,IAAI,CAAC,CAAC,EAAE,gBAAgB,GAAG,UAAU,CAAA;IACrC,SAAS,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAChD,SAAS,CAAC,CAAC,EAAE,gBAAgB,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrD,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,SAgBpB,CAAA;AAID,MAAM,MAAM,OAAO,GAAG;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,eAAO,MAAM,IAAI;iBACH,MAAM,cAAc,MAAM,wBAAmB,OAAO;YAQzD,OAAO,SAAS,MAAM,GAAG,OAAO;CAUxC,CAAA"}
|