@anker-in/campaign-ui 0.1.3 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/cjs/components/chat/Messages.d.ts +1 -1
  2. package/dist/cjs/components/chat/action.d.ts +2 -1
  3. package/dist/cjs/components/chat/action.js +1 -1
  4. package/dist/cjs/components/chat/action.js.map +3 -3
  5. package/dist/cjs/components/chat/index.d.ts +7 -0
  6. package/dist/cjs/components/chat/index.js +1 -1
  7. package/dist/cjs/components/chat/index.js.map +3 -3
  8. package/dist/cjs/components/chat/messages.js +1 -1
  9. package/dist/cjs/components/chat/messages.js.map +3 -3
  10. package/dist/cjs/components/chat/props.d.ts +1 -0
  11. package/dist/cjs/components/chat/props.js +1 -1
  12. package/dist/cjs/components/chat/props.js.map +1 -1
  13. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  14. package/dist/esm/components/chat/Messages.d.ts +1 -1
  15. package/dist/esm/components/chat/action.d.ts +2 -1
  16. package/dist/esm/components/chat/action.js +1 -1
  17. package/dist/esm/components/chat/action.js.map +3 -3
  18. package/dist/esm/components/chat/index.d.ts +7 -0
  19. package/dist/esm/components/chat/index.js +1 -1
  20. package/dist/esm/components/chat/index.js.map +3 -3
  21. package/dist/esm/components/chat/messages.js +1 -1
  22. package/dist/esm/components/chat/messages.js.map +3 -3
  23. package/dist/esm/components/chat/props.d.ts +1 -0
  24. package/dist/esm/components/chat/props.js.map +1 -1
  25. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  26. package/package.json +1 -1
  27. package/src/components/chat/action.tsx +12 -0
  28. package/src/components/chat/index.tsx +11 -0
  29. package/src/components/chat/messages.tsx +5 -1
  30. package/src/components/chat/props.ts +1 -0
@@ -11,6 +11,7 @@ export interface ActionProps {
11
11
  history: Message[];
12
12
  addtocartHandler?: (_args: any) => Promise<any>;
13
13
  commonRender?: string | ((_props: any) => React.ReactElement);
14
+ pointsExchangeCouponRender?: string | ((_props: any) => React.ReactElement);
14
15
  gotocheckoutRender?: string | ((_props: any) => React.ReactElement);
15
16
  gotocartRender?: string | ((_props: any) => React.ReactElement);
16
17
  addtocartRender?: string | ((_props: any) => React.ReactElement);
@@ -19,5 +20,5 @@ export interface ActionProps {
19
20
  productRenderTipMessage?: string;
20
21
  children?: React.ReactNode;
21
22
  }
22
- export declare const CopilotAction: ({ start, history, addtocartHandler, commonRender, gotocheckoutRender, gotocartRender, addtocartRender, productRender, signupRender, children, }: ActionProps) => import("react/jsx-runtime").JSX.Element;
23
+ export declare const CopilotAction: ({ start, history, addtocartHandler, commonRender, pointsExchangeCouponRender, gotocheckoutRender, gotocartRender, addtocartRender, productRender, signupRender, children, }: ActionProps) => import("react/jsx-runtime").JSX.Element;
23
24
  export {};
@@ -1,2 +1,2 @@
1
- import{jsx as t}from"react/jsx-runtime";import"react";import{useEffect as f}from"react";import{useCopilotChat as _,useCopilotAction as a,useCopilotReadable as N}from"@copilotkit/react-core";import{Role as c,ActionExecutionMessage as v,TextMessage as E}from"@copilotkit/runtime-client-gql";const x=({start:M,history:s,addtocartHandler:o,commonRender:d,gotocheckoutRender:p,gotocartRender:m,addtocartRender:g,productRender:l,signupRender:u,children:y})=>{const{setMessages:h,appendMessage:S,isLoading:k}=_();return f(()=>{const e=s?.filter(r=>r?.content||r?.arguments);if(e?.length>0){const r=e?.map(n=>{if(n?.name&&n?.arguments){const R=n?.arguments?.map(i=>i?{...i,ishistory:!0}:{});return new v({name:n?.name,arguments:R,scope:n?.scope})}return new E({...n,role:n?.role==="user"?c.User:c.Assistant})});h(r)}},[s]),a({name:"go_to_checkout",description:"go to cart",parameters:[{sku:"",handle:""}],render:p||(e=>t("div",{className:"hidden",children:JSON.stringify(e)})),handler:function(){}}),a({name:"common_action",description:"common action",parameters:[{act:""}],render:d||(e=>t("div",{className:"hidden",children:JSON.stringify(e)})),handler:function(){}}),a({name:"go_to_cart",description:"go to cart",parameters:[{sku:"",handle:""}],render:m||(e=>t("div",{className:"hidden",children:JSON.stringify(e)})),handler:function(){}}),a({name:"add_to_cart",description:"add to cart",parameters:[{sku:"",handle:""}],render:g||(e=>t("div",{className:"hidden",children:JSON.stringify(e)})),handler:function(e){o&&o(e)}}),a({name:"show_product_card",description:"product card",parameters:[{sku:"",handle:""}],render:l||(e=>t("div",{className:"hidden",children:JSON.stringify(e)})),handler:function(e){console.log("show_product_card-props",e)}}),a({name:"signup",description:"signup",parameters:[{name:"signup"}],render:u||(e=>t("div",{className:"hidden",children:JSON.stringify(e)})),handler:function(){}}),N({description:"Today's date",value:new Date().toLocaleDateString()}),t("div",{children:y})};export{x as CopilotAction};
1
+ import{jsx as n}from"react/jsx-runtime";import"react";import{useEffect as _}from"react";import{useCopilotChat as N,useCopilotAction as a,useCopilotReadable as v}from"@copilotkit/react-core";import{Role as c,ActionExecutionMessage as E,TextMessage as S}from"@copilotkit/runtime-client-gql";const P=({start:J,history:s,addtocartHandler:o,commonRender:d,pointsExchangeCouponRender:p,gotocheckoutRender:m,gotocartRender:g,addtocartRender:l,productRender:u,signupRender:h,children:y})=>{const{setMessages:R,appendMessage:M,isLoading:O}=N();return _(()=>{const e=s?.filter(r=>r?.content||r?.arguments);if(e?.length>0){const r=e?.map(t=>{if(t?.name&&t?.arguments){const f=t?.arguments?.map(i=>i?{...i,ishistory:!0}:{});return new E({name:t?.name,arguments:f,scope:t?.scope})}return new S({...t,role:t?.role==="user"?c.User:c.Assistant})});R(r)}},[s]),a({name:"go_to_checkout",description:"go to cart",parameters:[{sku:"",handle:""}],render:m||(e=>n("div",{className:"hidden",children:JSON.stringify(e)})),handler:function(){}}),a({name:"common_action",description:"common action",parameters:[{act:""}],render:d||(e=>n("div",{className:"hidden",children:JSON.stringify(e)})),handler:function(){}}),a({name:"points_exchange_coupon",description:"points exchange coupon",parameters:[{act:""}],render:p||(e=>n("div",{className:"hidden",children:JSON.stringify(e)})),handler:function(){}}),a({name:"go_to_cart",description:"go to cart",parameters:[{sku:"",handle:""}],render:g||(e=>n("div",{className:"hidden",children:JSON.stringify(e)})),handler:function(){}}),a({name:"add_to_cart",description:"add to cart",parameters:[{sku:"",handle:""}],render:l||(e=>n("div",{className:"hidden",children:JSON.stringify(e)})),handler:function(e){o&&o(e)}}),a({name:"show_product_card",description:"product card",parameters:[{sku:"",handle:""}],render:u||(e=>n("div",{className:"hidden",children:JSON.stringify(e)})),handler:function(e){console.log("show_product_card-props",e)}}),a({name:"signup",description:"signup",parameters:[{name:"signup"}],render:h||(e=>n("div",{className:"hidden",children:JSON.stringify(e)})),handler:function(){}}),v({description:"Today's date",value:new Date().toLocaleDateString()}),n("div",{children:y})};export{P as CopilotAction};
2
2
  //# sourceMappingURL=action.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/chat/action.tsx"],
4
- "sourcesContent": ["import React from 'react'\nimport { useEffect } from 'react'\nimport { useCopilotChat, useCopilotAction, useCopilotReadable } from '@copilotkit/react-core'\nimport { Role, ActionExecutionMessage, TextMessage } from '@copilotkit/runtime-client-gql'\n\ninterface Message {\n content: string\n role: string\n name?: string\n scope?: any\n arguments?: any\n}\n\nexport interface ActionProps {\n start?: string\n history: Message[]\n addtocartHandler?: (_args: any) => Promise<any>\n commonRender?: string | ((_props: any) => React.ReactElement)\n gotocheckoutRender?: string | ((_props: any) => React.ReactElement)\n gotocartRender?: string | ((_props: any) => React.ReactElement)\n addtocartRender?: string | ((_props: any) => React.ReactElement)\n signupRender?: string | ((_props: any) => React.ReactElement)\n productRender?: string | ((_props: any) => React.ReactElement)\n productRenderTipMessage?: string\n children?: React.ReactNode\n}\n\nexport const CopilotAction = ({\n start,\n history,\n addtocartHandler,\n commonRender,\n gotocheckoutRender,\n gotocartRender,\n addtocartRender,\n productRender,\n signupRender,\n children,\n}: ActionProps) => {\n const { setMessages, appendMessage, isLoading } = useCopilotChat()\n\n useEffect(() => {\n const originhistory = history?.filter(value => value?.content || value?.arguments)\n if (originhistory?.length > 0) {\n const content = originhistory?.map(value => {\n if (value?.name && value?.arguments) {\n const args = value?.arguments?.map((item: any) => (item ? { ...item, ishistory: true } : {}))\n return new ActionExecutionMessage({\n name: value?.name,\n arguments: args,\n scope: value?.scope,\n })\n }\n return new TextMessage({\n ...value,\n role: value?.role === 'user' ? Role.User : Role.Assistant,\n })\n })\n setMessages(content)\n }\n }, [history])\n\n useCopilotAction({\n name: 'go_to_checkout',\n description: 'go to cart',\n parameters: [{ sku: '', handle: '' }] as any,\n render: gotocheckoutRender || (props => <div className=\"hidden\">{JSON.stringify(props)}</div>),\n handler: function () {\n // console.log('buynow-props', props)\n },\n })\n\n useCopilotAction({\n name: 'common_action',\n description: 'common action',\n parameters: [{ act: '' }] as any,\n render: commonRender || (props => <div className=\"hidden\">{JSON.stringify(props)}</div>),\n handler: function () {\n // console.log('common_action', props)\n },\n })\n\n useCopilotAction({\n name: 'go_to_cart',\n description: 'go to cart',\n parameters: [{ sku: '', handle: '' }] as any,\n render: gotocartRender || (props => <div className=\"hidden\">{JSON.stringify(props)}</div>),\n handler: function () {\n // console.log('buynow-props', props)\n },\n })\n\n useCopilotAction({\n name: 'add_to_cart',\n description: 'add to cart',\n parameters: [{ sku: '', handle: '' }] as any,\n render: addtocartRender || (props => <div className=\"hidden\">{JSON.stringify(props)}</div>),\n handler: function (props) {\n addtocartHandler && addtocartHandler(props)\n },\n })\n\n useCopilotAction({\n name: 'show_product_card',\n description: 'product card',\n parameters: [{ sku: '', handle: '' }] as any,\n render: productRender || (props => <div className=\"hidden\">{JSON.stringify(props)}</div>),\n handler: function (props) {\n console.log('show_product_card-props', props)\n // const ishistory = props?.find((item: { ishistory: any }) => item?.ishistory)\n // if (!ishistory) {\n // const content = new TextMessage({\n // content: 'show product card',\n // role: Role.Assistant,\n // })\n // appendMessage(content)\n // }\n },\n })\n\n useCopilotAction({\n name: 'signup',\n description: 'signup',\n parameters: [\n {\n name: 'signup',\n },\n ] as any,\n render: signupRender || (props => <div className=\"hidden\">{JSON.stringify(props)}</div>),\n handler: function () {\n // console.log('signup-props', props)\n },\n })\n\n useCopilotReadable({\n description: \"Today's date\",\n value: new Date().toLocaleDateString(),\n })\n\n return <div>{children}</div>\n}\n"],
5
- "mappings": "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",
6
- "names": ["jsx", "useEffect", "useCopilotChat", "useCopilotAction", "useCopilotReadable", "Role", "ActionExecutionMessage", "TextMessage", "CopilotAction", "start", "history", "addtocartHandler", "commonRender", "gotocheckoutRender", "gotocartRender", "addtocartRender", "productRender", "signupRender", "children", "setMessages", "appendMessage", "isLoading", "originhistory", "value", "content", "args", "item", "props"]
4
+ "sourcesContent": ["import React from 'react'\nimport { useEffect } from 'react'\nimport { useCopilotChat, useCopilotAction, useCopilotReadable } from '@copilotkit/react-core'\nimport { Role, ActionExecutionMessage, TextMessage } from '@copilotkit/runtime-client-gql'\n\ninterface Message {\n content: string\n role: string\n name?: string\n scope?: any\n arguments?: any\n}\n\nexport interface ActionProps {\n start?: string\n history: Message[]\n addtocartHandler?: (_args: any) => Promise<any>\n commonRender?: string | ((_props: any) => React.ReactElement)\n pointsExchangeCouponRender?: string | ((_props: any) => React.ReactElement)\n gotocheckoutRender?: string | ((_props: any) => React.ReactElement)\n gotocartRender?: string | ((_props: any) => React.ReactElement)\n addtocartRender?: string | ((_props: any) => React.ReactElement)\n signupRender?: string | ((_props: any) => React.ReactElement)\n productRender?: string | ((_props: any) => React.ReactElement)\n productRenderTipMessage?: string\n children?: React.ReactNode\n}\n\nexport const CopilotAction = ({\n start,\n history,\n addtocartHandler,\n commonRender,\n pointsExchangeCouponRender,\n gotocheckoutRender,\n gotocartRender,\n addtocartRender,\n productRender,\n signupRender,\n children,\n}: ActionProps) => {\n const { setMessages, appendMessage, isLoading } = useCopilotChat()\n\n useEffect(() => {\n const originhistory = history?.filter(value => value?.content || value?.arguments)\n if (originhistory?.length > 0) {\n const content = originhistory?.map(value => {\n if (value?.name && value?.arguments) {\n const args = value?.arguments?.map((item: any) => (item ? { ...item, ishistory: true } : {}))\n return new ActionExecutionMessage({\n name: value?.name,\n arguments: args,\n scope: value?.scope,\n })\n }\n return new TextMessage({\n ...value,\n role: value?.role === 'user' ? Role.User : Role.Assistant,\n })\n })\n setMessages(content)\n }\n }, [history])\n\n useCopilotAction({\n name: 'go_to_checkout',\n description: 'go to cart',\n parameters: [{ sku: '', handle: '' }] as any,\n render: gotocheckoutRender || (props => <div className=\"hidden\">{JSON.stringify(props)}</div>),\n handler: function () {\n // console.log('buynow-props', props)\n },\n })\n\n useCopilotAction({\n name: 'common_action',\n description: 'common action',\n parameters: [{ act: '' }] as any,\n render: commonRender || (props => <div className=\"hidden\">{JSON.stringify(props)}</div>),\n handler: function () {\n // console.log('common_action', props)\n },\n })\n\n useCopilotAction({\n name: 'points_exchange_coupon',\n description: 'points exchange coupon',\n parameters: [{ act: '' }] as any,\n render: pointsExchangeCouponRender || (props => <div className=\"hidden\">{JSON.stringify(props)}</div>),\n handler: function () {\n // console.log('points_exchange_coupon', props)\n },\n })\n\n useCopilotAction({\n name: 'go_to_cart',\n description: 'go to cart',\n parameters: [{ sku: '', handle: '' }] as any,\n render: gotocartRender || (props => <div className=\"hidden\">{JSON.stringify(props)}</div>),\n handler: function () {\n // console.log('buynow-props', props)\n },\n })\n\n useCopilotAction({\n name: 'add_to_cart',\n description: 'add to cart',\n parameters: [{ sku: '', handle: '' }] as any,\n render: addtocartRender || (props => <div className=\"hidden\">{JSON.stringify(props)}</div>),\n handler: function (props) {\n addtocartHandler && addtocartHandler(props)\n },\n })\n\n useCopilotAction({\n name: 'show_product_card',\n description: 'product card',\n parameters: [{ sku: '', handle: '' }] as any,\n render: productRender || (props => <div className=\"hidden\">{JSON.stringify(props)}</div>),\n handler: function (props) {\n console.log('show_product_card-props', props)\n // const ishistory = props?.find((item: { ishistory: any }) => item?.ishistory)\n // if (!ishistory) {\n // const content = new TextMessage({\n // content: 'show product card',\n // role: Role.Assistant,\n // })\n // appendMessage(content)\n // }\n },\n })\n\n useCopilotAction({\n name: 'signup',\n description: 'signup',\n parameters: [\n {\n name: 'signup',\n },\n ] as any,\n render: signupRender || (props => <div className=\"hidden\">{JSON.stringify(props)}</div>),\n handler: function () {\n // console.log('signup-props', props)\n },\n })\n\n useCopilotReadable({\n description: \"Today's date\",\n value: new Date().toLocaleDateString(),\n })\n\n return <div>{children}</div>\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "useEffect", "useCopilotChat", "useCopilotAction", "useCopilotReadable", "Role", "ActionExecutionMessage", "TextMessage", "CopilotAction", "start", "history", "addtocartHandler", "commonRender", "pointsExchangeCouponRender", "gotocheckoutRender", "gotocartRender", "addtocartRender", "productRender", "signupRender", "children", "setMessages", "appendMessage", "isLoading", "originhistory", "value", "content", "args", "item", "props"]
7
7
  }
@@ -23,9 +23,16 @@ export interface ChatProps {
23
23
  * unfollow: ResponseButton 在聊天框底部
24
24
  */
25
25
  showResponseButton?: string | boolean;
26
+ /** messages 的回调事件
27
+ * 每次生成/接受新的messages,会将 整个 messages list 传递给外部
28
+ */
29
+ messagesCallback?: (messages: any) => void;
26
30
  /** 通用 action 的触发事件
27
31
  */
28
32
  commonRender?: string | ((_props: any) => React.ReactElement);
33
+ /** 通用 积分 换 Coupon 的触发事件
34
+ */
35
+ pointsExchangeCouponRender?: string | ((_props: any) => React.ReactElement);
29
36
  /** 跳转 checkout action 卡片,接受参数: {"status":"complete","args":[{"sku":["A3936031"],"handle":"space-a40-a3936031"}],"result":""}
30
37
  * 后端接口文档:https://anker-in.feishu.cn/wiki/DOYJwE9oxipWmYk072ncnJNznBb
31
38
  */
@@ -1,2 +1,2 @@
1
- import{Fragment as et,jsx as e,jsxs as ot}from"react/jsx-runtime";import{useMemo as J}from"react";import{useCallback as f,useState as i,useEffect as _}from"react";import{CopilotKit as Q}from"@copilotkit/react-core";import{CopilotPopup as V}from"@copilotkit/react-ui";import W from"./button.js";import X from"./messages.js";import Y from"./response.js";import Z from"./suggestions.js";import{CopilotAction as j}from"./action.js";import B from"../../helpers/fetcher.js";const tt=E=>{const{title:k,runtimeUrl:a,popup:h,shopifyDomain:p,userId:s="",account:c="",prologue:w="",locale:u="",query:n="",showResponseButton:y,gotocheckoutRender:O,commonRender:b,gotocartRender:S,addtocartRender:v,productRender:M,signupRender:$,addtocartHandler:q,style:x,className:D="",lang:l}=E,[K,N]=l?.popupTipTimeout||[3e3,6e3],[T,g]=i(!1),[d,H]=i(!1),[r,I]=i(w),[U,m]=i([]),[C,G]=i([]),R=J(()=>({"x-user-id":s||"","x-shopify-domain":p,"x-member-ship":c,"x-user-locale":u}),[s,p,c,u]),A=f(async()=>{const t=await B({url:`${a}/copilotkit/start${n}`,method:"GET",headers:R});m(t?.suggested_questions?.map(o=>({message:o,title:o}))||[]),I(t?.opening_statement||""),G(t?.history||[])},[s,p,c,u,n]),F=f(async()=>{const t=await B({url:`${a}/copilotkit/suggested_questions${n}`,method:"GET",headers:R});m(t?.suggested_questions?.data?.map(o=>({message:o,title:o}))||[])},[s,p,c,u,n]),L=()=>{T||g(!0),setTimeout(()=>{g(!1)},N)};return _(()=>{const t=setTimeout(()=>{L()},K);return()=>{clearTimeout(t)}},[]),e("div",{className:D,style:x||{},children:s&&a&&e(Q,{runtimeUrl:`${a}/copilotkit/chat${n}`,showDevConsole:!1,headers:R,children:e(V,{...h,showResponseButton:y!=="follow",labels:{title:k||"DTC Live Chat",initial:r||""},instructions:r||"",onInProgress:t=>{d&&t&&m([]),d&&!t&&F()},Messages:({messages:t,inProgress:o})=>e(X,{messages:t,inProgress:o,ResponseButton:y==="follow"?e(Y,{}):void 0,children:e(Z,{currentSuggestions:U})}),Button:({open:t,setOpen:o})=>{const z=h?.Button||W;_(()=>{H(t)},[t]);const P=f(()=>{o(!t),g(!1),(!r||!C?.length)&&A()},[r]);return ot(et,{children:[l?.popupTip&&T&&!d&&e("div",{className:"copilotKitPopup copilotKitPopupTip",children:e("button",{onClick:P,"aria-label":"Open Chat",className:"copilotKitPopupTipContent",children:l?.popupTip})}),e(z,{open:t,setOpen:P})]})},children:e(j,{start:r,history:C,commonRender:b,gotocartRender:S,gotocheckoutRender:O,addtocartRender:v,signupRender:$,productRender:M,addtocartHandler:q,productRenderTipMessage:l?.productRenderTipMessage})})})})};var mt=tt;export{mt as default};
1
+ import{Fragment as st,jsx as e,jsxs as nt}from"react/jsx-runtime";import{useMemo as V}from"react";import{useCallback as f,useState as a,useEffect as P}from"react";import{CopilotKit as W}from"@copilotkit/react-core";import{CopilotPopup as X}from"@copilotkit/react-ui";import Y from"./button.js";import Z from"./messages.js";import j from"./response.js";import tt from"./suggestions.js";import{CopilotAction as et}from"./action.js";import _ from"../../helpers/fetcher.js";const ot=k=>{const{title:b,runtimeUrl:i,popup:h,shopifyDomain:p,userId:s="",account:c="",prologue:B="",locale:u="",query:n="",messagesCallback:w,showResponseButton:y,gotocheckoutRender:x,commonRender:O,pointsExchangeCouponRender:v,gotocartRender:S,addtocartRender:M,productRender:$,signupRender:q,addtocartHandler:D,style:K,className:N="",lang:l}=k,[H,I]=l?.popupTipTimeout||[3e3,6e3],[C,g]=a(!1),[d,U]=a(!1),[r,G]=a(B),[A,m]=a([]),[T,F]=a([]),R=V(()=>({"x-user-id":s||"","x-shopify-domain":p,"x-member-ship":c,"x-user-locale":u}),[s,p,c,u]),L=f(async()=>{const t=await _({url:`${i}/copilotkit/start${n}`,method:"GET",headers:R});m(t?.suggested_questions?.map(o=>({message:o,title:o}))||[]),G(t?.opening_statement||""),F(t?.history||[])},[s,p,c,u,n]),z=f(async()=>{const t=await _({url:`${i}/copilotkit/suggested_questions${n}`,method:"GET",headers:R});m(t?.suggested_questions?.data?.map(o=>({message:o,title:o}))||[])},[s,p,c,u,n]),J=()=>{C||g(!0),setTimeout(()=>{g(!1)},I)};return P(()=>{const t=setTimeout(()=>{J()},H);return()=>{clearTimeout(t)}},[]),e("div",{className:N,style:K||{},children:s&&i&&e(W,{runtimeUrl:`${i}/copilotkit/chat${n}`,showDevConsole:!1,headers:R,children:e(X,{...h,showResponseButton:y!=="follow",labels:{title:b||"DTC Live Chat",initial:r||""},instructions:r||"",onInProgress:t=>{d&&t&&m([]),d&&!t&&z()},Messages:({messages:t,inProgress:o})=>e(Z,{messages:t,inProgress:o,messagesCallback:w,ResponseButton:y==="follow"?e(j,{}):void 0,children:e(tt,{currentSuggestions:A})}),Button:({open:t,setOpen:o})=>{const Q=h?.Button||Y;P(()=>{U(t)},[t]);const E=f(()=>{o(!t),g(!1),(!r||!T?.length)&&L()},[r]);return nt(st,{children:[l?.popupTip&&C&&!d&&e("div",{className:"copilotKitPopup copilotKitPopupTip",children:e("button",{onClick:E,"aria-label":"Open Chat",className:"copilotKitPopupTipContent",children:l?.popupTip})}),e(Q,{open:t,setOpen:E})]})},children:e(et,{start:r,history:T,commonRender:O,pointsExchangeCouponRender:v,gotocartRender:S,gotocheckoutRender:x,addtocartRender:M,signupRender:q,productRender:$,addtocartHandler:D,productRenderTipMessage:l?.productRenderTipMessage})})})})};var ft=ot;export{ft as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/chat/index.tsx"],
4
- "sourcesContent": ["/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useMemo } from 'react'\nimport { useCallback, useState, useEffect } from 'react'\nimport { CopilotKit } from '@copilotkit/react-core'\nimport { CopilotPopup } from '@copilotkit/react-ui'\nimport DefaultButton from './button.js'\nimport Messages from './messages.js'\nimport ResponseButton from './response.js'\nimport Suggestions from './suggestions.js'\nimport { CopilotAction } from './action.js'\nimport fetcher from '../../helpers/fetcher.js'\n\nexport interface ChatProps {\n title: string\n runtimeUrl: string\n shopifyDomain: string\n /** GA \u7684 client id\n */\n userId: string\n /** \u662F\u5426\u767B\u9646\u7528\u6237 0 or 1\n */\n account?: string\n /** \u7528\u6237\u6D4F\u89C8\u5668\u8BED\u8A00\n */\n locale?: string\n /** \u5F00\u573A\u767D\n */\n prologue?: string\n /** ?a=1&b=2\n */\n query?: string\n /** 'follow' or 'unfollow' | true or false\n * follow: ResponseButton \u4F1A\u8DDF\u968F\u5728 messages \u7684\u540E\u8FB9\n * unfollow: ResponseButton \u5728\u804A\u5929\u6846\u5E95\u90E8\n */\n showResponseButton?: string | boolean\n /** \u901A\u7528 action \u7684\u89E6\u53D1\u4E8B\u4EF6\n */\n commonRender?: string | ((_props: any) => React.ReactElement)\n /** \u8DF3\u8F6C checkout action \u5361\u7247\uFF0C\u63A5\u53D7\u53C2\u6570\uFF1A {\"status\":\"complete\",\"args\":[{\"sku\":[\"A3936031\"],\"handle\":\"space-a40-a3936031\"}],\"result\":\"\"}\n * \u540E\u7AEF\u63A5\u53E3\u6587\u6863\uFF1Ahttps://anker-in.feishu.cn/wiki/DOYJwE9oxipWmYk072ncnJNznBb\n */\n gotocheckoutRender?: string | ((_props: any) => React.ReactElement)\n /** \u6253\u5F00\u8D2D\u7269\u8F66 action \u5361\u7247\uFF0C\u63A5\u53D7\u53C2\u6570\uFF1A {\"status\":\"complete\",\"args\":[{\"sku\":[\"A3936031\"],\"handle\":\"space-a40-a3936031\"}],\"result\":\"\"}\n * \u540E\u7AEF\u63A5\u53E3\u6587\u6863\uFF1Ahttps://anker-in.feishu.cn/wiki/DOYJwE9oxipWmYk072ncnJNznBb\n */\n gotocartRender?: string | ((_props: any) => React.ReactElement)\n /** \u6253\u5F00\u8D2D\u7269\u8F66 action \u7684\u89E6\u53D1\u4E8B\u4EF6\n */\n addtocartHandler?: (_args: any) => Promise<any>\n /** \u52A0\u8D2D\u5361\u7247\uFF0C\u63A5\u53D7\u53C2\u6570\uFF1A {\"status\":\"complete\",\"args\":[{\"sku\":[\"A3936031\"],\"handle\":\"space-a40-a3936031\"}],\"result\":\"\"}\n * \u540E\u7AEF\u63A5\u53E3\u6587\u6863\uFF1Ahttps://anker-in.feishu.cn/wiki/DOYJwE9oxipWmYk072ncnJNznBb\n */\n addtocartRender?: string | ((_props: any) => React.ReactElement)\n /** \u8BA2\u9605\u5361\u7247\uFF0C\u63A5\u53D7\u53C2\u6570\uFF1A {\"status\":\"complete\",\"args\":[{\"sku\":[\"A3936031\"],\"handle\":\"space-a40-a3936031\"}],\"result\":\"\"}\n * \u540E\u7AEF\u63A5\u53E3\u6587\u6863\uFF1Ahttps://anker-in.feishu.cn/wiki/DOYJwE9oxipWmYk072ncnJNznBb\n */\n signupRender?: string | ((_props: any) => React.ReactElement)\n /** \u4EA7\u54C1\u5361\u7247\uFF0C\u63A5\u53D7\u53C2\u6570\uFF1A {\"status\":\"complete\",\"args\":[{\"sku\":[\"A3936031\"],\"handle\":\"space-a40-a3936031\"}],\"result\":\"\"}\n * \u540E\u7AEF\u63A5\u53E3\u6587\u6863\uFF1Ahttps://anker-in.feishu.cn/wiki/DOYJwE9oxipWmYk072ncnJNznBb\n */\n productRender?: string | ((_props: any) => React.ReactElement)\n /** CopilotPopup \u81EA\u5B9A\u4E49\u53C2\u6570\uFF0C\u53C2\u8003\uFF1Ahttps://docs.copilotkit.ai/reference/components/CopilotPopup */\n popup?: any\n /** \u6587\u6848\uFF0C{\"productRenderTipMessage\": \"\",\"popupTip\": \"Hi ! Welcome to soundcore Innovations live chat\uFF01\", \"popupTipTimeout\": [3000, 6000]} */\n lang?: any\n /** \u53C2\u8003\u6B64\u6587\u6863\uFF1Ahttps://docs.copilotkit.ai/concepts/customize-look-and-feel */\n style?: any\n className?: string\n}\n\nconst Chat = (props: ChatProps) => {\n const {\n title,\n runtimeUrl,\n popup,\n shopifyDomain,\n userId = '',\n account = '',\n prologue = '',\n locale = '',\n query = '',\n showResponseButton,\n gotocheckoutRender,\n commonRender,\n gotocartRender,\n addtocartRender,\n productRender,\n signupRender,\n addtocartHandler,\n style,\n className = '',\n lang,\n } = props\n const [autoTipOpen, autoTipClose] = lang?.popupTipTimeout || [3000, 6000]\n\n const [openTip, setOpenTip] = useState(false)\n const [openPopup, setOpenPopup] = useState(false)\n const [start, setstart] = useState(prologue)\n const [currentSuggestions, setCurrentSuggestions] = useState([])\n const [history, sethistory] = useState<[{ content: string; role: string }] | []>([])\n\n const headers = useMemo(\n () => ({\n 'x-user-id': userId || '',\n 'x-shopify-domain': shopifyDomain,\n 'x-member-ship': account,\n 'x-user-locale': locale,\n }),\n [userId, shopifyDomain, account, locale]\n )\n\n const getStart = useCallback(async () => {\n const result = await fetcher({\n url: `${runtimeUrl}/copilotkit/start${query}`,\n method: 'GET',\n headers,\n })\n\n setCurrentSuggestions(result?.suggested_questions?.map((item: string) => ({ message: item, title: item })) || [])\n setstart(result?.opening_statement || '')\n sethistory(result?.history || [])\n }, [userId, shopifyDomain, account, locale, query])\n\n const getSuggestions = useCallback(async () => {\n const result = await fetcher({\n url: `${runtimeUrl}/copilotkit/suggested_questions${query}`,\n method: 'GET',\n headers,\n })\n\n setCurrentSuggestions(\n result?.suggested_questions?.data?.map((item: string) => ({ message: item, title: item })) || []\n )\n }, [userId, shopifyDomain, account, locale, query])\n\n const setOpenTipFn = () => {\n if (!openTip) setOpenTip(true)\n setTimeout(() => {\n setOpenTip(false)\n }, autoTipClose)\n }\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setOpenTipFn()\n }, autoTipOpen)\n\n return () => {\n clearTimeout(timer)\n }\n }, [])\n\n return (\n <div className={className} style={style || {}}>\n {userId && runtimeUrl && (\n <CopilotKit runtimeUrl={`${runtimeUrl}/copilotkit/chat${query}`} showDevConsole={false} headers={headers}>\n <CopilotPopup\n {...popup}\n showResponseButton={showResponseButton !== 'follow'}\n labels={{\n title: title || 'DTC Live Chat',\n initial: start || '',\n }}\n instructions={start || ''}\n onInProgress={load => {\n if (openPopup && load) setCurrentSuggestions([])\n if (openPopup && !load) getSuggestions()\n }}\n Messages={({ messages, inProgress }) => (\n <Messages\n messages={messages}\n inProgress={inProgress}\n ResponseButton={showResponseButton === 'follow' ? <ResponseButton /> : undefined}\n >\n <Suggestions currentSuggestions={currentSuggestions} />\n </Messages>\n )}\n Button={({ open, setOpen: setOpenDefault }) => {\n const Button = popup?.Button || DefaultButton\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n setOpenPopup(open)\n }, [open])\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const setOpen = useCallback(() => {\n setOpenDefault(!open)\n setOpenTip(false)\n if (!start || !history?.length) getStart()\n }, [start])\n\n return (\n <>\n {lang?.popupTip && openTip && !openPopup && (\n <div className=\"copilotKitPopup copilotKitPopupTip\">\n <button onClick={setOpen} aria-label=\"Open Chat\" className=\"copilotKitPopupTipContent\">\n {lang?.popupTip}\n </button>\n </div>\n )}\n <Button open={open} setOpen={setOpen} />\n </>\n )\n }}\n >\n <CopilotAction\n start={start}\n history={history}\n commonRender={commonRender}\n gotocartRender={gotocartRender}\n gotocheckoutRender={gotocheckoutRender}\n addtocartRender={addtocartRender}\n signupRender={signupRender}\n productRender={productRender}\n addtocartHandler={addtocartHandler}\n productRenderTipMessage={lang?.productRenderTipMessage}\n />\n </CopilotPopup>\n </CopilotKit>\n )}\n </div>\n )\n}\n\nexport default Chat\n"],
5
- "mappings": "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",
6
- "names": ["Fragment", "jsx", "jsxs", "useMemo", "useCallback", "useState", "useEffect", "CopilotKit", "CopilotPopup", "DefaultButton", "Messages", "ResponseButton", "Suggestions", "CopilotAction", "fetcher", "Chat", "props", "title", "runtimeUrl", "popup", "shopifyDomain", "userId", "account", "prologue", "locale", "query", "showResponseButton", "gotocheckoutRender", "commonRender", "gotocartRender", "addtocartRender", "productRender", "signupRender", "addtocartHandler", "style", "className", "lang", "autoTipOpen", "autoTipClose", "openTip", "setOpenTip", "openPopup", "setOpenPopup", "start", "setstart", "currentSuggestions", "setCurrentSuggestions", "history", "sethistory", "headers", "getStart", "result", "item", "getSuggestions", "setOpenTipFn", "timer", "load", "messages", "inProgress", "open", "setOpenDefault", "Button", "setOpen", "chat_default"]
4
+ "sourcesContent": ["/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useMemo } from 'react'\nimport { useCallback, useState, useEffect } from 'react'\nimport { CopilotKit } from '@copilotkit/react-core'\nimport { CopilotPopup } from '@copilotkit/react-ui'\nimport DefaultButton from './button.js'\nimport Messages from './messages.js'\nimport ResponseButton from './response.js'\nimport Suggestions from './suggestions.js'\nimport { CopilotAction } from './action.js'\nimport fetcher from '../../helpers/fetcher.js'\n\nexport interface ChatProps {\n title: string\n runtimeUrl: string\n shopifyDomain: string\n /** GA \u7684 client id\n */\n userId: string\n /** \u662F\u5426\u767B\u9646\u7528\u6237 0 or 1\n */\n account?: string\n /** \u7528\u6237\u6D4F\u89C8\u5668\u8BED\u8A00\n */\n locale?: string\n /** \u5F00\u573A\u767D\n */\n prologue?: string\n /** ?a=1&b=2\n */\n query?: string\n /** 'follow' or 'unfollow' | true or false\n * follow: ResponseButton \u4F1A\u8DDF\u968F\u5728 messages \u7684\u540E\u8FB9\n * unfollow: ResponseButton \u5728\u804A\u5929\u6846\u5E95\u90E8\n */\n showResponseButton?: string | boolean\n /** messages \u7684\u56DE\u8C03\u4E8B\u4EF6\n * \u6BCF\u6B21\u751F\u6210/\u63A5\u53D7\u65B0\u7684messages\uFF0C\u4F1A\u5C06 \u6574\u4E2A messages list \u4F20\u9012\u7ED9\u5916\u90E8\n */\n messagesCallback?: (messages: any) => void\n /** \u901A\u7528 action \u7684\u89E6\u53D1\u4E8B\u4EF6\n */\n commonRender?: string | ((_props: any) => React.ReactElement)\n /** \u901A\u7528 \u79EF\u5206 \u6362 Coupon \u7684\u89E6\u53D1\u4E8B\u4EF6\n */\n pointsExchangeCouponRender?: string | ((_props: any) => React.ReactElement)\n /** \u8DF3\u8F6C checkout action \u5361\u7247\uFF0C\u63A5\u53D7\u53C2\u6570\uFF1A {\"status\":\"complete\",\"args\":[{\"sku\":[\"A3936031\"],\"handle\":\"space-a40-a3936031\"}],\"result\":\"\"}\n * \u540E\u7AEF\u63A5\u53E3\u6587\u6863\uFF1Ahttps://anker-in.feishu.cn/wiki/DOYJwE9oxipWmYk072ncnJNznBb\n */\n gotocheckoutRender?: string | ((_props: any) => React.ReactElement)\n /** \u6253\u5F00\u8D2D\u7269\u8F66 action \u5361\u7247\uFF0C\u63A5\u53D7\u53C2\u6570\uFF1A {\"status\":\"complete\",\"args\":[{\"sku\":[\"A3936031\"],\"handle\":\"space-a40-a3936031\"}],\"result\":\"\"}\n * \u540E\u7AEF\u63A5\u53E3\u6587\u6863\uFF1Ahttps://anker-in.feishu.cn/wiki/DOYJwE9oxipWmYk072ncnJNznBb\n */\n gotocartRender?: string | ((_props: any) => React.ReactElement)\n /** \u6253\u5F00\u8D2D\u7269\u8F66 action \u7684\u89E6\u53D1\u4E8B\u4EF6\n */\n addtocartHandler?: (_args: any) => Promise<any>\n /** \u52A0\u8D2D\u5361\u7247\uFF0C\u63A5\u53D7\u53C2\u6570\uFF1A {\"status\":\"complete\",\"args\":[{\"sku\":[\"A3936031\"],\"handle\":\"space-a40-a3936031\"}],\"result\":\"\"}\n * \u540E\u7AEF\u63A5\u53E3\u6587\u6863\uFF1Ahttps://anker-in.feishu.cn/wiki/DOYJwE9oxipWmYk072ncnJNznBb\n */\n addtocartRender?: string | ((_props: any) => React.ReactElement)\n /** \u8BA2\u9605\u5361\u7247\uFF0C\u63A5\u53D7\u53C2\u6570\uFF1A {\"status\":\"complete\",\"args\":[{\"sku\":[\"A3936031\"],\"handle\":\"space-a40-a3936031\"}],\"result\":\"\"}\n * \u540E\u7AEF\u63A5\u53E3\u6587\u6863\uFF1Ahttps://anker-in.feishu.cn/wiki/DOYJwE9oxipWmYk072ncnJNznBb\n */\n signupRender?: string | ((_props: any) => React.ReactElement)\n /** \u4EA7\u54C1\u5361\u7247\uFF0C\u63A5\u53D7\u53C2\u6570\uFF1A {\"status\":\"complete\",\"args\":[{\"sku\":[\"A3936031\"],\"handle\":\"space-a40-a3936031\"}],\"result\":\"\"}\n * \u540E\u7AEF\u63A5\u53E3\u6587\u6863\uFF1Ahttps://anker-in.feishu.cn/wiki/DOYJwE9oxipWmYk072ncnJNznBb\n */\n productRender?: string | ((_props: any) => React.ReactElement)\n /** CopilotPopup \u81EA\u5B9A\u4E49\u53C2\u6570\uFF0C\u53C2\u8003\uFF1Ahttps://docs.copilotkit.ai/reference/components/CopilotPopup */\n popup?: any\n /** \u6587\u6848\uFF0C{\"productRenderTipMessage\": \"\",\"popupTip\": \"Hi ! Welcome to soundcore Innovations live chat\uFF01\", \"popupTipTimeout\": [3000, 6000]} */\n lang?: any\n /** \u53C2\u8003\u6B64\u6587\u6863\uFF1Ahttps://docs.copilotkit.ai/concepts/customize-look-and-feel */\n style?: any\n className?: string\n}\n\nconst Chat = (props: ChatProps) => {\n const {\n title,\n runtimeUrl,\n popup,\n shopifyDomain,\n userId = '',\n account = '',\n prologue = '',\n locale = '',\n query = '',\n messagesCallback,\n showResponseButton,\n gotocheckoutRender,\n commonRender,\n pointsExchangeCouponRender,\n gotocartRender,\n addtocartRender,\n productRender,\n signupRender,\n addtocartHandler,\n style,\n className = '',\n lang,\n } = props\n const [autoTipOpen, autoTipClose] = lang?.popupTipTimeout || [3000, 6000]\n\n const [openTip, setOpenTip] = useState(false)\n const [openPopup, setOpenPopup] = useState(false)\n const [start, setstart] = useState(prologue)\n const [currentSuggestions, setCurrentSuggestions] = useState([])\n const [history, sethistory] = useState<[{ content: string; role: string }] | []>([])\n\n const headers = useMemo(\n () => ({\n 'x-user-id': userId || '',\n 'x-shopify-domain': shopifyDomain,\n 'x-member-ship': account,\n 'x-user-locale': locale,\n }),\n [userId, shopifyDomain, account, locale]\n )\n\n const getStart = useCallback(async () => {\n const result = await fetcher({\n url: `${runtimeUrl}/copilotkit/start${query}`,\n method: 'GET',\n headers,\n })\n\n setCurrentSuggestions(result?.suggested_questions?.map((item: string) => ({ message: item, title: item })) || [])\n setstart(result?.opening_statement || '')\n sethistory(result?.history || [])\n }, [userId, shopifyDomain, account, locale, query])\n\n const getSuggestions = useCallback(async () => {\n const result = await fetcher({\n url: `${runtimeUrl}/copilotkit/suggested_questions${query}`,\n method: 'GET',\n headers,\n })\n\n setCurrentSuggestions(\n result?.suggested_questions?.data?.map((item: string) => ({ message: item, title: item })) || []\n )\n }, [userId, shopifyDomain, account, locale, query])\n\n const setOpenTipFn = () => {\n if (!openTip) setOpenTip(true)\n setTimeout(() => {\n setOpenTip(false)\n }, autoTipClose)\n }\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setOpenTipFn()\n }, autoTipOpen)\n\n return () => {\n clearTimeout(timer)\n }\n }, [])\n\n return (\n <div className={className} style={style || {}}>\n {userId && runtimeUrl && (\n <CopilotKit runtimeUrl={`${runtimeUrl}/copilotkit/chat${query}`} showDevConsole={false} headers={headers}>\n <CopilotPopup\n {...popup}\n showResponseButton={showResponseButton !== 'follow'}\n labels={{\n title: title || 'DTC Live Chat',\n initial: start || '',\n }}\n instructions={start || ''}\n onInProgress={load => {\n if (openPopup && load) setCurrentSuggestions([])\n if (openPopup && !load) getSuggestions()\n }}\n Messages={({ messages, inProgress }) => (\n <Messages\n messages={messages}\n inProgress={inProgress}\n messagesCallback={messagesCallback}\n ResponseButton={showResponseButton === 'follow' ? <ResponseButton /> : undefined}\n >\n <Suggestions currentSuggestions={currentSuggestions} />\n </Messages>\n )}\n Button={({ open, setOpen: setOpenDefault }) => {\n const Button = popup?.Button || DefaultButton\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n setOpenPopup(open)\n }, [open])\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const setOpen = useCallback(() => {\n setOpenDefault(!open)\n setOpenTip(false)\n if (!start || !history?.length) getStart()\n }, [start])\n\n return (\n <>\n {lang?.popupTip && openTip && !openPopup && (\n <div className=\"copilotKitPopup copilotKitPopupTip\">\n <button onClick={setOpen} aria-label=\"Open Chat\" className=\"copilotKitPopupTipContent\">\n {lang?.popupTip}\n </button>\n </div>\n )}\n <Button open={open} setOpen={setOpen} />\n </>\n )\n }}\n >\n <CopilotAction\n start={start}\n history={history}\n commonRender={commonRender}\n pointsExchangeCouponRender={pointsExchangeCouponRender}\n gotocartRender={gotocartRender}\n gotocheckoutRender={gotocheckoutRender}\n addtocartRender={addtocartRender}\n signupRender={signupRender}\n productRender={productRender}\n addtocartHandler={addtocartHandler}\n productRenderTipMessage={lang?.productRenderTipMessage}\n />\n </CopilotPopup>\n </CopilotKit>\n )}\n </div>\n )\n}\n\nexport default Chat\n"],
5
+ "mappings": "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",
6
+ "names": ["Fragment", "jsx", "jsxs", "useMemo", "useCallback", "useState", "useEffect", "CopilotKit", "CopilotPopup", "DefaultButton", "Messages", "ResponseButton", "Suggestions", "CopilotAction", "fetcher", "Chat", "props", "title", "runtimeUrl", "popup", "shopifyDomain", "userId", "account", "prologue", "locale", "query", "messagesCallback", "showResponseButton", "gotocheckoutRender", "commonRender", "pointsExchangeCouponRender", "gotocartRender", "addtocartRender", "productRender", "signupRender", "addtocartHandler", "style", "className", "lang", "autoTipOpen", "autoTipClose", "openTip", "setOpenTip", "openPopup", "setOpenPopup", "start", "setstart", "currentSuggestions", "setCurrentSuggestions", "history", "sethistory", "headers", "getStart", "result", "item", "getSuggestions", "setOpenTipFn", "timer", "load", "messages", "inProgress", "open", "setOpenDefault", "Button", "setOpen", "chat_default"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{jsx as n,jsxs as R}from"react/jsx-runtime";import K,{useEffect as m,useMemo as N,useState as k}from"react";import{useChatContext as I}from"@copilotkit/react-ui";import{Markdown as L}from"./markdown.js";import{useCopilotContext as T}from"@copilotkit/react-core";import{MessageStatusCode as b,ActionExecutionMessage as h,ResultMessage as A,TextMessage as y,Role as w}from"@copilotkit/runtime-client-gql";const H=({messages:t,inProgress:i,ResponseButton:f,children:x})=>{const[d,a]=k(!0),{chatComponentsCache:p}=T(),r=I();t=[...N(()=>S(r.labels.initial),[r.labels.initial]),...t];const M={};for(let e=0;e<t.length;e++)if(t[e]instanceof h){const s=t[e].id,o=t.find(l=>l instanceof A&&l.actionExecutionId===s);o&&(M[s]=A.decodeResult(o.result||""))}const v=K.useRef(null),E=K.useRef(null),g=()=>{v.current&&v.current.scrollIntoView({behavior:"auto"})};return m(()=>{g()},[t]),m(()=>{const e=document.querySelector(".copilotKitInput textarea");e&&e.addEventListener("click",function(){e.value&&document.activeElement===e?a(!1):(a(!0),g())}),e&&e.addEventListener("input",function(){e.value&&document.activeElement===e?a(!1):(a(!0),g())})},[]),m(()=>{const e=E.current;d&&e?(e.style.maxHeight="500px",e.style.overflow="visible"):!d&&e&&(e.style.maxHeight="0",e.style.overflow="hidden")},[d]),R("div",{className:"copilotKitMessages",children:[t.map((e,s)=>{const o=s===t.length-1;if(e instanceof y&&e.role==="user")return n("div",{className:"copilotKitMessage copilotKitUserMessage",children:e.content},s);if(e instanceof y&&e.role=="assistant")return n("div",{className:"copilotKitMessage copilotKitAssistantMessage",children:o&&i&&!e.content?r.icons.spinnerIcon:n(L,{content:e.content})},s);if(e instanceof h)if(p.current!==null&&p.current[e.name]){const l=p.current[e.name];if(typeof l=="string")return o&&i?R("div",{className:"copilotKitMessage copilotKitAssistantMessage",children:[r.icons.spinnerIcon," ",n("span",{className:"inProgressLabel",children:l})]},s):null;{const C=e.arguments;let c="inProgress";M[e.id]!==void 0?c="complete":e.status.code!==b.Pending&&(c="executing");const u=l({status:c,args:C,result:M[e.id]});return!u&&c==="complete"?null:typeof u=="string"?R("div",{className:"copilotKitMessage copilotKitAssistantMessage",children:[o&&i&&r.icons.spinnerIcon," ",u]},s):n("div",{className:"copilotKitCustomAssistantMessage",children:u},s)}}else return!i||!o?null:n("div",{className:"copilotKitMessage copilotKitAssistantMessage",children:r.icons.spinnerIcon},s)}),n("div",{className:"responseButtonBox",children:f}),n("footer",{ref:v,children:n("div",{className:"copilotKitMessagesFooter",ref:E,children:x})})]})};function S(t){let i=[];return t&&(Array.isArray(t)?i.push(...t):i.push(t)),i.map(f=>new y({role:w.Assistant,content:f}))}var j=H;export{j as default};
1
+ import{jsx as n,jsxs as R}from"react/jsx-runtime";import h,{useEffect as f,useMemo as I,useState as k}from"react";import{useChatContext as L}from"@copilotkit/react-ui";import{Markdown as T}from"./markdown.js";import{useCopilotContext as w}from"@copilotkit/react-core";import{MessageStatusCode as H,ActionExecutionMessage as A,ResultMessage as x,TextMessage as y,Role as S}from"@copilotkit/runtime-client-gql";const b=({messages:t,inProgress:i,ResponseButton:d,messagesCallback:E,children:N})=>{const[p,c]=k(!0),{chatComponentsCache:M}=w(),r=L();t=[...I(()=>B(r.labels.initial),[r.labels.initial]),...t];const v={};for(let e=0;e<t.length;e++)if(t[e]instanceof A){const s=t[e].id,o=t.find(l=>l instanceof x&&l.actionExecutionId===s);o&&(v[s]=x.decodeResult(o.result||""))}const g=h.useRef(null),K=h.useRef(null),m=()=>{g.current&&g.current.scrollIntoView({behavior:"auto"})};return f(()=>{m()},[t]),f(()=>{E&&E(t)},[t]),f(()=>{const e=document.querySelector(".copilotKitInput textarea");e&&e.addEventListener("click",function(){e.value&&document.activeElement===e?c(!1):(c(!0),m())}),e&&e.addEventListener("input",function(){e.value&&document.activeElement===e?c(!1):(c(!0),m())})},[]),f(()=>{const e=K.current;p&&e?(e.style.maxHeight="500px",e.style.overflow="visible"):!p&&e&&(e.style.maxHeight="0",e.style.overflow="hidden")},[p]),R("div",{className:"copilotKitMessages",children:[t.map((e,s)=>{const o=s===t.length-1;if(e instanceof y&&e.role==="user")return n("div",{className:"copilotKitMessage copilotKitUserMessage",children:e.content},s);if(e instanceof y&&e.role=="assistant")return n("div",{className:"copilotKitMessage copilotKitAssistantMessage",children:o&&i&&!e.content?r.icons.spinnerIcon:n(T,{content:e.content})},s);if(e instanceof A)if(M.current!==null&&M.current[e.name]){const l=M.current[e.name];if(typeof l=="string")return o&&i?R("div",{className:"copilotKitMessage copilotKitAssistantMessage",children:[r.icons.spinnerIcon," ",n("span",{className:"inProgressLabel",children:l})]},s):null;{const C=e.arguments;let a="inProgress";v[e.id]!==void 0?a="complete":e.status.code!==H.Pending&&(a="executing");const u=l({status:a,args:C,result:v[e.id]});return!u&&a==="complete"?null:typeof u=="string"?R("div",{className:"copilotKitMessage copilotKitAssistantMessage",children:[o&&i&&r.icons.spinnerIcon," ",u]},s):n("div",{className:"copilotKitCustomAssistantMessage",children:u},s)}}else return!i||!o?null:n("div",{className:"copilotKitMessage copilotKitAssistantMessage",children:r.icons.spinnerIcon},s)}),n("div",{className:"responseButtonBox",children:d}),n("footer",{ref:g,children:n("div",{className:"copilotKitMessagesFooter",ref:K,children:N})})]})};function B(t){let i=[];return t&&(Array.isArray(t)?i.push(...t):i.push(t)),i.map(d=>new y({role:S.Assistant,content:d}))}var z=b;export{z as default};
2
2
  //# sourceMappingURL=messages.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/chat/messages.tsx"],
4
- "sourcesContent": ["import React, { useEffect, useMemo, useState } from 'react'\nimport type { MessagesProps } from './props.js'\nimport { useChatContext } from '@copilotkit/react-ui'\nimport { Markdown } from './markdown.js'\nimport { type RenderFunctionStatus, useCopilotContext } from '@copilotkit/react-core'\nimport {\n MessageStatusCode,\n ActionExecutionMessage,\n Message,\n ResultMessage,\n TextMessage,\n Role,\n} from '@copilotkit/runtime-client-gql'\n\nconst Messages = ({ messages, inProgress, ResponseButton, children }: MessagesProps) => {\n const [isExpanded, setIsExpanded] = useState(true)\n\n const { chatComponentsCache } = useCopilotContext()\n\n const context = useChatContext()\n const initialMessages = useMemo(() => makeInitialMessages(context.labels.initial), [context.labels.initial])\n messages = [...initialMessages, ...messages]\n\n const functionResults: Record<string, string> = {}\n\n for (let i = 0; i < messages.length; i++) {\n if (messages[i] instanceof ActionExecutionMessage) {\n const id = messages[i].id\n const resultMessage: ResultMessage | undefined = messages.find(\n message => message instanceof ResultMessage && message.actionExecutionId === id\n ) as ResultMessage | undefined\n\n if (resultMessage) {\n functionResults[id] = ResultMessage.decodeResult(resultMessage.result || '')\n }\n }\n }\n\n const messagesEndRef = React.useRef<HTMLDivElement>(null)\n const messagesEndChildRef = React.useRef<HTMLDivElement>(null)\n\n const scrollToBottom = () => {\n if (messagesEndRef.current) {\n messagesEndRef.current.scrollIntoView({\n behavior: 'auto',\n })\n }\n }\n\n useEffect(() => {\n scrollToBottom()\n }, [messages])\n\n useEffect(() => {\n const textarea = document.querySelector('.copilotKitInput textarea') as HTMLTextAreaElement\n\n textarea &&\n textarea.addEventListener('click', function () {\n if (textarea.value && document.activeElement === textarea) {\n setIsExpanded(false)\n } else {\n setIsExpanded(true)\n scrollToBottom()\n }\n })\n textarea &&\n textarea.addEventListener('input', function () {\n if (textarea.value && document.activeElement === textarea) {\n setIsExpanded(false)\n } else {\n setIsExpanded(true)\n scrollToBottom()\n }\n })\n }, [])\n\n useEffect(() => {\n const content = messagesEndChildRef.current\n if (isExpanded && content) {\n content.style.maxHeight = '500px'\n content.style.overflow = 'visible'\n } else if (!isExpanded && content) {\n content.style.maxHeight = '0'\n content.style.overflow = 'hidden'\n }\n }, [isExpanded])\n\n return (\n <div className=\"copilotKitMessages\">\n {messages.map((message, index) => {\n const isCurrentMessage = index === messages.length - 1\n\n if (message instanceof TextMessage && message.role === 'user') {\n return (\n <div key={index} className=\"copilotKitMessage copilotKitUserMessage\">\n {message.content}\n </div>\n )\n } else if (message instanceof TextMessage && message.role == 'assistant') {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {isCurrentMessage && inProgress && !message.content ? (\n context.icons.spinnerIcon\n ) : (\n <Markdown content={message.content} />\n )}\n </div>\n )\n } else if (message instanceof ActionExecutionMessage) {\n if (chatComponentsCache.current !== null && chatComponentsCache.current[message.name]) {\n const render = chatComponentsCache.current[message.name]\n // render a static string\n if (typeof render === 'string') {\n // when render is static, we show it only when in progress\n if (isCurrentMessage && inProgress) {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {context.icons.spinnerIcon} <span className=\"inProgressLabel\">{render}</span>\n </div>\n )\n }\n // Done - silent by default to avoid a series of \"done\" messages\n else {\n return null\n }\n }\n // render is a function\n else {\n const args = message.arguments\n\n let status: RenderFunctionStatus = 'inProgress'\n\n if (functionResults[message.id] !== undefined) {\n status = 'complete'\n } else if (message.status.code !== MessageStatusCode.Pending) {\n status = 'executing'\n }\n\n const toRender = render({\n status: status as any,\n args,\n result: functionResults[message.id],\n })\n\n // No result and complete: stay silent\n if (!toRender && status === 'complete') {\n return null\n }\n\n if (typeof toRender === 'string') {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {isCurrentMessage && inProgress && context.icons.spinnerIcon} {toRender}\n </div>\n )\n } else {\n return (\n <div key={index} className=\"copilotKitCustomAssistantMessage\">\n {toRender}\n </div>\n )\n }\n }\n }\n // No render function found- show the default message\n else if (!inProgress || !isCurrentMessage) {\n // Done - silent by default to avoid a series of \"done\" messages\n return null\n } else {\n // In progress\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {context.icons.spinnerIcon}\n </div>\n )\n }\n }\n })}\n <div className=\"responseButtonBox\">{ResponseButton}</div>\n <footer ref={messagesEndRef}>\n <div className=\"copilotKitMessagesFooter\" ref={messagesEndChildRef}>\n {children}\n </div>\n </footer>\n </div>\n )\n}\n\nfunction makeInitialMessages(initial?: string | string[]): Message[] {\n let initialArray: string[] = []\n if (initial) {\n if (Array.isArray(initial)) {\n initialArray.push(...initial)\n } else {\n initialArray.push(initial)\n }\n }\n\n return initialArray.map(\n message =>\n new TextMessage({\n role: Role.Assistant,\n content: message,\n })\n )\n}\n\nexport default Messages\n"],
5
- "mappings": "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",
6
- "names": ["jsx", "jsxs", "React", "useEffect", "useMemo", "useState", "useChatContext", "Markdown", "useCopilotContext", "MessageStatusCode", "ActionExecutionMessage", "ResultMessage", "TextMessage", "Role", "Messages", "messages", "inProgress", "ResponseButton", "children", "isExpanded", "setIsExpanded", "chatComponentsCache", "context", "makeInitialMessages", "functionResults", "i", "id", "resultMessage", "message", "messagesEndRef", "messagesEndChildRef", "scrollToBottom", "textarea", "content", "index", "isCurrentMessage", "render", "args", "status", "toRender", "initial", "initialArray", "messages_default"]
4
+ "sourcesContent": ["import React, { useEffect, useMemo, useState } from 'react'\nimport type { MessagesProps } from './props.js'\nimport { useChatContext } from '@copilotkit/react-ui'\nimport { Markdown } from './markdown.js'\nimport { type RenderFunctionStatus, useCopilotContext } from '@copilotkit/react-core'\nimport {\n MessageStatusCode,\n ActionExecutionMessage,\n Message,\n ResultMessage,\n TextMessage,\n Role,\n} from '@copilotkit/runtime-client-gql'\n\nconst Messages = ({ messages, inProgress, ResponseButton, messagesCallback, children }: MessagesProps) => {\n const [isExpanded, setIsExpanded] = useState(true)\n\n const { chatComponentsCache } = useCopilotContext()\n\n const context = useChatContext()\n const initialMessages = useMemo(() => makeInitialMessages(context.labels.initial), [context.labels.initial])\n messages = [...initialMessages, ...messages]\n\n const functionResults: Record<string, string> = {}\n\n for (let i = 0; i < messages.length; i++) {\n if (messages[i] instanceof ActionExecutionMessage) {\n const id = messages[i].id\n const resultMessage: ResultMessage | undefined = messages.find(\n message => message instanceof ResultMessage && message.actionExecutionId === id\n ) as ResultMessage | undefined\n\n if (resultMessage) {\n functionResults[id] = ResultMessage.decodeResult(resultMessage.result || '')\n }\n }\n }\n\n const messagesEndRef = React.useRef<HTMLDivElement>(null)\n const messagesEndChildRef = React.useRef<HTMLDivElement>(null)\n\n const scrollToBottom = () => {\n if (messagesEndRef.current) {\n messagesEndRef.current.scrollIntoView({\n behavior: 'auto',\n })\n }\n }\n\n useEffect(() => {\n scrollToBottom()\n }, [messages])\n\n useEffect(() => {\n if (messagesCallback) messagesCallback(messages)\n }, [messages])\n\n useEffect(() => {\n const textarea = document.querySelector('.copilotKitInput textarea') as HTMLTextAreaElement\n\n textarea &&\n textarea.addEventListener('click', function () {\n if (textarea.value && document.activeElement === textarea) {\n setIsExpanded(false)\n } else {\n setIsExpanded(true)\n scrollToBottom()\n }\n })\n textarea &&\n textarea.addEventListener('input', function () {\n if (textarea.value && document.activeElement === textarea) {\n setIsExpanded(false)\n } else {\n setIsExpanded(true)\n scrollToBottom()\n }\n })\n }, [])\n\n useEffect(() => {\n const content = messagesEndChildRef.current\n if (isExpanded && content) {\n content.style.maxHeight = '500px'\n content.style.overflow = 'visible'\n } else if (!isExpanded && content) {\n content.style.maxHeight = '0'\n content.style.overflow = 'hidden'\n }\n }, [isExpanded])\n\n return (\n <div className=\"copilotKitMessages\">\n {messages.map((message, index) => {\n const isCurrentMessage = index === messages.length - 1\n\n if (message instanceof TextMessage && message.role === 'user') {\n return (\n <div key={index} className=\"copilotKitMessage copilotKitUserMessage\">\n {message.content}\n </div>\n )\n } else if (message instanceof TextMessage && message.role == 'assistant') {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {isCurrentMessage && inProgress && !message.content ? (\n context.icons.spinnerIcon\n ) : (\n <Markdown content={message.content} />\n )}\n </div>\n )\n } else if (message instanceof ActionExecutionMessage) {\n if (chatComponentsCache.current !== null && chatComponentsCache.current[message.name]) {\n const render = chatComponentsCache.current[message.name]\n // render a static string\n if (typeof render === 'string') {\n // when render is static, we show it only when in progress\n if (isCurrentMessage && inProgress) {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {context.icons.spinnerIcon} <span className=\"inProgressLabel\">{render}</span>\n </div>\n )\n }\n // Done - silent by default to avoid a series of \"done\" messages\n else {\n return null\n }\n }\n // render is a function\n else {\n const args = message.arguments\n\n let status: RenderFunctionStatus = 'inProgress'\n\n if (functionResults[message.id] !== undefined) {\n status = 'complete'\n } else if (message.status.code !== MessageStatusCode.Pending) {\n status = 'executing'\n }\n\n const toRender = render({\n status: status as any,\n args,\n result: functionResults[message.id],\n })\n\n // No result and complete: stay silent\n if (!toRender && status === 'complete') {\n return null\n }\n\n if (typeof toRender === 'string') {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {isCurrentMessage && inProgress && context.icons.spinnerIcon} {toRender}\n </div>\n )\n } else {\n return (\n <div key={index} className=\"copilotKitCustomAssistantMessage\">\n {toRender}\n </div>\n )\n }\n }\n }\n // No render function found- show the default message\n else if (!inProgress || !isCurrentMessage) {\n // Done - silent by default to avoid a series of \"done\" messages\n return null\n } else {\n // In progress\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {context.icons.spinnerIcon}\n </div>\n )\n }\n }\n })}\n <div className=\"responseButtonBox\">{ResponseButton}</div>\n <footer ref={messagesEndRef}>\n <div className=\"copilotKitMessagesFooter\" ref={messagesEndChildRef}>\n {children}\n </div>\n </footer>\n </div>\n )\n}\n\nfunction makeInitialMessages(initial?: string | string[]): Message[] {\n let initialArray: string[] = []\n if (initial) {\n if (Array.isArray(initial)) {\n initialArray.push(...initial)\n } else {\n initialArray.push(initial)\n }\n }\n\n return initialArray.map(\n message =>\n new TextMessage({\n role: Role.Assistant,\n content: message,\n })\n )\n}\n\nexport default Messages\n"],
5
+ "mappings": "AAkGY,cAAAA,EAsBM,QAAAC,MAtBN,oBAlGZ,OAAOC,GAAS,aAAAC,EAAW,WAAAC,EAAS,YAAAC,MAAgB,QAEpD,OAAS,kBAAAC,MAAsB,uBAC/B,OAAS,YAAAC,MAAgB,gBACzB,OAAoC,qBAAAC,MAAyB,yBAC7D,OACE,qBAAAC,EACA,0BAAAC,EAEA,iBAAAC,EACA,eAAAC,EACA,QAAAC,MACK,iCAEP,MAAMC,EAAW,CAAC,CAAE,SAAAC,EAAU,WAAAC,EAAY,eAAAC,EAAgB,iBAAAC,EAAkB,SAAAC,CAAS,IAAqB,CACxG,KAAM,CAACC,EAAYC,CAAa,EAAIhB,EAAS,EAAI,EAE3C,CAAE,oBAAAiB,CAAoB,EAAId,EAAkB,EAE5Ce,EAAUjB,EAAe,EAE/BS,EAAW,CAAC,GADYX,EAAQ,IAAMoB,EAAoBD,EAAQ,OAAO,OAAO,EAAG,CAACA,EAAQ,OAAO,OAAO,CAAC,EAC3E,GAAGR,CAAQ,EAE3C,MAAMU,EAA0C,CAAC,EAEjD,QAASC,EAAI,EAAGA,EAAIX,EAAS,OAAQW,IACnC,GAAIX,EAASW,CAAC,YAAahB,EAAwB,CACjD,MAAMiB,EAAKZ,EAASW,CAAC,EAAE,GACjBE,EAA2Cb,EAAS,KACxDc,GAAWA,aAAmBlB,GAAiBkB,EAAQ,oBAAsBF,CAC/E,EAEIC,IACFH,EAAgBE,CAAE,EAAIhB,EAAc,aAAaiB,EAAc,QAAU,EAAE,EAE/E,CAGF,MAAME,EAAiB5B,EAAM,OAAuB,IAAI,EAClD6B,EAAsB7B,EAAM,OAAuB,IAAI,EAEvD8B,EAAiB,IAAM,CACvBF,EAAe,SACjBA,EAAe,QAAQ,eAAe,CACpC,SAAU,MACZ,CAAC,CAEL,EAEA,OAAA3B,EAAU,IAAM,CACd6B,EAAe,CACjB,EAAG,CAACjB,CAAQ,CAAC,EAEbZ,EAAU,IAAM,CACVe,GAAkBA,EAAiBH,CAAQ,CACjD,EAAG,CAACA,CAAQ,CAAC,EAEbZ,EAAU,IAAM,CACd,MAAM8B,EAAW,SAAS,cAAc,2BAA2B,EAEnEA,GACEA,EAAS,iBAAiB,QAAS,UAAY,CACzCA,EAAS,OAAS,SAAS,gBAAkBA,EAC/CZ,EAAc,EAAK,GAEnBA,EAAc,EAAI,EAClBW,EAAe,EAEnB,CAAC,EACHC,GACEA,EAAS,iBAAiB,QAAS,UAAY,CACzCA,EAAS,OAAS,SAAS,gBAAkBA,EAC/CZ,EAAc,EAAK,GAEnBA,EAAc,EAAI,EAClBW,EAAe,EAEnB,CAAC,CACL,EAAG,CAAC,CAAC,EAEL7B,EAAU,IAAM,CACd,MAAM+B,EAAUH,EAAoB,QAChCX,GAAcc,GAChBA,EAAQ,MAAM,UAAY,QAC1BA,EAAQ,MAAM,SAAW,WAChB,CAACd,GAAcc,IACxBA,EAAQ,MAAM,UAAY,IAC1BA,EAAQ,MAAM,SAAW,SAE7B,EAAG,CAACd,CAAU,CAAC,EAGbnB,EAAC,OAAI,UAAU,qBACZ,UAAAc,EAAS,IAAI,CAACc,EAASM,IAAU,CAChC,MAAMC,EAAmBD,IAAUpB,EAAS,OAAS,EAErD,GAAIc,aAAmBjB,GAAeiB,EAAQ,OAAS,OACrD,OACE7B,EAAC,OAAgB,UAAU,0CACxB,SAAA6B,EAAQ,SADDM,CAEV,EAEG,GAAIN,aAAmBjB,GAAeiB,EAAQ,MAAQ,YAC3D,OACE7B,EAAC,OAAgB,UAAW,+CACzB,SAAAoC,GAAoBpB,GAAc,CAACa,EAAQ,QAC1CN,EAAQ,MAAM,YAEdvB,EAACO,EAAA,CAAS,QAASsB,EAAQ,QAAS,GAJ9BM,CAMV,EAEG,GAAIN,aAAmBnB,EAC5B,GAAIY,EAAoB,UAAY,MAAQA,EAAoB,QAAQO,EAAQ,IAAI,EAAG,CACrF,MAAMQ,EAASf,EAAoB,QAAQO,EAAQ,IAAI,EAEvD,GAAI,OAAOQ,GAAW,SAEpB,OAAID,GAAoBpB,EAEpBf,EAAC,OAAgB,UAAW,+CACzB,UAAAsB,EAAQ,MAAM,YAAY,IAACvB,EAAC,QAAK,UAAU,kBAAmB,SAAAqC,EAAO,IAD9DF,CAEV,EAKK,KAIN,CACH,MAAMG,EAAOT,EAAQ,UAErB,IAAIU,EAA+B,aAE/Bd,EAAgBI,EAAQ,EAAE,IAAM,OAClCU,EAAS,WACAV,EAAQ,OAAO,OAASpB,EAAkB,UACnD8B,EAAS,aAGX,MAAMC,EAAWH,EAAO,CACtB,OAAQE,EACR,KAAAD,EACA,OAAQb,EAAgBI,EAAQ,EAAE,CACpC,CAAC,EAGD,MAAI,CAACW,GAAYD,IAAW,WACnB,KAGL,OAAOC,GAAa,SAEpBvC,EAAC,OAAgB,UAAW,+CACzB,UAAAmC,GAAoBpB,GAAcO,EAAQ,MAAM,YAAY,IAAEiB,IADvDL,CAEV,EAIAnC,EAAC,OAAgB,UAAU,mCACxB,SAAAwC,GADOL,CAEV,CAGN,CACF,KAEK,OAAI,CAACnB,GAAc,CAACoB,EAEhB,KAILpC,EAAC,OAAgB,UAAW,+CACzB,SAAAuB,EAAQ,MAAM,aADPY,CAEV,CAIR,CAAC,EACDnC,EAAC,OAAI,UAAU,oBAAqB,SAAAiB,EAAe,EACnDjB,EAAC,UAAO,IAAK8B,EACX,SAAA9B,EAAC,OAAI,UAAU,2BAA2B,IAAK+B,EAC5C,SAAAZ,EACH,EACF,GACF,CAEJ,EAEA,SAASK,EAAoBiB,EAAwC,CACnE,IAAIC,EAAyB,CAAC,EAC9B,OAAID,IACE,MAAM,QAAQA,CAAO,EACvBC,EAAa,KAAK,GAAGD,CAAO,EAE5BC,EAAa,KAAKD,CAAO,GAItBC,EAAa,IAClBb,GACE,IAAIjB,EAAY,CACd,KAAMC,EAAK,UACX,QAASgB,CACX,CAAC,CACL,CACF,CAEA,IAAOc,EAAQ7B",
6
+ "names": ["jsx", "jsxs", "React", "useEffect", "useMemo", "useState", "useChatContext", "Markdown", "useCopilotContext", "MessageStatusCode", "ActionExecutionMessage", "ResultMessage", "TextMessage", "Role", "Messages", "messages", "inProgress", "ResponseButton", "messagesCallback", "children", "isExpanded", "setIsExpanded", "chatComponentsCache", "context", "makeInitialMessages", "functionResults", "i", "id", "resultMessage", "message", "messagesEndRef", "messagesEndChildRef", "scrollToBottom", "textarea", "content", "index", "isCurrentMessage", "render", "args", "status", "toRender", "initial", "initialArray", "messages_default"]
7
7
  }
@@ -30,6 +30,7 @@ export interface MessagesProps {
30
30
  inProgress: boolean;
31
31
  ResponseButton?: React.ReactElement;
32
32
  children?: React.ReactNode;
33
+ messagesCallback?: (messages: any) => void;
33
34
  }
34
35
  export interface InputProps {
35
36
  inProgress: boolean;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/chat/props.ts"],
4
- "sourcesContent": ["import React from 'react'\nimport { Message } from '@copilotkit/runtime-client-gql'\n\nexport interface ButtonProps {\n open: boolean\n setOpen: () => void\n}\n\nexport interface WindowProps {\n open: boolean\n setOpen: (open: boolean) => void\n clickOutsideToClose: boolean\n hitEscapeToClose: boolean\n shortcut: string\n children?: React.ReactNode\n}\n\nexport interface HeaderProps {\n open: boolean\n setOpen: (open: boolean) => void\n}\n\nexport interface ChatSuggestions {\n currentSuggestions: SuggestionsProps[]\n}\n\nexport interface SuggestionsProps {\n title: string\n message: string\n partial?: boolean\n className?: string\n}\n\nexport interface MessagesProps {\n messages: Message[]\n inProgress: boolean\n ResponseButton?: React.ReactElement\n children?: React.ReactNode\n}\n\nexport interface InputProps {\n inProgress: boolean\n onSend: (text: string) => Promise<Message>\n isVisible?: boolean\n}\n\nexport interface ResponseButtonProps {\n onClick: () => void\n inProgress: boolean\n}\n"],
4
+ "sourcesContent": ["import React from 'react'\nimport { Message } from '@copilotkit/runtime-client-gql'\n\nexport interface ButtonProps {\n open: boolean\n setOpen: () => void\n}\n\nexport interface WindowProps {\n open: boolean\n setOpen: (open: boolean) => void\n clickOutsideToClose: boolean\n hitEscapeToClose: boolean\n shortcut: string\n children?: React.ReactNode\n}\n\nexport interface HeaderProps {\n open: boolean\n setOpen: (open: boolean) => void\n}\n\nexport interface ChatSuggestions {\n currentSuggestions: SuggestionsProps[]\n}\n\nexport interface SuggestionsProps {\n title: string\n message: string\n partial?: boolean\n className?: string\n}\n\nexport interface MessagesProps {\n messages: Message[]\n inProgress: boolean\n ResponseButton?: React.ReactElement\n children?: React.ReactNode\n messagesCallback?: (messages: any) => void\n}\n\nexport interface InputProps {\n inProgress: boolean\n onSend: (text: string) => Promise<Message>\n isVisible?: boolean\n}\n\nexport interface ResponseButtonProps {\n onClick: () => void\n inProgress: boolean\n}\n"],
5
5
  "mappings": "AAAA,MAAkB,QAClB,MAAwB",
6
6
  "names": []
7
7
  }