import React from 'react'; import {Xmark} from '@gravity-ui/icons'; import {Button, Flex, Icon, Text} from '@gravity-ui/uikit'; import {EnableFullscreenButton} from '../../../../../components/EnableFullscreenButton/EnableFullscreenButton'; import {ResponseError} from '../../../../../components/Errors/ResponseError'; import {Fullscreen} from '../../../../../components/Fullscreen/Fullscreen'; import {LoaderWrapper} from '../../../../../components/LoaderWrapper/LoaderWrapper'; import {setShowPreview} from '../../../../../store/reducers/schema/schema'; import {useTypedDispatch} from '../../../../../utils/hooks'; import i18n from '../../i18n'; import {b} from '../shared'; interface PreviewProps { path: string; quantity?: number; truncated?: boolean; renderResult?: () => React.ReactNode; loading?: boolean; error?: unknown; } export function Preview({ path, quantity = 0, truncated, renderResult, loading, error, }: PreviewProps) { const dispatch = useTypedDispatch(); const handleClosePreview = () => { dispatch(setShowPreview(false)); }; const renderHeader = () => { return ( {i18n('title_query-preview')} {truncated ? `${i18n('value_truncated-query-preview')} ` : ''}({quantity})
{path}
); }; const renderContent = () => { if (error) { return ; } return renderResult?.(); }; return (
{renderHeader()}
{renderContent()}
); }