@kya-os/cli 1.0.0-beta.9 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -2
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +60 -15
- package/dist/commands/init.js.map +1 -1
- package/dist/components/agent-card.js +2 -2
- package/dist/components/agent-card.js.map +1 -1
- package/dist/components/agent-table.js +19 -19
- package/dist/components/agent-table.js.map +1 -1
- package/dist/components/welcome.js +1 -1
- package/dist/effects/cli-integration.js +8 -8
- package/dist/effects/cli-integration.js.map +1 -1
- package/dist/effects/config.d.ts +10 -86
- package/dist/effects/config.d.ts.map +1 -1
- package/dist/effects/config.js +18 -201
- package/dist/effects/config.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/utils/platform-detector.js +3 -3
- package/dist/utils/platform-detector.js.map +1 -1
- package/dist/utils/screen-manager.js +5 -1
- package/dist/utils/screen-manager.js.map +1 -1
- package/dist/utils/validation.d.ts +9 -0
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +3 -0
- package/dist/utils/validation.js.map +1 -1
- package/package.json +4 -3
- package/dist/effects/animation-engine.d.ts +0 -173
- package/dist/effects/animation-engine.d.ts.map +0 -1
- package/dist/effects/animation-engine.js +0 -254
- package/dist/effects/animation-engine.js.map +0 -1
- package/dist/effects/effect-runner.d.ts +0 -69
- package/dist/effects/effect-runner.d.ts.map +0 -1
- package/dist/effects/effect-runner.js +0 -255
- package/dist/effects/effect-runner.js.map +0 -1
- package/dist/effects/gradient.d.ts +0 -131
- package/dist/effects/gradient.d.ts.map +0 -1
- package/dist/effects/gradient.js +0 -236
- package/dist/effects/gradient.js.map +0 -1
- package/dist/effects/implementations/beams.d.ts +0 -80
- package/dist/effects/implementations/beams.d.ts.map +0 -1
- package/dist/effects/implementations/beams.js +0 -221
- package/dist/effects/implementations/beams.js.map +0 -1
- package/dist/effects/implementations/blackhole.d.ts +0 -98
- package/dist/effects/implementations/blackhole.d.ts.map +0 -1
- package/dist/effects/implementations/blackhole.js +0 -421
- package/dist/effects/implementations/blackhole.js.map +0 -1
- package/dist/effects/implementations/burn.d.ts +0 -74
- package/dist/effects/implementations/burn.d.ts.map +0 -1
- package/dist/effects/implementations/burn.js +0 -234
- package/dist/effects/implementations/burn.js.map +0 -1
- package/dist/effects/implementations/decrypt.d.ts +0 -115
- package/dist/effects/implementations/decrypt.d.ts.map +0 -1
- package/dist/effects/implementations/decrypt.js +0 -394
- package/dist/effects/implementations/decrypt.js.map +0 -1
- package/dist/effects/implementations/waves.d.ts +0 -78
- package/dist/effects/implementations/waves.d.ts.map +0 -1
- package/dist/effects/implementations/waves.js +0 -278
- package/dist/effects/implementations/waves.js.map +0 -1
- package/dist/effects/index.d.ts +0 -34
- package/dist/effects/index.d.ts.map +0 -1
- package/dist/effects/index.js +0 -114
- package/dist/effects/index.js.map +0 -1
- package/dist/effects/motion-engine.d.ts +0 -168
- package/dist/effects/motion-engine.d.ts.map +0 -1
- package/dist/effects/motion-engine.js +0 -353
- package/dist/effects/motion-engine.js.map +0 -1
- package/dist/effects/safe-executor.d.ts +0 -55
- package/dist/effects/safe-executor.d.ts.map +0 -1
- package/dist/effects/safe-executor.js +0 -210
- package/dist/effects/safe-executor.js.map +0 -1
- package/dist/effects/types.d.ts +0 -199
- package/dist/effects/types.d.ts.map +0 -1
- package/dist/effects/types.js +0 -80
- package/dist/effects/types.js.map +0 -1
- package/dist/effects/utils.d.ts +0 -104
- package/dist/effects/utils.d.ts.map +0 -1
- package/dist/effects/utils.js +0 -280
- package/dist/effects/utils.js.map +0 -1
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Effect Runner
|
|
3
|
-
* Orchestrates terminal effects with proper management
|
|
4
|
-
*/
|
|
5
|
-
import { ANSI, getTerminalDimensions, calculateFrameDelay } from "./utils.js";
|
|
6
|
-
import { getConfig } from "./config.js";
|
|
7
|
-
import * as readline from "readline";
|
|
8
|
-
import { stdout } from "process";
|
|
9
|
-
/**
|
|
10
|
-
* Effect runner for executing terminal effects
|
|
11
|
-
*/
|
|
12
|
-
export class EffectRunner {
|
|
13
|
-
constructor() {
|
|
14
|
-
this.isRunning = false;
|
|
15
|
-
this.currentEffect = null;
|
|
16
|
-
this.animationHandle = null;
|
|
17
|
-
this.terminalState = {
|
|
18
|
-
cursorHidden: false,
|
|
19
|
-
originalDimensions: getTerminalDimensions(),
|
|
20
|
-
cleanupHandlers: [],
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Run an effect
|
|
25
|
-
*/
|
|
26
|
-
async run(options) {
|
|
27
|
-
if (this.isRunning) {
|
|
28
|
-
throw new Error("Another effect is already running");
|
|
29
|
-
}
|
|
30
|
-
const config = await getConfig();
|
|
31
|
-
const outputStream = options.outputStream || stdout;
|
|
32
|
-
// Check if effects are enabled or if terminal doesn't support effects
|
|
33
|
-
if (!config.enabled || !this.supportsEffects(outputStream)) {
|
|
34
|
-
// Use fallback
|
|
35
|
-
const fallbackLines = options.effect.renderFallback();
|
|
36
|
-
outputStream.write(fallbackLines.join("\n") + "\n");
|
|
37
|
-
options.onComplete?.();
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
try {
|
|
41
|
-
this.isRunning = true;
|
|
42
|
-
this.currentEffect = options.effect;
|
|
43
|
-
// Setup terminal
|
|
44
|
-
await this.setupTerminal(outputStream, options.persistent);
|
|
45
|
-
// Initialize effect
|
|
46
|
-
const effectConfig = {
|
|
47
|
-
frameRate: 30 * config.speedMultiplier,
|
|
48
|
-
useXTermColors: false,
|
|
49
|
-
noColor: false,
|
|
50
|
-
canvas: this.terminalState.originalDimensions,
|
|
51
|
-
...options.config,
|
|
52
|
-
};
|
|
53
|
-
options.effect.initialize(options.text, effectConfig);
|
|
54
|
-
// Execute with safety wrapper
|
|
55
|
-
// Since we're handling the animation loop ourselves, we bypass the executor's execute method
|
|
56
|
-
// and use the animation loop directly with try-catch for safety
|
|
57
|
-
try {
|
|
58
|
-
await this.runAnimation(options.effect, outputStream, effectConfig.frameRate, options.skipExitPrompt, options.persistent);
|
|
59
|
-
}
|
|
60
|
-
catch (animationError) {
|
|
61
|
-
// If animation fails, try fallback
|
|
62
|
-
const fallbackLines = options.effect.renderFallback();
|
|
63
|
-
outputStream.write(fallbackLines.join("\n") + "\n");
|
|
64
|
-
throw animationError;
|
|
65
|
-
}
|
|
66
|
-
// Clean up
|
|
67
|
-
await this.cleanup(outputStream, options.persistent);
|
|
68
|
-
options.onComplete?.();
|
|
69
|
-
}
|
|
70
|
-
catch (error) {
|
|
71
|
-
await this.cleanup(outputStream, options.persistent);
|
|
72
|
-
const err = error instanceof Error ? error : new Error(String(error));
|
|
73
|
-
options.onError?.(err);
|
|
74
|
-
throw err;
|
|
75
|
-
}
|
|
76
|
-
finally {
|
|
77
|
-
this.isRunning = false;
|
|
78
|
-
this.currentEffect = null;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Stop the currently running effect
|
|
83
|
-
*/
|
|
84
|
-
async stop() {
|
|
85
|
-
if (!this.isRunning || !this.currentEffect) {
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
// Cancel animation
|
|
89
|
-
if (this.animationHandle) {
|
|
90
|
-
clearTimeout(this.animationHandle);
|
|
91
|
-
this.animationHandle = null;
|
|
92
|
-
}
|
|
93
|
-
// Clean up effect
|
|
94
|
-
this.currentEffect.cleanup();
|
|
95
|
-
await this.cleanup(stdout, false);
|
|
96
|
-
this.isRunning = false;
|
|
97
|
-
this.currentEffect = null;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Check if terminal supports effects
|
|
101
|
-
*/
|
|
102
|
-
supportsEffects(stream) {
|
|
103
|
-
// Check if we have a TTY and basic terminal capabilities
|
|
104
|
-
if (!stream.isTTY)
|
|
105
|
-
return false;
|
|
106
|
-
if (!process.env.TERM || process.env.TERM === 'dumb')
|
|
107
|
-
return false;
|
|
108
|
-
// Check for common CI environments that might not support effects well
|
|
109
|
-
if (process.env.CI || process.env.GITHUB_ACTIONS)
|
|
110
|
-
return false;
|
|
111
|
-
return true;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Setup terminal for effect rendering
|
|
115
|
-
*/
|
|
116
|
-
async setupTerminal(stream, persistent) {
|
|
117
|
-
// Only use alternate screen buffer if not in persistent mode
|
|
118
|
-
if (!persistent) {
|
|
119
|
-
// Enter alternate screen buffer (prevents scrolling)
|
|
120
|
-
stream.write("\x1b[?1049h");
|
|
121
|
-
}
|
|
122
|
-
// Hide cursor
|
|
123
|
-
stream.write(ANSI.cursor.hide);
|
|
124
|
-
this.terminalState.cursorHidden = true;
|
|
125
|
-
// Clear screen
|
|
126
|
-
stream.write(ANSI.clear.screen);
|
|
127
|
-
stream.write(ANSI.cursor.home);
|
|
128
|
-
// Setup cleanup handlers
|
|
129
|
-
const handleExit = () => {
|
|
130
|
-
this.cleanup(stream, persistent).catch(() => { });
|
|
131
|
-
};
|
|
132
|
-
const handleResize = () => {
|
|
133
|
-
this.terminalState.originalDimensions = getTerminalDimensions();
|
|
134
|
-
};
|
|
135
|
-
process.on("exit", handleExit);
|
|
136
|
-
process.on("SIGINT", handleExit);
|
|
137
|
-
process.on("SIGTERM", handleExit);
|
|
138
|
-
process.stdout.on("resize", handleResize);
|
|
139
|
-
this.terminalState.cleanupHandlers.push(() => process.off("exit", handleExit), () => process.off("SIGINT", handleExit), () => process.off("SIGTERM", handleExit), () => process.stdout.off("resize", handleResize));
|
|
140
|
-
// Setup keyboard handling for cancellation
|
|
141
|
-
if (stream === stdout) {
|
|
142
|
-
readline.emitKeypressEvents(process.stdin);
|
|
143
|
-
if (process.stdin.isTTY) {
|
|
144
|
-
process.stdin.setRawMode(true);
|
|
145
|
-
}
|
|
146
|
-
const handleKeypress = async (_str, key) => {
|
|
147
|
-
if (key && (key.name === "escape" || (key.ctrl && key.name === "c") || key.name === "x" || key.name === "q")) {
|
|
148
|
-
await this.stop();
|
|
149
|
-
// Ensure we exit alternate screen
|
|
150
|
-
stream.write("\x1b[?1049l");
|
|
151
|
-
process.exit(0);
|
|
152
|
-
}
|
|
153
|
-
};
|
|
154
|
-
process.stdin.on("keypress", handleKeypress);
|
|
155
|
-
this.terminalState.cleanupHandlers.push(() => process.stdin.off("keypress", handleKeypress));
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Run the animation loop
|
|
160
|
-
*/
|
|
161
|
-
async runAnimation(effect, stream, frameRate, skipExitPrompt, persistent) {
|
|
162
|
-
const frameDelay = calculateFrameDelay(frameRate);
|
|
163
|
-
while (!effect.isComplete()) {
|
|
164
|
-
const startTime = Date.now();
|
|
165
|
-
// Render frame
|
|
166
|
-
const lines = await effect.render();
|
|
167
|
-
// Clear screen and render
|
|
168
|
-
stream.write(ANSI.cursor.home);
|
|
169
|
-
stream.write(lines.join("\n"));
|
|
170
|
-
stream.write(ANSI.clear.toEnd);
|
|
171
|
-
// Calculate actual delay needed
|
|
172
|
-
const renderTime = Date.now() - startTime;
|
|
173
|
-
const delay = Math.max(0, frameDelay - renderTime);
|
|
174
|
-
// Wait for next frame
|
|
175
|
-
if (delay > 0) {
|
|
176
|
-
await new Promise((resolve) => {
|
|
177
|
-
this.animationHandle = setTimeout(resolve, delay);
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
// Only show exit prompt if not skipped and not in persistent mode
|
|
182
|
-
if (!skipExitPrompt && !persistent) {
|
|
183
|
-
// After animation completes, show exit message
|
|
184
|
-
stream.write("\n\n");
|
|
185
|
-
stream.write("\x1b[2m"); // Dim text
|
|
186
|
-
stream.write("Press any key to exit...");
|
|
187
|
-
stream.write("\x1b[0m"); // Reset
|
|
188
|
-
stream.write("\n");
|
|
189
|
-
// Wait for keypress - ensure we're in raw mode
|
|
190
|
-
if (process.stdin.isTTY && !process.stdin.isRaw) {
|
|
191
|
-
process.stdin.setRawMode(true);
|
|
192
|
-
}
|
|
193
|
-
await new Promise((resolve) => {
|
|
194
|
-
const handleKeypress = (_str, _key) => {
|
|
195
|
-
process.stdin.off("keypress", handleKeypress);
|
|
196
|
-
resolve();
|
|
197
|
-
};
|
|
198
|
-
process.stdin.on("keypress", handleKeypress);
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
else if (persistent) {
|
|
202
|
-
// In persistent mode, render the final frame one more time to ensure it's visible
|
|
203
|
-
const finalLines = await effect.render();
|
|
204
|
-
stream.write(ANSI.cursor.home);
|
|
205
|
-
stream.write(finalLines.join("\n"));
|
|
206
|
-
stream.write(ANSI.clear.toEnd);
|
|
207
|
-
stream.write("\n");
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Clean up terminal state
|
|
212
|
-
*/
|
|
213
|
-
async cleanup(stream, persistent) {
|
|
214
|
-
// Clear animation handle
|
|
215
|
-
if (this.animationHandle) {
|
|
216
|
-
clearTimeout(this.animationHandle);
|
|
217
|
-
this.animationHandle = null;
|
|
218
|
-
}
|
|
219
|
-
// Restore cursor
|
|
220
|
-
if (this.terminalState.cursorHidden) {
|
|
221
|
-
stream.write(ANSI.cursor.show);
|
|
222
|
-
this.terminalState.cursorHidden = false;
|
|
223
|
-
}
|
|
224
|
-
// Reset terminal
|
|
225
|
-
stream.write(ANSI.reset);
|
|
226
|
-
// Only exit alternate screen buffer if not in persistent mode
|
|
227
|
-
if (!persistent) {
|
|
228
|
-
// Exit alternate screen buffer
|
|
229
|
-
stream.write("\x1b[?1049l");
|
|
230
|
-
}
|
|
231
|
-
stream.write("\n");
|
|
232
|
-
// Remove event handlers
|
|
233
|
-
for (const handler of this.terminalState.cleanupHandlers) {
|
|
234
|
-
handler();
|
|
235
|
-
}
|
|
236
|
-
this.terminalState.cleanupHandlers = [];
|
|
237
|
-
// Restore stdin mode
|
|
238
|
-
if (process.stdin.isTTY && stream === stdout) {
|
|
239
|
-
process.stdin.setRawMode(false);
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
/**
|
|
243
|
-
* Check if an effect is currently running
|
|
244
|
-
*/
|
|
245
|
-
isEffectRunning() {
|
|
246
|
-
return this.isRunning;
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* Get current effect info
|
|
250
|
-
*/
|
|
251
|
-
getCurrentEffect() {
|
|
252
|
-
return this.currentEffect;
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
//# sourceMappingURL=effect-runner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"effect-runner.js","sourceRoot":"","sources":["../../src/effects/effect-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Gradient System for Terminal Effects
|
|
3
|
-
* Provides comprehensive gradient color mapping capabilities
|
|
4
|
-
*/
|
|
5
|
-
import { Coordinate, TerminalDimensions } from "./types.js";
|
|
6
|
-
/**
|
|
7
|
-
* Gradient direction options
|
|
8
|
-
*/
|
|
9
|
-
export declare enum GradientDirection {
|
|
10
|
-
HORIZONTAL = "horizontal",
|
|
11
|
-
VERTICAL = "vertical",
|
|
12
|
-
DIAGONAL = "diagonal",
|
|
13
|
-
RADIAL = "radial",
|
|
14
|
-
DIAGONAL_REVERSE = "diagonal_reverse"
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Gradient configuration
|
|
18
|
-
*/
|
|
19
|
-
export interface GradientConfig {
|
|
20
|
-
/** Array of color stops */
|
|
21
|
-
stops: string[];
|
|
22
|
-
/** Number of steps between each stop */
|
|
23
|
-
steps?: number;
|
|
24
|
-
/** Direction of the gradient */
|
|
25
|
-
direction?: GradientDirection;
|
|
26
|
-
/** Easing function for color interpolation */
|
|
27
|
-
easingFn?: (t: number) => number;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Gradient class for creating color transitions
|
|
31
|
-
*/
|
|
32
|
-
export declare class Gradient {
|
|
33
|
-
private colorStops;
|
|
34
|
-
private steps;
|
|
35
|
-
private direction;
|
|
36
|
-
private easingFn;
|
|
37
|
-
private spectrum;
|
|
38
|
-
constructor(config: GradientConfig);
|
|
39
|
-
/**
|
|
40
|
-
* Generate the full color spectrum
|
|
41
|
-
*/
|
|
42
|
-
private generateSpectrum;
|
|
43
|
-
/**
|
|
44
|
-
* Interpolate between two colors
|
|
45
|
-
*/
|
|
46
|
-
private interpolateColors;
|
|
47
|
-
/**
|
|
48
|
-
* Build coordinate-to-color mapping for a canvas area
|
|
49
|
-
*/
|
|
50
|
-
buildCoordinateColorMapping(dimensions: TerminalDimensions, bounds?: {
|
|
51
|
-
top?: number;
|
|
52
|
-
bottom?: number;
|
|
53
|
-
left?: number;
|
|
54
|
-
right?: number;
|
|
55
|
-
}): Map<string, string>;
|
|
56
|
-
/**
|
|
57
|
-
* Get color at a specific position based on gradient direction
|
|
58
|
-
*/
|
|
59
|
-
private getColorAtPosition;
|
|
60
|
-
/**
|
|
61
|
-
* Get color for a specific coordinate
|
|
62
|
-
*/
|
|
63
|
-
getColorForCoordinate(coord: Coordinate, dimensions: TerminalDimensions): string;
|
|
64
|
-
/**
|
|
65
|
-
* Get the generated color spectrum
|
|
66
|
-
*/
|
|
67
|
-
getSpectrum(): string[];
|
|
68
|
-
/**
|
|
69
|
-
* Apply gradient to a string (character by character)
|
|
70
|
-
*/
|
|
71
|
-
applyToString(text: string): Array<{
|
|
72
|
-
char: string;
|
|
73
|
-
color: string;
|
|
74
|
-
}>;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Predefined gradients
|
|
78
|
-
*/
|
|
79
|
-
export declare const GRADIENTS: {
|
|
80
|
-
FIRE: {
|
|
81
|
-
stops: string[];
|
|
82
|
-
steps: number;
|
|
83
|
-
};
|
|
84
|
-
OCEAN: {
|
|
85
|
-
stops: string[];
|
|
86
|
-
steps: number;
|
|
87
|
-
};
|
|
88
|
-
MATRIX: {
|
|
89
|
-
stops: string[];
|
|
90
|
-
steps: number;
|
|
91
|
-
};
|
|
92
|
-
SUNSET: {
|
|
93
|
-
stops: string[];
|
|
94
|
-
steps: number;
|
|
95
|
-
};
|
|
96
|
-
COOL: {
|
|
97
|
-
stops: string[];
|
|
98
|
-
steps: number;
|
|
99
|
-
};
|
|
100
|
-
MONOCHROME: {
|
|
101
|
-
stops: string[];
|
|
102
|
-
steps: number;
|
|
103
|
-
};
|
|
104
|
-
RAINBOW: {
|
|
105
|
-
stops: string[];
|
|
106
|
-
steps: number;
|
|
107
|
-
};
|
|
108
|
-
};
|
|
109
|
-
/**
|
|
110
|
-
* Easing functions for gradient interpolation
|
|
111
|
-
*/
|
|
112
|
-
export declare const EASING: {
|
|
113
|
-
linear: (t: number) => number;
|
|
114
|
-
inQuad: (t: number) => number;
|
|
115
|
-
outQuad: (t: number) => number;
|
|
116
|
-
inOutQuad: (t: number) => number;
|
|
117
|
-
inCubic: (t: number) => number;
|
|
118
|
-
outCubic: (t: number) => number;
|
|
119
|
-
inOutCubic: (t: number) => number;
|
|
120
|
-
inExpo: (t: number) => number;
|
|
121
|
-
outExpo: (t: number) => number;
|
|
122
|
-
inOutExpo: (t: number) => number;
|
|
123
|
-
inSine: (t: number) => number;
|
|
124
|
-
outSine: (t: number) => number;
|
|
125
|
-
inOutSine: (t: number) => number;
|
|
126
|
-
};
|
|
127
|
-
/**
|
|
128
|
-
* Helper function to create a gradient from preset
|
|
129
|
-
*/
|
|
130
|
-
export declare function createGradient(preset: keyof typeof GRADIENTS, direction?: GradientDirection, easingFn?: (t: number) => number): Gradient;
|
|
131
|
-
//# sourceMappingURL=gradient.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gradient.d.ts","sourceRoot":"","sources":["../../src/effects/gradient.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE5D;;GAEG;AACH,oBAAY,iBAAiB;IAC3B,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,gBAAgB,qBAAqB;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,2BAA2B;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAClC;AAED;;GAEG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,UAAU,CAAW;IAC7B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,QAAQ,CAAgB;gBAEpB,MAAM,EAAE,cAAc;IAQlC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAyBxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6BzB;;OAEG;IACH,2BAA2B,CACzB,UAAU,EAAE,kBAAkB,EAC9B,MAAM,CAAC,EAAE;QACP,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GACA,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAuBtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuC1B;;OAEG;IACH,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,GAAG,MAAM;IAIhF;;OAEG;IACH,WAAW,IAAI,MAAM,EAAE;IAIvB;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAepE;AAED;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM;gBACL,MAAM;gBAEN,MAAM;iBACL,MAAM;mBACJ,MAAM;iBAER,MAAM;kBACL,MAAM;oBACJ,MAAM;gBAGV,MAAM;iBACL,MAAM;mBACJ,MAAM;gBAOT,MAAM;iBACL,MAAM;mBACJ,MAAM;CACtB,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,OAAO,SAAS,EAC9B,SAAS,CAAC,EAAE,iBAAiB,EAC7B,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAC/B,QAAQ,CAOV"}
|
package/dist/effects/gradient.js
DELETED
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Gradient System for Terminal Effects
|
|
3
|
-
* Provides comprehensive gradient color mapping capabilities
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Gradient direction options
|
|
7
|
-
*/
|
|
8
|
-
export var GradientDirection;
|
|
9
|
-
(function (GradientDirection) {
|
|
10
|
-
GradientDirection["HORIZONTAL"] = "horizontal";
|
|
11
|
-
GradientDirection["VERTICAL"] = "vertical";
|
|
12
|
-
GradientDirection["DIAGONAL"] = "diagonal";
|
|
13
|
-
GradientDirection["RADIAL"] = "radial";
|
|
14
|
-
GradientDirection["DIAGONAL_REVERSE"] = "diagonal_reverse";
|
|
15
|
-
})(GradientDirection || (GradientDirection = {}));
|
|
16
|
-
/**
|
|
17
|
-
* Gradient class for creating color transitions
|
|
18
|
-
*/
|
|
19
|
-
export class Gradient {
|
|
20
|
-
constructor(config) {
|
|
21
|
-
this.spectrum = [];
|
|
22
|
-
this.colorStops = config.stops;
|
|
23
|
-
this.steps = config.steps || 10;
|
|
24
|
-
this.direction = config.direction || GradientDirection.VERTICAL;
|
|
25
|
-
this.easingFn = config.easingFn || ((t) => t); // Linear by default
|
|
26
|
-
this.generateSpectrum();
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Generate the full color spectrum
|
|
30
|
-
*/
|
|
31
|
-
generateSpectrum() {
|
|
32
|
-
this.spectrum = [];
|
|
33
|
-
if (this.colorStops.length === 1) {
|
|
34
|
-
// Single color - no gradient
|
|
35
|
-
this.spectrum = [this.colorStops[0]];
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
// Generate colors between each pair of stops
|
|
39
|
-
for (let i = 0; i < this.colorStops.length - 1; i++) {
|
|
40
|
-
const startColor = this.colorStops[i];
|
|
41
|
-
const endColor = this.colorStops[i + 1];
|
|
42
|
-
const segmentColors = this.interpolateColors(startColor, endColor, this.steps);
|
|
43
|
-
// Add all colors except the last (to avoid duplicates)
|
|
44
|
-
if (i < this.colorStops.length - 2) {
|
|
45
|
-
this.spectrum.push(...segmentColors.slice(0, -1));
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
// For the last segment, include all colors
|
|
49
|
-
this.spectrum.push(...segmentColors);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Interpolate between two colors
|
|
55
|
-
*/
|
|
56
|
-
interpolateColors(color1, color2, steps) {
|
|
57
|
-
const colors = [];
|
|
58
|
-
const r1 = parseInt(color1.substring(0, 2), 16);
|
|
59
|
-
const g1 = parseInt(color1.substring(2, 4), 16);
|
|
60
|
-
const b1 = parseInt(color1.substring(4, 6), 16);
|
|
61
|
-
const r2 = parseInt(color2.substring(0, 2), 16);
|
|
62
|
-
const g2 = parseInt(color2.substring(2, 4), 16);
|
|
63
|
-
const b2 = parseInt(color2.substring(4, 6), 16);
|
|
64
|
-
for (let i = 0; i < steps; i++) {
|
|
65
|
-
const t = i / (steps - 1);
|
|
66
|
-
const easedT = this.easingFn(t);
|
|
67
|
-
const r = Math.round(r1 + (r2 - r1) * easedT);
|
|
68
|
-
const g = Math.round(g1 + (g2 - g1) * easedT);
|
|
69
|
-
const b = Math.round(b1 + (b2 - b1) * easedT);
|
|
70
|
-
const hex = [r, g, b]
|
|
71
|
-
.map((c) => Math.max(0, Math.min(255, c)).toString(16).padStart(2, "0"))
|
|
72
|
-
.join("");
|
|
73
|
-
colors.push(hex);
|
|
74
|
-
}
|
|
75
|
-
return colors;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Build coordinate-to-color mapping for a canvas area
|
|
79
|
-
*/
|
|
80
|
-
buildCoordinateColorMapping(dimensions, bounds) {
|
|
81
|
-
const mapping = new Map();
|
|
82
|
-
// Use provided bounds or default to full canvas
|
|
83
|
-
const top = bounds?.top ?? 0;
|
|
84
|
-
const bottom = bounds?.bottom ?? dimensions.height - 1;
|
|
85
|
-
const left = bounds?.left ?? 0;
|
|
86
|
-
const right = bounds?.right ?? dimensions.width - 1;
|
|
87
|
-
const width = right - left + 1;
|
|
88
|
-
const height = bottom - top + 1;
|
|
89
|
-
for (let y = top; y <= bottom; y++) {
|
|
90
|
-
for (let x = left; x <= right; x++) {
|
|
91
|
-
const key = `${x},${y}`;
|
|
92
|
-
const color = this.getColorAtPosition(x - left, y - top, width, height);
|
|
93
|
-
mapping.set(key, color);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
return mapping;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Get color at a specific position based on gradient direction
|
|
100
|
-
*/
|
|
101
|
-
getColorAtPosition(x, y, width, height) {
|
|
102
|
-
let factor = 0;
|
|
103
|
-
switch (this.direction) {
|
|
104
|
-
case GradientDirection.HORIZONTAL:
|
|
105
|
-
factor = x / (width - 1);
|
|
106
|
-
break;
|
|
107
|
-
case GradientDirection.VERTICAL:
|
|
108
|
-
factor = y / (height - 1);
|
|
109
|
-
break;
|
|
110
|
-
case GradientDirection.DIAGONAL:
|
|
111
|
-
factor = (x + y) / (width + height - 2);
|
|
112
|
-
break;
|
|
113
|
-
case GradientDirection.DIAGONAL_REVERSE:
|
|
114
|
-
factor = (x + (height - 1 - y)) / (width + height - 2);
|
|
115
|
-
break;
|
|
116
|
-
case GradientDirection.RADIAL:
|
|
117
|
-
const centerX = width / 2;
|
|
118
|
-
const centerY = height / 2;
|
|
119
|
-
const maxDist = Math.sqrt(centerX * centerX + centerY * centerY);
|
|
120
|
-
const dist = Math.sqrt(Math.pow(x - centerX, 2) + Math.pow(y - centerY, 2));
|
|
121
|
-
factor = dist / maxDist;
|
|
122
|
-
break;
|
|
123
|
-
}
|
|
124
|
-
// Clamp factor to [0, 1]
|
|
125
|
-
factor = Math.max(0, Math.min(1, factor));
|
|
126
|
-
// Get color from spectrum
|
|
127
|
-
const index = Math.floor(factor * (this.spectrum.length - 1));
|
|
128
|
-
return this.spectrum[index];
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Get color for a specific coordinate
|
|
132
|
-
*/
|
|
133
|
-
getColorForCoordinate(coord, dimensions) {
|
|
134
|
-
return this.getColorAtPosition(coord.x, coord.y, dimensions.width, dimensions.height);
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Get the generated color spectrum
|
|
138
|
-
*/
|
|
139
|
-
getSpectrum() {
|
|
140
|
-
return [...this.spectrum];
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Apply gradient to a string (character by character)
|
|
144
|
-
*/
|
|
145
|
-
applyToString(text) {
|
|
146
|
-
const result = [];
|
|
147
|
-
const chars = [...text]; // Handle Unicode properly
|
|
148
|
-
for (let i = 0; i < chars.length; i++) {
|
|
149
|
-
const factor = i / (chars.length - 1);
|
|
150
|
-
const colorIndex = Math.floor(factor * (this.spectrum.length - 1));
|
|
151
|
-
result.push({
|
|
152
|
-
char: chars[i],
|
|
153
|
-
color: this.spectrum[colorIndex],
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
return result;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Predefined gradients
|
|
161
|
-
*/
|
|
162
|
-
export const GRADIENTS = {
|
|
163
|
-
// Fire gradient (red to yellow)
|
|
164
|
-
FIRE: {
|
|
165
|
-
stops: ["ff0000", "ff4500", "ff8c00", "ffa500", "ffff00"],
|
|
166
|
-
steps: 10,
|
|
167
|
-
},
|
|
168
|
-
// Ocean gradient (dark blue to cyan)
|
|
169
|
-
OCEAN: {
|
|
170
|
-
stops: ["000080", "0000ff", "0080ff", "00ffff"],
|
|
171
|
-
steps: 12,
|
|
172
|
-
},
|
|
173
|
-
// Matrix gradient (dark green to bright green)
|
|
174
|
-
MATRIX: {
|
|
175
|
-
stops: ["003300", "006600", "009900", "00cc00", "00ff00"],
|
|
176
|
-
steps: 8,
|
|
177
|
-
},
|
|
178
|
-
// Sunset gradient
|
|
179
|
-
SUNSET: {
|
|
180
|
-
stops: ["ff1493", "ff69b4", "ffa500", "ffff00", "fffacd"],
|
|
181
|
-
steps: 15,
|
|
182
|
-
},
|
|
183
|
-
// Cool gradient (purple to cyan)
|
|
184
|
-
COOL: {
|
|
185
|
-
stops: ["8b008b", "9932cc", "6a0dad", "0000ff", "00ffff"],
|
|
186
|
-
steps: 12,
|
|
187
|
-
},
|
|
188
|
-
// Monochrome gradient (black to white)
|
|
189
|
-
MONOCHROME: {
|
|
190
|
-
stops: ["000000", "404040", "808080", "c0c0c0", "ffffff"],
|
|
191
|
-
steps: 10,
|
|
192
|
-
},
|
|
193
|
-
// Rainbow gradient
|
|
194
|
-
RAINBOW: {
|
|
195
|
-
stops: ["ff0000", "ff7f00", "ffff00", "00ff00", "0000ff", "4b0082", "9400d3"],
|
|
196
|
-
steps: 8,
|
|
197
|
-
},
|
|
198
|
-
};
|
|
199
|
-
/**
|
|
200
|
-
* Easing functions for gradient interpolation
|
|
201
|
-
*/
|
|
202
|
-
export const EASING = {
|
|
203
|
-
linear: (t) => t,
|
|
204
|
-
inQuad: (t) => t * t,
|
|
205
|
-
outQuad: (t) => t * (2 - t),
|
|
206
|
-
inOutQuad: (t) => (t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t),
|
|
207
|
-
inCubic: (t) => t * t * t,
|
|
208
|
-
outCubic: (t) => (--t) * t * t + 1,
|
|
209
|
-
inOutCubic: (t) => t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,
|
|
210
|
-
inExpo: (t) => (t === 0 ? 0 : Math.pow(2, 10 * t - 10)),
|
|
211
|
-
outExpo: (t) => (t === 1 ? 1 : 1 - Math.pow(2, -10 * t)),
|
|
212
|
-
inOutExpo: (t) => {
|
|
213
|
-
if (t === 0)
|
|
214
|
-
return 0;
|
|
215
|
-
if (t === 1)
|
|
216
|
-
return 1;
|
|
217
|
-
if (t < 0.5)
|
|
218
|
-
return Math.pow(2, 20 * t - 10) / 2;
|
|
219
|
-
return (2 - Math.pow(2, -20 * t + 10)) / 2;
|
|
220
|
-
},
|
|
221
|
-
inSine: (t) => 1 - Math.cos((t * Math.PI) / 2),
|
|
222
|
-
outSine: (t) => Math.sin((t * Math.PI) / 2),
|
|
223
|
-
inOutSine: (t) => -(Math.cos(Math.PI * t) - 1) / 2,
|
|
224
|
-
};
|
|
225
|
-
/**
|
|
226
|
-
* Helper function to create a gradient from preset
|
|
227
|
-
*/
|
|
228
|
-
export function createGradient(preset, direction, easingFn) {
|
|
229
|
-
const config = GRADIENTS[preset];
|
|
230
|
-
return new Gradient({
|
|
231
|
-
...config,
|
|
232
|
-
direction,
|
|
233
|
-
easingFn,
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
//# sourceMappingURL=gradient.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gradient.js","sourceRoot":"","sources":["../../src/effects/gradient.ts"],"names":[],"mappings":"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"}
|