{"version":3,"file":"use-render-activity-message.mjs","names":[],"sources":["../../src/hooks/use-render-activity-message.tsx"],"sourcesContent":["import { ActivityMessage } from \"@ag-ui/core\";\nimport { DEFAULT_AGENT_ID } from \"@copilotkitnext/shared\";\nimport { useCopilotKit, useCopilotChatConfiguration } from \"@/providers\";\nimport { useCallback, useMemo } from \"react\";\nimport { ReactActivityMessageRenderer } from \"@/types\";\n\nexport function useRenderActivityMessage() {\n  const { copilotkit } = useCopilotKit();\n  const config = useCopilotChatConfiguration();\n  const agentId = config?.agentId ?? DEFAULT_AGENT_ID;\n\n  const renderers = copilotkit.renderActivityMessages;\n\n  // Find the renderer for a given activity type\n  const findRenderer = useCallback(\n    (activityType: string): ReactActivityMessageRenderer<unknown> | null => {\n      if (!renderers.length) {\n        return null;\n      }\n\n      const matches = renderers.filter(\n        (renderer) => renderer.activityType === activityType,\n      );\n\n      return (\n        matches.find((candidate) => candidate.agentId === agentId) ??\n        matches.find((candidate) => candidate.agentId === undefined) ??\n        renderers.find((candidate) => candidate.activityType === \"*\") ??\n        null\n      );\n    },\n    [agentId, renderers],\n  );\n\n  const renderActivityMessage = useCallback(\n    (message: ActivityMessage): React.ReactElement | null => {\n      const renderer = findRenderer(message.activityType);\n\n      if (!renderer) {\n        return null;\n      }\n\n      const parseResult = renderer.content.safeParse(message.content);\n\n      if (!parseResult.success) {\n        console.warn(\n          `Failed to parse content for activity message '${message.activityType}':`,\n          parseResult.error,\n        );\n        return null;\n      }\n\n      const Component = renderer.render;\n      const agent = copilotkit.getAgent(agentId);\n\n      return (\n        <Component\n          key={message.id}\n          activityType={message.activityType}\n          content={parseResult.data}\n          message={message}\n          agent={agent}\n        />\n      );\n    },\n    [agentId, copilotkit, findRenderer],\n  );\n\n  return useMemo(\n    () => ({ renderActivityMessage, findRenderer }),\n    [renderActivityMessage, findRenderer],\n  );\n}\n"],"mappings":";;;;;;;;AAMA,SAAgB,2BAA2B;CACzC,MAAM,EAAE,eAAe,eAAe;CAEtC,MAAM,UADS,6BAA6B,EACpB,WAAW;CAEnC,MAAM,YAAY,WAAW;CAG7B,MAAM,eAAe,aAClB,iBAAuE;AACtE,MAAI,CAAC,UAAU,OACb,QAAO;EAGT,MAAM,UAAU,UAAU,QACvB,aAAa,SAAS,iBAAiB,aACzC;AAED,SACE,QAAQ,MAAM,cAAc,UAAU,YAAY,QAAQ,IAC1D,QAAQ,MAAM,cAAc,UAAU,YAAY,OAAU,IAC5D,UAAU,MAAM,cAAc,UAAU,iBAAiB,IAAI,IAC7D;IAGJ,CAAC,SAAS,UAAU,CACrB;CAED,MAAM,wBAAwB,aAC3B,YAAwD;EACvD,MAAM,WAAW,aAAa,QAAQ,aAAa;AAEnD,MAAI,CAAC,SACH,QAAO;EAGT,MAAM,cAAc,SAAS,QAAQ,UAAU,QAAQ,QAAQ;AAE/D,MAAI,CAAC,YAAY,SAAS;AACxB,WAAQ,KACN,iDAAiD,QAAQ,aAAa,KACtE,YAAY,MACb;AACD,UAAO;;EAGT,MAAM,YAAY,SAAS;EAC3B,MAAM,QAAQ,WAAW,SAAS,QAAQ;AAE1C,SACE,oBAAC;GAEC,cAAc,QAAQ;GACtB,SAAS,YAAY;GACZ;GACF;KAJF,QAAQ,GAKb;IAGN;EAAC;EAAS;EAAY;EAAa,CACpC;AAED,QAAO,eACE;EAAE;EAAuB;EAAc,GAC9C,CAAC,uBAAuB,aAAa,CACtC"}