@teaui/preact 1.3.8 → 1.5.8
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/.dist/components/FontStyle.d.ts +12 -0
- package/.dist/components/FontStyle.js +35 -0
- package/.dist/components/FontStyle.js.map +1 -0
- package/.dist/components/TextReact.d.ts +2 -0
- package/.dist/components/TextReact.js +31 -25
- package/.dist/components/TextReact.js.map +1 -1
- package/.dist/components.d.ts +31 -8
- package/.dist/components.js +101 -118
- package/.dist/components.js.map +1 -1
- package/.dist/index.d.ts +2 -2
- package/.dist/index.js +2 -18
- package/.dist/index.js.map +1 -1
- package/.dist/preact.d.ts +10 -6
- package/.dist/preact.js +122 -73
- package/.dist/preact.js.map +1 -1
- package/README.md +185 -21
- package/package.json +6 -5
package/.dist/preact.js
CHANGED
|
@@ -1,116 +1,131 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const preact_1 = require("preact");
|
|
5
|
-
const core_1 = require("@teaui/core");
|
|
6
|
-
const TextReact_1 = require("./components/TextReact");
|
|
1
|
+
import { render as preactRender, options } from 'preact';
|
|
2
|
+
import { Accordion as WrAccordion, Box as WrBox, Button as WrButton, Checkbox as WrCheckbox, Collapsible as WrCollapsible, CollapsibleText as WrCollapsibleText, ConsoleLog as WrConsoleLog, Container, Digits as WrDigits, H1, H2, H3, H4, H5, H6, Drawer as WrDrawer, Dropdown as WrDropdown, HotKey as WrHotKey, Progress as WrProgress, Spinner as WrSpinner, ToggleGroup as WrToggleGroup, Tree as WrTree, Input as WrInput, Screen, Scrollable as WrScrollable, Separator as WrSeparator, Slider as WrSlider, Space as WrSpace, Stack as WrStack, Tabs as WrTabs, Window as WrWindow, } from '@teaui/core';
|
|
3
|
+
import { TextContainer, TextLiteral, TextProvider, TextStyle, } from './components/TextReact.js';
|
|
7
4
|
function createView(type, props) {
|
|
5
|
+
// Strip children/child from props before passing to constructors
|
|
6
|
+
const { children, child, ...viewProps } = props;
|
|
8
7
|
switch (type) {
|
|
9
8
|
case 'text':
|
|
10
|
-
return new
|
|
9
|
+
return new TextLiteral(String(viewProps.text) ?? '');
|
|
11
10
|
case 'br':
|
|
12
11
|
case 'tui-br':
|
|
13
|
-
return new
|
|
12
|
+
return new TextLiteral('\n');
|
|
14
13
|
case 'checkbox':
|
|
15
14
|
case 'tui-checkbox':
|
|
16
|
-
return new
|
|
15
|
+
return new WrCheckbox(viewProps);
|
|
17
16
|
case 'collapsible-text':
|
|
18
17
|
case 'tui-collapsible-text':
|
|
19
|
-
return new
|
|
18
|
+
return new WrCollapsibleText(viewProps);
|
|
20
19
|
case 'console':
|
|
21
20
|
case 'tui-console':
|
|
22
|
-
return new
|
|
21
|
+
return new WrConsoleLog(viewProps);
|
|
23
22
|
case 'digits':
|
|
24
23
|
case 'tui-digits':
|
|
25
|
-
return new
|
|
24
|
+
return new WrDigits(viewProps);
|
|
25
|
+
case 'dropdown':
|
|
26
|
+
case 'tui-dropdown':
|
|
27
|
+
return new WrDropdown(viewProps);
|
|
28
|
+
case 'hotkey':
|
|
29
|
+
case 'tui-hotkey':
|
|
30
|
+
return new WrHotKey(viewProps);
|
|
26
31
|
case 'h1':
|
|
27
32
|
case 'tui-h1':
|
|
28
|
-
return
|
|
33
|
+
return H1(viewProps.text ?? '');
|
|
29
34
|
case 'h2':
|
|
30
35
|
case 'tui-h2':
|
|
31
|
-
return
|
|
36
|
+
return H2(viewProps.text ?? '');
|
|
32
37
|
case 'h3':
|
|
33
38
|
case 'tui-h3':
|
|
34
|
-
return
|
|
39
|
+
return H3(viewProps.text ?? '');
|
|
35
40
|
case 'h4':
|
|
36
41
|
case 'tui-h4':
|
|
37
|
-
return
|
|
42
|
+
return H4(viewProps.text ?? '');
|
|
38
43
|
case 'h5':
|
|
39
44
|
case 'tui-h5':
|
|
40
|
-
return
|
|
45
|
+
return H5(viewProps.text ?? '');
|
|
41
46
|
case 'h6':
|
|
42
47
|
case 'tui-h6':
|
|
43
|
-
return
|
|
48
|
+
return H6(viewProps.text ?? '');
|
|
49
|
+
case 'progress':
|
|
50
|
+
case 'tui-progress':
|
|
51
|
+
return new WrProgress(viewProps);
|
|
52
|
+
case 'spinner':
|
|
53
|
+
case 'tui-spinner':
|
|
54
|
+
return new WrSpinner(viewProps);
|
|
44
55
|
case 'toggle-group':
|
|
45
56
|
case 'tui-toggle-group':
|
|
46
|
-
return new
|
|
57
|
+
return new WrToggleGroup(viewProps);
|
|
47
58
|
case 'input':
|
|
48
59
|
case 'tui-input':
|
|
49
|
-
return new
|
|
60
|
+
return new WrInput(viewProps);
|
|
50
61
|
case 'literal':
|
|
51
62
|
case 'tui-literal':
|
|
52
|
-
return new
|
|
63
|
+
return new TextLiteral(viewProps.text ?? '');
|
|
53
64
|
case 'separator':
|
|
54
65
|
case 'tui-separator':
|
|
55
|
-
return new
|
|
66
|
+
return new WrSeparator(viewProps);
|
|
56
67
|
case 'slider':
|
|
57
68
|
case 'tui-slider':
|
|
58
|
-
return new
|
|
69
|
+
return new WrSlider(viewProps);
|
|
59
70
|
case 'space':
|
|
60
71
|
case 'tui-space':
|
|
61
|
-
return new
|
|
62
|
-
|
|
63
|
-
|
|
72
|
+
return new WrSpace(viewProps);
|
|
73
|
+
case 'tree':
|
|
74
|
+
case 'tui-tree':
|
|
75
|
+
return new WrTree(viewProps);
|
|
64
76
|
case 'box':
|
|
65
77
|
case 'tui-box':
|
|
66
|
-
return new
|
|
78
|
+
return new WrBox(viewProps);
|
|
67
79
|
case 'button':
|
|
68
80
|
case 'tui-button':
|
|
69
|
-
return new
|
|
81
|
+
return new WrButton(viewProps);
|
|
70
82
|
case 'collapsible':
|
|
71
83
|
case 'tui-collapsible':
|
|
72
|
-
return new
|
|
84
|
+
return new WrCollapsible(viewProps);
|
|
73
85
|
case 'scrollable':
|
|
74
86
|
case 'tui-scrollable':
|
|
75
|
-
return new
|
|
87
|
+
return new WrScrollable(viewProps);
|
|
76
88
|
case 'stack':
|
|
77
89
|
case 'tui-stack':
|
|
78
|
-
return new
|
|
90
|
+
return new WrStack(viewProps);
|
|
79
91
|
case 'style':
|
|
80
92
|
case 'tui-style':
|
|
81
|
-
return new
|
|
93
|
+
return new TextStyle(viewProps);
|
|
82
94
|
case 'tui-text':
|
|
83
|
-
return new
|
|
95
|
+
return new TextProvider(viewProps);
|
|
84
96
|
case 'accordion':
|
|
85
97
|
case 'tui-accordion':
|
|
86
|
-
return new
|
|
98
|
+
return new WrAccordion(viewProps);
|
|
87
99
|
case 'accordion-section':
|
|
88
100
|
case 'tui-accordion-section':
|
|
89
|
-
return new
|
|
101
|
+
return new WrAccordion.Section(viewProps);
|
|
90
102
|
case 'drawer':
|
|
91
103
|
case 'tui-drawer':
|
|
92
|
-
return new
|
|
104
|
+
return new WrDrawer(viewProps);
|
|
93
105
|
case 'tabs':
|
|
94
106
|
case 'tui-tabs':
|
|
95
|
-
return new
|
|
107
|
+
return new WrTabs(viewProps);
|
|
96
108
|
case 'tabs-section':
|
|
97
109
|
case 'tui-tabs-section':
|
|
98
|
-
return new
|
|
99
|
-
case 'window':
|
|
110
|
+
return new WrTabs.Section(viewProps);
|
|
100
111
|
case 'tui-window':
|
|
101
|
-
return new
|
|
112
|
+
return new WrWindow();
|
|
102
113
|
default:
|
|
103
|
-
throw Error(`Unknown type ${type}`);
|
|
114
|
+
throw new Error(`Unknown type: ${type}`);
|
|
104
115
|
}
|
|
105
116
|
}
|
|
106
|
-
const defer = Promise
|
|
117
|
+
const defer = typeof Promise == 'function'
|
|
118
|
+
? (fn) => Promise.resolve().then(fn)
|
|
119
|
+
: setTimeout;
|
|
107
120
|
function removeFromTextContainer(container, child) {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
121
|
+
for (const viewChild of container.children) {
|
|
122
|
+
if (viewChild instanceof TextContainer && child.parent === viewChild) {
|
|
123
|
+
// TextContainer.add() puts TextLiterals/TextStyles into #nodes,
|
|
124
|
+
// NOT into .children (which holds generated Text views).
|
|
125
|
+
// Check child.parent instead of searching .children.
|
|
126
|
+
viewChild.removeChild(child);
|
|
127
|
+
if (viewChild.children.length === 0) {
|
|
128
|
+
container.removeChild(viewChild);
|
|
114
129
|
}
|
|
115
130
|
return;
|
|
116
131
|
}
|
|
@@ -120,16 +135,16 @@ function removeChild(container, child) {
|
|
|
120
135
|
if (child.parent === container) {
|
|
121
136
|
container.removeChild(child);
|
|
122
137
|
}
|
|
123
|
-
else if (child instanceof
|
|
138
|
+
else if (child instanceof TextLiteral || child instanceof TextStyle) {
|
|
124
139
|
removeFromTextContainer(container, child);
|
|
125
140
|
}
|
|
126
141
|
}
|
|
127
142
|
function appendChild(parentInstance, child, before) {
|
|
128
|
-
if (parentInstance instanceof
|
|
129
|
-
(child instanceof
|
|
143
|
+
if (parentInstance instanceof TextStyle &&
|
|
144
|
+
(child instanceof TextLiteral || child instanceof TextStyle)) {
|
|
130
145
|
// do not do the TextContainer song and dance
|
|
131
146
|
}
|
|
132
|
-
else if (child instanceof
|
|
147
|
+
else if (child instanceof TextLiteral || child instanceof TextStyle) {
|
|
133
148
|
// find the last child (checking 'before')
|
|
134
149
|
let lastChild = parentInstance.children.at(-1);
|
|
135
150
|
if (before) {
|
|
@@ -139,11 +154,11 @@ function appendChild(parentInstance, child, before) {
|
|
|
139
154
|
}
|
|
140
155
|
}
|
|
141
156
|
let textContainer;
|
|
142
|
-
if (lastChild instanceof
|
|
157
|
+
if (lastChild instanceof TextContainer) {
|
|
143
158
|
textContainer = lastChild;
|
|
144
159
|
}
|
|
145
160
|
else {
|
|
146
|
-
textContainer = new
|
|
161
|
+
textContainer = new TextContainer();
|
|
147
162
|
parentInstance.add(textContainer);
|
|
148
163
|
}
|
|
149
164
|
textContainer.add(child);
|
|
@@ -168,17 +183,18 @@ class RendererElement {
|
|
|
168
183
|
props = {};
|
|
169
184
|
prevProps;
|
|
170
185
|
node;
|
|
171
|
-
nodeType
|
|
172
|
-
constructor(renderer, localName) {
|
|
186
|
+
nodeType;
|
|
187
|
+
constructor(renderer, localName, nodeType = 1) {
|
|
173
188
|
this.renderer = renderer;
|
|
174
189
|
this.localName = localName;
|
|
190
|
+
this.nodeType = nodeType;
|
|
175
191
|
this._commit = this._commit.bind(this);
|
|
176
192
|
}
|
|
177
193
|
set data(text) {
|
|
178
194
|
this.setAttribute('text', String(text));
|
|
179
195
|
}
|
|
180
196
|
addEventListener(event, func) {
|
|
181
|
-
this.setAttribute(`on${event}`,
|
|
197
|
+
this.setAttribute(`on${event}`, func);
|
|
182
198
|
}
|
|
183
199
|
setAttribute(name, value) {
|
|
184
200
|
if (this.node && !this.prevProps) {
|
|
@@ -188,6 +204,10 @@ class RendererElement {
|
|
|
188
204
|
this.props[name] = value;
|
|
189
205
|
}
|
|
190
206
|
removeAttribute(name) {
|
|
207
|
+
if (this.node && !this.prevProps) {
|
|
208
|
+
this.prevProps = Object.assign({}, this.props);
|
|
209
|
+
defer(this._commit);
|
|
210
|
+
}
|
|
191
211
|
delete this.props[name];
|
|
192
212
|
}
|
|
193
213
|
_attach() {
|
|
@@ -244,13 +264,13 @@ class RendererElement {
|
|
|
244
264
|
}
|
|
245
265
|
function createRendererDom(renderer) {
|
|
246
266
|
function createElement(type) {
|
|
247
|
-
return new RendererElement(renderer, type);
|
|
267
|
+
return new RendererElement(renderer, type, 1);
|
|
248
268
|
}
|
|
249
269
|
function createElementNS(_, type) {
|
|
250
|
-
return new RendererElement(renderer, type);
|
|
270
|
+
return new RendererElement(renderer, type, 1);
|
|
251
271
|
}
|
|
252
272
|
function createTextNode(text) {
|
|
253
|
-
const node =
|
|
273
|
+
const node = new RendererElement(renderer, 'text', 3);
|
|
254
274
|
node.props.text = String(text);
|
|
255
275
|
return node;
|
|
256
276
|
}
|
|
@@ -259,39 +279,68 @@ function createRendererDom(renderer) {
|
|
|
259
279
|
}
|
|
260
280
|
return { createElement, createElementNS, createTextNode, createRoot };
|
|
261
281
|
}
|
|
282
|
+
let _rerender;
|
|
283
|
+
// Hook into Preact's diffed option to trigger screen re-renders after commits
|
|
284
|
+
const prevDiffed = options.diffed;
|
|
285
|
+
options.diffed = (vnode) => {
|
|
286
|
+
prevDiffed?.(vnode);
|
|
287
|
+
_rerender?.();
|
|
288
|
+
};
|
|
262
289
|
const dom = createRendererDom({
|
|
263
290
|
create(type, props) {
|
|
264
291
|
return createView(type, props);
|
|
265
292
|
},
|
|
266
293
|
insert(parent, node, before) {
|
|
267
|
-
if (!(parent instanceof
|
|
294
|
+
if (!(parent instanceof Container)) {
|
|
268
295
|
return;
|
|
269
296
|
}
|
|
270
297
|
appendChild(parent, node, before);
|
|
271
298
|
},
|
|
272
299
|
remove(parent, node) {
|
|
273
|
-
if (!(parent instanceof
|
|
300
|
+
if (!(parent instanceof Container)) {
|
|
274
301
|
return;
|
|
275
302
|
}
|
|
276
303
|
removeChild(parent, node);
|
|
277
304
|
},
|
|
278
305
|
update(node, props) {
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
node.text =
|
|
306
|
+
const { children, child, ...updateProps } = props;
|
|
307
|
+
if (node instanceof TextLiteral) {
|
|
308
|
+
node.text = updateProps.text ?? '';
|
|
282
309
|
}
|
|
283
310
|
else {
|
|
284
|
-
node.update(
|
|
311
|
+
node.update(updateProps);
|
|
285
312
|
}
|
|
286
313
|
},
|
|
287
314
|
});
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
315
|
+
// Preact accesses `document` directly (not ownerDocument), so we must
|
|
316
|
+
// provide a global document shim with our custom DOM factory methods.
|
|
317
|
+
const fakeDocument = Object.create(null);
|
|
318
|
+
Object.assign(fakeDocument, dom);
|
|
319
|
+
globalThis.document = fakeDocument;
|
|
320
|
+
export function render(screen, window, component) {
|
|
321
|
+
_rerender = () => {
|
|
322
|
+
screen.render();
|
|
323
|
+
};
|
|
291
324
|
const root = dom.createRoot();
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
325
|
+
root.ownerDocument = fakeDocument;
|
|
326
|
+
preactRender(component, root);
|
|
327
|
+
// Reparent created views into the actual window
|
|
328
|
+
if (root.node instanceof WrWindow) {
|
|
329
|
+
for (const child of [...root.node.children]) {
|
|
330
|
+
root.node.removeChild(child);
|
|
331
|
+
window.add(child);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
return function unmount() {
|
|
335
|
+
preactRender(null, root);
|
|
336
|
+
_rerender = undefined;
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
export async function run(component, options) {
|
|
340
|
+
// Start the screen first, then render (matching React package behavior)
|
|
341
|
+
const window = new WrWindow();
|
|
342
|
+
const [screen, _] = await Screen.start(window, options);
|
|
343
|
+
const unmount = render(screen, window, component);
|
|
344
|
+
return [screen, window, component, unmount];
|
|
296
345
|
}
|
|
297
346
|
//# sourceMappingURL=preact.js.map
|
package/.dist/preact.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preact.js","sourceRoot":"","sources":["../lib/preact.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"preact.js","sourceRoot":"","sources":["../lib/preact.tsx"],"names":[],"mappings":"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"}
|
package/README.md
CHANGED
|
@@ -1,31 +1,195 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @teaui/preact
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
Preact renderer for [TeaUI](https://github.com/colinta/teaui). Write fullscreen terminal UIs with Preact components, hooks, signals, and JSX.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pnpm install @teaui/core @teaui/preact preact
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
5
12
|
|
|
6
13
|
```tsx
|
|
7
|
-
import {useReducer} from 'preact/
|
|
14
|
+
import {useReducer} from 'preact/hooks'
|
|
8
15
|
import {interceptConsoleLog} from '@teaui/core'
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
Button,
|
|
12
|
-
Stack,
|
|
13
|
-
run,
|
|
14
|
-
} from '@teaui/preact'
|
|
15
|
-
|
|
16
|
-
// Recommended:
|
|
16
|
+
import {Box, Button, Stack, run} from '@teaui/preact'
|
|
17
|
+
|
|
17
18
|
interceptConsoleLog()
|
|
18
19
|
|
|
19
20
|
function App() {
|
|
20
|
-
const [bang,
|
|
21
|
-
|
|
22
|
-
return
|
|
23
|
-
<
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
const [bang, addBang] = useReducer((s: string) => s + '!', '')
|
|
22
|
+
|
|
23
|
+
return (
|
|
24
|
+
<Box border="single">
|
|
25
|
+
<Stack.down>
|
|
26
|
+
Hello TeaUI{bang}
|
|
27
|
+
<Button onClick={addBang}>Click me</Button>
|
|
28
|
+
</Stack.down>
|
|
29
|
+
</Box>
|
|
30
|
+
)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
run(<App />)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Compile and run:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
pnpm tsc && node .dist/index.js
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## API
|
|
43
|
+
|
|
44
|
+
### `run(element, options?)`
|
|
45
|
+
|
|
46
|
+
Creates a `Window` and `Screen`, renders the Preact element tree, and enters fullscreen mode.
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
const [screen, window, component, unmount] = await run(<App />)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Returns `[Screen, Window, ComponentChildren, unmount]`. Call `unmount()` to tear down the Preact tree.
|
|
53
|
+
|
|
54
|
+
### `render(screen, window, element)`
|
|
55
|
+
|
|
56
|
+
Lower-level alternative — mount a Preact element into an existing `Screen` and `Window`.
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
import {Screen, Window} from '@teaui/core'
|
|
60
|
+
import {render} from '@teaui/preact'
|
|
61
|
+
|
|
62
|
+
const window = new Window()
|
|
63
|
+
const [screen] = await Screen.start(window)
|
|
64
|
+
const unmount = render(screen, window, <App />)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Returns an `unmount()` function.
|
|
68
|
+
|
|
69
|
+
## Components
|
|
70
|
+
|
|
71
|
+
All components are typed wrappers around TeaUI core views. They accept the same props as the core constructors, with `children` mapped to Preact children.
|
|
72
|
+
|
|
73
|
+
### Views (leaf nodes)
|
|
74
|
+
|
|
75
|
+
| Component | Element | Description |
|
|
76
|
+
|-----------|---------|-------------|
|
|
77
|
+
| `<Br />` | `<tui-br>` | Line break in text |
|
|
78
|
+
| `<Checkbox />` | `<tui-checkbox>` | Toggle checkbox |
|
|
79
|
+
| `<CollapsibleText />` | `<tui-collapsible-text>` | Text that truncates with expand/collapse |
|
|
80
|
+
| `<ConsoleLog />` | `<tui-console>` | Displays intercepted `console.log` output |
|
|
81
|
+
| `<Digits />` | `<tui-digits>` | Large-font digit display |
|
|
82
|
+
| `<H1 />`–`<H6 />` | `<tui-h1>`–`<tui-h6>` | Header text |
|
|
83
|
+
| `<Input />` | `<tui-input>` | Text input field |
|
|
84
|
+
| `<Separator />` | `<tui-separator>` | Horizontal or vertical line |
|
|
85
|
+
| `<Slider />` | `<tui-slider>` | Value slider |
|
|
86
|
+
| `<Space />` | `<tui-space>` | Empty spacer |
|
|
87
|
+
| `<ToggleGroup />` | `<tui-toggle-group>` | Group of toggle options |
|
|
88
|
+
|
|
89
|
+
`Separator` has `.horizontal` and `.vertical` variants. `Slider` has `.horizontal` and `.vertical` variants.
|
|
90
|
+
|
|
91
|
+
### Containers
|
|
92
|
+
|
|
93
|
+
| Component | Element | Description |
|
|
94
|
+
|-----------|---------|-------------|
|
|
95
|
+
| `<Box />` | `<tui-box>` | Box with optional border and padding |
|
|
96
|
+
| `<Button />` | `<tui-button>` | Clickable button |
|
|
97
|
+
| `<Collapsible />` | `<tui-collapsible>` | Toggle between `collapsed` and `expanded` content |
|
|
98
|
+
| `<Scrollable />` | `<tui-scrollable>` | Scrollable content region |
|
|
99
|
+
| `<Stack />` | `<tui-stack>` | Linear layout |
|
|
100
|
+
| `<Text />` | `<tui-text>` | Text container (sets font, alignment, wrap) |
|
|
101
|
+
| `<Style />` | `<tui-style>` | Inline text styles (bold, italic, etc.) |
|
|
102
|
+
|
|
103
|
+
`Stack` has `.down`, `.up`, `.left`, and `.right` variants.
|
|
104
|
+
|
|
105
|
+
### Complex Containers
|
|
106
|
+
|
|
107
|
+
| Component | Element | Description |
|
|
108
|
+
|-----------|---------|-------------|
|
|
109
|
+
| `<Accordion />` | `<tui-accordion>` | Expandable section group |
|
|
110
|
+
| `<Accordion.Section />` | `<tui-accordion-section>` | Section within an accordion |
|
|
111
|
+
| `<Drawer />` | `<tui-drawer>` | Panel that slides in from an edge |
|
|
112
|
+
| `<Tabs />` | `<tui-tabs>` | Tabbed container |
|
|
113
|
+
| `<Tabs.Section />` | `<tui-tabs-section>` | Tab within tabs |
|
|
114
|
+
| `<Tree />` | `<tui-tree>` | Tree view with expandable nodes |
|
|
115
|
+
|
|
116
|
+
`Drawer` has `.top`, `.right`, `.bottom`, and `.left` variants. Each accepts `content` and `drawer` props for the two panes.
|
|
117
|
+
|
|
118
|
+
### Intrinsic Elements
|
|
119
|
+
|
|
120
|
+
You can also use the `tui-` prefixed JSX elements directly:
|
|
121
|
+
|
|
122
|
+
```tsx
|
|
123
|
+
<tui-stack direction="down">
|
|
124
|
+
<tui-box border="single" width={20}>
|
|
125
|
+
<tui-text alignment="center">Hello</tui-text>
|
|
126
|
+
</tui-box>
|
|
127
|
+
</tui-stack>
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Text Handling
|
|
131
|
+
|
|
132
|
+
String literals are rendered as `TextLiteral` nodes, which are automatically grouped into `TextContainer`s for layout:
|
|
133
|
+
|
|
134
|
+
```tsx
|
|
135
|
+
<Stack.down>
|
|
136
|
+
hello {/* TextLiteral → TextContainer #1 */}
|
|
137
|
+
<Br /> {/* TextLiteral → TextContainer #1 */}
|
|
138
|
+
<Box /> {/* Box breaks the text group */}
|
|
139
|
+
goodbye {/* TextLiteral → TextContainer #2 */}
|
|
140
|
+
</Stack.down>
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Use `<Text>` to control font, alignment, and word wrap. Use `<Style>` for inline formatting (bold, italic, etc.):
|
|
144
|
+
|
|
145
|
+
```tsx
|
|
146
|
+
<Text alignment="center" wrap>
|
|
147
|
+
This is <Style bold>important</Style> text.
|
|
148
|
+
</Text>
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Preact Features
|
|
152
|
+
|
|
153
|
+
| Feature | Status |
|
|
154
|
+
|---------|--------|
|
|
155
|
+
| Hooks (`useState`, `useReducer`, `useEffect`, etc.) | ✅ Works |
|
|
156
|
+
| Context (`useContext`, providers) | ✅ Works |
|
|
157
|
+
| Refs (`useRef`, callback refs) | ✅ Works |
|
|
158
|
+
| Signals (`@preact/signals`) | ✅ Compatible |
|
|
159
|
+
| Error Boundaries | Not yet tested |
|
|
160
|
+
|
|
161
|
+
## TypeScript Configuration
|
|
162
|
+
|
|
163
|
+
The package uses Preact's JSX transform. Your `tsconfig.json` should include:
|
|
164
|
+
|
|
165
|
+
```json
|
|
166
|
+
{
|
|
167
|
+
"compilerOptions": {
|
|
168
|
+
"jsx": "react-jsx",
|
|
169
|
+
"jsxImportSource": "preact"
|
|
170
|
+
}
|
|
28
171
|
}
|
|
172
|
+
```
|
|
29
173
|
|
|
30
|
-
|
|
174
|
+
## Architecture
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
@teaui/preact
|
|
178
|
+
├── lib/
|
|
179
|
+
│ ├── index.ts # Re-exports renderer + components
|
|
180
|
+
│ ├── preact.tsx # Fake-DOM renderer, render(), run()
|
|
181
|
+
│ ├── components.tsx # Typed Preact wrappers + JSX IntrinsicElements
|
|
182
|
+
│ └── components/
|
|
183
|
+
│ └── TextReact.ts # TextLiteral, TextContainer, TextProvider, TextStyle
|
|
184
|
+
└── tsconfig.json
|
|
31
185
|
```
|
|
186
|
+
|
|
187
|
+
**`preact.tsx`** implements a custom DOM-like abstraction (`RendererElement`) that Preact renders into. Each `RendererElement` lazily creates its corresponding TeaUI view on first attach. Attribute changes are batched via microtask deferral — multiple `setAttribute` calls in the same synchronous block are committed together. Preact's `options.diffed` hook triggers `screen.render()` after each commit so updates appear on screen.
|
|
188
|
+
|
|
189
|
+
**`components.tsx`** provides typed Preact component wrappers for all TeaUI views. Each component maps its props to the corresponding `tui-` intrinsic element. The file also declares `preact.JSX.IntrinsicElements` so `tui-` elements can be used directly in JSX.
|
|
190
|
+
|
|
191
|
+
**`components/TextReact.ts`** defines the text rendering architecture. Adjacent `TextLiteral` nodes are grouped into a `TextContainer`, which handles layout. `TextProvider` (`<Text>`) sets text properties (font, alignment, wrap) for descendant text. `TextStyle` (`<Style>`) applies inline SGR styles without affecting layout properties.
|
|
192
|
+
|
|
193
|
+
## License
|
|
194
|
+
|
|
195
|
+
MIT
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
|
+
"type": "module",
|
|
2
3
|
"name": "@teaui/preact",
|
|
3
4
|
"description": "Preact renderer for TeaUI",
|
|
4
5
|
"author": "Colin T.A. Gray <colinta@colinta.com>",
|
|
5
6
|
"contributors": [],
|
|
6
|
-
"version": "1.
|
|
7
|
+
"version": "1.5.8",
|
|
7
8
|
"license": "MIT",
|
|
8
9
|
"preferGlobal": false,
|
|
9
10
|
"repository": {
|
|
@@ -20,7 +21,7 @@
|
|
|
20
21
|
"url": "http://github.com/colinta/teaui/issues"
|
|
21
22
|
},
|
|
22
23
|
"keywords": [
|
|
23
|
-
"
|
|
24
|
+
"preact",
|
|
24
25
|
"curses",
|
|
25
26
|
"tui",
|
|
26
27
|
"terminal",
|
|
@@ -28,7 +29,7 @@
|
|
|
28
29
|
"terminal-ui"
|
|
29
30
|
],
|
|
30
31
|
"tags": [
|
|
31
|
-
"
|
|
32
|
+
"preact",
|
|
32
33
|
"curses",
|
|
33
34
|
"tui",
|
|
34
35
|
"terminal"
|
|
@@ -39,10 +40,10 @@
|
|
|
39
40
|
"peerDependencies": {},
|
|
40
41
|
"dependencies": {
|
|
41
42
|
"preact": "^10.24.3",
|
|
42
|
-
"@teaui/core": "1.
|
|
43
|
+
"@teaui/core": "1.5.8"
|
|
43
44
|
},
|
|
44
45
|
"devDependencies": {
|
|
45
|
-
"@teaui/shared": "1.
|
|
46
|
+
"@teaui/shared": "1.5.8"
|
|
46
47
|
},
|
|
47
48
|
"scripts": {
|
|
48
49
|
"clean": "rm -rf .dist/",
|