tsx-editor.tsx 750 B

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