tui-environment.tsx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /** @jsxImportSource @opentui/solid */
  2. import {
  3. TuiPathsProvider,
  4. TuiStartupProvider,
  5. TuiTerminalEnvironmentProvider,
  6. type TuiPaths,
  7. } from "../../src/context/runtime"
  8. import type { ParentProps } from "solid-js"
  9. import { LogProvider, type LogSink } from "../../src/context/log"
  10. import { ClipboardProvider, type ClipboardService } from "../../src/context/clipboard"
  11. const clipboard: ClipboardService = {
  12. async read() {
  13. return undefined
  14. },
  15. async write() {},
  16. }
  17. export function TestTuiContexts(
  18. props: ParentProps<{
  19. cwd?: string
  20. directory?: string
  21. paths?: Partial<TuiPaths>
  22. log?: LogSink
  23. clipboard?: ClipboardService
  24. }>,
  25. ) {
  26. return (
  27. <LogProvider log={props.log ?? (() => {})}>
  28. <TuiPathsProvider
  29. value={{
  30. cwd: props.cwd ?? props.directory ?? "/tmp/opencode/packages/tui",
  31. home: "/tmp/opencode/home",
  32. state: "/tmp/opencode/state",
  33. worktree: "/tmp/opencode",
  34. ...props.paths,
  35. }}
  36. >
  37. <TuiTerminalEnvironmentProvider value={{ platform: "linux" }}>
  38. <TuiStartupProvider value={{ skipInitialLoading: false }}>
  39. <ClipboardProvider value={props.clipboard ?? clipboard}>{props.children}</ClipboardProvider>
  40. </TuiStartupProvider>
  41. </TuiTerminalEnvironmentProvider>
  42. </TuiPathsProvider>
  43. </LogProvider>
  44. )
  45. }