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