Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions docs/src/modules/components/DemoContext.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ export interface SandboxConfig {

/**
* Hook to add extra peer dependencies to sandbox.
* Replaces muiDocConfig.csbIncludePeerDependencies
*/
includePeerDependencies?: (
deps: Record<string, string>,
Expand All @@ -31,7 +30,6 @@ export interface SandboxConfig {

/**
* Hook to override default package versions.
* Replaces muiDocConfig.csbGetVersions
*/
getVersions?: (
versions: Record<string, string>,
Expand All @@ -40,7 +38,6 @@ export interface SandboxConfig {

/**
* Hook to resolve custom imports to dependencies.
* Replaces muiDocConfig.postProcessImport
*/
postProcessImport?: (importName: string) => Record<string, string> | null;
}
Expand Down Expand Up @@ -76,7 +73,6 @@ export interface DemoContextValue {

/**
* Configuration for CodeSandbox/StackBlitz sandbox generation.
* Groups all sandbox-related config (replaces window.muiDocConfig).
*/
csb: SandboxConfig;
}
Expand Down
11 changes: 4 additions & 7 deletions docs/src/modules/sandbox/CodeSandbox.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,14 +74,11 @@ function createReactApp(demoData: DemoData, csbConfig?: SandboxConfig) {
}),
};

const { dependencies, devDependencies } = SandboxDependencies(
demoData,
{
commitRef: process.env.PULL_REQUEST_ID ? process.env.COMMIT_REF : undefined,
devDeps: CSB_DEV_DEPENDENCIES,
},
const { dependencies, devDependencies } = SandboxDependencies(demoData, {
commitRef: process.env.PULL_REQUEST_ID ? process.env.COMMIT_REF : undefined,
devDeps: CSB_DEV_DEPENDENCIES,
csbConfig,
);
});

files['package.json'] = {
content: {
Expand Down
2 changes: 0 additions & 2 deletions docs/src/modules/sandbox/Dependencies.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -175,8 +175,6 @@ import 'exceljs';
'react-dom': 'latest',
'@emotion/react': 'latest',
'@emotion/styled': 'latest',
// #npm-tag-reference
'@mui/material': 'latest',
typescript: 'latest',
});

Expand Down
29 changes: 10 additions & 19 deletions docs/src/modules/sandbox/Dependencies.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,9 @@ type Demo = Pick<DemoData, 'productId' | 'raw' | 'codeVariant' | 'relativeModule

export default function SandboxDependencies(
demo: Demo,
options?: { commitRef?: string; devDeps?: Record<string, string> },
csbConfig?: SandboxConfig,
options: { commitRef?: string; devDeps?: Record<string, string>; csbConfig?: SandboxConfig } = {},
) {
const { commitRef, devDeps = {} } = options || {};
// Fallback to window.muiDocConfig for backward compatibility
const muiDocConfig = csbConfig ?? (window as any).muiDocConfig;
const { commitRef, devDeps = {}, csbConfig } = options;

/**
* @param packageName - The name of a package living inside this repository.
Expand Down Expand Up @@ -89,8 +86,8 @@ export default function SandboxDependencies(
}

// Allow product-specific peer dependencies via context config
if (muiDocConfig?.includePeerDependencies) {
newDeps = muiDocConfig.includePeerDependencies(newDeps, {
if (csbConfig?.includePeerDependencies) {
newDeps = csbConfig.includePeerDependencies(newDeps, {
versions,
});
}
Expand All @@ -117,8 +114,8 @@ export default function SandboxDependencies(
};

// Allow product-specific version overrides via context config
if (muiDocConfig?.getVersions) {
versions = muiDocConfig.getVersions(versions, { muiCommitRef: commitRef });
if (csbConfig?.getVersions) {
versions = csbConfig.getVersions(versions, { muiCommitRef: commitRef });
}

const re = /^import\s'([^']+)'|import\s[\s\S]*?\sfrom\s+'([^']+)/gm;
Expand All @@ -135,8 +132,8 @@ export default function SandboxDependencies(
deps[name] = versions[name] ?? 'latest';
}

if (muiDocConfig?.postProcessImport) {
const resolvedDep = muiDocConfig.postProcessImport(fullName);
if (csbConfig?.postProcessImport) {
const resolvedDep = csbConfig.postProcessImport(fullName);
if (resolvedDep) {
deps = { ...deps, ...resolvedDep };
}
Expand All @@ -154,14 +151,8 @@ export default function SandboxDependencies(

const dependencies = extractDependencies();

// Add fallback dependency if needed (e.g., @mui/material for StyledEngineProvider in root index)
const fallbackDep = muiDocConfig?.fallbackDependency;
if (fallbackDep && !dependencies[fallbackDep.name]) {
dependencies[fallbackDep.name] = fallbackDep.version;
} else if (!muiDocConfig && !demo.productId && !dependencies['@mui/material']) {
// Legacy fallback: add @mui/material when no config provided and no productId
const name = '@mui/material';
dependencies[name] = getMuiPackageVersion('material') || 'latest';
if (csbConfig?.fallbackDependency && !dependencies[csbConfig.fallbackDependency.name]) {
dependencies[csbConfig.fallbackDependency.name] = csbConfig.fallbackDependency.version;
}

const devDependencies: Record<string, string> = { ...devDeps };
Expand Down
9 changes: 3 additions & 6 deletions docs/src/modules/sandbox/MuiChat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,10 @@ export function createMuiChat(demoData: DemoData, csbConfig?: SandboxConfig) {
const ext = getFileExtension(demoData.codeVariant);

// Get dependencies like StackBlitz
const { dependencies } = SandboxDependencies(
demoData,
{
commitRef: process.env.PULL_REQUEST_ID ? process.env.COMMIT_REF : undefined,
},
const { dependencies } = SandboxDependencies(demoData, {
commitRef: process.env.PULL_REQUEST_ID ? process.env.COMMIT_REF : undefined,
csbConfig,
);
});

return {
title,
Expand Down
11 changes: 4 additions & 7 deletions docs/src/modules/sandbox/StackBlitz.ts
Original file line number Diff line number Diff line change
Expand Up @@ -291,14 +291,11 @@ function createReactApp(demoData: DemoData, csbConfig?: SandboxConfig) {
const { title, githubLocation: description } = demoData;

// Get dependencies
const { dependencies, devDependencies } = SandboxDependencies(
demoData,
{
commitRef: process.env.PULL_REQUEST_ID ? process.env.COMMIT_REF : undefined,
devDeps: VITE_DEV_DEPENDENCIES,
},
const { dependencies, devDependencies } = SandboxDependencies(demoData, {
commitRef: process.env.PULL_REQUEST_ID ? process.env.COMMIT_REF : undefined,
devDeps: VITE_DEV_DEPENDENCIES,
csbConfig,
);
});

const viteFiles = createViteFiles(demoData, dependencies, devDependencies, description);

Expand Down
Loading