ink 4.0.0 → 4.1.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/Box.d.ts +72 -0
- package/build/components/Box.js +6 -1
- package/build/components/Box.js.map +1 -1
- package/build/dom.d.ts +3 -3
- package/build/dom.js +2 -1
- package/build/dom.js.map +1 -1
- package/build/get-max-width.d.ts +2 -2
- package/build/get-max-width.js +2 -1
- package/build/get-max-width.js.map +1 -1
- package/build/ink.d.ts +2 -0
- package/build/ink.js +29 -7
- package/build/ink.js.map +1 -1
- package/build/output.d.ts +9 -1
- package/build/output.js +87 -20
- package/build/output.js.map +1 -1
- package/build/reconciler.js +8 -1
- package/build/reconciler.js.map +1 -1
- package/build/render-node-to-output.js +28 -1
- package/build/render-node-to-output.js.map +1 -1
- package/build/renderer.d.ts +1 -1
- package/build/renderer.js +1 -4
- package/build/renderer.js.map +1 -1
- package/build/styles.d.ts +22 -1
- package/build/styles.js +22 -2
- package/build/styles.js.map +1 -1
- package/package.json +5 -5
- package/readme.md +113 -10
|
@@ -3,6 +3,24 @@ import { type Except } from 'type-fest';
|
|
|
3
3
|
import { type Styles } from '../styles.js';
|
|
4
4
|
import { type DOMElement } from '../dom.js';
|
|
5
5
|
export type Props = Except<Styles, 'textWrap'> & {
|
|
6
|
+
/**
|
|
7
|
+
* Size of the gap between an element's columns.
|
|
8
|
+
*
|
|
9
|
+
* @default 0
|
|
10
|
+
*/
|
|
11
|
+
readonly columnGap?: number;
|
|
12
|
+
/**
|
|
13
|
+
* Size of the gap between element's rows.
|
|
14
|
+
*
|
|
15
|
+
* @default 0
|
|
16
|
+
*/
|
|
17
|
+
readonly rowGap?: number;
|
|
18
|
+
/**
|
|
19
|
+
* Size of the gap between an element's columns and rows. Shorthand for `columnGap` and `rowGap`.
|
|
20
|
+
*
|
|
21
|
+
* @default 0
|
|
22
|
+
*/
|
|
23
|
+
readonly gap?: number;
|
|
6
24
|
/**
|
|
7
25
|
* Margin on all sides. Equivalent to setting `marginTop`, `marginBottom`, `marginLeft` and `marginRight`.
|
|
8
26
|
*
|
|
@@ -39,11 +57,47 @@ export type Props = Except<Styles, 'textWrap'> & {
|
|
|
39
57
|
* @default 0
|
|
40
58
|
*/
|
|
41
59
|
readonly paddingY?: number;
|
|
60
|
+
/**
|
|
61
|
+
* Behavior for an element's overflow in both directions.
|
|
62
|
+
*
|
|
63
|
+
* @default 'visible'
|
|
64
|
+
*/
|
|
65
|
+
readonly overflow?: 'visible' | 'hidden';
|
|
66
|
+
/**
|
|
67
|
+
* Behavior for an element's overflow in horizontal direction.
|
|
68
|
+
*
|
|
69
|
+
* @default 'visible'
|
|
70
|
+
*/
|
|
71
|
+
readonly overflowX?: 'visible' | 'hidden';
|
|
72
|
+
/**
|
|
73
|
+
* Behavior for an element's overflow in vertical direction.
|
|
74
|
+
*
|
|
75
|
+
* @default 'visible'
|
|
76
|
+
*/
|
|
77
|
+
readonly overflowY?: 'visible' | 'hidden';
|
|
42
78
|
};
|
|
43
79
|
/**
|
|
44
80
|
* `<Box>` is an essential Ink component to build your layout. It's like `<div style="display: flex">` in the browser.
|
|
45
81
|
*/
|
|
46
82
|
declare const Box: React.ForwardRefExoticComponent<Except<Styles, "textWrap"> & {
|
|
83
|
+
/**
|
|
84
|
+
* Size of the gap between an element's columns.
|
|
85
|
+
*
|
|
86
|
+
* @default 0
|
|
87
|
+
*/
|
|
88
|
+
readonly columnGap?: number | undefined;
|
|
89
|
+
/**
|
|
90
|
+
* Size of the gap between element's rows.
|
|
91
|
+
*
|
|
92
|
+
* @default 0
|
|
93
|
+
*/
|
|
94
|
+
readonly rowGap?: number | undefined;
|
|
95
|
+
/**
|
|
96
|
+
* Size of the gap between an element's columns and rows. Shorthand for `columnGap` and `rowGap`.
|
|
97
|
+
*
|
|
98
|
+
* @default 0
|
|
99
|
+
*/
|
|
100
|
+
readonly gap?: number | undefined;
|
|
47
101
|
/**
|
|
48
102
|
* Margin on all sides. Equivalent to setting `marginTop`, `marginBottom`, `marginLeft` and `marginRight`.
|
|
49
103
|
*
|
|
@@ -80,6 +134,24 @@ declare const Box: React.ForwardRefExoticComponent<Except<Styles, "textWrap"> &
|
|
|
80
134
|
* @default 0
|
|
81
135
|
*/
|
|
82
136
|
readonly paddingY?: number | undefined;
|
|
137
|
+
/**
|
|
138
|
+
* Behavior for an element's overflow in both directions.
|
|
139
|
+
*
|
|
140
|
+
* @default 'visible'
|
|
141
|
+
*/
|
|
142
|
+
readonly overflow?: "visible" | "hidden" | undefined;
|
|
143
|
+
/**
|
|
144
|
+
* Behavior for an element's overflow in horizontal direction.
|
|
145
|
+
*
|
|
146
|
+
* @default 'visible'
|
|
147
|
+
*/
|
|
148
|
+
readonly overflowX?: "visible" | "hidden" | undefined;
|
|
149
|
+
/**
|
|
150
|
+
* Behavior for an element's overflow in vertical direction.
|
|
151
|
+
*
|
|
152
|
+
* @default 'visible'
|
|
153
|
+
*/
|
|
154
|
+
readonly overflowY?: "visible" | "hidden" | undefined;
|
|
83
155
|
} & {
|
|
84
156
|
children?: React.ReactNode;
|
|
85
157
|
} & React.RefAttributes<DOMElement>>;
|
package/build/components/Box.js
CHANGED
|
@@ -6,6 +6,8 @@ import React, { forwardRef } from 'react';
|
|
|
6
6
|
const Box = forwardRef(({ children, ...style }, ref) => {
|
|
7
7
|
const transformedStyle = {
|
|
8
8
|
...style,
|
|
9
|
+
columnGap: style.columnGap || style.gap || 0,
|
|
10
|
+
rowGap: style.rowGap || style.gap || 0,
|
|
9
11
|
marginLeft: style.marginLeft || style.marginX || style.margin || 0,
|
|
10
12
|
marginRight: style.marginRight || style.marginX || style.margin || 0,
|
|
11
13
|
marginTop: style.marginTop || style.marginY || style.margin || 0,
|
|
@@ -13,12 +15,15 @@ const Box = forwardRef(({ children, ...style }, ref) => {
|
|
|
13
15
|
paddingLeft: style.paddingLeft || style.paddingX || style.padding || 0,
|
|
14
16
|
paddingRight: style.paddingRight || style.paddingX || style.padding || 0,
|
|
15
17
|
paddingTop: style.paddingTop || style.paddingY || style.padding || 0,
|
|
16
|
-
paddingBottom: style.paddingBottom || style.paddingY || style.padding || 0
|
|
18
|
+
paddingBottom: style.paddingBottom || style.paddingY || style.padding || 0,
|
|
19
|
+
overflowX: style.overflowX || style.overflow || 'visible',
|
|
20
|
+
overflowY: style.overflowY || style.overflow || 'visible'
|
|
17
21
|
};
|
|
18
22
|
return (React.createElement("ink-box", { ref: ref, style: transformedStyle }, children));
|
|
19
23
|
});
|
|
20
24
|
Box.displayName = 'Box';
|
|
21
25
|
Box.defaultProps = {
|
|
26
|
+
flexWrap: 'nowrap',
|
|
22
27
|
flexDirection: 'row',
|
|
23
28
|
flexGrow: 0,
|
|
24
29
|
flexShrink: 1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Box.js","sourceRoot":"","sources":["../../src/components/Box.tsx"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,OAAO,KAAK,EAAE,EAAC,UAAU,EAAyB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Box.js","sourceRoot":"","sources":["../../src/components/Box.tsx"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,OAAO,KAAK,EAAE,EAAC,UAAU,EAAyB,MAAM,OAAO,CAAC;AA2FhE;;GAEG;AACH,MAAM,GAAG,GAAG,UAAU,CACrB,CAAC,EAAC,QAAQ,EAAE,GAAG,KAAK,EAAC,EAAE,GAAG,EAAE,EAAE;IAC7B,MAAM,gBAAgB,GAAG;QACxB,GAAG,KAAK;QACR,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC;QAC5C,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC;QACtC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;QAClE,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;QACpE,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;QAChE,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;QACtE,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC;QACtE,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC;QACxE,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC;QACpE,aAAa,EACZ,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC;QAC5D,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,IAAI,SAAS;QACzD,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,IAAI,SAAS;KACzD,CAAC;IAEF,OAAO,CACN,iCAAS,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,gBAAgB,IACxC,QAAQ,CACA,CACV,CAAC;AACH,CAAC,CACD,CAAC;AAEF,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;AAExB,GAAG,CAAC,YAAY,GAAG;IAClB,QAAQ,EAAE,QAAQ;IAClB,aAAa,EAAE,KAAK;IACpB,QAAQ,EAAE,CAAC;IACX,UAAU,EAAE,CAAC;CACb,CAAC;AAEF,eAAe,GAAG,CAAC"}
|
package/build/dom.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
import Yoga from 'yoga-layout-prebuilt';
|
|
1
|
+
import { type Node as YogaNode } from 'yoga-wasm-web/auto';
|
|
3
2
|
import { type Styles } from './styles.js';
|
|
4
3
|
import { type OutputTransformer } from './render-node-to-output.js';
|
|
5
4
|
type InkNode = {
|
|
6
5
|
parentNode: DOMElement | undefined;
|
|
7
|
-
yogaNode?:
|
|
6
|
+
yogaNode?: YogaNode;
|
|
8
7
|
internal_static?: boolean;
|
|
9
8
|
style: Styles;
|
|
10
9
|
};
|
|
@@ -18,6 +17,7 @@ export type DOMElement = {
|
|
|
18
17
|
internal_transform?: OutputTransformer;
|
|
19
18
|
isStaticDirty?: boolean;
|
|
20
19
|
staticNode?: DOMElement;
|
|
20
|
+
onComputeLayout?: () => void;
|
|
21
21
|
onRender?: () => void;
|
|
22
22
|
onImmediateRender?: () => void;
|
|
23
23
|
} & InkNode;
|
package/build/dom.js
CHANGED
package/build/dom.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"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"}
|
package/build/get-max-width.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
declare const getMaxWidth: (yogaNode:
|
|
1
|
+
import { type Node as YogaNode } from 'yoga-wasm-web/auto';
|
|
2
|
+
declare const getMaxWidth: (yogaNode: YogaNode) => number;
|
|
3
3
|
export default getMaxWidth;
|
package/build/get-max-width.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-max-width.js","sourceRoot":"","sources":["../src/get-max-width.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"get-max-width.js","sourceRoot":"","sources":["../src/get-max-width.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,IAA6B,MAAM,oBAAoB,CAAC;AAE/D,MAAM,WAAW,GAAG,CAAC,QAAkB,EAAE,EAAE;IAC1C,OAAO,CACN,QAAQ,CAAC,gBAAgB,EAAE;QAC3B,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;QAC3C,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;QAC5C,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;QAC1C,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3C,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
package/build/ink.d.ts
CHANGED
|
@@ -22,9 +22,11 @@ export default class Ink {
|
|
|
22
22
|
private restoreConsole?;
|
|
23
23
|
private readonly unsubscribeResize?;
|
|
24
24
|
constructor(options: Options);
|
|
25
|
+
resized: () => void;
|
|
25
26
|
resolveExitPromise: () => void;
|
|
26
27
|
rejectExitPromise: (reason?: Error) => void;
|
|
27
28
|
unsubscribeExit: () => void;
|
|
29
|
+
calculateLayout: () => void;
|
|
28
30
|
onRender: () => void;
|
|
29
31
|
render(node: ReactNode): void;
|
|
30
32
|
writeToStdout(data: string): void;
|
package/build/ink.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import process from 'node:process';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import
|
|
3
|
+
import throttle from 'lodash/throttle.js';
|
|
4
4
|
import ansiEscapes from 'ansi-escapes';
|
|
5
5
|
import originalIsCi from 'is-ci';
|
|
6
6
|
import autoBind from 'auto-bind';
|
|
7
7
|
import signalExit from 'signal-exit';
|
|
8
8
|
import patchConsole from 'patch-console';
|
|
9
|
+
// eslint-disable-next-line n/file-extension-in-import
|
|
10
|
+
import Yoga from 'yoga-wasm-web/auto';
|
|
9
11
|
import reconciler from './reconciler.js';
|
|
10
12
|
import render from './renderer.js';
|
|
11
13
|
import * as dom from './dom.js';
|
|
@@ -85,6 +87,15 @@ export default class Ink {
|
|
|
85
87
|
writable: true,
|
|
86
88
|
value: void 0
|
|
87
89
|
});
|
|
90
|
+
Object.defineProperty(this, "resized", {
|
|
91
|
+
enumerable: true,
|
|
92
|
+
configurable: true,
|
|
93
|
+
writable: true,
|
|
94
|
+
value: () => {
|
|
95
|
+
this.calculateLayout();
|
|
96
|
+
this.onRender();
|
|
97
|
+
}
|
|
98
|
+
});
|
|
88
99
|
Object.defineProperty(this, "resolveExitPromise", {
|
|
89
100
|
enumerable: true,
|
|
90
101
|
configurable: true,
|
|
@@ -103,6 +114,18 @@ export default class Ink {
|
|
|
103
114
|
writable: true,
|
|
104
115
|
value: () => { }
|
|
105
116
|
});
|
|
117
|
+
Object.defineProperty(this, "calculateLayout", {
|
|
118
|
+
enumerable: true,
|
|
119
|
+
configurable: true,
|
|
120
|
+
writable: true,
|
|
121
|
+
value: () => {
|
|
122
|
+
// The 'columns' property can be undefined or 0 when not using a TTY.
|
|
123
|
+
// In that case we fall back to 80.
|
|
124
|
+
const terminalWidth = this.options.stdout.columns || 80;
|
|
125
|
+
this.rootNode.yogaNode.setWidth(terminalWidth);
|
|
126
|
+
this.rootNode.yogaNode.calculateLayout(undefined, undefined, Yoga.DIRECTION_LTR);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
106
129
|
Object.defineProperty(this, "onRender", {
|
|
107
130
|
enumerable: true,
|
|
108
131
|
configurable: true,
|
|
@@ -111,10 +134,7 @@ export default class Ink {
|
|
|
111
134
|
if (this.isUnmounted) {
|
|
112
135
|
return;
|
|
113
136
|
}
|
|
114
|
-
const { output, outputHeight, staticOutput } = render(this.rootNode
|
|
115
|
-
// The 'columns' property can be undefined or 0 when not using a TTY.
|
|
116
|
-
// In that case we fall back to 80.
|
|
117
|
-
this.options.stdout.columns || 80);
|
|
137
|
+
const { output, outputHeight, staticOutput } = render(this.rootNode);
|
|
118
138
|
// If <Static> output isn't empty, it means new children have been added to it
|
|
119
139
|
const hasStaticOutput = staticOutput && staticOutput !== '\n';
|
|
120
140
|
if (this.options.debug) {
|
|
@@ -154,6 +174,7 @@ export default class Ink {
|
|
|
154
174
|
autoBind(this);
|
|
155
175
|
this.options = options;
|
|
156
176
|
this.rootNode = dom.createNode('ink-root');
|
|
177
|
+
this.rootNode.onComputeLayout = this.calculateLayout;
|
|
157
178
|
this.rootNode.onRender = options.debug
|
|
158
179
|
? this.onRender
|
|
159
180
|
: throttle(this.onRender, 32, {
|
|
@@ -194,9 +215,9 @@ export default class Ink {
|
|
|
194
215
|
this.patchConsole();
|
|
195
216
|
}
|
|
196
217
|
if (!isCi) {
|
|
197
|
-
options.stdout.on('resize', this.
|
|
218
|
+
options.stdout.on('resize', this.resized);
|
|
198
219
|
this.unsubscribeResize = () => {
|
|
199
|
-
options.stdout.off('resize', this.
|
|
220
|
+
options.stdout.off('resize', this.resized);
|
|
200
221
|
};
|
|
201
222
|
}
|
|
202
223
|
}
|
|
@@ -242,6 +263,7 @@ export default class Ink {
|
|
|
242
263
|
if (this.isUnmounted) {
|
|
243
264
|
return;
|
|
244
265
|
}
|
|
266
|
+
this.calculateLayout();
|
|
245
267
|
this.onRender();
|
|
246
268
|
this.unsubscribeExit();
|
|
247
269
|
if (typeof this.restoreConsole === 'function') {
|
package/build/ink.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ink.js","sourceRoot":"","sources":["../src/ink.tsx"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,KAAuB,MAAM,OAAO,CAAC;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"ink.js","sourceRoot":"","sources":["../src/ink.tsx"],"names":[],"mappings":"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"}
|
package/build/output.d.ts
CHANGED
|
@@ -11,14 +11,22 @@ type Options = {
|
|
|
11
11
|
width: number;
|
|
12
12
|
height: number;
|
|
13
13
|
};
|
|
14
|
+
type Clip = {
|
|
15
|
+
x1: number | undefined;
|
|
16
|
+
x2: number | undefined;
|
|
17
|
+
y1: number | undefined;
|
|
18
|
+
y2: number | undefined;
|
|
19
|
+
};
|
|
14
20
|
export default class Output {
|
|
15
21
|
width: number;
|
|
16
22
|
height: number;
|
|
17
|
-
private readonly
|
|
23
|
+
private readonly operations;
|
|
18
24
|
constructor(options: Options);
|
|
19
25
|
write(x: number, y: number, text: string, options: {
|
|
20
26
|
transformers: OutputTransformer[];
|
|
21
27
|
}): void;
|
|
28
|
+
clip(clip: Clip): void;
|
|
29
|
+
unclip(): void;
|
|
22
30
|
get(): {
|
|
23
31
|
output: string;
|
|
24
32
|
height: number;
|
package/build/output.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import sliceAnsi from 'slice-ansi';
|
|
2
2
|
import stringWidth from 'string-width';
|
|
3
|
+
import widestLine from 'widest-line';
|
|
3
4
|
export default class Output {
|
|
4
5
|
constructor(options) {
|
|
5
6
|
Object.defineProperty(this, "width", {
|
|
@@ -14,8 +15,7 @@ export default class Output {
|
|
|
14
15
|
writable: true,
|
|
15
16
|
value: void 0
|
|
16
17
|
});
|
|
17
|
-
|
|
18
|
-
Object.defineProperty(this, "writes", {
|
|
18
|
+
Object.defineProperty(this, "operations", {
|
|
19
19
|
enumerable: true,
|
|
20
20
|
configurable: true,
|
|
21
21
|
writable: true,
|
|
@@ -30,32 +30,99 @@ export default class Output {
|
|
|
30
30
|
if (!text) {
|
|
31
31
|
return;
|
|
32
32
|
}
|
|
33
|
-
this.
|
|
33
|
+
this.operations.push({
|
|
34
|
+
type: 'write',
|
|
35
|
+
x,
|
|
36
|
+
y,
|
|
37
|
+
text,
|
|
38
|
+
transformers
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
clip(clip) {
|
|
42
|
+
this.operations.push({
|
|
43
|
+
type: 'clip',
|
|
44
|
+
clip
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
unclip() {
|
|
48
|
+
this.operations.push({
|
|
49
|
+
type: 'unclip'
|
|
50
|
+
});
|
|
34
51
|
}
|
|
35
52
|
get() {
|
|
53
|
+
// Initialize output array with a specific set of rows, so that margin/padding at the bottom is preserved
|
|
36
54
|
const output = [];
|
|
37
55
|
for (let y = 0; y < this.height; y++) {
|
|
38
56
|
output.push(' '.repeat(this.width));
|
|
39
57
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
58
|
+
const clips = [];
|
|
59
|
+
for (const operation of this.operations) {
|
|
60
|
+
if (operation.type === 'clip') {
|
|
61
|
+
clips.push(operation.clip);
|
|
62
|
+
}
|
|
63
|
+
if (operation.type === 'unclip') {
|
|
64
|
+
clips.pop();
|
|
65
|
+
}
|
|
66
|
+
if (operation.type === 'write') {
|
|
67
|
+
const { text, transformers } = operation;
|
|
68
|
+
let { x, y } = operation;
|
|
69
|
+
let lines = text.split('\n');
|
|
70
|
+
const clip = clips[clips.length - 1];
|
|
71
|
+
if (clip) {
|
|
72
|
+
const clipHorizontally = typeof clip?.x1 === 'number' && typeof clip?.x2 === 'number';
|
|
73
|
+
const clipVertically = typeof clip?.y1 === 'number' && typeof clip?.y2 === 'number';
|
|
74
|
+
// If text is positioned outside of clipping area altogether,
|
|
75
|
+
// skip to the next operation to avoid unnecessary calculations
|
|
76
|
+
if (clipHorizontally) {
|
|
77
|
+
const width = widestLine(text);
|
|
78
|
+
if (x + width < clip.x1 || x > clip.x2) {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (clipVertically) {
|
|
83
|
+
const height = lines.length;
|
|
84
|
+
if (y + height < clip.y1 || y > clip.y2) {
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (clipHorizontally) {
|
|
89
|
+
lines = lines.map(line => {
|
|
90
|
+
const from = x < clip.x1 ? clip.x1 - x : 0;
|
|
91
|
+
const width = stringWidth(line);
|
|
92
|
+
const to = x + width > clip.x2 ? clip.x2 - x : width;
|
|
93
|
+
return sliceAnsi(line, from, to);
|
|
94
|
+
});
|
|
95
|
+
if (x < clip.x1) {
|
|
96
|
+
x = clip.x1;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (clipVertically) {
|
|
100
|
+
const from = y < clip.y1 ? clip.y1 - y : 0;
|
|
101
|
+
const height = lines.length;
|
|
102
|
+
const to = y + height > clip.y2 ? clip.y2 - y : height;
|
|
103
|
+
lines = lines.slice(from, to);
|
|
104
|
+
if (y < clip.y1) {
|
|
105
|
+
y = clip.y1;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
49
108
|
}
|
|
50
|
-
|
|
51
|
-
for (
|
|
52
|
-
|
|
109
|
+
let offsetY = 0;
|
|
110
|
+
for (let line of lines) {
|
|
111
|
+
const currentLine = output[y + offsetY];
|
|
112
|
+
// Line can be missing if `text` is taller than height of pre-initialized `this.output`
|
|
113
|
+
if (!currentLine) {
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
const width = stringWidth(line);
|
|
117
|
+
for (const transformer of transformers) {
|
|
118
|
+
line = transformer(line);
|
|
119
|
+
}
|
|
120
|
+
output[y + offsetY] =
|
|
121
|
+
sliceAnsi(currentLine, 0, x) +
|
|
122
|
+
line +
|
|
123
|
+
sliceAnsi(currentLine, x + width);
|
|
124
|
+
offsetY++;
|
|
53
125
|
}
|
|
54
|
-
output[y + offsetY] =
|
|
55
|
-
sliceAnsi(currentLine, 0, x) +
|
|
56
|
-
line +
|
|
57
|
-
sliceAnsi(currentLine, x + width);
|
|
58
|
-
offsetY++;
|
|
59
126
|
}
|
|
60
127
|
}
|
|
61
128
|
const generatedOutput = output.map(line => line.trimEnd()).join('\n');
|
package/build/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,WAAW,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
|
package/build/reconciler.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import process from 'node:process';
|
|
2
2
|
import createReconciler from 'react-reconciler';
|
|
3
3
|
import { DefaultEventPriority } from 'react-reconciler/constants.js';
|
|
4
|
-
|
|
4
|
+
// eslint-disable-next-line n/file-extension-in-import
|
|
5
|
+
import Yoga from 'yoga-wasm-web/auto';
|
|
5
6
|
import { createTextNode, appendChildNode, insertBeforeNode, removeChildNode, setStyle, setTextNodeValue, createNode, setAttribute } from './dom.js';
|
|
6
7
|
// We need to conditionally perform devtools connection to avoid
|
|
7
8
|
// accidentally breaking other third-party code.
|
|
@@ -37,6 +38,9 @@ export default createReconciler({
|
|
|
37
38
|
preparePortalMount: () => null,
|
|
38
39
|
clearContainer: () => false,
|
|
39
40
|
resetAfterCommit(rootNode) {
|
|
41
|
+
if (typeof rootNode.onComputeLayout === 'function') {
|
|
42
|
+
rootNode.onComputeLayout();
|
|
43
|
+
}
|
|
40
44
|
// Since renders are throttled at the instance level and <Static> component children
|
|
41
45
|
// are rendered only once and then get deleted, we need an escape hatch to
|
|
42
46
|
// trigger an immediate render to ensure <Static> children are written to output before they get erased
|
|
@@ -157,6 +161,7 @@ export default createReconciler({
|
|
|
157
161
|
const styleKeys = Object.keys(newStyle);
|
|
158
162
|
for (const styleKey of styleKeys) {
|
|
159
163
|
// Always include `borderColor` and `borderStyle` to ensure border is rendered,
|
|
164
|
+
// and `overflowX` and `overflowY` to ensure content is clipped,
|
|
160
165
|
// otherwise resulting `updatePayload` may not contain them
|
|
161
166
|
// if they weren't changed during this update
|
|
162
167
|
if (styleKey === 'borderStyle' || styleKey === 'borderColor') {
|
|
@@ -169,6 +174,8 @@ export default createReconciler({
|
|
|
169
174
|
newStyle.borderStyle;
|
|
170
175
|
updatePayload['style'].borderColor =
|
|
171
176
|
newStyle.borderColor;
|
|
177
|
+
updatePayload['style'].overflowX = newStyle.overflowX;
|
|
178
|
+
updatePayload['style'].overflowY = newStyle.overflowY;
|
|
172
179
|
}
|
|
173
180
|
if (newStyle[styleKey] !== oldStyle[styleKey]) {
|
|
174
181
|
if (typeof updatePayload['style'] !== 'object') {
|
package/build/reconciler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reconciler.js","sourceRoot":"","sources":["../src/reconciler.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,gBAAgB,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAC,oBAAoB,EAAC,MAAM,+BAA+B,CAAC;AACnE,OAAO,
|
|
1
|
+
{"version":3,"file":"reconciler.js","sourceRoot":"","sources":["../src/reconciler.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,gBAAgB,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAC,oBAAoB,EAAC,MAAM,+BAA+B,CAAC;AACnE,sDAAsD;AACtD,OAAO,IAA6B,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EACN,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,UAAU,EACV,YAAY,EAKZ,MAAM,UAAU,CAAC;AAIlB,gEAAgE;AAChE,gDAAgD;AAChD,qDAAqD;AACrD,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE;IAClC,IAAI;QACH,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAC9B,oEAAoE;KACpE;IAAC,OAAO,KAAU,EAAE;QACpB,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE;YACtC,OAAO,CAAC,IAAI,CACX;;;;KAIC,CAAC,IAAI,EAAE,GAAG,IAAI,CACf,CAAC;SACF;aAAM;YACN,+DAA+D;YAC/D,MAAM,KAAK,CAAC;SACZ;KACD;CACD;AAED,MAAM,eAAe,GAAG,CAAC,IAAe,EAAQ,EAAE;IACjD,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,IAAI,EAAE,aAAa,EAAE,CAAC;AACvB,CAAC,CAAC;AAQF,eAAe,gBAAgB,CAc7B;IACD,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1B,YAAY,EAAE,KAAK;KACnB,CAAC;IACF,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI;IAC5B,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAI;IAC9B,cAAc,EAAE,GAAG,EAAE,CAAC,KAAK;IAC3B,gBAAgB,CAAC,QAAQ;QACxB,IAAI,OAAO,QAAQ,CAAC,eAAe,KAAK,UAAU,EAAE;YACnD,QAAQ,CAAC,eAAe,EAAE,CAAC;SAC3B;QAED,oFAAoF;QACpF,0EAA0E;QAC1E,uGAAuG;QACvG,IAAI,QAAQ,CAAC,aAAa,EAAE;YAC3B,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC;YAC/B,IAAI,OAAO,QAAQ,CAAC,iBAAiB,KAAK,UAAU,EAAE;gBACrD,QAAQ,CAAC,iBAAiB,EAAE,CAAC;aAC7B;YAED,OAAO;SACP;QAED,IAAI,OAAO,QAAQ,CAAC,QAAQ,KAAK,UAAU,EAAE;YAC5C,QAAQ,CAAC,QAAQ,EAAE,CAAC;SACpB;IACF,CAAC;IACD,mBAAmB,CAAC,iBAAiB,EAAE,IAAI;QAC1C,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,YAAY,CAAC;QAC5D,MAAM,YAAY,GAAG,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,kBAAkB,CAAC;QAExE,IAAI,oBAAoB,KAAK,YAAY,EAAE;YAC1C,OAAO,iBAAiB,CAAC;SACzB;QAED,OAAO,EAAC,YAAY,EAAC,CAAC;IACvB,CAAC;IACD,oBAAoB,EAAE,GAAG,EAAE,CAAC,KAAK;IACjC,cAAc,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW;QACxD,IAAI,WAAW,CAAC,YAAY,IAAI,YAAY,KAAK,SAAS,EAAE;YAC3D,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;SACjE;QAED,MAAM,IAAI,GACT,YAAY,KAAK,UAAU,IAAI,WAAW,CAAC,YAAY;YACtD,CAAC,CAAC,kBAAkB;YACpB,CAAC,CAAC,YAAY,CAAC;QAEjB,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAE9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACpD,IAAI,GAAG,KAAK,UAAU,EAAE;gBACvB,SAAS;aACT;YAED,IAAI,GAAG,KAAK,OAAO,EAAE;gBACpB,QAAQ,CAAC,IAAI,EAAE,KAAe,CAAC,CAAC;gBAChC,SAAS;aACT;YAED,IAAI,GAAG,KAAK,oBAAoB,EAAE;gBACjC,IAAI,CAAC,kBAAkB,GAAG,KAA0B,CAAC;gBACrD,SAAS;aACT;YAED,IAAI,GAAG,KAAK,iBAAiB,EAAE;gBAC9B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC5B,SAAS;aACT;YAED,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,KAAyB,CAAC,CAAC;SACnD;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IACD,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW;QAC1C,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;YAC9B,MAAM,IAAI,KAAK,CACd,gBAAgB,IAAI,4CAA4C,CAChE,CAAC;SACF;QAED,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,gBAAgB,KAAI,CAAC;IACrB,gBAAgB,CAAC,IAAI;QACpB,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC;IACD,kBAAkB,CAAC,IAAI,EAAE,IAAI;QAC5B,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,iBAAiB,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ;IACvC,YAAY,CAAC,IAAI;QAChB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC;IACD,cAAc,CAAC,IAAI;QAClB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC;IACD,kBAAkB,EAAE,eAAe;IACnC,WAAW,EAAE,eAAe;IAC5B,YAAY,EAAE,gBAAgB;IAC9B,uBAAuB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ;QACpD,IAAI,IAAI,CAAC,eAAe,EAAE;YACzB,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC;YAE9B,8DAA8D;YAC9D,uBAAuB;YACvB,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;SAC3B;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IACD,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,IAAI;IACtB,mBAAmB,EAAE,KAAK;IAC1B,iBAAiB,EAAE,KAAK;IACxB,eAAe,EAAE,UAAU;IAC3B,aAAa,EAAE,YAAY;IAC3B,SAAS,EAAE,CAAC,CAAC;IACb,uBAAuB,EAAE,GAAG,EAAE,CAAC,oBAAoB;IACnD,wBAAwB,KAAI,CAAC;IAC7B,uBAAuB,KAAI,CAAC;IAC5B,qBAAqB,KAAI,CAAC;IAC1B,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI;IAC/B,kBAAkB,KAAI,CAAC;IACvB,oBAAoB,EAAE,GAAG,EAAE,CAAC,IAAI;IAChC,sBAAsB,EAAE,eAAe;IACvC,uBAAuB,EAAE,gBAAgB;IACzC,wBAAwB,CAAC,IAAI,EAAE,UAAU;QACxC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAClC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IACD,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;QACtD,IAAI,IAAI,CAAC,eAAe,EAAE;YACzB,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC;SAC9B;QAED,MAAM,aAAa,GAAU,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEnC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACvB,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACpC,MAAM,OAAO,GACZ,GAAG,KAAK,OAAO;oBACf,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,QAAQ;oBACrC,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;gBAEvC,IAAI,OAAO,EAAE;oBACZ,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAW,CAAC;oBAC7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAW,CAAC;oBAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAwB,CAAC;oBAE/D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;wBACjC,+EAA+E;wBAC/E,gEAAgE;wBAChE,2DAA2D;wBAC3D,6CAA6C;wBAC7C,IAAI,QAAQ,KAAK,aAAa,IAAI,QAAQ,KAAK,aAAa,EAAE;4BAC7D,IAAI,OAAO,aAAa,CAAC,OAAO,CAAC,KAAK,QAAQ,EAAE;gCAC/C,qCAAqC;gCACrC,MAAM,KAAK,GAAW,EAAE,CAAC;gCACzB,aAAa,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;6BAC/B;4BAEA,aAAa,CAAC,OAAO,CAAS,CAAC,WAAW;gCAC1C,QAAQ,CAAC,WAAW,CAAC;4BACrB,aAAa,CAAC,OAAO,CAAS,CAAC,WAAW;gCAC1C,QAAQ,CAAC,WAAW,CAAC;4BACrB,aAAa,CAAC,OAAO,CAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;4BAC9D,aAAa,CAAC,OAAO,CAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;yBAC/D;wBAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,QAAQ,CAAC,EAAE;4BAC9C,IAAI,OAAO,aAAa,CAAC,OAAO,CAAC,KAAK,QAAQ,EAAE;gCAC/C,qCAAqC;gCACrC,MAAM,KAAK,GAAW,EAAE,CAAC;gCACzB,aAAa,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;6BAC/B;4BAEA,aAAa,CAAC,OAAO,CAAS,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;yBAC/D;qBACD;oBAED,SAAS;iBACT;gBAEA,aAAqB,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;aAC5C;SACD;QAED,OAAO,aAAa,CAAC;IACtB,CAAC;IACD,YAAY,CAAC,IAAI,EAAE,aAAa;QAC/B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;YACzD,IAAI,GAAG,KAAK,UAAU,EAAE;gBACvB,SAAS;aACT;YAED,IAAI,GAAG,KAAK,OAAO,EAAE;gBACpB,QAAQ,CAAC,IAAI,EAAE,KAAe,CAAC,CAAC;gBAChC,SAAS;aACT;YAED,IAAI,GAAG,KAAK,oBAAoB,EAAE;gBACjC,IAAI,CAAC,kBAAkB,GAAG,KAA0B,CAAC;gBACrD,SAAS;aACT;YAED,IAAI,GAAG,KAAK,iBAAiB,EAAE;gBAC9B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC5B,SAAS;aACT;YAED,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,KAAyB,CAAC,CAAC;SACnD;IACF,CAAC;IACD,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO;QACvC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IACD,WAAW,CAAC,IAAI,EAAE,UAAU;QAC3B,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAClC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;CACD,CAAC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import Yoga from 'yoga-layout-prebuilt';
|
|
2
1
|
import widestLine from 'widest-line';
|
|
3
2
|
import indentString from 'indent-string';
|
|
3
|
+
// eslint-disable-next-line n/file-extension-in-import
|
|
4
|
+
import Yoga from 'yoga-wasm-web/auto';
|
|
4
5
|
import wrapText from './wrap-text.js';
|
|
5
6
|
import getMaxWidth from './get-max-width.js';
|
|
6
7
|
import squashTextNodes from './squash-text-nodes.js';
|
|
@@ -54,8 +55,31 @@ const renderNodeToOutput = (node, output, options) => {
|
|
|
54
55
|
}
|
|
55
56
|
return;
|
|
56
57
|
}
|
|
58
|
+
let clipped = false;
|
|
57
59
|
if (node.nodeName === 'ink-box') {
|
|
58
60
|
renderBorder(x, y, node, output);
|
|
61
|
+
const clipHorizontally = node.style.overflowX === 'hidden';
|
|
62
|
+
const clipVertically = node.style.overflowY === 'hidden';
|
|
63
|
+
if (clipHorizontally || clipVertically) {
|
|
64
|
+
const x1 = clipHorizontally
|
|
65
|
+
? x + yogaNode.getComputedBorder(Yoga.EDGE_LEFT)
|
|
66
|
+
: undefined;
|
|
67
|
+
const x2 = clipHorizontally
|
|
68
|
+
? x +
|
|
69
|
+
yogaNode.getComputedWidth() -
|
|
70
|
+
yogaNode.getComputedBorder(Yoga.EDGE_RIGHT)
|
|
71
|
+
: undefined;
|
|
72
|
+
const y1 = clipVertically
|
|
73
|
+
? y + yogaNode.getComputedBorder(Yoga.EDGE_TOP)
|
|
74
|
+
: undefined;
|
|
75
|
+
const y2 = clipVertically
|
|
76
|
+
? y +
|
|
77
|
+
yogaNode.getComputedHeight() -
|
|
78
|
+
yogaNode.getComputedBorder(Yoga.EDGE_BOTTOM)
|
|
79
|
+
: undefined;
|
|
80
|
+
output.clip({ x1, x2, y1, y2 });
|
|
81
|
+
clipped = true;
|
|
82
|
+
}
|
|
59
83
|
}
|
|
60
84
|
if (node.nodeName === 'ink-root' || node.nodeName === 'ink-box') {
|
|
61
85
|
for (const childNode of node.childNodes) {
|
|
@@ -66,6 +90,9 @@ const renderNodeToOutput = (node, output, options) => {
|
|
|
66
90
|
skipStaticElements
|
|
67
91
|
});
|
|
68
92
|
}
|
|
93
|
+
if (clipped) {
|
|
94
|
+
output.unclip();
|
|
95
|
+
}
|
|
69
96
|
}
|
|
70
97
|
}
|
|
71
98
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-node-to-output.js","sourceRoot":"","sources":["../src/render-node-to-output.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"render-node-to-output.js","sourceRoot":"","sources":["../src/render-node-to-output.ts"],"names":[],"mappings":"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"}
|
package/build/renderer.d.ts
CHANGED
package/build/renderer.js
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import Yoga from 'yoga-layout-prebuilt';
|
|
2
1
|
import renderNodeToOutput from './render-node-to-output.js';
|
|
3
2
|
import Output from './output.js';
|
|
4
|
-
const renderer = (node
|
|
5
|
-
node.yogaNode.setWidth(terminalWidth);
|
|
3
|
+
const renderer = (node) => {
|
|
6
4
|
if (node.yogaNode) {
|
|
7
|
-
node.yogaNode.calculateLayout(undefined, undefined, Yoga.DIRECTION_LTR);
|
|
8
5
|
const output = new Output({
|
|
9
6
|
width: node.yogaNode.getComputedWidth(),
|
|
10
7
|
height: node.yogaNode.getComputedHeight()
|
package/build/renderer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,4BAA4B,CAAC;AAC5D,OAAO,MAAM,MAAM,aAAa,CAAC;AASjC,MAAM,QAAQ,GAAG,CAAC,IAAgB,EAAU,EAAE;IAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;QAClB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;YACzB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;YACvC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE;SACzC,CAAC,CAAC;QAEH,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAC,kBAAkB,EAAE,IAAI,EAAC,CAAC,CAAC;QAE7D,IAAI,YAAY,CAAC;QAEjB,IAAI,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE;YAC9B,YAAY,GAAG,IAAI,MAAM,CAAC;gBACzB,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,gBAAgB,EAAE;gBAClD,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,iBAAiB,EAAE;aACpD,CAAC,CAAC;YAEH,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE;gBACjD,kBAAkB,EAAE,KAAK;aACzB,CAAC,CAAC;SACH;QAED,MAAM,EAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,EAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;QAErE,OAAO;YACN,MAAM,EAAE,eAAe;YACvB,YAAY;YACZ,2EAA2E;YAC3E,8DAA8D;YAC9D,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE;SAClE,CAAC;KACF;IAED,OAAO;QACN,MAAM,EAAE,EAAE;QACV,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,EAAE;KAChB,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
package/build/styles.d.ts
CHANGED
|
@@ -1,10 +1,18 @@
|
|
|
1
|
-
import { type YogaNode } from 'yoga-layout-prebuilt';
|
|
2
1
|
import { type Boxes } from 'cli-boxes';
|
|
3
2
|
import { type LiteralUnion } from 'type-fest';
|
|
4
3
|
import { type ForegroundColorName } from 'chalk';
|
|
4
|
+
import { type Node as YogaNode } from 'yoga-wasm-web/auto';
|
|
5
5
|
export type Styles = {
|
|
6
6
|
readonly textWrap?: 'wrap' | 'end' | 'middle' | 'truncate-end' | 'truncate' | 'truncate-middle' | 'truncate-start';
|
|
7
7
|
readonly position?: 'absolute' | 'relative';
|
|
8
|
+
/**
|
|
9
|
+
* Gap between element's columns.
|
|
10
|
+
*/
|
|
11
|
+
readonly columnGap?: number;
|
|
12
|
+
/**
|
|
13
|
+
* Gap between element's rows.
|
|
14
|
+
*/
|
|
15
|
+
readonly rowGap?: number;
|
|
8
16
|
/**
|
|
9
17
|
* Top margin.
|
|
10
18
|
*/
|
|
@@ -57,6 +65,11 @@ export type Styles = {
|
|
|
57
65
|
* See [flex-basis](https://css-tricks.com/almanac/properties/f/flex-basis/).
|
|
58
66
|
*/
|
|
59
67
|
readonly flexBasis?: number | string;
|
|
68
|
+
/**
|
|
69
|
+
* It defines whether the flex items are forced in a single line or can be flowed into multiple lines. If set to multiple lines, it also defines the cross-axis which determines the direction new lines are stacked in.
|
|
70
|
+
* See [flex-wrap](https://css-tricks.com/almanac/properties/f/flex-wrap/).
|
|
71
|
+
*/
|
|
72
|
+
readonly flexWrap?: 'nowrap' | 'wrap' | 'wrap-reverse';
|
|
60
73
|
/**
|
|
61
74
|
* The align-items property defines the default behavior for how items are laid out along the cross axis (perpendicular to the main axis).
|
|
62
75
|
* See [align-items](https://css-tricks.com/almanac/properties/a/align-items/).
|
|
@@ -104,6 +117,14 @@ export type Styles = {
|
|
|
104
117
|
* Accepts the same values as `color` in <Text> component.
|
|
105
118
|
*/
|
|
106
119
|
readonly borderColor?: LiteralUnion<ForegroundColorName, string>;
|
|
120
|
+
/**
|
|
121
|
+
* Behavior for an element's overflow in horizontal direction.
|
|
122
|
+
*/
|
|
123
|
+
readonly overflowX?: 'visible' | 'hidden';
|
|
124
|
+
/**
|
|
125
|
+
* Behavior for an element's overflow in vertical direction.
|
|
126
|
+
*/
|
|
127
|
+
readonly overflowY?: 'visible' | 'hidden';
|
|
107
128
|
};
|
|
108
129
|
declare const styles: (node: YogaNode, style?: Styles) => void;
|
|
109
130
|
export default styles;
|
package/build/styles.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import Yoga from 'yoga-
|
|
1
|
+
// eslint-disable-next-line n/file-extension-in-import
|
|
2
|
+
import Yoga from 'yoga-wasm-web/auto';
|
|
3
3
|
const applyPositionStyles = (node, style) => {
|
|
4
4
|
if ('position' in style) {
|
|
5
5
|
node.setPositionType(style.position === 'absolute'
|
|
@@ -42,6 +42,17 @@ const applyFlexStyles = (node, style) => {
|
|
|
42
42
|
if ('flexShrink' in style) {
|
|
43
43
|
node.setFlexShrink(typeof style.flexShrink === 'number' ? style.flexShrink : 1);
|
|
44
44
|
}
|
|
45
|
+
if ('flexWrap' in style) {
|
|
46
|
+
if (style.flexWrap === 'nowrap') {
|
|
47
|
+
node.setFlexWrap(Yoga.WRAP_NO_WRAP);
|
|
48
|
+
}
|
|
49
|
+
if (style.flexWrap === 'wrap') {
|
|
50
|
+
node.setFlexWrap(Yoga.WRAP_WRAP);
|
|
51
|
+
}
|
|
52
|
+
if (style.flexWrap === 'wrap-reverse') {
|
|
53
|
+
node.setFlexWrap(Yoga.WRAP_WRAP_REVERSE);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
45
56
|
if ('flexDirection' in style) {
|
|
46
57
|
if (style.flexDirection === 'row') {
|
|
47
58
|
node.setFlexDirection(Yoga.FLEX_DIRECTION_ROW);
|
|
@@ -168,6 +179,14 @@ const applyBorderStyles = (node, style) => {
|
|
|
168
179
|
node.setBorder(Yoga.EDGE_RIGHT, borderWidth);
|
|
169
180
|
}
|
|
170
181
|
};
|
|
182
|
+
const applyGapStyles = (node, style) => {
|
|
183
|
+
if ('columnGap' in style) {
|
|
184
|
+
node.setGap(Yoga.GUTTER_COLUMN, style.columnGap ?? 0);
|
|
185
|
+
}
|
|
186
|
+
if ('rowGap' in style) {
|
|
187
|
+
node.setGap(Yoga.GUTTER_ROW, style.rowGap ?? 0);
|
|
188
|
+
}
|
|
189
|
+
};
|
|
171
190
|
const styles = (node, style = {}) => {
|
|
172
191
|
applyPositionStyles(node, style);
|
|
173
192
|
applyMarginStyles(node, style);
|
|
@@ -176,6 +195,7 @@ const styles = (node, style = {}) => {
|
|
|
176
195
|
applyDimensionStyles(node, style);
|
|
177
196
|
applyDisplayStyles(node, style);
|
|
178
197
|
applyBorderStyles(node, style);
|
|
198
|
+
applyGapStyles(node, style);
|
|
179
199
|
};
|
|
180
200
|
export default styles;
|
|
181
201
|
//# sourceMappingURL=styles.js.map
|
package/build/styles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ink",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.1.0",
|
|
4
4
|
"description": "React for CLI",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "vadimdemedes/ink",
|
|
@@ -51,26 +51,26 @@
|
|
|
51
51
|
"code-excerpt": "^4.0.0",
|
|
52
52
|
"indent-string": "^5.0.0",
|
|
53
53
|
"is-ci": "^3.0.1",
|
|
54
|
-
"lodash
|
|
54
|
+
"lodash": "^4.17.21",
|
|
55
55
|
"patch-console": "^2.0.0",
|
|
56
56
|
"react-reconciler": "^0.29.0",
|
|
57
57
|
"scheduler": "^0.23.0",
|
|
58
58
|
"signal-exit": "^3.0.7",
|
|
59
|
-
"slice-ansi": "^
|
|
59
|
+
"slice-ansi": "^6.0.0",
|
|
60
60
|
"stack-utils": "^2.0.6",
|
|
61
61
|
"string-width": "^5.1.2",
|
|
62
62
|
"type-fest": "^0.12.0",
|
|
63
63
|
"widest-line": "^4.0.1",
|
|
64
64
|
"wrap-ansi": "^8.1.0",
|
|
65
65
|
"ws": "^8.12.0",
|
|
66
|
-
"yoga-
|
|
66
|
+
"yoga-wasm-web": "~0.3.3"
|
|
67
67
|
},
|
|
68
68
|
"devDependencies": {
|
|
69
69
|
"@faker-js/faker": "^7.6.0",
|
|
70
70
|
"@sindresorhus/tsconfig": "3.0.1",
|
|
71
71
|
"@types/benchmark": "^2.1.2",
|
|
72
72
|
"@types/is-ci": "^2.0.0",
|
|
73
|
-
"@types/lodash
|
|
73
|
+
"@types/lodash": "^4.14.191",
|
|
74
74
|
"@types/ms": "^0.7.31",
|
|
75
75
|
"@types/node": "*",
|
|
76
76
|
"@types/react": "^18.0.0",
|
package/readme.md
CHANGED
|
@@ -127,6 +127,7 @@ Feel free to play around with the code and fork this repl at [https://repl.it/@v
|
|
|
127
127
|
- [lrn](https://github.com/krychu/lrn) - Learning by repetition.
|
|
128
128
|
- [turdle](https://github.com/mynameisankit/turdle) - Wordle game.
|
|
129
129
|
- [Shopify CLI](https://github.com/Shopify/cli) - Build apps, themes, and storefronts for Shopify.
|
|
130
|
+
- [ToDesktop CLI](https://www.todesktop.com/electron) - An all-in-one platform for building Electron apps.
|
|
130
131
|
|
|
131
132
|
## Contents
|
|
132
133
|
|
|
@@ -580,6 +581,58 @@ Margin on all sides. Equivalent to setting `marginTop`, `marginBottom`, `marginL
|
|
|
580
581
|
<Box margin={2}>Top, bottom, left and right</Box>
|
|
581
582
|
```
|
|
582
583
|
|
|
584
|
+
#### Gap
|
|
585
|
+
|
|
586
|
+
#### gap
|
|
587
|
+
|
|
588
|
+
Type: `number`\
|
|
589
|
+
Default: `0`
|
|
590
|
+
|
|
591
|
+
Size of the gap between an element's columns and rows. Shorthand for `columnGap` and `rowGap`.
|
|
592
|
+
|
|
593
|
+
```jsx
|
|
594
|
+
<Box gap={1} width={3} flexWrap="wrap">
|
|
595
|
+
<Text>A</Text>
|
|
596
|
+
<Text>B</Text>
|
|
597
|
+
<Text>C</Text>
|
|
598
|
+
</Box>
|
|
599
|
+
// A B
|
|
600
|
+
//
|
|
601
|
+
// C
|
|
602
|
+
```
|
|
603
|
+
|
|
604
|
+
#### columnGap
|
|
605
|
+
|
|
606
|
+
Type: `number`\
|
|
607
|
+
Default: `0`
|
|
608
|
+
|
|
609
|
+
Size of the gap between an element's columns.
|
|
610
|
+
|
|
611
|
+
```jsx
|
|
612
|
+
<Box gap={1}>
|
|
613
|
+
<Text>A</Text>
|
|
614
|
+
<Text>B</Text>
|
|
615
|
+
</Box>
|
|
616
|
+
// A B
|
|
617
|
+
```
|
|
618
|
+
|
|
619
|
+
#### rowGap
|
|
620
|
+
|
|
621
|
+
Type: `number`\
|
|
622
|
+
Default: `0`
|
|
623
|
+
|
|
624
|
+
Size of the gap between element's rows.
|
|
625
|
+
|
|
626
|
+
```jsx
|
|
627
|
+
<Box flexDirection="column" gap={1}>
|
|
628
|
+
<Text>A</Text>
|
|
629
|
+
<Text>B</Text>
|
|
630
|
+
</Box>
|
|
631
|
+
// A
|
|
632
|
+
//
|
|
633
|
+
// B
|
|
634
|
+
```
|
|
635
|
+
|
|
583
636
|
#### Flex
|
|
584
637
|
|
|
585
638
|
##### flexGrow
|
|
@@ -681,6 +734,32 @@ See [flex-direction](https://css-tricks.com/almanac/properties/f/flex-direction/
|
|
|
681
734
|
// X
|
|
682
735
|
```
|
|
683
736
|
|
|
737
|
+
##### flexWrap
|
|
738
|
+
|
|
739
|
+
Type: `string`\
|
|
740
|
+
Allowed values: `nowrap` `wrap` `wrap-reverse`
|
|
741
|
+
|
|
742
|
+
See [flex-wrap](https://css-tricks.com/almanac/properties/f/flex-wrap/).
|
|
743
|
+
|
|
744
|
+
```jsx
|
|
745
|
+
<Box width={2} flexWrap="wrap">
|
|
746
|
+
<Text>A</Text>
|
|
747
|
+
<Text>BC</Text>
|
|
748
|
+
</Box>
|
|
749
|
+
// A
|
|
750
|
+
// B C
|
|
751
|
+
```
|
|
752
|
+
|
|
753
|
+
```jsx
|
|
754
|
+
<Box flexDirection="column" height={2} flexWrap="wrap">
|
|
755
|
+
<Text>A</Text>
|
|
756
|
+
<Text>B</Text>
|
|
757
|
+
<Text>C</Text>
|
|
758
|
+
</Box>
|
|
759
|
+
// A C
|
|
760
|
+
// B
|
|
761
|
+
```
|
|
762
|
+
|
|
684
763
|
##### alignItems
|
|
685
764
|
|
|
686
765
|
Type: `string`\
|
|
@@ -821,6 +900,30 @@ Default: `flex`
|
|
|
821
900
|
|
|
822
901
|
Set this property to `none` to hide the element.
|
|
823
902
|
|
|
903
|
+
##### overflowX
|
|
904
|
+
|
|
905
|
+
Type: `string`\
|
|
906
|
+
Allowed values: `visible` `hidden`\
|
|
907
|
+
Default: `visible`
|
|
908
|
+
|
|
909
|
+
Behavior for an element's overflow in horizontal direction.
|
|
910
|
+
|
|
911
|
+
##### overflowY
|
|
912
|
+
|
|
913
|
+
Type: `string`\
|
|
914
|
+
Allowed values: `visible` `hidden`\
|
|
915
|
+
Default: `visible`
|
|
916
|
+
|
|
917
|
+
Behavior for an element's overflow in vertical direction.
|
|
918
|
+
|
|
919
|
+
##### overflow
|
|
920
|
+
|
|
921
|
+
Type: `string`\
|
|
922
|
+
Allowed values: `visible` `hidden`\
|
|
923
|
+
Default: `visible`
|
|
924
|
+
|
|
925
|
+
Shortcut for setting `overflowX` and `overflowY` at the same time.
|
|
926
|
+
|
|
824
927
|
#### Borders
|
|
825
928
|
|
|
826
929
|
##### borderStyle
|
|
@@ -1833,17 +1936,17 @@ npm run example examples/[example name]
|
|
|
1833
1936
|
# e.g. npm run example examples/borders
|
|
1834
1937
|
```
|
|
1835
1938
|
|
|
1836
|
-
- [Jest](examples/jest/jest.
|
|
1837
|
-
- [Counter](examples/counter/counter.
|
|
1939
|
+
- [Jest](examples/jest/jest.tsx) - Implementation of basic Jest UI [(live demo)](https://ink-jest-demo.vadimdemedes.repl.run/).
|
|
1940
|
+
- [Counter](examples/counter/counter.tsx) - Simple counter that increments every 100ms [(live demo)](https://ink-counter-demo.vadimdemedes.repl.run/).
|
|
1838
1941
|
- [Form with validation](https://github.com/final-form/rff-cli-example) - Manage form state using [Final Form](https://github.com/final-form/final-form#-final-form).
|
|
1839
|
-
- [Borders](examples/borders/borders.
|
|
1840
|
-
- [Suspense](examples/suspense/suspense.
|
|
1841
|
-
- [Table](examples/table/table.
|
|
1842
|
-
- [Focus management](examples/use-focus/use-focus.
|
|
1843
|
-
- [User input](examples/use-input/use-input.
|
|
1844
|
-
- [Write to stdout](examples/use-stdout/use-stdout.
|
|
1845
|
-
- [Write to stderr](examples/use-stderr/use-stderr.
|
|
1846
|
-
- [Static](examples/static/static.
|
|
1942
|
+
- [Borders](examples/borders/borders.tsx) - Add borders to `<Box>` component.
|
|
1943
|
+
- [Suspense](examples/suspense/suspense.tsx) - Use React Suspense.
|
|
1944
|
+
- [Table](examples/table/table.tsx) - Render a table with multiple columns and rows.
|
|
1945
|
+
- [Focus management](examples/use-focus/use-focus.tsx) - Use `useFocus` hook to manage focus between components.
|
|
1946
|
+
- [User input](examples/use-input/use-input.tsx) - Listen to user input.
|
|
1947
|
+
- [Write to stdout](examples/use-stdout/use-stdout.tsx) - Write to stdout bypassing main Ink output.
|
|
1948
|
+
- [Write to stderr](examples/use-stderr/use-stderr.tsx) - Write to stderr bypassing main Ink output.
|
|
1949
|
+
- [Static](examples/static/static.tsx) - Use `<Static>` to render permanent output.
|
|
1847
1950
|
- [Child process](examples/subprocess-output) - Render output from a child process.
|
|
1848
1951
|
|
|
1849
1952
|
## Maintainers
|