@zaly/tui 0.0.11 → 0.0.12

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.
Files changed (180) hide show
  1. package/assets/schemas/theme.schema.json +351 -36
  2. package/assets/themes/ayu-dark.json +2 -21
  3. package/assets/themes/catppuccin-frappe.json +2 -21
  4. package/assets/themes/catppuccin-latte.json +2 -21
  5. package/assets/themes/catppuccin-macchiato.json +2 -21
  6. package/assets/themes/catppuccin-mocha.json +2 -21
  7. package/assets/themes/dracula-soft.json +2 -21
  8. package/assets/themes/dracula.json +2 -21
  9. package/assets/themes/everforest-dark.json +2 -21
  10. package/assets/themes/everforest-light.json +2 -21
  11. package/assets/themes/github-dark.json +2 -21
  12. package/assets/themes/github-light.json +2 -21
  13. package/assets/themes/gruvbox-dark-medium.json +2 -21
  14. package/assets/themes/kanagawa-dragon.json +2 -21
  15. package/assets/themes/kanagawa-wave.json +2 -21
  16. package/assets/themes/material-theme-palenight.json +2 -21
  17. package/assets/themes/min-dark.json +2 -18
  18. package/assets/themes/min-light.json +2 -18
  19. package/assets/themes/monokai.json +2 -21
  20. package/assets/themes/night-owl.json +2 -21
  21. package/assets/themes/nord.json +2 -18
  22. package/assets/themes/one-dark-pro.json +2 -21
  23. package/assets/themes/one-light.json +2 -20
  24. package/assets/themes/poimandres.json +2 -21
  25. package/assets/themes/rose-pine.json +2 -18
  26. package/assets/themes/solarized-dark.json +2 -21
  27. package/assets/themes/solarized-light.json +2 -21
  28. package/assets/themes/synthwave-84.json +2 -21
  29. package/assets/themes/tokyonight-day.json +4 -5
  30. package/assets/themes/tokyonight-moon.json +3 -4
  31. package/assets/themes/tokyonight-night.json +3 -4
  32. package/assets/themes/tokyonight-storm.json +3 -4
  33. package/assets/themes/vesper.json +2 -17
  34. package/assets/themes/vitesse-dark.json +2 -21
  35. package/assets/themes/vitesse-light.json +2 -21
  36. package/dist/{actions-DFboj3g5.d.mts → actions-Dc4D4uSf.d.mts} +4 -4
  37. package/dist/{actions-DFboj3g5.d.mts.map → actions-Dc4D4uSf.d.mts.map} +1 -1
  38. package/dist/{ansi-Clq0ozyA.mjs → ansi-DZlXaItJ.mjs} +37 -2
  39. package/dist/ansi-DZlXaItJ.mjs.map +1 -0
  40. package/dist/ansi.d.mts +3 -1
  41. package/dist/ansi.d.mts.map +1 -1
  42. package/dist/ansi.mjs +1 -1
  43. package/dist/{autocomplete-CxzetPOo.d.mts → autocomplete-StW1QJZJ.d.mts} +4 -4
  44. package/dist/{autocomplete-CxzetPOo.d.mts.map → autocomplete-StW1QJZJ.d.mts.map} +1 -1
  45. package/dist/{box-DLEcEvDH.mjs → box-BkP4MF82.mjs} +2 -2
  46. package/dist/box-BkP4MF82.mjs.map +1 -0
  47. package/dist/{builder-DC9byAmK.mjs → builder-1z5ewEWK.mjs} +4 -4
  48. package/dist/builder-1z5ewEWK.mjs.map +1 -0
  49. package/dist/{callbacks-D132G8dy.mjs → callbacks-BwWTCqPJ.mjs} +3 -3
  50. package/dist/{callbacks-D132G8dy.mjs.map → callbacks-BwWTCqPJ.mjs.map} +1 -1
  51. package/dist/{ctx-8Nuf5BrN.mjs → ctx-B7BmPUCD.mjs} +3 -3
  52. package/dist/{ctx-8Nuf5BrN.mjs.map → ctx-B7BmPUCD.mjs.map} +1 -1
  53. package/dist/ctx-D_JgJ8Eo.mjs +1 -0
  54. package/dist/{divider-l0-JPEIm.mjs → divider-TSx9NhI_.mjs} +2 -2
  55. package/dist/divider-TSx9NhI_.mjs.map +1 -0
  56. package/dist/{files-BUsa-RVl.d.mts → files-7DUYSeNc.d.mts} +3 -3
  57. package/dist/{files-BUsa-RVl.d.mts.map → files-7DUYSeNc.d.mts.map} +1 -1
  58. package/dist/{github-D89A3F9U.d.mts → github-C1KfXk98.d.mts} +3 -3
  59. package/dist/{github-D89A3F9U.d.mts.map → github-C1KfXk98.d.mts.map} +1 -1
  60. package/dist/github-Cy2hfWJ7.mjs.map +1 -1
  61. package/dist/{image-34bU73bW.d.mts → image-VaT7AN-S.d.mts} +2 -2
  62. package/dist/{image-34bU73bW.d.mts.map → image-VaT7AN-S.d.mts.map} +1 -1
  63. package/dist/image.d.mts +1 -1
  64. package/dist/index.d.mts +3 -3
  65. package/dist/index.mjs +4 -4
  66. package/dist/{input-Dylds_sI.d.mts → input-BAYux7qo.d.mts} +3 -3
  67. package/dist/{input-Dylds_sI.d.mts.map → input-BAYux7qo.d.mts.map} +1 -1
  68. package/dist/{input-D7fQEUdt.mjs → input-BGTTujDN.mjs} +16 -11
  69. package/dist/input-BGTTujDN.mjs.map +1 -0
  70. package/dist/{inspect-DPLRum7L.d.mts → inspect-CfNydMgO.d.mts} +11 -15
  71. package/dist/inspect-CfNydMgO.d.mts.map +1 -0
  72. package/dist/{inspect-CcgiZ_F9.mjs → inspect-jG_W4njH.mjs} +2 -2
  73. package/dist/{inspect-CcgiZ_F9.mjs.map → inspect-jG_W4njH.mjs.map} +1 -1
  74. package/dist/{log-Dy_QnPZF.mjs → log-ByKlM4iI.mjs} +5 -5
  75. package/dist/log-ByKlM4iI.mjs.map +1 -0
  76. package/dist/{logger-DvuX9DPS.mjs → logger-DSQb0sLP.mjs} +3 -3
  77. package/dist/{logger-DvuX9DPS.mjs.map → logger-DSQb0sLP.mjs.map} +1 -1
  78. package/dist/{markdown-BGPa7UzD.mjs → markdown-CwRmWuU6.mjs} +5 -5
  79. package/dist/{markdown-BGPa7UzD.mjs.map → markdown-CwRmWuU6.mjs.map} +1 -1
  80. package/dist/markdown.d.mts +1 -1
  81. package/dist/markdown.mjs +1 -1
  82. package/dist/{overlay-9WXYiGgW.mjs → overlay-BnvOKtGT.mjs} +2 -2
  83. package/dist/{overlay-9WXYiGgW.mjs.map → overlay-BnvOKtGT.mjs.map} +1 -1
  84. package/dist/{picker-JL8lZfRH.d.mts → picker-DQs_IW77.d.mts} +5 -5
  85. package/dist/{picker-JL8lZfRH.d.mts.map → picker-DQs_IW77.d.mts.map} +1 -1
  86. package/dist/{picker-BqHINl_a.mjs → picker-Dh5IUrTk.mjs} +2 -2
  87. package/dist/{picker-BqHINl_a.mjs.map → picker-Dh5IUrTk.mjs.map} +1 -1
  88. package/dist/{queries-Cvalgu6P.d.mts → queries-BDX8mcl5.d.mts} +26 -10
  89. package/dist/queries-BDX8mcl5.d.mts.map +1 -0
  90. package/dist/{registry-3hLzS4ks.mjs → registry-D-suU3g0.mjs} +15 -20
  91. package/dist/registry-D-suU3g0.mjs.map +1 -0
  92. package/dist/{render-f7M2856V.mjs → render-DEIUNLkh.mjs} +2 -2
  93. package/dist/{render-f7M2856V.mjs.map → render-DEIUNLkh.mjs.map} +1 -1
  94. package/dist/renderer-DhqbEVVR.mjs +1 -0
  95. package/dist/{renderer-DesbRwjQ.mjs → renderer-MQue4Da5.mjs} +2 -2
  96. package/dist/{renderer-DesbRwjQ.mjs.map → renderer-MQue4Da5.mjs.map} +1 -1
  97. package/dist/{renderer-V6AGjbyf.mjs → renderer-zDNlAovy.mjs} +66 -15
  98. package/dist/renderer-zDNlAovy.mjs.map +1 -0
  99. package/dist/{select-zGd5pbiB.d.mts → select-J2KtwxyK.d.mts} +3 -3
  100. package/dist/{select-zGd5pbiB.d.mts.map → select-J2KtwxyK.d.mts.map} +1 -1
  101. package/dist/services/logger.d.mts +1 -1
  102. package/dist/services/logger.mjs +1 -1
  103. package/dist/services/notifier.d.mts +1 -1
  104. package/dist/services/notifier.mjs +2 -2
  105. package/dist/services/picker.d.mts +5 -5
  106. package/dist/services/picker.mjs +6 -6
  107. package/dist/services/prompt.d.mts +4 -4
  108. package/dist/services/prompt.mjs +5 -5
  109. package/dist/shiki/server.mjs +1 -1
  110. package/dist/style.d.mts +2 -2
  111. package/dist/style.mjs +3 -3
  112. package/dist/{text-BefiXAFW.d.mts → text-CCYs9RB2.d.mts} +3 -3
  113. package/dist/{text-BefiXAFW.d.mts.map → text-CCYs9RB2.d.mts.map} +1 -1
  114. package/dist/{text-CRZD9KTN.mjs → text-CkQ7Irmt.mjs} +2 -2
  115. package/dist/{text-CRZD9KTN.mjs.map → text-CkQ7Irmt.mjs.map} +1 -1
  116. package/dist/{text-BLz1tRoC.mjs → text-XvPfweeg.mjs} +2 -2
  117. package/dist/text-XvPfweeg.mjs.map +1 -0
  118. package/dist/text.d.mts +1 -1
  119. package/dist/text.mjs +1 -1
  120. package/dist/{theme.config-BKXX_noZ.mjs → theme.config-B3Yx--C2.mjs} +12 -20
  121. package/dist/theme.config-B3Yx--C2.mjs.map +1 -0
  122. package/dist/themes.d.mts +1 -1
  123. package/dist/themes.mjs +1 -1
  124. package/dist/{tree-CArtDRec.d.mts → tree-DJl5W_B7.d.mts} +3 -3
  125. package/dist/{tree-CArtDRec.d.mts.map → tree-DJl5W_B7.d.mts.map} +1 -1
  126. package/dist/{types-C0EOLZDc.d.mts → types-D2EYlzmK.d.mts} +10 -18
  127. package/dist/types-D2EYlzmK.d.mts.map +1 -0
  128. package/dist/{widget-DtJU2-BJ.d.mts → widget-DPqBbB57.d.mts} +2 -2
  129. package/dist/{widget-DtJU2-BJ.d.mts.map → widget-DPqBbB57.d.mts.map} +1 -1
  130. package/dist/widgets/autocomplete.d.mts +1 -1
  131. package/dist/widgets/autocomplete.mjs +2 -2
  132. package/dist/widgets/box.d.mts +1 -1
  133. package/dist/widgets/box.mjs +1 -1
  134. package/dist/widgets/code.d.mts +2 -2
  135. package/dist/widgets/code.mjs +4 -4
  136. package/dist/widgets/completions/actions.d.mts +1 -1
  137. package/dist/widgets/completions/files.d.mts +1 -1
  138. package/dist/widgets/completions/github.d.mts +1 -1
  139. package/dist/widgets/completions/index.d.mts +3 -3
  140. package/dist/widgets/diff.d.mts +2 -2
  141. package/dist/widgets/diff.mjs +2 -2
  142. package/dist/widgets/divider.d.mts +3 -3
  143. package/dist/widgets/divider.mjs +1 -1
  144. package/dist/widgets/image.d.mts +1 -1
  145. package/dist/widgets/image.mjs +1 -1
  146. package/dist/widgets/input.d.mts +1 -1
  147. package/dist/widgets/input.mjs +1 -1
  148. package/dist/widgets/log.d.mts +1 -1
  149. package/dist/widgets/log.mjs +1 -1
  150. package/dist/widgets/markdown.d.mts +4 -4
  151. package/dist/widgets/markdown.mjs +1 -1
  152. package/dist/widgets/overlay.d.mts +1 -1
  153. package/dist/widgets/overlay.mjs +1 -1
  154. package/dist/widgets/picker.d.mts +1 -1
  155. package/dist/widgets/picker.mjs +1 -1
  156. package/dist/widgets/progress.d.mts +4 -4
  157. package/dist/widgets/progress.mjs.map +1 -1
  158. package/dist/widgets/select.d.mts +1 -1
  159. package/dist/widgets/show.d.mts +1 -1
  160. package/dist/widgets/spinner.d.mts +2 -2
  161. package/dist/widgets/text.d.mts +1 -1
  162. package/dist/widgets/text.mjs +1 -1
  163. package/dist/widgets/tree.d.mts +1 -1
  164. package/dist/widgets/widget.d.mts +1 -1
  165. package/package.json +2 -2
  166. package/dist/ansi-Clq0ozyA.mjs.map +0 -1
  167. package/dist/box-DLEcEvDH.mjs.map +0 -1
  168. package/dist/builder-DC9byAmK.mjs.map +0 -1
  169. package/dist/ctx-k0wTqeql.mjs +0 -1
  170. package/dist/divider-l0-JPEIm.mjs.map +0 -1
  171. package/dist/input-D7fQEUdt.mjs.map +0 -1
  172. package/dist/inspect-DPLRum7L.d.mts.map +0 -1
  173. package/dist/log-Dy_QnPZF.mjs.map +0 -1
  174. package/dist/queries-Cvalgu6P.d.mts.map +0 -1
  175. package/dist/registry-3hLzS4ks.mjs.map +0 -1
  176. package/dist/renderer-BSMOuiLM.mjs +0 -1
  177. package/dist/renderer-V6AGjbyf.mjs.map +0 -1
  178. package/dist/text-BLz1tRoC.mjs.map +0 -1
  179. package/dist/theme.config-BKXX_noZ.mjs.map +0 -1
  180. package/dist/types-C0EOLZDc.d.mts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"renderer-DesbRwjQ.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 =\n (ctx.images ?? true)\n ? createImageCallback({\n add: (child) => this.#parent?.add(child),\n images: this.#images,\n remove: (child) => this.#parent?.remove(child) ?? child.unmount(),\n })\n : undefined\n\n if (image) callbacks.image = image.cb\n\n let rendered = this.#render(source, callbacks, this.#opts)\n if (image) 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,QACH,IAAI,UAAU,OACX,oBAAoB;GAClB,MAAM,UAAU,KAAK,SAAS,IAAI,KAAK;GACvC,QAAQ,KAAK;GACb,SAAS,UAAU,KAAK,SAAS,OAAO,KAAK,KAAK,MAAM,QAAQ;EAClE,CAAC,IACD,KAAA;EAEN,IAAI,OAAO,UAAU,QAAQ,MAAM;EAEnC,IAAI,WAAW,KAAK,QAAQ,QAAQ,WAAW,KAAK,KAAK;EACzD,IAAI,OAAO,WAAW,MAAM,MAAM,QAAQ,KAAK,QAAQ;EACvD,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"}
1
+ {"version":3,"file":"renderer-MQue4Da5.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 =\n (ctx.images ?? true)\n ? createImageCallback({\n add: (child) => this.#parent?.add(child),\n images: this.#images,\n remove: (child) => this.#parent?.remove(child) ?? child.unmount(),\n })\n : undefined\n\n if (image) callbacks.image = image.cb\n\n let rendered = this.#render(source, callbacks, this.#opts)\n if (image) 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,QACH,IAAI,UAAU,OACX,oBAAoB;GAClB,MAAM,UAAU,KAAK,SAAS,IAAI,KAAK;GACvC,QAAQ,KAAK;GACb,SAAS,UAAU,KAAK,SAAS,OAAO,KAAK,KAAK,MAAM,QAAQ;EAClE,CAAC,IACD,KAAA;EAEN,IAAI,OAAO,UAAU,QAAQ,MAAM;EAEnC,IAAI,WAAW,KAAK,QAAQ,QAAQ,WAAW,KAAK,KAAK;EACzD,IAAI,OAAO,WAAW,MAAM,MAAM,QAAQ,KAAK,QAAQ;EACvD,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"}
@@ -1,11 +1,11 @@
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-3hLzS4ks.mjs";
3
- import { s as stripAnsiBg } from "./ansi-Clq0ozyA.mjs";
4
- import { t as styleBuilder } from "./builder-DC9byAmK.mjs";
5
- import { n as box } from "./box-DLEcEvDH.mjs";
6
- import { t as createCtx } from "./ctx-8Nuf5BrN.mjs";
7
- import { t as RenderContext } from "./render-f7M2856V.mjs";
8
- import { t as TuiReporter } from "./logger-DvuX9DPS.mjs";
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-D-suU3g0.mjs";
3
+ import { c as stripAnsiBg, i as applyDefaultColors, t as RESET } from "./ansi-DZlXaItJ.mjs";
4
+ import { n as openStyle, t as styleBuilder } from "./builder-1z5ewEWK.mjs";
5
+ import { n as box } from "./box-BkP4MF82.mjs";
6
+ import { t as createCtx } from "./ctx-B7BmPUCD.mjs";
7
+ import { t as RenderContext } from "./render-DEIUNLkh.mjs";
8
+ import { t as TuiReporter } from "./logger-DSQb0sLP.mjs";
9
9
  import { o as bumpPlacements } from "./kitty-JbCJC0iQ.mjs";
10
10
  import { i as canonical, t as TerminalQueries } from "./queries-B_lOwEiE.mjs";
11
11
  import { Emitter } from "@zaly/shared";
@@ -868,6 +868,21 @@ var Frame = class {
868
868
  terminal;
869
869
  #base = [];
870
870
  #current = [];
871
+ #colors = {
872
+ bg: "",
873
+ fg: ""
874
+ };
875
+ get defaultStyle() {
876
+ return this.#colors.fg + this.#colors.bg;
877
+ }
878
+ setDefaultStyle(fg, bg) {
879
+ if (this.#colors.fg === fg && this.#colors.bg === bg) return;
880
+ this.#colors = {
881
+ bg,
882
+ fg
883
+ };
884
+ this.#current.fill(void 0);
885
+ }
871
886
  constructor(terminal) {
872
887
  this.terminal = terminal;
873
888
  }
@@ -878,7 +893,7 @@ var Frame = class {
878
893
  begin() {
879
894
  const rows = this.terminal.rows;
880
895
  if (this.#current.length !== rows || this.#base.length !== rows) this.reset(rows);
881
- return new RenderFrame(this.terminal, this.#current, this.#base);
896
+ return new RenderFrame(this.terminal, this.#current, this.#base, this.#colors);
882
897
  }
883
898
  slice(row, from, to, width = this.terminal.cols) {
884
899
  return sliceLine(this.#current[row - 1] ?? "", from, to, width);
@@ -888,12 +903,17 @@ var RenderFrame = class {
888
903
  terminal;
889
904
  current;
890
905
  base;
906
+ defaults;
891
907
  #ops = [];
892
908
  #next;
893
- constructor(terminal, current, base) {
909
+ constructor(terminal, current, base, defaults = {
910
+ bg: "",
911
+ fg: ""
912
+ }) {
894
913
  this.terminal = terminal;
895
914
  this.current = current;
896
915
  this.base = base;
916
+ this.defaults = defaults;
897
917
  this.#next = base.map((row) => row ?? "");
898
918
  }
899
919
  get(row) {
@@ -936,12 +956,15 @@ var RenderFrame = class {
936
956
  for (let i = 0; i < this.#next.length; i++) this.base[i] = this.#next[i];
937
957
  }
938
958
  flush() {
959
+ const defaults = this.defaults.fg + this.defaults.bg;
960
+ const restore = defaults ? RESET + defaults : "";
939
961
  for (let i = 0; i < this.#next.length; i++) {
940
962
  const next = this.#next[i];
941
963
  if (this.current[i] === next) continue;
942
964
  const row = i + 1;
965
+ const content = applyDefaultColors(next.trimEnd(), this.defaults.fg, this.defaults.bg);
943
966
  this.queue((terminal) => {
944
- terminal.write(terminal.moveTo(row, 1) + terminal.clearLine() + next.trimEnd());
967
+ terminal.write(terminal.moveTo(row, 1) + terminal.clearLine() + content + restore);
945
968
  });
946
969
  this.current[i] = next;
947
970
  }
@@ -978,8 +1001,18 @@ var RenderFrame = class {
978
1001
  const ops = this.#ops.length;
979
1002
  this.flush();
980
1003
  const rows = this.#ops.length - ops;
981
- for (const op of this.#ops) op(this.terminal);
982
- this.#ops.length = 0;
1004
+ const defaults = this.defaults.fg + this.defaults.bg;
1005
+ if (this.#ops.length === 0) return {
1006
+ ops,
1007
+ rows
1008
+ };
1009
+ if (defaults) this.terminal.write(RESET + defaults);
1010
+ try {
1011
+ for (const op of this.#ops) op(this.terminal);
1012
+ } finally {
1013
+ if (defaults) this.terminal.write(RESET);
1014
+ this.#ops.length = 0;
1015
+ }
983
1016
  return {
984
1017
  ops,
985
1018
  rows
@@ -2320,6 +2353,7 @@ var Renderer = class extends Emitter {
2320
2353
  #decoder = new Decoder();
2321
2354
  #stdin;
2322
2355
  #theme = signal(void 0);
2356
+ #transparent = signal(false);
2323
2357
  /** Root Owner — every surface's function-shape `add` / `append` runs
2324
2358
  * its child under this Owner via `withOwner(#rootOwner, …)`, so
2325
2359
  * context values provided here (`RenderContext`, future global
@@ -2360,6 +2394,7 @@ var Renderer = class extends Emitter {
2360
2394
  });
2361
2395
  this.frame = new Frame(this.terminal);
2362
2396
  if (opts.theme) this.#theme.set(opts.theme);
2397
+ this.#transparent.set(() => opts.transparent ?? false);
2363
2398
  this.ui = new UI(this);
2364
2399
  this.stream = new Stream(this, { fixedFooterHeight: opts.fixedFooterHeight });
2365
2400
  this.overlay = new OverlaySurface(this);
@@ -2375,6 +2410,13 @@ var Renderer = class extends Emitter {
2375
2410
  style: memo(() => styleBuilder(this.#theme.get())),
2376
2411
  theme: this.#theme.get
2377
2412
  });
2413
+ effect(() => {
2414
+ const theme = this.theme;
2415
+ const transparent = this.transparent;
2416
+ const previous = this.frame.defaultStyle;
2417
+ this.frame.setDefaultStyle(openStyle({ fg: opts.defaultStyle?.fg }, theme), openStyle({ bg: transparent ? void 0 : opts.defaultStyle?.bg }, theme));
2418
+ if (this.frame.defaultStyle !== previous) untrack(() => this.#schedule());
2419
+ });
2378
2420
  return useActiveOwner();
2379
2421
  });
2380
2422
  const reporter = new TuiReporter(opts.reporter);
@@ -2397,7 +2439,8 @@ var Renderer = class extends Emitter {
2397
2439
  this.#ctx = void 0;
2398
2440
  this.terminal.sync(() => {
2399
2441
  this.terminal.clearScrollRegion();
2400
- this.terminal.write(`${this.terminal.moveTo(1, 1)}\x1b[2J`);
2442
+ const defaults = this.frame.defaultStyle;
2443
+ this.terminal.write(`${defaults ? RESET + defaults : ""}${this.terminal.moveTo(1, 1)}\x1b[2J${defaults ? RESET : ""}`);
2401
2444
  if (this.terminal.reserveBottom > 0) this.terminal.setScrollRegion(1, this.terminal.scrollBottom);
2402
2445
  });
2403
2446
  this.frame.reset();
@@ -2464,6 +2507,14 @@ var Renderer = class extends Emitter {
2464
2507
  get theme() {
2465
2508
  return this.#theme.get() ?? defaultTheme;
2466
2509
  }
2510
+ /** Inherit the terminal background instead of painting the base background. */
2511
+ set transparent(transparent) {
2512
+ this.#transparent.set(transparent);
2513
+ }
2514
+ /** Current transparency setting. (tracked) */
2515
+ get transparent() {
2516
+ return unwrap(this.#transparent.get());
2517
+ }
2467
2518
  start() {
2468
2519
  if (this.#running) return;
2469
2520
  this.#running = true;
@@ -2642,4 +2693,4 @@ var Renderer = class extends Emitter {
2642
2693
  //#endregion
2643
2694
  export { Renderer };
2644
2695
 
2645
- //# sourceMappingURL=renderer-V6AGjbyf.mjs.map
2696
+ //# sourceMappingURL=renderer-zDNlAovy.mjs.map