@zaly/tui 0.2.0 → 0.3.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/README.md +3 -0
- package/dist/{actions-B0yyZ-Ww.d.mts → actions-CH6ndYvf.d.mts} +4 -4
- package/dist/{actions-B0yyZ-Ww.d.mts.map → actions-CH6ndYvf.d.mts.map} +1 -1
- package/dist/{ansi-CxgRPLA2.mjs → ansi-oiRnTQr9.mjs} +11 -2
- package/dist/ansi-oiRnTQr9.mjs.map +1 -0
- package/dist/ansi.d.mts +2 -0
- package/dist/ansi.d.mts.map +1 -1
- package/dist/ansi.mjs +1 -1
- package/dist/{autocomplete-wgceuhLr.d.mts → autocomplete-ZmzqQZNq.d.mts} +4 -4
- package/dist/{autocomplete-wgceuhLr.d.mts.map → autocomplete-ZmzqQZNq.d.mts.map} +1 -1
- package/dist/{box-DbIjxh39.mjs → box-BOJcFW8f.mjs} +4 -4
- package/dist/{box-DbIjxh39.mjs.map → box-BOJcFW8f.mjs.map} +1 -1
- package/dist/{builder-BdYlK1Ew.mjs → builder-D8Sx5N8a.mjs} +3 -3
- package/dist/{builder-BdYlK1Ew.mjs.map → builder-D8Sx5N8a.mjs.map} +1 -1
- package/dist/{callbacks-UaBfDStQ.mjs → callbacks-CruJEvm8.mjs} +12 -4
- package/dist/{callbacks-UaBfDStQ.mjs.map → callbacks-CruJEvm8.mjs.map} +1 -1
- package/dist/client-C7iR8kp-.mjs +1 -0
- package/dist/{client-BWm6dNZF.mjs → client-DsNEilJG.mjs} +1 -3
- package/dist/client-DsNEilJG.mjs.map +1 -0
- package/dist/{clipboard-UEoX9sup.mjs → clipboard-wzJ1EVfy.mjs} +2 -2
- package/dist/{clipboard-UEoX9sup.mjs.map → clipboard-wzJ1EVfy.mjs.map} +1 -1
- package/dist/clipboard.mjs +1 -1
- package/dist/ctx-CM0YMy26.mjs +1 -0
- package/dist/{ctx-DBeFcZt6.mjs → ctx-D_rMOcp5.mjs} +2 -2
- package/dist/{ctx-DBeFcZt6.mjs.map → ctx-D_rMOcp5.mjs.map} +1 -1
- package/dist/{divider-BPmnQ0Eu.mjs → divider-CiNpoiuP.mjs} +2 -2
- package/dist/{divider-BPmnQ0Eu.mjs.map → divider-CiNpoiuP.mjs.map} +1 -1
- package/dist/{files-CdiDnwA_.d.mts → files-82Il_nUh.d.mts} +3 -3
- package/dist/{files-CdiDnwA_.d.mts.map → files-82Il_nUh.d.mts.map} +1 -1
- package/dist/{github-DC0XemKa.d.mts → github-yVfk9BE4.d.mts} +3 -3
- package/dist/{github-DC0XemKa.d.mts.map → github-yVfk9BE4.d.mts.map} +1 -1
- package/dist/{image-M--Bw4bs.mjs → image--PBiHfwV.mjs} +2 -2
- package/dist/{image-M--Bw4bs.mjs.map → image--PBiHfwV.mjs.map} +1 -1
- package/dist/{image-DdRDv7q6.d.mts → image-CO6YJj6F.d.mts} +2 -2
- package/dist/{image-DdRDv7q6.d.mts.map → image-CO6YJj6F.d.mts.map} +1 -1
- package/dist/image.d.mts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +6 -6
- package/dist/{input-CtGmVrKa.mjs → input-5ktO2fvO.mjs} +4 -4
- package/dist/{input-CtGmVrKa.mjs.map → input-5ktO2fvO.mjs.map} +1 -1
- package/dist/{input-C3kfYoEJ.d.mts → input-C8MEpAg6.d.mts} +2 -2
- package/dist/{input-C3kfYoEJ.d.mts.map → input-C8MEpAg6.d.mts.map} +1 -1
- package/dist/{inspect-Cli1beu8.mjs → inspect-CxtcQch-.mjs} +2 -2
- package/dist/{inspect-Cli1beu8.mjs.map → inspect-CxtcQch-.mjs.map} +1 -1
- package/dist/{log-D6gGicwQ.mjs → log-D7PTmOzE.mjs} +8 -5
- package/dist/log-D7PTmOzE.mjs.map +1 -0
- package/dist/{logger-C0WuIlAh.mjs → logger-DXK8D8Vb.mjs} +3 -3
- package/dist/{logger-C0WuIlAh.mjs.map → logger-DXK8D8Vb.mjs.map} +1 -1
- package/dist/{markdown-DvDIPT5L.mjs → markdown-D6quhsm0.mjs} +10 -9
- package/dist/markdown-D6quhsm0.mjs.map +1 -0
- package/dist/markdown.d.mts +3 -1
- package/dist/markdown.d.mts.map +1 -1
- package/dist/markdown.mjs +1 -1
- package/dist/{overlay-zDNpwKu0.mjs → overlay-6kh2gG4K.mjs} +2 -2
- package/dist/{overlay-zDNpwKu0.mjs.map → overlay-6kh2gG4K.mjs.map} +1 -1
- package/dist/{picker-DV_oxKEv.mjs → picker-B3XS2HKe.mjs} +4 -4
- package/dist/{picker-DV_oxKEv.mjs.map → picker-B3XS2HKe.mjs.map} +1 -1
- package/dist/{picker-DsB6--GN.d.mts → picker-H_ubc2nk.d.mts} +5 -5
- package/dist/{picker-DsB6--GN.d.mts.map → picker-H_ubc2nk.d.mts.map} +1 -1
- package/dist/{queries-Dmd3IjSd.d.mts → queries-BqFMpQAf.d.mts} +3 -1
- package/dist/queries-BqFMpQAf.d.mts.map +1 -0
- package/dist/{render-Bp2N2i6J.mjs → render-bm-x85jl.mjs} +2 -2
- package/dist/{render-Bp2N2i6J.mjs.map → render-bm-x85jl.mjs.map} +1 -1
- package/dist/{renderer-OplFCBMq.mjs → renderer-Cc8-s72G.mjs} +9 -9
- package/dist/{renderer-OplFCBMq.mjs.map → renderer-Cc8-s72G.mjs.map} +1 -1
- package/dist/renderer-DJg8vAoQ.mjs +1 -0
- package/dist/{renderer-Ksfkfv5X.mjs → renderer-D_n6LCWd.mjs} +2 -2
- package/dist/renderer-D_n6LCWd.mjs.map +1 -0
- package/dist/{select-BZCFXdjp.d.mts → select-BeP7rFkP.d.mts} +2 -2
- package/dist/{select-BZCFXdjp.d.mts.map → select-BeP7rFkP.d.mts.map} +1 -1
- package/dist/{select-CUmAFKJh.mjs → select-BlsSDBlV.mjs} +2 -2
- package/dist/{select-CUmAFKJh.mjs.map → select-BlsSDBlV.mjs.map} +1 -1
- package/dist/services/logger.d.mts +1 -1
- package/dist/services/logger.mjs +1 -1
- package/dist/services/notifier.d.mts +1 -1
- package/dist/services/notifier.mjs +2 -2
- package/dist/services/picker.d.mts +5 -5
- package/dist/services/picker.mjs +6 -6
- package/dist/services/prompt.d.mts +4 -4
- package/dist/services/prompt.mjs +5 -5
- package/dist/shiki/server.mjs +2 -2
- package/dist/{shiki-BAf9PdIc.mjs → shiki-CUJQssUJ.mjs} +2 -2
- package/dist/{shiki-BAf9PdIc.mjs.map → shiki-CUJQssUJ.mjs.map} +1 -1
- package/dist/{show-D5XNXgZf.mjs → show-BfIUw8A1.mjs} +2 -2
- package/dist/{show-D5XNXgZf.mjs.map → show-BfIUw8A1.mjs.map} +1 -1
- package/dist/{style-Cw_EuszU.mjs → style-DTwmlkfR.mjs} +2 -2
- package/dist/{style-Cw_EuszU.mjs.map → style-DTwmlkfR.mjs.map} +1 -1
- package/dist/style.d.mts +1 -1
- package/dist/style.mjs +2 -2
- package/dist/{text-H_2kzwaz.mjs → text-BKLHPMsQ.mjs} +3 -3
- package/dist/{text-H_2kzwaz.mjs.map → text-BKLHPMsQ.mjs.map} +1 -1
- package/dist/{text-BEuhhxr7.mjs → text-BLQXIh6Z.mjs} +2 -2
- package/dist/{text-BEuhhxr7.mjs.map → text-BLQXIh6Z.mjs.map} +1 -1
- package/dist/{text-DdkJXgoC.d.mts → text-BnlU1Q9y.d.mts} +2 -2
- package/dist/{text-DdkJXgoC.d.mts.map → text-BnlU1Q9y.d.mts.map} +1 -1
- package/dist/text.d.mts +1 -1
- package/dist/text.mjs +1 -1
- package/dist/{theme-B8hb1lPU.mjs → theme-CG51x7aG.mjs} +2 -2
- package/dist/{theme-B8hb1lPU.mjs.map → theme-CG51x7aG.mjs.map} +1 -1
- package/dist/{tree-D6NvMQx8.mjs → tree-4aaQKFtF.mjs} +2 -2
- package/dist/{tree-D6NvMQx8.mjs.map → tree-4aaQKFtF.mjs.map} +1 -1
- package/dist/{tree-Berzv8Rz.d.mts → tree-DNAE_C7w.d.mts} +3 -3
- package/dist/{tree-Berzv8Rz.d.mts.map → tree-DNAE_C7w.d.mts.map} +1 -1
- package/dist/{widget-sPJaKVU2.d.mts → widget-CHWHCg1j.d.mts} +2 -2
- package/dist/{widget-sPJaKVU2.d.mts.map → widget-CHWHCg1j.d.mts.map} +1 -1
- package/dist/widgets/autocomplete.d.mts +1 -1
- package/dist/widgets/autocomplete.mjs +3 -3
- package/dist/widgets/box.d.mts +1 -1
- package/dist/widgets/box.mjs +1 -1
- package/dist/widgets/code.d.mts +2 -2
- package/dist/widgets/code.mjs +7 -7
- package/dist/widgets/completions/actions.d.mts +1 -1
- package/dist/widgets/completions/files.d.mts +1 -1
- package/dist/widgets/completions/github.d.mts +1 -1
- package/dist/widgets/completions/index.d.mts +3 -3
- package/dist/widgets/diff.d.mts +2 -2
- package/dist/widgets/diff.mjs +5 -5
- package/dist/widgets/divider.d.mts +1 -1
- package/dist/widgets/divider.mjs +1 -1
- package/dist/widgets/image.d.mts +1 -1
- package/dist/widgets/image.mjs +2 -2
- package/dist/widgets/input.d.mts +1 -1
- package/dist/widgets/input.mjs +1 -1
- package/dist/widgets/log.d.mts +1 -1
- package/dist/widgets/log.mjs +1 -1
- package/dist/widgets/markdown.d.mts +6 -4
- package/dist/widgets/markdown.d.mts.map +1 -1
- package/dist/widgets/markdown.mjs +1 -1
- package/dist/widgets/overlay.d.mts +1 -1
- package/dist/widgets/overlay.mjs +1 -1
- package/dist/widgets/picker.d.mts +1 -1
- package/dist/widgets/picker.mjs +1 -1
- package/dist/widgets/progress.d.mts +1 -1
- package/dist/widgets/progress.mjs +1 -1
- package/dist/widgets/select.d.mts +1 -1
- package/dist/widgets/select.mjs +1 -1
- package/dist/widgets/show.d.mts +1 -1
- package/dist/widgets/show.mjs +1 -1
- package/dist/widgets/spinner.d.mts +1 -1
- package/dist/widgets/spinner.mjs +1 -1
- package/dist/widgets/text.d.mts +1 -1
- package/dist/widgets/text.mjs +1 -1
- package/dist/widgets/tree.d.mts +1 -1
- package/dist/widgets/tree.mjs +1 -1
- package/dist/widgets/widget.d.mts +1 -1
- package/package.json +6 -6
- package/dist/ansi-CxgRPLA2.mjs.map +0 -1
- package/dist/client-BWm6dNZF.mjs.map +0 -1
- package/dist/client-C69qWhMG.mjs +0 -1
- package/dist/ctx-CYEzzH-7.mjs +0 -1
- package/dist/log-D6gGicwQ.mjs.map +0 -1
- package/dist/markdown-DvDIPT5L.mjs.map +0 -1
- package/dist/queries-Dmd3IjSd.d.mts.map +0 -1
- package/dist/renderer-Dv5fIuIk.mjs +0 -1
- package/dist/renderer-Ksfkfv5X.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-
|
|
1
|
+
{"version":3,"file":"tree-DNAE_C7w.d.mts","names":[],"sources":["../src/widgets/tree.ts"],"mappings":";;KAQY,SAAS,UAAU,SAAS,UAAU;EAChD,WAAW,SAAS;EACpB;;KAGU,UAAU,UAAU,WAAW,YAAY,KAAK,YAAY;EACtE,MAAM,SAAS;;EAEf;EACA,SAAS,MAAM,MAAM;;KAUX,SAAS,UAAU;EAC7B;EACA,SAAS;;cA0BE,OACV,UAAU,UAAQ,OAAS,UAAU,OAAK,OAAO;EAAO,OAAO,SAAS"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { h as Node } from "./queries-
|
|
1
|
+
import { h as Node } from "./queries-BqFMpQAf.mjs";
|
|
2
2
|
type Props = Record<string, unknown>;
|
|
3
3
|
/**
|
|
4
4
|
* A widget factory: takes some args, returns a `Node`.
|
|
@@ -44,4 +44,4 @@ type Widget<A extends unknown[] = never[], N extends Node = Node> = (...args: A)
|
|
|
44
44
|
*/
|
|
45
45
|
declare function widget<T extends Widget>(fn: T): T;
|
|
46
46
|
export { Widget as n, widget as r, Props as t };
|
|
47
|
-
//# sourceMappingURL=widget-
|
|
47
|
+
//# sourceMappingURL=widget-CHWHCg1j.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget-
|
|
1
|
+
{"version":3,"file":"widget-CHWHCg1j.d.mts","names":[],"sources":["../src/widgets/widget.ts"],"mappings":";KAIY,QAAQ;;;;;;;;;;;KAYR,OAAO,+BAA+B,UAAU,OAAO,YAAY,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkC3E,OAAO,UAAU,QAAQ,IAAI,IAAI"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as AutocompleteState, i as AutocompleteOptions, n as Autocomplete, o as CompletionSource, r as AutocompleteEvents, s as autocomplete, t as AcceptFn } from "../autocomplete-
|
|
1
|
+
import { a as AutocompleteState, i as AutocompleteOptions, n as Autocomplete, o as CompletionSource, r as AutocompleteEvents, s as autocomplete, t as AcceptFn } from "../autocomplete-ZmzqQZNq.mjs";
|
|
2
2
|
export { AcceptFn, Autocomplete, AutocompleteEvents, AutocompleteOptions, AutocompleteState, CompletionSource, autocomplete };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { S as unwrap, f as effect, h as memo, y as signal } from "../reactive-DkP75TPk.mjs";
|
|
2
1
|
import { t as Node } from "../node-CXNobGaP.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import { t as Input } from "../input-
|
|
2
|
+
import { S as unwrap, f as effect, h as memo, y as signal } from "../reactive-DkP75TPk.mjs";
|
|
3
|
+
import { t as Input } from "../input-5ktO2fvO.mjs";
|
|
4
|
+
import { t as picker } from "../picker-B3XS2HKe.mjs";
|
|
5
5
|
// src/widgets/autocomplete.ts
|
|
6
6
|
/**
|
|
7
7
|
* Autocomplete popup bound to an `Input`. Watches the input's value and
|
package/dist/widgets/box.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { B as Box, H as Padding, U as box, V as BoxStyle } from "../queries-
|
|
1
|
+
import { B as Box, H as Padding, U as box, V as BoxStyle } from "../queries-BqFMpQAf.mjs";
|
|
2
2
|
export { Box, BoxStyle, Padding, box };
|
package/dist/widgets/box.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as Box, n as box } from "../box-
|
|
1
|
+
export { t as Box, n as box } from "../box-BOJcFW8f.mjs";
|
package/dist/widgets/code.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { B as Box, Q as State, it as Reactive } from "../queries-BqFMpQAf.mjs";
|
|
2
|
+
import { t as WrapMode } from "../text-BnlU1Q9y.mjs";
|
|
1
3
|
import { i as AnyStyle } from "../types-ByMHEdCF.mjs";
|
|
2
|
-
import { B as Box, Q as State, it as Reactive } from "../queries-Dmd3IjSd.mjs";
|
|
3
|
-
import { t as WrapMode } from "../text-DdkJXgoC.mjs";
|
|
4
4
|
export interface CodeState {
|
|
5
5
|
/** Source to render. Plain string or reactive accessor — pass a
|
|
6
6
|
* signal for streaming bash output / tool results. */
|
package/dist/widgets/code.mjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { S as unwrap, h as memo, r as createAsync, w as useContext } from "../reactive-DkP75TPk.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import { a as formatLines } from "../text-
|
|
4
|
-
import {
|
|
5
|
-
import { t as
|
|
6
|
-
import {
|
|
7
|
-
import { t as
|
|
2
|
+
import { t as RenderContext } from "../render-bm-x85jl.mjs";
|
|
3
|
+
import { a as formatLines } from "../text-BLQXIh6Z.mjs";
|
|
4
|
+
import { t as codeToAnsi } from "../shiki-CUJQssUJ.mjs";
|
|
5
|
+
import { t as shikiTheme } from "../theme-CG51x7aG.mjs";
|
|
6
|
+
import { n as box } from "../box-BOJcFW8f.mjs";
|
|
7
|
+
import { t as show } from "../show-BfIUw8A1.mjs";
|
|
8
|
+
import { n as text } from "../text-BKLHPMsQ.mjs";
|
|
8
9
|
import { t as widget } from "../widget-sFveyrZE.mjs";
|
|
9
|
-
import { t as show } from "../show-D5XNXgZf.mjs";
|
|
10
10
|
import { extname } from "pathe";
|
|
11
11
|
// src/widgets/code.ts
|
|
12
12
|
/**
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as ActionsSourceOptions, r as actionsSource, t as ActionCompletionItem } from "../../actions-
|
|
1
|
+
import { n as ActionsSourceOptions, r as actionsSource, t as ActionCompletionItem } from "../../actions-CH6ndYvf.mjs";
|
|
2
2
|
export { ActionCompletionItem, ActionsSourceOptions, actionsSource };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as filesSource, t as FilesSourceOptions } from "../../files-
|
|
1
|
+
import { n as filesSource, t as FilesSourceOptions } from "../../files-82Il_nUh.mjs";
|
|
2
2
|
export { FilesSourceOptions, filesSource };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as githubSource, i as GithubState, n as GithubItem, r as GithubSourceOptions, t as GithubFetcher } from "../../github-
|
|
1
|
+
import { a as githubSource, i as GithubState, n as GithubItem, r as GithubSourceOptions, t as GithubFetcher } from "../../github-yVfk9BE4.mjs";
|
|
2
2
|
export { GithubFetcher, GithubItem, GithubSourceOptions, GithubState, githubSource };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as ActionsSourceOptions, r as actionsSource, t as ActionCompletionItem } from "../../actions-
|
|
2
|
-
import { n as filesSource, t as FilesSourceOptions } from "../../files-
|
|
3
|
-
import { a as githubSource, i as GithubState, n as GithubItem, r as GithubSourceOptions, t as GithubFetcher } from "../../github-
|
|
1
|
+
import { n as ActionsSourceOptions, r as actionsSource, t as ActionCompletionItem } from "../../actions-CH6ndYvf.mjs";
|
|
2
|
+
import { n as filesSource, t as FilesSourceOptions } from "../../files-82Il_nUh.mjs";
|
|
3
|
+
import { a as githubSource, i as GithubState, n as GithubItem, r as GithubSourceOptions, t as GithubFetcher } from "../../github-yVfk9BE4.mjs";
|
|
4
4
|
export { ActionCompletionItem, ActionsSourceOptions, FilesSourceOptions, GithubFetcher, GithubItem, GithubSourceOptions, GithubState, actionsSource, filesSource, githubSource };
|
package/dist/widgets/diff.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { I as RenderCtx, Q as State, X as Layout, h as Node, it as Reactive } from "../queries-
|
|
2
|
-
import { t as WrapMode } from "../text-
|
|
1
|
+
import { I as RenderCtx, Q as State, X as Layout, h as Node, it as Reactive } from "../queries-BqFMpQAf.mjs";
|
|
2
|
+
import { t as WrapMode } from "../text-BnlU1Q9y.mjs";
|
|
3
3
|
export interface DiffState {
|
|
4
4
|
/** Pre-state file content. Plain string or reactive accessor —
|
|
5
5
|
* pass a signal to live-update the diff as either side changes. */
|
package/dist/widgets/diff.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { S as unwrap, h as memo, r as createAsync, w as useContext } from "../reactive-DkP75TPk.mjs";
|
|
2
1
|
import { t as Node } from "../node-CXNobGaP.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import { t as RenderContext } from "../render-
|
|
5
|
-
import { t as
|
|
6
|
-
import { t as
|
|
2
|
+
import { S as unwrap, h as memo, r as createAsync, w as useContext } from "../reactive-DkP75TPk.mjs";
|
|
3
|
+
import { t as RenderContext } from "../render-bm-x85jl.mjs";
|
|
4
|
+
import { i as expandTabs, t as calcLayout } from "../text-BLQXIh6Z.mjs";
|
|
5
|
+
import { t as codeToAnsi } from "../shiki-CUJQssUJ.mjs";
|
|
6
|
+
import { t as shikiTheme } from "../theme-CG51x7aG.mjs";
|
|
7
7
|
import { splitAnsi, stringWidth, wrapAnsi } from "@zaly/shared/ansi";
|
|
8
8
|
import { basename, extname } from "pathe";
|
|
9
9
|
// src/widgets/diff.ts
|
package/dist/widgets/divider.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as divider } from "../divider-
|
|
1
|
+
export { t as divider } from "../divider-CiNpoiuP.mjs";
|
package/dist/widgets/image.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as ImageState, r as image, t as Image } from "../image-
|
|
1
|
+
import { n as ImageState, r as image, t as Image } from "../image-CO6YJj6F.mjs";
|
|
2
2
|
export { Image, ImageState, image };
|
package/dist/widgets/image.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { S as unwrap, w as useContext } from "../reactive-DkP75TPk.mjs";
|
|
2
1
|
import { t as Node } from "../node-CXNobGaP.mjs";
|
|
3
|
-
import {
|
|
2
|
+
import { S as unwrap, w as useContext } from "../reactive-DkP75TPk.mjs";
|
|
3
|
+
import { t as RenderContext } from "../render-bm-x85jl.mjs";
|
|
4
4
|
import { s as loadKittyGraphics } from "../kitty-BH_eK6lz.mjs";
|
|
5
5
|
import { fileDetect } from "@zaly/shared/detect";
|
|
6
6
|
import { imageInfo } from "@zaly/shared/image";
|
package/dist/widgets/input.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as InputValue, i as InputState, n as InputAttachment, o as input, r as InputEvents, t as Input } from "../input-
|
|
1
|
+
import { a as InputValue, i as InputState, n as InputAttachment, o as input, r as InputEvents, t as Input } from "../input-C8MEpAg6.mjs";
|
|
2
2
|
export { Input, InputAttachment, InputEvents, InputState, InputValue, input };
|
package/dist/widgets/input.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as Input, n as input } from "../input-
|
|
1
|
+
export { t as Input, n as input } from "../input-5ktO2fvO.mjs";
|
package/dist/widgets/log.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { M as LogState, N as LogStyle, P as log } from "../queries-
|
|
1
|
+
import { M as LogState, N as LogStyle, P as log } from "../queries-BqFMpQAf.mjs";
|
|
2
2
|
export { LogState, LogStyle, log };
|
package/dist/widgets/log.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as log } from "../log-
|
|
1
|
+
export { t as log } from "../log-D7PTmOzE.mjs";
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { t as WrapMode } from "../text-DdkJXgoC.mjs";
|
|
1
|
+
import { G as TextContent, I as RenderCtx, Q as State, X as Layout, h as Node, it as Reactive } from "../queries-BqFMpQAf.mjs";
|
|
2
|
+
import { t as WrapMode } from "../text-BnlU1Q9y.mjs";
|
|
4
3
|
import { n as MdOptions } from "../types-CUVUJPz6.mjs";
|
|
5
|
-
import {
|
|
4
|
+
import { i as AnyStyle } from "../types-ByMHEdCF.mjs";
|
|
5
|
+
import { t as Image } from "../image-CO6YJj6F.mjs";
|
|
6
6
|
export interface MarkdownState {
|
|
7
7
|
/** Markdown source. Accepts a plain string or a reactive accessor —
|
|
8
8
|
* pass `signal()` / `memo()` for streaming content that re-parses on
|
|
9
9
|
* each render and subscribes the node to the signal. */
|
|
10
10
|
content: TextContent;
|
|
11
|
+
/** Base directory for relative file links. Defaults to process.cwd(). */
|
|
12
|
+
cwd?: Reactive<string>;
|
|
11
13
|
/** Options forwarded to `renderMarkdown`. */
|
|
12
14
|
options?: MdOptions;
|
|
13
15
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.d.mts","names":["_$___core_state_ts0.Layout"],"sources":["../../src/widgets/markdown.ts"],"mappings":";;;;;iBAqBiB;;;;EAIf,SAAS;;EAET,UAAU;;;;;;;EAOV;EACA,OAAO;EACP,QAAQ;;qBAcG,iBAAiB,KAAK;;WAKxB,QAAM,YAAA;EASf,YAAY,OAAO,MAAM;YAwDT,QAAQ,KAAK,YAAY;
|
|
1
|
+
{"version":3,"file":"markdown.d.mts","names":["_$___core_state_ts0.Layout"],"sources":["../../src/widgets/markdown.ts"],"mappings":";;;;;iBAqBiB;;;;EAIf,SAAS;;EAET,MAAM;;EAEN,UAAU;;;;;;;EAOV;EACA,OAAO;EACP,QAAQ;;qBAcG,iBAAiB,KAAK;;WAKxB,QAAM,YAAA;EASf,YAAY,OAAO,MAAM;YAwDT,QAAQ,KAAK,YAAY;EA2C1B,OAAO,KAAK,YAAS,QAATA;;;;;;;;;;;;wBAeb,SACd,SAAS,aACT,QAAQ,KAAK,MAAM,6BAClB;wBACa,SAAS,OAAO,MAAM,iBAAiB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as Markdown, n as markdown } from "../markdown-
|
|
1
|
+
export { t as Markdown, n as markdown } from "../markdown-D6quhsm0.mjs";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { L as Overlay, R as OverlayState, z as overlay } from "../queries-
|
|
1
|
+
import { L as Overlay, R as OverlayState, z as overlay } from "../queries-BqFMpQAf.mjs";
|
|
2
2
|
export { Overlay, OverlayState, overlay };
|
package/dist/widgets/overlay.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as overlay } from "../overlay-
|
|
1
|
+
export { t as overlay } from "../overlay-6kh2gG4K.mjs";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as picker, i as PickerTreeProps, n as PickerItem, r as PickerSelectProps, t as PickerActions } from "../picker-
|
|
1
|
+
import { a as picker, i as PickerTreeProps, n as PickerItem, r as PickerSelectProps, t as PickerActions } from "../picker-H_ubc2nk.mjs";
|
|
2
2
|
export { PickerActions, PickerItem, PickerSelectProps, PickerTreeProps, picker };
|
package/dist/widgets/picker.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as picker } from "../picker-
|
|
1
|
+
export { t as picker } from "../picker-B3XS2HKe.mjs";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { Ft as Size, I as RenderCtx, Q as State, h as Node, it as Reactive } from "../queries-BqFMpQAf.mjs";
|
|
1
2
|
import { o as Color } from "../types-ByMHEdCF.mjs";
|
|
2
|
-
import { Ft as Size, I as RenderCtx, Q as State, h as Node, it as Reactive } from "../queries-Dmd3IjSd.mjs";
|
|
3
3
|
export interface ProgressState {
|
|
4
4
|
/** Current value. Clamped to `[0, total]`. Accepts a signal accessor
|
|
5
5
|
* so callers can drive the bar from reactive state without manual
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as unwrap } from "../reactive-DkP75TPk.mjs";
|
|
2
1
|
import { t as Node } from "../node-CXNobGaP.mjs";
|
|
2
|
+
import { S as unwrap } from "../reactive-DkP75TPk.mjs";
|
|
3
3
|
import { n as resolveSize } from "../size-BHRJuRk9.mjs";
|
|
4
4
|
import { stringWidth } from "@zaly/shared/ansi";
|
|
5
5
|
// src/widgets/progress.ts
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as SelectEvents, i as Select, n as OptionRender, o as SelectState, r as OptionRenderCtx, s as select, t as Option } from "../select-
|
|
1
|
+
import { a as SelectEvents, i as Select, n as OptionRender, o as SelectState, r as OptionRenderCtx, s as select, t as Option } from "../select-BeP7rFkP.mjs";
|
|
2
2
|
export { Option, OptionRender, OptionRenderCtx, Select, SelectEvents, SelectState, select };
|
package/dist/widgets/select.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as Select, n as select } from "../select-
|
|
1
|
+
export { t as Select, n as select } from "../select-BlsSDBlV.mjs";
|
package/dist/widgets/show.d.mts
CHANGED
package/dist/widgets/show.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as show } from "../show-
|
|
1
|
+
export { t as show } from "../show-BfIUw8A1.mjs";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { I as RenderCtx, Q as State, h as Node, it as Reactive } from "../queries-BqFMpQAf.mjs";
|
|
1
2
|
import { i as AnyStyle } from "../types-ByMHEdCF.mjs";
|
|
2
|
-
import { I as RenderCtx, Q as State, h as Node, it as Reactive } from "../queries-Dmd3IjSd.mjs";
|
|
3
3
|
/**
|
|
4
4
|
* Frame sets from the common terminal-spinner vocabulary. Pick one to taste.
|
|
5
5
|
* @internal
|
package/dist/widgets/spinner.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as unwrap, f as effect, x as untrack } from "../reactive-DkP75TPk.mjs";
|
|
2
1
|
import { t as Node } from "../node-CXNobGaP.mjs";
|
|
2
|
+
import { S as unwrap, f as effect, x as untrack } from "../reactive-DkP75TPk.mjs";
|
|
3
3
|
import { stringWidth } from "@zaly/shared/ansi";
|
|
4
4
|
// src/widgets/spinner.ts
|
|
5
5
|
/**
|
package/dist/widgets/text.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { G as TextContent, J as textContent, K as TextStyle, W as Text, q as text } from "../queries-
|
|
1
|
+
import { G as TextContent, J as textContent, K as TextStyle, W as Text, q as text } from "../queries-BqFMpQAf.mjs";
|
|
2
2
|
export { Text, TextContent, TextStyle, text, textContent };
|
package/dist/widgets/text.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as Text, n as text, r as textContent } from "../text-
|
|
1
|
+
export { t as Text, n as text, r as textContent } from "../text-BKLHPMsQ.mjs";
|
package/dist/widgets/tree.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as tree, n as TreeNode, r as TreeProps, t as TreeItem } from "../tree-
|
|
1
|
+
import { i as tree, n as TreeNode, r as TreeProps, t as TreeItem } from "../tree-DNAE_C7w.mjs";
|
|
2
2
|
export { TreeItem, TreeNode, TreeProps, tree };
|
package/dist/widgets/tree.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as tree } from "../tree-
|
|
1
|
+
export { t as tree } from "../tree-4aaQKFtF.mjs";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as Widget, r as widget, t as Props } from "../widget-
|
|
1
|
+
import { n as Widget, r as widget, t as Props } from "../widget-CHWHCg1j.mjs";
|
|
2
2
|
export { Props, Widget, widget };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zaly/tui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Terminal UI framework used by zaly.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ansi",
|
|
@@ -80,19 +80,19 @@
|
|
|
80
80
|
},
|
|
81
81
|
"dependencies": {
|
|
82
82
|
"@mathjax/src": "^4.1.3",
|
|
83
|
-
"@zaly/shared": "0.
|
|
83
|
+
"@zaly/shared": "0.3.0",
|
|
84
84
|
"diff": "^9.0.0",
|
|
85
|
-
"marked": "^18.1.
|
|
85
|
+
"marked": "^18.1.3",
|
|
86
86
|
"pathe": "^2.0.3",
|
|
87
|
-
"shiki": "^4.
|
|
87
|
+
"shiki": "^4.6.0"
|
|
88
88
|
},
|
|
89
89
|
"devDependencies": {
|
|
90
90
|
"@shikijs/vscode-textmate": "10.1.0",
|
|
91
91
|
"ghostty-web": "^0.4.0",
|
|
92
92
|
"mitata": "^1.0.34",
|
|
93
|
-
"slice-ansi": "^
|
|
93
|
+
"slice-ansi": "^10.0.0",
|
|
94
94
|
"string-width": "^8.3.0",
|
|
95
|
-
"typebox": "^1.4.
|
|
95
|
+
"typebox": "^1.4.5",
|
|
96
96
|
"wrap-ansi": "^10.0.2"
|
|
97
97
|
},
|
|
98
98
|
"optionalDependencies": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ansi-CxgRPLA2.mjs","names":[],"sources":["../src/style/ansi.ts"],"sourcesContent":["import type { AnsiColor, AnsiStyle } from \"./types.ts\"\n\nimport { sliceAnsi } from \"@zaly/shared/ansi\"\nimport { hasColors } from \"@zaly/shared/env\"\nimport { isHexColor, parseHex, toHex } from \"./color.ts\"\n\n/** Optional wrap mode: `\"word\"` (default) breaks at word boundaries;\n * `\"char\"` hard-wraps mid-word. */\nexport interface WrapOpts {\n mode?: \"word\" | \"char\"\n}\n\n// ---- ANSI escape categories -------------------------------------------\n// OSC 8 hyperlink sequence. ESC + backslash is the \"string terminator\" (ST)\n// that closes the OSC. Format: `ESC]8;;URL ST TEXT ESC]8;; ST`.\nconst OSC8 = \"\\x1b]8;;\"\nconst ST = \"\\x1b\\\\\"\nexport const RESET = \"\\x1b[0m\"\n\n// Attribute → SGR code. Order matters for stable output.\nconst ATTRS = [\n [\"bold\", 1],\n [\"dim\", 2],\n [\"italic\", 3],\n [\"underline\", 4],\n [\"inverse\", 7],\n [\"strikethrough\", 9],\n] as const satisfies readonly (readonly [keyof AnsiStyle, number])[]\n\n// Standard 8-color ANSI palette. Offsets from SGR 30 (fg) and 40 (bg).\nconst ANSI_OFFSET: Record<string, number> = {\n black: 0,\n blue: 4,\n cyan: 6,\n green: 2,\n magenta: 5,\n red: 1,\n white: 7,\n yellow: 3,\n}\n\nconst ANSI_BG: Record<number, AnsiColor> = {\n 100: \"gray\", // or \"brightBlack\" if that exists\n 101: \"brightRed\",\n 102: \"brightGreen\",\n 103: \"brightYellow\",\n 104: \"brightBlue\",\n 105: \"brightMagenta\",\n 106: \"brightCyan\",\n 107: \"brightWhite\",\n 40: \"black\",\n 41: \"red\",\n 42: \"green\",\n 43: \"yellow\",\n 44: \"blue\",\n 45: \"magenta\",\n 46: \"cyan\",\n 47: \"white\",\n}\n\nconst notFound = Symbol(\"not found\")\nconst colorCache = new Map<string, string | typeof notFound>()\n\n/**\n * Wrap `text` in an OSC 8 hyperlink pointing at `url`. Modern terminals\n * (iTerm2, kitty, WezTerm, VS Code, Ghostty, …) render the text as\n * clickable while falling back gracefully to plain text elsewhere.\n *\n * Safe to nest ANSI SGR styling inside the `text` argument — OSC 8 is a\n * separate escape category and doesn't conflict.\n *\n * An empty `url` short-circuits and returns `text` unchanged, so callers\n * can unconditionally pipe link text through this helper.\n *\n * @internal\n */\nexport function hyperlink(url: string, text: string): string {\n if (url === \"\") return text\n return `${OSC8}${url}${ST}${text}${OSC8}${ST}`\n}\n\nexport function ansiColor(color: AnsiColor, kind: \"fg\" | \"bg\"): string | undefined {\n if (!hasColors) return\n const key = `${color}-${kind}`\n let cached = colorCache.get(key)\n if (cached === undefined) colorCache.set(key, (cached = _ansiColor(color, kind)) ?? notFound)\n return cached === notFound ? undefined : cached\n}\n\nfunction _ansiColor(color: AnsiColor, kind: \"fg\" | \"bg\"): string | undefined {\n if (color === \"inherit\") return\n // Gray aliases to brightBlack.\n if (color === \"gray\" || color === \"grey\") return String(kind === \"fg\" ? 90 : 100)\n\n const base = color in ANSI_OFFSET ? color : undefined\n if (base !== undefined) return String((kind === \"fg\" ? 30 : 40) + ANSI_OFFSET[base])\n\n if (color.startsWith(\"bright\")) {\n const rest = color.slice(\"bright\".length).toLowerCase()\n if (rest in ANSI_OFFSET) return String((kind === \"fg\" ? 90 : 100) + ANSI_OFFSET[rest])\n }\n\n const rgb = isHexColor(color) ? parseHex(color) : undefined\n if (rgb) {\n const indicator = kind === \"fg\" ? 38 : 48\n return `${indicator};2;${rgb[0]};${rgb[1]};${rgb[2]}`\n }\n}\n\nexport function openAnsi(style: AnsiStyle) {\n if (!hasColors) return \"\"\n const params: (number | string | undefined)[] = []\n for (const [key, code] of ATTRS) if (style[key]) params.push(code)\n if (style.fg !== undefined) params.push(ansiColor(style.fg, \"fg\"))\n if (style.bg !== undefined) params.push(ansiColor(style.bg, \"bg\"))\n const attrs = params.filter((p) => p !== undefined)\n if (attrs.length === 0) return \"\"\n return `\\x1b[${attrs.join(\";\")}m`\n}\n\nexport function styleAnsi(text: string, style?: AnsiStyle): string {\n if (!style) return text\n const open = openAnsi(style)\n if (open === \"\") return text\n return `${open}${text}${RESET}`\n}\n\n/**\n * Post-process a styled string so an outer style is re-applied after any\n * inner full-reset (`\\x1b[0m`). Without this, a child's reset clobbers\n * the parent's bg/fg/attrs for the remainder of the line.\n *\n * `escape` is the already-built SGR run to re-emit after each reset\n * (typically the return value of `openStyle(parentStyle, theme)`). If\n * empty, the input is returned unchanged.\n *\n * Inlined indexOf loop rather than `String.prototype.replaceAll` — the\n * manual version avoids the regex/object allocation overhead of\n * `replaceAll` and runs meaningfully faster on short strings (hot in\n * the builder's `apply`, called once per styled span). Pattern taken\n * from ansis's nested-style resolver.\n *\n * @internal\n */\nexport function reapplyStyle(s: string, escape: string): string {\n if (escape === \"\" || !s.includes(RESET)) return s\n const replacement = RESET + escape\n const searchLength = RESET.length\n let result = \"\"\n let lastPos = 0\n let pos = s.indexOf(RESET)\n while (pos !== -1) {\n result += s.slice(lastPos, pos) + replacement\n lastPos = pos + searchLength\n pos = s.indexOf(RESET, lastPos)\n }\n return result + s.slice(lastPos)\n}\n\n/** Resolve terminal-default color resets without changing explicit child colors. */\nexport function applyDefaultColors(text: string, fg: string, bg: string): string {\n if ((!fg && !bg) || !text.includes(\"\\x1b[\")) return text\n const fgParams = fg.slice(2, -1)\n const bgParams = bg.slice(2, -1)\n return text.replaceAll(/\\x1b\\[([\\d;:]*)m/g, (match, raw: string) => {\n const params = raw.split(\";\")\n const next: string[] = []\n let changed = false\n for (let i = 0; i < params.length; i++) {\n const param = params[i]\n const code = Number(param)\n if (code === 0) {\n next.push(param, ...[fgParams, bgParams].filter(Boolean))\n changed = true\n } else if (code === 39 && fgParams) {\n next.push(fgParams)\n changed = true\n } else if (code === 49 && bgParams) {\n next.push(bgParams)\n changed = true\n } else {\n next.push(param)\n // RGB components and palette indexes can themselves be 0, 39, or 49.\n if (code === 38 || code === 48 || code === 58) {\n let count = 0\n if (params[i + 1] === \"2\") count = 4\n else if (params[i + 1] === \"5\") count = 2\n next.push(...params.slice(i + 1, i + 1 + count))\n i += count\n }\n }\n }\n return changed ? `\\x1b[${next.join(\";\")}m` : match\n })\n}\n\nexport function stripAnsiBg(s: string): string {\n return s.replaceAll(/\\x1b\\[([0-9;]*)m/g, (match, raw: string) => {\n const next = stripBgParams(raw)\n if (next === raw) return match\n return next === \"\" ? \"\" : `\\x1b[${next}m`\n })\n}\n\nfunction stripBgParams(raw: string): string {\n if (raw === \"\") return raw\n const params = raw.split(\";\").map(Number)\n const ret: number[] = []\n for (let i = 0; i < params.length; i++) {\n const p = params[i]\n if ((p >= 40 && p <= 47) || (p >= 100 && p <= 107) || p === 49) continue\n if (p === 48) {\n const mode = params[i + 1]\n if (mode === 2) {\n i += 4\n continue\n }\n if (mode === 5) {\n i += 2\n continue\n }\n continue\n }\n ret.push(p)\n }\n return ret.join(\";\")\n}\n\nexport function ansiBg(str: string, idx: number): AnsiColor | undefined {\n const cell = sliceAnsi(str, idx, idx + 1)\n\n let bg: AnsiColor | undefined\n\n for (const match of cell.matchAll(/\\x1b\\[([0-9;]*)m/g)) {\n const params = match[1].split(\";\").map(Number)\n\n for (let i = 0; i < params.length; i++) {\n const p = params[i]\n\n if ((p >= 40 && p <= 47) || (p >= 100 && p <= 107)) {\n bg = ANSI_BG[p]\n } else if (p === 48 && params[i + 1] === 2) {\n bg = toHex(params[i + 2], params[i + 3], params[i + 4])\n i += 4\n }\n }\n }\n\n return bg\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client-BWm6dNZF.mjs","names":[],"sources":["../src/shiki/client.ts"],"sourcesContent":["import type {\n ShikiJob,\n ShikiOpts,\n ShikiRequest,\n ShikiResult,\n ShikiWorkerMessage,\n ShikiWorkerRequest,\n} from \"./types.ts\"\nimport type { WorkerInstance } from \"./worker.ts\"\n\nimport { hash, toError } from \"@zaly/shared\"\nimport { hasColors } from \"@zaly/shared/env\"\nimport { isShikiLang } from \"../schemas/shiki.ts\"\n\nfunction isJob(s: ShikiJob | ShikiResult): s is ShikiJob {\n return \"key\" in s && \"lang\" in s\n}\n\nconst MAX_CACHE_SIZE = 100\n// Max jobs posted to the worker. Worker still processes serially.\nconst MAX_RUNNING = 2\nconst REQUEST_TIMEOUT = 30_000\n\nexport class ShikiWorkerClient {\n #id = 0\n #cache = new Map<string, ShikiJob>()\n #queue = new Map<number, ShikiJob>()\n #running = new Map<number, ShikiJob>()\n #results: ShikiResult[] = []\n #timeouts = new Map<number, ReturnType<typeof setTimeout>>()\n #worker?: WorkerInstance<ShikiWorkerRequest, ShikiWorkerMessage>\n #workerPromise?: Promise<WorkerInstance<ShikiWorkerRequest, ShikiWorkerMessage>>\n #timeout: number\n #updateScheduled: Promise<void> | undefined = undefined\n #updatePending = false\n\n constructor(opts: { timeout?: number } = {}) {\n this.#timeout = opts.timeout ?? REQUEST_TIMEOUT\n }\n\n key(req: ShikiRequest): string {\n return req.key ?? hash(JSON.stringify([req.lang, req.code, req.theme ?? \"default\"]))\n }\n\n toJob(req: ShikiRequest): ShikiJob | ShikiResult {\n const id = ++this.#id\n const key = this.key(req)\n if (!hasColors) return { error: \"terminal does not support colors\", id, key, value: req.code }\n if (!isShikiLang(req.lang))\n return { error: `unsupported language: ${req.lang}`, id, key, value: req.code }\n const cached = this.#cache.get(key)\n if (cached) {\n this.#cache.delete(key)\n this.#cache.set(key, cached) // bump to end of LRU\n return cached\n }\n while (this.#cache.size > MAX_CACHE_SIZE) this.#cache.delete(this.#cache.keys().next().value!)\n const ret: ShikiJob = { ...req, id, key, lang: req.lang, ...Promise.withResolvers() }\n this.#cache.set(key, ret)\n return ret\n }\n\n highlight(code: string, lang: string, opts: ShikiOpts = {}): Promise<ShikiResult> {\n const req: ShikiRequest = { code, lang, signal: opts.signal, theme: opts.theme }\n const job = this.toJob(req)\n if (!isJob(job)) return Promise.resolve(job)\n if (!job.scheduled) {\n this.#queue.set(job.id, job)\n job.signal?.addEventListener(\"abort\", () => this.update(), { once: true })\n this.update()\n }\n return job.promise\n }\n\n dispose(): void {\n const error = new Error(\"Shiki worker disposed\")\n this.#rejectAll(error)\n }\n\n async #request(job: ShikiJob): Promise<void> {\n job.scheduled = true\n this.#running.set(job.id, job)\n const worker = await this.#createWorker()\n const { signal: _s, promise: _prom, resolve: _res, reject: _rej, ...msg } = job\n const timeout = setTimeout(\n () =>\n this.#fail(\n new Error(`Shiki worker timed out after ${this.#timeout}ms (${job.lang}, ${job.key})`)\n ),\n this.#timeout\n )\n timeout.unref()\n this.#timeouts.set(job.id, timeout)\n // oxlint-disable-next-line unicorn/require-post-message-target-origin\n worker.postMessage(msg)\n }\n\n async #createWorker(): Promise<WorkerInstance<ShikiWorkerRequest, ShikiWorkerMessage>> {\n if (this.#worker) return this.#worker\n this.#workerPromise ??= (async () => {\n const { createWorker } = await import(\"./worker.ts\")\n const worker = await createWorker<ShikiWorkerRequest, ShikiWorkerMessage>()\n const ready = Promise.withResolvers<void>()\n let started = false\n const timeout = setTimeout(\n () => ready.reject(new Error(`Shiki worker did not start within ${this.#timeout}ms`)),\n this.#timeout\n )\n timeout.unref()\n worker.on(\"message\", (event) => {\n if (event.type === \"ready\") {\n started = true\n ready.resolve()\n return\n }\n this.#clearTimeout(event.id)\n this.#running.delete(event.id)\n this.#results.push(event)\n this.update()\n })\n worker.on(\"error\", (error) => {\n if (started) this.#fail(error)\n else ready.reject(error)\n })\n try {\n await ready.promise\n return worker\n } catch (error) {\n worker.terminate()\n throw error\n } finally {\n clearTimeout(timeout)\n }\n })()\n return (this.#worker = await this.#workerPromise)\n }\n\n update() {\n this.#updatePending = true\n if (this.#updateScheduled) return\n this.#updateScheduled = (async () => {\n while (this.#updatePending) {\n this.#updatePending = false\n // oxlint-disable-next-line no-await-in-loop\n await this.#update()\n }\n })()\n .catch((error) => this.#fail(error))\n .finally(() => {\n this.#updateScheduled = undefined\n if (this.#updatePending) this.update()\n })\n }\n\n async #update() {\n // Resolve pending results\n while (this.#results.length) {\n const result = this.#results.shift()!\n const job = this.#queue.get(result.id)\n if (job) {\n if (result.error) {\n const error = new Error(result.error)\n // oxlint-disable-next-line no-console\n console.error(\"Shiki highlighting failed:\", error)\n job.reject(error)\n } else job.resolve(result)\n\n // oxlint-disable-next-line no-await-in-loop\n await new Promise((resolve) => setImmediate(resolve)) // yield to event loop between batches\n this.#queue.delete(job.id)\n }\n }\n\n // Clean up aborted jobs\n for (const job of this.#queue.values()) {\n if (job.signal?.aborted && !job.scheduled) {\n job.reject(new Error(\"Job aborted\"))\n this.#queue.delete(job.id)\n this.#cache.delete(job.key)\n }\n }\n\n if (this.#running.size >= MAX_RUNNING || this.#queue.size === 0) return\n\n // Schedule new jobs up to concurrency limit, prioritizing the most recently requested ones (LIFO)\n const todo = [...this.#queue.values()]\n .filter((j) => !j.scheduled)\n .slice(-(MAX_RUNNING - this.#running.size))\n await Promise.all(todo.map((j) => this.#request(j)))\n }\n\n #clearTimeout(id: number): void {\n const timeout = this.#timeouts.get(id)\n if (timeout) clearTimeout(timeout)\n this.#timeouts.delete(id)\n }\n\n #fail(error: unknown): void {\n error = toError(error)\n // oxlint-disable-next-line no-console\n console.error(\"Shiki worker failed:\", error)\n this.#rejectAll(error)\n }\n\n #rejectAll(error: unknown): void {\n for (const { reject } of this.#queue.values()) reject(error)\n this.#cache.clear()\n this.#queue.clear()\n this.#running.clear()\n this.#results = []\n for (const timeout of this.#timeouts.values()) clearTimeout(timeout)\n this.#timeouts.clear()\n this.#updatePending = false\n this.#worker?.terminate()\n this.#worker = undefined\n this.#workerPromise = undefined\n }\n}\n\nexport const shikiWorker = new ShikiWorkerClient()\n"],"mappings":"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"}
|
package/dist/client-C69qWhMG.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { n as shikiWorker } from "./client-BWm6dNZF.mjs";
|
package/dist/ctx-CYEzzH-7.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { t as createCtx } from "./ctx-DBeFcZt6.mjs";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"log-D6gGicwQ.mjs","names":[],"sources":["../src/widgets/log.ts"],"sourcesContent":["import type { LogLevel } from \"@zaly/shared/logger\"\nimport type { RenderCtx } from \"../core/ctx.ts\"\nimport type { Node } from \"../core/node.ts\"\nimport type { State } from \"../core/state.ts\"\nimport type { Color } from \"../style/types.ts\"\nimport type { TextContent } from \"./text.ts\"\n\nimport { stringWidth } from \"@zaly/shared/ansi\"\nimport { hasColors } from \"@zaly/shared/env\"\nimport { box } from \"./box.ts\"\nimport { markdown } from \"./markdown.ts\"\nimport { text } from \"./text.ts\"\nimport { widget } from \"./widget.ts\"\n\nexport type LogStyle = \"badge\" | \"icon\" | \"prompt\" | \"title\" | \"text\" | \"notif\"\n\nexport interface LogState {\n level: LogLevel\n content: TextContent\n title?: string\n /** Rendering of the per-level prefix chunk. Defaults by level. */\n style?: LogStyle\n /** Single-glyph icon for `icon` / `prompt` styles. */\n icon?: string\n /** Theme slot or color name used to tint the prefix. */\n color?: Color<false>\n /** Extra plain text prepended to the auto prefix (unstyled). */\n prefix?: string\n /** Theme slot or color name for the body text. Defaults by level, except */\n textColor?: Color<false>\n markdown?: boolean\n}\n\ninterface LevelDefaults {\n style: LogStyle\n icon?: string\n color?: Color<false>\n textColor?: Color<false>\n}\n\n/** Per-level default prefix style + icon + color. Matches rekal's\n * `defaultStyles` table, adapted to zaly's theme slots. */\nconst defaultLogStyles: Record<LogLevel, LevelDefaults> = {\n cancel: { color: \"warn\", icon: \"✖ \", style: \"icon\" },\n debug: { color: \"info\", icon: \"⚙ \", style: \"prompt\" },\n error: { color: \"error\", icon: \"✖ \", style: \"badge\", textColor: \"error\" },\n fatal: { color: \"error\", icon: \"☢ \", style: \"badge\" },\n info: { color: \"info\", icon: \"ℹ \", style: \"icon\" },\n log: { color: \"muted\", icon: \"●\", style: \"icon\" },\n success: { color: \"success\", icon: \"✔ \", style: \"icon\" },\n trace: { color: \"muted\", icon: \"⠿\", style: \"icon\", textColor: \"muted\" },\n warn: { color: \"warn\", icon: \"⚠\", style: \"badge\", textColor: \"warn\" },\n}\n\nconst noColorStyles: Record<LogStyle, LogStyle> = {\n badge: \"title\",\n icon: \"text\",\n notif: \"text\",\n prompt: \"text\",\n text: \"text\",\n title: \"text\",\n}\n\nfunction renderPrefix(s: LogState, ctx: RenderCtx): string {\n const style = ctx.style\n\n const base = defaultLogStyles[s.level]\n let ls: LogStyle = s.style ?? base.style\n if (!hasColors) ls = noColorStyles[ls]\n\n let icon = s.icon ?? base.icon ?? \"\"\n icon = icon === \"\" ? \"\" : `${icon}${\" \".repeat(2 - stringWidth(icon))}`\n const color: Color<false> = s.color ?? base.color ?? \"inherit\"\n\n // text doesn't get a prefix\n let styledPrefix = \"\"\n if (ls === \"badge\") {\n styledPrefix = style.bg(color).bold(` ${s.level} `)\n } else if (ls === \"icon\") {\n styledPrefix = style.fg(color)(icon)\n } else if (ls === \"prompt\") {\n styledPrefix = style.fg(color).bold(`${icon} ${s.level}`)\n } else if (ls === \"title\") {\n styledPrefix = style.fg(color).bold(`${s.level}:`)\n } else if (ls === \"notif\") {\n styledPrefix = style.fg(color).bold(`${icon} ${s.title ?? s.level}`)\n }\n\n if (s.prefix) styledPrefix = s.prefix + styledPrefix\n if (s.title && ls !== \"notif\") styledPrefix += style.bold(` ${s.title}`)\n return styledPrefix\n}\n\n/**\n * A single log entry — level-styled prefix (icon / badge / prompt / title /\n * plain text) followed by the body content. The body can be any Node, so\n * callers can stack markdown, code, images, etc. inside a log line.\n *\n * ```ts\n * log({ level: \"info\", content: \"hello\" })\n * log({ level: \"error\", content: markdown(\"**boom**\") })\n * ```\n */\nexport const log = widget((state: State<LogState>, ...children: Node[]) => {\n const base = defaultLogStyles[state.level]\n const color: Color = state.color ?? base.color ?? \"inherit\"\n const s = state\n const textColor = state.textColor ?? (s.style === \"notif\" ? \"inherit\" : base.textColor)\n const style = {\n style: textColor\n ? {\n fg: textColor,\n }\n : undefined,\n width: \"fill\",\n } as const\n if (state.content !== \"\") {\n children = [\n (state.markdown ?? true) ? markdown(state.content, style) : text(state.content, style),\n ...children,\n ]\n }\n return box(\n {\n ...(s.style === \"notif\"\n ? {\n border: \"single\",\n borderStyle: { fg: color },\n borderTitle: (ctx) => renderPrefix(state, ctx),\n borderTitleAlign: \"center\",\n padding: [0, 1],\n //style: \"overlay\",\n width: \"fill\",\n }\n : undefined),\n flexDirection: \"row\",\n gap: 1,\n visible: state.visible,\n },\n s.style === \"notif\"\n ? undefined\n : text((ctx) => renderPrefix(state, ctx), { flexShrink: 0, wrap: \"none\" }),\n box({ flexDirection: \"column\", flexGrow: 1, gap: 1 }, ...children)\n )\n})\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-DvDIPT5L.mjs","names":[],"sources":["../src/widgets/markdown.ts"],"sourcesContent":["import type { RenderCtx } from \"../core/ctx.ts\"\nimport type { Accessor } from \"../core/reactive.ts\"\nimport type { State } from \"../core/state.ts\"\nimport type { WrapMode } from \"../layout/text.ts\"\nimport type { MarkdownRenderer } from \"../markdown/renderer.ts\"\nimport type { MdOptions } from \"../markdown/types.ts\"\nimport type { ShikiThemeInput } from \"../shiki/types.ts\"\nimport type { AnyStyle } from \"../style/types.ts\"\nimport type { Image } from \"./image.ts\"\nimport type { TextContent } from \"./text.ts\"\n\nimport { hasColors } from \"@zaly/shared/env\"\nimport { Node } from \"../core/node.ts\"\nimport { createAsync, signal, unwrap, useContext } from \"../core/reactive.ts\"\nimport { RenderContext } from \"../core/render.ts\"\nimport { calcLayout, expandTabs, formatText } from \"../layout/text.ts\"\nimport { shikiWorker } from \"../shiki/client.ts\"\nimport { codeToAnsi } from \"../shiki/shiki.ts\"\nimport { shikiTheme } from \"../shiki/theme.ts\"\nimport { textContent } from \"./text.ts\"\n\nexport interface MarkdownState {\n /** Markdown source. Accepts a plain string or a reactive accessor —\n * pass `signal()` / `memo()` for streaming content that re-parses on\n * each render and subscribes the node to the signal. */\n content: TextContent\n /** Options forwarded to `renderMarkdown`. */\n options?: MdOptions\n /**\n * Enable shiki-backed syntax highlighting for fenced code blocks. Defaults\n * to `true` — code blocks get per-token colors from the shiki theme, with\n * `mdCodeBlock`'s bg applied as a backdrop. Unknown languages fall through\n * as plain text.\n */\n syntax?: boolean\n wrap?: WrapMode\n style?: AnyStyle\n}\n\ntype ShikiCode = {\n key: string\n code: string\n lang: string\n theme?: ShikiThemeInput\n inflight?: Promise<string>\n ac?: AbortController\n result?: string\n gen: number\n}\n\nexport class Markdown extends Node<MarkdownState> {\n // Image nodes cached per-src per-Markdown-instance. Re-rendering the\n // same markdown (streaming updates) reuses the same `Image` — same\n // `placementId`, which the KGP spec guarantees is a flicker-free\n // move/resize of the existing placement.\n readonly images = new Map<string, Image>()\n\n #renderer?: MarkdownRenderer\n #code = new Map<string, ShikiCode>()\n #update = signal(0)\n #gen = 0\n #worker: Accessor<number>\n #images?: Accessor<boolean>\n\n constructor(state: State<MarkdownState>) {\n super(state)\n\n const context = useContext(RenderContext)\n this.#images = context?.images\n\n this.#worker = createAsync(\n async () => {\n const update = this.#update.get() // track\n const todo = [...this.#code.values()].filter((c) => c.gen === this.#gen && !c.result)\n if (!todo.length) return update // nothing to do, skip\n await Promise.all(\n todo.map(async (req) => {\n req.ac ??= new AbortController()\n req.inflight ??= codeToAnsi(req.code, req.lang, {\n signal: req.ac.signal,\n theme: req.theme,\n })\n try {\n req.result = await req.inflight\n } catch (error) {\n if (req.ac.signal.aborted) {\n if (this.#code.get(req.key) === req) this.#code.delete(req.key)\n } else throw error\n }\n })\n )\n return update + 1\n },\n { initialValue: 0 }\n )\n }\n\n /** Find a highlighted result for a prefix of `code` in the cache. This\n * handles streaming updates where the full code block isn't available yet\n * and prevents flashing un-highlighted text on each update. */\n #streamingHighlight(code: string, lang: string, theme?: ShikiThemeInput) {\n let ret: ShikiCode | undefined\n for (const c of this.#code.values()) {\n if (!c.result || c.lang !== lang || c.theme !== theme) continue\n if (code.startsWith(c.code) && c.code.length > (ret?.code.length ?? 0)) ret = c\n }\n if (ret) ret.gen = this.#gen // bump gen to keep it alive in cache\n return ret?.result ? ret.result + code.slice(ret.code.length) : code\n }\n\n #highlight(code: string, lang?: string, theme?: ShikiThemeInput): string {\n if (!lang) return code\n const key = shikiWorker.key({ code, lang, theme })\n const ret = this.#code.get(key)\n if (ret) ret.gen = this.#gen // bump gen to keep it alive in cache\n if (ret?.result) return ret.result\n else if (!ret) this.#code.set(key, { code, gen: this.#gen, key, lang, theme })\n return this.#streamingHighlight(code, lang, theme)\n }\n\n protected async _render(ctx: RenderCtx): Promise<string[]> {\n if (!this.#renderer) {\n const { MarkdownRenderer } = await import(\"../markdown/renderer.ts\")\n this.#renderer = new MarkdownRenderer({ ...this.state.options, parent: this })\n }\n let source = await textContent(this.state.content, ctx)\n source = expandTabs(source)\n let formatted: string\n\n if (!hasColors) formatted = this.#renderer.normalizeEol(source, source)\n else {\n this.#gen++ // bump generation to track what is still used\n\n formatted = await this.#renderer.render(source, {\n ...ctx,\n highlight: (code, lang) => this.#highlight(code, lang, shikiTheme(ctx.style.theme)),\n images: unwrap(this.#images) ?? true,\n })\n\n // prune old entries\n for (const [k, c] of this.#code.entries())\n if (c.gen !== this.#gen) {\n c.ac?.abort()\n if (c.result !== undefined) this.#code.delete(k)\n }\n\n // Trigger the worker if needed\n if (this.#code.values().some((c) => !c.inflight)) {\n this.#update.set(this.#gen) // trigger worker\n this.#worker() // tracked\n }\n }\n\n return formatText(formatted, {\n indent: true,\n style: this.state.style ? ctx.style.add(this.state.style) : undefined,\n width: ctx.width,\n wrap: this.state.wrap,\n wrapBg: true,\n })\n }\n\n override async layout(ctx: RenderCtx) {\n return calcLayout(await textContent(this.state.content, ctx))\n }\n}\n\n/**\n * Render a markdown string as a TUI node. Produces ANSI-styled text that\n * resolves per-element styling through theme slots (`mdHeading1`, `mdCode`,\n * `mdLink`, …). Links become clickable in terminals that support OSC 8.\n *\n * ```ts\n * markdown(\"# Hello\\n\\nThis is **bold** and *italic*.\")\n * markdown({ content, wrap: \"word\", fg: \"fg\" })\n * ```\n */\nexport function markdown(\n content: TextContent,\n style?: Omit<State<MarkdownState>, \"content\">\n): Markdown\nexport function markdown(state: State<MarkdownState>): Markdown\nexport function markdown(\n first: TextContent | MarkdownState,\n style?: Omit<State<MarkdownState>, \"content\">\n): Markdown {\n // Plain strings and accessor functions go through the content path;\n // a non-function object is the full state form.\n if (typeof first === \"string\" || typeof first === \"function\") {\n return new Markdown({ content: first, ...style })\n }\n return new Markdown(first)\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"queries-Dmd3IjSd.d.mts","names":["_$___core_state_ts0.Layout","_$__box_ts0.Box","_$__terminal_ts0.Terminal"],"sources":["../src/input/keys.ts","../src/input/decoder.ts","../src/input/actions.ts","../src/layout/size.ts","../src/core/reactive.ts","../src/core/state.ts","../src/layout/border.ts","../src/widgets/text.ts","../src/widgets/box.ts","../src/widgets/overlay.ts","../src/core/ctx.ts","../src/widgets/log.ts","../src/services/logger.ts","../src/renderer/terminal.ts","../src/renderer/frame.ts","../src/renderer/surface.ts","../src/renderer/overlay.ts","../src/renderer/selection.ts","../src/renderer/stream.ts","../src/renderer/ui.ts","../src/renderer/renderer.ts","../src/core/node.ts","../src/input/router.ts","../src/input/queries.ts"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { t as MarkdownRenderer } from "./renderer-Ksfkfv5X.mjs";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-Ksfkfv5X.mjs","names":[],"sources":["../src/markdown/renderer.ts"],"sourcesContent":["import type { RenderCtx } from \"../core/ctx.ts\"\nimport type { Node } from \"../core/node.ts\"\nimport type { Image } from \"../widgets/image.ts\"\nimport type { MdOptions, RenderMarkdown } from \"./types.ts\"\n\nexport type MarkdownOptions = MdOptions & {\n parent?: Node\n}\n\nexport type MarkdownCtx = RenderCtx & {\n images?: boolean\n highlight?: (code: string, lang?: string) => string\n}\n\nexport class MarkdownRenderer {\n #render?: RenderMarkdown\n #images = new Map<string, Image>()\n #parent?: Node\n #opts: MarkdownOptions\n\n constructor(opts: MarkdownOptions = {}) {\n this.#opts = opts\n this.#parent = opts.parent\n }\n\n async render(source: string, ctx: MarkdownCtx): Promise<string> {\n // oxlint-disable-next-line unicorn/no-await-expression-member\n this.#render ??= this.#opts.render ?? (await import(\"#md\")).renderMarkdown\n\n const [{ createCallbacks }, { createImageCallback }] = await Promise.all([\n import(\"./callbacks.ts\"),\n import(\"./image.ts\"),\n ])\n\n const callbacks = createCallbacks(ctx)\n\n // Image handling: the callback emits `<img id=N>` markers during\n // rendering; a post-processing resolver then renders the referenced\n // images concurrently and splices their rows back in. Keeps the\n // markdown callback surface synchronous while supporting async\n // image preparation.\n const image = createImageCallback({\n add: (child) => this.#parent?.add(child),\n images: this.#images,\n queries: ctx.images === false ? undefined : this.#parent?.ctx?.input.queries,\n remove: (child) => this.#parent?.remove(child) ?? child.unmount(),\n })\n\n if (ctx.images ?? true) callbacks.image = image.cb\n\n let rendered = this.#render(image.prepare(source), callbacks, this.#opts)\n rendered = await image.resolve(ctx, rendered)\n return this.normalizeEol(source, rendered)\n }\n\n /** Mirror the source's trailing newlines: the renderer adds its own\n /* padding after blocks (`\\n\\n` after paragraphs, etc.) which would\n /* leave stray blank rows. Normalizing to what the caller typed keeps\n /* single-line inputs compact and preserves explicit spacing when\n /* they asked for it. */\n normalizeEol(source: string, rendered: string): string {\n // Collapse multiple blank lines to a maximum of one\n rendered = rendered.replace(/\\n\\n+/g, \"\\n\\n\")\n // Trim leading blank lines\n rendered = rendered.replace(/^\\s*\\n/, \"\")\n const trailing = /\\n*$/.exec(source)?.[0] ?? \"\"\n return rendered.replace(/\\n+$/, trailing)\n }\n}\n"],"mappings":";AAcA,IAAa,mBAAb,MAA8B;CAC5B;CACA,0BAAU,IAAI,IAAmB;CACjC;CACA;CAEA,YAAY,OAAwB,CAAC,GAAG;EACtC,KAAK,QAAQ;EACb,KAAK,UAAU,KAAK;CACtB;CAEA,MAAM,OAAO,QAAgB,KAAmC;EAE9D,KAAK,YAAY,KAAK,MAAM,WAAW,MAAM,OAAO,OAAA,CAAQ;EAE5D,MAAM,CAAC,EAAE,mBAAmB,EAAE,yBAAyB,MAAM,QAAQ,IAAI,CACvE,OAAO,6BACP,OAAO,uBACT,CAAC;EAED,MAAM,YAAY,gBAAgB,GAAG;EAOrC,MAAM,QAAQ,oBAAoB;GAChC,MAAM,UAAU,KAAK,SAAS,IAAI,KAAK;GACvC,QAAQ,KAAK;GACb,SAAS,IAAI,WAAW,QAAQ,KAAA,IAAY,KAAK,SAAS,KAAK,MAAM;GACrE,SAAS,UAAU,KAAK,SAAS,OAAO,KAAK,KAAK,MAAM,QAAQ;EAClE,CAAC;EAED,IAAI,IAAI,UAAU,MAAM,UAAU,QAAQ,MAAM;EAEhD,IAAI,WAAW,KAAK,QAAQ,MAAM,QAAQ,MAAM,GAAG,WAAW,KAAK,KAAK;EACxE,WAAW,MAAM,MAAM,QAAQ,KAAK,QAAQ;EAC5C,OAAO,KAAK,aAAa,QAAQ,QAAQ;CAC3C;;;;;;CAOA,aAAa,QAAgB,UAA0B;EAErD,WAAW,SAAS,QAAQ,UAAU,MAAM;EAE5C,WAAW,SAAS,QAAQ,UAAU,EAAE;EACxC,MAAM,WAAW,OAAO,KAAK,MAAM,CAAC,GAAG,MAAM;EAC7C,OAAO,SAAS,QAAQ,QAAQ,QAAQ;CAC1C;AACF"}
|