@pokit/tabs-opentui 0.0.21 → 0.0.23
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/adapter.d.ts.map +1 -1
- package/dist/adapter.js +11 -1
- package/dist/tabbed-view.d.ts +1 -1
- package/dist/tabbed-view.d.ts.map +1 -1
- package/dist/tabs-app.d.ts.map +1 -1
- package/dist/tabs-app.js +2 -2
- package/package.json +5 -5
- package/src/adapter.tsx +11 -1
- package/src/tabbed-view.tsx +1 -1
- package/src/tabs-app.tsx +7 -4
package/dist/adapter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAwB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK/E;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAwB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK/E;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CA8G/C;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,QAAQ,EACb,OAAO,GAAE,mBAAwB,GAChC;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CA4GzB"}
|
package/dist/adapter.js
CHANGED
|
@@ -53,6 +53,7 @@ export function createTabsAdapter() {
|
|
|
53
53
|
return;
|
|
54
54
|
resolved = true;
|
|
55
55
|
// Remove signal handlers
|
|
56
|
+
process.removeListener('SIGINT', handleSignal);
|
|
56
57
|
process.removeListener('SIGTERM', handleSignal);
|
|
57
58
|
process.removeListener('SIGQUIT', handleSignal);
|
|
58
59
|
process.removeListener('uncaughtException', handleUncaughtException);
|
|
@@ -79,6 +80,7 @@ export function createTabsAdapter() {
|
|
|
79
80
|
process.exit(1);
|
|
80
81
|
};
|
|
81
82
|
// Register signal handlers
|
|
83
|
+
process.on('SIGINT', handleSignal);
|
|
82
84
|
process.on('SIGTERM', handleSignal);
|
|
83
85
|
process.on('SIGQUIT', handleSignal);
|
|
84
86
|
process.on('uncaughtException', handleUncaughtException);
|
|
@@ -86,8 +88,11 @@ export function createTabsAdapter() {
|
|
|
86
88
|
const handleFatalError = () => {
|
|
87
89
|
cleanup();
|
|
88
90
|
};
|
|
89
|
-
const handleExit = () => {
|
|
91
|
+
const handleExit = (code) => {
|
|
90
92
|
cleanup();
|
|
93
|
+
if (code === 130) {
|
|
94
|
+
process.exit(130);
|
|
95
|
+
}
|
|
91
96
|
};
|
|
92
97
|
// Use React.createElement to bypass OpenTUI's JSX type constraints for class components
|
|
93
98
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -120,6 +125,7 @@ export function createEventAdapter(bus, options = {}) {
|
|
|
120
125
|
return;
|
|
121
126
|
isCleanedUp = true;
|
|
122
127
|
// Remove signal handlers
|
|
128
|
+
process.removeListener('SIGINT', handleSignal);
|
|
123
129
|
process.removeListener('SIGTERM', handleSignal);
|
|
124
130
|
process.removeListener('SIGQUIT', handleSignal);
|
|
125
131
|
process.removeListener('uncaughtException', handleUncaughtException);
|
|
@@ -145,6 +151,7 @@ export function createEventAdapter(bus, options = {}) {
|
|
|
145
151
|
process.exit(1);
|
|
146
152
|
};
|
|
147
153
|
// Register signal handlers
|
|
154
|
+
process.on('SIGINT', handleSignal);
|
|
148
155
|
process.on('SIGTERM', handleSignal);
|
|
149
156
|
process.on('SIGQUIT', handleSignal);
|
|
150
157
|
process.on('uncaughtException', handleUncaughtException);
|
|
@@ -169,6 +176,9 @@ export function createEventAdapter(bus, options = {}) {
|
|
|
169
176
|
const handleExit = (code) => {
|
|
170
177
|
cleanup();
|
|
171
178
|
options.onExit?.(code);
|
|
179
|
+
if (code === 130) {
|
|
180
|
+
process.exit(130);
|
|
181
|
+
}
|
|
172
182
|
};
|
|
173
183
|
// Handle fatal errors from error boundary
|
|
174
184
|
const handleFatalError = () => {
|
package/dist/tabbed-view.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ type TabbedViewProps = {
|
|
|
9
9
|
tabs: TabProcess[];
|
|
10
10
|
activeIndex: number;
|
|
11
11
|
onActiveIndexChange: (index: number) => void;
|
|
12
|
-
onQuit: () => void;
|
|
12
|
+
onQuit: (reason: 'user' | 'interrupt') => void;
|
|
13
13
|
onQuitRequest: () => void;
|
|
14
14
|
onRestart: (index: number) => void;
|
|
15
15
|
onKill: (index: number) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabbed-view.d.ts","sourceRoot":"","sources":["../src/tabbed-view.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAY,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAWnD,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,MAAM,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"tabbed-view.d.ts","sourceRoot":"","sources":["../src/tabbed-view.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAY,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAWnD,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,KAAK,IAAI,CAAC;IAC/C,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI,KAAK,IAAI,CAAC;IACtD,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AA6JF,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,WAAW,EACX,mBAAmB,EACnB,MAAM,EACN,aAAa,EACb,SAAS,EACT,MAAM,EACN,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,SAAS,EACT,WAAW,EACX,YAAY,EACZ,WAAW,GACZ,EAAE,eAAe,GAAG,KAAK,CAAC,SAAS,CA+FnC"}
|
package/dist/tabs-app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs-app.d.ts","sourceRoot":"","sources":["../src/tabs-app.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,OAAO,KAAK,EAAE,OAAO,EAAc,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAS/C,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC,CAAC;AAOF,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,GAAG,KAAK,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"tabs-app.d.ts","sourceRoot":"","sources":["../src/tabs-app.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,OAAO,KAAK,EAAE,OAAO,EAAc,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAS/C,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC,CAAC;AAOF,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,GAAG,KAAK,CAAC,SAAS,CAoWjF"}
|
package/dist/tabs-app.js
CHANGED
|
@@ -261,9 +261,9 @@ export function TabsApp({ items, options, onExit }) {
|
|
|
261
261
|
const handleQuitRequest = useCallback(() => {
|
|
262
262
|
setQuitConfirmPending((prev) => !prev);
|
|
263
263
|
}, []);
|
|
264
|
-
const handleQuit = useCallback(() => {
|
|
264
|
+
const handleQuit = useCallback((reason) => {
|
|
265
265
|
killAll();
|
|
266
|
-
onExit(0);
|
|
266
|
+
onExit(reason === 'interrupt' ? 130 : 0);
|
|
267
267
|
}, [killAll, onExit]);
|
|
268
268
|
const handleEnterFocusMode = useCallback(() => {
|
|
269
269
|
const proc = processesRef.current[activeIndex];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pokit/tabs-opentui",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.23",
|
|
4
4
|
"description": "OpenTUI-based tab renderer for pok CLI applications",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -53,12 +53,12 @@
|
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@types/bun": "latest",
|
|
55
55
|
"@types/react": "^19.2.0",
|
|
56
|
-
"@pokit/core": "0.0.
|
|
57
|
-
"@pokit/tabs-core": "0.0.
|
|
56
|
+
"@pokit/core": "0.0.23",
|
|
57
|
+
"@pokit/tabs-core": "0.0.23"
|
|
58
58
|
},
|
|
59
59
|
"peerDependencies": {
|
|
60
|
-
"@pokit/core": "0.0.
|
|
61
|
-
"@pokit/tabs-core": "0.0.
|
|
60
|
+
"@pokit/core": "0.0.23",
|
|
61
|
+
"@pokit/tabs-core": "0.0.23"
|
|
62
62
|
},
|
|
63
63
|
"engines": {
|
|
64
64
|
"bun": ">=1.0.0"
|
package/src/adapter.tsx
CHANGED
|
@@ -66,6 +66,7 @@ export function createTabsAdapter(): TabsAdapter {
|
|
|
66
66
|
resolved = true;
|
|
67
67
|
|
|
68
68
|
// Remove signal handlers
|
|
69
|
+
process.removeListener('SIGINT', handleSignal);
|
|
69
70
|
process.removeListener('SIGTERM', handleSignal);
|
|
70
71
|
process.removeListener('SIGQUIT', handleSignal);
|
|
71
72
|
process.removeListener('uncaughtException', handleUncaughtException);
|
|
@@ -96,6 +97,7 @@ export function createTabsAdapter(): TabsAdapter {
|
|
|
96
97
|
};
|
|
97
98
|
|
|
98
99
|
// Register signal handlers
|
|
100
|
+
process.on('SIGINT', handleSignal);
|
|
99
101
|
process.on('SIGTERM', handleSignal);
|
|
100
102
|
process.on('SIGQUIT', handleSignal);
|
|
101
103
|
process.on('uncaughtException', handleUncaughtException);
|
|
@@ -105,8 +107,11 @@ export function createTabsAdapter(): TabsAdapter {
|
|
|
105
107
|
cleanup();
|
|
106
108
|
};
|
|
107
109
|
|
|
108
|
-
const handleExit = () => {
|
|
110
|
+
const handleExit = (code: number) => {
|
|
109
111
|
cleanup();
|
|
112
|
+
if (code === 130) {
|
|
113
|
+
process.exit(130);
|
|
114
|
+
}
|
|
110
115
|
};
|
|
111
116
|
|
|
112
117
|
// Use React.createElement to bypass OpenTUI's JSX type constraints for class components
|
|
@@ -157,6 +162,7 @@ export function createEventAdapter(
|
|
|
157
162
|
isCleanedUp = true;
|
|
158
163
|
|
|
159
164
|
// Remove signal handlers
|
|
165
|
+
process.removeListener('SIGINT', handleSignal);
|
|
160
166
|
process.removeListener('SIGTERM', handleSignal);
|
|
161
167
|
process.removeListener('SIGQUIT', handleSignal);
|
|
162
168
|
process.removeListener('uncaughtException', handleUncaughtException);
|
|
@@ -186,6 +192,7 @@ export function createEventAdapter(
|
|
|
186
192
|
};
|
|
187
193
|
|
|
188
194
|
// Register signal handlers
|
|
195
|
+
process.on('SIGINT', handleSignal);
|
|
189
196
|
process.on('SIGTERM', handleSignal);
|
|
190
197
|
process.on('SIGQUIT', handleSignal);
|
|
191
198
|
process.on('uncaughtException', handleUncaughtException);
|
|
@@ -215,6 +222,9 @@ export function createEventAdapter(
|
|
|
215
222
|
const handleExit = (code: number) => {
|
|
216
223
|
cleanup();
|
|
217
224
|
options.onExit?.(code);
|
|
225
|
+
if (code === 130) {
|
|
226
|
+
process.exit(130);
|
|
227
|
+
}
|
|
218
228
|
};
|
|
219
229
|
|
|
220
230
|
// Handle fatal errors from error boundary
|
package/src/tabbed-view.tsx
CHANGED
|
@@ -21,7 +21,7 @@ type TabbedViewProps = {
|
|
|
21
21
|
tabs: TabProcess[];
|
|
22
22
|
activeIndex: number;
|
|
23
23
|
onActiveIndexChange: (index: number) => void;
|
|
24
|
-
onQuit: () => void;
|
|
24
|
+
onQuit: (reason: 'user' | 'interrupt') => void;
|
|
25
25
|
onQuitRequest: () => void;
|
|
26
26
|
onRestart: (index: number) => void;
|
|
27
27
|
onKill: (index: number) => void;
|
package/src/tabs-app.tsx
CHANGED
|
@@ -324,10 +324,13 @@ export function TabsApp({ items, options, onExit }: TabsAppProps): React.ReactNo
|
|
|
324
324
|
setQuitConfirmPending((prev) => !prev);
|
|
325
325
|
}, []);
|
|
326
326
|
|
|
327
|
-
const handleQuit = useCallback(
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
327
|
+
const handleQuit = useCallback(
|
|
328
|
+
(reason: 'user' | 'interrupt') => {
|
|
329
|
+
killAll();
|
|
330
|
+
onExit(reason === 'interrupt' ? 130 : 0);
|
|
331
|
+
},
|
|
332
|
+
[killAll, onExit]
|
|
333
|
+
);
|
|
331
334
|
|
|
332
335
|
const handleEnterFocusMode = useCallback(() => {
|
|
333
336
|
const proc = processesRef.current[activeIndex];
|