Add canvas interface (#461)

This commit is contained in:
Jeremy 2024-10-30 16:01:24 +05:30 committed by GitHub
parent 1a74a5ca9a
commit b3cb0ea755
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
44 changed files with 7454 additions and 4691 deletions

View file

@ -0,0 +1,43 @@
import { JSONValue } from 'ai';
import { Dispatch, memo, SetStateAction } from 'react';
import { UICanvas } from './canvas';
import { useCanvasStream } from './use-canvas-stream';
interface CanvasStreamHandlerProps {
setCanvas: Dispatch<SetStateAction<UICanvas | null>>;
streamingData: JSONValue[] | undefined;
}
export function PureCanvasStreamHandler({
setCanvas,
streamingData,
}: CanvasStreamHandlerProps) {
useCanvasStream({
streamingData,
setCanvas,
});
return null;
}
function areEqual(
prevProps: CanvasStreamHandlerProps,
nextProps: CanvasStreamHandlerProps
) {
if (!prevProps.streamingData && !nextProps.streamingData) {
return true;
}
if (!prevProps.streamingData || !nextProps.streamingData) {
return false;
}
if (prevProps.streamingData.length !== nextProps.streamingData.length) {
return false;
}
return true;
}
export const CanvasStreamHandler = memo(PureCanvasStreamHandler, areEqual);