@blit-sh/core 0.17.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/BlitConnection.d.ts +132 -0
- package/dist/BlitConnection.d.ts.map +1 -0
- package/dist/BlitConnection.js +875 -0
- package/dist/BlitConnection.js.map +1 -0
- package/dist/BlitWorkspace.d.ts +65 -0
- package/dist/BlitWorkspace.d.ts.map +1 -0
- package/dist/BlitWorkspace.js +298 -0
- package/dist/BlitWorkspace.js.map +1 -0
- package/dist/TerminalStore.d.ts +125 -0
- package/dist/TerminalStore.d.ts.map +1 -0
- package/dist/TerminalStore.js +468 -0
- package/dist/TerminalStore.js.map +1 -0
- package/dist/bsp/dsl.d.ts +56 -0
- package/dist/bsp/dsl.d.ts.map +1 -0
- package/dist/bsp/dsl.js +247 -0
- package/dist/bsp/dsl.js.map +1 -0
- package/dist/bsp/index.d.ts +5 -0
- package/dist/bsp/index.d.ts.map +1 -0
- package/dist/bsp/index.js +3 -0
- package/dist/bsp/index.js.map +1 -0
- package/dist/bsp/layout.d.ts +32 -0
- package/dist/bsp/layout.d.ts.map +1 -0
- package/dist/bsp/layout.js +84 -0
- package/dist/bsp/layout.js.map +1 -0
- package/dist/gl-renderer.d.ts +10 -0
- package/dist/gl-renderer.d.ts.map +1 -0
- package/dist/gl-renderer.js +297 -0
- package/dist/gl-renderer.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/keyboard.d.ts +7 -0
- package/dist/keyboard.d.ts.map +1 -0
- package/dist/keyboard.js +118 -0
- package/dist/keyboard.js.map +1 -0
- package/dist/measure.d.ts +19 -0
- package/dist/measure.d.ts.map +1 -0
- package/dist/measure.js +55 -0
- package/dist/measure.js.map +1 -0
- package/dist/palettes.d.ts +3 -0
- package/dist/palettes.d.ts.map +1 -0
- package/dist/palettes.js +803 -0
- package/dist/palettes.js.map +1 -0
- package/dist/protocol.d.ts +34 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +195 -0
- package/dist/protocol.js.map +1 -0
- package/dist/transports/index.d.ts +8 -0
- package/dist/transports/index.d.ts.map +1 -0
- package/dist/transports/index.js +5 -0
- package/dist/transports/index.js.map +1 -0
- package/dist/transports/webrtc-share.d.ts +11 -0
- package/dist/transports/webrtc-share.d.ts.map +1 -0
- package/dist/transports/webrtc-share.js +299 -0
- package/dist/transports/webrtc-share.js.map +1 -0
- package/dist/transports/webrtc.d.ts +11 -0
- package/dist/transports/webrtc.d.ts.map +1 -0
- package/dist/transports/webrtc.js +234 -0
- package/dist/transports/webrtc.js.map +1 -0
- package/dist/transports/websocket.d.ts +37 -0
- package/dist/transports/websocket.d.ts.map +1 -0
- package/dist/transports/websocket.js +200 -0
- package/dist/transports/websocket.js.map +1 -0
- package/dist/transports/webtransport.d.ts +53 -0
- package/dist/transports/webtransport.d.ts.map +1 -0
- package/dist/transports/webtransport.js +277 -0
- package/dist/transports/webtransport.js.map +1 -0
- package/dist/types.d.ts +163 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +42 -0
- package/dist/types.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
const MAX_BATCH_VERTS = 65532;
|
|
2
|
+
const GLYPH_FLOATS_PER_VERT = 8;
|
|
3
|
+
const RECT_VS = `#version 300 es
|
|
4
|
+
in vec2 a_pos;
|
|
5
|
+
in vec4 a_color;
|
|
6
|
+
uniform vec2 u_resolution;
|
|
7
|
+
out vec4 v_color;
|
|
8
|
+
|
|
9
|
+
void main() {
|
|
10
|
+
vec2 zeroToOne = a_pos / u_resolution;
|
|
11
|
+
vec2 zeroToTwo = zeroToOne * 2.0;
|
|
12
|
+
vec2 clip = zeroToTwo - 1.0;
|
|
13
|
+
gl_Position = vec4(clip * vec2(1.0, -1.0), 0.0, 1.0);
|
|
14
|
+
v_color = a_color;
|
|
15
|
+
}
|
|
16
|
+
`;
|
|
17
|
+
const RECT_FS = `#version 300 es
|
|
18
|
+
precision mediump float;
|
|
19
|
+
in vec4 v_color;
|
|
20
|
+
out vec4 fragColor;
|
|
21
|
+
|
|
22
|
+
void main() {
|
|
23
|
+
fragColor = vec4(v_color.rgb * v_color.a, v_color.a);
|
|
24
|
+
}
|
|
25
|
+
`;
|
|
26
|
+
const GLYPH_VS = `#version 300 es
|
|
27
|
+
in vec2 a_pos;
|
|
28
|
+
in vec2 a_uv;
|
|
29
|
+
in vec4 a_color;
|
|
30
|
+
uniform vec2 u_resolution;
|
|
31
|
+
out vec2 v_uv;
|
|
32
|
+
out vec4 v_color;
|
|
33
|
+
|
|
34
|
+
void main() {
|
|
35
|
+
vec2 zeroToOne = a_pos / u_resolution;
|
|
36
|
+
vec2 zeroToTwo = zeroToOne * 2.0;
|
|
37
|
+
vec2 clip = zeroToTwo - 1.0;
|
|
38
|
+
gl_Position = vec4(clip * vec2(1.0, -1.0), 0.0, 1.0);
|
|
39
|
+
v_uv = a_uv;
|
|
40
|
+
v_color = a_color;
|
|
41
|
+
}
|
|
42
|
+
`;
|
|
43
|
+
const GLYPH_FS = `#version 300 es
|
|
44
|
+
precision mediump float;
|
|
45
|
+
in vec2 v_uv;
|
|
46
|
+
in vec4 v_color;
|
|
47
|
+
uniform sampler2D u_texture;
|
|
48
|
+
out vec4 fragColor;
|
|
49
|
+
|
|
50
|
+
void main() {
|
|
51
|
+
vec4 tex = texture(u_texture, v_uv);
|
|
52
|
+
float minC = min(tex.r, min(tex.g, tex.b));
|
|
53
|
+
float maxC = max(tex.r, max(tex.g, tex.b));
|
|
54
|
+
float isGray = step(maxC - minC, 0.02);
|
|
55
|
+
vec3 tinted = v_color.rgb * tex.a;
|
|
56
|
+
fragColor = vec4(mix(tex.rgb, tinted, isGray), tex.a);
|
|
57
|
+
}
|
|
58
|
+
`;
|
|
59
|
+
function compileShader(gl, type, source) {
|
|
60
|
+
const shader = gl.createShader(type);
|
|
61
|
+
if (!shader)
|
|
62
|
+
return null;
|
|
63
|
+
gl.shaderSource(shader, source);
|
|
64
|
+
gl.compileShader(shader);
|
|
65
|
+
if (gl.getShaderParameter(shader, gl.COMPILE_STATUS))
|
|
66
|
+
return shader;
|
|
67
|
+
gl.deleteShader(shader);
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
function createProgram(gl, vs, fs) {
|
|
71
|
+
const vertexShader = compileShader(gl, gl.VERTEX_SHADER, vs);
|
|
72
|
+
const fragmentShader = compileShader(gl, gl.FRAGMENT_SHADER, fs);
|
|
73
|
+
if (!vertexShader || !fragmentShader)
|
|
74
|
+
return null;
|
|
75
|
+
const program = gl.createProgram();
|
|
76
|
+
if (!program)
|
|
77
|
+
return null;
|
|
78
|
+
gl.attachShader(program, vertexShader);
|
|
79
|
+
gl.attachShader(program, fragmentShader);
|
|
80
|
+
gl.linkProgram(program);
|
|
81
|
+
gl.deleteShader(vertexShader);
|
|
82
|
+
gl.deleteShader(fragmentShader);
|
|
83
|
+
if (gl.getProgramParameter(program, gl.LINK_STATUS))
|
|
84
|
+
return program;
|
|
85
|
+
gl.deleteProgram(program);
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
const UNSUPPORTED = {
|
|
89
|
+
supported: false,
|
|
90
|
+
maxDimension: 0,
|
|
91
|
+
resize() { },
|
|
92
|
+
render() { },
|
|
93
|
+
dispose() { },
|
|
94
|
+
};
|
|
95
|
+
export function createGlRenderer(canvas) {
|
|
96
|
+
const gl = canvas.getContext("webgl2", {
|
|
97
|
+
alpha: true,
|
|
98
|
+
antialias: false,
|
|
99
|
+
depth: false,
|
|
100
|
+
stencil: false,
|
|
101
|
+
premultipliedAlpha: true,
|
|
102
|
+
});
|
|
103
|
+
if (!gl)
|
|
104
|
+
return { ...UNSUPPORTED };
|
|
105
|
+
const rectProgram = createProgram(gl, RECT_VS, RECT_FS);
|
|
106
|
+
const glyphProgram = createProgram(gl, GLYPH_VS, GLYPH_FS);
|
|
107
|
+
if (!rectProgram || !glyphProgram) {
|
|
108
|
+
return { ...UNSUPPORTED };
|
|
109
|
+
}
|
|
110
|
+
const rectBuffer = gl.createBuffer();
|
|
111
|
+
const glyphBuffer = gl.createBuffer();
|
|
112
|
+
const atlasTexture = gl.createTexture();
|
|
113
|
+
const rectPosLoc = gl.getAttribLocation(rectProgram, "a_pos");
|
|
114
|
+
const rectColorLoc = gl.getAttribLocation(rectProgram, "a_color");
|
|
115
|
+
const rectResLoc = gl.getUniformLocation(rectProgram, "u_resolution");
|
|
116
|
+
const glyphPosLoc = gl.getAttribLocation(glyphProgram, "a_pos");
|
|
117
|
+
const glyphUvLoc = gl.getAttribLocation(glyphProgram, "a_uv");
|
|
118
|
+
const glyphColorLoc = gl.getAttribLocation(glyphProgram, "a_color");
|
|
119
|
+
const glyphResLoc = gl.getUniformLocation(glyphProgram, "u_resolution");
|
|
120
|
+
const glyphTexLoc = gl.getUniformLocation(glyphProgram, "u_texture");
|
|
121
|
+
const maxDim = gl.getParameter(gl.MAX_RENDERBUFFER_SIZE) || 4096;
|
|
122
|
+
canvas.addEventListener("webglcontextlost", (e) => {
|
|
123
|
+
e.preventDefault();
|
|
124
|
+
console.warn("blit: WebGL context lost");
|
|
125
|
+
});
|
|
126
|
+
canvas.addEventListener("webglcontextrestored", () => {
|
|
127
|
+
console.warn("blit: WebGL context restored");
|
|
128
|
+
});
|
|
129
|
+
gl.disable(gl.DEPTH_TEST);
|
|
130
|
+
gl.disable(gl.CULL_FACE);
|
|
131
|
+
gl.enable(gl.BLEND);
|
|
132
|
+
gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
133
|
+
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);
|
|
134
|
+
gl.bindTexture(gl.TEXTURE_2D, atlasTexture);
|
|
135
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
|
|
136
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
|
|
137
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
138
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
139
|
+
let lastAtlasCanvas = null;
|
|
140
|
+
let lastAtlasVersion = -1;
|
|
141
|
+
function uploadAtlas(atlasCanvas, version) {
|
|
142
|
+
if (atlasCanvas === lastAtlasCanvas && version === lastAtlasVersion)
|
|
143
|
+
return;
|
|
144
|
+
lastAtlasCanvas = atlasCanvas;
|
|
145
|
+
lastAtlasVersion = version;
|
|
146
|
+
gl.bindTexture(gl.TEXTURE_2D, atlasTexture);
|
|
147
|
+
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, atlasCanvas);
|
|
148
|
+
}
|
|
149
|
+
function drawColoredTriangles(data) {
|
|
150
|
+
if (!data.length)
|
|
151
|
+
return;
|
|
152
|
+
const floatsPerVert = 6;
|
|
153
|
+
const totalVerts = data.length / floatsPerVert;
|
|
154
|
+
gl.useProgram(rectProgram);
|
|
155
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, rectBuffer);
|
|
156
|
+
gl.enableVertexAttribArray(rectPosLoc);
|
|
157
|
+
gl.enableVertexAttribArray(rectColorLoc);
|
|
158
|
+
gl.uniform2f(rectResLoc, canvas.width, canvas.height);
|
|
159
|
+
for (let off = 0; off < totalVerts; off += MAX_BATCH_VERTS) {
|
|
160
|
+
const count = Math.min(MAX_BATCH_VERTS, totalVerts - off);
|
|
161
|
+
const slice = data.subarray(off * floatsPerVert, (off + count) * floatsPerVert);
|
|
162
|
+
gl.bufferData(gl.ARRAY_BUFFER, slice, gl.DYNAMIC_DRAW);
|
|
163
|
+
gl.vertexAttribPointer(rectPosLoc, 2, gl.FLOAT, false, 24, 0);
|
|
164
|
+
gl.vertexAttribPointer(rectColorLoc, 4, gl.FLOAT, false, 24, 8);
|
|
165
|
+
gl.drawArrays(gl.TRIANGLES, 0, count);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
function drawSolidRect(x1, y1, x2, y2, r, g, b, a) {
|
|
169
|
+
drawColoredTriangles(new Float32Array([
|
|
170
|
+
x1,
|
|
171
|
+
y1,
|
|
172
|
+
r,
|
|
173
|
+
g,
|
|
174
|
+
b,
|
|
175
|
+
a,
|
|
176
|
+
x2,
|
|
177
|
+
y1,
|
|
178
|
+
r,
|
|
179
|
+
g,
|
|
180
|
+
b,
|
|
181
|
+
a,
|
|
182
|
+
x1,
|
|
183
|
+
y2,
|
|
184
|
+
r,
|
|
185
|
+
g,
|
|
186
|
+
b,
|
|
187
|
+
a,
|
|
188
|
+
x1,
|
|
189
|
+
y2,
|
|
190
|
+
r,
|
|
191
|
+
g,
|
|
192
|
+
b,
|
|
193
|
+
a,
|
|
194
|
+
x2,
|
|
195
|
+
y1,
|
|
196
|
+
r,
|
|
197
|
+
g,
|
|
198
|
+
b,
|
|
199
|
+
a,
|
|
200
|
+
x2,
|
|
201
|
+
y2,
|
|
202
|
+
r,
|
|
203
|
+
g,
|
|
204
|
+
b,
|
|
205
|
+
a,
|
|
206
|
+
]));
|
|
207
|
+
}
|
|
208
|
+
function renderCursor(cursorVisible, cursorCol, cursorRow, cursorStyle, cursorBlinkOn, cell, focused) {
|
|
209
|
+
if (!cursorVisible)
|
|
210
|
+
return;
|
|
211
|
+
const x1 = cursorCol * cell.pw;
|
|
212
|
+
const y1 = cursorRow * cell.ph;
|
|
213
|
+
if (!focused) {
|
|
214
|
+
// Unfocused: non-blinking outline.
|
|
215
|
+
const t = Math.max(1, Math.round(cell.pw * 0.08));
|
|
216
|
+
drawSolidRect(x1, y1, x1 + cell.pw, y1 + t, 0.6, 0.6, 0.6, 0.6);
|
|
217
|
+
drawSolidRect(x1, y1 + cell.ph - t, x1 + cell.pw, y1 + cell.ph, 0.6, 0.6, 0.6, 0.6);
|
|
218
|
+
drawSolidRect(x1, y1, x1 + t, y1 + cell.ph, 0.6, 0.6, 0.6, 0.6);
|
|
219
|
+
drawSolidRect(x1 + cell.pw - t, y1, x1 + cell.pw, y1 + cell.ph, 0.6, 0.6, 0.6, 0.6);
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
const blinks = cursorStyle === 0 ||
|
|
223
|
+
cursorStyle === 1 ||
|
|
224
|
+
cursorStyle === 3 ||
|
|
225
|
+
cursorStyle === 5;
|
|
226
|
+
if (blinks && !cursorBlinkOn)
|
|
227
|
+
return;
|
|
228
|
+
if (cursorStyle === 3 || cursorStyle === 4) {
|
|
229
|
+
const h = Math.max(1, Math.round(cell.ph * 0.12));
|
|
230
|
+
drawSolidRect(x1, y1 + cell.ph - h, x1 + cell.pw, y1 + cell.ph, 0.8, 0.8, 0.8, 0.8);
|
|
231
|
+
}
|
|
232
|
+
else if (cursorStyle === 5 || cursorStyle === 6) {
|
|
233
|
+
const w = Math.max(1, Math.round(cell.pw * 0.12));
|
|
234
|
+
drawSolidRect(x1, y1, x1 + w, y1 + cell.ph, 0.8, 0.8, 0.8, 0.8);
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
drawSolidRect(x1, y1, x1 + cell.pw, y1 + cell.ph, 0.8, 0.8, 0.8, 0.5);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
function uploadAndDrawGlyphs(data, atlasCanvas, atlasVersion) {
|
|
241
|
+
if (!data.length || !atlasCanvas)
|
|
242
|
+
return;
|
|
243
|
+
uploadAtlas(atlasCanvas, atlasVersion);
|
|
244
|
+
const totalVerts = data.length / GLYPH_FLOATS_PER_VERT;
|
|
245
|
+
const stride = GLYPH_FLOATS_PER_VERT * 4;
|
|
246
|
+
gl.useProgram(glyphProgram);
|
|
247
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, glyphBuffer);
|
|
248
|
+
gl.enableVertexAttribArray(glyphPosLoc);
|
|
249
|
+
gl.enableVertexAttribArray(glyphUvLoc);
|
|
250
|
+
gl.enableVertexAttribArray(glyphColorLoc);
|
|
251
|
+
gl.uniform2f(glyphResLoc, canvas.width, canvas.height);
|
|
252
|
+
gl.activeTexture(gl.TEXTURE0);
|
|
253
|
+
gl.bindTexture(gl.TEXTURE_2D, atlasTexture);
|
|
254
|
+
gl.uniform1i(glyphTexLoc, 0);
|
|
255
|
+
for (let off = 0; off < totalVerts; off += MAX_BATCH_VERTS) {
|
|
256
|
+
const count = Math.min(MAX_BATCH_VERTS, totalVerts - off);
|
|
257
|
+
const slice = data.subarray(off * GLYPH_FLOATS_PER_VERT, (off + count) * GLYPH_FLOATS_PER_VERT);
|
|
258
|
+
gl.bufferData(gl.ARRAY_BUFFER, slice, gl.DYNAMIC_DRAW);
|
|
259
|
+
gl.vertexAttribPointer(glyphPosLoc, 2, gl.FLOAT, false, stride, 0);
|
|
260
|
+
gl.vertexAttribPointer(glyphUvLoc, 2, gl.FLOAT, false, stride, 8);
|
|
261
|
+
gl.vertexAttribPointer(glyphColorLoc, 4, gl.FLOAT, false, stride, 16);
|
|
262
|
+
gl.drawArrays(gl.TRIANGLES, 0, count);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
return {
|
|
266
|
+
supported: true,
|
|
267
|
+
maxDimension: maxDim,
|
|
268
|
+
resize(width, height) {
|
|
269
|
+
const w = Math.min(width, maxDim);
|
|
270
|
+
const h = Math.min(height, maxDim);
|
|
271
|
+
if (canvas.width !== w)
|
|
272
|
+
canvas.width = w;
|
|
273
|
+
if (canvas.height !== h)
|
|
274
|
+
canvas.height = h;
|
|
275
|
+
},
|
|
276
|
+
render(bgVerts, glyphVerts, atlasCanvas, atlasVersion, cursorVisible, cursorCol, cursorRow, cursorStyle, cursorBlinkOn, cell, bgColor, focused = true) {
|
|
277
|
+
if (gl.isContextLost())
|
|
278
|
+
return;
|
|
279
|
+
gl.viewport(0, 0, canvas.width, canvas.height);
|
|
280
|
+
gl.clearColor(bgColor[0] / 255, bgColor[1] / 255, bgColor[2] / 255, 1);
|
|
281
|
+
gl.clear(gl.COLOR_BUFFER_BIT);
|
|
282
|
+
drawColoredTriangles(bgVerts);
|
|
283
|
+
if (atlasCanvas) {
|
|
284
|
+
uploadAndDrawGlyphs(glyphVerts, atlasCanvas, atlasVersion);
|
|
285
|
+
}
|
|
286
|
+
renderCursor(cursorVisible, cursorCol, cursorRow, cursorStyle, cursorBlinkOn, cell, focused);
|
|
287
|
+
},
|
|
288
|
+
dispose() {
|
|
289
|
+
gl.deleteBuffer(rectBuffer);
|
|
290
|
+
gl.deleteBuffer(glyphBuffer);
|
|
291
|
+
gl.deleteTexture(atlasTexture);
|
|
292
|
+
gl.deleteProgram(rectProgram);
|
|
293
|
+
gl.deleteProgram(glyphProgram);
|
|
294
|
+
},
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=gl-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gl-renderer.js","sourceRoot":"","sources":["../src/gl-renderer.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export { BlitWorkspace } from "./BlitWorkspace";
|
|
2
|
+
export { SEARCH_SOURCE_TITLE, SEARCH_SOURCE_VISIBLE, SEARCH_SOURCE_SCROLLBACK, } from "./BlitConnection";
|
|
3
|
+
export type { BlitWasmModule } from "./TerminalStore";
|
|
4
|
+
export { measureCell, cssFontFamily } from "./measure";
|
|
5
|
+
export type { CellMetrics } from "./measure";
|
|
6
|
+
export { WebSocketTransport } from "./transports/websocket";
|
|
7
|
+
export { WebTransportTransport } from "./transports/webtransport";
|
|
8
|
+
export { createShareTransport } from "./transports/webrtc-share";
|
|
9
|
+
export { DEFAULT_FONT, DEFAULT_FONT_SIZE } from "./types";
|
|
10
|
+
export type { BlitConnectionSnapshot, BlitDebug, BlitSearchResult, BlitWorkspaceSnapshot, BlitTransport, BlitSession, ConnectionId, ConnectionStatus, SessionId, TerminalPalette, TransportConfig, } from "./types";
|
|
11
|
+
export { PALETTES } from "./palettes";
|
|
12
|
+
export { MOUSE_DOWN, MOUSE_UP, MOUSE_MOVE } from "./protocol";
|
|
13
|
+
export { keyToBytes, encoder } from "./keyboard";
|
|
14
|
+
export type { GlRenderer } from "./gl-renderer";
|
|
15
|
+
export { parseDSL, serializeDSL, leafCount, } from "./bsp/dsl";
|
|
16
|
+
export type { BSPNode, BSPSplit, BSPChild, BSPLeaf } from "./bsp/dsl";
|
|
17
|
+
export { PRESETS, enumeratePanes, assignSessionsToPanes, buildCandidateOrder, reconcileAssignments, adjustWeights, layoutFromDSL, } from "./bsp/layout";
|
|
18
|
+
export type { BSPLayout, BSPPane, BSPAssignments } from "./bsp/layout";
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACvD,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC1D,YAAY,EACV,sBAAsB,EACtB,SAAS,EACT,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEjD,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEtE,OAAO,EACL,OAAO,EACP,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { BlitWorkspace } from "./BlitWorkspace";
|
|
2
|
+
export { SEARCH_SOURCE_TITLE, SEARCH_SOURCE_VISIBLE, SEARCH_SOURCE_SCROLLBACK, } from "./BlitConnection";
|
|
3
|
+
export { measureCell, cssFontFamily } from "./measure";
|
|
4
|
+
export { WebSocketTransport } from "./transports/websocket";
|
|
5
|
+
export { WebTransportTransport } from "./transports/webtransport";
|
|
6
|
+
export { createShareTransport } from "./transports/webrtc-share";
|
|
7
|
+
export { DEFAULT_FONT, DEFAULT_FONT_SIZE } from "./types";
|
|
8
|
+
export { PALETTES } from "./palettes";
|
|
9
|
+
export { MOUSE_DOWN, MOUSE_UP, MOUSE_MOVE } from "./protocol";
|
|
10
|
+
export { keyToBytes, encoder } from "./keyboard";
|
|
11
|
+
export { parseDSL, serializeDSL, leafCount, } from "./bsp/dsl";
|
|
12
|
+
export { PRESETS, enumeratePanes, assignSessionsToPanes, buildCandidateOrder, reconcileAssignments, adjustWeights, layoutFromDSL, } from "./bsp/layout";
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAGvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAe1D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAIjD,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,SAAS,GACV,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,OAAO,EACP,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,aAAa,GACd,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const encoder: TextEncoder;
|
|
2
|
+
/**
|
|
3
|
+
* Encode a keyboard event into the byte sequence expected by the terminal.
|
|
4
|
+
* Returns null if the event should not be forwarded.
|
|
5
|
+
*/
|
|
6
|
+
export declare function keyToBytes(e: KeyboardEvent, appCursor: boolean): Uint8Array | null;
|
|
7
|
+
//# sourceMappingURL=keyboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,aAAoB,CAAC;AAEzC;;;GAGG;AACH,wBAAgB,UAAU,CACxB,CAAC,EAAE,aAAa,EAChB,SAAS,EAAE,OAAO,GACjB,UAAU,GAAG,IAAI,CA0GnB"}
|
package/dist/keyboard.js
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
export const encoder = new TextEncoder();
|
|
2
|
+
/**
|
|
3
|
+
* Encode a keyboard event into the byte sequence expected by the terminal.
|
|
4
|
+
* Returns null if the event should not be forwarded.
|
|
5
|
+
*/
|
|
6
|
+
export function keyToBytes(e, appCursor) {
|
|
7
|
+
if (e.ctrlKey && !e.altKey && !e.metaKey) {
|
|
8
|
+
const kc = e.key.charCodeAt(0);
|
|
9
|
+
if (e.key.length === 1 && kc >= 1 && kc <= 26)
|
|
10
|
+
return new Uint8Array([kc]);
|
|
11
|
+
if (e.key.length === 1) {
|
|
12
|
+
const code = e.key.toLowerCase().charCodeAt(0);
|
|
13
|
+
if (code >= 97 && code <= 122)
|
|
14
|
+
return new Uint8Array([code - 96]);
|
|
15
|
+
if (e.key === "[")
|
|
16
|
+
return new Uint8Array([0x1b]);
|
|
17
|
+
if (e.key === "\\")
|
|
18
|
+
return new Uint8Array([0x1c]);
|
|
19
|
+
if (e.key === "]")
|
|
20
|
+
return new Uint8Array([0x1d]);
|
|
21
|
+
}
|
|
22
|
+
// Fallback: use e.code when e.key is unhelpful (e.g. macOS Ctrl+letter)
|
|
23
|
+
if (e.code && e.code.startsWith("Key")) {
|
|
24
|
+
const cc = e.code.charCodeAt(3);
|
|
25
|
+
if (cc >= 65 && cc <= 90)
|
|
26
|
+
return new Uint8Array([cc - 64]);
|
|
27
|
+
}
|
|
28
|
+
if (e.code === "BracketLeft")
|
|
29
|
+
return new Uint8Array([0x1b]);
|
|
30
|
+
if (e.code === "Backslash")
|
|
31
|
+
return new Uint8Array([0x1c]);
|
|
32
|
+
if (e.code === "BracketRight")
|
|
33
|
+
return new Uint8Array([0x1d]);
|
|
34
|
+
}
|
|
35
|
+
if (e.ctrlKey && e.shiftKey && !e.altKey && !e.metaKey) {
|
|
36
|
+
if (e.key === "?")
|
|
37
|
+
return new Uint8Array([0x7f]);
|
|
38
|
+
if (e.key === " " || e.key === "@")
|
|
39
|
+
return new Uint8Array([0x00]);
|
|
40
|
+
}
|
|
41
|
+
const arrows = {
|
|
42
|
+
ArrowUp: "A",
|
|
43
|
+
ArrowDown: "B",
|
|
44
|
+
ArrowRight: "C",
|
|
45
|
+
ArrowLeft: "D",
|
|
46
|
+
};
|
|
47
|
+
if (arrows[e.key]) {
|
|
48
|
+
const mod = (e.shiftKey ? 1 : 0) +
|
|
49
|
+
(e.altKey ? 2 : 0) +
|
|
50
|
+
(e.ctrlKey ? 4 : 0) +
|
|
51
|
+
(e.metaKey ? 8 : 0);
|
|
52
|
+
if (mod)
|
|
53
|
+
return encoder.encode(`\x1b[1;${mod + 1}${arrows[e.key]}`);
|
|
54
|
+
const prefix = appCursor ? "\x1bO" : "\x1b[";
|
|
55
|
+
return encoder.encode(prefix + arrows[e.key]);
|
|
56
|
+
}
|
|
57
|
+
const mod = (e.shiftKey ? 1 : 0) +
|
|
58
|
+
(e.altKey ? 2 : 0) +
|
|
59
|
+
(e.ctrlKey ? 4 : 0) +
|
|
60
|
+
(e.metaKey ? 8 : 0);
|
|
61
|
+
const tilde = {
|
|
62
|
+
PageUp: "5",
|
|
63
|
+
PageDown: "6",
|
|
64
|
+
Delete: "3",
|
|
65
|
+
Insert: "2",
|
|
66
|
+
};
|
|
67
|
+
if (tilde[e.key]) {
|
|
68
|
+
if (mod)
|
|
69
|
+
return encoder.encode(`\x1b[${tilde[e.key]};${mod + 1}~`);
|
|
70
|
+
return encoder.encode(`\x1b[${tilde[e.key]}~`);
|
|
71
|
+
}
|
|
72
|
+
const he = { Home: "H", End: "F" };
|
|
73
|
+
if (he[e.key]) {
|
|
74
|
+
if (mod)
|
|
75
|
+
return encoder.encode(`\x1b[1;${mod + 1}${he[e.key]}`);
|
|
76
|
+
return encoder.encode(`\x1b[${he[e.key]}`);
|
|
77
|
+
}
|
|
78
|
+
const f14 = { F1: "P", F2: "Q", F3: "R", F4: "S" };
|
|
79
|
+
if (f14[e.key]) {
|
|
80
|
+
if (mod)
|
|
81
|
+
return encoder.encode(`\x1b[1;${mod + 1}${f14[e.key]}`);
|
|
82
|
+
return encoder.encode(`\x1bO${f14[e.key]}`);
|
|
83
|
+
}
|
|
84
|
+
const fkeys = {
|
|
85
|
+
F5: "15",
|
|
86
|
+
F6: "17",
|
|
87
|
+
F7: "18",
|
|
88
|
+
F8: "19",
|
|
89
|
+
F9: "20",
|
|
90
|
+
F10: "21",
|
|
91
|
+
F11: "23",
|
|
92
|
+
F12: "24",
|
|
93
|
+
};
|
|
94
|
+
if (fkeys[e.key]) {
|
|
95
|
+
if (mod)
|
|
96
|
+
return encoder.encode(`\x1b[${fkeys[e.key]};${mod + 1}~`);
|
|
97
|
+
return encoder.encode(`\x1b[${fkeys[e.key]}~`);
|
|
98
|
+
}
|
|
99
|
+
const simple = {
|
|
100
|
+
Enter: "\r",
|
|
101
|
+
Backspace: "\x7f",
|
|
102
|
+
Tab: "\t",
|
|
103
|
+
Escape: "\x1b",
|
|
104
|
+
};
|
|
105
|
+
if (simple[e.key])
|
|
106
|
+
return encoder.encode(simple[e.key]);
|
|
107
|
+
if (e.altKey && !e.ctrlKey && !e.metaKey && e.key.length === 1) {
|
|
108
|
+
const code = e.key.charCodeAt(0);
|
|
109
|
+
if (code >= 0x20 && code <= 0x7e)
|
|
110
|
+
return encoder.encode("\x1b" + e.key);
|
|
111
|
+
return encoder.encode(e.key);
|
|
112
|
+
}
|
|
113
|
+
if (e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey) {
|
|
114
|
+
return encoder.encode(e.key);
|
|
115
|
+
}
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=keyboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface CellMetrics {
|
|
2
|
+
/** CSS pixel width. */
|
|
3
|
+
w: number;
|
|
4
|
+
/** CSS pixel height. */
|
|
5
|
+
h: number;
|
|
6
|
+
/** Device pixel width (integer). */
|
|
7
|
+
pw: number;
|
|
8
|
+
/** Device pixel height (integer). */
|
|
9
|
+
ph: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Measure the dimensions of a single monospace cell by rendering 'M'
|
|
13
|
+
* into a hidden span, then snapping to device pixel boundaries.
|
|
14
|
+
*/
|
|
15
|
+
export declare const CSS_GENERIC: Set<string>;
|
|
16
|
+
/** Quote font families for CSS font shorthand (canvas ctx.font). */
|
|
17
|
+
export declare function cssFontFamily(family: string): string;
|
|
18
|
+
export declare function measureCell(fontFamily: string, fontSize: number, dpr?: number, advanceRatio?: number): CellMetrics;
|
|
19
|
+
//# sourceMappingURL=measure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"measure.d.ts","sourceRoot":"","sources":["../src/measure.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,uBAAuB;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,wBAAwB;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,qCAAqC;IACrC,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,aActB,CAAC;AAEH,oEAAoE;AACpE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAUpD;AAED,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,GAAG,CAAC,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,MAAM,GACpB,WAAW,CAqBb"}
|
package/dist/measure.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Measure the dimensions of a single monospace cell by rendering 'M'
|
|
3
|
+
* into a hidden span, then snapping to device pixel boundaries.
|
|
4
|
+
*/
|
|
5
|
+
export const CSS_GENERIC = new Set([
|
|
6
|
+
"serif",
|
|
7
|
+
"sans-serif",
|
|
8
|
+
"monospace",
|
|
9
|
+
"cursive",
|
|
10
|
+
"fantasy",
|
|
11
|
+
"system-ui",
|
|
12
|
+
"ui-serif",
|
|
13
|
+
"ui-sans-serif",
|
|
14
|
+
"ui-monospace",
|
|
15
|
+
"ui-rounded",
|
|
16
|
+
"math",
|
|
17
|
+
"emoji",
|
|
18
|
+
"fangsong",
|
|
19
|
+
]);
|
|
20
|
+
/** Quote font families for CSS font shorthand (canvas ctx.font). */
|
|
21
|
+
export function cssFontFamily(family) {
|
|
22
|
+
return family
|
|
23
|
+
.split(",")
|
|
24
|
+
.map((f) => {
|
|
25
|
+
f = f.trim();
|
|
26
|
+
if (CSS_GENERIC.has(f.toLowerCase()))
|
|
27
|
+
return f;
|
|
28
|
+
if (f.startsWith('"') || f.startsWith("'"))
|
|
29
|
+
return f;
|
|
30
|
+
return `'${f}'`;
|
|
31
|
+
})
|
|
32
|
+
.join(", ");
|
|
33
|
+
}
|
|
34
|
+
export function measureCell(fontFamily, fontSize, dpr, advanceRatio) {
|
|
35
|
+
const canvas = document.createElement("canvas");
|
|
36
|
+
const ctx = canvas.getContext("2d");
|
|
37
|
+
ctx.font = `${fontSize}px ${cssFontFamily(fontFamily)}`;
|
|
38
|
+
let w;
|
|
39
|
+
if (advanceRatio != null) {
|
|
40
|
+
// Use the font table's advance width, matching how native terminals compute cell width.
|
|
41
|
+
w = advanceRatio * fontSize;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
const sample = "MMMMMMMMMM";
|
|
45
|
+
const metrics = ctx.measureText(sample);
|
|
46
|
+
w = metrics.width / sample.length;
|
|
47
|
+
}
|
|
48
|
+
const hMetrics = ctx.measureText("M");
|
|
49
|
+
const h = hMetrics.fontBoundingBoxAscent + hMetrics.fontBoundingBoxDescent;
|
|
50
|
+
const d = dpr ?? (window.devicePixelRatio || 1);
|
|
51
|
+
const pw = Math.round(w * d);
|
|
52
|
+
const ph = Math.round(h * d);
|
|
53
|
+
return { w: pw / d, h: ph / d, pw, ph };
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=measure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"measure.js","sourceRoot":"","sources":["../src/measure.ts"],"names":[],"mappings":"AAWA;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IACjC,OAAO;IACP,YAAY;IACZ,WAAW;IACX,SAAS;IACT,SAAS;IACT,WAAW;IACX,UAAU;IACV,eAAe;IACf,cAAc;IACd,YAAY;IACZ,MAAM;IACN,OAAO;IACP,UAAU;CACX,CAAC,CAAC;AAEH,oEAAoE;AACpE,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAO,MAAM;SACV,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACb,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,UAAkB,EAClB,QAAgB,EAChB,GAAY,EACZ,YAAqB;IAErB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC;IACrC,GAAG,CAAC,IAAI,GAAG,GAAG,QAAQ,MAAM,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;IAExD,IAAI,CAAS,CAAC;IACd,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;QACzB,wFAAwF;QACxF,CAAC,GAAG,YAAY,GAAG,QAAQ,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,YAAY,CAAC;QAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;IACpC,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,CAAC,GAAG,QAAQ,CAAC,qBAAqB,GAAG,QAAQ,CAAC,sBAAsB,CAAC;IAE3E,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"palettes.d.ts","sourceRoot":"","sources":["../src/palettes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,QAAQ,EAAE,eAAe,EAiyBrC,CAAC"}
|