browser-playground-core 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +114 -0
- package/dist/index.d.ts +114 -0
- package/dist/index.js +1252 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1206 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +40 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.tsx","../src/runtimePolyfills.ts","../src/Playground.tsx","../src/PlaygroundEditor.tsx","../src/PlaygroundProvider.tsx","../src/compiler.ts","../src/dependencies.ts","../src/mapping.ts","../src/PlaygroundFileTree.tsx","../src/PlaygroundRender.tsx"],"sourcesContent":["import './runtimePolyfills';\n\nexport { Playground } from './Playground';\nexport { PlaygroundProvider, usePlayground, defaultSnippet } from './PlaygroundProvider';\nexport { PlaygroundEditor } from './PlaygroundEditor';\nexport { PlaygroundFileTree } from './PlaygroundFileTree';\nexport { PlaygroundRender } from './PlaygroundRender';\nexport { compileUserCode, compileVirtualFiles, bundleWithRollup } from './compiler';\nexport type {\n PlaygroundProps,\n PlaygroundMode,\n PlaygroundRuntime,\n PlaygroundPlugin,\n PlaygroundCompileConfig,\n CompileResult,\n VirtualFileSystem,\n PlaygroundProviderProps,\n PlaygroundContextValue,\n PlaygroundEditorProps,\n PlaygroundFileTreeProps,\n PlaygroundRenderProps,\n PlaygroundPaneProps\n} from './types';\n","export const ensureBrowserCompat = () => {\n const g: any = globalThis as any;\n if (!g.process) {\n g.process = { env: {} };\n return;\n }\n if (!g.process.env) {\n g.process.env = {};\n }\n};\n\nensureBrowserCompat();\n\n","import React, { useMemo } from 'react';\nimport { PlaygroundEditor } from './PlaygroundEditor';\nimport { PlaygroundRender } from './PlaygroundRender';\nimport { PlaygroundProvider, defaultSnippet } from './PlaygroundProvider';\nimport type { PlaygroundProps } from './types';\n\nexport const Playground: React.FC<PlaygroundProps> = ({\n initialCode = defaultSnippet,\n initialFiles,\n entryFile,\n plugins = [],\n dependencies,\n height = '80vh',\n showFileTree,\n fileTreeDefaultOpen,\n fileTreeWidth,\n mode = 'code',\n formValue,\n onFormValueChange,\n renderForm\n}) => {\n const layoutStyle = useMemo<React.CSSProperties>(\n () => ({\n display: 'grid',\n gridTemplateColumns: mode === 'form' ? '360px 1fr' : '1fr 1fr',\n gap: '12px',\n height,\n width: '100%'\n }),\n [height, mode]\n );\n\n return (\n <PlaygroundProvider\n initialCode={initialCode}\n initialFiles={initialFiles}\n entryFile={entryFile}\n plugins={plugins}\n dependencies={dependencies}\n formValue={formValue}\n onFormValueChange={onFormValueChange}\n >\n <div style={layoutStyle}>\n {mode === 'form' ? (\n renderForm ? (\n renderForm({ value: formValue, onChange: onFormValueChange })\n ) : (\n <FormPlaceholder />\n )\n ) : (\n <PlaygroundEditor\n showFileTree={showFileTree}\n fileTreeDefaultOpen={fileTreeDefaultOpen}\n fileTreeWidth={fileTreeWidth}\n />\n )}\n <PlaygroundRender />\n </div>\n </PlaygroundProvider>\n );\n};\n\nconst FormPlaceholder = () => {\n return (\n <div\n style={{\n border: '1px solid #e2e8f0',\n borderRadius: 12,\n padding: 12,\n background: '#fff',\n color: '#0f172a',\n overflow: 'auto'\n }}\n >\n <div style={{ fontWeight: 700, marginBottom: 6 }}>Form mode</div>\n <div style={{ fontSize: 13, color: '#475569', lineHeight: 1.5 }}>\n Provide <code>renderForm</code> to render your own form UI and pass values via <code>formValue</code>.\n </div>\n </div>\n );\n};\n","import './runtimePolyfills';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport Editor from '@monaco-editor/react';\nimport { usePlayground } from './PlaygroundProvider';\nimport { PlaygroundFileTree } from './PlaygroundFileTree';\nimport type { PlaygroundEditorProps } from './types';\n\nexport const PlaygroundEditor: React.FC<PlaygroundEditorProps> = ({\n height = '100%',\n className,\n style,\n language,\n showFileTree,\n fileTreeDefaultOpen = true,\n fileTreeWidth = 240\n}) => {\n const { code, setCode, activeFilePath, files, plugins } = usePlayground();\n const monacoRef = useRef<any>(null);\n const filesRef = useRef(files);\n const pluginsRef = useRef(plugins);\n const [isFileTreeOpen, setIsFileTreeOpen] = useState(fileTreeDefaultOpen);\n\n useEffect(() => {\n setIsFileTreeOpen(fileTreeDefaultOpen);\n }, [fileTreeDefaultOpen]);\n\n useEffect(() => {\n filesRef.current = files;\n }, [files]);\n\n useEffect(() => {\n pluginsRef.current = plugins;\n }, [plugins]);\n\n const handleBeforeMount = useCallback((monaco: any) => {\n monacoRef.current = monaco;\n monaco.languages.typescript.typescriptDefaults.setCompilerOptions({\n // Required for TSX parsing/highlighting when models are backed by .tsx filenames.\n jsx: monaco.languages.typescript.JsxEmit.Preserve,\n target: monaco.languages.typescript.ScriptTarget.ESNext,\n allowJs: true,\n allowNonTsExtensions: true,\n module: monaco.languages.typescript.ModuleKind.ESNext,\n moduleResolution: monaco.languages.typescript.ModuleResolutionKind.NodeJs,\n esModuleInterop: true,\n allowSyntheticDefaultImports: true\n });\n monaco.languages.typescript.typescriptDefaults.setEagerModelSync(true);\n\n injectVirtualFilesIntoMonaco(monaco, filesRef.current);\n\n for (const plugin of pluginsRef.current) {\n if (!plugin.setupMonaco) continue;\n try {\n const result = plugin.setupMonaco(monaco);\n if (result && typeof (result as any).then === 'function') {\n (result as Promise<void>).catch((err) => console.warn('[playground] plugin.setupMonaco failed', err));\n }\n } catch (err) {\n console.warn('[playground] plugin.setupMonaco failed', err);\n }\n }\n }, []);\n\n useEffect(() => {\n if (!monacoRef.current) return;\n injectVirtualFilesIntoMonaco(monacoRef.current, files);\n }, [files]);\n\n return (\n <div\n className={className}\n style={{\n border: '1px solid #e2e8f0',\n borderRadius: 12,\n overflow: 'hidden',\n height,\n display: 'flex',\n minWidth: 0,\n ...style\n }}\n >\n {shouldShowFileTree(showFileTree, files) && (\n <div\n style={{\n width: isFileTreeOpen ? fileTreeWidth : 34,\n borderRight: '1px solid #0f172a',\n background: '#0b1224',\n flex: '0 0 auto',\n height: '100%'\n }}\n >\n {isFileTreeOpen ? (\n <div style={{ height: '100%', position: 'relative' }}>\n <div style={{ position: 'absolute', top: 8, right: 8, zIndex: 2 }}>\n <button\n type=\"button\"\n onClick={() => {\n setIsFileTreeOpen(false);\n }}\n title=\"Collapse\"\n style={iconButtonStyle}\n >\n ⟨\n </button>\n </div>\n <PlaygroundFileTree\n height=\"100%\"\n width=\"100%\"\n style={{ border: 'none', borderRadius: 0, background: 'transparent' }}\n />\n </div>\n ) : (\n <div\n style={{\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }}\n >\n <button\n type=\"button\"\n onClick={() => {\n setIsFileTreeOpen(true);\n }}\n title=\"Files\"\n style={iconButtonStyle}\n >\n ≡\n </button>\n </div>\n )}\n </div>\n )}\n\n <div style={{ flex: 1, minWidth: 0, height: '100%' }}>\n <Editor\n height=\"100%\"\n defaultLanguage={language ?? languageFromPath(activeFilePath)}\n path={`file://${activeFilePath}`}\n theme=\"vs-dark\"\n value={code}\n onChange={(value) => setCode(value ?? '')}\n beforeMount={handleBeforeMount}\n options={{\n minimap: { enabled: false },\n fontSize: 14,\n smoothScrolling: true,\n tabSize: 2,\n fixedOverflowWidgets: true\n }}\n />\n </div>\n </div>\n );\n};\n\nconst shouldShowFileTree = (showFileTree: boolean | undefined, files: Record<string, string>) => {\n if (typeof showFileTree === 'boolean') return showFileTree;\n return Object.keys(files).length > 1;\n};\n\nconst iconButtonStyle: React.CSSProperties = {\n border: '1px solid rgba(226, 232, 240, 0.18)',\n background: 'rgba(15, 23, 42, 0.25)',\n color: '#e2e8f0',\n cursor: 'pointer',\n borderRadius: 8,\n width: 26,\n height: 26,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n lineHeight: 1\n};\n\nconst injectVirtualFilesIntoMonaco = (monaco: any, files: Record<string, string>) => {\n for (const [rawPath, code] of Object.entries(files)) {\n const normalizedPath = normalizeVfsPath(rawPath);\n const uri = monaco.Uri.parse(`file://${normalizedPath}`);\n const existing = monaco.editor.getModel(uri);\n const language = languageFromPath(normalizedPath);\n\n if (!existing) {\n monaco.editor.createModel(code, language, uri);\n continue;\n }\n\n if (existing.getLanguageId && existing.getLanguageId() !== language) {\n monaco.editor.setModelLanguage(existing, language);\n }\n\n if (existing.getValue() !== code) {\n existing.pushEditOperations(\n [],\n [\n {\n range: existing.getFullModelRange(),\n text: code\n }\n ],\n () => null\n );\n }\n }\n};\n\nconst normalizeVfsPath = (path: string) => {\n const replaced = path.replace(/\\\\/g, '/');\n const ensured = replaced.startsWith('/') ? replaced : `/${replaced}`;\n return ensured.replace(/\\/+/g, '/');\n};\n\nconst languageFromPath = (path: string) => {\n const lower = path.toLowerCase();\n if (lower.endsWith('.vue')) return 'vue';\n if (lower.endsWith('.ts')) return 'typescript';\n if (lower.endsWith('.tsx')) return 'typescript';\n if (lower.endsWith('.js')) return 'javascript';\n if (lower.endsWith('.jsx')) return 'javascript';\n return 'typescript';\n};\n","import React, { createContext, useContext, useEffect, useMemo, useState } from 'react';\nimport { compileVirtualFiles } from './compiler';\nimport { depIdentifierForPackage } from './dependencies';\nimport { applyFormValueToFiles, extractMappedFormValue } from './mapping';\nimport type {\n PlaygroundContextValue,\n PlaygroundPlugin,\n PlaygroundProviderProps,\n PlaygroundRuntime,\n VirtualFileSystem\n} from './types';\n\nexport const defaultSnippet = `import React from 'react';\n\ntype GreetingProps = { name: string };\n\nconst Card: React.FC<GreetingProps> = ({ name }) => {\n return (\n <div style={{ padding: '16px', borderRadius: '12px', background: '#0f172a', color: '#e2e8f0' }}>\n <h2 style={{ margin: 0 }}>Hello, {name}</h2>\n <p style={{ marginTop: 8 }}>You can edit this code to see live updates.</p>\n </div>\n );\n};\n\nexport default function Preview() {\n return (\n <div style={{ display: 'grid', gap: '12px', padding: '8px' }}>\n <Card name=\"Playground\" />\n <Card name=\"React\" />\n </div>\n );\n}\n`;\n\nconst PlaygroundContext = createContext<PlaygroundContextValue | null>(null);\n\nexport const PlaygroundProvider: React.FC<PlaygroundProviderProps> = ({\n initialCode = defaultSnippet,\n initialFiles,\n entryFile = '/App.tsx',\n plugins = [],\n dependencies,\n formValue,\n onFormValueChange,\n children\n}) => {\n const [files, setFiles] = useState<VirtualFileSystem>(() => {\n if (initialFiles && Object.keys(initialFiles).length > 0) return normalizeVirtualFileSystem(initialFiles);\n return { [normalizeVfsPath(entryFile)]: initialCode };\n });\n const [activeFilePath, setActiveFilePath] = useState(() => {\n const normalizedEntry = normalizeVfsPath(entryFile);\n const normalizedFiles = initialFiles ? normalizeVirtualFileSystem(initialFiles) : null;\n if (normalizedFiles && normalizedFiles[normalizedEntry] != null) return normalizedEntry;\n return normalizedFiles ? Object.keys(normalizedFiles)[0] ?? normalizedEntry : normalizedEntry;\n });\n const [error, setError] = useState<string | null>(null);\n const [isCompiling, setIsCompiling] = useState(false);\n const [renderedComponent, setRenderedComponent] = useState<React.ComponentType | null>(null);\n const [renderedDomModule, setRenderedDomModule] = useState<{ mount: (el: HTMLElement) => any; unmount?: () => any } | null>(null);\n const [runtime, setRuntime] = useState<PlaygroundRuntime>('react');\n const lastAppliedFormValueRef = React.useRef<unknown>(undefined);\n const lastEmittedFormValueRef = React.useRef<unknown>(undefined);\n\n useEffect(() => {\n if (initialFiles && Object.keys(initialFiles).length > 0) {\n const normalized = normalizeVirtualFileSystem(initialFiles);\n setFiles(normalized);\n const normalizedEntry = normalizeVfsPath(entryFile);\n setActiveFilePath(normalized[normalizedEntry] != null ? normalizedEntry : Object.keys(normalized)[0] ?? normalizedEntry);\n return;\n }\n\n const normalizedEntry = normalizeVfsPath(entryFile);\n setFiles({ [normalizedEntry]: initialCode });\n setActiveFilePath(normalizedEntry);\n }, [entryFile, initialCode, initialFiles]);\n\n useEffect(() => {\n let cancelled = false;\n const timeout = window.setTimeout(() => {\n setIsCompiling(true);\n runCompilation(files, normalizeVfsPath(entryFile), plugins, dependencies).then(async (result) => {\n if (cancelled) return;\n setIsCompiling(false);\n\n if (result.error || !result.code) {\n setError(result.error ?? 'Unknown compilation error');\n setRenderedComponent(null);\n setRenderedDomModule(null);\n return;\n }\n\n try {\n const runtimeGlobalNames = result.runtimeGlobalNames ?? ['React'];\n const runtimeGlobals = await resolveRuntimeGlobals(runtimeGlobalNames, plugins, result.runtime ?? 'react', dependencies);\n if (cancelled) return;\n const createModule = new Function(...runtimeGlobalNames, result.code);\n const moduleExport = createModule(...runtimeGlobals);\n\n if (result.runtime === 'dom') {\n if (!moduleExport || typeof moduleExport.mount !== 'function') {\n throw new Error('DOM runtime must export an object with a mount(el) function as default export.');\n }\n setRuntime('dom');\n setRenderedDomModule(() => moduleExport);\n setRenderedComponent(null);\n setError(null);\n } else {\n if (moduleExport) {\n setRuntime('react');\n setRenderedComponent(() => moduleExport);\n setRenderedDomModule(null);\n setError(null);\n }\n }\n } catch (err) {\n setError(formatError(err));\n setRenderedComponent(null);\n setRenderedDomModule(null);\n }\n });\n }, 200);\n\n return () => {\n cancelled = true;\n window.clearTimeout(timeout);\n };\n }, [dependencies, entryFile, files, plugins]);\n\n useEffect(() => {\n if (formValue === undefined) return;\n if (isDeepEqual(formValue, lastAppliedFormValueRef.current)) return;\n lastAppliedFormValueRef.current = formValue;\n\n setFiles((prev) => {\n const next = applyFormValueToFiles(prev, formValue);\n return isDeepEqual(prev, next) ? prev : next;\n });\n }, [formValue]);\n\n useEffect(() => {\n if (!onFormValueChange) return;\n let cancelled = false;\n const timeout = window.setTimeout(() => {\n if (cancelled) return;\n const extracted = extractMappedFormValue(files);\n const nextValue = mergeFormValue(formValue, extracted);\n if (isDeepEqual(nextValue, formValue)) return;\n if (isDeepEqual(nextValue, lastEmittedFormValueRef.current)) return;\n lastEmittedFormValueRef.current = nextValue;\n onFormValueChange(nextValue);\n }, 200);\n\n return () => {\n cancelled = true;\n window.clearTimeout(timeout);\n };\n }, [files, formValue, onFormValueChange]);\n\n const updateFile = (path: string, code: string) => {\n const normalized = normalizeVfsPath(path);\n setFiles((prev) => ({ ...prev, [normalized]: code }));\n };\n\n const code = files[normalizeVfsPath(activeFilePath)] ?? '';\n const setCode = (value: string) => updateFile(activeFilePath, value);\n\n const value = useMemo<PlaygroundContextValue>(\n () => ({\n files,\n activeFilePath,\n setActiveFilePath: (path: string) => setActiveFilePath(normalizeVfsPath(path)),\n updateFile,\n code,\n setCode,\n isCompiling,\n error,\n runtime,\n renderedComponent,\n renderedDomModule,\n plugins\n }),\n [activeFilePath, code, error, files, isCompiling, plugins, renderedComponent, renderedDomModule, runtime]\n );\n\n return <PlaygroundContext.Provider value={value}>{children}</PlaygroundContext.Provider>;\n};\n\nexport const usePlayground = () => {\n const ctx = useContext(PlaygroundContext);\n if (!ctx) {\n throw new Error('usePlayground must be used within a PlaygroundProvider');\n }\n return ctx;\n};\n\nconst runCompilation = async (\n files: VirtualFileSystem,\n entryFile: string,\n plugins: PlaygroundPlugin[],\n dependencies: Record<string, any> | undefined\n) => {\n const result = await compileVirtualFiles(files, entryFile, plugins, { dependencies: Object.keys(dependencies ?? {}) });\n return result;\n};\n\nconst formatError = (error: unknown) => {\n if (error instanceof Error) return error.message;\n return typeof error === 'string' ? error : 'Unknown runtime error';\n};\n\nconst normalizeVirtualFileSystem = (rawFiles: VirtualFileSystem): VirtualFileSystem => {\n const normalized: VirtualFileSystem = {};\n for (const [path, code] of Object.entries(rawFiles)) {\n normalized[normalizeVfsPath(path)] = code;\n }\n return normalized;\n};\n\nconst normalizeVfsPath = (path: string) => {\n const replaced = path.replace(/\\\\/g, '/');\n const ensured = replaced.startsWith('/') ? replaced : `/${replaced}`;\n return ensured.replace(/\\/+/g, '/');\n};\n\nconst resolveRuntimeGlobals = async (\n names: string[],\n plugins: PlaygroundPlugin[],\n runtime: PlaygroundRuntime,\n dependencies: Record<string, any> | undefined\n) => {\n const globals: Record<string, any> = { React };\n const depIdToPkg: Record<string, string> = {};\n\n for (const plugin of plugins) {\n if (!plugin.runtimeGlobals) continue;\n const provided = await plugin.runtimeGlobals({ runtime });\n Object.assign(globals, provided ?? {});\n }\n\n for (const [pkgName, value] of Object.entries(dependencies ?? {})) {\n const id = depIdentifierForPackage(pkgName);\n depIdToPkg[id] = pkgName;\n globals[id] = value;\n }\n\n return names.map((n) => {\n if (globals[n] === undefined) {\n const pkgName = depIdToPkg[n];\n throw new Error(\n pkgName\n ? `Missing dependency \"${pkgName}\" (runtime global \"${n}\"). Pass it via Playground props \\`dependencies\\` (e.g. \\`dependencies={{ \"${pkgName}\": yourImportedModule }}\\`).`\n : `Missing runtime global \"${n}\". If you imported a third-party package, pass it via Playground props \\`dependencies\\`, or provide it via a plugin \\`runtimeGlobals\\`.`\n );\n }\n return globals[n];\n });\n};\n\nconst mergeFormValue = (base: unknown, overlay: unknown): unknown => {\n if (!isPlainObject(base) || !isPlainObject(overlay)) return overlay;\n return deepMergeObjects(base as Record<string, any>, overlay as Record<string, any>);\n};\n\nconst deepMergeObjects = (base: Record<string, any>, overlay: Record<string, any>) => {\n const out: Record<string, any> = { ...base };\n for (const [k, v] of Object.entries(overlay)) {\n const baseValue = out[k];\n if (isPlainObject(baseValue) && isPlainObject(v)) {\n out[k] = deepMergeObjects(baseValue, v);\n } else {\n out[k] = v;\n }\n }\n return out;\n};\n\nconst isPlainObject = (value: unknown): value is Record<string, any> => {\n if (value == null || typeof value !== 'object') return false;\n if (Array.isArray(value)) return false;\n const proto = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n};\n\nconst isDeepEqual = (a: any, b: any): boolean => {\n if (a === b) return true;\n if (a == null || b == null) return a === b;\n if (typeof a !== typeof b) return false;\n if (typeof a !== 'object') return false;\n\n if (Array.isArray(a) || Array.isArray(b)) {\n if (!Array.isArray(a) || !Array.isArray(b)) return false;\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!isDeepEqual(a[i], b[i])) return false;\n }\n return true;\n }\n\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) return false;\n for (const k of aKeys) {\n if (!Object.prototype.hasOwnProperty.call(b, k)) return false;\n if (!isDeepEqual(a[k], b[k])) return false;\n }\n return true;\n};\n","import * as Babel from '@babel/standalone';\nimport { rollup } from '@rollup/browser';\nimport { extendCompileConfigWithDependencies } from './dependencies';\nimport type { CompileResult, PlaygroundCompileConfig, PlaygroundPlugin, VirtualFileSystem } from './types';\n\nconst defaultBabelPlugins: any[] = [];\n\nconst babelTransform = (code: string, filename = 'UserComponent.tsx') => {\n const result = Babel.transform(code, {\n filename,\n presets: [\n ['env', { modules: false, targets: { esmodules: true } }],\n 'typescript',\n ['react', { runtime: 'classic' }]\n ],\n parserOpts: {\n plugins: defaultBabelPlugins\n }\n });\n\n return result.code ?? '';\n};\n\nexport async function compileUserCode(\n rawCode: string,\n plugins: PlaygroundPlugin[] = []\n): Promise<CompileResult> {\n return compileVirtualFiles({ '/UserPreview.tsx': rawCode }, '/UserPreview.tsx', plugins);\n}\n\nexport async function compileVirtualFiles(\n rawFiles: VirtualFileSystem,\n entryFile: string,\n plugins: PlaygroundPlugin[] = [],\n options?: { dependencies?: string[] }\n): Promise<CompileResult> {\n let files = normalizeVirtualFileSystem(rawFiles);\n let entry = normalizeVfsPath(entryFile);\n\n if (!files[entry]) {\n const first = Object.keys(files)[0];\n return { code: null, error: `Entry file not found: \"${entry}\". Available files: ${first ? `\"${first}\"...` : '(none)'}` };\n }\n\n try {\n for (const plugin of plugins) {\n if (!plugin.transformVirtualFiles) continue;\n const transformed = await plugin.transformVirtualFiles({ files, entryFile: entry });\n if (!transformed) continue;\n files = normalizeVirtualFileSystem(transformed.files);\n entry = normalizeVfsPath(transformed.entryFile);\n }\n } catch (error) {\n return { code: null, error: formatError(error) };\n }\n\n if (!files[entry]) {\n return { code: null, error: `Entry file not found after plugin transforms: \"${entry}\".` };\n }\n\n const compileConfigBase = resolveCompileConfig(plugins, { files, entryFile: entry });\n const compileConfig = extendCompileConfigWithDependencies(compileConfigBase, options?.dependencies ?? []);\n\n let workingFiles: VirtualFileSystem = { ...files };\n\n try {\n for (const plugin of plugins) {\n if (!plugin.beforeCompile) continue;\n const next: VirtualFileSystem = {};\n for (const [path, code] of Object.entries(workingFiles)) {\n next[path] = await plugin.beforeCompile(code);\n }\n workingFiles = next;\n }\n } catch (error) {\n return { code: null, error: formatError(error) };\n }\n\n let bundled: string;\n try {\n bundled = await bundleVirtualFilesWithRollup(workingFiles, entry, compileConfig);\n } catch (error) {\n return { code: null, error: formatError(error) };\n }\n\n const wrapped = wrapIifeExecutable(bundled, compileConfig.iifeName);\n let result: CompileResult = {\n code: wrapped,\n error: null,\n runtime: compileConfig.runtime,\n runtimeGlobalNames: Array.from(new Set(Object.values(compileConfig.rollupGlobals)))\n };\n\n try {\n for (const plugin of plugins) {\n if (plugin.afterCompile) {\n result = await plugin.afterCompile(result);\n }\n }\n } catch (error) {\n return { code: null, error: formatError(error) };\n }\n\n return result;\n}\n\nexport async function bundleWithRollup(source: string) {\n const code = await bundleVirtualFilesWithRollup({ '/entry.tsx': source }, '/entry.tsx', defaultReactCompileConfig());\n return code;\n}\n\nconst wrapIifeExecutable = (bundledCode: string, globalName: string) => {\n return `${bundledCode}\nconst __playground_export__ =\n typeof ${globalName} !== 'undefined' && ${globalName} && (${globalName}.default ?? ${globalName});\nreturn __playground_export__;`;\n};\n\nconst bundleVirtualFilesWithRollup = async (files: VirtualFileSystem, entryFile: string, config: PlaygroundCompileConfig) => {\n const bundle = await rollup({\n input: entryFile,\n external: config.rollupExternal,\n plugins: [\n {\n name: 'virtual-fs',\n resolveId(source, importer) {\n if (config.allowedBareImports.includes(source)) return null;\n\n const importerPath = importer ? stripQuery(importer) : null;\n\n if (!importerPath && source === entryFile) {\n return source;\n }\n\n if (source.startsWith('/') || source.startsWith('./') || source.startsWith('../')) {\n const resolved = resolveVfsImport(source, importerPath ?? entryFile, files);\n if (!resolved) {\n throw new Error(\n `Cannot resolve import \"${source}\" from \"${importerPath ?? '(entry)'}\".`\n );\n }\n return resolved;\n }\n\n throw new Error(\n `Only relative/absolute imports are supported in this sandbox; tried to import \"${source}\".`\n );\n },\n load(id) {\n const path = stripQuery(id);\n if (files[path] == null) return null;\n return files[path];\n },\n transform(code, id) {\n const path = stripQuery(id);\n if (files[path] == null) return null;\n const compiled = babelTransform(code, path);\n return { code: compiled, map: null };\n }\n }\n ]\n });\n\n const { output } = await bundle.generate({\n format: 'iife',\n name: config.iifeName,\n globals: config.rollupGlobals\n });\n\n await bundle.close();\n return output[0]?.code ?? '';\n};\n\nconst stripQuery = (id: string) => id.split('?')[0] ?? id;\n\nconst normalizeVirtualFileSystem = (files: VirtualFileSystem): VirtualFileSystem => {\n const normalized: VirtualFileSystem = {};\n for (const [path, code] of Object.entries(files)) {\n normalized[normalizeVfsPath(path)] = code;\n }\n return normalized;\n};\n\nconst normalizeVfsPath = (path: string) => {\n const replaced = path.replace(/\\\\/g, '/');\n const ensured = replaced.startsWith('/') ? replaced : `/${replaced}`;\n return ensured.replace(/\\/+/g, '/');\n};\n\nconst resolveVfsImport = (source: string, importer: string, files: VirtualFileSystem) => {\n const baseDir = dirname(importer);\n const baseResolved = source.startsWith('/') ? normalizeVfsPath(source) : normalizeVfsPath(resolvePath(baseDir, source));\n\n const candidates = fileCandidates(baseResolved);\n for (const candidate of candidates) {\n if (files[candidate] != null) return candidate;\n }\n return null;\n};\n\nconst fileCandidates = (path: string) => {\n const hasExt = /\\.[a-zA-Z0-9]+$/.test(path);\n const exts = ['.ts', '.tsx', '.js', '.jsx', '.vue'];\n const candidates: string[] = [];\n\n if (hasExt) {\n candidates.push(path);\n return candidates;\n }\n\n for (const ext of exts) candidates.push(`${path}${ext}`);\n for (const ext of exts) candidates.push(`${path}/index${ext}`);\n return candidates;\n};\n\nconst dirname = (path: string) => {\n const normalized = normalizeVfsPath(path);\n const idx = normalized.lastIndexOf('/');\n if (idx <= 0) return '/';\n return normalized.slice(0, idx);\n};\n\nconst resolvePath = (baseDir: string, relative: string) => {\n const baseParts = normalizeVfsPath(baseDir).split('/').filter(Boolean);\n const relParts = relative.split('/').filter(Boolean);\n const parts = [...baseParts];\n\n for (const part of relParts) {\n if (part === '.') continue;\n if (part === '..') {\n parts.pop();\n continue;\n }\n parts.push(part);\n }\n\n return `/${parts.join('/')}`;\n};\n\nconst formatError = (error: unknown) => {\n if (error instanceof Error) return error.message;\n return typeof error === 'string' ? error : 'Unknown error';\n};\n\nconst defaultReactCompileConfig = (): PlaygroundCompileConfig => ({\n runtime: 'react',\n allowedBareImports: ['react'],\n rollupExternal: ['react'],\n rollupGlobals: { react: 'React' },\n iifeName: '__PlaygroundPreview__'\n});\n\nconst resolveCompileConfig = (\n plugins: PlaygroundPlugin[],\n ctx: { files: VirtualFileSystem; entryFile: string }\n): PlaygroundCompileConfig => {\n let config = defaultReactCompileConfig();\n for (const plugin of plugins) {\n if (!plugin.extendCompileConfig) continue;\n config = plugin.extendCompileConfig(config, ctx) ?? config;\n }\n return config;\n};\n","import type { PlaygroundCompileConfig } from './types';\n\nexport const depIdentifierForPackage = (pkgName: string) => {\n const cleaned = pkgName\n .replace(/^@/, '')\n .replace(/[^a-zA-Z0-9_$]/g, '_');\n return `__pg_dep_${cleaned}`;\n};\n\nexport const extendCompileConfigWithDependencies = (\n config: PlaygroundCompileConfig,\n pkgNames: string[]\n): PlaygroundCompileConfig => {\n if (!pkgNames.length) return config;\n\n const allowedBareImports = new Set(config.allowedBareImports);\n const rollupExternal = new Set(config.rollupExternal);\n const rollupGlobals: Record<string, string> = { ...config.rollupGlobals };\n\n for (const pkgName of pkgNames) {\n allowedBareImports.add(pkgName);\n rollupExternal.add(pkgName);\n if (rollupGlobals[pkgName] == null) {\n rollupGlobals[pkgName] = depIdentifierForPackage(pkgName);\n }\n }\n\n return {\n ...config,\n allowedBareImports: Array.from(allowedBareImports),\n rollupExternal: Array.from(rollupExternal),\n rollupGlobals\n };\n};\n\n","import './runtimePolyfills';\nimport type { VirtualFileSystem } from './types';\nimport { parse } from '@babel/parser';\nimport traverse from '@babel/traverse';\nimport type * as t from '@babel/types';\n\nexport type MappingPath = Array<string | number>;\n\nexport type MappingDescriptor = {\n filePath: string;\n path: MappingPath;\n initRange: { start: number; end: number };\n initValue: unknown;\n quoteHint?: \"'\" | '\"' | '`';\n};\n\nconst PARSER_PLUGINS: any[] = ['typescript', 'jsx'];\nconst MAPPING_TAG = '@pg-mapping';\n\nexport function applyFormValueToFiles(files: VirtualFileSystem, formValue: unknown): VirtualFileSystem {\n const next: VirtualFileSystem = {};\n for (const [filePath, code] of Object.entries(files)) {\n next[filePath] = applyFormValueToCode(code, formValue);\n }\n return next;\n}\n\nexport function applyFormValueToCode(code: string, formValue: unknown): string {\n const mappings = extractMappingsFromCode(code, '/__inline__');\n if (mappings.length === 0) return code;\n\n const replacements: Array<{ start: number; end: number; text: string }> = [];\n for (const mapping of mappings) {\n const value = getByPath(formValue, mapping.path);\n if (value === undefined) continue;\n const text = literalToSource(value, mapping.quoteHint);\n if (text == null) continue;\n replacements.push({ start: mapping.initRange.start, end: mapping.initRange.end, text });\n }\n\n if (replacements.length === 0) return code;\n replacements.sort((a, b) => b.start - a.start);\n\n let out = code;\n for (const r of replacements) {\n out = out.slice(0, r.start) + r.text + out.slice(r.end);\n }\n return out;\n}\n\nexport function extractMappedFormValue(files: VirtualFileSystem): unknown {\n const out: any = {};\n\n for (const [filePath, code] of Object.entries(files)) {\n const mappings = extractMappingsFromCode(code, filePath);\n for (const mapping of mappings) {\n if (mapping.initValue === undefined) continue;\n setByPath(out, mapping.path, mapping.initValue);\n }\n }\n\n return out;\n}\n\nexport function extractMappingsFromCode(code: string, filePath: string): MappingDescriptor[] {\n let ast: any;\n try {\n ast = parse(code, { sourceType: 'module', plugins: PARSER_PLUGINS, ranges: true, tokens: true });\n } catch {\n return [];\n }\n\n const mappings: MappingDescriptor[] = [];\n\n try {\n (traverse as any)(ast, {\n VariableDeclarator(path: any) {\n const declNode = path.node;\n const parentNode = path.parentPath?.node;\n const comment = findMappingComment(declNode.leadingComments) ?? findMappingComment(parentNode?.leadingComments);\n if (!comment) return;\n\n const mappingPath = parseMappingPath(comment);\n if (!mappingPath) return;\n\n const init: t.Expression | null | undefined = declNode.init;\n if (!init || typeof init.start !== 'number' || typeof init.end !== 'number') return;\n\n const { value, quoteHint } = extractLiteralValueWithHint(code, init);\n if (value === undefined) return;\n\n mappings.push({\n filePath,\n path: mappingPath,\n initRange: { start: init.start, end: init.end },\n initValue: value,\n quoteHint\n });\n }\n });\n } catch {\n return [];\n }\n\n return mappings;\n}\n\nconst findMappingComment = (comments: any[] | null | undefined) => {\n if (!comments || comments.length === 0) return null;\n for (const c of comments) {\n const value: string | undefined = c?.value;\n if (!value) continue;\n if (value.includes(MAPPING_TAG)) return value;\n }\n return null;\n};\n\nconst parseMappingPath = (commentValue: string): MappingPath | null => {\n const idx = commentValue.indexOf(MAPPING_TAG);\n if (idx < 0) return null;\n const after = commentValue.slice(idx + MAPPING_TAG.length).trim();\n const start = after.indexOf('[');\n const end = after.lastIndexOf(']');\n if (start < 0 || end < 0 || end <= start) return null;\n\n const inside = after.slice(start, end + 1).trim();\n try {\n // Supports: ['a','b'] or [\"a\",\"b\"] or [0,\"a\"].\n const jsonish = inside.replace(/'/g, '\"');\n const parsed = JSON.parse(jsonish);\n if (!Array.isArray(parsed)) return null;\n const path: MappingPath = [];\n for (const seg of parsed) {\n if (typeof seg === 'string' || typeof seg === 'number') path.push(seg);\n else return null;\n }\n return path;\n } catch {\n return null;\n }\n};\n\nconst extractLiteralValueWithHint = (code: string, initNode: any): { value: unknown; quoteHint?: \"'\" | '\"' | '`' } => {\n if (initNode?.type === 'StringLiteral') {\n const hint = quoteHintFromSource(code.slice(initNode.start, initNode.end));\n return { value: initNode.value, quoteHint: hint };\n }\n if (initNode?.type === 'NumericLiteral') return { value: initNode.value };\n if (initNode?.type === 'BooleanLiteral') return { value: initNode.value };\n if (initNode?.type === 'NullLiteral') return { value: null };\n if (initNode?.type === 'TemplateLiteral' && Array.isArray(initNode.expressions) && initNode.expressions.length === 0) {\n return { value: initNode.quasis?.[0]?.value?.cooked ?? '', quoteHint: '`' };\n }\n return { value: undefined };\n};\n\nconst quoteHintFromSource = (raw: string): \"'\" | '\"' | '`' | undefined => {\n const trimmed = raw.trim();\n if (trimmed.startsWith(\"'\")) return \"'\";\n if (trimmed.startsWith('\"')) return '\"';\n if (trimmed.startsWith('`')) return '`';\n return undefined;\n};\n\nconst literalToSource = (value: unknown, quoteHint?: \"'\" | '\"' | '`'): string | null => {\n if (value == null) return 'null';\n if (typeof value === 'number') return Number.isFinite(value) ? String(value) : null;\n if (typeof value === 'boolean') return value ? 'true' : 'false';\n if (typeof value !== 'string') return null;\n\n if (quoteHint === '`') {\n const safe = value.replace(/`/g, '\\\\`').replace(/\\$\\{/g, '\\\\${');\n return `\\`${safe}\\``;\n }\n\n if (quoteHint === \"'\") {\n const safe = value.replace(/\\\\/g, '\\\\\\\\').replace(/'/g, \"\\\\'\").replace(/\\n/g, '\\\\n');\n return `'${safe}'`;\n }\n\n // Default to double quotes.\n const safe = value.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n');\n return `\"${safe}\"`;\n};\n\nconst getByPath = (root: unknown, path: MappingPath): unknown => {\n let cur: any = root;\n for (const seg of path) {\n if (cur == null) return undefined;\n cur = cur[seg as any];\n }\n return cur;\n};\n\nconst setByPath = (root: any, path: MappingPath, value: unknown) => {\n if (!root || path.length === 0) return;\n let cur = root;\n for (let i = 0; i < path.length; i++) {\n const seg = path[i]!;\n const isLast = i === path.length - 1;\n\n if (isLast) {\n cur[seg as any] = value;\n return;\n }\n\n const nextSeg = path[i + 1]!;\n const shouldBeArray = typeof nextSeg === 'number';\n\n if (cur[seg as any] == null || typeof cur[seg as any] !== 'object') {\n cur[seg as any] = shouldBeArray ? [] : {};\n }\n cur = cur[seg as any];\n }\n};\n","import React, { useMemo } from 'react';\nimport { usePlayground } from './PlaygroundProvider';\nimport type { PlaygroundFileTreeProps } from './types';\n\ntype TreeNode =\n | { type: 'folder'; name: string; path: string; children: TreeNode[] }\n | { type: 'file'; name: string; path: string };\n\ntype FolderNode = Extract<TreeNode, { type: 'folder' }>;\n\nexport const PlaygroundFileTree: React.FC<PlaygroundFileTreeProps> = ({\n height = '100%',\n width = 240,\n className,\n style\n}) => {\n const { files, activeFilePath, setActiveFilePath } = usePlayground();\n\n const tree = useMemo(() => buildTree(Object.keys(files)), [files]);\n\n return (\n <div\n className={className}\n style={{\n border: '1px solid #e2e8f0',\n borderRadius: 12,\n overflow: 'auto',\n height,\n width,\n background: '#0b1224',\n color: '#e2e8f0',\n ...style\n }}\n >\n <div style={{ padding: '10px 10px 6px', fontSize: 12, color: '#94a3b8', letterSpacing: 0.4 }}>\n EXPLORER\n </div>\n <div style={{ padding: '0 6px 10px' }}>\n {tree.children.map((node) => (\n <TreeNodeView\n key={node.path}\n node={node}\n depth={0}\n activeFilePath={activeFilePath}\n onSelectFile={setActiveFilePath}\n />\n ))}\n </div>\n </div>\n );\n};\n\nconst TreeNodeView: React.FC<{\n node: TreeNode;\n depth: number;\n activeFilePath: string;\n onSelectFile: (path: string) => void;\n}> = ({ node, depth, activeFilePath, onSelectFile }) => {\n if (node.type === 'folder') {\n return (\n <div>\n <div\n style={{\n padding: '4px 8px',\n marginLeft: depth * 10,\n fontSize: 12,\n color: '#cbd5e1',\n textTransform: 'uppercase',\n letterSpacing: 0.6\n }}\n >\n {node.name}\n </div>\n {node.children.map((child) => (\n <TreeNodeView\n key={child.path}\n node={child}\n depth={depth + 1}\n activeFilePath={activeFilePath}\n onSelectFile={onSelectFile}\n />\n ))}\n </div>\n );\n }\n\n const isActive = normalizePath(node.path) === normalizePath(activeFilePath);\n\n return (\n <button\n type=\"button\"\n onClick={() => onSelectFile(node.path)}\n style={{\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n textAlign: 'left',\n cursor: 'pointer',\n border: 0,\n background: isActive ? '#1d2a4f' : 'transparent',\n color: isActive ? '#e2e8f0' : '#cbd5e1',\n borderRadius: 8,\n padding: '6px 8px',\n marginLeft: depth * 10\n }}\n >\n <span style={{ width: 16, opacity: 0.8, marginRight: 6 }}>●</span>\n <span style={{ fontSize: 13 }}>{node.name}</span>\n </button>\n );\n};\n\nconst buildTree = (paths: string[]): FolderNode => {\n const root: FolderNode = { type: 'folder', name: '', path: '/', children: [] };\n\n for (const rawPath of paths.map(normalizePath).sort()) {\n const parts = rawPath.split('/').filter(Boolean);\n let current = root;\n let currentPath = '';\n\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i]!;\n currentPath += `/${part}`;\n const isLeaf = i === parts.length - 1;\n\n if (isLeaf) {\n current.children.push({ type: 'file', name: part, path: currentPath });\n continue;\n }\n\n let folder = current.children.find(\n (child): child is FolderNode =>\n child.type === 'folder' && child.name === part\n );\n if (!folder) {\n folder = { type: 'folder', name: part, path: currentPath, children: [] };\n current.children.push(folder);\n }\n current = folder;\n }\n }\n\n sortTree(root);\n return root;\n};\n\nconst sortTree = (node: TreeNode) => {\n if (node.type !== 'folder') return;\n node.children.sort((a, b) => {\n if (a.type !== b.type) return a.type === 'folder' ? -1 : 1;\n return a.name.localeCompare(b.name);\n });\n for (const child of node.children) sortTree(child);\n};\n\nconst normalizePath = (path: string) => {\n const replaced = path.replace(/\\\\/g, '/');\n const ensured = replaced.startsWith('/') ? replaced : `/${replaced}`;\n return ensured.replace(/\\/+/g, '/');\n};\n","import React from 'react';\nimport { usePlayground } from './PlaygroundProvider';\nimport type { PlaygroundRenderProps } from './types';\n\nexport const PlaygroundRender: React.FC<PlaygroundRenderProps> = ({ height = '100%', className, style }) => {\n const { isCompiling, error, renderedComponent, renderedDomModule, runtime } = usePlayground();\n\n return (\n <div\n className={className}\n style={{\n border: '1px solid #e2e8f0',\n borderRadius: 12,\n padding: 12,\n overflow: 'auto',\n position: 'relative',\n height,\n ...style\n }}\n >\n {isCompiling && <StatusBanner message=\"Compiling...\" tone=\"info\" />}\n {error && <StatusBanner message={error} tone=\"error\" />}\n {!error && !isCompiling && runtime === 'react' && renderedComponent && <RenderSurface component={renderedComponent} />}\n {!error && !isCompiling && runtime === 'dom' && renderedDomModule && <DomRenderSurface module={renderedDomModule} />}\n </div>\n );\n};\n\nconst RenderSurface: React.FC<{ component: React.ComponentType }> = ({ component: Component }) => {\n return (\n <div style={{ width: '100%', height: '100%', color: '#0f172a' }}>\n <Component />\n </div>\n );\n};\n\nconst DomRenderSurface: React.FC<{ module: { mount: (el: HTMLElement) => any; unmount?: () => any } }> = ({ module }) => {\n const ref = React.useRef<HTMLDivElement | null>(null);\n\n React.useEffect(() => {\n if (!ref.current) return;\n const el = ref.current;\n const result = module.mount(el);\n return () => {\n if (typeof module.unmount === 'function') {\n module.unmount();\n return;\n }\n if (typeof result === 'function') {\n result();\n }\n el.replaceChildren();\n };\n }, [module]);\n\n return <div ref={ref} style={{ width: '100%', height: '100%' }} />;\n};\n\nconst StatusBanner: React.FC<{ message: string; tone: 'info' | 'error' }> = ({ message, tone }) => {\n const colors =\n tone === 'error'\n ? { background: '#fef2f2', border: '#fecdd3', text: '#991b1b' }\n : { background: '#eff6ff', border: '#bfdbfe', text: '#1d4ed8' };\n\n return (\n <div\n style={{\n background: colors.background,\n border: `1px solid ${colors.border}`,\n color: colors.text,\n padding: '10px 12px',\n borderRadius: 10,\n fontSize: 14,\n marginBottom: 8\n }}\n >\n {message}\n </div>\n );\n};\n"],"mappings":"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","names":["import_react","import_react","traverse","safe","normalizeVirtualFileSystem","normalizeVfsPath","_a","React","normalizedEntry","formatError","code","value","import_react","import_jsx_runtime","import_jsx_runtime","Editor","normalizeVfsPath","import_react","import_jsx_runtime","module","React","import_jsx_runtime"]}
|