@zaly/tui 0.0.12 → 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 +226 -1046
- package/assets/themes/andromeeda.json +97 -0
- package/assets/themes/ayu-dark.json +31 -25
- package/assets/themes/ayu-light.json +106 -0
- package/assets/themes/ayu-mirage.json +106 -0
- package/assets/themes/catppuccin-frappe.json +43 -40
- package/assets/themes/catppuccin-latte.json +43 -40
- package/assets/themes/catppuccin-macchiato.json +43 -40
- package/assets/themes/catppuccin-mocha.json +43 -40
- package/assets/themes/dark-plus.json +99 -0
- package/assets/themes/dracula.json +47 -47
- package/assets/themes/everforest-dark.json +28 -26
- package/assets/themes/everforest-light.json +28 -26
- 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 -29
- 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 -49
- package/assets/themes/kanagawa-lotus.json +105 -0
- package/assets/themes/kanagawa-wave.json +56 -50
- 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 -45
- package/assets/themes/material-theme.json +102 -0
- package/assets/themes/min-dark.json +69 -14
- package/assets/themes/min-light.json +68 -17
- package/assets/themes/monokai.json +54 -47
- package/assets/themes/night-owl-light.json +105 -0
- package/assets/themes/night-owl.json +57 -49
- package/assets/themes/nord.json +53 -39
- package/assets/themes/one-dark-pro.json +46 -38
- package/assets/themes/one-light.json +52 -41
- package/assets/themes/poimandres.json +51 -49
- package/assets/themes/rose-pine-dawn.json +99 -0
- package/assets/themes/rose-pine-moon.json +99 -0
- package/assets/themes/rose-pine.json +50 -33
- package/assets/themes/solarized-dark.json +38 -31
- package/assets/themes/solarized-light.json +40 -33
- package/assets/themes/synthwave-84.json +47 -30
- package/assets/themes/tokyonight-day.json +3 -3
- package/assets/themes/tokyonight-moon.json +3 -2
- package/assets/themes/tokyonight-night.json +3 -2
- package/assets/themes/tokyonight-storm.json +3 -2
- package/assets/themes/vesper.json +50 -42
- package/assets/themes/vitesse-black.json +103 -0
- package/assets/themes/vitesse-dark.json +26 -30
- package/assets/themes/vitesse-light.json +26 -30
- package/dist/{actions-Dc4D4uSf.d.mts → actions--ODlgCQ5.d.mts} +4 -4
- package/dist/{actions-Dc4D4uSf.d.mts.map → actions--ODlgCQ5.d.mts.map} +1 -1
- package/dist/{ansi-DZlXaItJ.mjs → ansi-CMv71xVr.mjs} +3 -31
- package/dist/ansi-CMv71xVr.mjs.map +1 -0
- package/dist/ansi.d.mts +1 -1
- package/dist/ansi.mjs +1 -1
- package/dist/{autocomplete-StW1QJZJ.d.mts → autocomplete-CD30kSe_.d.mts} +4 -4
- package/dist/{autocomplete-StW1QJZJ.d.mts.map → autocomplete-CD30kSe_.d.mts.map} +1 -1
- package/dist/{box-BkP4MF82.mjs → box-C_N_7ChP.mjs} +2 -2
- package/dist/{box-BkP4MF82.mjs.map → box-C_N_7ChP.mjs.map} +1 -1
- package/dist/builder-Chwtk0nQ.mjs +196 -0
- package/dist/builder-Chwtk0nQ.mjs.map +1 -0
- package/dist/{callbacks-BwWTCqPJ.mjs → callbacks-DLecWn7G.mjs} +4 -4
- package/dist/{callbacks-BwWTCqPJ.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-B7BmPUCD.mjs → ctx-BaQ2hP5u.mjs} +3 -3
- package/dist/{ctx-B7BmPUCD.mjs.map → ctx-BaQ2hP5u.mjs.map} +1 -1
- package/dist/ctx-CndlTp1T.mjs +1 -0
- package/dist/{divider-TSx9NhI_.mjs → divider-BlNNN2OS.mjs} +2 -2
- package/dist/{divider-TSx9NhI_.mjs.map → divider-BlNNN2OS.mjs.map} +1 -1
- package/dist/{files-7DUYSeNc.d.mts → files-B_5HDBPp.d.mts} +3 -3
- package/dist/{files-7DUYSeNc.d.mts.map → files-B_5HDBPp.d.mts.map} +1 -1
- package/dist/{github-C1KfXk98.d.mts → github-CyRwUQ3y.d.mts} +3 -3
- package/dist/{github-C1KfXk98.d.mts.map → github-CyRwUQ3y.d.mts.map} +1 -1
- package/dist/{image-VaT7AN-S.d.mts → image-BLls2F4t.d.mts} +2 -2
- package/dist/{image-VaT7AN-S.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-BGTTujDN.mjs → input-ET2YEMcl.mjs} +2 -2
- package/dist/{input-BGTTujDN.mjs.map → input-ET2YEMcl.mjs.map} +1 -1
- package/dist/{input-BAYux7qo.d.mts → input-NuD8TH8N.d.mts} +3 -3
- package/dist/{input-BAYux7qo.d.mts.map → input-NuD8TH8N.d.mts.map} +1 -1
- package/dist/{inspect-CfNydMgO.d.mts → inspect-B1uXxdKC.d.mts} +2 -2
- package/dist/{inspect-CfNydMgO.d.mts.map → inspect-B1uXxdKC.d.mts.map} +1 -1
- package/dist/{inspect-jG_W4njH.mjs → inspect-Cxzs-W0g.mjs} +2 -2
- package/dist/{inspect-jG_W4njH.mjs.map → inspect-Cxzs-W0g.mjs.map} +1 -1
- package/dist/kitty-DKQYsQfH.mjs +1 -0
- package/dist/{log-ByKlM4iI.mjs → log-B4djzy2m.mjs} +4 -4
- package/dist/{log-ByKlM4iI.mjs.map → log-B4djzy2m.mjs.map} +1 -1
- package/dist/{logger-DSQb0sLP.mjs → logger-CvJCITzP.mjs} +3 -3
- package/dist/{logger-DSQb0sLP.mjs.map → logger-CvJCITzP.mjs.map} +1 -1
- package/dist/{markdown-CwRmWuU6.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-BnvOKtGT.mjs → overlay-LvOjG7kn.mjs} +2 -2
- package/dist/{overlay-BnvOKtGT.mjs.map → overlay-LvOjG7kn.mjs.map} +1 -1
- package/dist/{picker-DQs_IW77.d.mts → picker-B-OxKKnD.d.mts} +5 -5
- package/dist/{picker-DQs_IW77.d.mts.map → picker-B-OxKKnD.d.mts.map} +1 -1
- package/dist/{picker-Dh5IUrTk.mjs → picker-f6xjgACX.mjs} +2 -2
- package/dist/{picker-Dh5IUrTk.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-BDX8mcl5.d.mts → queries-C75-wG1B.d.mts} +19 -4
- package/dist/{queries-BDX8mcl5.d.mts.map → queries-C75-wG1B.d.mts.map} +1 -1
- package/dist/{registry-D-suU3g0.mjs → registry-DUWpSPoo.mjs} +202 -57
- package/dist/registry-DUWpSPoo.mjs.map +1 -0
- package/dist/{render-DEIUNLkh.mjs → render-B7LfNM5K.mjs} +2 -2
- package/dist/{render-DEIUNLkh.mjs.map → render-B7LfNM5K.mjs.map} +1 -1
- package/dist/{renderer-zDNlAovy.mjs → renderer-BLsd-wrG.mjs} +110 -14
- package/dist/renderer-BLsd-wrG.mjs.map +1 -0
- package/dist/renderer-YHbR7JZ4.mjs +1 -0
- package/dist/{renderer-MQue4Da5.mjs → renderer-aAtkFgll.mjs} +8 -7
- package/dist/renderer-aAtkFgll.mjs.map +1 -0
- package/dist/{select-J2KtwxyK.d.mts → select-BKE5LzdN.d.mts} +3 -3
- package/dist/{select-J2KtwxyK.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-CkQ7Irmt.mjs → text-BoJdKXLU.mjs} +2 -2
- package/dist/{text-CkQ7Irmt.mjs.map → text-BoJdKXLU.mjs.map} +1 -1
- package/dist/{text-CCYs9RB2.d.mts → text-CmxbA8lk.d.mts} +3 -3
- package/dist/{text-CCYs9RB2.d.mts.map → text-CmxbA8lk.d.mts.map} +1 -1
- package/dist/{text-XvPfweeg.mjs → text-DPrhma4x.mjs} +2 -2
- package/dist/{text-XvPfweeg.mjs.map → text-DPrhma4x.mjs.map} +1 -1
- 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-DJl5W_B7.d.mts → tree-CTvSpF9b.d.mts} +3 -3
- package/dist/{tree-DJl5W_B7.d.mts.map → tree-CTvSpF9b.d.mts.map} +1 -1
- package/dist/{types-D2EYlzmK.d.mts → types-C9ceMsbJ.d.mts} +136 -128
- package/dist/types-C9ceMsbJ.d.mts.map +1 -0
- package/dist/{widget-DPqBbB57.d.mts → widget-DlF32PRp.d.mts} +2 -2
- package/dist/{widget-DPqBbB57.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 +2 -2
- 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 +2 -2
- 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 -100
- package/assets/themes/github-dark.json +0 -104
- package/assets/themes/github-light.json +0 -104
- package/dist/ansi-DZlXaItJ.mjs.map +0 -1
- package/dist/builder-1z5ewEWK.mjs +0 -386
- package/dist/builder-1z5ewEWK.mjs.map +0 -1
- package/dist/client-C2GXKfJ1.mjs.map +0 -1
- package/dist/client-bzdHIDL2.mjs +0 -1
- package/dist/ctx-D_JgJ8Eo.mjs +0 -1
- package/dist/image-Cm5T-uw-.mjs +0 -108
- package/dist/image-Cm5T-uw-.mjs.map +0 -1
- package/dist/markdown-CwRmWuU6.mjs.map +0 -1
- package/dist/queries-B_lOwEiE.mjs.map +0 -1
- package/dist/registry-D-suU3g0.mjs.map +0 -1
- package/dist/renderer-DhqbEVVR.mjs +0 -1
- package/dist/renderer-MQue4Da5.mjs.map +0 -1
- package/dist/renderer-zDNlAovy.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/theme.config-B3Yx--C2.mjs +0 -855
- package/dist/theme.config-B3Yx--C2.mjs.map +0 -1
- package/dist/types-D2EYlzmK.d.mts.map +0 -1
|
@@ -1,13 +1,14 @@
|
|
|
1
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 { t as defaultTheme } from "./registry-
|
|
3
|
-
import { c as stripAnsiBg, i as applyDefaultColors, t as RESET } from "./ansi-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { t as
|
|
8
|
-
import { t as
|
|
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("<")) {
|
|
@@ -2064,7 +2133,7 @@ var Terminal = class {
|
|
|
2064
2133
|
this.deleteImages();
|
|
2065
2134
|
this.setProgress();
|
|
2066
2135
|
if (this.#reserveBottom > 0) this.clearScrollRegion();
|
|
2067
|
-
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`);
|
|
2068
2137
|
if (this.#altScreen) this.write(`${CSI}?1049l`);
|
|
2069
2138
|
} finally {
|
|
2070
2139
|
this.#started = false;
|
|
@@ -2353,6 +2422,8 @@ var Renderer = class extends Emitter {
|
|
|
2353
2422
|
#decoder = new Decoder();
|
|
2354
2423
|
#stdin;
|
|
2355
2424
|
#theme = signal(void 0);
|
|
2425
|
+
#shiki;
|
|
2426
|
+
#systemTheme;
|
|
2356
2427
|
#transparent = signal(false);
|
|
2357
2428
|
/** Root Owner — every surface's function-shape `add` / `append` runs
|
|
2358
2429
|
* its child under this Owner via `withOwner(#rootOwner, …)`, so
|
|
@@ -2360,6 +2431,8 @@ var Renderer = class extends Emitter {
|
|
|
2360
2431
|
* scopes) are visible to every widget body in the tree. */
|
|
2361
2432
|
#rootOwner;
|
|
2362
2433
|
#running = false;
|
|
2434
|
+
#colorsWatcher;
|
|
2435
|
+
#canQueryColors;
|
|
2363
2436
|
#escTimer;
|
|
2364
2437
|
#rendering;
|
|
2365
2438
|
#dirty = false;
|
|
@@ -2385,6 +2458,7 @@ var Renderer = class extends Emitter {
|
|
|
2385
2458
|
} } };
|
|
2386
2459
|
constructor(opts = {}) {
|
|
2387
2460
|
super();
|
|
2461
|
+
this.#canQueryColors = !!((opts.stdout ?? process.stdout).isTTY && (opts.stdin ?? process.stdin).isTTY);
|
|
2388
2462
|
this.terminal = new Terminal({
|
|
2389
2463
|
altScreen: opts.altScreen,
|
|
2390
2464
|
hookSignals: opts.hookSignals,
|
|
@@ -2393,7 +2467,8 @@ var Renderer = class extends Emitter {
|
|
|
2393
2467
|
stdout: opts.stdout
|
|
2394
2468
|
});
|
|
2395
2469
|
this.frame = new Frame(this.terminal);
|
|
2396
|
-
|
|
2470
|
+
this.#shiki = opts.shiki ?? "auto";
|
|
2471
|
+
if (opts.theme || this.#shiki !== "auto") this.#theme.set(this.#withShiki(opts.theme ?? defaultTheme));
|
|
2397
2472
|
this.#transparent.set(() => opts.transparent ?? false);
|
|
2398
2473
|
this.ui = new UI(this);
|
|
2399
2474
|
this.stream = new Stream(this, { fixedFooterHeight: opts.fixedFooterHeight });
|
|
@@ -2496,7 +2571,8 @@ var Renderer = class extends Emitter {
|
|
|
2496
2571
|
* Nodes that compare cache against `ctx.version` need the version
|
|
2497
2572
|
* bump that already happens elsewhere on theme-driven invalidation. */
|
|
2498
2573
|
set theme(theme) {
|
|
2499
|
-
this.#theme.set(theme);
|
|
2574
|
+
this.#theme.set(this.#withShiki(theme.id === "system" ? this.#systemTheme ?? theme : theme));
|
|
2575
|
+
this.#syncSystemTheme();
|
|
2500
2576
|
this.#ctxVersion++;
|
|
2501
2577
|
this.stream.invalidate();
|
|
2502
2578
|
this.ui.invalidate();
|
|
@@ -2507,13 +2583,31 @@ var Renderer = class extends Emitter {
|
|
|
2507
2583
|
get theme() {
|
|
2508
2584
|
return this.#theme.get() ?? defaultTheme;
|
|
2509
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
|
+
}
|
|
2510
2604
|
/** Inherit the terminal background instead of painting the base background. */
|
|
2511
2605
|
set transparent(transparent) {
|
|
2512
2606
|
this.#transparent.set(transparent);
|
|
2513
2607
|
}
|
|
2514
2608
|
/** Current transparency setting. (tracked) */
|
|
2515
2609
|
get transparent() {
|
|
2516
|
-
return unwrap(this.#transparent.get());
|
|
2610
|
+
return unwrap(this.#transparent.get()) || this.theme.id === "system";
|
|
2517
2611
|
}
|
|
2518
2612
|
start() {
|
|
2519
2613
|
if (this.#running) return;
|
|
@@ -2522,6 +2616,7 @@ var Renderer = class extends Emitter {
|
|
|
2522
2616
|
this.#stdin.setEncoding?.("utf8");
|
|
2523
2617
|
this.#stdin.on("data", this.#onData);
|
|
2524
2618
|
this.#stdin.resume?.();
|
|
2619
|
+
this.#syncSystemTheme();
|
|
2525
2620
|
this.emit("start");
|
|
2526
2621
|
if (this.#dirty) this.#schedule();
|
|
2527
2622
|
process.on("unhandledRejection", (reason) => this.logger.child("unhandledRejection").error("Unhandled Rejection:", reason));
|
|
@@ -2530,6 +2625,7 @@ var Renderer = class extends Emitter {
|
|
|
2530
2625
|
if (!this.#running) return;
|
|
2531
2626
|
this.emit("stop");
|
|
2532
2627
|
this.#running = false;
|
|
2628
|
+
this.#syncSystemTheme();
|
|
2533
2629
|
this.#stdin.off("data", this.#onData);
|
|
2534
2630
|
this.#stdin.pause?.();
|
|
2535
2631
|
if (this.#escTimer !== void 0) {
|
|
@@ -2693,4 +2789,4 @@ var Renderer = class extends Emitter {
|
|
|
2693
2789
|
//#endregion
|
|
2694
2790
|
export { Renderer };
|
|
2695
2791
|
|
|
2696
|
-
//# sourceMappingURL=renderer-
|
|
2792
|
+
//# sourceMappingURL=renderer-BLsd-wrG.mjs.map
|