@opentui/solid 0.1.62 → 0.1.64

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 CHANGED
@@ -45,6 +45,7 @@ export function getComponentCatalogue(): {
45
45
  i: typeof ItalicSpanRenderable;
46
46
  u: typeof UnderlineSpanRenderable;
47
47
  br: typeof LineBreakRenderable;
48
+ a: typeof LinkRenderable;
48
49
  };
49
50
  export function extend(objects: any): void;
50
51
  export var effect: typeof createRenderEffect;
@@ -72,6 +73,7 @@ export namespace componentCatalogue {
72
73
  export { ItalicSpanRenderable as i };
73
74
  export { UnderlineSpanRenderable as u };
74
75
  export { LineBreakRenderable as br };
76
+ export { LinkRenderable as a };
75
77
  }
76
78
  export namespace baseComponents { }
77
79
  export function _render(code: any, element: any): undefined;
@@ -91,6 +93,8 @@ export class SlotRenderable extends SlotBaseRenderable {
91
93
  }
92
94
  export var RendererContext: import("solid-js").Context<any>;
93
95
  export function Portal(props: any): SlotRenderable;
96
+ export class LinkRenderable extends SpanRenderable {
97
+ }
94
98
  export class LineBreakRenderable extends SpanRenderable {
95
99
  add(): number;
96
100
  }
package/index.js CHANGED
@@ -544,12 +544,16 @@ var {
544
544
  return;
545
545
  }
546
546
  if (isTextNodeRenderable(node)) {
547
- if (name !== "style") {
547
+ if (name === "href") {
548
+ node.link = { url: value };
549
+ return;
550
+ }
551
+ if (name === "style") {
552
+ node.attributes |= createTextAttributes(value);
553
+ node.fg = value.fg ? parseColor(value.fg) : node.fg;
554
+ node.bg = value.bg ? parseColor(value.bg) : node.bg;
548
555
  return;
549
556
  }
550
- node.attributes |= createTextAttributes(value);
551
- node.fg = value.fg ? parseColor(value.fg) : node.fg;
552
- node.bg = value.bg ? parseColor(value.bg) : node.bg;
553
557
  return;
554
558
  }
555
559
  switch (name) {
@@ -838,7 +842,7 @@ class SpanRenderable extends TextNodeRenderable3 {
838
842
  this._ctx = _ctx;
839
843
  }
840
844
  }
841
- var textNodeKeys = ["span", "b", "strong", "i", "em", "u"];
845
+ var textNodeKeys = ["span", "b", "strong", "i", "em", "u", "a"];
842
846
 
843
847
  class TextModifierRenderable extends SpanRenderable {
844
848
  constructor(options, modifier) {
@@ -881,6 +885,16 @@ class LineBreakRenderable extends SpanRenderable {
881
885
  `);
882
886
  }
883
887
  }
888
+
889
+ class LinkRenderable extends SpanRenderable {
890
+ constructor(_ctx, options) {
891
+ const linkOptions = {
892
+ ...options,
893
+ link: { url: options.href }
894
+ };
895
+ super(null, linkOptions);
896
+ }
897
+ }
884
898
  var baseComponents = {
885
899
  box: BoxRenderable,
886
900
  text: TextRenderable3,
@@ -899,7 +913,8 @@ var baseComponents = {
899
913
  em: ItalicSpanRenderable,
900
914
  i: ItalicSpanRenderable,
901
915
  u: UnderlineSpanRenderable,
902
- br: LineBreakRenderable
916
+ br: LineBreakRenderable,
917
+ a: LinkRenderable
903
918
  };
904
919
  var componentCatalogue = { ...baseComponents };
905
920
  function extend(objects) {
@@ -911,10 +926,14 @@ function getComponentCatalogue() {
911
926
 
912
927
  // index.ts
913
928
  var render = async (node, renderConfig = {}) => {
929
+ let isDisposed = false;
914
930
  const renderer = await createCliRenderer({
915
931
  ...renderConfig,
916
932
  onDestroy: () => {
917
- dispose();
933
+ if (!isDisposed) {
934
+ isDisposed = true;
935
+ dispose();
936
+ }
918
937
  renderConfig.onDestroy?.();
919
938
  }
920
939
  });
@@ -929,10 +948,14 @@ var render = async (node, renderConfig = {}) => {
929
948
  }), renderer.root);
930
949
  };
931
950
  var testRender = async (node, renderConfig = {}) => {
951
+ let isDisposed = false;
932
952
  const testSetup = await createTestRenderer({
933
953
  ...renderConfig,
934
954
  onDestroy: () => {
935
- dispose();
955
+ if (!isDisposed) {
956
+ isDisposed = true;
957
+ dispose();
958
+ }
936
959
  renderConfig.onDestroy?.();
937
960
  }
938
961
  });
@@ -982,6 +1005,7 @@ export {
982
1005
  SlotRenderable,
983
1006
  RendererContext,
984
1007
  Portal,
1008
+ LinkRenderable,
985
1009
  LineBreakRenderable,
986
1010
  LayoutSlotRenderable,
987
1011
  ItalicSpanRenderable,
package/jsx-runtime.d.ts CHANGED
@@ -5,6 +5,7 @@ import type {
5
5
  CodeProps,
6
6
  ExtendedIntrinsicElements,
7
7
  InputProps,
8
+ LinkProps,
8
9
  OpenTUIComponents,
9
10
  ScrollBoxProps,
10
11
  SelectProps,
@@ -39,6 +40,7 @@ declare namespace JSX {
39
40
  em: SpanProps
40
41
  u: SpanProps
41
42
  br: {}
43
+ a: LinkProps
42
44
  }
43
45
 
44
46
  interface ElementChildrenAttribute {
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.62",
7
+ "version": "0.1.64",
8
8
  "description": "SolidJS renderer for OpenTUI",
9
9
  "license": "MIT",
10
10
  "repository": {
@@ -31,7 +31,7 @@
31
31
  "dependencies": {
32
32
  "@babel/core": "7.28.0",
33
33
  "@babel/preset-typescript": "7.27.1",
34
- "@opentui/core": "0.1.62",
34
+ "@opentui/core": "0.1.64",
35
35
  "babel-plugin-module-resolver": "5.0.2",
36
36
  "babel-preset-solid": "1.9.9",
37
37
  "s-js": "^0.4.9"
@@ -7,7 +7,7 @@ declare class SpanRenderable extends TextNodeRenderable {
7
7
  private readonly _ctx;
8
8
  constructor(_ctx: RenderContext | null, options: TextNodeOptions);
9
9
  }
10
- export declare const textNodeKeys: readonly ["span", "b", "strong", "i", "em", "u"];
10
+ export declare const textNodeKeys: readonly ["span", "b", "strong", "i", "em", "u", "a"];
11
11
  export type TextNodeKey = (typeof textNodeKeys)[number];
12
12
  declare class TextModifierRenderable extends SpanRenderable {
13
13
  constructor(options: any, modifier?: TextNodeKey);
@@ -25,6 +25,12 @@ export declare class LineBreakRenderable extends SpanRenderable {
25
25
  constructor(_ctx: RenderContext | null, options: TextNodeOptions);
26
26
  add(): number;
27
27
  }
28
+ export interface LinkOptions extends TextNodeOptions {
29
+ href: string;
30
+ }
31
+ export declare class LinkRenderable extends SpanRenderable {
32
+ constructor(_ctx: RenderContext | null, options: LinkOptions);
33
+ }
28
34
  export declare const baseComponents: {
29
35
  box: typeof BoxRenderable;
30
36
  text: typeof TextRenderable;
@@ -44,6 +50,7 @@ export declare const baseComponents: {
44
50
  i: typeof ItalicSpanRenderable;
45
51
  u: typeof UnderlineSpanRenderable;
46
52
  br: typeof LineBreakRenderable;
53
+ a: typeof LinkRenderable;
47
54
  };
48
55
  type ComponentCatalogue = Record<string, RenderableConstructor>;
49
56
  export declare const componentCatalogue: ComponentCatalogue;
@@ -31,6 +31,9 @@ export type TextProps = ComponentProps<TextOptions, TextRenderable> & {
31
31
  export type SpanProps = ComponentProps<{}, TextNodeRenderable> & {
32
32
  children?: TextChildren | Array<TextChildren>;
33
33
  };
34
+ export type LinkProps = SpanProps & {
35
+ href: string;
36
+ };
34
37
  export type BoxProps = ComponentProps<ContainerProps<BoxOptions>, BoxRenderable>;
35
38
  export type InputProps = ComponentProps<InputRenderableOptions, InputRenderable> & {
36
39
  focused?: boolean;