shellfie 1.3.7 → 2.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.
Files changed (117) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +221 -165
  3. package/dist/fonts/index.d.ts +21 -0
  4. package/dist/fonts/index.d.ts.map +1 -0
  5. package/dist/fonts/index.js +92 -0
  6. package/dist/fonts/index.js.map +1 -0
  7. package/dist/index.d.ts +14 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +124 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/parser/index.d.ts +6 -0
  12. package/dist/parser/index.d.ts.map +1 -0
  13. package/dist/parser/index.js +189 -0
  14. package/dist/parser/index.js.map +1 -0
  15. package/dist/parser/types.d.ts +17 -0
  16. package/dist/parser/types.d.ts.map +1 -0
  17. package/dist/parser/types.js +3 -0
  18. package/dist/parser/types.js.map +1 -0
  19. package/dist/renderer/colors.d.ts +9 -0
  20. package/dist/renderer/colors.d.ts.map +1 -0
  21. package/dist/renderer/colors.js +100 -0
  22. package/dist/renderer/colors.js.map +1 -0
  23. package/dist/renderer/customGlyphs.d.ts +17 -0
  24. package/dist/renderer/customGlyphs.d.ts.map +1 -0
  25. package/dist/renderer/customGlyphs.js +730 -0
  26. package/dist/renderer/customGlyphs.js.map +1 -0
  27. package/dist/renderer/index.d.ts +10 -0
  28. package/dist/renderer/index.d.ts.map +1 -0
  29. package/dist/renderer/index.js +231 -0
  30. package/dist/renderer/index.js.map +1 -0
  31. package/dist/renderer/text.d.ts +13 -0
  32. package/dist/renderer/text.d.ts.map +1 -0
  33. package/dist/renderer/text.js +128 -0
  34. package/dist/renderer/text.js.map +1 -0
  35. package/dist/templates/base.d.ts +5 -0
  36. package/dist/templates/base.d.ts.map +1 -0
  37. package/dist/templates/base.js +37 -0
  38. package/dist/templates/base.js.map +1 -0
  39. package/dist/templates/index.d.ts +13 -0
  40. package/dist/templates/index.d.ts.map +1 -0
  41. package/dist/templates/index.js +34 -0
  42. package/dist/templates/index.js.map +1 -0
  43. package/dist/templates/macos.d.ts +12 -0
  44. package/dist/templates/macos.d.ts.map +1 -0
  45. package/dist/templates/macos.js +34 -0
  46. package/dist/templates/macos.js.map +1 -0
  47. package/dist/templates/minimal.d.ts +13 -0
  48. package/dist/templates/minimal.d.ts.map +1 -0
  49. package/dist/templates/minimal.js +27 -0
  50. package/dist/templates/minimal.js.map +1 -0
  51. package/dist/templates/windows.d.ts +12 -0
  52. package/dist/templates/windows.d.ts.map +1 -0
  53. package/dist/templates/windows.js +34 -0
  54. package/dist/templates/windows.js.map +1 -0
  55. package/dist/themes/catppuccin-mocha.d.ts +3 -0
  56. package/dist/themes/catppuccin-mocha.d.ts.map +1 -0
  57. package/dist/themes/catppuccin-mocha.js +27 -0
  58. package/dist/themes/catppuccin-mocha.js.map +1 -0
  59. package/dist/themes/dracula.d.ts +3 -0
  60. package/dist/themes/dracula.d.ts.map +1 -0
  61. package/dist/themes/dracula.js +27 -0
  62. package/dist/themes/dracula.js.map +1 -0
  63. package/dist/themes/github-dark.d.ts +3 -0
  64. package/dist/themes/github-dark.d.ts.map +1 -0
  65. package/dist/themes/github-dark.js +27 -0
  66. package/dist/themes/github-dark.js.map +1 -0
  67. package/dist/themes/github-light.d.ts +3 -0
  68. package/dist/themes/github-light.d.ts.map +1 -0
  69. package/dist/themes/github-light.js +27 -0
  70. package/dist/themes/github-light.js.map +1 -0
  71. package/dist/themes/gruvbox-dark.d.ts +3 -0
  72. package/dist/themes/gruvbox-dark.d.ts.map +1 -0
  73. package/dist/themes/gruvbox-dark.js +27 -0
  74. package/dist/themes/gruvbox-dark.js.map +1 -0
  75. package/dist/themes/gruvbox-light.d.ts +3 -0
  76. package/dist/themes/gruvbox-light.d.ts.map +1 -0
  77. package/dist/themes/gruvbox-light.js +27 -0
  78. package/dist/themes/gruvbox-light.js.map +1 -0
  79. package/dist/themes/index.d.ts +27 -0
  80. package/dist/themes/index.d.ts.map +1 -0
  81. package/dist/themes/index.js +54 -0
  82. package/dist/themes/index.js.map +1 -0
  83. package/dist/themes/monokai.d.ts +3 -0
  84. package/dist/themes/monokai.d.ts.map +1 -0
  85. package/dist/themes/monokai.js +27 -0
  86. package/dist/themes/monokai.js.map +1 -0
  87. package/dist/themes/nord.d.ts +3 -0
  88. package/dist/themes/nord.d.ts.map +1 -0
  89. package/dist/themes/nord.js +27 -0
  90. package/dist/themes/nord.js.map +1 -0
  91. package/dist/themes/one-dark.d.ts +3 -0
  92. package/dist/themes/one-dark.d.ts.map +1 -0
  93. package/dist/themes/one-dark.js +27 -0
  94. package/dist/themes/one-dark.js.map +1 -0
  95. package/dist/themes/solarized-dark.d.ts +3 -0
  96. package/dist/themes/solarized-dark.d.ts.map +1 -0
  97. package/dist/themes/solarized-dark.js +27 -0
  98. package/dist/themes/solarized-dark.js.map +1 -0
  99. package/dist/themes/solarized-light.d.ts +3 -0
  100. package/dist/themes/solarized-light.d.ts.map +1 -0
  101. package/dist/themes/solarized-light.js +27 -0
  102. package/dist/themes/solarized-light.js.map +1 -0
  103. package/dist/themes/tokyo-night.d.ts +3 -0
  104. package/dist/themes/tokyo-night.d.ts.map +1 -0
  105. package/dist/themes/tokyo-night.js +27 -0
  106. package/dist/themes/tokyo-night.js.map +1 -0
  107. package/dist/types.d.ts +151 -0
  108. package/dist/types.d.ts.map +1 -0
  109. package/dist/types.js +3 -0
  110. package/dist/types.js.map +1 -0
  111. package/package.json +32 -21
  112. package/shellfie.d.ts +0 -29
  113. package/shellfie.js +0 -114
  114. package/template/template.css +0 -58
  115. package/template/template.html +0 -21
  116. package/utils/config.js +0 -41
  117. package/utils/styles.js +0 -32
package/dist/index.js ADDED
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.themes = exports.templates = exports.resolveTemplate = exports.createTemplate = exports.darkTheme = exports.createTheme = exports.stripAnsi = exports.parseAnsi = exports.getMaxWidth = exports.loadFont = exports.loadEmbeddedFont = exports.createFontConfig = exports.render = exports.parse = exports.shellfieAsync = exports.shellfie = void 0;
18
+ const fonts_1 = require("./fonts");
19
+ const parser_1 = require("./parser");
20
+ const renderer_1 = require("./renderer");
21
+ const templates_1 = require("./templates");
22
+ const DEFAULTS = {
23
+ template: 'macos',
24
+ title: '',
25
+ theme: renderer_1.darkTheme,
26
+ fontSize: 14,
27
+ lineHeight: 1.4,
28
+ padding: 16,
29
+ width: null,
30
+ watermark: null,
31
+ watermarkPadding: null,
32
+ controls: true,
33
+ fontFamily: "'SF Mono', 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'Courier New', monospace",
34
+ embedFont: false,
35
+ customGlyphs: true,
36
+ };
37
+ const resolvePadding = (input) => {
38
+ if (typeof input === 'number') {
39
+ return { top: input, right: input, bottom: input, left: input };
40
+ }
41
+ if (input.length === 2) {
42
+ const [vertical, horizontal] = input;
43
+ return { top: vertical, right: horizontal, bottom: vertical, left: horizontal };
44
+ }
45
+ const [top, right, bottom, left] = input;
46
+ return { top, right, bottom, left };
47
+ };
48
+ const addAlpha = (hex, alpha) => `${hex}${Math.round(alpha * 255).toString(16).padStart(2, '0')}`;
49
+ const resolveShellConfig = (config, theme, defaultHeight, backgroundKey) => {
50
+ if (!config)
51
+ return null;
52
+ return {
53
+ backgroundColor: config.backgroundColor ?? theme[backgroundKey] ?? theme.background,
54
+ height: config.height ?? defaultHeight,
55
+ border: config.border ?? true,
56
+ borderColor: config.borderColor ?? addAlpha(theme.foreground, 0.1),
57
+ borderWidth: config.borderWidth ?? 1,
58
+ };
59
+ };
60
+ const resolveOptions = (options = {}) => {
61
+ const template = (0, templates_1.resolveTemplate)(options.template);
62
+ const theme = options.theme ?? DEFAULTS.theme;
63
+ const paddingInput = options.padding ?? template.shell.padding;
64
+ const watermarkPaddingInput = options.watermarkPadding ?? paddingInput;
65
+ const font = (0, fonts_1.createFontConfig)({
66
+ family: options.fontFamily ?? DEFAULTS.fontFamily,
67
+ size: options.fontSize ?? DEFAULTS.fontSize,
68
+ lineHeight: options.lineHeight ?? DEFAULTS.lineHeight,
69
+ embedData: options.customFont?.data,
70
+ embedFormat: options.customFont?.format,
71
+ });
72
+ return {
73
+ template,
74
+ title: options.title ?? DEFAULTS.title,
75
+ theme,
76
+ font,
77
+ padding: resolvePadding(paddingInput),
78
+ width: options.width ?? DEFAULTS.width,
79
+ watermark: options.watermark ?? DEFAULTS.watermark,
80
+ watermarkPadding: resolvePadding(watermarkPaddingInput),
81
+ controls: options.controls ?? template.shell.controls,
82
+ customGlyphs: options.customGlyphs ?? DEFAULTS.customGlyphs,
83
+ header: resolveShellConfig(options.header, theme, template.shell.titleBarHeight, 'headerBackground'),
84
+ footer: resolveShellConfig(options.footer, theme, template.shell.titleBarHeight, 'footerBackground'),
85
+ };
86
+ };
87
+ const shellfie = (input, options = {}) => (0, renderer_1.renderSvg)((0, parser_1.parseAnsi)(input), resolveOptions(options)).svg;
88
+ exports.shellfie = shellfie;
89
+ const shellfieAsync = async (input, options = {}) => {
90
+ const renderOptions = resolveOptions(options);
91
+ if (options.embedFont && !options.customFont) {
92
+ const fontData = await (0, fonts_1.loadEmbeddedFont)();
93
+ if (fontData) {
94
+ renderOptions.font.embedData = fontData.data;
95
+ renderOptions.font.embedFormat = fontData.format;
96
+ }
97
+ }
98
+ return (0, renderer_1.renderSvg)((0, parser_1.parseAnsi)(input), renderOptions).svg;
99
+ };
100
+ exports.shellfieAsync = shellfieAsync;
101
+ const parse = (input) => (0, parser_1.parseAnsi)(input);
102
+ exports.parse = parse;
103
+ const render = (lines, options = {}) => (0, renderer_1.renderSvg)(lines, resolveOptions(options)).svg;
104
+ exports.render = render;
105
+ var fonts_2 = require("./fonts");
106
+ Object.defineProperty(exports, "createFontConfig", { enumerable: true, get: function () { return fonts_2.createFontConfig; } });
107
+ Object.defineProperty(exports, "loadEmbeddedFont", { enumerable: true, get: function () { return fonts_2.loadEmbeddedFont; } });
108
+ Object.defineProperty(exports, "loadFont", { enumerable: true, get: function () { return fonts_2.loadFont; } });
109
+ var parser_2 = require("./parser");
110
+ Object.defineProperty(exports, "getMaxWidth", { enumerable: true, get: function () { return parser_2.getMaxWidth; } });
111
+ Object.defineProperty(exports, "parseAnsi", { enumerable: true, get: function () { return parser_2.parseAnsi; } });
112
+ Object.defineProperty(exports, "stripAnsi", { enumerable: true, get: function () { return parser_2.stripAnsi; } });
113
+ var renderer_2 = require("./renderer");
114
+ Object.defineProperty(exports, "createTheme", { enumerable: true, get: function () { return renderer_2.createTheme; } });
115
+ Object.defineProperty(exports, "darkTheme", { enumerable: true, get: function () { return renderer_2.darkTheme; } });
116
+ var templates_2 = require("./templates");
117
+ Object.defineProperty(exports, "createTemplate", { enumerable: true, get: function () { return templates_2.createTemplate; } });
118
+ Object.defineProperty(exports, "resolveTemplate", { enumerable: true, get: function () { return templates_2.resolveTemplate; } });
119
+ Object.defineProperty(exports, "templates", { enumerable: true, get: function () { return templates_2.templates; } });
120
+ __exportStar(require("./themes"), exports);
121
+ var themes_1 = require("./themes");
122
+ Object.defineProperty(exports, "themes", { enumerable: true, get: function () { return themes_1.themes; } });
123
+ exports.default = exports.shellfie;
124
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { ParsedLine } from '../types';
2
+ export declare const parseAnsi: (input: string) => ParsedLine[];
3
+ export declare const stripAnsi: (input: string) => string;
4
+ export declare const getMaxWidth: (lines: ParsedLine[]) => number;
5
+ export type { EscapeSequence, ParserState, Token } from './types';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAA4B,MAAM,UAAU,CAAC;AAkKrE,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,UAAU,EAsBnD,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,MAIA,CAAC;AAE3C,eAAO,MAAM,WAAW,GAAI,OAAO,UAAU,EAAE,KAAG,MAI3C,CAAC;AAER,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMaxWidth = exports.stripAnsi = exports.parseAnsi = void 0;
4
+ const CSI_REGEX = /\x1b\[([0-9;]*)([A-Za-z])/g;
5
+ const OSC_REGEX = /\x1b\].*?(?:\x07|\x1b\\)/g;
6
+ const splitTextIntoTokens = (text) => {
7
+ const tokens = [];
8
+ const parts = text.split('\n');
9
+ parts.forEach((part, i) => {
10
+ if (part.length > 0) {
11
+ tokens.push({ type: 'text', value: part });
12
+ }
13
+ if (i < parts.length - 1) {
14
+ tokens.push({ type: 'newline', value: '\n' });
15
+ }
16
+ });
17
+ return tokens;
18
+ };
19
+ const tokenize = (input) => {
20
+ const tokens = [];
21
+ const cleanedInput = input.replace(OSC_REGEX, '');
22
+ let lastIndex = 0;
23
+ CSI_REGEX.lastIndex = 0;
24
+ let match;
25
+ while ((match = CSI_REGEX.exec(cleanedInput)) !== null) {
26
+ if (match.index > lastIndex) {
27
+ tokens.push(...splitTextIntoTokens(cleanedInput.slice(lastIndex, match.index)));
28
+ }
29
+ const params = match[1]
30
+ ? match[1].split(';').map((p) => (p === '' ? 0 : parseInt(p, 10)))
31
+ : [0];
32
+ if (match[2] === 'm') {
33
+ tokens.push({
34
+ type: 'escape',
35
+ value: match[0],
36
+ sequence: { type: 'sgr', params, raw: match[0] },
37
+ });
38
+ }
39
+ lastIndex = match.index + match[0].length;
40
+ }
41
+ if (lastIndex < cleanedInput.length) {
42
+ tokens.push(...splitTextIntoTokens(cleanedInput.slice(lastIndex)));
43
+ }
44
+ return tokens;
45
+ };
46
+ const isColorCode = (code, start, end) => code >= start && code <= end;
47
+ const applySGR = (params, state) => {
48
+ let i = 0;
49
+ while (i < params.length) {
50
+ const code = params[i];
51
+ // Reset
52
+ if (code === 0) {
53
+ state.style = {};
54
+ }
55
+ // Text attributes on
56
+ else if (code === 1)
57
+ state.style.bold = true;
58
+ else if (code === 2)
59
+ state.style.dim = true;
60
+ else if (code === 3)
61
+ state.style.italic = true;
62
+ else if (code === 4)
63
+ state.style.underline = true;
64
+ else if (code === 7)
65
+ state.style.inverse = true;
66
+ else if (code === 9)
67
+ state.style.strikethrough = true;
68
+ // Text attributes off
69
+ else if (code === 22) {
70
+ state.style.bold = false;
71
+ state.style.dim = false;
72
+ }
73
+ else if (code === 23)
74
+ state.style.italic = false;
75
+ else if (code === 24)
76
+ state.style.underline = false;
77
+ else if (code === 27)
78
+ state.style.inverse = false;
79
+ else if (code === 29)
80
+ state.style.strikethrough = false;
81
+ // Standard foreground colors (30-37)
82
+ else if (isColorCode(code, 30, 37)) {
83
+ state.style.foreground = `ansi${code - 30}`;
84
+ }
85
+ // Extended foreground color (38)
86
+ else if (code === 38) {
87
+ i += handleExtendedColor(params, i, (color) => { state.style.foreground = color; });
88
+ }
89
+ // Default foreground (39)
90
+ else if (code === 39)
91
+ state.style.foreground = undefined;
92
+ // Standard background colors (40-47)
93
+ else if (isColorCode(code, 40, 47)) {
94
+ state.style.background = `ansi${code - 40}`;
95
+ }
96
+ // Extended background color (48)
97
+ else if (code === 48) {
98
+ i += handleExtendedColor(params, i, (color) => { state.style.background = color; });
99
+ }
100
+ // Default background (49)
101
+ else if (code === 49)
102
+ state.style.background = undefined;
103
+ // Bright foreground colors (90-97)
104
+ else if (isColorCode(code, 90, 97)) {
105
+ state.style.foreground = `ansi${code - 90 + 8}`;
106
+ }
107
+ // Bright background colors (100-107)
108
+ else if (isColorCode(code, 100, 107)) {
109
+ state.style.background = `ansi${code - 100 + 8}`;
110
+ }
111
+ i++;
112
+ }
113
+ };
114
+ const handleExtendedColor = (params, i, setColor) => {
115
+ // 256-color mode: 38;5;n or 48;5;n
116
+ if (params[i + 1] === 5 && params[i + 2] !== undefined) {
117
+ setColor(`ansi256-${params[i + 2]}`);
118
+ return 2;
119
+ }
120
+ // True color mode: 38;2;r;g;b or 48;2;r;g;b
121
+ if (params[i + 1] === 2 &&
122
+ params[i + 2] !== undefined &&
123
+ params[i + 3] !== undefined &&
124
+ params[i + 4] !== undefined) {
125
+ setColor({ r: params[i + 2], g: params[i + 3], b: params[i + 4] });
126
+ return 4;
127
+ }
128
+ return 0;
129
+ };
130
+ const cloneStyle = (style) => {
131
+ const clone = {};
132
+ if (style.foreground !== undefined) {
133
+ clone.foreground = typeof style.foreground === 'object'
134
+ ? { ...style.foreground }
135
+ : style.foreground;
136
+ }
137
+ if (style.background !== undefined) {
138
+ clone.background = typeof style.background === 'object'
139
+ ? { ...style.background }
140
+ : style.background;
141
+ }
142
+ if (style.bold)
143
+ clone.bold = true;
144
+ if (style.italic)
145
+ clone.italic = true;
146
+ if (style.underline)
147
+ clone.underline = true;
148
+ if (style.strikethrough)
149
+ clone.strikethrough = true;
150
+ if (style.dim)
151
+ clone.dim = true;
152
+ if (style.inverse)
153
+ clone.inverse = true;
154
+ return clone;
155
+ };
156
+ const parseAnsi = (input) => {
157
+ const tokens = tokenize(input);
158
+ const state = { style: {} };
159
+ const lines = [];
160
+ let currentLine = [];
161
+ for (const token of tokens) {
162
+ if (token.type === 'text') {
163
+ currentLine.push({ text: token.value, style: cloneStyle(state.style) });
164
+ }
165
+ else if (token.type === 'escape' && token.sequence?.type === 'sgr') {
166
+ applySGR(token.sequence.params, state);
167
+ }
168
+ else if (token.type === 'newline') {
169
+ lines.push({ spans: currentLine });
170
+ currentLine = [];
171
+ }
172
+ }
173
+ if (currentLine.length > 0 || lines.length === 0) {
174
+ lines.push({ spans: currentLine });
175
+ }
176
+ return lines;
177
+ };
178
+ exports.parseAnsi = parseAnsi;
179
+ const stripAnsi = (input) => input
180
+ .replace(CSI_REGEX, '')
181
+ .replace(OSC_REGEX, '')
182
+ .replace(/\x1b\[[0-9;]*[A-Za-z]/g, '');
183
+ exports.stripAnsi = stripAnsi;
184
+ const getMaxWidth = (lines) => lines.reduce((max, line) => {
185
+ const lineWidth = line.spans.reduce((sum, span) => sum + span.text.length, 0);
186
+ return Math.max(max, lineWidth);
187
+ }, 0);
188
+ exports.getMaxWidth = getMaxWidth;
189
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { TextStyle } from '../types';
2
+ export type EscapeSequenceType = 'sgr' | 'cursor' | 'erase' | 'unknown';
3
+ export interface EscapeSequence {
4
+ type: EscapeSequenceType;
5
+ params: number[];
6
+ raw: string;
7
+ }
8
+ export interface ParserState {
9
+ style: TextStyle;
10
+ }
11
+ export type TokenType = 'text' | 'escape' | 'newline';
12
+ export interface Token {
13
+ type: TokenType;
14
+ value: string;
15
+ sequence?: EscapeSequence;
16
+ }
17
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/parser/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAExE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/parser/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import type { Theme, RGB } from '../types';
2
+ export declare const darkTheme: Theme;
3
+ declare function get256Color(index: number, theme: Theme): string;
4
+ export declare function rgbToHex(rgb: RGB): string;
5
+ export declare function resolveColor(color: string | RGB | undefined, theme: Theme, isForeground: boolean): string;
6
+ export declare function dimColor(hex: string): string;
7
+ export declare function createTheme(overrides: Partial<Theme>): Theme;
8
+ export { get256Color };
9
+ //# sourceMappingURL=colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/renderer/colors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE3C,eAAO,MAAM,SAAS,EAAE,KAsBvB,CAAC;AAEF,iBAAS,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,CAwCxD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAIzC;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS,EAC/B,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,OAAO,GACpB,MAAM,CAoBR;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAS5C;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAE5D;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.darkTheme = void 0;
4
+ exports.rgbToHex = rgbToHex;
5
+ exports.resolveColor = resolveColor;
6
+ exports.dimColor = dimColor;
7
+ exports.createTheme = createTheme;
8
+ exports.get256Color = get256Color;
9
+ exports.darkTheme = {
10
+ name: 'dark',
11
+ background: '#1e1e1e',
12
+ foreground: '#d4d4d4',
13
+ cursor: '#ffffff',
14
+ selection: '#264f78',
15
+ black: '#000000',
16
+ red: '#cd3131',
17
+ green: '#0dbc79',
18
+ yellow: '#e5e510',
19
+ blue: '#2472c8',
20
+ magenta: '#bc3fbc',
21
+ cyan: '#11a8cd',
22
+ white: '#e5e5e5',
23
+ brightBlack: '#666666',
24
+ brightRed: '#f14c4c',
25
+ brightGreen: '#23d18b',
26
+ brightYellow: '#f5f543',
27
+ brightBlue: '#3b8eea',
28
+ brightMagenta: '#d670d6',
29
+ brightCyan: '#29b8db',
30
+ brightWhite: '#ffffff',
31
+ };
32
+ function get256Color(index, theme) {
33
+ if (index >= 0 && index <= 7) {
34
+ const colors = [
35
+ theme.black, theme.red, theme.green, theme.yellow,
36
+ theme.blue, theme.magenta, theme.cyan, theme.white,
37
+ ];
38
+ return colors[index];
39
+ }
40
+ if (index >= 8 && index <= 15) {
41
+ const colors = [
42
+ theme.brightBlack, theme.brightRed, theme.brightGreen, theme.brightYellow,
43
+ theme.brightBlue, theme.brightMagenta, theme.brightCyan, theme.brightWhite,
44
+ ];
45
+ return colors[index - 8];
46
+ }
47
+ // 6x6x6 color cube (16-231)
48
+ if (index >= 16 && index <= 231) {
49
+ const i = index - 16;
50
+ const r = Math.floor(i / 36);
51
+ const g = Math.floor((i % 36) / 6);
52
+ const b = i % 6;
53
+ const toHex = (v) => {
54
+ const value = v === 0 ? 0 : 55 + v * 40;
55
+ return value.toString(16).padStart(2, '0');
56
+ };
57
+ return `#${toHex(r)}${toHex(g)}${toHex(b)}`;
58
+ }
59
+ // Grayscale (232-255)
60
+ if (index >= 232 && index <= 255) {
61
+ const gray = 8 + (index - 232) * 10;
62
+ const hex = gray.toString(16).padStart(2, '0');
63
+ return `#${hex}${hex}${hex}`;
64
+ }
65
+ return theme.foreground;
66
+ }
67
+ function rgbToHex(rgb) {
68
+ const toHex = (v) => Math.max(0, Math.min(255, v)).toString(16).padStart(2, '0');
69
+ return `#${toHex(rgb.r)}${toHex(rgb.g)}${toHex(rgb.b)}`;
70
+ }
71
+ function resolveColor(color, theme, isForeground) {
72
+ if (color === undefined) {
73
+ return isForeground ? theme.foreground : 'transparent';
74
+ }
75
+ if (typeof color === 'object') {
76
+ return rgbToHex(color);
77
+ }
78
+ const ansiMatch = color.match(/^ansi(\d+)$/);
79
+ if (ansiMatch) {
80
+ return get256Color(parseInt(ansiMatch[1], 10), theme);
81
+ }
82
+ const ansi256Match = color.match(/^ansi256-(\d+)$/);
83
+ if (ansi256Match) {
84
+ return get256Color(parseInt(ansi256Match[1], 10), theme);
85
+ }
86
+ return color;
87
+ }
88
+ function dimColor(hex) {
89
+ const match = hex.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i);
90
+ if (!match)
91
+ return hex;
92
+ const r = Math.floor(parseInt(match[1], 16) * 0.5);
93
+ const g = Math.floor(parseInt(match[2], 16) * 0.5);
94
+ const b = Math.floor(parseInt(match[3], 16) * 0.5);
95
+ return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;
96
+ }
97
+ function createTheme(overrides) {
98
+ return { ...exports.darkTheme, ...overrides };
99
+ }
100
+ //# sourceMappingURL=colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/renderer/colors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export declare function isCustomGlyph(codePoint: number): boolean;
2
+ export declare function containsCustomGlyphs(text: string): boolean;
3
+ export interface GlyphContext {
4
+ cellWidth: number;
5
+ cellHeight: number;
6
+ x: number;
7
+ y: number;
8
+ color: string;
9
+ lineWidth: number;
10
+ heavyLineWidth: number;
11
+ }
12
+ export interface GlyphResult {
13
+ svg: string;
14
+ handled: boolean;
15
+ }
16
+ export declare function renderCustomGlyph(char: string, ctx: GlyphContext): GlyphResult;
17
+ //# sourceMappingURL=customGlyphs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customGlyphs.d.ts","sourceRoot":"","sources":["../../src/renderer/customGlyphs.ts"],"names":[],"mappings":"AAOA,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAQxD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ1D;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,YAAY,GAChB,WAAW,CAkCb"}