@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
package/dist/bsp/dsl.js
ADDED
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BSP layout DSL parser and serializer.
|
|
3
|
+
*
|
|
4
|
+
* Syntax:
|
|
5
|
+
* layout = node
|
|
6
|
+
* node = split | leaf
|
|
7
|
+
* split = ("line" | "col" | "tabs") "(" entries ")"
|
|
8
|
+
* entries = entry ("," entry)*
|
|
9
|
+
* entry = [label ":"] node [weight] ["=" command] ["@" fontSize]
|
|
10
|
+
* label = identifier | quoted-string
|
|
11
|
+
* leaf = identifier | quoted-string
|
|
12
|
+
* command = identifier | quoted-string
|
|
13
|
+
* weight = number
|
|
14
|
+
* fontSize = number ["px" | "pt" | "%"]
|
|
15
|
+
* identifier = [a-zA-Z_][a-zA-Z0-9_-]*
|
|
16
|
+
*
|
|
17
|
+
* Examples:
|
|
18
|
+
* shell
|
|
19
|
+
* line(chat 2, col(shell, tail, htop))
|
|
20
|
+
* line(editor 3 @14, col(shell @11, logs))
|
|
21
|
+
* tabs(shell, htop, logs)
|
|
22
|
+
* tabs("Editor": col(a, b), "Terminal": col(c, d))
|
|
23
|
+
* line(editor 2, tabs(shell, logs))
|
|
24
|
+
* col(htop="htop", shell="cd /src && make watch")
|
|
25
|
+
*/
|
|
26
|
+
const SPECIAL_CHARS = /[\s(),@'"\\:=]/;
|
|
27
|
+
export class DSLParseError extends Error {
|
|
28
|
+
constructor(message, offset) {
|
|
29
|
+
super(message);
|
|
30
|
+
this.offset = offset;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
// Parser
|
|
35
|
+
// ---------------------------------------------------------------------------
|
|
36
|
+
export function parseDSL(input) {
|
|
37
|
+
const trimmed = input.trim();
|
|
38
|
+
if (!trimmed)
|
|
39
|
+
throw new DSLParseError("Empty layout", 0);
|
|
40
|
+
let pos = 0;
|
|
41
|
+
function peek() {
|
|
42
|
+
return trimmed[pos] ?? "";
|
|
43
|
+
}
|
|
44
|
+
function skipWhitespace() {
|
|
45
|
+
while (pos < trimmed.length && /\s/.test(trimmed[pos]))
|
|
46
|
+
pos++;
|
|
47
|
+
}
|
|
48
|
+
function expect(ch) {
|
|
49
|
+
skipWhitespace();
|
|
50
|
+
if (trimmed[pos] !== ch) {
|
|
51
|
+
throw new DSLParseError(`Expected '${ch}' at position ${pos}`, pos);
|
|
52
|
+
}
|
|
53
|
+
pos++;
|
|
54
|
+
}
|
|
55
|
+
function parseNumber() {
|
|
56
|
+
skipWhitespace();
|
|
57
|
+
const start = pos;
|
|
58
|
+
while (pos < trimmed.length && /[0-9.]/.test(trimmed[pos]))
|
|
59
|
+
pos++;
|
|
60
|
+
if (pos === start)
|
|
61
|
+
throw new DSLParseError(`Expected number at position ${pos}`, pos);
|
|
62
|
+
const n = Number(trimmed.slice(start, pos));
|
|
63
|
+
if (!Number.isFinite(n) || n <= 0) {
|
|
64
|
+
throw new DSLParseError(`Invalid number at position ${start}`, start);
|
|
65
|
+
}
|
|
66
|
+
return n;
|
|
67
|
+
}
|
|
68
|
+
function parseIdentifier() {
|
|
69
|
+
skipWhitespace();
|
|
70
|
+
// Quoted string
|
|
71
|
+
if (peek() === '"' || peek() === "'") {
|
|
72
|
+
const quote = trimmed[pos];
|
|
73
|
+
pos++;
|
|
74
|
+
let value = "";
|
|
75
|
+
while (pos < trimmed.length && trimmed[pos] !== quote) {
|
|
76
|
+
if (trimmed[pos] === "\\" && pos + 1 < trimmed.length) {
|
|
77
|
+
pos++;
|
|
78
|
+
value += trimmed[pos];
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
value += trimmed[pos];
|
|
82
|
+
}
|
|
83
|
+
pos++;
|
|
84
|
+
}
|
|
85
|
+
if (pos >= trimmed.length)
|
|
86
|
+
throw new DSLParseError(`Unterminated string at position ${pos}`, pos);
|
|
87
|
+
pos++; // skip closing quote
|
|
88
|
+
return value;
|
|
89
|
+
}
|
|
90
|
+
const start = pos;
|
|
91
|
+
while (pos < trimmed.length && !SPECIAL_CHARS.test(trimmed[pos]))
|
|
92
|
+
pos++;
|
|
93
|
+
if (pos === start)
|
|
94
|
+
throw new DSLParseError(`Expected identifier at position ${pos}`, pos);
|
|
95
|
+
return trimmed.slice(start, pos);
|
|
96
|
+
}
|
|
97
|
+
function parseFontSize() {
|
|
98
|
+
const n = parseNumber();
|
|
99
|
+
const unitStart = pos;
|
|
100
|
+
if (pos < trimmed.length && /[a-z%]/.test(trimmed[pos])) {
|
|
101
|
+
while (pos < trimmed.length && /[a-z%]/.test(trimmed[pos]))
|
|
102
|
+
pos++;
|
|
103
|
+
const unit = trimmed.slice(unitStart, pos);
|
|
104
|
+
if (unit === "px" || unit === "pt" || unit === "%") {
|
|
105
|
+
return `${n}${unit}`;
|
|
106
|
+
}
|
|
107
|
+
throw new DSLParseError(`Unknown font size unit '${unit}' at position ${unitStart}`, unitStart);
|
|
108
|
+
}
|
|
109
|
+
return n;
|
|
110
|
+
}
|
|
111
|
+
function parseEntry() {
|
|
112
|
+
let label;
|
|
113
|
+
skipWhitespace();
|
|
114
|
+
const savedPos = pos;
|
|
115
|
+
if (peek() === '"' || peek() === "'") {
|
|
116
|
+
const candidate = parseIdentifier();
|
|
117
|
+
skipWhitespace();
|
|
118
|
+
if (peek() === ":") {
|
|
119
|
+
pos++;
|
|
120
|
+
label = candidate;
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
pos = savedPos;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
else if (/[a-zA-Z_]/.test(peek())) {
|
|
127
|
+
const candidate = parseIdentifier();
|
|
128
|
+
skipWhitespace();
|
|
129
|
+
if (peek() === ":" &&
|
|
130
|
+
candidate !== "line" &&
|
|
131
|
+
candidate !== "col" &&
|
|
132
|
+
candidate !== "tabs") {
|
|
133
|
+
pos++;
|
|
134
|
+
label = candidate;
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
pos = savedPos;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
const node = parseNode();
|
|
141
|
+
skipWhitespace();
|
|
142
|
+
let weight = 1;
|
|
143
|
+
if (pos < trimmed.length && /[0-9]/.test(peek())) {
|
|
144
|
+
weight = parseNumber();
|
|
145
|
+
}
|
|
146
|
+
skipWhitespace();
|
|
147
|
+
if (peek() === "=") {
|
|
148
|
+
pos++;
|
|
149
|
+
const command = parseIdentifier();
|
|
150
|
+
if (node.type !== "leaf") {
|
|
151
|
+
throw new DSLParseError(`command can only be applied to leaf nodes at position ${pos}`, pos);
|
|
152
|
+
}
|
|
153
|
+
node.command = command;
|
|
154
|
+
}
|
|
155
|
+
skipWhitespace();
|
|
156
|
+
if (peek() === "@") {
|
|
157
|
+
pos++;
|
|
158
|
+
const fontSize = parseFontSize();
|
|
159
|
+
if (node.type !== "leaf") {
|
|
160
|
+
throw new DSLParseError(`fontSize can only be applied to leaf nodes at position ${pos}`, pos);
|
|
161
|
+
}
|
|
162
|
+
node.fontSize = fontSize;
|
|
163
|
+
}
|
|
164
|
+
return { node, weight, ...(label != null && { label }) };
|
|
165
|
+
}
|
|
166
|
+
function parseNode() {
|
|
167
|
+
skipWhitespace();
|
|
168
|
+
const start = pos;
|
|
169
|
+
const id = parseIdentifier();
|
|
170
|
+
if ((id === "line" || id === "col" || id === "tabs") &&
|
|
171
|
+
(skipWhitespace(), peek() === "(")) {
|
|
172
|
+
const direction = id === "line" ? "horizontal" : id === "col" ? "vertical" : "tabs";
|
|
173
|
+
expect("(");
|
|
174
|
+
const children = [parseEntry()];
|
|
175
|
+
skipWhitespace();
|
|
176
|
+
while (peek() === ",") {
|
|
177
|
+
pos++;
|
|
178
|
+
children.push(parseEntry());
|
|
179
|
+
skipWhitespace();
|
|
180
|
+
}
|
|
181
|
+
expect(")");
|
|
182
|
+
if (children.length < 2) {
|
|
183
|
+
throw new DSLParseError(`Split needs at least 2 children at position ${start}`, start);
|
|
184
|
+
}
|
|
185
|
+
return { type: "split", direction, children };
|
|
186
|
+
}
|
|
187
|
+
return { type: "leaf", tag: id };
|
|
188
|
+
}
|
|
189
|
+
const entry = parseEntry();
|
|
190
|
+
skipWhitespace();
|
|
191
|
+
if (pos < trimmed.length) {
|
|
192
|
+
throw new DSLParseError(`Unexpected '${trimmed[pos]}' at position ${pos}`, pos);
|
|
193
|
+
}
|
|
194
|
+
return { root: entry.node, weight: entry.weight };
|
|
195
|
+
}
|
|
196
|
+
// ---------------------------------------------------------------------------
|
|
197
|
+
// Serializer
|
|
198
|
+
// ---------------------------------------------------------------------------
|
|
199
|
+
function quoteIfNeeded(value) {
|
|
200
|
+
return value.length > 0 && !SPECIAL_CHARS.test(value)
|
|
201
|
+
? value
|
|
202
|
+
: `"${value.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
|
|
203
|
+
}
|
|
204
|
+
function serializeNode(node, weight, label) {
|
|
205
|
+
let s;
|
|
206
|
+
if (node.type === "leaf") {
|
|
207
|
+
s = quoteIfNeeded(node.tag);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
const keyword = node.direction === "horizontal"
|
|
211
|
+
? "line"
|
|
212
|
+
: node.direction === "vertical"
|
|
213
|
+
? "col"
|
|
214
|
+
: "tabs";
|
|
215
|
+
const inner = node.children
|
|
216
|
+
.map((c) => serializeNode(c.node, c.weight, c.label))
|
|
217
|
+
.join(", ");
|
|
218
|
+
s = `${keyword}(${inner})`;
|
|
219
|
+
}
|
|
220
|
+
if (weight !== 1)
|
|
221
|
+
s += ` ${weight}`;
|
|
222
|
+
if (node.type === "leaf" && node.command != null) {
|
|
223
|
+
s += `="${node.command.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
|
|
224
|
+
}
|
|
225
|
+
if (node.type === "leaf" && node.fontSize != null)
|
|
226
|
+
s += ` @${node.fontSize}`;
|
|
227
|
+
if (label != null)
|
|
228
|
+
s = `${quoteIfNeeded(label)}: ${s}`;
|
|
229
|
+
return s;
|
|
230
|
+
}
|
|
231
|
+
export function serializeDSL(root, weight = 1) {
|
|
232
|
+
return serializeNode(root, weight);
|
|
233
|
+
}
|
|
234
|
+
// ---------------------------------------------------------------------------
|
|
235
|
+
// Utilities
|
|
236
|
+
// ---------------------------------------------------------------------------
|
|
237
|
+
export function collectTags(node) {
|
|
238
|
+
if (node.type === "leaf")
|
|
239
|
+
return [node.tag];
|
|
240
|
+
return node.children.flatMap((c) => collectTags(c.node));
|
|
241
|
+
}
|
|
242
|
+
export function leafCount(node) {
|
|
243
|
+
if (node.type === "leaf")
|
|
244
|
+
return 1;
|
|
245
|
+
return node.children.reduce((sum, c) => sum + leafCount(c.node), 0);
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=dsl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsl.js","sourceRoot":"","sources":["../../src/bsp/dsl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { parseDSL, serializeDSL, collectTags, leafCount, DSLParseError, } from "./dsl";
|
|
2
|
+
export type { BSPNode, BSPSplit, BSPChild, BSPLeaf } from "./dsl";
|
|
3
|
+
export { PRESETS, enumeratePanes, assignSessionsToPanes, buildCandidateOrder, reconcileAssignments, adjustWeights, layoutFromDSL, } from "./layout";
|
|
4
|
+
export type { BSPLayout, BSPPane, BSPAssignments } from "./layout";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bsp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,SAAS,EACT,aAAa,GACd,MAAM,OAAO,CAAC;AACf,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAElE,OAAO,EACL,OAAO,EACP,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,aAAa,GACd,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bsp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,SAAS,EACT,aAAa,GACd,MAAM,OAAO,CAAC;AAGf,OAAO,EACL,OAAO,EACP,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,aAAa,GACd,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { BSPNode, BSPSplit, BSPLeaf } from "./dsl";
|
|
2
|
+
export interface BSPLayout {
|
|
3
|
+
name: string;
|
|
4
|
+
dsl: string;
|
|
5
|
+
root: BSPNode;
|
|
6
|
+
weight: number;
|
|
7
|
+
}
|
|
8
|
+
export interface BSPPane {
|
|
9
|
+
id: string;
|
|
10
|
+
leaf: BSPLeaf;
|
|
11
|
+
}
|
|
12
|
+
export interface BSPAssignments {
|
|
13
|
+
assignments: Record<string, string | null>;
|
|
14
|
+
}
|
|
15
|
+
export declare const PRESETS: BSPLayout[];
|
|
16
|
+
export declare function enumeratePanes(node: BSPNode, path?: readonly number[]): BSPPane[];
|
|
17
|
+
export declare function assignSessionsToPanes(panes: readonly BSPPane[], orderedSessionIds: readonly string[]): BSPAssignments;
|
|
18
|
+
export declare function buildCandidateOrder({ liveSessionIds, focusedSessionId, currentAssignedInPaneOrder, lruSessionIds, }: {
|
|
19
|
+
liveSessionIds: readonly string[];
|
|
20
|
+
focusedSessionId: string | null;
|
|
21
|
+
currentAssignedInPaneOrder?: readonly string[];
|
|
22
|
+
lruSessionIds?: readonly string[];
|
|
23
|
+
}): string[];
|
|
24
|
+
export declare function reconcileAssignments({ panes, previous, liveSessionIds, knownSessionIds, }: {
|
|
25
|
+
panes: readonly BSPPane[];
|
|
26
|
+
previous: BSPAssignments;
|
|
27
|
+
liveSessionIds: readonly string[];
|
|
28
|
+
knownSessionIds: readonly string[];
|
|
29
|
+
}): BSPAssignments;
|
|
30
|
+
export declare function adjustWeights(split: BSPSplit, indexA: number, indexB: number, fraction: number): BSPSplit;
|
|
31
|
+
export declare function layoutFromDSL(dsl: string): BSPLayout;
|
|
32
|
+
//# sourceMappingURL=layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/bsp/layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAY,OAAO,EAAE,MAAM,OAAO,CAAC;AAGlE,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;CAC5C;AAED,eAAO,MAAM,OAAO,EAAE,SAAS,EAQ9B,CAAC;AAMF,wBAAgB,cAAc,CAC5B,IAAI,EAAE,OAAO,EACb,IAAI,GAAE,SAAS,MAAM,EAAO,GAC3B,OAAO,EAAE,CAYX;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,OAAO,EAAE,EACzB,iBAAiB,EAAE,SAAS,MAAM,EAAE,GACnC,cAAc,CAWhB;AAED,wBAAgB,mBAAmB,CAAC,EAClC,cAAc,EACd,gBAAgB,EAChB,0BAA+B,EAC/B,aAAkB,GACnB,EAAE;IACD,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,0BAA0B,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC,GAAG,MAAM,EAAE,CAiBX;AAED,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,QAAQ,EACR,cAAc,EACd,eAAe,GAChB,EAAE;IACD,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IAC1B,QAAQ,EAAE,cAAc,CAAC;IACzB,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,GAAG,cAAc,CAajB;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,QAAQ,CAgBV;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAGpD"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { parseDSL } from "./dsl";
|
|
2
|
+
export const PRESETS = [
|
|
3
|
+
preset("Side by side", "line(left, right)"),
|
|
4
|
+
preset("Tabs", "tabs(a, b, c)"),
|
|
5
|
+
preset("2-1 thirds", "line(main 2, side)"),
|
|
6
|
+
preset("Grid", "col(line(a, b), line(c, d))"),
|
|
7
|
+
preset("Dev", "line(editor 2, col(shell, logs))"),
|
|
8
|
+
preset("Dev + tabs", "line(editor 2, tabs(shell, logs, build))"),
|
|
9
|
+
preset("Split + tabs", "line(tabs(a, b) 2, tabs(c, d))"),
|
|
10
|
+
];
|
|
11
|
+
function preset(name, dsl) {
|
|
12
|
+
return { name, dsl, ...parseDSL(dsl) };
|
|
13
|
+
}
|
|
14
|
+
export function enumeratePanes(node, path = []) {
|
|
15
|
+
if (node.type === "leaf") {
|
|
16
|
+
return [
|
|
17
|
+
{
|
|
18
|
+
id: path.length > 0 ? path.join(".") : "0",
|
|
19
|
+
leaf: node,
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
}
|
|
23
|
+
return node.children.flatMap((child, index) => enumeratePanes(child.node, [...path, index]));
|
|
24
|
+
}
|
|
25
|
+
export function assignSessionsToPanes(panes, orderedSessionIds) {
|
|
26
|
+
const assignments = {};
|
|
27
|
+
let sessionIdx = 0;
|
|
28
|
+
for (const pane of panes) {
|
|
29
|
+
if (pane.leaf.command) {
|
|
30
|
+
assignments[pane.id] = null;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
assignments[pane.id] = orderedSessionIds[sessionIdx++] ?? null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return { assignments };
|
|
37
|
+
}
|
|
38
|
+
export function buildCandidateOrder({ liveSessionIds, focusedSessionId, currentAssignedInPaneOrder = [], lruSessionIds = [], }) {
|
|
39
|
+
const live = new Set(liveSessionIds);
|
|
40
|
+
const seen = new Set();
|
|
41
|
+
const ordered = [];
|
|
42
|
+
const push = (sessionId) => {
|
|
43
|
+
if (!sessionId || !live.has(sessionId) || seen.has(sessionId))
|
|
44
|
+
return;
|
|
45
|
+
seen.add(sessionId);
|
|
46
|
+
ordered.push(sessionId);
|
|
47
|
+
};
|
|
48
|
+
push(focusedSessionId);
|
|
49
|
+
currentAssignedInPaneOrder.forEach(push);
|
|
50
|
+
lruSessionIds.forEach(push);
|
|
51
|
+
liveSessionIds.forEach(push);
|
|
52
|
+
return ordered;
|
|
53
|
+
}
|
|
54
|
+
export function reconcileAssignments({ panes, previous, liveSessionIds, knownSessionIds, }) {
|
|
55
|
+
const live = new Set(liveSessionIds);
|
|
56
|
+
const known = new Set(knownSessionIds);
|
|
57
|
+
const assignments = {};
|
|
58
|
+
for (const pane of panes) {
|
|
59
|
+
const sessionId = previous.assignments[pane.id];
|
|
60
|
+
const keep = sessionId != null && (live.has(sessionId) || !known.has(sessionId));
|
|
61
|
+
assignments[pane.id] = keep ? sessionId : null;
|
|
62
|
+
}
|
|
63
|
+
return { assignments };
|
|
64
|
+
}
|
|
65
|
+
export function adjustWeights(split, indexA, indexB, fraction) {
|
|
66
|
+
const totalWeight = split.children[indexA].weight + split.children[indexB].weight;
|
|
67
|
+
const delta = fraction * totalWeight;
|
|
68
|
+
const minWeight = 0.1;
|
|
69
|
+
const newA = Math.max(minWeight, split.children[indexA].weight + delta);
|
|
70
|
+
const newB = Math.max(minWeight, split.children[indexB].weight - delta);
|
|
71
|
+
const children = split.children.map((c, i) => {
|
|
72
|
+
if (i === indexA)
|
|
73
|
+
return { ...c, weight: newA };
|
|
74
|
+
if (i === indexB)
|
|
75
|
+
return { ...c, weight: newB };
|
|
76
|
+
return c;
|
|
77
|
+
});
|
|
78
|
+
return { ...split, children };
|
|
79
|
+
}
|
|
80
|
+
export function layoutFromDSL(dsl) {
|
|
81
|
+
const { root, weight } = parseDSL(dsl);
|
|
82
|
+
return { name: dsl, dsl, root, weight };
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/bsp/layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CellMetrics } from "./measure";
|
|
2
|
+
export interface GlRenderer {
|
|
3
|
+
supported: boolean;
|
|
4
|
+
maxDimension: number;
|
|
5
|
+
resize(width: number, height: number): void;
|
|
6
|
+
render(bgVerts: Float32Array, glyphVerts: Float32Array, atlasCanvas: HTMLCanvasElement | undefined, atlasVersion: number, cursorVisible: boolean, cursorCol: number, cursorRow: number, cursorStyle: number, cursorBlinkOn: boolean, cell: CellMetrics, bgColor: [number, number, number], focused?: boolean): void;
|
|
7
|
+
dispose(): void;
|
|
8
|
+
}
|
|
9
|
+
export declare function createGlRenderer(canvas: HTMLCanvasElement): GlRenderer;
|
|
10
|
+
//# sourceMappingURL=gl-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gl-renderer.d.ts","sourceRoot":"","sources":["../src/gl-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAmG7C,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,MAAM,CACJ,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,YAAY,EACxB,WAAW,EAAE,iBAAiB,GAAG,SAAS,EAC1C,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,OAAO,EACtB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,OAAO,EACtB,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACjC,OAAO,CAAC,EAAE,OAAO,GAChB,IAAI,CAAC;IACR,OAAO,IAAI,IAAI,CAAC;CACjB;AAUD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,UAAU,CAqStE"}
|