@flyingrobots/bijou-tui 0.10.0 → 1.0.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/dist/accordion.d.ts +46 -5
- package/dist/accordion.d.ts.map +1 -1
- package/dist/accordion.js +41 -5
- package/dist/accordion.js.map +1 -1
- package/dist/animate.d.ts +30 -0
- package/dist/animate.d.ts.map +1 -1
- package/dist/animate.js +33 -0
- package/dist/animate.js.map +1 -1
- package/dist/browsable-list.d.ts +67 -4
- package/dist/browsable-list.d.ts.map +1 -1
- package/dist/browsable-list.js +49 -4
- package/dist/browsable-list.js.map +1 -1
- package/dist/canvas.d.ts +13 -4
- package/dist/canvas.d.ts.map +1 -1
- package/dist/canvas.js +9 -3
- package/dist/canvas.js.map +1 -1
- package/dist/command-palette.d.ts +67 -6
- package/dist/command-palette.d.ts.map +1 -1
- package/dist/command-palette.js +67 -6
- package/dist/command-palette.js.map +1 -1
- package/dist/commands.d.ts +32 -3
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +32 -3
- package/dist/commands.js.map +1 -1
- package/dist/driver.d.ts +14 -0
- package/dist/driver.d.ts.map +1 -1
- package/dist/driver.js +7 -0
- package/dist/driver.js.map +1 -1
- package/dist/eventbus.d.ts +43 -6
- package/dist/eventbus.d.ts.map +1 -1
- package/dist/eventbus.js +9 -0
- package/dist/eventbus.js.map +1 -1
- package/dist/file-picker.d.ts +56 -4
- package/dist/file-picker.d.ts.map +1 -1
- package/dist/file-picker.js +52 -4
- package/dist/file-picker.js.map +1 -1
- package/dist/flex.d.ts +17 -0
- package/dist/flex.d.ts.map +1 -1
- package/dist/flex.js +106 -12
- package/dist/flex.js.map +1 -1
- package/dist/help.d.ts +16 -1
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +13 -0
- package/dist/help.js.map +1 -1
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/inputstack.d.ts +32 -4
- package/dist/inputstack.d.ts.map +1 -1
- package/dist/inputstack.js +11 -0
- package/dist/inputstack.js.map +1 -1
- package/dist/keybindings.d.ts +106 -14
- package/dist/keybindings.d.ts.map +1 -1
- package/dist/keybindings.js +28 -2
- package/dist/keybindings.js.map +1 -1
- package/dist/keys.d.ts +24 -8
- package/dist/keys.d.ts.map +1 -1
- package/dist/keys.js +34 -9
- package/dist/keys.js.map +1 -1
- package/dist/layout.d.ts +26 -0
- package/dist/layout.d.ts.map +1 -1
- package/dist/layout.js +25 -1
- package/dist/layout.js.map +1 -1
- package/dist/navigable-table.d.ts +48 -4
- package/dist/navigable-table.d.ts.map +1 -1
- package/dist/navigable-table.js +44 -4
- package/dist/navigable-table.js.map +1 -1
- package/dist/overlay.d.ts +110 -3
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +87 -7
- package/dist/overlay.js.map +1 -1
- package/dist/pager.d.ts +66 -7
- package/dist/pager.d.ts.map +1 -1
- package/dist/pager.js +56 -7
- package/dist/pager.js.map +1 -1
- package/dist/panels.d.ts +55 -0
- package/dist/panels.d.ts.map +1 -1
- package/dist/panels.js +11 -0
- package/dist/panels.js.map +1 -1
- package/dist/runtime.d.ts +6 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +6 -0
- package/dist/runtime.js.map +1 -1
- package/dist/screen.d.ts +37 -3
- package/dist/screen.d.ts.map +1 -1
- package/dist/screen.js +37 -3
- package/dist/screen.js.map +1 -1
- package/dist/spring.d.ts +56 -7
- package/dist/spring.d.ts.map +1 -1
- package/dist/spring.js +44 -7
- package/dist/spring.js.map +1 -1
- package/dist/status-bar.d.ts +15 -2
- package/dist/status-bar.d.ts.map +1 -1
- package/dist/status-bar.js +9 -0
- package/dist/status-bar.js.map +1 -1
- package/dist/timeline.d.ts +68 -5
- package/dist/timeline.d.ts.map +1 -1
- package/dist/timeline.js +33 -0
- package/dist/timeline.js.map +1 -1
- package/dist/types.d.ts +86 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +27 -3
- package/dist/types.js.map +1 -1
- package/dist/viewport.d.ts +71 -11
- package/dist/viewport.d.ts.map +1 -1
- package/dist/viewport.js +79 -11
- package/dist/viewport.js.map +1 -1
- package/package.json +2 -2
package/dist/spring.d.ts
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Inspired by react-spring and GSAP spring physics.
|
|
9
9
|
*/
|
|
10
|
+
/** Physics parameters for a damped harmonic oscillator spring. */
|
|
10
11
|
export interface SpringConfig {
|
|
11
12
|
/** Spring stiffness (tension). Higher = snappier. Default: 170 */
|
|
12
13
|
readonly stiffness: number;
|
|
@@ -17,6 +18,12 @@ export interface SpringConfig {
|
|
|
17
18
|
/** Value threshold to consider the spring settled. Default: 0.01 */
|
|
18
19
|
readonly precision: number;
|
|
19
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Built-in spring presets covering common motion styles.
|
|
23
|
+
*
|
|
24
|
+
* Use a preset name (e.g. `'wobbly'`) anywhere a {@link SpringConfig}
|
|
25
|
+
* or {@link SpringPreset} is accepted.
|
|
26
|
+
*/
|
|
20
27
|
export declare const SPRING_PRESETS: {
|
|
21
28
|
/** Balanced default — smooth with a hint of bounce */
|
|
22
29
|
readonly default: {
|
|
@@ -61,7 +68,9 @@ export declare const SPRING_PRESETS: {
|
|
|
61
68
|
readonly precision: 0.01;
|
|
62
69
|
};
|
|
63
70
|
};
|
|
71
|
+
/** Name of a built-in spring preset from {@link SPRING_PRESETS}. */
|
|
64
72
|
export type SpringPreset = keyof typeof SPRING_PRESETS;
|
|
73
|
+
/** Snapshot of a running spring animation at a single point in time. */
|
|
65
74
|
export interface SpringState {
|
|
66
75
|
/** Current animated value */
|
|
67
76
|
readonly value: number;
|
|
@@ -73,33 +82,65 @@ export interface SpringState {
|
|
|
73
82
|
/**
|
|
74
83
|
* Advance a spring by one time step using semi-implicit Euler integration.
|
|
75
84
|
*
|
|
76
|
-
* @param state Current spring state
|
|
77
|
-
* @param target Target value the spring is approaching
|
|
78
|
-
* @param config Spring physics parameters
|
|
79
|
-
* @param dt Time step in seconds (e.g. 1/60 for 60fps)
|
|
85
|
+
* @param state - Current spring state.
|
|
86
|
+
* @param target - Target value the spring is approaching.
|
|
87
|
+
* @param config - Spring physics parameters.
|
|
88
|
+
* @param dt - Time step in seconds (e.g. 1/60 for 60fps).
|
|
89
|
+
* @returns A new spring state with updated value, velocity, and done flag.
|
|
80
90
|
*/
|
|
81
91
|
export declare function springStep(state: SpringState, target: number, config: SpringConfig, dt: number): SpringState;
|
|
82
92
|
/**
|
|
83
93
|
* Create a fresh spring state at a given starting value.
|
|
94
|
+
*
|
|
95
|
+
* @param value - The initial position of the spring.
|
|
96
|
+
* @returns A spring state with zero velocity and `done` set to false.
|
|
84
97
|
*/
|
|
85
98
|
export declare function createSpringState(value: number): SpringState;
|
|
86
99
|
/**
|
|
87
100
|
* Resolve a preset name or config object to a full SpringConfig.
|
|
101
|
+
*
|
|
102
|
+
* @param config - A preset name, partial config, or undefined for the default.
|
|
103
|
+
* @returns A complete {@link SpringConfig} with all fields populated.
|
|
88
104
|
*/
|
|
89
105
|
export declare function resolveSpringConfig(config?: Partial<SpringConfig> | SpringPreset): SpringConfig;
|
|
106
|
+
/**
|
|
107
|
+
* An easing function that maps a normalized progress `t` (0..1) to a
|
|
108
|
+
* transformed value, controlling the acceleration curve of a tween.
|
|
109
|
+
*
|
|
110
|
+
* @param t - Normalized time in the range [0, 1].
|
|
111
|
+
* @returns The eased value.
|
|
112
|
+
*/
|
|
90
113
|
export type EasingFn = (t: number) => number;
|
|
114
|
+
/**
|
|
115
|
+
* Built-in easing functions for tween-style animations.
|
|
116
|
+
*
|
|
117
|
+
* Each function accepts a normalized time `t` in [0, 1] and returns
|
|
118
|
+
* the eased value. Quadratic, cubic, and quartic variants are provided
|
|
119
|
+
* in ease-in, ease-out, and ease-in-out forms.
|
|
120
|
+
*/
|
|
91
121
|
export declare const EASINGS: {
|
|
122
|
+
/** Linear interpolation (no easing). */
|
|
92
123
|
readonly linear: (t: number) => number;
|
|
124
|
+
/** Quadratic ease-in (accelerating). */
|
|
93
125
|
readonly easeIn: (t: number) => number;
|
|
126
|
+
/** Quadratic ease-out (decelerating). */
|
|
94
127
|
readonly easeOut: (t: number) => number;
|
|
128
|
+
/** Quadratic ease-in-out (accelerate then decelerate). */
|
|
95
129
|
readonly easeInOut: (t: number) => number;
|
|
130
|
+
/** Cubic ease-in (accelerating). */
|
|
96
131
|
readonly easeInCubic: (t: number) => number;
|
|
132
|
+
/** Cubic ease-out (decelerating). */
|
|
97
133
|
readonly easeOutCubic: (t: number) => number;
|
|
134
|
+
/** Cubic ease-in-out (accelerate then decelerate). */
|
|
98
135
|
readonly easeInOutCubic: (t: number) => number;
|
|
136
|
+
/** Quartic ease-in (accelerating). */
|
|
99
137
|
readonly easeInQuart: (t: number) => number;
|
|
138
|
+
/** Quartic ease-out (decelerating). */
|
|
100
139
|
readonly easeOutQuart: (t: number) => number;
|
|
140
|
+
/** Quartic ease-in-out (accelerate then decelerate). */
|
|
101
141
|
readonly easeInOutQuart: (t: number) => number;
|
|
102
142
|
};
|
|
143
|
+
/** Configuration for a duration-based tween animation. */
|
|
103
144
|
export interface TweenConfig {
|
|
104
145
|
/** Start value. Default: 0 */
|
|
105
146
|
readonly from: number;
|
|
@@ -110,6 +151,7 @@ export interface TweenConfig {
|
|
|
110
151
|
/** Easing function. Default: easeOutCubic */
|
|
111
152
|
readonly ease: EasingFn;
|
|
112
153
|
}
|
|
154
|
+
/** Immutable snapshot of a running tween animation. */
|
|
113
155
|
export interface TweenState {
|
|
114
156
|
/** Current animated value */
|
|
115
157
|
readonly value: number;
|
|
@@ -121,17 +163,24 @@ export interface TweenState {
|
|
|
121
163
|
/**
|
|
122
164
|
* Advance a tween by a time step.
|
|
123
165
|
*
|
|
124
|
-
* @param state Current tween state
|
|
125
|
-
* @param config Tween parameters
|
|
126
|
-
* @param dtMs Time step in milliseconds
|
|
166
|
+
* @param state - Current tween state.
|
|
167
|
+
* @param config - Tween parameters (from, to, duration, ease).
|
|
168
|
+
* @param dtMs - Time step in milliseconds.
|
|
169
|
+
* @returns A new tween state with updated value, elapsed time, and done flag.
|
|
127
170
|
*/
|
|
128
171
|
export declare function tweenStep(state: TweenState, config: TweenConfig, dtMs: number): TweenState;
|
|
129
172
|
/**
|
|
130
173
|
* Create a fresh tween state.
|
|
174
|
+
*
|
|
175
|
+
* @param from - The starting value of the tween.
|
|
176
|
+
* @returns A tween state with zero elapsed time and `done` set to false.
|
|
131
177
|
*/
|
|
132
178
|
export declare function createTweenState(from: number): TweenState;
|
|
133
179
|
/**
|
|
134
180
|
* Resolve partial tween config to full config with defaults.
|
|
181
|
+
*
|
|
182
|
+
* @param config - Partial tween config; `duration` is required, others default.
|
|
183
|
+
* @returns A complete {@link TweenConfig} with all fields populated.
|
|
135
184
|
*/
|
|
136
185
|
export declare function resolveTweenConfig(config: Partial<TweenConfig> & {
|
|
137
186
|
duration: number;
|
package/dist/spring.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spring.d.ts","sourceRoot":"","sources":["../src/spring.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,MAAM,WAAW,YAAY;IAC3B,kEAAkE;IAClE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,iEAAiE;IACjE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,cAAc;IACzB,sDAAsD;;;;;;;IAEtD,gDAAgD;;;;;;;IAEhD,gDAAgD;;;;;;;IAEhD,+CAA+C;;;;;;;IAE/C,yCAAyC;;;;;;;IAEzC,uCAAuC;;;;;;;CAEQ,CAAC;AAElD,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,cAAc,CAAC;AAMvD,MAAM,WAAW,WAAW;IAC1B,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,uBAAuB;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAMD
|
|
1
|
+
{"version":3,"file":"spring.d.ts","sourceRoot":"","sources":["../src/spring.ts"],"names":[],"mappings":"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"}
|
package/dist/spring.js
CHANGED
|
@@ -7,6 +7,12 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Inspired by react-spring and GSAP spring physics.
|
|
9
9
|
*/
|
|
10
|
+
/**
|
|
11
|
+
* Built-in spring presets covering common motion styles.
|
|
12
|
+
*
|
|
13
|
+
* Use a preset name (e.g. `'wobbly'`) anywhere a {@link SpringConfig}
|
|
14
|
+
* or {@link SpringPreset} is accepted.
|
|
15
|
+
*/
|
|
10
16
|
export const SPRING_PRESETS = {
|
|
11
17
|
/** Balanced default — smooth with a hint of bounce */
|
|
12
18
|
default: { stiffness: 170, damping: 26, mass: 1, precision: 0.01 },
|
|
@@ -27,10 +33,11 @@ export const SPRING_PRESETS = {
|
|
|
27
33
|
/**
|
|
28
34
|
* Advance a spring by one time step using semi-implicit Euler integration.
|
|
29
35
|
*
|
|
30
|
-
* @param state Current spring state
|
|
31
|
-
* @param target Target value the spring is approaching
|
|
32
|
-
* @param config Spring physics parameters
|
|
33
|
-
* @param dt Time step in seconds (e.g. 1/60 for 60fps)
|
|
36
|
+
* @param state - Current spring state.
|
|
37
|
+
* @param target - Target value the spring is approaching.
|
|
38
|
+
* @param config - Spring physics parameters.
|
|
39
|
+
* @param dt - Time step in seconds (e.g. 1/60 for 60fps).
|
|
40
|
+
* @returns A new spring state with updated value, velocity, and done flag.
|
|
34
41
|
*/
|
|
35
42
|
export function springStep(state, target, config, dt) {
|
|
36
43
|
const { stiffness, damping, mass, precision } = config;
|
|
@@ -45,12 +52,18 @@ export function springStep(state, target, config, dt) {
|
|
|
45
52
|
}
|
|
46
53
|
/**
|
|
47
54
|
* Create a fresh spring state at a given starting value.
|
|
55
|
+
*
|
|
56
|
+
* @param value - The initial position of the spring.
|
|
57
|
+
* @returns A spring state with zero velocity and `done` set to false.
|
|
48
58
|
*/
|
|
49
59
|
export function createSpringState(value) {
|
|
50
60
|
return { value, velocity: 0, done: false };
|
|
51
61
|
}
|
|
52
62
|
/**
|
|
53
63
|
* Resolve a preset name or config object to a full SpringConfig.
|
|
64
|
+
*
|
|
65
|
+
* @param config - A preset name, partial config, or undefined for the default.
|
|
66
|
+
* @returns A complete {@link SpringConfig} with all fields populated.
|
|
54
67
|
*/
|
|
55
68
|
export function resolveSpringConfig(config) {
|
|
56
69
|
if (config === undefined)
|
|
@@ -59,24 +72,42 @@ export function resolveSpringConfig(config) {
|
|
|
59
72
|
return SPRING_PRESETS[config];
|
|
60
73
|
return { ...SPRING_PRESETS.default, ...config };
|
|
61
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Built-in easing functions for tween-style animations.
|
|
77
|
+
*
|
|
78
|
+
* Each function accepts a normalized time `t` in [0, 1] and returns
|
|
79
|
+
* the eased value. Quadratic, cubic, and quartic variants are provided
|
|
80
|
+
* in ease-in, ease-out, and ease-in-out forms.
|
|
81
|
+
*/
|
|
62
82
|
export const EASINGS = {
|
|
83
|
+
/** Linear interpolation (no easing). */
|
|
63
84
|
linear: (t) => t,
|
|
85
|
+
/** Quadratic ease-in (accelerating). */
|
|
64
86
|
easeIn: (t) => t * t,
|
|
87
|
+
/** Quadratic ease-out (decelerating). */
|
|
65
88
|
easeOut: (t) => t * (2 - t),
|
|
89
|
+
/** Quadratic ease-in-out (accelerate then decelerate). */
|
|
66
90
|
easeInOut: (t) => (t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t),
|
|
91
|
+
/** Cubic ease-in (accelerating). */
|
|
67
92
|
easeInCubic: (t) => t * t * t,
|
|
93
|
+
/** Cubic ease-out (decelerating). */
|
|
68
94
|
easeOutCubic: (t) => --t * t * t + 1,
|
|
95
|
+
/** Cubic ease-in-out (accelerate then decelerate). */
|
|
69
96
|
easeInOutCubic: (t) => t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,
|
|
97
|
+
/** Quartic ease-in (accelerating). */
|
|
70
98
|
easeInQuart: (t) => t * t * t * t,
|
|
99
|
+
/** Quartic ease-out (decelerating). */
|
|
71
100
|
easeOutQuart: (t) => 1 - --t * t * t * t,
|
|
101
|
+
/** Quartic ease-in-out (accelerate then decelerate). */
|
|
72
102
|
easeInOutQuart: (t) => t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t,
|
|
73
103
|
};
|
|
74
104
|
/**
|
|
75
105
|
* Advance a tween by a time step.
|
|
76
106
|
*
|
|
77
|
-
* @param state Current tween state
|
|
78
|
-
* @param config Tween parameters
|
|
79
|
-
* @param dtMs Time step in milliseconds
|
|
107
|
+
* @param state - Current tween state.
|
|
108
|
+
* @param config - Tween parameters (from, to, duration, ease).
|
|
109
|
+
* @param dtMs - Time step in milliseconds.
|
|
110
|
+
* @returns A new tween state with updated value, elapsed time, and done flag.
|
|
80
111
|
*/
|
|
81
112
|
export function tweenStep(state, config, dtMs) {
|
|
82
113
|
const elapsed = Math.min(state.elapsed + dtMs, config.duration);
|
|
@@ -88,12 +119,18 @@ export function tweenStep(state, config, dtMs) {
|
|
|
88
119
|
}
|
|
89
120
|
/**
|
|
90
121
|
* Create a fresh tween state.
|
|
122
|
+
*
|
|
123
|
+
* @param from - The starting value of the tween.
|
|
124
|
+
* @returns A tween state with zero elapsed time and `done` set to false.
|
|
91
125
|
*/
|
|
92
126
|
export function createTweenState(from) {
|
|
93
127
|
return { value: from, elapsed: 0, done: false };
|
|
94
128
|
}
|
|
95
129
|
/**
|
|
96
130
|
* Resolve partial tween config to full config with defaults.
|
|
131
|
+
*
|
|
132
|
+
* @param config - Partial tween config; `duration` is required, others default.
|
|
133
|
+
* @returns A complete {@link TweenConfig} with all fields populated.
|
|
97
134
|
*/
|
|
98
135
|
export function resolveTweenConfig(config) {
|
|
99
136
|
return {
|
package/dist/spring.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spring.js","sourceRoot":"","sources":["../src/spring.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"spring.js","sourceRoot":"","sources":["../src/spring.ts"],"names":[],"mappings":"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"}
|
package/dist/status-bar.d.ts
CHANGED
|
@@ -4,14 +4,27 @@
|
|
|
4
4
|
* Sections are laid out with priority: left > right > center.
|
|
5
5
|
* On overlap, center is truncated first, then right.
|
|
6
6
|
*/
|
|
7
|
-
|
|
7
|
+
/** Options for rendering a status bar. */
|
|
8
8
|
export interface StatusBarOptions {
|
|
9
|
+
/** Content aligned to the left edge. */
|
|
9
10
|
readonly left?: string;
|
|
11
|
+
/** Content centered in the bar. */
|
|
10
12
|
readonly center?: string;
|
|
13
|
+
/** Content aligned to the right edge. */
|
|
11
14
|
readonly right?: string;
|
|
15
|
+
/** Total width of the bar in columns. */
|
|
12
16
|
readonly width: number;
|
|
17
|
+
/** Character used to fill empty space (default: `' '`). */
|
|
13
18
|
readonly fillChar?: string;
|
|
14
|
-
readonly ctx?: BijouContext;
|
|
15
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Render a single-line status bar with left, center, and right sections.
|
|
22
|
+
*
|
|
23
|
+
* Layout priority: left > right > center. On overlap, center is truncated
|
|
24
|
+
* first, then right. Sections may contain ANSI escape codes.
|
|
25
|
+
*
|
|
26
|
+
* @param options - Bar content, width, and fill character.
|
|
27
|
+
* @returns Rendered status bar string of exactly `width` visible characters.
|
|
28
|
+
*/
|
|
16
29
|
export declare function statusBar(options: StatusBarOptions): string;
|
|
17
30
|
//# sourceMappingURL=status-bar.d.ts.map
|
package/dist/status-bar.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-bar.d.ts","sourceRoot":"","sources":["../src/status-bar.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"status-bar.d.ts","sourceRoot":"","sources":["../src/status-bar.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,yCAAyC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAMD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAgH3D"}
|
package/dist/status-bar.js
CHANGED
|
@@ -8,6 +8,15 @@ import { visibleLength, clipToWidth } from './viewport.js';
|
|
|
8
8
|
// ---------------------------------------------------------------------------
|
|
9
9
|
// statusBar()
|
|
10
10
|
// ---------------------------------------------------------------------------
|
|
11
|
+
/**
|
|
12
|
+
* Render a single-line status bar with left, center, and right sections.
|
|
13
|
+
*
|
|
14
|
+
* Layout priority: left > right > center. On overlap, center is truncated
|
|
15
|
+
* first, then right. Sections may contain ANSI escape codes.
|
|
16
|
+
*
|
|
17
|
+
* @param options - Bar content, width, and fill character.
|
|
18
|
+
* @returns Rendered status bar string of exactly `width` visible characters.
|
|
19
|
+
*/
|
|
11
20
|
export function statusBar(options) {
|
|
12
21
|
const { left = '', center = '', right = '', width, fillChar: rawFillChar, } = options;
|
|
13
22
|
if (width <= 0)
|
package/dist/status-bar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-bar.js","sourceRoot":"","sources":["../src/status-bar.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"status-bar.js","sourceRoot":"","sources":["../src/status-bar.ts"],"names":[],"mappings":"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"}
|
package/dist/timeline.d.ts
CHANGED
|
@@ -29,19 +29,29 @@ import { type SpringConfig, type SpringPreset, type SpringState, type EasingFn,
|
|
|
29
29
|
export type Position = number | '<' | `<+=${string}` | `+=${string}` | `-=${string}` | `>${string}` | string;
|
|
30
30
|
/** Spring track configuration. */
|
|
31
31
|
export interface SpringTrackDef {
|
|
32
|
+
/** Animation type (defaults to `'spring'` when omitted). */
|
|
32
33
|
readonly type?: 'spring';
|
|
34
|
+
/** Starting value. */
|
|
33
35
|
readonly from: number;
|
|
36
|
+
/** Target value. */
|
|
34
37
|
readonly to: number;
|
|
38
|
+
/** Spring physics parameters or a named preset. */
|
|
35
39
|
readonly spring?: Partial<SpringConfig> | SpringPreset;
|
|
36
40
|
}
|
|
37
41
|
/** Tween track configuration. */
|
|
38
42
|
export interface TweenTrackDef {
|
|
43
|
+
/** Animation type — must be `'tween'`. */
|
|
39
44
|
readonly type: 'tween';
|
|
45
|
+
/** Starting value. */
|
|
40
46
|
readonly from: number;
|
|
47
|
+
/** Target value. */
|
|
41
48
|
readonly to: number;
|
|
49
|
+
/** Duration in milliseconds. */
|
|
42
50
|
readonly duration: number;
|
|
51
|
+
/** Easing function (defaults to `easeOutCubic`). */
|
|
43
52
|
readonly ease?: EasingFn;
|
|
44
53
|
}
|
|
54
|
+
/** Discriminated union of spring and tween track definitions. */
|
|
45
55
|
export type TrackDef = SpringTrackDef | TweenTrackDef;
|
|
46
56
|
/** Opaque timeline state — pass between step() calls. */
|
|
47
57
|
export interface TimelineState {
|
|
@@ -50,15 +60,25 @@ export interface TimelineState {
|
|
|
50
60
|
/** Per-track animation state. */
|
|
51
61
|
readonly tracks: Readonly<Record<string, TrackState>>;
|
|
52
62
|
}
|
|
53
|
-
/**
|
|
63
|
+
/**
|
|
64
|
+
* Per-track animation state stored inside `TimelineState`.
|
|
65
|
+
* @internal
|
|
66
|
+
*/
|
|
54
67
|
interface TrackState {
|
|
68
|
+
/** Animation engine type. */
|
|
55
69
|
readonly type: 'spring' | 'tween';
|
|
70
|
+
/** Whether the track has received its first step. */
|
|
56
71
|
readonly started: boolean;
|
|
72
|
+
/** Spring-specific simulation state (present when `type === 'spring'`). */
|
|
57
73
|
readonly spring?: SpringState;
|
|
74
|
+
/** Tween-specific simulation state (present when `type === 'tween'`). */
|
|
58
75
|
readonly tween?: TweenState;
|
|
76
|
+
/** Current interpolated value. */
|
|
59
77
|
readonly currentValue: number;
|
|
78
|
+
/** Whether the track has settled at its target. */
|
|
60
79
|
readonly done: boolean;
|
|
61
80
|
}
|
|
81
|
+
/** Fluent builder for constructing a timeline definition. */
|
|
62
82
|
export interface TimelineBuilder {
|
|
63
83
|
/**
|
|
64
84
|
* Add an animation track.
|
|
@@ -67,6 +87,12 @@ export interface TimelineBuilder {
|
|
|
67
87
|
* .add('x', { from: 0, to: 100, spring: 'wobbly' })
|
|
68
88
|
* .add('opacity', { type: 'tween', from: 0, to: 1, duration: 300 }, '<')
|
|
69
89
|
* ```
|
|
90
|
+
*
|
|
91
|
+
* @param name - Unique track identifier used to read values later.
|
|
92
|
+
* @param def - Spring or tween track definition.
|
|
93
|
+
* @param position - When the track starts (default: after previous item ends).
|
|
94
|
+
* @returns The builder for chaining.
|
|
95
|
+
* @throws Error (at build time) if a duplicate track name is added.
|
|
70
96
|
*/
|
|
71
97
|
add(name: string, def: TrackDef, position?: Position): TimelineBuilder;
|
|
72
98
|
/**
|
|
@@ -76,6 +102,9 @@ export interface TimelineBuilder {
|
|
|
76
102
|
* .label('reveal')
|
|
77
103
|
* .add('scale', { type: 'tween', from: 0, to: 1, duration: 200 }, 'reveal')
|
|
78
104
|
* ```
|
|
105
|
+
*
|
|
106
|
+
* @param name - Label identifier, referenced by later position specifiers.
|
|
107
|
+
* @returns The builder for chaining.
|
|
79
108
|
*/
|
|
80
109
|
label(name: string): TimelineBuilder;
|
|
81
110
|
/**
|
|
@@ -84,27 +113,59 @@ export interface TimelineBuilder {
|
|
|
84
113
|
* ```ts
|
|
85
114
|
* .call('onHalfway', '+=500')
|
|
86
115
|
* ```
|
|
116
|
+
*
|
|
117
|
+
* @param name - Callback identifier returned by `firedCallbacks()`.
|
|
118
|
+
* @param position - When the callback fires (default: after previous item ends).
|
|
119
|
+
* @returns The builder for chaining.
|
|
87
120
|
*/
|
|
88
121
|
call(name: string, position?: Position): TimelineBuilder;
|
|
89
|
-
/**
|
|
122
|
+
/**
|
|
123
|
+
* Compile the timeline into an immutable Timeline object.
|
|
124
|
+
*
|
|
125
|
+
* @returns Compiled {@link Timeline} ready for stepping.
|
|
126
|
+
* @throws Error if a position references an unknown label or has invalid syntax.
|
|
127
|
+
*/
|
|
90
128
|
build(): Timeline;
|
|
91
129
|
}
|
|
92
130
|
/** Compiled timeline — step forward, read values, check completion. */
|
|
93
131
|
export interface Timeline {
|
|
94
|
-
/**
|
|
132
|
+
/**
|
|
133
|
+
* Create the initial timeline state.
|
|
134
|
+
*
|
|
135
|
+
* @returns Fresh timeline state with all tracks at their starting values.
|
|
136
|
+
*/
|
|
95
137
|
init(): TimelineState;
|
|
96
138
|
/**
|
|
97
139
|
* Advance the timeline by `dt` seconds.
|
|
98
140
|
* Returns a new state (pure — no mutation).
|
|
141
|
+
*
|
|
142
|
+
* @param state - Current timeline state.
|
|
143
|
+
* @param dt - Time step in seconds (e.g. 1/60 for 60 fps). Must be finite and non-negative.
|
|
144
|
+
* @returns Updated timeline state with all active tracks advanced.
|
|
145
|
+
* @throws Error if `dt` is negative, `NaN`, or infinite.
|
|
99
146
|
*/
|
|
100
147
|
step(state: TimelineState, dt: number): TimelineState;
|
|
101
|
-
/**
|
|
148
|
+
/**
|
|
149
|
+
* Read all current track values as a name-to-number record.
|
|
150
|
+
*
|
|
151
|
+
* @param state - Current timeline state.
|
|
152
|
+
* @returns Record mapping each track name to its current value.
|
|
153
|
+
*/
|
|
102
154
|
values(state: TimelineState): Record<string, number>;
|
|
103
|
-
/**
|
|
155
|
+
/**
|
|
156
|
+
* True when every track has settled.
|
|
157
|
+
*
|
|
158
|
+
* @param state - Current timeline state.
|
|
159
|
+
* @returns Whether all tracks have reached their target values.
|
|
160
|
+
*/
|
|
104
161
|
done(state: TimelineState): boolean;
|
|
105
162
|
/**
|
|
106
163
|
* Return callback names that fired between `prev` and `next` states.
|
|
107
164
|
* A callback fires when the timeline's elapsed time crosses its trigger point.
|
|
165
|
+
*
|
|
166
|
+
* @param prev - Timeline state before the step.
|
|
167
|
+
* @param next - Timeline state after the step.
|
|
168
|
+
* @returns Array of callback names that fired during the interval.
|
|
108
169
|
*/
|
|
109
170
|
firedCallbacks(prev: TimelineState, next: TimelineState): string[];
|
|
110
171
|
/** Total estimated duration in milliseconds. */
|
|
@@ -121,6 +182,8 @@ export interface Timeline {
|
|
|
121
182
|
* .add('opacity', { type: 'tween', from: 0, to: 1, duration: 300 }, '<')
|
|
122
183
|
* .build();
|
|
123
184
|
* ```
|
|
185
|
+
*
|
|
186
|
+
* @returns A new {@link TimelineBuilder} for fluent timeline construction.
|
|
124
187
|
*/
|
|
125
188
|
export declare function timeline(): TimelineBuilder;
|
|
126
189
|
export {};
|
package/dist/timeline.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,QAAQ,EAQb,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAMrB,wEAAwE;AACxE,MAAM,MAAM,QAAQ,GAChB,MAAM,GACN,GAAG,GACH,MAAM,MAAM,EAAE,GACd,KAAK,MAAM,EAAE,GACb,KAAK,MAAM,EAAE,GACb,IAAI,MAAM,EAAE,GACZ,MAAM,CAAC;AAEX,kCAAkC;AAClC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC;CACxD;AAED,iCAAiC;AACjC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;CAC1B;AAED,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,aAAa,CAAC;AAEtD,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC5B,oCAAoC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,iCAAiC;IACjC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;CACvD;AAED
|
|
1
|
+
{"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"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"}
|
package/dist/timeline.js
CHANGED
|
@@ -28,6 +28,14 @@ import { springStep, createSpringState, resolveSpringConfig, tweenStep, createTw
|
|
|
28
28
|
// ---------------------------------------------------------------------------
|
|
29
29
|
// Spring duration estimation
|
|
30
30
|
// ---------------------------------------------------------------------------
|
|
31
|
+
/**
|
|
32
|
+
* Estimate how long a spring animation takes to settle by simulating it.
|
|
33
|
+
*
|
|
34
|
+
* @param from - Starting value.
|
|
35
|
+
* @param to - Target value.
|
|
36
|
+
* @param config - Spring physics configuration.
|
|
37
|
+
* @returns Estimated duration in milliseconds (capped at 30 seconds).
|
|
38
|
+
*/
|
|
31
39
|
function estimateSpringDuration(from, to, config) {
|
|
32
40
|
let state = createSpringState(from);
|
|
33
41
|
const dt = 1 / 60;
|
|
@@ -39,6 +47,14 @@ function estimateSpringDuration(from, to, config) {
|
|
|
39
47
|
}
|
|
40
48
|
return steps * dt * 1000;
|
|
41
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Resolve a position specifier to an absolute time in milliseconds.
|
|
52
|
+
*
|
|
53
|
+
* @param pos - Position specifier (number, relative offset, or label reference).
|
|
54
|
+
* @param cursor - Current cursor info with previous start/end and known labels.
|
|
55
|
+
* @returns Absolute time in milliseconds.
|
|
56
|
+
* @throws Error if the position references an unknown label or has invalid syntax.
|
|
57
|
+
*/
|
|
42
58
|
function resolvePosition(pos, cursor) {
|
|
43
59
|
if (pos === undefined) {
|
|
44
60
|
// Default: after previous item ends
|
|
@@ -95,6 +111,8 @@ function resolvePosition(pos, cursor) {
|
|
|
95
111
|
* .add('opacity', { type: 'tween', from: 0, to: 1, duration: 300 }, '<')
|
|
96
112
|
* .build();
|
|
97
113
|
* ```
|
|
114
|
+
*
|
|
115
|
+
* @returns A new {@link TimelineBuilder} for fluent timeline construction.
|
|
98
116
|
*/
|
|
99
117
|
export function timeline() {
|
|
100
118
|
const entries = [];
|
|
@@ -120,6 +138,15 @@ export function timeline() {
|
|
|
120
138
|
// ---------------------------------------------------------------------------
|
|
121
139
|
// Compilation: resolve positions, estimate durations
|
|
122
140
|
// ---------------------------------------------------------------------------
|
|
141
|
+
/**
|
|
142
|
+
* Compile builder entries into an immutable Timeline object.
|
|
143
|
+
*
|
|
144
|
+
* Resolves all positions, estimates durations, and sorts callbacks.
|
|
145
|
+
*
|
|
146
|
+
* @param entries - Accumulated builder entries (tracks, labels, callbacks).
|
|
147
|
+
* @returns Compiled Timeline with init, step, values, done, and firedCallbacks.
|
|
148
|
+
* @throws Error if a position references an unknown label or has invalid syntax.
|
|
149
|
+
*/
|
|
123
150
|
function compile(entries) {
|
|
124
151
|
const tracks = [];
|
|
125
152
|
const callbacks = [];
|
|
@@ -168,6 +195,9 @@ function compile(entries) {
|
|
|
168
195
|
springConfig,
|
|
169
196
|
};
|
|
170
197
|
}
|
|
198
|
+
if (tracks.some(t => t.name === entry.name)) {
|
|
199
|
+
throw new Error(`Timeline: duplicate track name "${entry.name}"`);
|
|
200
|
+
}
|
|
171
201
|
tracks.push(resolved);
|
|
172
202
|
prevStartMs = startMs;
|
|
173
203
|
prevEndMs = startMs + resolved.estimatedDurationMs;
|
|
@@ -195,6 +225,9 @@ function compile(entries) {
|
|
|
195
225
|
return { elapsedMs: 0, tracks: trackStates };
|
|
196
226
|
},
|
|
197
227
|
step(state, dt) {
|
|
228
|
+
if (!Number.isFinite(dt) || dt < 0) {
|
|
229
|
+
throw new Error(`Timeline: dt must be a finite non-negative number, got ${dt}`);
|
|
230
|
+
}
|
|
198
231
|
const dtMs = dt * 1000;
|
|
199
232
|
const elapsedMs = state.elapsedMs + dtMs;
|
|
200
233
|
const nextTracks = {};
|
package/dist/timeline.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeline.js","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAKL,UAAU,EACV,iBAAiB,EACjB,mBAAmB,EACnB,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,OAAO,GAER,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"timeline.js","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"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"}
|