Skip to content

Commit fad9afc

Browse files
fix: use dedicated template directory
1 parent 81a1b37 commit fad9afc

21 files changed

+4095
-4186
lines changed

src/components/MDX/Sandpack/SandpackRSCRoot.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {SandpackProvider} from '@webcontainer/react';
1515
import {CustomPreset} from './CustomPreset';
1616
import {createFileMap} from './createFileMap';
1717
import {CustomTheme} from './Themes';
18-
import {viteRscTemplate} from './templates/viteRscTemplate';
18+
import {viteRscTemplate} from './templates';
1919

2020
type SandpackProps = {
2121
children: React.ReactNode;
@@ -100,10 +100,7 @@ function SandpackRSCRoot(props: SandpackProps) {
100100
initMode: 'user-visible',
101101
initModeObserverOptions: {rootMargin: '1400px 0px'},
102102
}}>
103-
<CustomPreset
104-
providedFiles={Object.keys(files)}
105-
// showOpenInCodeSandbox={false}
106-
/>
103+
<CustomPreset providedFiles={Object.keys(files)} />
107104
</SandpackProvider>
108105
</div>
109106
);

src/components/MDX/Sandpack/SandpackRoot.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {SandpackProvider} from '@webcontainer/react';
1515
import {CustomPreset} from './CustomPreset';
1616
import {createFileMap} from './createFileMap';
1717
import {CustomTheme} from './Themes';
18-
import {viteReactTemplate} from './templates/viteReactTemplate';
18+
import {viteReactTemplate} from './templates';
1919

2020
type SandpackProps = {
2121
children: React.ReactNode;
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import {defineTemplate} from '@webcontainer/react';
2+
import {hideFiles} from './utils';
3+
import viteReactPackageJson from './vite-react/package-json.json';
4+
import viteReactPackageLockJson from './vite-react/package-lock-json.json';
5+
import viteRscPackageJson from './vite-rsc/package-json.json';
6+
import viteRscPackageLockJson from './vite-rsc/package-lock-json.json';
7+
8+
const startCommand: [string, ...string[]] = [
9+
'npx',
10+
'vite',
11+
'--port',
12+
'{{port}}',
13+
];
14+
15+
export const viteReactTemplate = defineTemplate({
16+
id: 'vite-react',
17+
files: hideFiles({
18+
'/vite.config.js':
19+
require('!raw-loader?esModule=false!./vite-react/vite.config.js') as string,
20+
'/index.html':
21+
require('!raw-loader?esModule=false!./vite-react/index.html') as string,
22+
'/src/index.jsx':
23+
require('!raw-loader?esModule=false!./vite-react/src/index.jsx') as string,
24+
}),
25+
environment: {
26+
packageJson: JSON.stringify(viteReactPackageJson),
27+
packageLockJson: JSON.stringify(viteReactPackageLockJson),
28+
startCommand,
29+
},
30+
});
31+
32+
export const viteRscTemplate = defineTemplate({
33+
id: 'vite-rsc',
34+
files: hideFiles({
35+
'/src/framework/entry.browser.jsx':
36+
require('!raw-loader?esModule=false!./vite-rsc/src/framework/entry.browser.jsx') as string,
37+
'/src/framework/entry.rsc.jsx':
38+
require('!raw-loader?esModule=false!./vite-rsc/src/framework/entry.rsc.jsx') as string,
39+
'/src/framework/entry.ssr.jsx':
40+
require('!raw-loader?esModule=false!./vite-rsc/src/framework/entry.ssr.jsx') as string,
41+
'/src/framework/error-boundary.jsx':
42+
require('!raw-loader?esModule=false!./vite-rsc/src/framework/error-boundary.jsx') as string,
43+
'/src/framework/request.jsx':
44+
require('!raw-loader?esModule=false!./vite-rsc/src/framework/request.jsx') as string,
45+
'/src/root.jsx':
46+
require('!raw-loader?esModule=false!./vite-rsc/src/root.jsx') as string,
47+
'/vite.config.js':
48+
require('!raw-loader?esModule=false!./vite-rsc/vite.config.js') as string,
49+
}),
50+
environment: {
51+
packageJson: JSON.stringify(viteRscPackageJson),
52+
packageLockJson: JSON.stringify(viteRscPackageLockJson),
53+
startCommand,
54+
},
55+
});
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import type {SandpackFile, SandpackFiles} from '@webcontainer/react';
2+
3+
export function hideFiles(
4+
files: Record<string, string | SandpackFile>
5+
): SandpackFiles {
6+
return Object.fromEntries(
7+
Object.entries(files).map(([name, code]) => [
8+
name,
9+
typeof code === 'string' ? {code, hidden: true} : {...code, hidden: true},
10+
])
11+
);
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6+
<title>Vite React</title>
7+
</head>
8+
<body>
9+
<div id="root"></div>
10+
<script type="module" src="/src/index.jsx"></script>
11+
</body>
12+
</html>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"name": "vite-react",
3+
"private": true,
4+
"type": "module",
5+
"scripts": {
6+
"start": "vite dev"
7+
},
8+
"dependencies": {
9+
"html-format": "^1.1.7",
10+
"react": "^19.2.4",
11+
"react-dom": "^19.2.4",
12+
"react-error-boundary": "^4.1.1",
13+
"rsc-html-stream": "^0.0.7"
14+
},
15+
"devDependencies": {
16+
"@vitejs/plugin-react": "^5.1.4",
17+
"@vitejs/plugin-rsc": "^0.5.21",
18+
"vite": "^7.3.1"
19+
}
20+
}

0 commit comments

Comments
 (0)