Skip to main content
Glama
ResourceDiff.tsx1.63 kB
// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors // SPDX-License-Identifier: Apache-2.0 import { stringify } from '@medplum/core'; import type { Resource } from '@medplum/fhirtypes'; import type { JSX } from 'react'; import type { Delta } from '../utils/diff'; import { diff } from '../utils/diff'; import classes from './ResourceDiff.module.css'; export interface ResourceDiffProps { readonly original: Resource; readonly revised: Resource; readonly ignoreMeta?: boolean; } export function ResourceDiff(props: ResourceDiffProps): JSX.Element { let originalResource = props.original; let revisedResource = props.revised; if (props.ignoreMeta) { originalResource = { ...originalResource, meta: undefined }; revisedResource = { ...revisedResource, meta: undefined }; } const original = stringify(originalResource, true).match(/[^\r\n]+/g) as string[]; const revised = stringify(revisedResource, true).match(/[^\r\n]+/g) as string[]; const deltas = diff(original, revised); return ( <pre style={{ color: 'gray' }}> {deltas.map((delta, index) => ( <ChangeDiff key={'delta' + index} delta={delta} /> ))} </pre> ); } function ChangeDiff(props: { delta: Delta }): JSX.Element { return ( <> ... <br /> {props.delta.original.lines.length > 0 && ( <div className={classes.removed}>{props.delta.original.lines.join('\n')}</div> )} {props.delta.revised.lines.length > 0 && ( <div className={classes.added}>{props.delta.revised.lines.join('\n')}</div> )} ... <br /> </> ); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/medplum/medplum'

If you have feedback or need assistance with the MCP directory API, please join our Discord server