@opentui/solid 0.1.14 → 0.1.16
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/index.js +17 -6
- package/package.json +2 -2
- package/src/elements/hooks.d.ts +4 -0
- package/src/elements/index.d.ts +2 -1
- package/src/types/elements.d.ts +4 -1
package/index.js
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
ASCIIFontRenderable,
|
|
8
8
|
BoxRenderable,
|
|
9
9
|
InputRenderable,
|
|
10
|
+
ScrollBoxRenderable,
|
|
10
11
|
SelectRenderable,
|
|
11
12
|
TabSelectRenderable,
|
|
12
13
|
TextRenderable
|
|
@@ -44,7 +45,7 @@ var useTerminalDimensions = () => {
|
|
|
44
45
|
onResize(callback);
|
|
45
46
|
return terminalDimensions;
|
|
46
47
|
};
|
|
47
|
-
var
|
|
48
|
+
var useKeyboard = (callback) => {
|
|
48
49
|
const keyHandler = getKeyHandler();
|
|
49
50
|
onMount(() => {
|
|
50
51
|
keyHandler.on("keypress", callback);
|
|
@@ -53,6 +54,7 @@ var useKeyHandler = (callback) => {
|
|
|
53
54
|
keyHandler.off("keypress", callback);
|
|
54
55
|
});
|
|
55
56
|
};
|
|
57
|
+
var useKeyHandler = useKeyboard;
|
|
56
58
|
var useSelectionHandler = (callback) => {
|
|
57
59
|
const renderer = useRenderer();
|
|
58
60
|
onMount(() => {
|
|
@@ -99,7 +101,8 @@ var baseComponents = {
|
|
|
99
101
|
input: InputRenderable,
|
|
100
102
|
select: SelectRenderable,
|
|
101
103
|
ascii_font: ASCIIFontRenderable,
|
|
102
|
-
tab_select: TabSelectRenderable
|
|
104
|
+
tab_select: TabSelectRenderable,
|
|
105
|
+
scrollbox: ScrollBoxRenderable
|
|
103
106
|
};
|
|
104
107
|
var componentCatalogue = { ...baseComponents };
|
|
105
108
|
function extend(objects) {
|
|
@@ -188,13 +191,20 @@ class TextNode {
|
|
|
188
191
|
}
|
|
189
192
|
this.textParent = textParent;
|
|
190
193
|
let styledText = textParent.content;
|
|
191
|
-
if (anchor
|
|
192
|
-
|
|
194
|
+
if (anchor) {
|
|
195
|
+
if (anchor instanceof Renderable) {
|
|
196
|
+
console.warn("text node can't be anchored to Renderable");
|
|
197
|
+
return;
|
|
198
|
+
} else if (isTextChunk(anchor)) {
|
|
199
|
+
anchor = ChunkToTextNodeMap.get(anchor);
|
|
200
|
+
}
|
|
201
|
+
const anchorIndex = anchor ? styledText.chunks.indexOf(anchor.chunk) : -1;
|
|
193
202
|
if (anchorIndex === -1) {
|
|
194
203
|
log("anchor not found");
|
|
195
|
-
|
|
204
|
+
styledText = styledText.insert(this.chunk);
|
|
205
|
+
} else {
|
|
206
|
+
styledText = styledText.insert(this.chunk, anchorIndex);
|
|
196
207
|
}
|
|
197
|
-
styledText = styledText.insert(this.chunk, anchorIndex);
|
|
198
208
|
} else {
|
|
199
209
|
const firstChunk = textParent.content.chunks[0];
|
|
200
210
|
if (firstChunk && !ChunkToTextNodeMap.has(firstChunk)) {
|
|
@@ -583,6 +593,7 @@ export {
|
|
|
583
593
|
useTerminalDimensions,
|
|
584
594
|
useSelectionHandler,
|
|
585
595
|
useRenderer,
|
|
596
|
+
useKeyboard,
|
|
586
597
|
useKeyHandler,
|
|
587
598
|
use,
|
|
588
599
|
spread,
|
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.1.
|
|
7
|
+
"version": "0.1.16",
|
|
8
8
|
"description": "SolidJS renderer for OpenTUI",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"repository": {
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"./jsx-dev-runtime": "./jsx-runtime.d.ts"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@opentui/core": "0.1.
|
|
28
|
+
"@opentui/core": "0.1.16",
|
|
29
29
|
"babel-plugin-module-resolver": "5.0.2",
|
|
30
30
|
"@babel/core": "7.28.0",
|
|
31
31
|
"@babel/preset-typescript": "7.27.1",
|
package/src/elements/hooks.d.ts
CHANGED
|
@@ -6,6 +6,10 @@ export declare const useTerminalDimensions: () => import("solid-js").Accessor<{
|
|
|
6
6
|
width: number;
|
|
7
7
|
height: number;
|
|
8
8
|
}>;
|
|
9
|
+
export declare const useKeyboard: (callback: (key: ParsedKey) => void) => void;
|
|
10
|
+
/**
|
|
11
|
+
* @deprecated renamed to useKeyboard
|
|
12
|
+
*/
|
|
9
13
|
export declare const useKeyHandler: (callback: (key: ParsedKey) => void) => void;
|
|
10
14
|
export declare const useSelectionHandler: (callback: (selection: Selection) => void) => void;
|
|
11
15
|
export declare const createComponentTimeline: (options?: TimelineOptions) => Timeline;
|
package/src/elements/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ASCIIFontRenderable, BoxRenderable, InputRenderable, SelectRenderable, TabSelectRenderable, TextRenderable } from "@opentui/core";
|
|
1
|
+
import { ASCIIFontRenderable, BoxRenderable, InputRenderable, ScrollBoxRenderable, SelectRenderable, TabSelectRenderable, TextRenderable } from "@opentui/core";
|
|
2
2
|
import type { RenderableConstructor } from "../types/elements";
|
|
3
3
|
export * from "./hooks";
|
|
4
4
|
export declare const baseComponents: {
|
|
@@ -8,6 +8,7 @@ export declare const baseComponents: {
|
|
|
8
8
|
select: typeof SelectRenderable;
|
|
9
9
|
ascii_font: typeof ASCIIFontRenderable;
|
|
10
10
|
tab_select: typeof TabSelectRenderable;
|
|
11
|
+
scrollbox: typeof ScrollBoxRenderable;
|
|
11
12
|
};
|
|
12
13
|
type ComponentCatalogue = Record<string, RenderableConstructor>;
|
|
13
14
|
export declare const componentCatalogue: ComponentCatalogue;
|
package/src/types/elements.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ASCIIFontOptions, ASCIIFontRenderable, BoxOptions, BoxRenderable, InputRenderable, InputRenderableOptions, Renderable, RenderableOptions, RenderContext, SelectOption, SelectRenderable, SelectRenderableOptions, StyledText, TabSelectOption, TabSelectRenderable, TabSelectRenderableOptions, TextChunk, TextOptions, TextRenderable } from "@opentui/core";
|
|
1
|
+
import type { ASCIIFontOptions, ASCIIFontRenderable, BoxOptions, BoxRenderable, InputRenderable, InputRenderableOptions, Renderable, RenderableOptions, RenderContext, ScrollBoxOptions, ScrollBoxRenderable, SelectOption, SelectRenderable, SelectRenderableOptions, StyledText, TabSelectOption, TabSelectRenderable, TabSelectRenderableOptions, TextChunk, TextOptions, TextRenderable } from "@opentui/core";
|
|
2
2
|
import type { JSX, Ref } from "solid-js";
|
|
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}`;
|
|
@@ -45,6 +45,9 @@ export type TabSelectProps = ComponentProps<TabSelectRenderableOptions, TabSelec
|
|
|
45
45
|
onChange?: (index: number, option: TabSelectOption | null) => void;
|
|
46
46
|
onSelect?: (index: number, option: TabSelectOption | null) => void;
|
|
47
47
|
};
|
|
48
|
+
export type ScrollBoxProps = ComponentProps<ContainerProps<ScrollBoxOptions>, ScrollBoxRenderable> & {
|
|
49
|
+
focused?: boolean;
|
|
50
|
+
};
|
|
48
51
|
/** Convert renderable constructor to component props with proper style exclusions */
|
|
49
52
|
export type ExtendedComponentProps<TConstructor extends RenderableConstructor, TOptions = ExtractRenderableOptions<TConstructor>> = TOptions & {
|
|
50
53
|
children?: JSX.Element;
|