/* * Copyright (C) Contributors to the Suwayomi project * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ import React from 'react'; import CircularProgress from '@mui/material/CircularProgress'; import { Box } from '@mui/system'; interface IProps { shouldRender?: boolean | (() => boolean); children?: React.ReactNode; component?: string | React.FunctionComponent | React.ComponentClass; componentProps?: any; } export default function LoadingPlaceholder(props: IProps) { const { children, shouldRender, component, componentProps } = props; let condition = true; if (shouldRender !== undefined) { condition = shouldRender instanceof Function ? shouldRender() : shouldRender; } if (condition) { if (component) { return React.createElement(component, componentProps); } if (children) { return <>{children}; } } return ( ); }