import React, {MutableRefObject, ReactNode, Suspense, useState} from 'react'; import {Dialog} from '../ui/overlays/dialog/dialog'; import {DialogHeader} from '../ui/overlays/dialog/dialog-header'; import {Trans} from '../i18n/trans'; import {DialogBody} from '../ui/overlays/dialog/dialog-body'; import {ProgressCircle} from '../ui/progress/progress-circle'; import {useDialogContext} from '../ui/overlays/dialog/dialog-context'; import {DialogFooter} from '../ui/overlays/dialog/dialog-footer'; import {Button} from '../ui/buttons/button'; import type ReactAce from 'react-ace'; const AceEditor = React.lazy(() => import('./ace-editor')); interface TextEditorSourcecodeDialogProps { defaultValue: string; mode?: 'css' | 'html' | 'php_laravel_blade'; title: ReactNode; onSave?: (value?: string) => void; isSaving?: boolean; footerStartAction?: ReactNode; beautify?: boolean; editorRef?: MutableRefObject; } export function AceDialog({ defaultValue, mode = 'html', title, onSave, isSaving, footerStartAction, beautify, editorRef, }: TextEditorSourcecodeDialogProps) { const [value, setValue] = useState(defaultValue); const [isValid, setIsValid] = useState(true); return ( {title} } > setValue(newValue)} defaultValue={value || ''} onIsValidChange={setIsValid} editorRef={editorRef} />
); } interface FooterProps { disabled: boolean | undefined; value?: string; onSave?: (value?: string) => void; startAction?: ReactNode; } function Footer({disabled, value, onSave, startAction}: FooterProps) { const {close} = useDialogContext(); return ( ); }