tsx-editor.tsx 850 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. /**
  2. * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
  3. * SPDX-License-Identifier: MIT
  4. */
  5. import { useMemo } from 'react';
  6. import { useDark } from '@rspress/core/runtime';
  7. import {
  8. SandpackProvider,
  9. SandpackLayout,
  10. SandpackCodeEditor,
  11. SandpackPreview,
  12. } from '@codesandbox/sandpack-react';
  13. export const TsxEditor = ({ value }: { value: string }) => {
  14. const dark = useDark();
  15. const theme = useMemo(() => (dark ? 'dark' : 'light'), [dark]);
  16. return (
  17. <SandpackProvider
  18. template="react"
  19. theme={theme}
  20. files={{
  21. 'App.js': value,
  22. }}
  23. onChange={(v) => {
  24. console.log('debugger', v);
  25. }}
  26. >
  27. <SandpackLayout>
  28. <SandpackPreview />
  29. </SandpackLayout>
  30. <SandpackLayout>
  31. <SandpackCodeEditor />
  32. </SandpackLayout>
  33. </SandpackProvider>
  34. );
  35. };