import { css, cx } from '@emotion/css'; import React from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { Button, ModalsController, CollapsableSection, HorizontalGroup, useStyles2 } from '@grafana/ui'; import { DecoratedRevisionModel } from '../DashboardSettings/VersionsSettings'; import { DiffGroup } from './DiffGroup'; import { DiffViewer } from './DiffViewer'; import { RevertDashboardModal } from './RevertDashboardModal'; import { jsonDiff } from './utils'; type DiffViewProps = { isNewLatest: boolean; newInfo: DecoratedRevisionModel; baseInfo: DecoratedRevisionModel; diffData: { lhs: unknown; rhs: unknown }; }; export const VersionHistoryComparison = ({ baseInfo, newInfo, diffData, isNewLatest }: DiffViewProps) => { const diff = jsonDiff(diffData.lhs, diffData.rhs); const styles = useStyles2(getStyles); return (

Version {newInfo.version} updated by {newInfo.createdBy} {newInfo.ageString} -{' '} {newInfo.message}

Version {baseInfo.version} updated by {baseInfo.createdBy} {baseInfo.ageString} -{' '} {baseInfo.message}

{isNewLatest && ( {({ showModal, hideModal }) => ( )} )}
{Object.entries(diff).map(([key, diffs]) => ( ))}
); }; const getStyles = (theme: GrafanaTheme2) => ({ spacer: css` margin-bottom: ${theme.spacing(4)}; `, versionInfo: css` color: ${theme.colors.text.secondary}; font-size: ${theme.typography.bodySmall.fontSize}; `, noMarginBottom: css` margin-bottom: 0; `, });