ink 6.6.0 → 6.7.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/build/components/App.d.ts +7 -48
- package/build/components/App.js +259 -225
- package/build/components/App.js.map +1 -1
- package/build/components/CursorContext.d.ts +11 -0
- package/build/components/CursorContext.js +8 -0
- package/build/components/CursorContext.js.map +1 -0
- package/build/components/ErrorBoundary.d.ts +18 -0
- package/build/components/ErrorBoundary.js +23 -0
- package/build/components/ErrorBoundary.js.map +1 -0
- package/build/cursor-helpers.d.ts +38 -0
- package/build/cursor-helpers.js +56 -0
- package/build/cursor-helpers.js.map +1 -0
- package/build/hooks/use-cursor.d.ts +12 -0
- package/build/hooks/use-cursor.js +29 -0
- package/build/hooks/use-cursor.js.map +1 -0
- package/build/hooks/use-input.d.ts +30 -0
- package/build/hooks/use-input.js +31 -2
- package/build/hooks/use-input.js.map +1 -1
- package/build/index.d.ts +4 -0
- package/build/index.js +2 -0
- package/build/index.js.map +1 -1
- package/build/ink.d.ts +32 -0
- package/build/ink.js +258 -31
- package/build/ink.js.map +1 -1
- package/build/kitty-keyboard.d.ts +23 -0
- package/build/kitty-keyboard.js +32 -0
- package/build/kitty-keyboard.js.map +1 -0
- package/build/log-update.d.ts +6 -1
- package/build/log-update.js +163 -40
- package/build/log-update.js.map +1 -1
- package/build/parse-keypress.d.ts +8 -0
- package/build/parse-keypress.js +270 -2
- package/build/parse-keypress.js.map +1 -1
- package/build/reconciler.js +11 -1
- package/build/reconciler.js.map +1 -1
- package/build/render.d.ts +22 -0
- package/build/render.js +7 -2
- package/build/render.js.map +1 -1
- package/build/write-synchronized.d.ts +4 -0
- package/build/write-synchronized.js +7 -0
- package/build/write-synchronized.js.map +1 -0
- package/package.json +18 -15
- package/readme.md +167 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
import { type CursorPosition } from '../log-update.js';
|
|
3
3
|
type Props = {
|
|
4
4
|
readonly children: ReactNode;
|
|
5
5
|
readonly stdin: NodeJS.ReadStream;
|
|
@@ -9,51 +9,10 @@ type Props = {
|
|
|
9
9
|
readonly writeToStderr: (data: string) => void;
|
|
10
10
|
readonly exitOnCtrlC: boolean;
|
|
11
11
|
readonly onExit: (error?: Error) => void;
|
|
12
|
+
readonly setCursorPosition: (position: CursorPosition | undefined) => void;
|
|
12
13
|
};
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
readonly focusables: Focusable[];
|
|
17
|
-
readonly error?: Error;
|
|
18
|
-
};
|
|
19
|
-
type Focusable = {
|
|
20
|
-
readonly id: string;
|
|
21
|
-
readonly isActive: boolean;
|
|
22
|
-
};
|
|
23
|
-
export default class App extends PureComponent<Props, State> {
|
|
24
|
-
static displayName: string;
|
|
25
|
-
static getDerivedStateFromError(error: Error): {
|
|
26
|
-
error: Error;
|
|
27
|
-
};
|
|
28
|
-
state: {
|
|
29
|
-
isFocusEnabled: boolean;
|
|
30
|
-
activeFocusId: undefined;
|
|
31
|
-
focusables: never[];
|
|
32
|
-
error: undefined;
|
|
33
|
-
};
|
|
34
|
-
rawModeEnabledCount: number;
|
|
35
|
-
internal_eventEmitter: EventEmitter<[never]>;
|
|
36
|
-
isRawModeSupported(): boolean;
|
|
37
|
-
render(): React.JSX.Element;
|
|
38
|
-
componentDidMount(): void;
|
|
39
|
-
componentWillUnmount(): void;
|
|
40
|
-
componentDidCatch(error: Error): void;
|
|
41
|
-
handleSetRawMode: (isEnabled: boolean) => void;
|
|
42
|
-
handleReadable: () => void;
|
|
43
|
-
handleInput: (input: string) => void;
|
|
44
|
-
handleExit: (error?: Error) => void;
|
|
45
|
-
enableFocus: () => void;
|
|
46
|
-
disableFocus: () => void;
|
|
47
|
-
focus: (id: string) => void;
|
|
48
|
-
focusNext: () => void;
|
|
49
|
-
focusPrevious: () => void;
|
|
50
|
-
addFocusable: (id: string, { autoFocus }: {
|
|
51
|
-
autoFocus: boolean;
|
|
52
|
-
}) => void;
|
|
53
|
-
removeFocusable: (id: string) => void;
|
|
54
|
-
activateFocusable: (id: string) => void;
|
|
55
|
-
deactivateFocusable: (id: string) => void;
|
|
56
|
-
findNextFocusable: (state: State) => string | undefined;
|
|
57
|
-
findPreviousFocusable: (state: State) => string | undefined;
|
|
14
|
+
declare function App({ children, stdin, stdout, stderr, writeToStdout, writeToStderr, exitOnCtrlC, onExit, setCursorPosition, }: Props): React.ReactNode;
|
|
15
|
+
declare namespace App {
|
|
16
|
+
var displayName: string;
|
|
58
17
|
}
|
|
59
|
-
export
|
|
18
|
+
export default App;
|
package/build/components/App.js
CHANGED
|
@@ -1,109 +1,79 @@
|
|
|
1
1
|
import { EventEmitter } from 'node:events';
|
|
2
2
|
import process from 'node:process';
|
|
3
|
-
import React, {
|
|
3
|
+
import React, { useState, useRef, useCallback, useMemo, useEffect, } from 'react';
|
|
4
4
|
import cliCursor from 'cli-cursor';
|
|
5
5
|
import AppContext from './AppContext.js';
|
|
6
6
|
import StdinContext from './StdinContext.js';
|
|
7
7
|
import StdoutContext from './StdoutContext.js';
|
|
8
8
|
import StderrContext from './StderrContext.js';
|
|
9
9
|
import FocusContext from './FocusContext.js';
|
|
10
|
-
import
|
|
10
|
+
import CursorContext from './CursorContext.js';
|
|
11
|
+
import ErrorBoundary from './ErrorBoundary.js';
|
|
11
12
|
const tab = '\t';
|
|
12
13
|
const shiftTab = '\u001B[Z';
|
|
13
14
|
const escape = '\u001B';
|
|
14
15
|
// Root component for all Ink apps
|
|
15
16
|
// It renders stdin and stdout contexts, so that children can access them if needed
|
|
16
17
|
// It also handles Ctrl+C exiting and cursor visibility
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
focusables: [],
|
|
26
|
-
error: undefined,
|
|
27
|
-
};
|
|
18
|
+
function App({ children, stdin, stdout, stderr, writeToStdout, writeToStderr, exitOnCtrlC, onExit, setCursorPosition, }) {
|
|
19
|
+
const [isFocusEnabled, setIsFocusEnabled] = useState(true);
|
|
20
|
+
const [activeFocusId, setActiveFocusId] = useState(undefined);
|
|
21
|
+
// Focusables array is managed internally via setFocusables callback pattern
|
|
22
|
+
// eslint-disable-next-line react/hook-use-state
|
|
23
|
+
const [, setFocusables] = useState([]);
|
|
24
|
+
// Track focusables count for tab navigation check (avoids stale closure)
|
|
25
|
+
const focusablesCountRef = useRef(0);
|
|
28
26
|
// Count how many components enabled raw mode to avoid disabling
|
|
29
27
|
// raw mode until all components don't need it anymore
|
|
30
|
-
rawModeEnabledCount = 0;
|
|
28
|
+
const rawModeEnabledCount = useRef(0);
|
|
31
29
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
32
|
-
internal_eventEmitter = new EventEmitter();
|
|
30
|
+
const internal_eventEmitter = useRef(new EventEmitter());
|
|
31
|
+
// Each useInput hook adds a listener, so the count can legitimately exceed the default limit of 10.
|
|
32
|
+
internal_eventEmitter.current.setMaxListeners(Infinity);
|
|
33
|
+
// Store the currently attached readable listener to avoid stale closure issues
|
|
34
|
+
const readableListenerRef = useRef(undefined);
|
|
33
35
|
// Determines if TTY is supported on the provided stdin
|
|
34
|
-
isRawModeSupported
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
stderr: this.props.stderr,
|
|
72
|
-
write: this.props.writeToStderr,
|
|
73
|
-
} },
|
|
74
|
-
React.createElement(FocusContext.Provider
|
|
75
|
-
// eslint-disable-next-line react/jsx-no-constructed-context-values
|
|
76
|
-
, {
|
|
77
|
-
// eslint-disable-next-line react/jsx-no-constructed-context-values
|
|
78
|
-
value: {
|
|
79
|
-
activeId: this.state.activeFocusId,
|
|
80
|
-
add: this.addFocusable,
|
|
81
|
-
remove: this.removeFocusable,
|
|
82
|
-
activate: this.activateFocusable,
|
|
83
|
-
deactivate: this.deactivateFocusable,
|
|
84
|
-
enableFocus: this.enableFocus,
|
|
85
|
-
disableFocus: this.disableFocus,
|
|
86
|
-
focusNext: this.focusNext,
|
|
87
|
-
focusPrevious: this.focusPrevious,
|
|
88
|
-
focus: this.focus,
|
|
89
|
-
} }, this.state.error ? (React.createElement(ErrorOverview, { error: this.state.error })) : (this.props.children)))))));
|
|
90
|
-
}
|
|
91
|
-
componentDidMount() {
|
|
92
|
-
cliCursor.hide(this.props.stdout);
|
|
93
|
-
}
|
|
94
|
-
componentWillUnmount() {
|
|
95
|
-
cliCursor.show(this.props.stdout);
|
|
96
|
-
// ignore calling setRawMode on an handle stdin it cannot be called
|
|
97
|
-
if (this.isRawModeSupported()) {
|
|
98
|
-
this.handleSetRawMode(false);
|
|
36
|
+
const isRawModeSupported = stdin.isTTY;
|
|
37
|
+
const handleExit = useCallback((error) => {
|
|
38
|
+
// Disable raw mode on exit - inline to avoid circular dependency
|
|
39
|
+
if (isRawModeSupported && rawModeEnabledCount.current > 0) {
|
|
40
|
+
stdin.setRawMode(false);
|
|
41
|
+
if (readableListenerRef.current) {
|
|
42
|
+
stdin.removeListener('readable', readableListenerRef.current);
|
|
43
|
+
readableListenerRef.current = undefined;
|
|
44
|
+
}
|
|
45
|
+
stdin.unref();
|
|
46
|
+
rawModeEnabledCount.current = 0;
|
|
47
|
+
}
|
|
48
|
+
onExit(error);
|
|
49
|
+
}, [isRawModeSupported, stdin, onExit]);
|
|
50
|
+
const handleInput = useCallback((input) => {
|
|
51
|
+
// Exit on Ctrl+C
|
|
52
|
+
// eslint-disable-next-line unicorn/no-hex-escape
|
|
53
|
+
if (input === '\x03' && exitOnCtrlC) {
|
|
54
|
+
handleExit();
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
// Reset focus when there's an active focused component on Esc
|
|
58
|
+
if (input === escape) {
|
|
59
|
+
setActiveFocusId(currentActiveFocusId => {
|
|
60
|
+
if (currentActiveFocusId) {
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
return currentActiveFocusId;
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}, [exitOnCtrlC, handleExit]);
|
|
67
|
+
const handleReadable = useCallback(() => {
|
|
68
|
+
let chunk;
|
|
69
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
70
|
+
while ((chunk = stdin.read()) !== null) {
|
|
71
|
+
handleInput(chunk);
|
|
72
|
+
internal_eventEmitter.current.emit('input', chunk);
|
|
99
73
|
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
handleSetRawMode = (isEnabled) => {
|
|
105
|
-
const { stdin } = this.props;
|
|
106
|
-
if (!this.isRawModeSupported()) {
|
|
74
|
+
}, [stdin, handleInput]);
|
|
75
|
+
const handleSetRawMode = useCallback((isEnabled) => {
|
|
76
|
+
if (!isRawModeSupported) {
|
|
107
77
|
if (stdin === process.stdin) {
|
|
108
78
|
throw new Error('Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.\nRead about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported');
|
|
109
79
|
}
|
|
@@ -114,173 +84,237 @@ export default class App extends PureComponent {
|
|
|
114
84
|
stdin.setEncoding('utf8');
|
|
115
85
|
if (isEnabled) {
|
|
116
86
|
// Ensure raw mode is enabled only once
|
|
117
|
-
if (
|
|
87
|
+
if (rawModeEnabledCount.current === 0) {
|
|
118
88
|
stdin.ref();
|
|
119
89
|
stdin.setRawMode(true);
|
|
120
|
-
|
|
90
|
+
// Store the listener reference to avoid stale closure when removing
|
|
91
|
+
readableListenerRef.current = handleReadable;
|
|
92
|
+
stdin.addListener('readable', handleReadable);
|
|
121
93
|
}
|
|
122
|
-
|
|
94
|
+
rawModeEnabledCount.current++;
|
|
123
95
|
return;
|
|
124
96
|
}
|
|
125
97
|
// Disable raw mode only when no components left that are using it
|
|
126
|
-
if (--
|
|
98
|
+
if (--rawModeEnabledCount.current === 0) {
|
|
127
99
|
stdin.setRawMode(false);
|
|
128
|
-
|
|
100
|
+
if (readableListenerRef.current) {
|
|
101
|
+
stdin.removeListener('readable', readableListenerRef.current);
|
|
102
|
+
readableListenerRef.current = undefined;
|
|
103
|
+
}
|
|
129
104
|
stdin.unref();
|
|
130
105
|
}
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
106
|
+
}, [isRawModeSupported, stdin, handleReadable]);
|
|
107
|
+
// Focus navigation helpers
|
|
108
|
+
const findNextFocusable = useCallback((currentFocusables, currentActiveFocusId) => {
|
|
109
|
+
const activeIndex = currentFocusables.findIndex(focusable => {
|
|
110
|
+
return focusable.id === currentActiveFocusId;
|
|
111
|
+
});
|
|
112
|
+
for (let index = activeIndex + 1; index < currentFocusables.length; index++) {
|
|
113
|
+
const focusable = currentFocusables[index];
|
|
114
|
+
if (focusable?.isActive) {
|
|
115
|
+
return focusable.id;
|
|
116
|
+
}
|
|
138
117
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
118
|
+
return undefined;
|
|
119
|
+
}, []);
|
|
120
|
+
const findPreviousFocusable = useCallback((currentFocusables, currentActiveFocusId) => {
|
|
121
|
+
const activeIndex = currentFocusables.findIndex(focusable => {
|
|
122
|
+
return focusable.id === currentActiveFocusId;
|
|
123
|
+
});
|
|
124
|
+
for (let index = activeIndex - 1; index >= 0; index--) {
|
|
125
|
+
const focusable = currentFocusables[index];
|
|
126
|
+
if (focusable?.isActive) {
|
|
127
|
+
return focusable.id;
|
|
128
|
+
}
|
|
145
129
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
130
|
+
return undefined;
|
|
131
|
+
}, []);
|
|
132
|
+
const focusNext = useCallback(() => {
|
|
133
|
+
setFocusables(currentFocusables => {
|
|
134
|
+
setActiveFocusId(currentActiveFocusId => {
|
|
135
|
+
const firstFocusableId = currentFocusables.find(focusable => focusable.isActive)?.id;
|
|
136
|
+
const nextFocusableId = findNextFocusable(currentFocusables, currentActiveFocusId);
|
|
137
|
+
return nextFocusableId ?? firstFocusableId;
|
|
150
138
|
});
|
|
151
|
-
|
|
152
|
-
|
|
139
|
+
return currentFocusables;
|
|
140
|
+
});
|
|
141
|
+
}, [findNextFocusable]);
|
|
142
|
+
const focusPrevious = useCallback(() => {
|
|
143
|
+
setFocusables(currentFocusables => {
|
|
144
|
+
setActiveFocusId(currentActiveFocusId => {
|
|
145
|
+
const lastFocusableId = currentFocusables.findLast(focusable => focusable.isActive)?.id;
|
|
146
|
+
const previousFocusableId = findPreviousFocusable(currentFocusables, currentActiveFocusId);
|
|
147
|
+
return previousFocusableId ?? lastFocusableId;
|
|
148
|
+
});
|
|
149
|
+
return currentFocusables;
|
|
150
|
+
});
|
|
151
|
+
}, [findPreviousFocusable]);
|
|
152
|
+
// Handle tab navigation via effect that subscribes to input events
|
|
153
|
+
useEffect(() => {
|
|
154
|
+
const handleTabNavigation = (input) => {
|
|
155
|
+
if (!isFocusEnabled || focusablesCountRef.current === 0)
|
|
156
|
+
return;
|
|
153
157
|
if (input === tab) {
|
|
154
|
-
|
|
158
|
+
focusNext();
|
|
155
159
|
}
|
|
156
160
|
if (input === shiftTab) {
|
|
157
|
-
|
|
161
|
+
focusPrevious();
|
|
158
162
|
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
163
|
+
};
|
|
164
|
+
internal_eventEmitter.current.on('input', handleTabNavigation);
|
|
165
|
+
const emitter = internal_eventEmitter.current;
|
|
166
|
+
return () => {
|
|
167
|
+
emitter.off('input', handleTabNavigation);
|
|
168
|
+
};
|
|
169
|
+
}, [isFocusEnabled, focusNext, focusPrevious]);
|
|
170
|
+
const enableFocus = useCallback(() => {
|
|
171
|
+
setIsFocusEnabled(true);
|
|
172
|
+
}, []);
|
|
173
|
+
const disableFocus = useCallback(() => {
|
|
174
|
+
setIsFocusEnabled(false);
|
|
175
|
+
}, []);
|
|
176
|
+
const focus = useCallback((id) => {
|
|
177
|
+
setFocusables(currentFocusables => {
|
|
178
|
+
const hasFocusableId = currentFocusables.some(focusable => focusable?.id === id);
|
|
179
|
+
if (hasFocusableId) {
|
|
180
|
+
setActiveFocusId(id);
|
|
181
|
+
}
|
|
182
|
+
return currentFocusables;
|
|
170
183
|
});
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
184
|
+
}, []);
|
|
185
|
+
const addFocusable = useCallback((id, { autoFocus }) => {
|
|
186
|
+
setFocusables(currentFocusables => {
|
|
187
|
+
focusablesCountRef.current = currentFocusables.length + 1;
|
|
188
|
+
return [
|
|
189
|
+
...currentFocusables,
|
|
190
|
+
{
|
|
191
|
+
id,
|
|
192
|
+
isActive: true,
|
|
193
|
+
},
|
|
194
|
+
];
|
|
175
195
|
});
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
return
|
|
196
|
+
if (autoFocus) {
|
|
197
|
+
setActiveFocusId(currentActiveFocusId => {
|
|
198
|
+
if (!currentActiveFocusId) {
|
|
199
|
+
return id;
|
|
200
|
+
}
|
|
201
|
+
return currentActiveFocusId;
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
}, []);
|
|
205
|
+
const removeFocusable = useCallback((id) => {
|
|
206
|
+
setActiveFocusId(currentActiveFocusId => {
|
|
207
|
+
if (currentActiveFocusId === id) {
|
|
208
|
+
return undefined;
|
|
182
209
|
}
|
|
183
|
-
return
|
|
210
|
+
return currentActiveFocusId;
|
|
184
211
|
});
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
return
|
|
191
|
-
activeFocusId: nextFocusableId ?? firstFocusableId,
|
|
192
|
-
};
|
|
212
|
+
setFocusables(currentFocusables => {
|
|
213
|
+
const filtered = currentFocusables.filter(focusable => {
|
|
214
|
+
return focusable.id !== id;
|
|
215
|
+
});
|
|
216
|
+
focusablesCountRef.current = filtered.length;
|
|
217
|
+
return filtered;
|
|
193
218
|
});
|
|
194
|
-
};
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
219
|
+
}, []);
|
|
220
|
+
const activateFocusable = useCallback((id) => {
|
|
221
|
+
setFocusables(currentFocusables => currentFocusables.map(focusable => {
|
|
222
|
+
if (focusable.id !== id) {
|
|
223
|
+
return focusable;
|
|
224
|
+
}
|
|
199
225
|
return {
|
|
200
|
-
|
|
226
|
+
id,
|
|
227
|
+
isActive: true,
|
|
201
228
|
};
|
|
229
|
+
}));
|
|
230
|
+
}, []);
|
|
231
|
+
const deactivateFocusable = useCallback((id) => {
|
|
232
|
+
setActiveFocusId(currentActiveFocusId => {
|
|
233
|
+
if (currentActiveFocusId === id) {
|
|
234
|
+
return undefined;
|
|
235
|
+
}
|
|
236
|
+
return currentActiveFocusId;
|
|
202
237
|
});
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
let nextFocusId = previousState.activeFocusId;
|
|
207
|
-
if (!nextFocusId && autoFocus) {
|
|
208
|
-
nextFocusId = id;
|
|
238
|
+
setFocusables(currentFocusables => currentFocusables.map(focusable => {
|
|
239
|
+
if (focusable.id !== id) {
|
|
240
|
+
return focusable;
|
|
209
241
|
}
|
|
210
242
|
return {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
...previousState.focusables,
|
|
214
|
-
{
|
|
215
|
-
id,
|
|
216
|
-
isActive: true,
|
|
217
|
-
},
|
|
218
|
-
],
|
|
243
|
+
id,
|
|
244
|
+
isActive: false,
|
|
219
245
|
};
|
|
220
|
-
});
|
|
221
|
-
};
|
|
222
|
-
removeFocusable = (id) => {
|
|
223
|
-
this.setState(previousState => ({
|
|
224
|
-
activeFocusId: previousState.activeFocusId === id
|
|
225
|
-
? undefined
|
|
226
|
-
: previousState.activeFocusId,
|
|
227
|
-
focusables: previousState.focusables.filter(focusable => {
|
|
228
|
-
return focusable.id !== id;
|
|
229
|
-
}),
|
|
230
246
|
}));
|
|
231
|
-
};
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
247
|
+
}, []);
|
|
248
|
+
// Handle cursor visibility and raw mode cleanup on unmount
|
|
249
|
+
useEffect(() => {
|
|
250
|
+
return () => {
|
|
251
|
+
cliCursor.show(stdout);
|
|
252
|
+
// Disable raw mode on unmount if supported
|
|
253
|
+
if (isRawModeSupported && rawModeEnabledCount.current > 0) {
|
|
254
|
+
stdin.setRawMode(false);
|
|
255
|
+
if (readableListenerRef.current) {
|
|
256
|
+
stdin.removeListener('readable', readableListenerRef.current);
|
|
257
|
+
readableListenerRef.current = undefined;
|
|
237
258
|
}
|
|
238
|
-
|
|
239
|
-
id,
|
|
240
|
-
isActive: true,
|
|
241
|
-
};
|
|
242
|
-
}),
|
|
243
|
-
}));
|
|
244
|
-
};
|
|
245
|
-
deactivateFocusable = (id) => {
|
|
246
|
-
this.setState(previousState => ({
|
|
247
|
-
activeFocusId: previousState.activeFocusId === id
|
|
248
|
-
? undefined
|
|
249
|
-
: previousState.activeFocusId,
|
|
250
|
-
focusables: previousState.focusables.map(focusable => {
|
|
251
|
-
if (focusable.id !== id) {
|
|
252
|
-
return focusable;
|
|
253
|
-
}
|
|
254
|
-
return {
|
|
255
|
-
id,
|
|
256
|
-
isActive: false,
|
|
257
|
-
};
|
|
258
|
-
}),
|
|
259
|
-
}));
|
|
260
|
-
};
|
|
261
|
-
findNextFocusable = (state) => {
|
|
262
|
-
const activeIndex = state.focusables.findIndex(focusable => {
|
|
263
|
-
return focusable.id === state.activeFocusId;
|
|
264
|
-
});
|
|
265
|
-
for (let index = activeIndex + 1; index < state.focusables.length; index++) {
|
|
266
|
-
const focusable = state.focusables[index];
|
|
267
|
-
if (focusable?.isActive) {
|
|
268
|
-
return focusable.id;
|
|
259
|
+
stdin.unref();
|
|
269
260
|
}
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
};
|
|
261
|
+
};
|
|
262
|
+
}, [stdout, stdin, isRawModeSupported]);
|
|
263
|
+
// Memoize context values to prevent unnecessary re-renders
|
|
264
|
+
const appContextValue = useMemo(() => ({
|
|
265
|
+
exit: handleExit,
|
|
266
|
+
}), [handleExit]);
|
|
267
|
+
const stdinContextValue = useMemo(() => ({
|
|
268
|
+
stdin,
|
|
269
|
+
setRawMode: handleSetRawMode,
|
|
270
|
+
isRawModeSupported,
|
|
271
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
272
|
+
internal_exitOnCtrlC: exitOnCtrlC,
|
|
273
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
274
|
+
internal_eventEmitter: internal_eventEmitter.current,
|
|
275
|
+
}), [stdin, handleSetRawMode, isRawModeSupported, exitOnCtrlC]);
|
|
276
|
+
const stdoutContextValue = useMemo(() => ({
|
|
277
|
+
stdout,
|
|
278
|
+
write: writeToStdout,
|
|
279
|
+
}), [stdout, writeToStdout]);
|
|
280
|
+
const stderrContextValue = useMemo(() => ({
|
|
281
|
+
stderr,
|
|
282
|
+
write: writeToStderr,
|
|
283
|
+
}), [stderr, writeToStderr]);
|
|
284
|
+
const cursorContextValue = useMemo(() => ({
|
|
285
|
+
setCursorPosition,
|
|
286
|
+
}), [setCursorPosition]);
|
|
287
|
+
const focusContextValue = useMemo(() => ({
|
|
288
|
+
activeId: activeFocusId,
|
|
289
|
+
add: addFocusable,
|
|
290
|
+
remove: removeFocusable,
|
|
291
|
+
activate: activateFocusable,
|
|
292
|
+
deactivate: deactivateFocusable,
|
|
293
|
+
enableFocus,
|
|
294
|
+
disableFocus,
|
|
295
|
+
focusNext,
|
|
296
|
+
focusPrevious,
|
|
297
|
+
focus,
|
|
298
|
+
}), [
|
|
299
|
+
activeFocusId,
|
|
300
|
+
addFocusable,
|
|
301
|
+
removeFocusable,
|
|
302
|
+
activateFocusable,
|
|
303
|
+
deactivateFocusable,
|
|
304
|
+
enableFocus,
|
|
305
|
+
disableFocus,
|
|
306
|
+
focusNext,
|
|
307
|
+
focusPrevious,
|
|
308
|
+
focus,
|
|
309
|
+
]);
|
|
310
|
+
return (React.createElement(AppContext.Provider, { value: appContextValue },
|
|
311
|
+
React.createElement(StdinContext.Provider, { value: stdinContextValue },
|
|
312
|
+
React.createElement(StdoutContext.Provider, { value: stdoutContextValue },
|
|
313
|
+
React.createElement(StderrContext.Provider, { value: stderrContextValue },
|
|
314
|
+
React.createElement(FocusContext.Provider, { value: focusContextValue },
|
|
315
|
+
React.createElement(CursorContext.Provider, { value: cursorContextValue },
|
|
316
|
+
React.createElement(ErrorBoundary, { onError: handleExit }, children))))))));
|
|
285
317
|
}
|
|
318
|
+
App.displayName = 'InternalApp';
|
|
319
|
+
export default App;
|
|
286
320
|
//# sourceMappingURL=App.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/components/App.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/components/App.tsx"],"names":[],"mappings":"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"}
|