/** * Copyright 2022 Design Barn Inc. */ import { Size, Appearance, TextColor } from '@lottiefiles/react-ui-kit'; import { useContext } from '@wordpress/element'; import * as React from 'react'; import { useNavigate } from 'react-router-dom'; import { Button } from '../../../../_components'; import { LottiePlayer } from '../../../../components/LottiePlayer'; import { LottieContext } from '../../../../context/lottie-provider'; import { withBase } from '../../../../hoc'; import { IHostAppProps } from '../../../../interfaces'; import { saveToMediaLibrary, uploadToMediaLibrary } from '../../../../utility'; import { isDotLottie, extractDotLottie } from '../../../../utils'; import { ImportSidebar } from '../Import'; const Preview: React.FC = ({ setAttributes }: IHostAppProps) => { const navigate = useNavigate(); const { appData, closeModal, previewFile, setPreviewFile } = useContext(LottieContext); const { copyLottieToMedia } = appData; const isLocalUpload = previewFile.json && previewFile.file; const resetPreview = (): void => { setPreviewFile({ path: '' }); navigate('/import'); }; const closePreview = (): void => { closeModal(false); resetPreview(); }; const insertAnimation = (): void => { if (isLocalUpload) { uploadToMediaLibrary({ file: previewFile.file, onFileSave: (src: string, jsonSrc?: Record) => { setAttributes({ src, jsonSrc }); closePreview(); }, onError: () => { /** */ }, }); } else if (copyLottieToMedia) { saveToMediaLibrary({ url: previewFile.path, onFileSave: (src: string, jsonSrc?: Record) => { setAttributes({ src, jsonSrc }); closePreview(); }, onError: (error: unknown) => { console.log(error); }, }); } else { if (isDotLottie(previewFile.path)) { const getLottie = async () => { try { const jsonSrc = await extractDotLottie(previewFile.path); setAttributes({ src: previewFile.path, jsonSrc }); closePreview(); } catch (error) { console.log(error); } }; getLottie(); return; } setAttributes({ src: previewFile.path }); closePreview(); } }; return (
null} />
); }; export default withBase({ SidebarContent: ImportSidebar })(Preview);