UNPKG

@mui/internal-docs-infra

Version:

MUI Infra - internal documentation creation tools.

39 lines (37 loc) 999 B
import LZString from 'lz-string'; /** * Compress object for CodeSandbox API */ function compress(object) { return LZString.compressToBase64(JSON.stringify(object)).replace(/\+/g, '-') // Convert '+' to '-' .replace(/\//g, '_') // Convert '/' to '_' .replace(/=+$/, ''); // Remove ending '=' } /** * Utility function for creating CodeSandbox demos * Returns the configuration that can be used with openWithForm */ export function createCodeSandbox({ flattenedFiles, rootFile }) { // Convert flattened files to string format const files = {}; Object.entries(flattenedFiles).forEach(([filePath, fileData]) => { files[filePath] = { content: fileData.source }; }); const parameters = compress({ files }); // ref: https://codesandbox.io/docs/learn/browser-sandboxes/cli-api#supported-parameters const formData = { parameters, query: `file=${rootFile}` }; return { url: 'https://codesandbox.io/api/v1/sandboxes/define', formData }; }