import React, { ForwardedRef } from 'react'; import { CodeSandbox, CodeSandboxProps } from '@music163/tango-sandbox'; import { DndQuery } from '../dnd'; import { SelectionToolsProps } from '../simulator/selection'; interface ISandboxEventHandlerConfig { sandboxQuery?: DndQuery; sandboxType?: 'design' | 'preview'; isActive: boolean; [x: string]: any; } export type SandboxProps = Omit & { isPreview?: boolean; selectionTools?: SelectionToolsProps['actions']; /** * tangoConfigJson 处理器 */ configFormatter?: IMergeTangoConfigJsonConfig['formatter']; /** * 文件格式化器 * @param files 沙箱文件列表 * @returns 修改后的文件列表 */ filesFormatter?: (files: CodeSandboxProps['files']) => CodeSandboxProps['files']; sandboxType?: 'design' | 'preview'; mode?: 'single' | 'combined'; injectScript?: string; onViewChange?: (data: any, config?: ISandboxEventHandlerConfig) => void; onMessage?: (data: any, config?: ISandboxEventHandlerConfig) => void; onLoad?: (config?: ISandboxEventHandlerConfig) => void; /** * 沙箱导航栏扩展 */ navigatorExtra?: React.ReactNode; }; export interface CombinedSandboxRef { designSandbox: CodeSandbox; previewSandbox: CodeSandbox; } export declare const CombinedSandbox: (({ onViewChange: onViewChangeProp, ...rest }: SandboxProps, ref: ForwardedRef) => React.JSX.Element) & React.NamedExoticComponent & { isPreview?: boolean; selectionTools?: SelectionToolsProps['actions']; /** * tangoConfigJson 处理器 */ configFormatter?: IMergeTangoConfigJsonConfig['formatter']; /** * 文件格式化器 * @param files 沙箱文件列表 * @returns 修改后的文件列表 */ filesFormatter?: (files: CodeSandboxProps['files']) => CodeSandboxProps['files']; sandboxType?: 'design' | 'preview'; mode?: 'single' | 'combined'; injectScript?: string; onViewChange?: (data: any, config?: ISandboxEventHandlerConfig) => void; onMessage?: (data: any, config?: ISandboxEventHandlerConfig) => void; onLoad?: (config?: ISandboxEventHandlerConfig) => void; /** * 沙箱导航栏扩展 */ navigatorExtra?: React.ReactNode; } & React.RefAttributes> & { readonly type: React.ForwardRefExoticComponent & { isPreview?: boolean; selectionTools?: SelectionToolsProps['actions']; /** * tangoConfigJson 处理器 */ configFormatter?: IMergeTangoConfigJsonConfig['formatter']; /** * 文件格式化器 * @param files 沙箱文件列表 * @returns 修改后的文件列表 */ filesFormatter?: (files: CodeSandboxProps['files']) => CodeSandboxProps['files']; sandboxType?: 'design' | 'preview'; mode?: 'single' | 'combined'; injectScript?: string; onViewChange?: (data: any, config?: ISandboxEventHandlerConfig) => void; onMessage?: (data: any, config?: ISandboxEventHandlerConfig) => void; onLoad?: (config?: ISandboxEventHandlerConfig) => void; /** * 沙箱导航栏扩展 */ navigatorExtra?: React.ReactNode; } & React.RefAttributes>; }; export declare const Sandbox: (({ isPreview: isPreviewProp, selectionTools, bundlerURL, mode, navigatorExtra, ...props }: SandboxProps) => React.JSX.Element) & { displayName: string; }; interface IMergeTangoConfigJsonConfig { isPreview?: boolean; injectScript?: string; formatter?: (json: object) => object; } export {};