import { useState } from 'react'; import { Excalidraw, Footer, Sidebar } from '@excalidraw/excalidraw'; import type { AppState, BinaryFiles, ExcalidrawImperativeAPI, } from '@excalidraw/excalidraw/types'; import type { ExcalidrawElement } from '@excalidraw/excalidraw/element/types'; // eslint-disable-next-line import/no-unresolved import '@excalidraw/excalidraw/index.css'; import { AnimateConfig } from './AnimateConfig'; import type { Drawing } from './AnimateConfig'; type Props = { initialData: | { elements: ExcalidrawElement[]; appState: AppState; files: BinaryFiles } | undefined; onChangeData: (data: { elements: readonly ExcalidrawElement[]; appState: AppState; files: BinaryFiles; }) => void; theme: 'light' | 'dark'; }; const ExcalidrawApp = ({ initialData, onChangeData, theme }: Props) => { const [drawing, setDrawing] = useState(initialData); const [excalidrawAPI, setExcalidrawAPI] = useState(null); return (
setExcalidrawAPI(api)} initialData={initialData} onChange={(elements, appState, files) => { setDrawing((prev) => { if ( prev && prev.elements === elements && prev.appState === appState && prev.files === files ) { return prev; } return { elements, appState, files }; }); onChangeData({ elements, appState, files }); }} >
{drawing && excalidrawAPI ? ( ) : (

Loading...

)}
); }; export default ExcalidrawApp;