import { vi } from "vitest";
import React, { useEffect } from "react";
import { render, waitFor } from "@testing-library/react";
import { ToolCallStatus } from "@copilotkit/core";
import { useFrontendTool } from "../use-frontend-tool";
import * as copilotKitV2React from "../../v2";
vi.mock("../../v2", () => {
let currentRender: any = null;
const listeners = new Set<() => void>();
return {
useFrontendTool: vi.fn((tool: { render?: any }) => {
React.useEffect(() => {
currentRender = tool.render ?? null;
listeners.forEach((listener) => listener());
}, [tool.render]);
}),
__getCurrentRender: () => currentRender,
__subscribeRender: (listener: () => void) => {
listeners.add(listener);
return () => listeners.delete(listener);
},
};
});
const toolRenderModule = copilotKitV2React as unknown as {
__getCurrentRender: () => any;
__subscribeRender: (listener: () => void) => () => void;
};
function ToolRenderHost() {
const render = React.useSyncExternalStore(
toolRenderModule.__subscribeRender,
toolRenderModule.__getCurrentRender,
toolRenderModule.__getCurrentRender,
);
if (!render) {
return null;
}
const RenderComponent = render;
return (