UNPKG

@mui/internal-docs-infra

Version:

MUI Infra - internal documentation creation tools.

47 lines (44 loc) 1.3 kB
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; /** * Utility function for creating CodeSandbox demos * Returns the configuration that can be used with openWithForm */ // @ts-ignore 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 '=' } /** * Create CodeSandbox for use with openWithForm */ export function createCodeSandbox(_ref) { var flattenedFiles = _ref.flattenedFiles, rootFile = _ref.rootFile; // Convert flattened files to string format var files = {}; Object.entries(flattenedFiles).forEach(function (_ref2) { var _ref3 = _slicedToArray(_ref2, 2), filePath = _ref3[0], fileData = _ref3[1]; files[filePath] = { content: fileData.source }; }); var parameters = compress({ files: files }); // ref: https://codesandbox.io/docs/learn/browser-sandboxes/cli-api#supported-parameters var formData = { parameters: parameters, query: "file=".concat(rootFile) }; return { url: 'https://codesandbox.io/api/v1/sandboxes/define', formData: formData }; }