/// import type { CSSProperties, Ref } from 'vue'; import type { File, ReplStore } from '../../core'; import type { PlaygroundProps } from '../playground.type'; export type { editor as MonacoEditor } from 'monaco-editor'; export declare type Monaco = typeof monaco; export declare type CreateEditorOptions = monaco.editor.IStandaloneEditorConstructionOptions; export declare type IStandaloneCodeEditor = monaco.editor.IStandaloneCodeEditor; export declare type MaybePromise = T | Promise; export declare type PromiseFnReturnType Promise, R = ReturnType> = R extends Promise ? U : never; export declare type Tsconfig = Parameters[0]; export declare type LayoutDirection = 'EditorBottomPreviewTop' | 'EditorTopPreviewBottom' | 'EditorRightPreviewLeft' | 'EditorLeftPreviewRight'; export interface TsLib { content: string; filePath?: string; } export interface PlaygroundPkgCdn { '@vue/runtime-dom'?: (version: string, ending: string) => string; '@vue/compiler-sfc'?: (version: string, ending: string) => string; 'es-module-shims'?: (version: string, ending: string) => string; } export declare type PlaygroundOptions = Partial; export interface PlaygroundLifeCycle { beforeLoadMonaco?: () => MaybePromise; afterLoadMonaco?: (monaco: Monaco) => MaybePromise; loadTsconfig?: (monaco: Monaco, defaultTsconfig: Tsconfig) => MaybePromise; loadTsLibs?: (monaco: Monaco, defaultTsLibs: TsLib[]) => MaybePromise; afterSetLanguage?: (monaco: Monaco) => MaybePromise; loadWorkers?: (monaco: Monaco, self: Window) => MaybePromise; beforeCreateEditor?: (monaco: Monaco) => MaybePromise; loadEditorOption?: (monaco: Monaco, defaultOptions: CreateEditorOptions) => MaybePromise; afterCreateEditor?: (monaco: Monaco, editor: IStandaloneCodeEditor) => MaybePromise; onCodeChange?: (event: { activeFile: File; newCode: string; }) => MaybePromise; beforeDestroyEditor?: (monaco: Monaco, editor: IStandaloneCodeEditor) => MaybePromise; afterDestroyEditor?: (monaco: Monaco) => MaybePromise; onDarkModeChange?: (darkMode: boolean) => MaybePromise; } export interface EditorExpose { getEditor: () => IStandaloneCodeEditor; disposeEditor: Ref<() => void>; loading: Ref; } export interface PreviewExpose { containerRef: Ref; sandboxIframe: HTMLIFrameElement | undefined; loading: Ref; } export interface PlaygroundExpose { store: ReplStore; preview: Ref; editor: Ref; isDark: Ref; toggleDark: (preIsDark?: boolean | undefined) => void; } export interface PlaygroundTheme extends CSSProperties { '--editor-theme-name'?: string; '--theme-color'?: string; '--border-color'?: string; '--bg-color'?: string; '--toolbar-title-color'?: string; '--toolbar-bg-color'?: string; '--toolbar-text-color'?: string; '--toolbar-icon-bg-color'?: string; '--toolbar-icon-color'?: string; '--toolbar-icon-active-color'?: string; '--preview-bg-color'?: string; '--preview-text-color'?: string; '--file-manager-bg-color'?: string; '--file-manager-text-color'?: string; '--file-manager-active-bg-color'?: string; '--file-manager-active-text-color'?: string; '--file-manager-right-float-bg'?: string; '--message-warn-text-color'?: string; '--message-warn-bg-color'?: string; '--message-warn-border-color'?: string; '--message-error-text-color'?: string; '--message-error-bg-color'?: string; '--message-error-border-color'?: string; '--message-dismiss-text-color'?: string; '--message-dismiss-bg-color'?: string; } export interface PlaygroundThemes { light?: PlaygroundTheme; dark?: PlaygroundTheme; }