@opentui/solid 0.0.0-20250917-afb89399 → 0.0.0-20250919-c2d2d461
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/index.d.ts +70 -27
- package/index.d.ts +8 -0
- package/index.js +2186 -111
- package/package.json +5 -4
- package/src/elements/extras.d.ts +41 -0
- package/src/elements/index.d.ts +2 -0
- package/src/elements/slot.d.ts +38 -0
- package/src/reconciler.d.ts +2 -0
- package/src/renderer/index.d.ts +3 -0
- package/src/renderer/universal.d.ts +29 -0
- package/src/types/elements.d.ts +1 -1
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"types": "index.d.ts",
|
|
6
6
|
"type": "module",
|
|
7
|
-
"version": "0.0.0-
|
|
7
|
+
"version": "0.0.0-20250919-c2d2d461",
|
|
8
8
|
"description": "SolidJS renderer for OpenTUI",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"repository": {
|
|
@@ -25,11 +25,12 @@
|
|
|
25
25
|
"./jsx-dev-runtime": "./jsx-runtime.d.ts"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@opentui/core": "0.0.0-20250917-afb89399",
|
|
29
|
-
"babel-plugin-module-resolver": "5.0.2",
|
|
30
28
|
"@babel/core": "7.28.0",
|
|
31
29
|
"@babel/preset-typescript": "7.27.1",
|
|
32
|
-
"
|
|
30
|
+
"@opentui/core": "0.0.0-20250919-c2d2d461",
|
|
31
|
+
"babel-plugin-module-resolver": "5.0.2",
|
|
32
|
+
"babel-preset-solid": "1.9.9",
|
|
33
|
+
"s-js": "^0.4.9"
|
|
33
34
|
},
|
|
34
35
|
"devDependencies": {
|
|
35
36
|
"@types/babel__core": "7.20.5",
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type DomNode } from "../reconciler";
|
|
2
|
+
import type { JSX } from "../../jsx-runtime";
|
|
3
|
+
import type { ValidComponent, ComponentProps } from "solid-js";
|
|
4
|
+
/**
|
|
5
|
+
* Renders components somewhere else in the DOM
|
|
6
|
+
*
|
|
7
|
+
* Useful for inserting modals and tooltips outside of an cropping layout. If no mount point is given, the portal is inserted on the root renderable; it is wrapped in a `<box>`
|
|
8
|
+
*
|
|
9
|
+
* @description https://docs.solidjs.com/reference/components/portal
|
|
10
|
+
*/
|
|
11
|
+
export declare function Portal(props: {
|
|
12
|
+
mount?: DomNode;
|
|
13
|
+
ref?: (el: {}) => void;
|
|
14
|
+
children: JSX.Element;
|
|
15
|
+
}): DomNode;
|
|
16
|
+
export type DynamicProps<T extends ValidComponent, P = ComponentProps<T>> = {
|
|
17
|
+
[K in keyof P]: P[K];
|
|
18
|
+
} & {
|
|
19
|
+
component: T | undefined;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Renders an arbitrary component or element with the given props
|
|
23
|
+
*
|
|
24
|
+
* This is a lower level version of the `Dynamic` component, useful for
|
|
25
|
+
* performance optimizations in libraries. Do not use this unless you know
|
|
26
|
+
* what you are doing.
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const element = () => multiline() ? 'textarea' : 'input';
|
|
29
|
+
* createDynamic(element, { value: value() });
|
|
30
|
+
* ```
|
|
31
|
+
* @description https://docs.solidjs.com/reference/components/dynamic
|
|
32
|
+
*/
|
|
33
|
+
export declare function createDynamic<T extends ValidComponent>(component: () => T | undefined, props: ComponentProps<T>): JSX.Element;
|
|
34
|
+
/**
|
|
35
|
+
* Renders an arbitrary custom or native component and passes the other props
|
|
36
|
+
* ```typescript
|
|
37
|
+
* <Dynamic component={multiline() ? 'textarea' : 'input'} value={value()} />
|
|
38
|
+
* ```
|
|
39
|
+
* @description https://docs.solidjs.com/reference/components/dynamic
|
|
40
|
+
*/
|
|
41
|
+
export declare function Dynamic<T extends ValidComponent>(props: DynamicProps<T>): JSX.Element;
|
package/src/elements/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { ASCIIFontRenderable, BoxRenderable, InputRenderable, ScrollBoxRenderable, SelectRenderable, TabSelectRenderable, TextNodeRenderable, TextRenderable, type RenderContext, type TextNodeOptions } from "@opentui/core";
|
|
2
2
|
import type { RenderableConstructor } from "../types/elements";
|
|
3
3
|
export * from "./hooks";
|
|
4
|
+
export * from "./extras";
|
|
5
|
+
export * from "./slot";
|
|
4
6
|
declare class SpanRenderable extends TextNodeRenderable {
|
|
5
7
|
private readonly _ctx;
|
|
6
8
|
constructor(_ctx: RenderContext | null, options: TextNodeOptions);
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { BaseRenderable, TextNodeRenderable } from "@opentui/core";
|
|
2
|
+
import { type Node as YogaNode } from "yoga-layout";
|
|
3
|
+
declare class SlotBaseRenderable extends BaseRenderable {
|
|
4
|
+
constructor(id: string);
|
|
5
|
+
add(obj: BaseRenderable | unknown, index?: number): number;
|
|
6
|
+
getChildren(): BaseRenderable[];
|
|
7
|
+
remove(id: string): void;
|
|
8
|
+
insertBefore(obj: BaseRenderable | unknown, anchor: BaseRenderable | unknown): void;
|
|
9
|
+
getRenderable(id: string): BaseRenderable | undefined;
|
|
10
|
+
getChildrenCount(): number;
|
|
11
|
+
requestRender(): void;
|
|
12
|
+
}
|
|
13
|
+
export declare class TextSlotRenderable extends TextNodeRenderable {
|
|
14
|
+
protected slotParent?: SlotRenderable;
|
|
15
|
+
protected destroyed: boolean;
|
|
16
|
+
constructor(id: string, parent?: SlotRenderable);
|
|
17
|
+
destroy(): void;
|
|
18
|
+
}
|
|
19
|
+
export declare class LayoutSlotRenderable extends SlotBaseRenderable {
|
|
20
|
+
protected yogaNode: YogaNode;
|
|
21
|
+
protected slotParent?: SlotRenderable;
|
|
22
|
+
protected destroyed: boolean;
|
|
23
|
+
constructor(id: string, parent?: SlotRenderable);
|
|
24
|
+
getLayoutNode(): YogaNode;
|
|
25
|
+
updateFromLayout(): void;
|
|
26
|
+
updateLayout(): void;
|
|
27
|
+
onRemove(): void;
|
|
28
|
+
destroy(): void;
|
|
29
|
+
}
|
|
30
|
+
export declare class SlotRenderable extends SlotBaseRenderable {
|
|
31
|
+
layoutNode?: LayoutSlotRenderable;
|
|
32
|
+
textNode?: TextSlotRenderable;
|
|
33
|
+
protected destroyed: boolean;
|
|
34
|
+
constructor(id: string);
|
|
35
|
+
getSlotChild(parent: BaseRenderable): TextSlotRenderable | LayoutSlotRenderable;
|
|
36
|
+
destroy(): void;
|
|
37
|
+
}
|
|
38
|
+
export {};
|
package/src/reconciler.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import { BaseRenderable } from "@opentui/core";
|
|
2
|
+
import { SlotRenderable } from "./elements";
|
|
2
3
|
export type DomNode = BaseRenderable;
|
|
4
|
+
export declare function createSlotNode(): SlotRenderable;
|
|
3
5
|
export declare const _render: (code: () => BaseRenderable, node: BaseRenderable) => () => void, effect: <T>(fn: (prev?: T) => T, init?: T) => void, memo: <T>(fn: () => T, equal: boolean) => () => T, createComponent: <T>(Comp: (props: T) => BaseRenderable, props: T) => BaseRenderable, createElement: (tag: string) => BaseRenderable, createTextNode: (value: string) => BaseRenderable, insertNode: (parent: BaseRenderable, node: BaseRenderable, anchor?: BaseRenderable | undefined) => void, insert: <T>(parent: any, accessor: T | (() => T), marker?: any | null, initial?: any) => BaseRenderable, spread: <T>(node: any, accessor: (() => T) | T, skipChildren?: boolean) => void, setProp: <T>(node: BaseRenderable, name: string, value: T, prev?: T | undefined) => T, mergeProps: (...sources: unknown[]) => unknown, use: <A, T>(fn: (element: BaseRenderable, arg: A) => T, element: BaseRenderable, arg: A) => T;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export function createRenderer({ createElement, createTextNode, createSlotNode, isTextNode, replaceText, insertNode, removeNode, setProperty, getParentNode, getFirstChild, getNextSibling, }: {
|
|
2
|
+
createElement: any;
|
|
3
|
+
createTextNode: any;
|
|
4
|
+
createSlotNode: any;
|
|
5
|
+
isTextNode: any;
|
|
6
|
+
replaceText: any;
|
|
7
|
+
insertNode: any;
|
|
8
|
+
removeNode: any;
|
|
9
|
+
setProperty: any;
|
|
10
|
+
getParentNode: any;
|
|
11
|
+
getFirstChild: any;
|
|
12
|
+
getNextSibling: any;
|
|
13
|
+
}): {
|
|
14
|
+
render(code: any, element: any): undefined;
|
|
15
|
+
insert: (parent: any, accessor: any, marker: any, initial: any) => any;
|
|
16
|
+
spread(node: any, accessor: any, skipChildren: any): void;
|
|
17
|
+
createElement: any;
|
|
18
|
+
createTextNode: any;
|
|
19
|
+
insertNode: any;
|
|
20
|
+
setProp(node: any, name: any, value: any, prev: any): any;
|
|
21
|
+
mergeProps: typeof mergeProps;
|
|
22
|
+
effect: typeof createRenderEffect;
|
|
23
|
+
memo: (fn: any) => import("solid-js").Accessor<any>;
|
|
24
|
+
createComponent: typeof createComponent;
|
|
25
|
+
use(fn: any, element: any, arg: any): any;
|
|
26
|
+
};
|
|
27
|
+
import { mergeProps } from "solid-js";
|
|
28
|
+
import { createRenderEffect } from "solid-js";
|
|
29
|
+
import { createComponent } from "solid-js";
|
package/src/types/elements.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ type ContainerProps<TOptions> = TOptions & {
|
|
|
20
20
|
children?: JSX.Element;
|
|
21
21
|
};
|
|
22
22
|
/** Smart component props that automatically determine excluded properties */
|
|
23
|
-
type ComponentProps<TOptions extends RenderableOptions<TRenderable>, TRenderable extends BaseRenderable> = TOptions & {
|
|
23
|
+
type ComponentProps<TOptions extends RenderableOptions<TRenderable>, TRenderable extends BaseRenderable> = Omit<TOptions, "id"> & {
|
|
24
24
|
style?: Partial<Omit<TOptions, GetNonStyledProperties<RenderableConstructor<TRenderable>>>>;
|
|
25
25
|
} & ElementProps<TRenderable>;
|
|
26
26
|
/** Valid text content types for Text component children */
|