@pokit/tabs-ink 0.0.22 → 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.
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAwB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK/E;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CAiH/C;AAMD,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,CA6EzB"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAwB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK/E;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CAoH/C;AAMD,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,CAgFzB"}
package/dist/adapter.js CHANGED
@@ -84,8 +84,11 @@ export function createTabsAdapter() {
84
84
  const handleFatalError = () => {
85
85
  cleanup();
86
86
  };
87
- const result = render(_jsx(TabsErrorBoundary, { onFatalError: handleFatalError, children: _jsx(TabsApp, { items: items, options: options, onExit: () => {
87
+ const result = render(_jsx(TabsErrorBoundary, { onFatalError: handleFatalError, children: _jsx(TabsApp, { items: items, options: options, onExit: (code) => {
88
88
  cleanup();
89
+ if (code === 130) {
90
+ process.exit(130);
91
+ }
89
92
  } }) }), {
90
93
  exitOnCtrlC: false, // We handle quit ourselves
91
94
  incrementalRendering: true, // Only update changed lines to reduce flicker
@@ -158,6 +161,9 @@ export function createEventAdapter(bus, options = {}) {
158
161
  const handleExit = (code) => {
159
162
  cleanup();
160
163
  options.onExit?.(code);
164
+ if (code === 130) {
165
+ process.exit(130);
166
+ }
161
167
  };
162
168
  // Handle fatal errors from error boundary
163
169
  const handleFatalError = () => {
@@ -3,7 +3,7 @@ type TabbedViewProps = {
3
3
  tabs: TabProcess[];
4
4
  activeIndex: number;
5
5
  onActiveIndexChange: (index: number) => void;
6
- onQuit: () => void;
6
+ onQuit: (reason: 'user' | 'interrupt') => void;
7
7
  onQuitRequest: () => void;
8
8
  onRestart: (index: number) => void;
9
9
  onKill: (index: number) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"tabbed-view.d.ts","sourceRoot":"","sources":["../src/tabbed-view.tsx"],"names":[],"mappings":"AACA,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;IACnB,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,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAyMF,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,WAAW,EACX,YAAY,EACZ,WAAW,GACZ,EAAE,eAAe,2CAqGjB"}
1
+ {"version":3,"file":"tabbed-view.d.ts","sourceRoot":"","sources":["../src/tabbed-view.tsx"],"names":[],"mappings":"AACA,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,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAyMF,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,WAAW,EACX,YAAY,EACZ,WAAW,GACZ,EAAE,eAAe,2CAqGjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"tabs-app.d.ts","sourceRoot":"","sources":["../src/tabs-app.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAIxD,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,2CA+R/D"}
1
+ {"version":3,"file":"tabs-app.d.ts","sourceRoot":"","sources":["../src/tabs-app.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAIxD,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,2CAkS/D"}
package/dist/tabs-app.js CHANGED
@@ -200,9 +200,9 @@ export function TabsApp({ items, options, onExit }) {
200
200
  const handleQuitRequest = useCallback(() => {
201
201
  setQuitConfirmPending((prev) => !prev);
202
202
  }, []);
203
- const handleQuit = useCallback(() => {
203
+ const handleQuit = useCallback((reason) => {
204
204
  killAll();
205
- onExit(0);
205
+ onExit(reason === 'interrupt' ? 130 : 0);
206
206
  }, [killAll, onExit]);
207
207
  const handleEnterFocusMode = useCallback(() => {
208
208
  const proc = processesRef.current[activeIndex];
package/dist/types.d.ts CHANGED
@@ -20,7 +20,7 @@ export type TabProcess = BaseTabProcess & {
20
20
  */
21
21
  export type TabbedViewProps = {
22
22
  tabs: TabProcess[];
23
- onQuit: () => void;
23
+ onQuit: (reason: 'user' | 'interrupt') => void;
24
24
  onQuitRequest: () => void;
25
25
  quitConfirmPending: boolean;
26
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMrE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAMpD;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG;IACxC,4DAA4D;IAC5D,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMrE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAMpD;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG;IACxC,4DAA4D;IAC5D,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,KAAK,IAAI,CAAC;IAC/C,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pokit/tabs-ink",
3
- "version": "0.0.22",
3
+ "version": "0.0.23",
4
4
  "description": "Ink-based tab renderer for pok CLI applications",
5
5
  "keywords": [
6
6
  "cli",
@@ -51,12 +51,12 @@
51
51
  "devDependencies": {
52
52
  "@types/bun": "latest",
53
53
  "@types/react": "^19.2.0",
54
- "@pokit/core": "0.0.22",
55
- "@pokit/tabs-core": "0.0.22"
54
+ "@pokit/core": "0.0.23",
55
+ "@pokit/tabs-core": "0.0.23"
56
56
  },
57
57
  "peerDependencies": {
58
- "@pokit/core": "0.0.22",
59
- "@pokit/tabs-core": "0.0.22"
58
+ "@pokit/core": "0.0.23",
59
+ "@pokit/tabs-core": "0.0.23"
60
60
  },
61
61
  "engines": {
62
62
  "bun": ">=1.0.0"
package/src/adapter.tsx CHANGED
@@ -103,8 +103,11 @@ export function createTabsAdapter(): TabsAdapter {
103
103
  <TabsApp
104
104
  items={items}
105
105
  options={options}
106
- onExit={() => {
106
+ onExit={(code) => {
107
107
  cleanup();
108
+ if (code === 130) {
109
+ process.exit(130);
110
+ }
108
111
  }}
109
112
  />
110
113
  </TabsErrorBoundary>,
@@ -204,6 +207,9 @@ export function createEventAdapter(
204
207
  const handleExit = (code: number) => {
205
208
  cleanup();
206
209
  options.onExit?.(code);
210
+ if (code === 130) {
211
+ process.exit(130);
212
+ }
207
213
  };
208
214
 
209
215
  // Handle fatal errors from error boundary
@@ -14,7 +14,7 @@ type TabbedViewProps = {
14
14
  tabs: TabProcess[];
15
15
  activeIndex: number;
16
16
  onActiveIndexChange: (index: number) => void;
17
- onQuit: () => void;
17
+ onQuit: (reason: 'user' | 'interrupt') => void;
18
18
  onQuitRequest: () => void;
19
19
  onRestart: (index: number) => void;
20
20
  onKill: (index: number) => void;
package/src/tabs-app.tsx CHANGED
@@ -251,10 +251,13 @@ export function TabsApp({ items, options, onExit }: TabsAppProps) {
251
251
  setQuitConfirmPending((prev) => !prev);
252
252
  }, []);
253
253
 
254
- const handleQuit = useCallback(() => {
255
- killAll();
256
- onExit(0);
257
- }, [killAll, onExit]);
254
+ const handleQuit = useCallback(
255
+ (reason: 'user' | 'interrupt') => {
256
+ killAll();
257
+ onExit(reason === 'interrupt' ? 130 : 0);
258
+ },
259
+ [killAll, onExit]
260
+ );
258
261
 
259
262
  const handleEnterFocusMode = useCallback(() => {
260
263
  const proc = processesRef.current[activeIndex];
package/src/types.ts CHANGED
@@ -33,7 +33,7 @@ export type TabProcess = BaseTabProcess & {
33
33
  */
34
34
  export type TabbedViewProps = {
35
35
  tabs: TabProcess[];
36
- onQuit: () => void;
36
+ onQuit: (reason: 'user' | 'interrupt') => void;
37
37
  onQuitRequest: () => void;
38
38
  quitConfirmPending: boolean;
39
39
  };