/* * 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 ( ); }