x-shell.js 0.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 +304 -0
- package/dist/client/browser-bundle.js +314 -0
- package/dist/client/browser-bundle.js.map +7 -0
- package/dist/client/index.d.ts +7 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +5 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/terminal-client.d.ts +122 -0
- package/dist/client/terminal-client.d.ts.map +1 -0
- package/dist/client/terminal-client.js +328 -0
- package/dist/client/terminal-client.js.map +1 -0
- package/dist/server/index.d.ts +7 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +5 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/terminal-server.d.ts +107 -0
- package/dist/server/terminal-server.d.ts.map +1 -0
- package/dist/server/terminal-server.js +392 -0
- package/dist/server/terminal-server.js.map +1 -0
- package/dist/shared/types.d.ts +133 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +5 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/ui/browser-bundle.js +1654 -0
- package/dist/ui/browser-bundle.js.map +7 -0
- package/dist/ui/index.d.ts +6 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +6 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/styles.d.ts +16 -0
- package/dist/ui/styles.d.ts.map +1 -0
- package/dist/ui/styles.js +125 -0
- package/dist/ui/styles.js.map +1 -0
- package/dist/ui/x-shell-terminal.d.ts +100 -0
- package/dist/ui/x-shell-terminal.d.ts.map +1 -0
- package/dist/ui/x-shell-terminal.js +540 -0
- package/dist/ui/x-shell-terminal.js.map +1 -0
- package/package.json +94 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/ui/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared styles for x-shell UI components
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Theme styles - sets CSS custom properties based on theme attribute
|
|
6
|
+
*/
|
|
7
|
+
export declare const themeStyles: import("lit").CSSResult;
|
|
8
|
+
/**
|
|
9
|
+
* Shared base styles
|
|
10
|
+
*/
|
|
11
|
+
export declare const sharedStyles: import("lit").CSSResult;
|
|
12
|
+
/**
|
|
13
|
+
* Button styles
|
|
14
|
+
*/
|
|
15
|
+
export declare const buttonStyles: import("lit").CSSResult;
|
|
16
|
+
//# sourceMappingURL=styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/ui/styles.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,eAAO,MAAM,WAAW,yBAwEvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,yBAaxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,yBAuBxB,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared styles for x-shell UI components
|
|
3
|
+
*/
|
|
4
|
+
import { css } from 'lit';
|
|
5
|
+
/**
|
|
6
|
+
* Theme styles - sets CSS custom properties based on theme attribute
|
|
7
|
+
*/
|
|
8
|
+
export const themeStyles = css `
|
|
9
|
+
/* Light theme */
|
|
10
|
+
:host([theme='light']) {
|
|
11
|
+
--xs-bg: #ffffff;
|
|
12
|
+
--xs-bg-header: #f5f5f5;
|
|
13
|
+
--xs-text: #1f2937;
|
|
14
|
+
--xs-text-muted: #6b7280;
|
|
15
|
+
--xs-border: #e5e7eb;
|
|
16
|
+
--xs-terminal-bg: #ffffff;
|
|
17
|
+
--xs-terminal-fg: #1f2937;
|
|
18
|
+
--xs-terminal-cursor: #1f2937;
|
|
19
|
+
--xs-terminal-selection: #b4d5fe;
|
|
20
|
+
--xs-btn-bg: #e5e7eb;
|
|
21
|
+
--xs-btn-text: #374151;
|
|
22
|
+
--xs-btn-hover: #d1d5db;
|
|
23
|
+
--xs-status-connected: #22c55e;
|
|
24
|
+
--xs-status-disconnected: #ef4444;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* Dark theme (default) */
|
|
28
|
+
:host,
|
|
29
|
+
:host([theme='dark']) {
|
|
30
|
+
--xs-bg: #1e1e1e;
|
|
31
|
+
--xs-bg-header: #2d2d2d;
|
|
32
|
+
--xs-text: #cccccc;
|
|
33
|
+
--xs-text-muted: #808080;
|
|
34
|
+
--xs-border: #3e3e3e;
|
|
35
|
+
--xs-terminal-bg: #1e1e1e;
|
|
36
|
+
--xs-terminal-fg: #cccccc;
|
|
37
|
+
--xs-terminal-cursor: #ffffff;
|
|
38
|
+
--xs-terminal-selection: #264f78;
|
|
39
|
+
--xs-btn-bg: #3c3c3c;
|
|
40
|
+
--xs-btn-text: #cccccc;
|
|
41
|
+
--xs-btn-hover: #4a4a4a;
|
|
42
|
+
--xs-status-connected: #22c55e;
|
|
43
|
+
--xs-status-disconnected: #ef4444;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/* Auto theme - follows system preference */
|
|
47
|
+
:host([theme='auto']) {
|
|
48
|
+
--xs-bg: #1e1e1e;
|
|
49
|
+
--xs-bg-header: #2d2d2d;
|
|
50
|
+
--xs-text: #cccccc;
|
|
51
|
+
--xs-text-muted: #808080;
|
|
52
|
+
--xs-border: #3e3e3e;
|
|
53
|
+
--xs-terminal-bg: #1e1e1e;
|
|
54
|
+
--xs-terminal-fg: #cccccc;
|
|
55
|
+
--xs-terminal-cursor: #ffffff;
|
|
56
|
+
--xs-terminal-selection: #264f78;
|
|
57
|
+
--xs-btn-bg: #3c3c3c;
|
|
58
|
+
--xs-btn-text: #cccccc;
|
|
59
|
+
--xs-btn-hover: #4a4a4a;
|
|
60
|
+
--xs-status-connected: #22c55e;
|
|
61
|
+
--xs-status-disconnected: #ef4444;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@media (prefers-color-scheme: light) {
|
|
65
|
+
:host([theme='auto']) {
|
|
66
|
+
--xs-bg: #ffffff;
|
|
67
|
+
--xs-bg-header: #f5f5f5;
|
|
68
|
+
--xs-text: #1f2937;
|
|
69
|
+
--xs-text-muted: #6b7280;
|
|
70
|
+
--xs-border: #e5e7eb;
|
|
71
|
+
--xs-terminal-bg: #ffffff;
|
|
72
|
+
--xs-terminal-fg: #1f2937;
|
|
73
|
+
--xs-terminal-cursor: #1f2937;
|
|
74
|
+
--xs-terminal-selection: #b4d5fe;
|
|
75
|
+
--xs-btn-bg: #e5e7eb;
|
|
76
|
+
--xs-btn-text: #374151;
|
|
77
|
+
--xs-btn-hover: #d1d5db;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
`;
|
|
81
|
+
/**
|
|
82
|
+
* Shared base styles
|
|
83
|
+
*/
|
|
84
|
+
export const sharedStyles = css `
|
|
85
|
+
:host {
|
|
86
|
+
display: block;
|
|
87
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
|
|
88
|
+
Ubuntu, Cantarell, sans-serif;
|
|
89
|
+
font-size: 14px;
|
|
90
|
+
color: var(--xs-text);
|
|
91
|
+
background: var(--xs-bg);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
* {
|
|
95
|
+
box-sizing: border-box;
|
|
96
|
+
}
|
|
97
|
+
`;
|
|
98
|
+
/**
|
|
99
|
+
* Button styles
|
|
100
|
+
*/
|
|
101
|
+
export const buttonStyles = css `
|
|
102
|
+
button {
|
|
103
|
+
display: inline-flex;
|
|
104
|
+
align-items: center;
|
|
105
|
+
gap: 4px;
|
|
106
|
+
padding: 6px 12px;
|
|
107
|
+
border: none;
|
|
108
|
+
border-radius: 4px;
|
|
109
|
+
background: var(--xs-btn-bg);
|
|
110
|
+
color: var(--xs-btn-text);
|
|
111
|
+
font-size: 13px;
|
|
112
|
+
cursor: pointer;
|
|
113
|
+
transition: background-color 0.15s;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
button:hover {
|
|
117
|
+
background: var(--xs-btn-hover);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
button:disabled {
|
|
121
|
+
opacity: 0.5;
|
|
122
|
+
cursor: not-allowed;
|
|
123
|
+
}
|
|
124
|
+
`;
|
|
125
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/ui/styles.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwE7B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;;;;;;;;CAa9B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;CAuB9B,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* x-shell-terminal web component
|
|
3
|
+
*
|
|
4
|
+
* A ready-to-use terminal component that wraps xterm.js and
|
|
5
|
+
* connects to an x-shell server via WebSocket.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* ```html
|
|
9
|
+
* <x-shell-terminal
|
|
10
|
+
* url="ws://localhost:3000/terminal"
|
|
11
|
+
* shell="/bin/bash"
|
|
12
|
+
* cwd="/home/user"
|
|
13
|
+
* theme="dark"
|
|
14
|
+
* ></x-shell-terminal>
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
import { LitElement } from 'lit';
|
|
18
|
+
import type { TerminalOptions } from '../shared/types.js';
|
|
19
|
+
export declare class XShellTerminal extends LitElement {
|
|
20
|
+
static styles: import("lit").CSSResult[];
|
|
21
|
+
url: string;
|
|
22
|
+
shell: string;
|
|
23
|
+
cwd: string;
|
|
24
|
+
cols: number;
|
|
25
|
+
rows: number;
|
|
26
|
+
theme: 'dark' | 'light' | 'auto';
|
|
27
|
+
noHeader: boolean;
|
|
28
|
+
autoConnect: boolean;
|
|
29
|
+
autoSpawn: boolean;
|
|
30
|
+
fontSize: number;
|
|
31
|
+
fontFamily: string;
|
|
32
|
+
private client;
|
|
33
|
+
private terminal;
|
|
34
|
+
private fitAddon;
|
|
35
|
+
private connected;
|
|
36
|
+
private sessionActive;
|
|
37
|
+
private loading;
|
|
38
|
+
private error;
|
|
39
|
+
private sessionInfo;
|
|
40
|
+
private xtermModule;
|
|
41
|
+
private fitAddonModule;
|
|
42
|
+
private resizeObserver;
|
|
43
|
+
connectedCallback(): void;
|
|
44
|
+
disconnectedCallback(): void;
|
|
45
|
+
/**
|
|
46
|
+
* Load xterm.js dynamically
|
|
47
|
+
*/
|
|
48
|
+
private loadXterm;
|
|
49
|
+
/**
|
|
50
|
+
* Connect to the terminal server
|
|
51
|
+
*/
|
|
52
|
+
connect(): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Disconnect from the server
|
|
55
|
+
*/
|
|
56
|
+
disconnect(): void;
|
|
57
|
+
/**
|
|
58
|
+
* Spawn a terminal session
|
|
59
|
+
*/
|
|
60
|
+
spawn(options?: TerminalOptions): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Initialize xterm.js UI
|
|
63
|
+
*/
|
|
64
|
+
private initTerminalUI;
|
|
65
|
+
/**
|
|
66
|
+
* Get terminal theme based on component theme
|
|
67
|
+
*/
|
|
68
|
+
private getTerminalTheme;
|
|
69
|
+
/**
|
|
70
|
+
* Kill the current session
|
|
71
|
+
*/
|
|
72
|
+
kill(): void;
|
|
73
|
+
/**
|
|
74
|
+
* Clear the terminal
|
|
75
|
+
*/
|
|
76
|
+
clear(): void;
|
|
77
|
+
/**
|
|
78
|
+
* Write data to the terminal (display only, not sent to server)
|
|
79
|
+
*/
|
|
80
|
+
write(data: string): void;
|
|
81
|
+
/**
|
|
82
|
+
* Write line to the terminal (display only, not sent to server)
|
|
83
|
+
*/
|
|
84
|
+
writeln(data: string): void;
|
|
85
|
+
/**
|
|
86
|
+
* Focus the terminal
|
|
87
|
+
*/
|
|
88
|
+
focus(): void;
|
|
89
|
+
/**
|
|
90
|
+
* Cleanup resources
|
|
91
|
+
*/
|
|
92
|
+
private cleanup;
|
|
93
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
94
|
+
}
|
|
95
|
+
declare global {
|
|
96
|
+
interface HTMLElementTagNameMap {
|
|
97
|
+
'x-shell-terminal': XShellTerminal;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=x-shell-terminal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x-shell-terminal.d.ts","sourceRoot":"","sources":["../../src/ui/x-shell-terminal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAIrD,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,oBAAoB,CAAC;AAsBvE,qBACa,cAAe,SAAQ,UAAU;IAC5C,OAAgB,MAAM,4BAwGpB;IAG0B,GAAG,SAAM;IACT,KAAK,SAAM;IACX,GAAG,SAAM;IACT,IAAI,SAAM;IACV,IAAI,SAAM;IACK,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAU;IAChC,QAAQ,UAAS;IACd,WAAW,UAAS;IACtB,SAAS,UAAS;IAGpB,QAAQ,SAAM;IACZ,UAAU,SACpB;IAGnC,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,WAAW,CAA4B;IAGxD,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,cAAc,CAA+B;IAE5C,iBAAiB;IAQjB,oBAAoB;IAK7B;;OAEG;YACW,SAAS;IAsBvB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAuE9B;;OAEG;IACH,UAAU,IAAI,IAAI;IASlB;;OAEG;IACG,KAAK,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCrD;;OAEG;YACW,cAAc;IA4D5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoBxB;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMzB;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM3B;;OAEG;IACM,KAAK,IAAI,IAAI;IAMtB;;OAEG;IACH,OAAO,CAAC,OAAO;IAmBN,MAAM;CA0ChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,kBAAkB,EAAE,cAAc,CAAC;KACpC;CACF"}
|