@zaly/tui 0.0.11 → 0.1.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/assets/schemas/shiki-language.schema.json +352 -0
- package/assets/schemas/shiki-theme.schema.json +71 -0
- package/assets/schemas/theme.schema.json +227 -732
- package/assets/themes/andromeeda.json +97 -0
- package/assets/themes/ayu-dark.json +31 -44
- package/assets/themes/ayu-light.json +106 -0
- package/assets/themes/ayu-mirage.json +106 -0
- package/assets/themes/catppuccin-frappe.json +44 -60
- package/assets/themes/catppuccin-latte.json +44 -60
- package/assets/themes/catppuccin-macchiato.json +44 -60
- package/assets/themes/catppuccin-mocha.json +44 -60
- package/assets/themes/dark-plus.json +99 -0
- package/assets/themes/dracula.json +47 -66
- package/assets/themes/everforest-dark.json +28 -45
- package/assets/themes/everforest-light.json +28 -45
- package/assets/themes/github-dark-default.json +107 -0
- package/assets/themes/github-dark-dimmed.json +107 -0
- package/assets/themes/github-light-default.json +107 -0
- package/assets/themes/gruvbox-dark-hard.json +98 -0
- package/assets/themes/gruvbox-dark-medium.json +34 -48
- package/assets/themes/gruvbox-light-medium.json +98 -0
- package/assets/themes/horizon-bright.json +101 -0
- package/assets/themes/horizon.json +101 -0
- package/assets/themes/iterm2/LICENSE +25 -0
- package/assets/themes/iterm2/README.md +28 -0
- package/assets/themes/iterm2/catppuccin-latte.json +140 -0
- package/assets/themes/iterm2/catppuccin-mocha.json +140 -0
- package/assets/themes/iterm2/github-dark.json +140 -0
- package/assets/themes/iterm2/github.json +140 -0
- package/assets/themes/iterm2/gruvbox-dark.json +140 -0
- package/assets/themes/iterm2/gruvbox-light.json +140 -0
- package/assets/themes/iterm2/nord.json +140 -0
- package/assets/themes/iterm2/tokyonight-day.json +140 -0
- package/assets/themes/iterm2/tokyonight-moon.json +140 -0
- package/assets/themes/kanagawa-dragon.json +55 -68
- package/assets/themes/kanagawa-lotus.json +105 -0
- package/assets/themes/kanagawa-wave.json +55 -68
- package/assets/themes/light-plus.json +99 -0
- package/assets/themes/material-theme-lighter.json +102 -0
- package/assets/themes/material-theme-palenight.json +52 -64
- package/assets/themes/material-theme.json +102 -0
- package/assets/themes/min-dark.json +67 -28
- package/assets/themes/min-light.json +67 -32
- package/assets/themes/monokai.json +55 -67
- package/assets/themes/night-owl-light.json +105 -0
- package/assets/themes/night-owl.json +57 -68
- package/assets/themes/nord.json +53 -55
- package/assets/themes/one-dark-pro.json +46 -57
- package/assets/themes/one-light.json +52 -59
- package/assets/themes/poimandres.json +51 -68
- package/assets/themes/rose-pine-dawn.json +99 -0
- package/assets/themes/rose-pine-moon.json +99 -0
- package/assets/themes/rose-pine.json +51 -50
- package/assets/themes/solarized-dark.json +39 -51
- package/assets/themes/solarized-light.json +40 -52
- package/assets/themes/synthwave-84.json +48 -50
- package/assets/themes/tokyonight-day.json +6 -7
- package/assets/themes/tokyonight-moon.json +6 -6
- package/assets/themes/tokyonight-night.json +6 -6
- package/assets/themes/tokyonight-storm.json +6 -6
- package/assets/themes/vesper.json +51 -58
- package/assets/themes/vitesse-black.json +103 -0
- package/assets/themes/vitesse-dark.json +26 -49
- package/assets/themes/vitesse-light.json +26 -49
- package/dist/{actions-DFboj3g5.d.mts → actions--ODlgCQ5.d.mts} +4 -4
- package/dist/{actions-DFboj3g5.d.mts.map → actions--ODlgCQ5.d.mts.map} +1 -1
- package/dist/{ansi-Clq0ozyA.mjs → ansi-CMv71xVr.mjs} +38 -31
- package/dist/ansi-CMv71xVr.mjs.map +1 -0
- package/dist/ansi.d.mts +3 -1
- package/dist/ansi.d.mts.map +1 -1
- package/dist/ansi.mjs +1 -1
- package/dist/{autocomplete-CxzetPOo.d.mts → autocomplete-CD30kSe_.d.mts} +4 -4
- package/dist/{autocomplete-CxzetPOo.d.mts.map → autocomplete-CD30kSe_.d.mts.map} +1 -1
- package/dist/{box-DLEcEvDH.mjs → box-C_N_7ChP.mjs} +2 -2
- package/dist/box-C_N_7ChP.mjs.map +1 -0
- package/dist/builder-Chwtk0nQ.mjs +196 -0
- package/dist/builder-Chwtk0nQ.mjs.map +1 -0
- package/dist/{callbacks-D132G8dy.mjs → callbacks-DLecWn7G.mjs} +4 -4
- package/dist/{callbacks-D132G8dy.mjs.map → callbacks-DLecWn7G.mjs.map} +1 -1
- package/dist/client-CNGt-dOt.mjs +1 -0
- package/dist/{client-C2GXKfJ1.mjs → client-D7qz4TZt.mjs} +7 -3
- package/dist/client-D7qz4TZt.mjs.map +1 -0
- package/dist/color-DBMQLv4Y.mjs +37 -0
- package/dist/color-DBMQLv4Y.mjs.map +1 -0
- package/dist/{ctx-8Nuf5BrN.mjs → ctx-BaQ2hP5u.mjs} +3 -3
- package/dist/{ctx-8Nuf5BrN.mjs.map → ctx-BaQ2hP5u.mjs.map} +1 -1
- package/dist/ctx-CndlTp1T.mjs +1 -0
- package/dist/{divider-l0-JPEIm.mjs → divider-BlNNN2OS.mjs} +2 -2
- package/dist/divider-BlNNN2OS.mjs.map +1 -0
- package/dist/{files-BUsa-RVl.d.mts → files-B_5HDBPp.d.mts} +3 -3
- package/dist/{files-BUsa-RVl.d.mts.map → files-B_5HDBPp.d.mts.map} +1 -1
- package/dist/github-Cy2hfWJ7.mjs.map +1 -1
- package/dist/{github-D89A3F9U.d.mts → github-CyRwUQ3y.d.mts} +3 -3
- package/dist/{github-D89A3F9U.d.mts.map → github-CyRwUQ3y.d.mts.map} +1 -1
- package/dist/{image-34bU73bW.d.mts → image-BLls2F4t.d.mts} +2 -2
- package/dist/{image-34bU73bW.d.mts.map → image-BLls2F4t.d.mts.map} +1 -1
- package/dist/image-Cqtj3yRA.mjs +178 -0
- package/dist/image-Cqtj3yRA.mjs.map +1 -0
- package/dist/image.d.mts +1 -1
- package/dist/index.d.mts +13 -4
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +8 -7
- package/dist/index.mjs.map +1 -1
- package/dist/{input-D7fQEUdt.mjs → input-ET2YEMcl.mjs} +16 -11
- package/dist/input-ET2YEMcl.mjs.map +1 -0
- package/dist/{input-Dylds_sI.d.mts → input-NuD8TH8N.d.mts} +3 -3
- package/dist/{input-Dylds_sI.d.mts.map → input-NuD8TH8N.d.mts.map} +1 -1
- package/dist/{inspect-DPLRum7L.d.mts → inspect-B1uXxdKC.d.mts} +11 -15
- package/dist/inspect-B1uXxdKC.d.mts.map +1 -0
- package/dist/{inspect-CcgiZ_F9.mjs → inspect-Cxzs-W0g.mjs} +2 -2
- package/dist/{inspect-CcgiZ_F9.mjs.map → inspect-Cxzs-W0g.mjs.map} +1 -1
- package/dist/kitty-DKQYsQfH.mjs +1 -0
- package/dist/{log-Dy_QnPZF.mjs → log-B4djzy2m.mjs} +5 -5
- package/dist/log-B4djzy2m.mjs.map +1 -0
- package/dist/{logger-DvuX9DPS.mjs → logger-CvJCITzP.mjs} +3 -3
- package/dist/{logger-DvuX9DPS.mjs.map → logger-CvJCITzP.mjs.map} +1 -1
- package/dist/{markdown-BGPa7UzD.mjs → markdown-D3ZtRn6C.mjs} +9 -8
- package/dist/markdown-D3ZtRn6C.mjs.map +1 -0
- package/dist/markdown.d.mts +1 -1
- package/dist/markdown.d.mts.map +1 -1
- package/dist/markdown.mjs +1 -1
- package/dist/math-CU0wmC9N.mjs +1 -0
- package/dist/math-Dd7a1irv.mjs +206 -0
- package/dist/math-Dd7a1irv.mjs.map +1 -0
- package/dist/oklch-Bsh5swbC.mjs +99 -0
- package/dist/oklch-Bsh5swbC.mjs.map +1 -0
- package/dist/{overlay-9WXYiGgW.mjs → overlay-LvOjG7kn.mjs} +2 -2
- package/dist/{overlay-9WXYiGgW.mjs.map → overlay-LvOjG7kn.mjs.map} +1 -1
- package/dist/{picker-JL8lZfRH.d.mts → picker-B-OxKKnD.d.mts} +5 -5
- package/dist/{picker-JL8lZfRH.d.mts.map → picker-B-OxKKnD.d.mts.map} +1 -1
- package/dist/{picker-BqHINl_a.mjs → picker-f6xjgACX.mjs} +2 -2
- package/dist/{picker-BqHINl_a.mjs.map → picker-f6xjgACX.mjs.map} +1 -1
- package/dist/{queries-B_lOwEiE.mjs → queries-BUkBxkuM.mjs} +66 -3
- package/dist/queries-BUkBxkuM.mjs.map +1 -0
- package/dist/{queries-Cvalgu6P.d.mts → queries-C75-wG1B.d.mts} +42 -11
- package/dist/queries-C75-wG1B.d.mts.map +1 -0
- package/dist/{registry-3hLzS4ks.mjs → registry-DUWpSPoo.mjs} +208 -68
- package/dist/registry-DUWpSPoo.mjs.map +1 -0
- package/dist/{render-f7M2856V.mjs → render-B7LfNM5K.mjs} +2 -2
- package/dist/{render-f7M2856V.mjs.map → render-B7LfNM5K.mjs.map} +1 -1
- package/dist/{renderer-V6AGjbyf.mjs → renderer-BLsd-wrG.mjs} +167 -20
- package/dist/renderer-BLsd-wrG.mjs.map +1 -0
- package/dist/renderer-YHbR7JZ4.mjs +1 -0
- package/dist/{renderer-DesbRwjQ.mjs → renderer-aAtkFgll.mjs} +8 -7
- package/dist/renderer-aAtkFgll.mjs.map +1 -0
- package/dist/{select-zGd5pbiB.d.mts → select-BKE5LzdN.d.mts} +3 -3
- package/dist/{select-zGd5pbiB.d.mts.map → select-BKE5LzdN.d.mts.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 +37 -14
- package/dist/shiki/server.mjs.map +1 -1
- package/dist/shiki-B4U0s8jT.mjs +635 -0
- package/dist/shiki-B4U0s8jT.mjs.map +1 -0
- package/dist/shiki-CJauRusM.mjs +20 -0
- package/dist/shiki-CJauRusM.mjs.map +1 -0
- package/dist/style-DslRHzI4.mjs +109 -0
- package/dist/style-DslRHzI4.mjs.map +1 -0
- package/dist/style.d.mts +4 -3
- package/dist/style.d.mts.map +1 -1
- package/dist/style.mjs +4 -4
- package/dist/{text-CRZD9KTN.mjs → text-BoJdKXLU.mjs} +2 -2
- package/dist/{text-CRZD9KTN.mjs.map → text-BoJdKXLU.mjs.map} +1 -1
- package/dist/{text-BefiXAFW.d.mts → text-CmxbA8lk.d.mts} +3 -3
- package/dist/{text-BefiXAFW.d.mts.map → text-CmxbA8lk.d.mts.map} +1 -1
- package/dist/{text-BLz1tRoC.mjs → text-DPrhma4x.mjs} +2 -2
- package/dist/text-DPrhma4x.mjs.map +1 -0
- package/dist/text.d.mts +1 -1
- package/dist/text.mjs +1 -1
- package/dist/theme-C8LkcoaK.mjs +61 -0
- package/dist/theme-C8LkcoaK.mjs.map +1 -0
- package/dist/theme-DVX8dvGG.mjs +1794 -0
- package/dist/theme-DVX8dvGG.mjs.map +1 -0
- package/dist/themes.d.mts +213 -73
- package/dist/themes.d.mts.map +1 -1
- package/dist/themes.mjs +1 -1
- package/dist/{tree-CArtDRec.d.mts → tree-CTvSpF9b.d.mts} +3 -3
- package/dist/{tree-CArtDRec.d.mts.map → tree-CTvSpF9b.d.mts.map} +1 -1
- package/dist/{types-C0EOLZDc.d.mts → types-C9ceMsbJ.d.mts} +137 -137
- package/dist/types-C9ceMsbJ.d.mts.map +1 -0
- package/dist/{widget-DtJU2-BJ.d.mts → widget-DlF32PRp.d.mts} +2 -2
- package/dist/{widget-DtJU2-BJ.d.mts.map → widget-DlF32PRp.d.mts.map} +1 -1
- package/dist/widgets/autocomplete.d.mts +1 -1
- package/dist/widgets/autocomplete.mjs +2 -2
- package/dist/widgets/box.d.mts +1 -1
- package/dist/widgets/box.mjs +1 -1
- package/dist/widgets/code.d.mts +4 -2
- package/dist/widgets/code.d.mts.map +1 -1
- package/dist/widgets/code.mjs +8 -7
- package/dist/widgets/code.mjs.map +1 -1
- 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.d.mts.map +1 -1
- package/dist/widgets/diff.mjs +35 -12
- package/dist/widgets/diff.mjs.map +1 -1
- package/dist/widgets/divider.d.mts +3 -3
- package/dist/widgets/divider.mjs +1 -1
- package/dist/widgets/image.d.mts +1 -1
- package/dist/widgets/image.mjs +4 -4
- package/dist/widgets/image.mjs.map +1 -1
- 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 +4 -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 +4 -4
- package/dist/widgets/progress.mjs.map +1 -1
- package/dist/widgets/select.d.mts +1 -1
- package/dist/widgets/show.d.mts +1 -1
- package/dist/widgets/spinner.d.mts +2 -2
- 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/widget.d.mts +1 -1
- package/package.json +5 -7
- package/assets/themes/dracula-soft.json +0 -119
- package/assets/themes/github-dark.json +0 -123
- package/assets/themes/github-light.json +0 -123
- package/dist/ansi-Clq0ozyA.mjs.map +0 -1
- package/dist/box-DLEcEvDH.mjs.map +0 -1
- package/dist/builder-DC9byAmK.mjs +0 -386
- package/dist/builder-DC9byAmK.mjs.map +0 -1
- package/dist/client-C2GXKfJ1.mjs.map +0 -1
- package/dist/client-bzdHIDL2.mjs +0 -1
- package/dist/ctx-k0wTqeql.mjs +0 -1
- package/dist/divider-l0-JPEIm.mjs.map +0 -1
- package/dist/image-Cm5T-uw-.mjs +0 -108
- package/dist/image-Cm5T-uw-.mjs.map +0 -1
- package/dist/input-D7fQEUdt.mjs.map +0 -1
- package/dist/inspect-DPLRum7L.d.mts.map +0 -1
- package/dist/log-Dy_QnPZF.mjs.map +0 -1
- package/dist/markdown-BGPa7UzD.mjs.map +0 -1
- package/dist/queries-B_lOwEiE.mjs.map +0 -1
- package/dist/queries-Cvalgu6P.d.mts.map +0 -1
- package/dist/registry-3hLzS4ks.mjs.map +0 -1
- package/dist/renderer-BSMOuiLM.mjs +0 -1
- package/dist/renderer-DesbRwjQ.mjs.map +0 -1
- package/dist/renderer-V6AGjbyf.mjs.map +0 -1
- package/dist/shiki--ASSYv4_.mjs +0 -12
- package/dist/shiki--ASSYv4_.mjs.map +0 -1
- package/dist/shiki-D7l5--zz.mjs +0 -432
- package/dist/shiki-D7l5--zz.mjs.map +0 -1
- package/dist/text-BLz1tRoC.mjs.map +0 -1
- package/dist/theme.config-BKXX_noZ.mjs +0 -863
- package/dist/theme.config-BKXX_noZ.mjs.map +0 -1
- package/dist/types-C0EOLZDc.d.mts.map +0 -1
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { C as useActiveOwner, E as withOwner, S as unwrap, _ as peek, d as createSuspenseBoundary, h as memo, l as createRoot, n as SuspenseContext, o as createNode, v as provideContext, x as untrack, y as signal } from "./reactive-f7NpAi69.mjs";
|
|
2
|
-
import { t as defaultTheme } from "./registry-
|
|
3
|
-
import {
|
|
4
|
-
import { t as
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { t as
|
|
8
|
-
import { t as
|
|
1
|
+
import { C as useActiveOwner, E as withOwner, S as unwrap, _ as peek, d as createSuspenseBoundary, f as effect, h as memo, l as createRoot, n as SuspenseContext, o as createNode, v as provideContext, x as untrack, y as signal } from "./reactive-f7NpAi69.mjs";
|
|
2
|
+
import { i as systemTheme, t as defaultTheme } from "./registry-DUWpSPoo.mjs";
|
|
3
|
+
import { c as stripAnsiBg, i as applyDefaultColors, t as RESET } from "./ansi-CMv71xVr.mjs";
|
|
4
|
+
import { t as openStyle } from "./style-DslRHzI4.mjs";
|
|
5
|
+
import { t as styleBuilder } from "./builder-Chwtk0nQ.mjs";
|
|
6
|
+
import { n as box } from "./box-C_N_7ChP.mjs";
|
|
7
|
+
import { t as createCtx } from "./ctx-BaQ2hP5u.mjs";
|
|
8
|
+
import { t as RenderContext } from "./render-B7LfNM5K.mjs";
|
|
9
|
+
import { t as TuiReporter } from "./logger-CvJCITzP.mjs";
|
|
9
10
|
import { o as bumpPlacements } from "./kitty-JbCJC0iQ.mjs";
|
|
10
|
-
import {
|
|
11
|
+
import { a as canonical, t as TerminalQueries } from "./queries-BUkBxkuM.mjs";
|
|
11
12
|
import { Emitter } from "@zaly/shared";
|
|
12
13
|
import { sliceAnsi, stringWidth, stripAnsi } from "@zaly/shared/ansi";
|
|
13
14
|
import { inspect, isDeepStrictEqual } from "node:util";
|
|
@@ -225,6 +226,74 @@ var Actions = class extends Emitter {
|
|
|
225
226
|
}
|
|
226
227
|
};
|
|
227
228
|
//#endregion
|
|
229
|
+
//#region src/input/colors.ts
|
|
230
|
+
/** One renderer run: coalesce updates, discard stale snapshots, and own cleanup. */
|
|
231
|
+
var ColorsWatcher = class {
|
|
232
|
+
queries;
|
|
233
|
+
input;
|
|
234
|
+
write;
|
|
235
|
+
update;
|
|
236
|
+
#ac = new AbortController();
|
|
237
|
+
#appearance;
|
|
238
|
+
#revision = 0;
|
|
239
|
+
#pending = false;
|
|
240
|
+
#running = false;
|
|
241
|
+
#previous = "";
|
|
242
|
+
constructor(queries, input, write, update) {
|
|
243
|
+
this.queries = queries;
|
|
244
|
+
this.input = input;
|
|
245
|
+
this.write = write;
|
|
246
|
+
this.update = update;
|
|
247
|
+
input.on("term-response", ({ event }) => {
|
|
248
|
+
if (event.kind !== "csi" || event.final !== "n" || !/^\?997(?:;[012])?$/.test(event.params)) return;
|
|
249
|
+
if (event.params === "?997") this.#queryAppearance();
|
|
250
|
+
if (event.params === "?997;1") this.#appearance = "dark";
|
|
251
|
+
if (event.params === "?997;2") this.#appearance = "light";
|
|
252
|
+
this.refresh();
|
|
253
|
+
}, { signal: this.#ac.signal });
|
|
254
|
+
input.on("terminal-focus", ({ gained }) => {
|
|
255
|
+
if (!gained) return;
|
|
256
|
+
this.#queryAppearance();
|
|
257
|
+
this.refresh();
|
|
258
|
+
}, { signal: this.#ac.signal });
|
|
259
|
+
write("\x1B[?2031h");
|
|
260
|
+
this.#queryAppearance();
|
|
261
|
+
this.refresh();
|
|
262
|
+
}
|
|
263
|
+
#queryAppearance() {
|
|
264
|
+
this.queries.colorScheme({ signal: this.#ac.signal });
|
|
265
|
+
}
|
|
266
|
+
refresh() {
|
|
267
|
+
if (this.#ac.signal.aborted) return;
|
|
268
|
+
this.#revision++;
|
|
269
|
+
this.#pending = true;
|
|
270
|
+
if (!this.#running) this.#refresh();
|
|
271
|
+
}
|
|
272
|
+
async #refresh() {
|
|
273
|
+
this.#running = true;
|
|
274
|
+
try {
|
|
275
|
+
while (this.#pending && !this.#ac.signal.aborted) {
|
|
276
|
+
this.#pending = false;
|
|
277
|
+
const revision = this.#revision;
|
|
278
|
+
const snapshot = await this.queries.palette({ signal: this.#ac.signal });
|
|
279
|
+
if (revision !== this.#revision) continue;
|
|
280
|
+
const key = JSON.stringify([snapshot, this.#appearance]);
|
|
281
|
+
if (key === this.#previous) continue;
|
|
282
|
+
this.#previous = key;
|
|
283
|
+
this.update(snapshot, this.#appearance);
|
|
284
|
+
}
|
|
285
|
+
} finally {
|
|
286
|
+
this.#running = false;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
stop() {
|
|
290
|
+
if (this.#ac.signal.aborted) return;
|
|
291
|
+
this.#revision++;
|
|
292
|
+
this.#ac.abort();
|
|
293
|
+
this.write("\x1B[?2031l");
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
//#endregion
|
|
228
297
|
//#region src/input/decoder.ts
|
|
229
298
|
var Decoder = class {
|
|
230
299
|
#pending = "";
|
|
@@ -394,7 +463,7 @@ const SS3_NAMES = {
|
|
|
394
463
|
S: "f4"
|
|
395
464
|
};
|
|
396
465
|
function isTerminalCsiResponse(params, final) {
|
|
397
|
-
return final === "c" && (params.startsWith("?") || params.startsWith(">"));
|
|
466
|
+
return final === "c" && (params.startsWith("?") || params.startsWith(">")) || final === "n" && /^\?997(?:;[012])?$/.test(params);
|
|
398
467
|
}
|
|
399
468
|
function handleCsi(params, final, out) {
|
|
400
469
|
if ((final === "M" || final === "m") && params.startsWith("<")) {
|
|
@@ -868,6 +937,21 @@ var Frame = class {
|
|
|
868
937
|
terminal;
|
|
869
938
|
#base = [];
|
|
870
939
|
#current = [];
|
|
940
|
+
#colors = {
|
|
941
|
+
bg: "",
|
|
942
|
+
fg: ""
|
|
943
|
+
};
|
|
944
|
+
get defaultStyle() {
|
|
945
|
+
return this.#colors.fg + this.#colors.bg;
|
|
946
|
+
}
|
|
947
|
+
setDefaultStyle(fg, bg) {
|
|
948
|
+
if (this.#colors.fg === fg && this.#colors.bg === bg) return;
|
|
949
|
+
this.#colors = {
|
|
950
|
+
bg,
|
|
951
|
+
fg
|
|
952
|
+
};
|
|
953
|
+
this.#current.fill(void 0);
|
|
954
|
+
}
|
|
871
955
|
constructor(terminal) {
|
|
872
956
|
this.terminal = terminal;
|
|
873
957
|
}
|
|
@@ -878,7 +962,7 @@ var Frame = class {
|
|
|
878
962
|
begin() {
|
|
879
963
|
const rows = this.terminal.rows;
|
|
880
964
|
if (this.#current.length !== rows || this.#base.length !== rows) this.reset(rows);
|
|
881
|
-
return new RenderFrame(this.terminal, this.#current, this.#base);
|
|
965
|
+
return new RenderFrame(this.terminal, this.#current, this.#base, this.#colors);
|
|
882
966
|
}
|
|
883
967
|
slice(row, from, to, width = this.terminal.cols) {
|
|
884
968
|
return sliceLine(this.#current[row - 1] ?? "", from, to, width);
|
|
@@ -888,12 +972,17 @@ var RenderFrame = class {
|
|
|
888
972
|
terminal;
|
|
889
973
|
current;
|
|
890
974
|
base;
|
|
975
|
+
defaults;
|
|
891
976
|
#ops = [];
|
|
892
977
|
#next;
|
|
893
|
-
constructor(terminal, current, base
|
|
978
|
+
constructor(terminal, current, base, defaults = {
|
|
979
|
+
bg: "",
|
|
980
|
+
fg: ""
|
|
981
|
+
}) {
|
|
894
982
|
this.terminal = terminal;
|
|
895
983
|
this.current = current;
|
|
896
984
|
this.base = base;
|
|
985
|
+
this.defaults = defaults;
|
|
897
986
|
this.#next = base.map((row) => row ?? "");
|
|
898
987
|
}
|
|
899
988
|
get(row) {
|
|
@@ -936,12 +1025,15 @@ var RenderFrame = class {
|
|
|
936
1025
|
for (let i = 0; i < this.#next.length; i++) this.base[i] = this.#next[i];
|
|
937
1026
|
}
|
|
938
1027
|
flush() {
|
|
1028
|
+
const defaults = this.defaults.fg + this.defaults.bg;
|
|
1029
|
+
const restore = defaults ? RESET + defaults : "";
|
|
939
1030
|
for (let i = 0; i < this.#next.length; i++) {
|
|
940
1031
|
const next = this.#next[i];
|
|
941
1032
|
if (this.current[i] === next) continue;
|
|
942
1033
|
const row = i + 1;
|
|
1034
|
+
const content = applyDefaultColors(next.trimEnd(), this.defaults.fg, this.defaults.bg);
|
|
943
1035
|
this.queue((terminal) => {
|
|
944
|
-
terminal.write(terminal.moveTo(row, 1) + terminal.clearLine() +
|
|
1036
|
+
terminal.write(terminal.moveTo(row, 1) + terminal.clearLine() + content + restore);
|
|
945
1037
|
});
|
|
946
1038
|
this.current[i] = next;
|
|
947
1039
|
}
|
|
@@ -978,8 +1070,18 @@ var RenderFrame = class {
|
|
|
978
1070
|
const ops = this.#ops.length;
|
|
979
1071
|
this.flush();
|
|
980
1072
|
const rows = this.#ops.length - ops;
|
|
981
|
-
|
|
982
|
-
this.#ops.length
|
|
1073
|
+
const defaults = this.defaults.fg + this.defaults.bg;
|
|
1074
|
+
if (this.#ops.length === 0) return {
|
|
1075
|
+
ops,
|
|
1076
|
+
rows
|
|
1077
|
+
};
|
|
1078
|
+
if (defaults) this.terminal.write(RESET + defaults);
|
|
1079
|
+
try {
|
|
1080
|
+
for (const op of this.#ops) op(this.terminal);
|
|
1081
|
+
} finally {
|
|
1082
|
+
if (defaults) this.terminal.write(RESET);
|
|
1083
|
+
this.#ops.length = 0;
|
|
1084
|
+
}
|
|
983
1085
|
return {
|
|
984
1086
|
ops,
|
|
985
1087
|
rows
|
|
@@ -2031,7 +2133,7 @@ var Terminal = class {
|
|
|
2031
2133
|
this.deleteImages();
|
|
2032
2134
|
this.setProgress();
|
|
2033
2135
|
if (this.#reserveBottom > 0) this.clearScrollRegion();
|
|
2034
|
-
this.write(`${CSI}?1007l${CSI}?1006l${CSI}?1002l${CSI}?1000l${CSI}?1004l${CSI}?2004l${CSI}?7h${CSI}?25h`);
|
|
2136
|
+
this.write(`${CSI}?1007l${CSI}?1006l${CSI}?1002l${CSI}?1000l${CSI}?1004l${CSI}?2004l${CSI}?2031l${CSI}?7h${CSI}?25h`);
|
|
2035
2137
|
if (this.#altScreen) this.write(`${CSI}?1049l`);
|
|
2036
2138
|
} finally {
|
|
2037
2139
|
this.#started = false;
|
|
@@ -2320,12 +2422,17 @@ var Renderer = class extends Emitter {
|
|
|
2320
2422
|
#decoder = new Decoder();
|
|
2321
2423
|
#stdin;
|
|
2322
2424
|
#theme = signal(void 0);
|
|
2425
|
+
#shiki;
|
|
2426
|
+
#systemTheme;
|
|
2427
|
+
#transparent = signal(false);
|
|
2323
2428
|
/** Root Owner — every surface's function-shape `add` / `append` runs
|
|
2324
2429
|
* its child under this Owner via `withOwner(#rootOwner, …)`, so
|
|
2325
2430
|
* context values provided here (`RenderContext`, future global
|
|
2326
2431
|
* scopes) are visible to every widget body in the tree. */
|
|
2327
2432
|
#rootOwner;
|
|
2328
2433
|
#running = false;
|
|
2434
|
+
#colorsWatcher;
|
|
2435
|
+
#canQueryColors;
|
|
2329
2436
|
#escTimer;
|
|
2330
2437
|
#rendering;
|
|
2331
2438
|
#dirty = false;
|
|
@@ -2351,6 +2458,7 @@ var Renderer = class extends Emitter {
|
|
|
2351
2458
|
} } };
|
|
2352
2459
|
constructor(opts = {}) {
|
|
2353
2460
|
super();
|
|
2461
|
+
this.#canQueryColors = !!((opts.stdout ?? process.stdout).isTTY && (opts.stdin ?? process.stdin).isTTY);
|
|
2354
2462
|
this.terminal = new Terminal({
|
|
2355
2463
|
altScreen: opts.altScreen,
|
|
2356
2464
|
hookSignals: opts.hookSignals,
|
|
@@ -2359,7 +2467,9 @@ var Renderer = class extends Emitter {
|
|
|
2359
2467
|
stdout: opts.stdout
|
|
2360
2468
|
});
|
|
2361
2469
|
this.frame = new Frame(this.terminal);
|
|
2362
|
-
|
|
2470
|
+
this.#shiki = opts.shiki ?? "auto";
|
|
2471
|
+
if (opts.theme || this.#shiki !== "auto") this.#theme.set(this.#withShiki(opts.theme ?? defaultTheme));
|
|
2472
|
+
this.#transparent.set(() => opts.transparent ?? false);
|
|
2363
2473
|
this.ui = new UI(this);
|
|
2364
2474
|
this.stream = new Stream(this, { fixedFooterHeight: opts.fixedFooterHeight });
|
|
2365
2475
|
this.overlay = new OverlaySurface(this);
|
|
@@ -2375,6 +2485,13 @@ var Renderer = class extends Emitter {
|
|
|
2375
2485
|
style: memo(() => styleBuilder(this.#theme.get())),
|
|
2376
2486
|
theme: this.#theme.get
|
|
2377
2487
|
});
|
|
2488
|
+
effect(() => {
|
|
2489
|
+
const theme = this.theme;
|
|
2490
|
+
const transparent = this.transparent;
|
|
2491
|
+
const previous = this.frame.defaultStyle;
|
|
2492
|
+
this.frame.setDefaultStyle(openStyle({ fg: opts.defaultStyle?.fg }, theme), openStyle({ bg: transparent ? void 0 : opts.defaultStyle?.bg }, theme));
|
|
2493
|
+
if (this.frame.defaultStyle !== previous) untrack(() => this.#schedule());
|
|
2494
|
+
});
|
|
2378
2495
|
return useActiveOwner();
|
|
2379
2496
|
});
|
|
2380
2497
|
const reporter = new TuiReporter(opts.reporter);
|
|
@@ -2397,7 +2514,8 @@ var Renderer = class extends Emitter {
|
|
|
2397
2514
|
this.#ctx = void 0;
|
|
2398
2515
|
this.terminal.sync(() => {
|
|
2399
2516
|
this.terminal.clearScrollRegion();
|
|
2400
|
-
this.
|
|
2517
|
+
const defaults = this.frame.defaultStyle;
|
|
2518
|
+
this.terminal.write(`${defaults ? RESET + defaults : ""}${this.terminal.moveTo(1, 1)}\x1b[2J${defaults ? RESET : ""}`);
|
|
2401
2519
|
if (this.terminal.reserveBottom > 0) this.terminal.setScrollRegion(1, this.terminal.scrollBottom);
|
|
2402
2520
|
});
|
|
2403
2521
|
this.frame.reset();
|
|
@@ -2453,7 +2571,8 @@ var Renderer = class extends Emitter {
|
|
|
2453
2571
|
* Nodes that compare cache against `ctx.version` need the version
|
|
2454
2572
|
* bump that already happens elsewhere on theme-driven invalidation. */
|
|
2455
2573
|
set theme(theme) {
|
|
2456
|
-
this.#theme.set(theme);
|
|
2574
|
+
this.#theme.set(this.#withShiki(theme.id === "system" ? this.#systemTheme ?? theme : theme));
|
|
2575
|
+
this.#syncSystemTheme();
|
|
2457
2576
|
this.#ctxVersion++;
|
|
2458
2577
|
this.stream.invalidate();
|
|
2459
2578
|
this.ui.invalidate();
|
|
@@ -2464,6 +2583,32 @@ var Renderer = class extends Emitter {
|
|
|
2464
2583
|
get theme() {
|
|
2465
2584
|
return this.#theme.get() ?? defaultTheme;
|
|
2466
2585
|
}
|
|
2586
|
+
#withShiki(theme) {
|
|
2587
|
+
return this.#shiki === "auto" ? theme : {
|
|
2588
|
+
...theme,
|
|
2589
|
+
shiki: this.#shiki
|
|
2590
|
+
};
|
|
2591
|
+
}
|
|
2592
|
+
#syncSystemTheme() {
|
|
2593
|
+
if (!this.#running || !this.#canQueryColors) {
|
|
2594
|
+
this.#colorsWatcher?.stop();
|
|
2595
|
+
this.#colorsWatcher = void 0;
|
|
2596
|
+
return;
|
|
2597
|
+
}
|
|
2598
|
+
if (peek(this.#theme.get)?.id !== "system") return;
|
|
2599
|
+
this.#colorsWatcher ??= new ColorsWatcher(this.queries, this.input, (sequence) => this.terminal.write(sequence), (snapshot, appearance) => {
|
|
2600
|
+
this.#systemTheme = systemTheme(snapshot, appearance);
|
|
2601
|
+
if (peek(this.#theme.get)?.id === "system") this.theme = this.#systemTheme;
|
|
2602
|
+
});
|
|
2603
|
+
}
|
|
2604
|
+
/** Inherit the terminal background instead of painting the base background. */
|
|
2605
|
+
set transparent(transparent) {
|
|
2606
|
+
this.#transparent.set(transparent);
|
|
2607
|
+
}
|
|
2608
|
+
/** Current transparency setting. (tracked) */
|
|
2609
|
+
get transparent() {
|
|
2610
|
+
return unwrap(this.#transparent.get()) || this.theme.id === "system";
|
|
2611
|
+
}
|
|
2467
2612
|
start() {
|
|
2468
2613
|
if (this.#running) return;
|
|
2469
2614
|
this.#running = true;
|
|
@@ -2471,6 +2616,7 @@ var Renderer = class extends Emitter {
|
|
|
2471
2616
|
this.#stdin.setEncoding?.("utf8");
|
|
2472
2617
|
this.#stdin.on("data", this.#onData);
|
|
2473
2618
|
this.#stdin.resume?.();
|
|
2619
|
+
this.#syncSystemTheme();
|
|
2474
2620
|
this.emit("start");
|
|
2475
2621
|
if (this.#dirty) this.#schedule();
|
|
2476
2622
|
process.on("unhandledRejection", (reason) => this.logger.child("unhandledRejection").error("Unhandled Rejection:", reason));
|
|
@@ -2479,6 +2625,7 @@ var Renderer = class extends Emitter {
|
|
|
2479
2625
|
if (!this.#running) return;
|
|
2480
2626
|
this.emit("stop");
|
|
2481
2627
|
this.#running = false;
|
|
2628
|
+
this.#syncSystemTheme();
|
|
2482
2629
|
this.#stdin.off("data", this.#onData);
|
|
2483
2630
|
this.#stdin.pause?.();
|
|
2484
2631
|
if (this.#escTimer !== void 0) {
|
|
@@ -2642,4 +2789,4 @@ var Renderer = class extends Emitter {
|
|
|
2642
2789
|
//#endregion
|
|
2643
2790
|
export { Renderer };
|
|
2644
2791
|
|
|
2645
|
-
//# sourceMappingURL=renderer-
|
|
2792
|
+
//# sourceMappingURL=renderer-BLsd-wrG.mjs.map
|