/** * One record value as an indented key/value tree: keys and nesting carry the * structure, with none of JSON's brace and quote noise. Image blobs render as * a thumbnail when a `blobBase` URL is given. */ export function RecordValue({ value, blobBase }) { if (value === null || value === undefined) return null; if (typeof value === 'string') return value === '' ? ( "" ) : ( {value} ); if (typeof value === 'number') return {value}; if (typeof value === 'boolean') return {String(value)}; if (Array.isArray(value)) { return value.map((item, index) => ( // biome-ignore lint/suspicious/noArrayIndexKey: records have no ids
-
)); } const thumbnail = blobBase && value.$type === 'blob' && typeof value.ref?.$link === 'string' && value.mimeType?.startsWith('image/') ? `${blobBase}&cid=${encodeURIComponent(value.ref.$link)}` : null; return ( <> {thumbnail && ( )} {Object.entries(value).map(([key, inner]) => { const nested = inner !== null && typeof inner === 'object'; return nested ? (
{key}:
) : (
{key}:
); })} ); }