@simon_he/vue-tui 1.1.5 → 1.1.7
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/README.md +1 -0
- package/dist/TAgentTerminalGraphic-B8-YZfuP.js +1198 -0
- package/dist/{TSelect-CMBOOFwK.js → TSelect-CCsjjCOr.js} +41 -12
- package/dist/{TTree-kk8ntrpg.js → TTree-3W5A2_EH.js} +4 -3
- package/dist/TVideo-D9AOiyq2.js +948 -0
- package/dist/agent.cjs +5204 -4312
- package/dist/agent.js +11 -9
- package/dist/{block-source-DhzajB9H.js → block-source-BhvdZomx.js} +246 -53
- package/dist/cli.cjs +41 -26
- package/dist/cli.js +68 -18
- package/dist/core.js +2 -2
- package/dist/experimental/browser.cjs +3705 -0
- package/dist/experimental/browser.d.cts +3 -0
- package/dist/experimental/browser.d.ts +3 -0
- package/dist/experimental/browser.js +413 -0
- package/dist/experimental.cjs +2 -1
- package/dist/experimental.js +9 -947
- package/dist/{linkify-CL9wwnZN.js → frame-mailbox-DaTrfyaF.js} +2 -297
- package/dist/index.cjs +25 -8
- package/dist/index.js +6 -5
- package/dist/linkify-CklfA1vp.js +298 -0
- package/dist/markdown.cjs +5196 -4322
- package/dist/markdown.js +4 -4
- package/dist/{mermaid-N3kGTHFy.js → mermaid-D0ov4_A1.js} +93 -9
- package/dist/mermaid.cjs +78 -7
- package/dist/mermaid.js +4 -4
- package/dist/{path-suggest-Dndu4dTi.js → path-suggest-fPzRsgPv.js} +1 -1
- package/dist/renderer/terminal-graphics.d.ts +1 -1
- package/dist/{terminal-graphics-2FTRg9x3.js → terminal-graphics-DpSL29OQ.js} +3 -3
- package/dist/{tlog-theme-B91Wv7Zj.js → tlog-theme-BnILsD3n.js} +10 -1203
- package/dist/vue/browser/types.d.ts +52 -0
- package/dist/vue/components/TAgentTerminalGraphic.d.ts +3 -0
- package/dist/vue/components/TBrowser.d.ts +231 -0
- package/dist/vue/components/TVirtualMarkdown.d.ts +10 -0
- package/dist/vue/markdown/render.d.ts +18 -1
- package/dist/vue.cjs +25 -8
- package/dist/vue.js +8 -7
- package/package.json +27 -2
- /package/dist/{TMermaidText-wLnMMvVS.js → TMermaidText-C1akgJPU.js} +0 -0
- /package/dist/{math-image-BZhmfUeu.js → math-image-CcUpBnW0.js} +0 -0
- /package/dist/{path-mnSgEpCm.js → path-BI9W15Zt.js} +0 -0
- /package/dist/{wheel-scroll-DASkEZr-.js → wheel-scroll-CQ22Hcyj.js} +0 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { TVideoFrame, TVideoFrameFormat } from "../video/types.js";
|
|
2
|
+
export type TBrowserModifiers = Readonly<{
|
|
3
|
+
ctrl: boolean;
|
|
4
|
+
shift: boolean;
|
|
5
|
+
alt: boolean;
|
|
6
|
+
meta: boolean;
|
|
7
|
+
}>;
|
|
8
|
+
export type TBrowserInputEvent = Readonly<{
|
|
9
|
+
type: "pointermove" | "pointerdown" | "pointerup";
|
|
10
|
+
x: number;
|
|
11
|
+
y: number;
|
|
12
|
+
button?: number;
|
|
13
|
+
buttons?: number;
|
|
14
|
+
modifiers: TBrowserModifiers;
|
|
15
|
+
}> | Readonly<{
|
|
16
|
+
type: "wheel";
|
|
17
|
+
x: number;
|
|
18
|
+
y: number;
|
|
19
|
+
deltaY: number;
|
|
20
|
+
modifiers: TBrowserModifiers;
|
|
21
|
+
}> | Readonly<{
|
|
22
|
+
type: "keydown" | "keyup";
|
|
23
|
+
key: string;
|
|
24
|
+
code: string;
|
|
25
|
+
repeat: boolean;
|
|
26
|
+
modifiers: TBrowserModifiers;
|
|
27
|
+
}> | Readonly<{
|
|
28
|
+
type: "text" | "paste";
|
|
29
|
+
text: string;
|
|
30
|
+
}>;
|
|
31
|
+
export type TBrowserSessionContext = Readonly<{
|
|
32
|
+
url: string;
|
|
33
|
+
signal: AbortSignal;
|
|
34
|
+
maxFps: number;
|
|
35
|
+
pixelWidth: number;
|
|
36
|
+
pixelHeight: number;
|
|
37
|
+
preferredFormat: TVideoFrameFormat;
|
|
38
|
+
onNavigate: (url: string) => void;
|
|
39
|
+
onTitleChange: (title: string) => void;
|
|
40
|
+
}>;
|
|
41
|
+
export type TBrowserSession = Readonly<{
|
|
42
|
+
frames: AsyncIterable<TVideoFrame>;
|
|
43
|
+
dispatch: (event: TBrowserInputEvent) => void | Promise<void>;
|
|
44
|
+
navigate?: (url: string) => void | Promise<void>;
|
|
45
|
+
back?: () => void | Promise<void>;
|
|
46
|
+
forward?: () => void | Promise<void>;
|
|
47
|
+
reload?: () => void | Promise<void>;
|
|
48
|
+
newPage?: () => void | Promise<void>;
|
|
49
|
+
closePage?: () => boolean | void | Promise<boolean | void>;
|
|
50
|
+
close: () => void | Promise<void>;
|
|
51
|
+
}>;
|
|
52
|
+
export type TBrowserSessionFactory = (context: TBrowserSessionContext) => TBrowserSession | Promise<TBrowserSession>;
|
|
@@ -155,6 +155,7 @@ export declare const tAgentTerminalGraphicProps: {
|
|
|
155
155
|
readonly type: NumberConstructor;
|
|
156
156
|
readonly default: 0;
|
|
157
157
|
};
|
|
158
|
+
/** Advanced Kitty-only opt-in for moving an unchanged image via a reusable placement sequence. */
|
|
158
159
|
readonly placementMoveWithoutClear: {
|
|
159
160
|
readonly type: BooleanConstructor;
|
|
160
161
|
readonly default: false;
|
|
@@ -278,6 +279,7 @@ export declare const TAgentTerminalGraphic: import("vue").DefineComponent<import
|
|
|
278
279
|
readonly type: NumberConstructor;
|
|
279
280
|
readonly default: 0;
|
|
280
281
|
};
|
|
282
|
+
/** Advanced Kitty-only opt-in for moving an unchanged image via a reusable placement sequence. */
|
|
281
283
|
readonly placementMoveWithoutClear: {
|
|
282
284
|
readonly type: BooleanConstructor;
|
|
283
285
|
readonly default: false;
|
|
@@ -401,6 +403,7 @@ export declare const TAgentTerminalGraphic: import("vue").DefineComponent<import
|
|
|
401
403
|
readonly type: NumberConstructor;
|
|
402
404
|
readonly default: 0;
|
|
403
405
|
};
|
|
406
|
+
/** Advanced Kitty-only opt-in for moving an unchanged image via a reusable placement sequence. */
|
|
404
407
|
readonly placementMoveWithoutClear: {
|
|
405
408
|
readonly type: BooleanConstructor;
|
|
406
409
|
readonly default: false;
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import type { ExtractPublicPropTypes, PropType } from "vue";
|
|
2
|
+
import type { Style } from "../../core/types.js";
|
|
3
|
+
import type { TBrowserInputEvent, TBrowserSession, TBrowserSessionFactory } from "../browser/types.js";
|
|
4
|
+
import type { TVideoFrameEvent } from "../video/types.js";
|
|
5
|
+
export declare const tBrowserProps: {
|
|
6
|
+
readonly x: {
|
|
7
|
+
readonly type: NumberConstructor;
|
|
8
|
+
readonly required: true;
|
|
9
|
+
};
|
|
10
|
+
readonly y: {
|
|
11
|
+
readonly type: NumberConstructor;
|
|
12
|
+
readonly required: true;
|
|
13
|
+
};
|
|
14
|
+
readonly w: {
|
|
15
|
+
readonly type: NumberConstructor;
|
|
16
|
+
readonly required: true;
|
|
17
|
+
};
|
|
18
|
+
readonly h: {
|
|
19
|
+
readonly type: NumberConstructor;
|
|
20
|
+
readonly required: true;
|
|
21
|
+
};
|
|
22
|
+
readonly zIndex: {
|
|
23
|
+
readonly type: NumberConstructor;
|
|
24
|
+
readonly default: 0;
|
|
25
|
+
};
|
|
26
|
+
readonly url: {
|
|
27
|
+
readonly type: StringConstructor;
|
|
28
|
+
readonly required: true;
|
|
29
|
+
};
|
|
30
|
+
readonly sessionFactory: {
|
|
31
|
+
readonly type: PropType<TBrowserSessionFactory>;
|
|
32
|
+
readonly required: true;
|
|
33
|
+
};
|
|
34
|
+
readonly autoFocus: {
|
|
35
|
+
readonly type: BooleanConstructor;
|
|
36
|
+
readonly default: false;
|
|
37
|
+
};
|
|
38
|
+
readonly maxFps: {
|
|
39
|
+
readonly type: NumberConstructor;
|
|
40
|
+
readonly default: 60;
|
|
41
|
+
};
|
|
42
|
+
readonly pixelWidth: {
|
|
43
|
+
readonly type: NumberConstructor;
|
|
44
|
+
readonly default: undefined;
|
|
45
|
+
};
|
|
46
|
+
readonly pixelHeight: {
|
|
47
|
+
readonly type: NumberConstructor;
|
|
48
|
+
readonly default: undefined;
|
|
49
|
+
};
|
|
50
|
+
readonly fallback: {
|
|
51
|
+
readonly type: StringConstructor;
|
|
52
|
+
readonly default: "[browser requires terminal graphics]";
|
|
53
|
+
};
|
|
54
|
+
readonly style: {
|
|
55
|
+
readonly type: PropType<Style>;
|
|
56
|
+
readonly default: undefined;
|
|
57
|
+
};
|
|
58
|
+
readonly clear: {
|
|
59
|
+
readonly type: BooleanConstructor;
|
|
60
|
+
readonly default: true;
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
export type TBrowserProps = ExtractPublicPropTypes<typeof tBrowserProps>;
|
|
64
|
+
export declare const TBrowser: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
65
|
+
readonly x: {
|
|
66
|
+
readonly type: NumberConstructor;
|
|
67
|
+
readonly required: true;
|
|
68
|
+
};
|
|
69
|
+
readonly y: {
|
|
70
|
+
readonly type: NumberConstructor;
|
|
71
|
+
readonly required: true;
|
|
72
|
+
};
|
|
73
|
+
readonly w: {
|
|
74
|
+
readonly type: NumberConstructor;
|
|
75
|
+
readonly required: true;
|
|
76
|
+
};
|
|
77
|
+
readonly h: {
|
|
78
|
+
readonly type: NumberConstructor;
|
|
79
|
+
readonly required: true;
|
|
80
|
+
};
|
|
81
|
+
readonly zIndex: {
|
|
82
|
+
readonly type: NumberConstructor;
|
|
83
|
+
readonly default: 0;
|
|
84
|
+
};
|
|
85
|
+
readonly url: {
|
|
86
|
+
readonly type: StringConstructor;
|
|
87
|
+
readonly required: true;
|
|
88
|
+
};
|
|
89
|
+
readonly sessionFactory: {
|
|
90
|
+
readonly type: PropType<TBrowserSessionFactory>;
|
|
91
|
+
readonly required: true;
|
|
92
|
+
};
|
|
93
|
+
readonly autoFocus: {
|
|
94
|
+
readonly type: BooleanConstructor;
|
|
95
|
+
readonly default: false;
|
|
96
|
+
};
|
|
97
|
+
readonly maxFps: {
|
|
98
|
+
readonly type: NumberConstructor;
|
|
99
|
+
readonly default: 60;
|
|
100
|
+
};
|
|
101
|
+
readonly pixelWidth: {
|
|
102
|
+
readonly type: NumberConstructor;
|
|
103
|
+
readonly default: undefined;
|
|
104
|
+
};
|
|
105
|
+
readonly pixelHeight: {
|
|
106
|
+
readonly type: NumberConstructor;
|
|
107
|
+
readonly default: undefined;
|
|
108
|
+
};
|
|
109
|
+
readonly fallback: {
|
|
110
|
+
readonly type: StringConstructor;
|
|
111
|
+
readonly default: "[browser requires terminal graphics]";
|
|
112
|
+
};
|
|
113
|
+
readonly style: {
|
|
114
|
+
readonly type: PropType<Style>;
|
|
115
|
+
readonly default: undefined;
|
|
116
|
+
};
|
|
117
|
+
readonly clear: {
|
|
118
|
+
readonly type: BooleanConstructor;
|
|
119
|
+
readonly default: true;
|
|
120
|
+
};
|
|
121
|
+
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
122
|
+
[key: string]: any;
|
|
123
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
124
|
+
ready: (_session: TBrowserSession) => true;
|
|
125
|
+
frame: (_event: TVideoFrameEvent) => true;
|
|
126
|
+
navigate: (_url: string) => true;
|
|
127
|
+
titleChange: (_title: string) => true;
|
|
128
|
+
requestAddress: () => true;
|
|
129
|
+
close: () => true;
|
|
130
|
+
error: (_error: unknown) => true;
|
|
131
|
+
}, string, (import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps), Readonly<import("vue").ExtractPropTypes<{
|
|
132
|
+
readonly x: {
|
|
133
|
+
readonly type: NumberConstructor;
|
|
134
|
+
readonly required: true;
|
|
135
|
+
};
|
|
136
|
+
readonly y: {
|
|
137
|
+
readonly type: NumberConstructor;
|
|
138
|
+
readonly required: true;
|
|
139
|
+
};
|
|
140
|
+
readonly w: {
|
|
141
|
+
readonly type: NumberConstructor;
|
|
142
|
+
readonly required: true;
|
|
143
|
+
};
|
|
144
|
+
readonly h: {
|
|
145
|
+
readonly type: NumberConstructor;
|
|
146
|
+
readonly required: true;
|
|
147
|
+
};
|
|
148
|
+
readonly zIndex: {
|
|
149
|
+
readonly type: NumberConstructor;
|
|
150
|
+
readonly default: 0;
|
|
151
|
+
};
|
|
152
|
+
readonly url: {
|
|
153
|
+
readonly type: StringConstructor;
|
|
154
|
+
readonly required: true;
|
|
155
|
+
};
|
|
156
|
+
readonly sessionFactory: {
|
|
157
|
+
readonly type: PropType<TBrowserSessionFactory>;
|
|
158
|
+
readonly required: true;
|
|
159
|
+
};
|
|
160
|
+
readonly autoFocus: {
|
|
161
|
+
readonly type: BooleanConstructor;
|
|
162
|
+
readonly default: false;
|
|
163
|
+
};
|
|
164
|
+
readonly maxFps: {
|
|
165
|
+
readonly type: NumberConstructor;
|
|
166
|
+
readonly default: 60;
|
|
167
|
+
};
|
|
168
|
+
readonly pixelWidth: {
|
|
169
|
+
readonly type: NumberConstructor;
|
|
170
|
+
readonly default: undefined;
|
|
171
|
+
};
|
|
172
|
+
readonly pixelHeight: {
|
|
173
|
+
readonly type: NumberConstructor;
|
|
174
|
+
readonly default: undefined;
|
|
175
|
+
};
|
|
176
|
+
readonly fallback: {
|
|
177
|
+
readonly type: StringConstructor;
|
|
178
|
+
readonly default: "[browser requires terminal graphics]";
|
|
179
|
+
};
|
|
180
|
+
readonly style: {
|
|
181
|
+
readonly type: PropType<Style>;
|
|
182
|
+
readonly default: undefined;
|
|
183
|
+
};
|
|
184
|
+
readonly clear: {
|
|
185
|
+
readonly type: BooleanConstructor;
|
|
186
|
+
readonly default: true;
|
|
187
|
+
};
|
|
188
|
+
}>> & Readonly<{
|
|
189
|
+
onClose?: (() => any) | undefined;
|
|
190
|
+
onError?: ((_error: unknown) => any) | undefined;
|
|
191
|
+
onFrame?: ((_event: Readonly<{
|
|
192
|
+
timestampMs: number;
|
|
193
|
+
pixelWidth: number;
|
|
194
|
+
pixelHeight: number;
|
|
195
|
+
droppedFrames: number;
|
|
196
|
+
durationMs?: number;
|
|
197
|
+
playbackRate?: import("../video/types.js").TVideoPlaybackRate;
|
|
198
|
+
}>) => any) | undefined;
|
|
199
|
+
onReady?: ((_session: Readonly<{
|
|
200
|
+
frames: AsyncIterable<import("../video/types.js").TVideoFrame>;
|
|
201
|
+
dispatch: (event: TBrowserInputEvent) => void | Promise<void>;
|
|
202
|
+
navigate?: (url: string) => void | Promise<void>;
|
|
203
|
+
back?: () => void | Promise<void>;
|
|
204
|
+
forward?: () => void | Promise<void>;
|
|
205
|
+
reload?: () => void | Promise<void>;
|
|
206
|
+
newPage?: () => void | Promise<void>;
|
|
207
|
+
closePage?: () => boolean | void | Promise<boolean | void>;
|
|
208
|
+
close: () => void | Promise<void>;
|
|
209
|
+
}>) => any) | undefined;
|
|
210
|
+
onNavigate?: ((_url: string) => any) | undefined;
|
|
211
|
+
onTitleChange?: ((_title: string) => any) | undefined;
|
|
212
|
+
onRequestAddress?: (() => any) | undefined;
|
|
213
|
+
}>, {
|
|
214
|
+
readonly style: Readonly<{
|
|
215
|
+
fg?: string;
|
|
216
|
+
bg?: string;
|
|
217
|
+
bold?: boolean;
|
|
218
|
+
dim?: boolean;
|
|
219
|
+
italic?: boolean;
|
|
220
|
+
underline?: boolean;
|
|
221
|
+
inverse?: boolean;
|
|
222
|
+
href?: string;
|
|
223
|
+
}>;
|
|
224
|
+
readonly zIndex: number;
|
|
225
|
+
readonly clear: boolean;
|
|
226
|
+
readonly fallback: string;
|
|
227
|
+
readonly autoFocus: boolean;
|
|
228
|
+
readonly maxFps: number;
|
|
229
|
+
readonly pixelWidth: number;
|
|
230
|
+
readonly pixelHeight: number;
|
|
231
|
+
}, {}>;
|
|
@@ -3,6 +3,7 @@ import type { Style } from "../../core/types.js";
|
|
|
3
3
|
import type { Rect, TerminalKeyboardEvent } from "../../events/manager/types.js";
|
|
4
4
|
import { type TuiMarkdownThemeOverrides } from "../markdown/theme.js";
|
|
5
5
|
import type { TuiMarkdownBlock, TuiMarkdownImageActionPayload, TuiMarkdownImageResolver, TuiMarkdownLinkActionPayload, TuiMarkdownMathActionPayload } from "../markdown/types.js";
|
|
6
|
+
import type { TVirtualRowsRowScrollMode } from "./TVirtualRows.js";
|
|
6
7
|
export declare const TVirtualMarkdown: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
7
8
|
x: {
|
|
8
9
|
type: NumberConstructor;
|
|
@@ -132,6 +133,10 @@ export declare const TVirtualMarkdown: import("vue").DefineComponent<import("vue
|
|
|
132
133
|
type: PropType<readonly Rect[]>;
|
|
133
134
|
default: undefined;
|
|
134
135
|
};
|
|
136
|
+
rowScrollMode: {
|
|
137
|
+
type: PropType<TVirtualRowsRowScrollMode>;
|
|
138
|
+
default: string;
|
|
139
|
+
};
|
|
135
140
|
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
136
141
|
[key: string]: any;
|
|
137
142
|
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
@@ -272,6 +277,10 @@ export declare const TVirtualMarkdown: import("vue").DefineComponent<import("vue
|
|
|
272
277
|
type: PropType<readonly Rect[]>;
|
|
273
278
|
default: undefined;
|
|
274
279
|
};
|
|
280
|
+
rowScrollMode: {
|
|
281
|
+
type: PropType<TVirtualRowsRowScrollMode>;
|
|
282
|
+
default: string;
|
|
283
|
+
};
|
|
275
284
|
}>> & Readonly<{
|
|
276
285
|
onKeydown?: ((_event: TerminalKeyboardEvent) => any) | undefined;
|
|
277
286
|
onFocus?: (() => any) | undefined;
|
|
@@ -355,6 +364,7 @@ export declare const TVirtualMarkdown: import("vue").DefineComponent<import("vue
|
|
|
355
364
|
content: string;
|
|
356
365
|
final: boolean;
|
|
357
366
|
streaming: boolean;
|
|
367
|
+
rowScrollMode: TVirtualRowsRowScrollMode;
|
|
358
368
|
scrollTop: number;
|
|
359
369
|
customHtmlTags: readonly string[];
|
|
360
370
|
theme: Readonly<Partial<{
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Style, Terminal } from "../../core/types.js";
|
|
2
2
|
import type { TuiMarkdownVisualRow } from "./types.js";
|
|
3
|
-
|
|
3
|
+
type MarkdownImageGraphic = NonNullable<TuiMarkdownVisualRow["segments"][number]["graphic"]>;
|
|
4
|
+
export declare function markdownImageGraphicId(segment: MarkdownImageGraphic, identity: string): string;
|
|
4
5
|
export declare function clearMarkdownImageGraphics(terminal: Terminal, rect?: Readonly<{
|
|
5
6
|
x: number;
|
|
6
7
|
y: number;
|
|
@@ -21,6 +22,20 @@ export declare function collectVisibleMarkdownImageGraphicIds(rows: readonly Tui
|
|
|
21
22
|
h: number;
|
|
22
23
|
}>) => boolean;
|
|
23
24
|
}>): ReadonlySet<string>;
|
|
25
|
+
export declare function queueClippedVisibleMarkdownImageGraphics(terminal: Terminal, rows: readonly TuiMarkdownVisualRow[], options: Readonly<{
|
|
26
|
+
x: number;
|
|
27
|
+
y: number;
|
|
28
|
+
w: number;
|
|
29
|
+
h: number;
|
|
30
|
+
rowOffset: number;
|
|
31
|
+
clipStart: number;
|
|
32
|
+
isGraphicCovered?: (rect: Readonly<{
|
|
33
|
+
x: number;
|
|
34
|
+
y: number;
|
|
35
|
+
w: number;
|
|
36
|
+
h: number;
|
|
37
|
+
}>) => boolean;
|
|
38
|
+
}>): ReadonlySet<string>;
|
|
24
39
|
export declare function paintMarkdownVisualRow(terminal: Terminal, row: TuiMarkdownVisualRow | undefined, options: Readonly<{
|
|
25
40
|
x: number;
|
|
26
41
|
y: number;
|
|
@@ -29,6 +44,7 @@ export declare function paintMarkdownVisualRow(terminal: Terminal, row: TuiMarkd
|
|
|
29
44
|
baseStyle: Style;
|
|
30
45
|
clear?: boolean;
|
|
31
46
|
keepGraphicIds?: ReadonlySet<string>;
|
|
47
|
+
prequeuedGraphicIds?: ReadonlySet<string>;
|
|
32
48
|
isGraphicCovered?: (rect: Readonly<{
|
|
33
49
|
x: number;
|
|
34
50
|
y: number;
|
|
@@ -36,3 +52,4 @@ export declare function paintMarkdownVisualRow(terminal: Terminal, row: TuiMarkd
|
|
|
36
52
|
h: number;
|
|
37
53
|
}>) => boolean;
|
|
38
54
|
}>): void;
|
|
55
|
+
export {};
|
package/dist/vue.cjs
CHANGED
|
@@ -4481,21 +4481,32 @@ var nextImeOwnerId = 0, nextPasteImageId = 0, TInput = (0, import_vue15.defineCo
|
|
|
4481
4481
|
let hasValue = getValue().length > 0, hasMentions = (props.mentions?.length ?? 0) > 0, hasMultiline = (props.multilineTexts?.length ?? 0) > 0;
|
|
4482
4482
|
!hasValue && !hasMentions && !hasMultiline || (anchor.value = null, hasMentions && emitMentions([]), hasMultiline && emit("update:multilineTexts", []), hasValue || cursor.value !== 0 ? (pushUndoSnapshot(""), applyEdit("", 0)) : (ensureCursorVisible(), syncImeAnchorNow(), scheduler.invalidate()));
|
|
4483
4483
|
}
|
|
4484
|
-
function
|
|
4485
|
-
let
|
|
4486
|
-
if (
|
|
4484
|
+
function deleteRangeIfAny(value, start, end) {
|
|
4485
|
+
let from = clamp2(Math.min(start, end), 0, value.length), to = clamp2(Math.max(start, end), 0, value.length);
|
|
4486
|
+
if (to <= from)
|
|
4487
4487
|
return { value, cursor: cursor.value, deleted: !1 };
|
|
4488
|
-
let tokenStart = countMultilineTokens2(value,
|
|
4488
|
+
let tokenStart = countMultilineTokens2(value, from), tokenEnd = countMultilineTokens2(value, to);
|
|
4489
4489
|
if (tokenEnd > tokenStart) {
|
|
4490
4490
|
let current = props.multilineTexts ?? [], nextMultiline = [...current.slice(0, tokenStart), ...current.slice(tokenEnd)];
|
|
4491
4491
|
emit("update:multilineTexts", nextMultiline);
|
|
4492
4492
|
}
|
|
4493
|
-
let mentionStart = countMentionTokens3(value,
|
|
4493
|
+
let mentionStart = countMentionTokens3(value, from), mentionEnd = countMentionTokens3(value, to);
|
|
4494
4494
|
if (mentionEnd > mentionStart) {
|
|
4495
4495
|
let current = pendingMentions.value ?? props.mentions ?? [], nextMentions = [...current.slice(0, mentionStart), ...current.slice(mentionEnd)];
|
|
4496
4496
|
emitMentions(nextMentions);
|
|
4497
4497
|
}
|
|
4498
|
-
return { value: value.slice(0,
|
|
4498
|
+
return { value: value.slice(0, from) + value.slice(to), cursor: from, deleted: !0 };
|
|
4499
|
+
}
|
|
4500
|
+
function deleteSelectionIfAny(value) {
|
|
4501
|
+
let sel = selection.value;
|
|
4502
|
+
return sel ? deleteRangeIfAny(value, sel.start, sel.end) : { value, cursor: cursor.value, deleted: !1 };
|
|
4503
|
+
}
|
|
4504
|
+
function deleteToLineBoundary(value, direction) {
|
|
4505
|
+
let sel = selection.value;
|
|
4506
|
+
if (sel)
|
|
4507
|
+
return deleteRangeIfAny(value, sel.start, sel.end);
|
|
4508
|
+
let { line, lines } = indexToLineCellCol(value, cursor.value), target = direction === "start" ? lines[line].start : lines[line].end;
|
|
4509
|
+
return deleteRangeIfAny(value, cursor.value, target);
|
|
4499
4510
|
}
|
|
4500
4511
|
function insertText(rawText) {
|
|
4501
4512
|
let text = rawText || "";
|
|
@@ -5051,7 +5062,13 @@ var nextImeOwnerId = 0, nextPasteImageId = 0, TInput = (0, import_vue15.defineCo
|
|
|
5051
5062
|
}
|
|
5052
5063
|
return;
|
|
5053
5064
|
}
|
|
5054
|
-
let clearWithDeleteOrBackspace = !!(!e.altKey &&
|
|
5065
|
+
let clearWithDeleteOrBackspace = !!(!e.altKey && e.ctrlKey && !e.metaKey);
|
|
5066
|
+
if (e.metaKey && !e.ctrlKey && !e.altKey && (e.key === "Backspace" || e.key === "Delete")) {
|
|
5067
|
+
e.preventDefault(), e.stopPropagation();
|
|
5068
|
+
let next = deleteToLineBoundary(value, e.key === "Backspace" ? "start" : "end");
|
|
5069
|
+
next.deleted && (pushUndoSnapshot(next.value), applyEdit(next.value, next.cursor));
|
|
5070
|
+
return;
|
|
5071
|
+
}
|
|
5055
5072
|
if (e.key === "Delete" && clearWithDeleteOrBackspace) {
|
|
5056
5073
|
e.preventDefault(), e.stopPropagation(), clearAll();
|
|
5057
5074
|
return;
|
|
@@ -5509,7 +5526,7 @@ var nextImeOwnerId = 0, nextPasteImageId = 0, TInput = (0, import_vue15.defineCo
|
|
|
5509
5526
|
}
|
|
5510
5527
|
}
|
|
5511
5528
|
})), (0, import_vue15.onBeforeUnmount)(() => {
|
|
5512
|
-
stopBlink();
|
|
5529
|
+
stopBlink(), imeAnchor?.value?.ownerId === imeOwnerId && (imeAnchor.value = null);
|
|
5513
5530
|
}), () => (0, import_vue15.h)("span", rootProps);
|
|
5514
5531
|
}
|
|
5515
5532
|
});
|
package/dist/vue.js
CHANGED
|
@@ -3,19 +3,20 @@ import "./ansi-palette-BHF1rN7R.js";
|
|
|
3
3
|
import "./hyperlink-clbb_ha_.js";
|
|
4
4
|
import "./dom-renderer-BfwAEQMf.js";
|
|
5
5
|
import { EventZIndexContextKey, LayoutContextKey, RenderStackKey, TInputPluginsContextKey, TPathPickerProviderContextKey, VisibilityContextKey, injectionKey, intersectRect, padEndByCells$1 as padEndByCells, repeatChar, sanitizeInlineText, sanitizeTextBlock, sliceByCells, sliceByCellsRange, spaces, textCellWidth$1 as textCellWidth, translateRect, useLayout, useRenderNode, useRenderStack, useTerminal, useTerminalNode, useVisibility, wrapByCells } from "./rect-JzWMJxxc.js";
|
|
6
|
-
import {
|
|
6
|
+
import { clamp, createTheme, fitCellText, linkifyTextSegments, mergeStyle, tuiDefaultTheme } from "./linkify-CklfA1vp.js";
|
|
7
7
|
import "./runtime-Byf8XXOT.js";
|
|
8
8
|
import "./frame-perf-CHpWhbC4.js";
|
|
9
9
|
import "./trace-Bh8WnoMo.js";
|
|
10
10
|
import "./env-Cl8qmNFN.js";
|
|
11
|
-
import { TAutocompleteInput, TBadge, TCheckbox, TCode, TDataTable, TDivider, TForm, TFormContextKey, TFormField, TLink, TLinkifyText, TList, TPasswordInput, TProgress, TRadioGroup, TSlider, TSpinner, TSwitch, TTable, TTag, TToastViewport, TTree, TerminalProvider, createTInputHostPlugin, useTForm } from "./TTree-
|
|
11
|
+
import { TAutocompleteInput, TBadge, TCheckbox, TCode, TDataTable, TDivider, TForm, TFormContextKey, TFormField, TLink, TLinkifyText, TList, TPasswordInput, TProgress, TRadioGroup, TSlider, TSpinner, TSwitch, TTable, TTag, TToastViewport, TTree, TerminalProvider, createTInputHostPlugin, useTForm } from "./TTree-3W5A2_EH.js";
|
|
12
12
|
import "./terminal-selection-4W1SJj4c.js";
|
|
13
13
|
import "./debug-logger-CmsGI4of.js";
|
|
14
|
-
import { TBox, TCommandPalette, TDialog, TInput, TRenderPlane, TSelect, clamp$1, computeCommandPaletteMatchRanges, createOverlayFocusStack, isCommitMention, isWhitespace, mentionChipStyle, padEndByCells as padEndByCells$1, resolveOverlayPlacement, sliceByCellsWindow, textCellWidth as textCellWidth$1 } from "./TSelect-
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
14
|
+
import { TBox, TCommandPalette, TDialog, TInput, TRenderPlane, TSelect, clamp$1, computeCommandPaletteMatchRanges, createOverlayFocusStack, isCommitMention, isWhitespace, mentionChipStyle, padEndByCells as padEndByCells$1, resolveOverlayPlacement, sliceByCellsWindow, textCellWidth as textCellWidth$1 } from "./TSelect-CCsjjCOr.js";
|
|
15
|
+
import { TText, TView } from "./frame-mailbox-DaTrfyaF.js";
|
|
16
|
+
import { normalizePath, stripTrailingSlash } from "./path-BI9W15Zt.js";
|
|
17
|
+
import { applyWheelScroll, createWheelScrollState } from "./wheel-scroll-CQ22Hcyj.js";
|
|
18
|
+
import { parsePathQuery, resolveUserPath, suggestPaths } from "./path-suggest-fPzRsgPv.js";
|
|
19
|
+
import { TMermaid$1 as TMermaid, TMermaidText$1 as TMermaidText, isSimpleMermaidFlowchartSource, markMermaidRenderErrorFatal } from "./TMermaidText-C1akgJPU.js";
|
|
19
20
|
import { Comment, Fragment, computed, defineComponent, h, inject, onBeforeUnmount, onMounted, onUnmounted, provide, reactive, ref, shallowReactive, shallowRef, watch, watchEffect } from "vue";
|
|
20
21
|
|
|
21
22
|
//#region src/observability/cli-latency.ts
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simon_he/vue-tui",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.7",
|
|
4
4
|
"description": "Vue 3 terminal UI components and renderers for browser DOM, CLI stdout, logs, markdown transcripts, and agent consoles",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent-console",
|
|
@@ -85,6 +85,9 @@
|
|
|
85
85
|
"experimental": [
|
|
86
86
|
"./dist/experimental.d.ts"
|
|
87
87
|
],
|
|
88
|
+
"experimental/browser": [
|
|
89
|
+
"./dist/experimental/browser.d.ts"
|
|
90
|
+
],
|
|
88
91
|
"experimental/video/node": [
|
|
89
92
|
"./dist/experimental/video/node.d.ts"
|
|
90
93
|
],
|
|
@@ -190,6 +193,16 @@
|
|
|
190
193
|
"default": "./dist/experimental.cjs"
|
|
191
194
|
}
|
|
192
195
|
},
|
|
196
|
+
"./experimental/browser": {
|
|
197
|
+
"import": {
|
|
198
|
+
"types": "./dist/experimental/browser.d.ts",
|
|
199
|
+
"default": "./dist/experimental/browser.js"
|
|
200
|
+
},
|
|
201
|
+
"require": {
|
|
202
|
+
"types": "./dist/experimental/browser.d.cts",
|
|
203
|
+
"default": "./dist/experimental/browser.cjs"
|
|
204
|
+
}
|
|
205
|
+
},
|
|
193
206
|
"./experimental/video/node": {
|
|
194
207
|
"import": {
|
|
195
208
|
"types": "./dist/experimental/video/node.d.ts",
|
|
@@ -246,7 +259,7 @@
|
|
|
246
259
|
"access": "public"
|
|
247
260
|
},
|
|
248
261
|
"dependencies": {
|
|
249
|
-
"stream-markdown-parser": "1.2.
|
|
262
|
+
"stream-markdown-parser": "1.2.12"
|
|
250
263
|
},
|
|
251
264
|
"devDependencies": {
|
|
252
265
|
"@arethetypeswrong/core": "^0.18.5",
|
|
@@ -346,6 +359,17 @@
|
|
|
346
359
|
"example:3d:smoke": "VT_SMOKE=1 bun examples/t3d-terminal-badge.ts",
|
|
347
360
|
"run:flappy:terminal": "tsx examples/flappy-bird-terminal.ts",
|
|
348
361
|
"example:flappy:smoke": "VT_SMOKE=1 tsx examples/flappy-bird-terminal.ts",
|
|
362
|
+
"run:contra:terminal": "tsx examples/contra-graphics-terminal.ts",
|
|
363
|
+
"example:contra:smoke": "VT_SMOKE=1 tsx examples/contra-graphics-terminal.ts",
|
|
364
|
+
"run:contra-text:terminal": "tsx examples/contra-terminal.ts",
|
|
365
|
+
"example:contra-text:smoke": "VT_SMOKE=1 tsx examples/contra-terminal.ts",
|
|
366
|
+
"run:nes:terminal": "tsx examples/nes-terminal.ts",
|
|
367
|
+
"run:browser:terminal": "tsx examples/browser-component-demo.ts",
|
|
368
|
+
"example:nes:smoke": "VT_SMOKE=1 tsx examples/nes-terminal.ts",
|
|
369
|
+
"check:nes:rom": "tsx examples/nes/check-rom.ts",
|
|
370
|
+
"check:nes:input": "tsx examples/nes/input-flip-check.ts",
|
|
371
|
+
"check:nes:share": "tsx examples/nes/share-check.ts",
|
|
372
|
+
"check:nes:share-browser": "tsx examples/nes/share-browser-check.ts",
|
|
349
373
|
"test:3d:bun": "bun scripts/smoke-bun-3d.ts",
|
|
350
374
|
"run:image-showcase:terminal": "tsx examples/image-showcase.ts",
|
|
351
375
|
"run:katex-showcase:terminal": "tsx examples/katex-showcase.ts",
|
|
@@ -413,6 +437,7 @@
|
|
|
413
437
|
"bench:baseline:timing": "BENCH_TIMING=1 tsx scripts/check-bench-baselines.ts",
|
|
414
438
|
"bench:phase2": "tsx scripts/bench-phase2.ts",
|
|
415
439
|
"bench:scroll-mailbox": "tsx scripts/bench-scroll-mailbox.ts",
|
|
440
|
+
"bench:markdown-graphics": "tsx scripts/bench-markdown-graphics.ts",
|
|
416
441
|
"bench:stdout-column-diff": "tsx scripts/bench-stdout-column-diff.ts",
|
|
417
442
|
"unicode:eaw:generate": "tsx scripts/generate-eaw-ranges.ts",
|
|
418
443
|
"unicode:eaw:check": "tsx scripts/generate-eaw-ranges.ts && git diff --exit-code -- src/core/buffer/eaw-ranges-unicode-17.ts",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|