@opentui/react 0.4.5 → 0.5.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/{chunk-hjtp6jv9.js → chunk-tyqqzmyr.js} +18 -8
- package/index.js +1 -1
- package/jsx-namespace.d.ts +2 -0
- package/package.json +2 -2
- package/src/components/index.d.ts +2 -1
- package/src/types/components.d.ts +3 -2
- package/test-utils.js +1 -1
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
BoxRenderable,
|
|
10
10
|
CodeRenderable,
|
|
11
11
|
DiffRenderable,
|
|
12
|
+
ImageRenderable,
|
|
12
13
|
InputRenderable,
|
|
13
14
|
LineNumberRenderable,
|
|
14
15
|
MarkdownRenderable,
|
|
@@ -97,6 +98,7 @@ var baseComponents = {
|
|
|
97
98
|
"ascii-font": ASCIIFontRenderable,
|
|
98
99
|
"tab-select": TabSelectRenderable,
|
|
99
100
|
"line-number": LineNumberRenderable,
|
|
101
|
+
image: ImageRenderable,
|
|
100
102
|
span: SpanRenderable,
|
|
101
103
|
br: LineBreakRenderable,
|
|
102
104
|
b: BoldSpanRenderable,
|
|
@@ -159,14 +161,14 @@ class ErrorBoundary extends React.Component {
|
|
|
159
161
|
|
|
160
162
|
// src/reconciler/reconciler.ts
|
|
161
163
|
import ReactReconciler from "react-reconciler";
|
|
162
|
-
import { ConcurrentRoot } from "react-reconciler/constants";
|
|
164
|
+
import { ConcurrentRoot } from "react-reconciler/constants.js";
|
|
163
165
|
|
|
164
166
|
// src/reconciler/host-config.ts
|
|
165
|
-
import { TextNodeRenderable as TextNodeRenderable2 } from "@opentui/core";
|
|
167
|
+
import { ImageRenderable as ImageRenderable2, TextNodeRenderable as TextNodeRenderable2 } from "@opentui/core";
|
|
166
168
|
// package.json
|
|
167
169
|
var package_default = {
|
|
168
170
|
name: "@opentui/react",
|
|
169
|
-
version: "0.
|
|
171
|
+
version: "0.5.0",
|
|
170
172
|
description: "React renderer for building terminal user interfaces using OpenTUI core",
|
|
171
173
|
license: "MIT",
|
|
172
174
|
repository: {
|
|
@@ -244,7 +246,7 @@ var package_default = {
|
|
|
244
246
|
|
|
245
247
|
// src/reconciler/host-config.ts
|
|
246
248
|
import { createContext as createContext2 } from "react";
|
|
247
|
-
import { DefaultEventPriority, NoEventPriority } from "react-reconciler/constants";
|
|
249
|
+
import { DefaultEventPriority, NoEventPriority } from "react-reconciler/constants.js";
|
|
248
250
|
|
|
249
251
|
// src/utils/id.ts
|
|
250
252
|
var idCounter = new Map;
|
|
@@ -376,6 +378,11 @@ function updateProperties(instance, type, oldProps, newProps) {
|
|
|
376
378
|
|
|
377
379
|
// src/reconciler/host-config.ts
|
|
378
380
|
var currentUpdatePriority = NoEventPriority;
|
|
381
|
+
function initialInstanceProps(type, props) {
|
|
382
|
+
if (type !== "image" || props.source === undefined)
|
|
383
|
+
return props;
|
|
384
|
+
return { ...props, source: undefined };
|
|
385
|
+
}
|
|
379
386
|
var hostConfig = {
|
|
380
387
|
supportsMutation: true,
|
|
381
388
|
supportsPersistence: false,
|
|
@@ -393,7 +400,7 @@ var hostConfig = {
|
|
|
393
400
|
}
|
|
394
401
|
return new components[type](rootContainerInstance.ctx, {
|
|
395
402
|
id,
|
|
396
|
-
...props
|
|
403
|
+
...initialInstanceProps(type, props)
|
|
397
404
|
});
|
|
398
405
|
},
|
|
399
406
|
appendChild(parent, child) {
|
|
@@ -444,10 +451,13 @@ var hostConfig = {
|
|
|
444
451
|
return true;
|
|
445
452
|
},
|
|
446
453
|
finalizeInitialChildren(instance, type, props, rootContainerInstance, hostContext) {
|
|
447
|
-
setInitialProperties(instance, type, props);
|
|
448
|
-
return
|
|
454
|
+
setInitialProperties(instance, type, initialInstanceProps(type, props));
|
|
455
|
+
return type === "image" && props.source !== undefined;
|
|
456
|
+
},
|
|
457
|
+
commitMount(instance, type, props, internalInstanceHandle) {
|
|
458
|
+
if (instance instanceof ImageRenderable2)
|
|
459
|
+
instance.source = props.source;
|
|
449
460
|
},
|
|
450
|
-
commitMount(instance, type, props, internalInstanceHandle) {},
|
|
451
461
|
commitUpdate(instance, type, oldProps, newProps, internalInstanceHandle) {
|
|
452
462
|
updateProperties(instance, type, oldProps, newProps);
|
|
453
463
|
},
|
package/index.js
CHANGED
package/jsx-namespace.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import type {
|
|
|
5
5
|
CodeProps,
|
|
6
6
|
DiffProps,
|
|
7
7
|
ExtendedIntrinsicElements,
|
|
8
|
+
ImageProps,
|
|
8
9
|
InputProps,
|
|
9
10
|
LineBreakProps,
|
|
10
11
|
LineNumberProps,
|
|
@@ -50,6 +51,7 @@ export namespace JSX {
|
|
|
50
51
|
"ascii-font": AsciiFontProps
|
|
51
52
|
"tab-select": TabSelectProps
|
|
52
53
|
"line-number": LineNumberProps
|
|
54
|
+
image: ImageProps
|
|
53
55
|
// Text modifiers
|
|
54
56
|
b: SpanProps
|
|
55
57
|
i: SpanProps
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"types": "src/index.d.ts",
|
|
6
6
|
"type": "module",
|
|
7
|
-
"version": "0.
|
|
7
|
+
"version": "0.5.0",
|
|
8
8
|
"description": "React renderer for building terminal user interfaces using OpenTUI core",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"repository": {
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
}
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@opentui/core": "0.
|
|
55
|
+
"@opentui/core": "0.5.0",
|
|
56
56
|
"react-reconciler": "^0.33.0"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ASCIIFontRenderable, BoxRenderable, CodeRenderable, DiffRenderable, InputRenderable, LineNumberRenderable, MarkdownRenderable, ScrollBoxRenderable, SelectRenderable, TabSelectRenderable, TextareaRenderable, TextRenderable } from "@opentui/core";
|
|
1
|
+
import { ASCIIFontRenderable, BoxRenderable, CodeRenderable, DiffRenderable, ImageRenderable, InputRenderable, LineNumberRenderable, MarkdownRenderable, ScrollBoxRenderable, SelectRenderable, TabSelectRenderable, TextareaRenderable, TextRenderable } from "@opentui/core";
|
|
2
2
|
import type { RenderableConstructor } from "../types/components.js";
|
|
3
3
|
import { BoldSpanRenderable, ItalicSpanRenderable, LineBreakRenderable, LinkRenderable, SpanRenderable, UnderlineSpanRenderable } from "./text.js";
|
|
4
4
|
export declare const baseComponents: {
|
|
@@ -14,6 +14,7 @@ export declare const baseComponents: {
|
|
|
14
14
|
"ascii-font": typeof ASCIIFontRenderable;
|
|
15
15
|
"tab-select": typeof TabSelectRenderable;
|
|
16
16
|
"line-number": typeof LineNumberRenderable;
|
|
17
|
+
image: typeof ImageRenderable;
|
|
17
18
|
span: typeof SpanRenderable;
|
|
18
19
|
br: typeof LineBreakRenderable;
|
|
19
20
|
b: typeof BoldSpanRenderable;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ASCIIFontOptions, ASCIIFontRenderable, BaseRenderable, BoxOptions, BoxRenderable, CodeOptions, CodeRenderable, DiffRenderable, DiffRenderableOptions, InputRenderable, InputRenderableOptions, LineNumberOptions, LineNumberRenderable, MarkdownOptions, MarkdownRenderable, RenderableOptions, RenderContext, ScrollBoxOptions, ScrollBoxRenderable, SelectOption, SelectRenderable, SelectRenderableOptions, TabSelectOption, TabSelectRenderable, TabSelectRenderableOptions, TextareaOptions, TextareaRenderable, TextNodeOptions, TextNodeRenderable, TextOptions, TextRenderable, CursorChangeEvent, ContentChangeEvent, KeyEvent } from "@opentui/core";
|
|
1
|
+
import type { ASCIIFontOptions, ASCIIFontRenderable, BaseRenderable, BoxOptions, BoxRenderable, CodeOptions, CodeRenderable, DiffRenderable, DiffRenderableOptions, ImageRenderable, ImageRenderableOptions, InputRenderable, InputRenderableOptions, LineNumberOptions, LineNumberRenderable, MarkdownOptions, MarkdownRenderable, RenderableOptions, RenderContext, ScrollBoxOptions, ScrollBoxRenderable, SelectOption, SelectRenderable, SelectRenderableOptions, TabSelectOption, TabSelectRenderable, TabSelectRenderableOptions, TextareaOptions, TextareaRenderable, TextNodeOptions, TextNodeRenderable, TextOptions, TextRenderable, CursorChangeEvent, ContentChangeEvent, KeyEvent } from "@opentui/core";
|
|
2
2
|
import type React from "react";
|
|
3
3
|
/** Properties that should not be included in the style prop */
|
|
4
4
|
export type NonStyledProps = "id" | "buffered" | "live" | "enableLayout" | "selectable" | "renderAfter" | "renderBefore" | `on${string}`;
|
|
@@ -14,7 +14,7 @@ type ExtractRenderableOptions<TConstructor> = TConstructor extends new (ctx: Ren
|
|
|
14
14
|
/** Extract the renderable type from a constructor */
|
|
15
15
|
type ExtractRenderable<TConstructor> = TConstructor extends new (ctx: RenderContext, options: any) => infer TRenderable ? TRenderable : never;
|
|
16
16
|
/** Determine which properties should be excluded from styling for different renderable types */
|
|
17
|
-
export type GetNonStyledProperties<TConstructor> = TConstructor extends RenderableConstructor<TextRenderable> ? NonStyledProps | "content" : TConstructor extends RenderableConstructor<BoxRenderable> ? NonStyledProps | "title" | "bottomTitle" : TConstructor extends RenderableConstructor<ASCIIFontRenderable> ? NonStyledProps | "text" | "selectable" : TConstructor extends RenderableConstructor<InputRenderable> ? NonStyledProps | "placeholder" | "value" : TConstructor extends RenderableConstructor<TextareaRenderable> ? NonStyledProps | "placeholder" | "initialValue" : TConstructor extends RenderableConstructor<CodeRenderable> ? NonStyledProps | "content" | "filetype" | "syntaxStyle" | "treeSitterClient" | "conceal" | "drawUnstyledText" : TConstructor extends RenderableConstructor<MarkdownRenderable> ? NonStyledProps | "content" | "syntaxStyle" | "treeSitterClient" | "conceal" | "renderNode" : NonStyledProps;
|
|
17
|
+
export type GetNonStyledProperties<TConstructor> = TConstructor extends RenderableConstructor<TextRenderable> ? NonStyledProps | "content" : TConstructor extends RenderableConstructor<BoxRenderable> ? NonStyledProps | "title" | "bottomTitle" : TConstructor extends RenderableConstructor<ASCIIFontRenderable> ? NonStyledProps | "text" | "selectable" : TConstructor extends RenderableConstructor<InputRenderable> ? NonStyledProps | "placeholder" | "value" : TConstructor extends RenderableConstructor<TextareaRenderable> ? NonStyledProps | "placeholder" | "initialValue" : TConstructor extends RenderableConstructor<CodeRenderable> ? NonStyledProps | "content" | "filetype" | "syntaxStyle" | "treeSitterClient" | "conceal" | "drawUnstyledText" : TConstructor extends RenderableConstructor<MarkdownRenderable> ? NonStyledProps | "content" | "syntaxStyle" | "treeSitterClient" | "conceal" | "renderNode" : TConstructor extends RenderableConstructor<ImageRenderable> ? NonStyledProps | "source" : NonStyledProps;
|
|
18
18
|
/** Base props for container components that accept children */
|
|
19
19
|
type ContainerProps<TOptions> = TOptions & {
|
|
20
20
|
children?: React.ReactNode;
|
|
@@ -52,6 +52,7 @@ export type TextareaProps = ComponentProps<TextareaOptions, TextareaRenderable>
|
|
|
52
52
|
onKeyDown?: (event: KeyEvent) => void;
|
|
53
53
|
};
|
|
54
54
|
export type CodeProps = ComponentProps<CodeOptions, CodeRenderable>;
|
|
55
|
+
export type ImageProps = ComponentProps<ImageRenderableOptions, ImageRenderable>;
|
|
55
56
|
export type MarkdownProps = ComponentProps<MarkdownOptions, MarkdownRenderable>;
|
|
56
57
|
export type DiffProps = ComponentProps<DiffRenderableOptions, DiffRenderable>;
|
|
57
58
|
export type SelectProps = ComponentProps<SelectRenderableOptions, SelectRenderable> & {
|