2024-10-30 16:01:24 +05:30
|
|
|
import { JSONValue } from 'ai';
|
|
|
|
|
import { Dispatch, memo, SetStateAction } from 'react';
|
|
|
|
|
|
|
|
|
|
import { UICanvas } from './canvas';
|
|
|
|
|
import { useCanvasStream } from './use-canvas-stream';
|
|
|
|
|
|
|
|
|
|
interface CanvasStreamHandlerProps {
|
2024-11-01 15:31:54 +05:30
|
|
|
setCanvas: Dispatch<SetStateAction<UICanvas>>;
|
2024-10-30 16:01:24 +05:30
|
|
|
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);
|