ink 4.4.1 → 5.0.1
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/apply-styles.js +175 -0
- package/build/build-layout.js +77 -0
- package/build/calculate-wrapped-text.js +53 -0
- package/build/colorize.js.map +1 -1
- package/build/components/App.d.ts +1 -1
- package/build/components/App.js +198 -296
- package/build/components/App.js.map +1 -1
- package/build/components/AppContext.js +1 -1
- package/build/components/Box.d.ts +51 -1
- package/build/components/Box.js +2 -2
- package/build/components/Color.js +62 -0
- package/build/components/ErrorOverview.js +1 -1
- package/build/components/ErrorOverview.js.map +1 -1
- package/build/components/FocusContext.js +1 -1
- package/build/components/Static.js +1 -1
- package/build/components/StderrContext.js +1 -1
- package/build/components/StdinContext.js +1 -1
- package/build/components/StdoutContext.js +1 -1
- package/build/components/Text.d.ts +1 -1
- package/build/components/Text.js +1 -1
- package/build/components/Text.js.map +1 -1
- package/build/components/Transform.js.map +1 -1
- package/build/devtools-window-polyfill.js +11 -17
- package/build/devtools-window-polyfill.js.map +1 -1
- package/build/dom.js +2 -3
- package/build/dom.js.map +1 -1
- package/build/experimental/apply-style.js +140 -0
- package/build/experimental/dom.js +123 -0
- package/build/experimental/output.js +91 -0
- package/build/experimental/reconciler.js +141 -0
- package/build/experimental/renderer.js +81 -0
- package/build/get-max-width.js +0 -1
- package/build/get-max-width.js.map +1 -1
- package/build/hooks/use-focus-manager.js +1 -1
- package/build/hooks/use-focus.d.ts +1 -1
- package/build/hooks/use-focus.js +2 -2
- package/build/hooks/use-focus.js.map +1 -1
- package/build/hooks/use-input.js +2 -3
- package/build/hooks/use-input.js.map +1 -1
- package/build/hooks/useInput.js +38 -0
- package/build/ink.js +81 -170
- package/build/ink.js.map +1 -1
- package/build/instance.js +205 -0
- package/build/log-update.d.ts +1 -0
- package/build/log-update.js.map +1 -1
- package/build/measure-element.js +1 -1
- package/build/measure-text.js +1 -1
- package/build/measure-text.js.map +1 -1
- package/build/output.js +11 -26
- package/build/output.js.map +1 -1
- package/build/parse-keypress.d.ts +1 -0
- package/build/parse-keypress.js +4 -4
- package/build/parse-keypress.js.map +1 -1
- package/build/reconciler.js +9 -7
- package/build/reconciler.js.map +1 -1
- package/build/render-border.js +1 -1
- package/build/render-border.js.map +1 -1
- package/build/render-node-to-output.js +2 -3
- package/build/render-node-to-output.js.map +1 -1
- package/build/render.d.ts +4 -0
- package/build/render.js +3 -3
- package/build/render.js.map +1 -1
- package/build/renderer.js +5 -5
- package/build/renderer.js.map +1 -1
- package/build/squash-text-nodes.js.map +1 -1
- package/build/styles.d.ts +1 -1
- package/build/styles.js +0 -1
- package/build/styles.js.map +1 -1
- package/build/wrap-text.js +1 -1
- package/build/wrap-text.js.map +1 -1
- package/package.json +35 -39
- package/readme.md +5 -18
package/build/components/App.js
CHANGED
|
@@ -15,294 +15,21 @@ const escape = '\u001B';
|
|
|
15
15
|
// It renders stdin and stdout contexts, so that children can access them if needed
|
|
16
16
|
// It also handles Ctrl+C exiting and cursor visibility
|
|
17
17
|
export default class App extends PureComponent {
|
|
18
|
-
|
|
19
|
-
super(...arguments);
|
|
20
|
-
Object.defineProperty(this, "state", {
|
|
21
|
-
enumerable: true,
|
|
22
|
-
configurable: true,
|
|
23
|
-
writable: true,
|
|
24
|
-
value: {
|
|
25
|
-
isFocusEnabled: true,
|
|
26
|
-
activeFocusId: undefined,
|
|
27
|
-
focusables: [],
|
|
28
|
-
error: undefined
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
// Count how many components enabled raw mode to avoid disabling
|
|
32
|
-
// raw mode until all components don't need it anymore
|
|
33
|
-
Object.defineProperty(this, "rawModeEnabledCount", {
|
|
34
|
-
enumerable: true,
|
|
35
|
-
configurable: true,
|
|
36
|
-
writable: true,
|
|
37
|
-
value: 0
|
|
38
|
-
});
|
|
39
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
40
|
-
Object.defineProperty(this, "internal_eventEmitter", {
|
|
41
|
-
enumerable: true,
|
|
42
|
-
configurable: true,
|
|
43
|
-
writable: true,
|
|
44
|
-
value: new EventEmitter()
|
|
45
|
-
});
|
|
46
|
-
Object.defineProperty(this, "handleSetRawMode", {
|
|
47
|
-
enumerable: true,
|
|
48
|
-
configurable: true,
|
|
49
|
-
writable: true,
|
|
50
|
-
value: (isEnabled) => {
|
|
51
|
-
const { stdin } = this.props;
|
|
52
|
-
if (!this.isRawModeSupported()) {
|
|
53
|
-
if (stdin === process.stdin) {
|
|
54
|
-
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');
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
throw new Error('Raw mode is not supported on the stdin provided to Ink.\nRead about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported');
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
stdin.setEncoding('utf8');
|
|
61
|
-
if (isEnabled) {
|
|
62
|
-
// Ensure raw mode is enabled only once
|
|
63
|
-
if (this.rawModeEnabledCount === 0) {
|
|
64
|
-
stdin.ref();
|
|
65
|
-
stdin.setRawMode(true);
|
|
66
|
-
stdin.addListener('readable', this.handleReadable);
|
|
67
|
-
}
|
|
68
|
-
this.rawModeEnabledCount++;
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
// Disable raw mode only when no components left that are using it
|
|
72
|
-
if (--this.rawModeEnabledCount === 0) {
|
|
73
|
-
stdin.setRawMode(false);
|
|
74
|
-
stdin.removeListener('readable', this.handleReadable);
|
|
75
|
-
stdin.unref();
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
Object.defineProperty(this, "handleReadable", {
|
|
80
|
-
enumerable: true,
|
|
81
|
-
configurable: true,
|
|
82
|
-
writable: true,
|
|
83
|
-
value: () => {
|
|
84
|
-
let chunk;
|
|
85
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
86
|
-
while ((chunk = this.props.stdin.read()) !== null) {
|
|
87
|
-
this.handleInput(chunk);
|
|
88
|
-
this.internal_eventEmitter.emit('input', chunk);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
Object.defineProperty(this, "handleInput", {
|
|
93
|
-
enumerable: true,
|
|
94
|
-
configurable: true,
|
|
95
|
-
writable: true,
|
|
96
|
-
value: (input) => {
|
|
97
|
-
// Exit on Ctrl+C
|
|
98
|
-
// eslint-disable-next-line unicorn/no-hex-escape
|
|
99
|
-
if (input === '\x03' && this.props.exitOnCtrlC) {
|
|
100
|
-
this.handleExit();
|
|
101
|
-
}
|
|
102
|
-
// Reset focus when there's an active focused component on Esc
|
|
103
|
-
if (input === escape && this.state.activeFocusId) {
|
|
104
|
-
this.setState({
|
|
105
|
-
activeFocusId: undefined
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
if (this.state.isFocusEnabled && this.state.focusables.length > 0) {
|
|
109
|
-
if (input === tab) {
|
|
110
|
-
this.focusNext();
|
|
111
|
-
}
|
|
112
|
-
if (input === shiftTab) {
|
|
113
|
-
this.focusPrevious();
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
Object.defineProperty(this, "handleExit", {
|
|
119
|
-
enumerable: true,
|
|
120
|
-
configurable: true,
|
|
121
|
-
writable: true,
|
|
122
|
-
value: (error) => {
|
|
123
|
-
if (this.isRawModeSupported()) {
|
|
124
|
-
this.handleSetRawMode(false);
|
|
125
|
-
}
|
|
126
|
-
this.props.onExit(error);
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
Object.defineProperty(this, "enableFocus", {
|
|
130
|
-
enumerable: true,
|
|
131
|
-
configurable: true,
|
|
132
|
-
writable: true,
|
|
133
|
-
value: () => {
|
|
134
|
-
this.setState({
|
|
135
|
-
isFocusEnabled: true
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
});
|
|
139
|
-
Object.defineProperty(this, "disableFocus", {
|
|
140
|
-
enumerable: true,
|
|
141
|
-
configurable: true,
|
|
142
|
-
writable: true,
|
|
143
|
-
value: () => {
|
|
144
|
-
this.setState({
|
|
145
|
-
isFocusEnabled: false
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
});
|
|
149
|
-
Object.defineProperty(this, "focus", {
|
|
150
|
-
enumerable: true,
|
|
151
|
-
configurable: true,
|
|
152
|
-
writable: true,
|
|
153
|
-
value: (id) => {
|
|
154
|
-
this.setState(previousState => {
|
|
155
|
-
const hasFocusableId = previousState.focusables.some(focusable => focusable?.id === id);
|
|
156
|
-
if (!hasFocusableId) {
|
|
157
|
-
return previousState;
|
|
158
|
-
}
|
|
159
|
-
return { activeFocusId: id };
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
});
|
|
163
|
-
Object.defineProperty(this, "focusNext", {
|
|
164
|
-
enumerable: true,
|
|
165
|
-
configurable: true,
|
|
166
|
-
writable: true,
|
|
167
|
-
value: () => {
|
|
168
|
-
this.setState(previousState => {
|
|
169
|
-
const firstFocusableId = previousState.focusables[0]?.id;
|
|
170
|
-
const nextFocusableId = this.findNextFocusable(previousState);
|
|
171
|
-
return {
|
|
172
|
-
activeFocusId: nextFocusableId ?? firstFocusableId
|
|
173
|
-
};
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
Object.defineProperty(this, "focusPrevious", {
|
|
178
|
-
enumerable: true,
|
|
179
|
-
configurable: true,
|
|
180
|
-
writable: true,
|
|
181
|
-
value: () => {
|
|
182
|
-
this.setState(previousState => {
|
|
183
|
-
const lastFocusableId = previousState.focusables[previousState.focusables.length - 1]?.id;
|
|
184
|
-
const previousFocusableId = this.findPreviousFocusable(previousState);
|
|
185
|
-
return {
|
|
186
|
-
activeFocusId: previousFocusableId ?? lastFocusableId
|
|
187
|
-
};
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
});
|
|
191
|
-
Object.defineProperty(this, "addFocusable", {
|
|
192
|
-
enumerable: true,
|
|
193
|
-
configurable: true,
|
|
194
|
-
writable: true,
|
|
195
|
-
value: (id, { autoFocus }) => {
|
|
196
|
-
this.setState(previousState => {
|
|
197
|
-
let nextFocusId = previousState.activeFocusId;
|
|
198
|
-
if (!nextFocusId && autoFocus) {
|
|
199
|
-
nextFocusId = id;
|
|
200
|
-
}
|
|
201
|
-
return {
|
|
202
|
-
activeFocusId: nextFocusId,
|
|
203
|
-
focusables: [
|
|
204
|
-
...previousState.focusables,
|
|
205
|
-
{
|
|
206
|
-
id,
|
|
207
|
-
isActive: true
|
|
208
|
-
}
|
|
209
|
-
]
|
|
210
|
-
};
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
});
|
|
214
|
-
Object.defineProperty(this, "removeFocusable", {
|
|
215
|
-
enumerable: true,
|
|
216
|
-
configurable: true,
|
|
217
|
-
writable: true,
|
|
218
|
-
value: (id) => {
|
|
219
|
-
this.setState(previousState => ({
|
|
220
|
-
activeFocusId: previousState.activeFocusId === id
|
|
221
|
-
? undefined
|
|
222
|
-
: previousState.activeFocusId,
|
|
223
|
-
focusables: previousState.focusables.filter(focusable => {
|
|
224
|
-
return focusable.id !== id;
|
|
225
|
-
})
|
|
226
|
-
}));
|
|
227
|
-
}
|
|
228
|
-
});
|
|
229
|
-
Object.defineProperty(this, "activateFocusable", {
|
|
230
|
-
enumerable: true,
|
|
231
|
-
configurable: true,
|
|
232
|
-
writable: true,
|
|
233
|
-
value: (id) => {
|
|
234
|
-
this.setState(previousState => ({
|
|
235
|
-
focusables: previousState.focusables.map(focusable => {
|
|
236
|
-
if (focusable.id !== id) {
|
|
237
|
-
return focusable;
|
|
238
|
-
}
|
|
239
|
-
return {
|
|
240
|
-
id,
|
|
241
|
-
isActive: true
|
|
242
|
-
};
|
|
243
|
-
})
|
|
244
|
-
}));
|
|
245
|
-
}
|
|
246
|
-
});
|
|
247
|
-
Object.defineProperty(this, "deactivateFocusable", {
|
|
248
|
-
enumerable: true,
|
|
249
|
-
configurable: true,
|
|
250
|
-
writable: true,
|
|
251
|
-
value: (id) => {
|
|
252
|
-
this.setState(previousState => ({
|
|
253
|
-
activeFocusId: previousState.activeFocusId === id
|
|
254
|
-
? undefined
|
|
255
|
-
: previousState.activeFocusId,
|
|
256
|
-
focusables: previousState.focusables.map(focusable => {
|
|
257
|
-
if (focusable.id !== id) {
|
|
258
|
-
return focusable;
|
|
259
|
-
}
|
|
260
|
-
return {
|
|
261
|
-
id,
|
|
262
|
-
isActive: false
|
|
263
|
-
};
|
|
264
|
-
})
|
|
265
|
-
}));
|
|
266
|
-
}
|
|
267
|
-
});
|
|
268
|
-
Object.defineProperty(this, "findNextFocusable", {
|
|
269
|
-
enumerable: true,
|
|
270
|
-
configurable: true,
|
|
271
|
-
writable: true,
|
|
272
|
-
value: (state) => {
|
|
273
|
-
const activeIndex = state.focusables.findIndex(focusable => {
|
|
274
|
-
return focusable.id === state.activeFocusId;
|
|
275
|
-
});
|
|
276
|
-
for (let index = activeIndex + 1; index < state.focusables.length; index++) {
|
|
277
|
-
const focusable = state.focusables[index];
|
|
278
|
-
if (focusable?.isActive) {
|
|
279
|
-
return focusable.id;
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
return undefined;
|
|
283
|
-
}
|
|
284
|
-
});
|
|
285
|
-
Object.defineProperty(this, "findPreviousFocusable", {
|
|
286
|
-
enumerable: true,
|
|
287
|
-
configurable: true,
|
|
288
|
-
writable: true,
|
|
289
|
-
value: (state) => {
|
|
290
|
-
const activeIndex = state.focusables.findIndex(focusable => {
|
|
291
|
-
return focusable.id === state.activeFocusId;
|
|
292
|
-
});
|
|
293
|
-
for (let index = activeIndex - 1; index >= 0; index--) {
|
|
294
|
-
const focusable = state.focusables[index];
|
|
295
|
-
if (focusable?.isActive) {
|
|
296
|
-
return focusable.id;
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
return undefined;
|
|
300
|
-
}
|
|
301
|
-
});
|
|
302
|
-
}
|
|
18
|
+
static displayName = 'InternalApp';
|
|
303
19
|
static getDerivedStateFromError(error) {
|
|
304
20
|
return { error };
|
|
305
21
|
}
|
|
22
|
+
state = {
|
|
23
|
+
isFocusEnabled: true,
|
|
24
|
+
activeFocusId: undefined,
|
|
25
|
+
focusables: [],
|
|
26
|
+
error: undefined,
|
|
27
|
+
};
|
|
28
|
+
// Count how many components enabled raw mode to avoid disabling
|
|
29
|
+
// raw mode until all components don't need it anymore
|
|
30
|
+
rawModeEnabledCount = 0;
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
32
|
+
internal_eventEmitter = new EventEmitter();
|
|
306
33
|
// Determines if TTY is supported on the provided stdin
|
|
307
34
|
isRawModeSupported() {
|
|
308
35
|
return this.props.stdin.isTTY;
|
|
@@ -313,7 +40,7 @@ export default class App extends PureComponent {
|
|
|
313
40
|
, {
|
|
314
41
|
// eslint-disable-next-line react/jsx-no-constructed-context-values
|
|
315
42
|
value: {
|
|
316
|
-
exit: this.handleExit
|
|
43
|
+
exit: this.handleExit,
|
|
317
44
|
} },
|
|
318
45
|
React.createElement(StdinContext.Provider
|
|
319
46
|
// eslint-disable-next-line react/jsx-no-constructed-context-values
|
|
@@ -326,7 +53,7 @@ export default class App extends PureComponent {
|
|
|
326
53
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
327
54
|
internal_exitOnCtrlC: this.props.exitOnCtrlC,
|
|
328
55
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
329
|
-
internal_eventEmitter: this.internal_eventEmitter
|
|
56
|
+
internal_eventEmitter: this.internal_eventEmitter,
|
|
330
57
|
} },
|
|
331
58
|
React.createElement(StdoutContext.Provider
|
|
332
59
|
// eslint-disable-next-line react/jsx-no-constructed-context-values
|
|
@@ -334,7 +61,7 @@ export default class App extends PureComponent {
|
|
|
334
61
|
// eslint-disable-next-line react/jsx-no-constructed-context-values
|
|
335
62
|
value: {
|
|
336
63
|
stdout: this.props.stdout,
|
|
337
|
-
write: this.props.writeToStdout
|
|
64
|
+
write: this.props.writeToStdout,
|
|
338
65
|
} },
|
|
339
66
|
React.createElement(StderrContext.Provider
|
|
340
67
|
// eslint-disable-next-line react/jsx-no-constructed-context-values
|
|
@@ -342,7 +69,7 @@ export default class App extends PureComponent {
|
|
|
342
69
|
// eslint-disable-next-line react/jsx-no-constructed-context-values
|
|
343
70
|
value: {
|
|
344
71
|
stderr: this.props.stderr,
|
|
345
|
-
write: this.props.writeToStderr
|
|
72
|
+
write: this.props.writeToStderr,
|
|
346
73
|
} },
|
|
347
74
|
React.createElement(FocusContext.Provider
|
|
348
75
|
// eslint-disable-next-line react/jsx-no-constructed-context-values
|
|
@@ -358,7 +85,7 @@ export default class App extends PureComponent {
|
|
|
358
85
|
disableFocus: this.disableFocus,
|
|
359
86
|
focusNext: this.focusNext,
|
|
360
87
|
focusPrevious: this.focusPrevious,
|
|
361
|
-
focus: this.focus
|
|
88
|
+
focus: this.focus,
|
|
362
89
|
} }, this.state.error ? (React.createElement(ErrorOverview, { error: this.state.error })) : (this.props.children)))))));
|
|
363
90
|
}
|
|
364
91
|
componentDidMount() {
|
|
@@ -374,11 +101,186 @@ export default class App extends PureComponent {
|
|
|
374
101
|
componentDidCatch(error) {
|
|
375
102
|
this.handleExit(error);
|
|
376
103
|
}
|
|
104
|
+
handleSetRawMode = (isEnabled) => {
|
|
105
|
+
const { stdin } = this.props;
|
|
106
|
+
if (!this.isRawModeSupported()) {
|
|
107
|
+
if (stdin === process.stdin) {
|
|
108
|
+
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
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
throw new Error('Raw mode is not supported on the stdin provided to Ink.\nRead about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported');
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
stdin.setEncoding('utf8');
|
|
115
|
+
if (isEnabled) {
|
|
116
|
+
// Ensure raw mode is enabled only once
|
|
117
|
+
if (this.rawModeEnabledCount === 0) {
|
|
118
|
+
stdin.ref();
|
|
119
|
+
stdin.setRawMode(true);
|
|
120
|
+
stdin.addListener('readable', this.handleReadable);
|
|
121
|
+
}
|
|
122
|
+
this.rawModeEnabledCount++;
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
// 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();
|
|
130
|
+
}
|
|
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);
|
|
138
|
+
}
|
|
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();
|
|
145
|
+
}
|
|
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
|
+
});
|
|
151
|
+
}
|
|
152
|
+
if (this.state.isFocusEnabled && this.state.focusables.length > 0) {
|
|
153
|
+
if (input === tab) {
|
|
154
|
+
this.focusNext();
|
|
155
|
+
}
|
|
156
|
+
if (input === shiftTab) {
|
|
157
|
+
this.focusPrevious();
|
|
158
|
+
}
|
|
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,
|
|
170
|
+
});
|
|
171
|
+
};
|
|
172
|
+
disableFocus = () => {
|
|
173
|
+
this.setState({
|
|
174
|
+
isFocusEnabled: false,
|
|
175
|
+
});
|
|
176
|
+
};
|
|
177
|
+
focus = (id) => {
|
|
178
|
+
this.setState(previousState => {
|
|
179
|
+
const hasFocusableId = previousState.focusables.some(focusable => focusable?.id === id);
|
|
180
|
+
if (!hasFocusableId) {
|
|
181
|
+
return previousState;
|
|
182
|
+
}
|
|
183
|
+
return { activeFocusId: id };
|
|
184
|
+
});
|
|
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
|
+
};
|
|
193
|
+
});
|
|
194
|
+
};
|
|
195
|
+
focusPrevious = () => {
|
|
196
|
+
this.setState(previousState => {
|
|
197
|
+
const lastFocusableId = previousState.focusables.findLast(focusable => focusable.isActive)?.id;
|
|
198
|
+
const previousFocusableId = this.findPreviousFocusable(previousState);
|
|
199
|
+
return {
|
|
200
|
+
activeFocusId: previousFocusableId ?? lastFocusableId,
|
|
201
|
+
};
|
|
202
|
+
});
|
|
203
|
+
};
|
|
204
|
+
addFocusable = (id, { autoFocus }) => {
|
|
205
|
+
this.setState(previousState => {
|
|
206
|
+
let nextFocusId = previousState.activeFocusId;
|
|
207
|
+
if (!nextFocusId && autoFocus) {
|
|
208
|
+
nextFocusId = id;
|
|
209
|
+
}
|
|
210
|
+
return {
|
|
211
|
+
activeFocusId: nextFocusId,
|
|
212
|
+
focusables: [
|
|
213
|
+
...previousState.focusables,
|
|
214
|
+
{
|
|
215
|
+
id,
|
|
216
|
+
isActive: true,
|
|
217
|
+
},
|
|
218
|
+
],
|
|
219
|
+
};
|
|
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
|
+
}));
|
|
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;
|
|
269
|
+
}
|
|
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
|
+
};
|
|
377
285
|
}
|
|
378
|
-
Object.defineProperty(App, "displayName", {
|
|
379
|
-
enumerable: true,
|
|
380
|
-
configurable: true,
|
|
381
|
-
writable: true,
|
|
382
|
-
value: 'InternalApp'
|
|
383
|
-
});
|
|
384
286
|
//# sourceMappingURL=App.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/components/App.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AACzC,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,KAAK,EAAE,EAAC,aAAa,EAAiB,MAAM,OAAO,CAAC;AAC3D,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAC7C,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAC7C,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAE/C,MAAM,GAAG,GAAG,IAAI,CAAC;AACjB,MAAM,QAAQ,GAAG,UAAU,CAAC;AAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC;AAyBxB,kCAAkC;AAClC,mFAAmF;AACnF,uDAAuD;AACvD,MAAM,CAAC,OAAO,OAAO,GAAI,SAAQ,aAA2B;
|
|
1
|
+
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/components/App.tsx"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,57 @@ export type Props = Except<Styles, 'textWrap'>;
|
|
|
6
6
|
/**
|
|
7
7
|
* `<Box>` is an essential Ink component to build your layout. It's like `<div style="display: flex">` in the browser.
|
|
8
8
|
*/
|
|
9
|
-
declare const Box: React.ForwardRefExoticComponent<
|
|
9
|
+
declare const Box: React.ForwardRefExoticComponent<{
|
|
10
|
+
readonly position?: "absolute" | "relative" | undefined;
|
|
11
|
+
readonly columnGap?: number | undefined;
|
|
12
|
+
readonly rowGap?: number | undefined;
|
|
13
|
+
readonly gap?: number | undefined;
|
|
14
|
+
readonly margin?: number | undefined;
|
|
15
|
+
readonly marginX?: number | undefined;
|
|
16
|
+
readonly marginY?: number | undefined;
|
|
17
|
+
readonly marginTop?: number | undefined;
|
|
18
|
+
readonly marginBottom?: number | undefined;
|
|
19
|
+
readonly marginLeft?: number | undefined;
|
|
20
|
+
readonly marginRight?: number | undefined;
|
|
21
|
+
readonly padding?: number | undefined;
|
|
22
|
+
readonly paddingX?: number | undefined;
|
|
23
|
+
readonly paddingY?: number | undefined;
|
|
24
|
+
readonly paddingTop?: number | undefined;
|
|
25
|
+
readonly paddingBottom?: number | undefined;
|
|
26
|
+
readonly paddingLeft?: number | undefined;
|
|
27
|
+
readonly paddingRight?: number | undefined;
|
|
28
|
+
readonly flexGrow?: number | undefined;
|
|
29
|
+
readonly flexShrink?: number | undefined;
|
|
30
|
+
readonly flexDirection?: "row" | "column" | "row-reverse" | "column-reverse" | undefined;
|
|
31
|
+
readonly flexBasis?: string | number | undefined;
|
|
32
|
+
readonly flexWrap?: "wrap" | "nowrap" | "wrap-reverse" | undefined;
|
|
33
|
+
readonly alignItems?: "flex-start" | "center" | "flex-end" | "stretch" | undefined;
|
|
34
|
+
readonly alignSelf?: "flex-start" | "center" | "flex-end" | "auto" | undefined;
|
|
35
|
+
readonly justifyContent?: "flex-start" | "center" | "flex-end" | "space-between" | "space-around" | undefined;
|
|
36
|
+
readonly width?: string | number | undefined;
|
|
37
|
+
readonly height?: string | number | undefined;
|
|
38
|
+
readonly minWidth?: string | number | undefined;
|
|
39
|
+
readonly minHeight?: string | number | undefined;
|
|
40
|
+
readonly display?: "flex" | "none" | undefined;
|
|
41
|
+
readonly borderStyle?: import("cli-boxes").BoxStyle | keyof import("cli-boxes").Boxes | undefined;
|
|
42
|
+
readonly borderTop?: boolean | undefined;
|
|
43
|
+
readonly borderBottom?: boolean | undefined;
|
|
44
|
+
readonly borderLeft?: boolean | undefined;
|
|
45
|
+
readonly borderRight?: boolean | undefined;
|
|
46
|
+
readonly borderColor?: import("type-fest").LiteralUnion<keyof import("ansi-styles").ForegroundColor, string> | undefined;
|
|
47
|
+
readonly borderTopColor?: import("type-fest").LiteralUnion<keyof import("ansi-styles").ForegroundColor, string> | undefined;
|
|
48
|
+
readonly borderBottomColor?: import("type-fest").LiteralUnion<keyof import("ansi-styles").ForegroundColor, string> | undefined;
|
|
49
|
+
readonly borderLeftColor?: import("type-fest").LiteralUnion<keyof import("ansi-styles").ForegroundColor, string> | undefined;
|
|
50
|
+
readonly borderRightColor?: import("type-fest").LiteralUnion<keyof import("ansi-styles").ForegroundColor, string> | undefined;
|
|
51
|
+
readonly borderDimColor?: boolean | undefined;
|
|
52
|
+
readonly borderTopDimColor?: boolean | undefined;
|
|
53
|
+
readonly borderBottomDimColor?: boolean | undefined;
|
|
54
|
+
readonly borderLeftDimColor?: boolean | undefined;
|
|
55
|
+
readonly borderRightDimColor?: boolean | undefined;
|
|
56
|
+
readonly overflow?: "visible" | "hidden" | undefined;
|
|
57
|
+
readonly overflowX?: "visible" | "hidden" | undefined;
|
|
58
|
+
readonly overflowY?: "visible" | "hidden" | undefined;
|
|
59
|
+
} & {
|
|
10
60
|
children?: React.ReactNode;
|
|
11
61
|
} & React.RefAttributes<DOMElement>>;
|
|
12
62
|
export default Box;
|
package/build/components/Box.js
CHANGED
|
@@ -6,7 +6,7 @@ const Box = forwardRef(({ children, ...style }, ref) => {
|
|
|
6
6
|
return (React.createElement("ink-box", { ref: ref, style: {
|
|
7
7
|
...style,
|
|
8
8
|
overflowX: style.overflowX ?? style.overflow ?? 'visible',
|
|
9
|
-
overflowY: style.overflowY ?? style.overflow ?? 'visible'
|
|
9
|
+
overflowY: style.overflowY ?? style.overflow ?? 'visible',
|
|
10
10
|
} }, children));
|
|
11
11
|
});
|
|
12
12
|
Box.displayName = 'Box';
|
|
@@ -14,7 +14,7 @@ Box.defaultProps = {
|
|
|
14
14
|
flexWrap: 'nowrap',
|
|
15
15
|
flexDirection: 'row',
|
|
16
16
|
flexGrow: 0,
|
|
17
|
-
flexShrink: 1
|
|
17
|
+
flexShrink: 1,
|
|
18
18
|
};
|
|
19
19
|
export default Box;
|
|
20
20
|
//# sourceMappingURL=Box.js.map
|