import type { OdFileObject } from '../../types' import { FC, useEffect, useRef, useState } from 'react' import { ReactReader } from 'react-reader' import Loading from '../Loading' import DownloadButtonGroup from '../DownloadBtnGtoup' import { DownloadBtnContainer } from './Containers' const EPUBPreview: FC<{ file: OdFileObject }> = ({ file }) => { const [epubContainerWidth, setEpubContainerWidth] = useState(400) const epubContainer = useRef(null) useEffect(() => { setEpubContainerWidth(epubContainer.current ? epubContainer.current.offsetWidth : 400) }, []) const [location, setLocation] = useState() const onLocationChange = (cfiStr: string) => setLocation(cfiStr) // Fix for not valid epub files according to // https://github.com/gerhardsletten/react-reader/issues/33#issuecomment-673964947 const fixEpub = rendition => { const spineGet = rendition.book.spine.get.bind(rendition.book.spine) rendition.book.spine.get = function (target: string) { const targetStr = target as string let t = spineGet(target) while (t == null && targetStr.startsWith('../')) { target = targetStr.substring(3) t = spineGet(target) } return t } } return (
fixEpub(rendition)} loadingView={} location={location} locationChanged={onLocationChange} epubInitOptions={{ openAs: 'epub' }} epubOptions={{ flow: 'scrolled' }} />
) } export default EPUBPreview