@anker-in/campaign-ui 0.0.33-alpha2 → 0.0.33-alpha3

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 (85) hide show
  1. package/dist/cjs/components/chat/Markdown.d.ts +5 -0
  2. package/dist/cjs/components/chat/Messages.d.ts +3 -0
  3. package/dist/cjs/components/chat/Response.d.ts +2 -0
  4. package/dist/cjs/components/chat/action.d.ts +6 -2
  5. package/dist/cjs/components/chat/action.js +1 -1
  6. package/dist/cjs/components/chat/action.js.map +3 -3
  7. package/dist/cjs/components/chat/button.d.ts +3 -0
  8. package/dist/cjs/components/chat/button.js +2 -0
  9. package/dist/cjs/components/chat/button.js.map +7 -0
  10. package/dist/cjs/components/chat/index.d.ts +16 -2
  11. package/dist/cjs/components/chat/index.js +1 -5
  12. package/dist/cjs/components/chat/index.js.map +3 -3
  13. package/dist/cjs/components/chat/markdown.js +2 -0
  14. package/dist/cjs/components/chat/markdown.js.map +7 -0
  15. package/dist/cjs/components/chat/marksdown.d.ts +5 -0
  16. package/dist/cjs/components/chat/message.d.ts +2 -0
  17. package/dist/cjs/components/chat/messages.js +2 -0
  18. package/dist/cjs/components/chat/messages.js.map +7 -0
  19. package/dist/cjs/components/chat/props.d.ts +43 -0
  20. package/dist/cjs/components/chat/props.js +2 -0
  21. package/dist/cjs/components/chat/props.js.map +7 -0
  22. package/dist/cjs/components/chat/response copy.d.ts +2 -0
  23. package/dist/cjs/components/chat/response.js +2 -0
  24. package/dist/cjs/components/chat/response.js.map +7 -0
  25. package/dist/cjs/components/chat/rresponse.d.ts +2 -0
  26. package/dist/cjs/components/chat/suggestions.d.ts +3 -0
  27. package/dist/cjs/components/chat/suggestions.js +2 -0
  28. package/dist/cjs/components/chat/suggestions.js.map +7 -0
  29. package/dist/cjs/stories/chat.stories.d.ts +1 -0
  30. package/dist/cjs/stories/chat.stories.js +1 -1
  31. package/dist/cjs/stories/chat.stories.js.map +3 -3
  32. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  33. package/dist/esm/components/chat/Markdown.d.ts +5 -0
  34. package/dist/esm/components/chat/Messages.d.ts +3 -0
  35. package/dist/esm/components/chat/Response.d.ts +2 -0
  36. package/dist/esm/components/chat/action.d.ts +6 -2
  37. package/dist/esm/components/chat/action.js +1 -1
  38. package/dist/esm/components/chat/action.js.map +3 -3
  39. package/dist/esm/components/chat/button.d.ts +3 -0
  40. package/dist/esm/components/chat/button.js +2 -0
  41. package/dist/esm/components/chat/button.js.map +7 -0
  42. package/dist/esm/components/chat/index.d.ts +16 -2
  43. package/dist/esm/components/chat/index.js +1 -5
  44. package/dist/esm/components/chat/index.js.map +3 -3
  45. package/dist/esm/components/chat/markdown.js +2 -0
  46. package/dist/esm/components/chat/markdown.js.map +7 -0
  47. package/dist/esm/components/chat/marksdown.d.ts +5 -0
  48. package/dist/esm/components/chat/message.d.ts +2 -0
  49. package/dist/esm/components/chat/messages.js +2 -0
  50. package/dist/esm/components/chat/messages.js.map +7 -0
  51. package/dist/esm/components/chat/props.d.ts +43 -0
  52. package/dist/esm/components/chat/props.js +2 -0
  53. package/dist/esm/components/chat/props.js.map +7 -0
  54. package/dist/esm/components/chat/response copy.d.ts +2 -0
  55. package/dist/esm/components/chat/response.js +2 -0
  56. package/dist/esm/components/chat/response.js.map +7 -0
  57. package/dist/esm/components/chat/rresponse.d.ts +2 -0
  58. package/dist/esm/components/chat/suggestions.d.ts +3 -0
  59. package/dist/esm/components/chat/suggestions.js +2 -0
  60. package/dist/esm/components/chat/suggestions.js.map +7 -0
  61. package/dist/esm/stories/chat.stories.d.ts +1 -0
  62. package/dist/esm/stories/chat.stories.js +1 -1
  63. package/dist/esm/stories/chat.stories.js.map +2 -2
  64. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  65. package/package.json +1 -1
  66. package/src/components/chat/action.tsx +32 -11
  67. package/src/components/chat/button.tsx +23 -0
  68. package/src/components/chat/index.tsx +77 -67
  69. package/src/components/chat/markdown.tsx +36 -0
  70. package/src/components/chat/messages.tsx +167 -0
  71. package/src/components/chat/props.ts +51 -0
  72. package/src/components/chat/response.tsx +17 -0
  73. package/src/components/chat/suggestions.tsx +34 -0
  74. package/src/stories/chat.stories.tsx +4 -4
  75. package/src/styles/css/messages.css +4 -0
  76. package/src/styles/css/suggestions.css +1 -0
  77. package/dist/cjs/components/chat/chatContext.js +0 -2
  78. package/dist/cjs/components/chat/chatContext.js.map +0 -7
  79. package/dist/cjs/components/theme.js +0 -2
  80. package/dist/cjs/components/theme.js.map +0 -7
  81. package/dist/esm/components/chat/chatContext.js +0 -2
  82. package/dist/esm/components/chat/chatContext.js.map +0 -7
  83. package/dist/esm/components/theme.js +0 -2
  84. package/dist/esm/components/theme.js.map +0 -7
  85. package/src/components/chat/chatContext.tsx +0 -161
@@ -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 { useCopilotChatSuggestions } from '@copilotkit/react-ui'\nimport { Role, TextMessage } from '@copilotkit/runtime-client-gql'\n\ninterface Message {\n content: string\n role: string\n}\n\nexport interface ActionProps {\n start?: string\n history: Message[]\n buynowRender?: string | ((_props: any) => React.ReactElement)\n signupRender?: string | ((_props: any) => React.ReactElement)\n children?: React.ReactNode\n}\n\nexport const CopilotAction = ({ history, buynowRender, signupRender, children }: ActionProps) => {\n const { setMessages } = useCopilotChat()\n\n useEffect(() => {\n const originhistory = history?.filter(value => value?.content)\n if (originhistory?.length > 0) {\n const content = originhistory?.map(value => {\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 useCopilotChatSuggestions(\n {\n instructions: 'Suggest the most relevant next actions.',\n },\n []\n )\n\n useCopilotAction({\n name: 'buynow',\n description: 'buy now',\n parameters: [{ sku: '', handle: '' }] as any,\n render: buynowRender || (props => <div>{JSON.stringify(props)}</div>),\n handler: function () {\n // console.log('buynow-props', props)\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>{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": "AA8CsC,cAAAA,MAAA,oBA9CtC,MAAkB,QAClB,OAAS,aAAAC,MAAiB,QAC1B,OAAS,kBAAAC,EAAgB,oBAAAC,EAAkB,sBAAAC,MAA0B,yBACrE,OAAS,6BAAAC,MAAiC,uBAC1C,OAAS,QAAAC,EAAM,eAAAC,MAAmB,iCAe3B,MAAMC,EAAgB,CAAC,CAAE,QAAAC,EAAS,aAAAC,EAAc,aAAAC,EAAc,SAAAC,CAAS,IAAmB,CAC/F,KAAM,CAAE,YAAAC,CAAY,EAAIX,EAAe,EAEvC,OAAAD,EAAU,IAAM,CACd,MAAMa,EAAgBL,GAAS,OAAOM,GAASA,GAAO,OAAO,EAC7D,GAAID,GAAe,OAAS,EAAG,CAC7B,MAAME,EAAUF,GAAe,IAAIC,GAC1B,IAAIR,EAAY,CACrB,GAAGQ,EACH,KAAMA,GAAO,OAAS,OAAST,EAAK,KAAOA,EAAK,SAClD,CAAC,CACF,EACDO,EAAYG,CAAO,CACrB,CACF,EAAG,CAACP,CAAO,CAAC,EAEZJ,EACE,CACE,aAAc,yCAChB,EACA,CAAC,CACH,EAEAF,EAAiB,CACf,KAAM,SACN,YAAa,UACb,WAAY,CAAC,CAAE,IAAK,GAAI,OAAQ,EAAG,CAAC,EACpC,OAAQO,IAAiBO,GAASjB,EAAC,OAAK,cAAK,UAAUiB,CAAK,EAAE,GAC9D,QAAS,UAAY,CAErB,CACF,CAAC,EAEDd,EAAiB,CACf,KAAM,SACN,YAAa,SACb,WAAY,CACV,CACE,KAAM,QACR,CACF,EACA,OAAQQ,IAAiBM,GAASjB,EAAC,OAAK,cAAK,UAAUiB,CAAK,EAAE,GAC9D,QAAS,UAAY,CAErB,CACF,CAAC,EAEDb,EAAmB,CACjB,YAAa,eACb,MAAO,IAAI,KAAK,EAAE,mBAAmB,CACvC,CAAC,EAEMJ,EAAC,OAAK,SAAAY,EAAS,CACxB",
6
- "names": ["jsx", "useEffect", "useCopilotChat", "useCopilotAction", "useCopilotReadable", "useCopilotChatSuggestions", "Role", "TextMessage", "CopilotAction", "history", "buynowRender", "signupRender", "children", "setMessages", "originhistory", "value", "content", "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 addtocartRender?: string | ((_props: any) => React.ReactElement)\n productRender?: string | ((_props: any) => React.ReactElement)\n signupRender?: string | ((_props: any) => React.ReactElement)\n children?: React.ReactNode\n}\n\nexport const CopilotAction = ({\n start,\n history,\n addtocartRender,\n productRender,\n signupRender,\n children,\n}: ActionProps) => {\n const { setMessages } = 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 console.log('value?.name && value?.arguments', value?.name, value?.arguments)\n return new ActionExecutionMessage({\n name: value?.name,\n arguments: value?.arguments,\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: 'add_cart',\n description: 'add tocart',\n parameters: [{ sku: '', handle: '' }] as any,\n render: addtocartRender || (props => <div>{JSON.stringify(props)}</div>),\n handler: function () {\n // console.log('buynow-props', props)\n },\n })\n\n useCopilotAction({\n name: 'buynow',\n description: 'buy now',\n parameters: [{ sku: '', handle: '' }] as any,\n render: productRender || (props => <div>{JSON.stringify(props)}</div>),\n handler: function () {\n // console.log('buynow-props', props)\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>{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": "AAyDyC,cAAAA,MAAA,oBAzDzC,MAAkB,QAClB,OAAS,aAAAC,MAAiB,QAC1B,OAAS,kBAAAC,EAAgB,oBAAAC,EAAkB,sBAAAC,MAA0B,yBACrE,OAAS,QAAAC,EAAM,0BAAAC,EAAwB,eAAAC,MAAmB,iCAmBnD,MAAMC,EAAgB,CAAC,CAC5B,MAAAC,EACA,QAAAC,EACA,gBAAAC,EACA,cAAAC,EACA,aAAAC,EACA,SAAAC,CACF,IAAmB,CACjB,KAAM,CAAE,YAAAC,CAAY,EAAIb,EAAe,EAEvC,OAAAD,EAAU,IAAM,CACd,MAAMe,EAAgBN,GAAS,OAAOO,GAASA,GAAO,SAAWA,GAAO,SAAS,EACjF,GAAID,GAAe,OAAS,EAAG,CAC7B,MAAME,EAAUF,GAAe,IAAIC,GAC7BA,GAAO,MAAQA,GAAO,WACxB,QAAQ,IAAI,kCAAmCA,GAAO,KAAMA,GAAO,SAAS,EACrE,IAAIX,EAAuB,CAChC,KAAMW,GAAO,KACb,UAAWA,GAAO,UAClB,MAAOA,GAAO,KAChB,CAAC,GAEI,IAAIV,EAAY,CACrB,GAAGU,EACH,KAAMA,GAAO,OAAS,OAASZ,EAAK,KAAOA,EAAK,SAClD,CAAC,CACF,EACDU,EAAYG,CAAO,CACrB,CACF,EAAG,CAACR,CAAO,CAAC,EAEZP,EAAiB,CACf,KAAM,WACN,YAAa,aACb,WAAY,CAAC,CAAE,IAAK,GAAI,OAAQ,EAAG,CAAC,EACpC,OAAQQ,IAAoBQ,GAASnB,EAAC,OAAK,cAAK,UAAUmB,CAAK,EAAE,GACjE,QAAS,UAAY,CAErB,CACF,CAAC,EAEDhB,EAAiB,CACf,KAAM,SACN,YAAa,UACb,WAAY,CAAC,CAAE,IAAK,GAAI,OAAQ,EAAG,CAAC,EACpC,OAAQS,IAAkBO,GAASnB,EAAC,OAAK,cAAK,UAAUmB,CAAK,EAAE,GAC/D,QAAS,UAAY,CAErB,CACF,CAAC,EAEDhB,EAAiB,CACf,KAAM,SACN,YAAa,SACb,WAAY,CACV,CACE,KAAM,QACR,CACF,EACA,OAAQU,IAAiBM,GAASnB,EAAC,OAAK,cAAK,UAAUmB,CAAK,EAAE,GAC9D,QAAS,UAAY,CAErB,CACF,CAAC,EAEDf,EAAmB,CACjB,YAAa,eACb,MAAO,IAAI,KAAK,EAAE,mBAAmB,CACvC,CAAC,EAEMJ,EAAC,OAAK,SAAAc,EAAS,CACxB",
6
+ "names": ["jsx", "useEffect", "useCopilotChat", "useCopilotAction", "useCopilotReadable", "Role", "ActionExecutionMessage", "TextMessage", "CopilotAction", "start", "history", "addtocartRender", "productRender", "signupRender", "children", "setMessages", "originhistory", "value", "content", "props"]
7
7
  }
@@ -0,0 +1,3 @@
1
+ import type { ButtonProps } from './props.js';
2
+ declare const DefaultButton: ({ setOpen, setOpenTip }: ButtonProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default DefaultButton;
@@ -0,0 +1,2 @@
1
+ import{jsx as t,jsxs as s}from"react/jsx-runtime";import{useChatContext as i}from"@copilotkit/react-ui";const e=({setOpen:n,setOpenTip:c})=>{const o=i();return s("button",{onClick:()=>{n(!0),c(!1)},className:"copilotKitButton ","aria-label":"Open Chat",children:[t("div",{className:"copilotKitButtonIcon copilotKitButtonIconOpen",children:o.icons.openIcon}),t("div",{className:"copilotKitButtonIcon copilotKitButtonIconClose",children:o.icons.closeIcon})]})};var p=e;export{p as default};
2
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/chat/button.tsx"],
4
+ "sourcesContent": ["import { useChatContext } from '@copilotkit/react-ui'\n\nimport type { ButtonProps } from './props.js'\n\nconst DefaultButton = ({ setOpen, setOpenTip }: ButtonProps) => {\n const context = useChatContext()\n\n return (\n <button\n onClick={() => {\n setOpen(true)\n setOpenTip(false)\n }}\n className=\"copilotKitButton \"\n aria-label=\"Open Chat\"\n >\n <div className=\"copilotKitButtonIcon copilotKitButtonIconOpen\">{context.icons.openIcon}</div>\n <div className=\"copilotKitButtonIcon copilotKitButtonIconClose\">{context.icons.closeIcon}</div>\n </button>\n )\n}\n\nexport default DefaultButton\n"],
5
+ "mappings": "AAQI,OAQE,OAAAA,EARF,QAAAC,MAAA,oBARJ,OAAS,kBAAAC,MAAsB,uBAI/B,MAAMC,EAAgB,CAAC,CAAE,QAAAC,EAAS,WAAAC,CAAW,IAAmB,CAC9D,MAAMC,EAAUJ,EAAe,EAE/B,OACED,EAAC,UACC,QAAS,IAAM,CACbG,EAAQ,EAAI,EACZC,EAAW,EAAK,CAClB,EACA,UAAU,oBACV,aAAW,YAEX,UAAAL,EAAC,OAAI,UAAU,gDAAiD,SAAAM,EAAQ,MAAM,SAAS,EACvFN,EAAC,OAAI,UAAU,iDAAkD,SAAAM,EAAQ,MAAM,UAAU,GAC3F,CAEJ,EAEA,IAAOC,EAAQJ",
6
+ "names": ["jsx", "jsxs", "useChatContext", "DefaultButton", "setOpen", "setOpenTip", "context", "button_default"]
7
+ }
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  export interface ChatProps {
2
3
  title: string;
3
4
  runtimeUrl: string;
@@ -5,20 +6,33 @@ export interface ChatProps {
5
6
  /** GA 的 client id
6
7
  */
7
8
  user_id: string;
9
+ /** 是否登陆用户 0 or 1
10
+ */
11
+ account?: string;
12
+ /** 用户浏览器语言
13
+ */
14
+ locale?: string;
8
15
  /** ?a=1&b=2
9
16
  */
10
17
  query?: string;
18
+ /** 'follow' or 'unfollow' | true or false
19
+ */
20
+ showResponseButton?: string | boolean;
21
+ /** 加购卡片,接受参数: {"status":"complete","args":[{"sku":"A3936031","handle":"space-a40-a3936031"}],"result":""}
22
+ * 后端接口文档:https://anker-in.feishu.cn/wiki/DOYJwE9oxipWmYk072ncnJNznBb
23
+ */
24
+ addtocartRender?: string | ((_props: any) => React.ReactElement);
11
25
  /** 产品卡片,接受参数: {"status":"complete","args":[{"sku":"A3936031","handle":"space-a40-a3936031"}],"result":""}
12
26
  * 后端接口文档:https://anker-in.feishu.cn/wiki/DOYJwE9oxipWmYk072ncnJNznBb
13
27
  */
14
- buynowRender?: string | ((_props: any) => React.ReactElement);
28
+ productRender?: string | ((_props: any) => React.ReactElement);
15
29
  /** 订阅卡片,接受参数:
16
30
  * 后端接口文档:https://anker-in.feishu.cn/wiki/DOYJwE9oxipWmYk072ncnJNznBb
17
31
  */
18
32
  signupRender?: string | ((_props: any) => React.ReactElement);
19
33
  /** CopilotPopup 自定义参数,参考:https://docs.copilotkit.ai/reference/components/CopilotPopup */
20
34
  popup?: any;
21
- /** 文案,{"popupTip": "Hi ! Welcome to soundcore Innovations live chat!"} */
35
+ /** 文案,{"popupTip": "Hi ! Welcome to soundcore Innovations live chat!", "popupTipTimeout": [3000, 6000]} */
22
36
  lang?: any;
23
37
  /** 参考此文档:https://docs.copilotkit.ai/concepts/customize-look-and-feel */
24
38
  style?: any;
@@ -1,6 +1,2 @@
1
- import{Fragment as I,jsx as t,jsxs as c}from"react/jsx-runtime";import{useCallback as P,useState as n,useEffect as l}from"react";import{CopilotKit as N}from"@copilotkit/react-core";import{CopilotPopup as M}from"@copilotkit/react-ui";import{CopilotAction as O}from"./action.js";import x from"../../helpers/fetcher.js";const E=g=>{const{title:y,runtimeUrl:r,popup:u,shopify_domain:d,user_id:e="",query:L="",buynowRender:f,signupRender:C,style:v,className:w="",lang:m}=g,[h,i]=n(!1),[K,R]=n(!1),[s,T]=n(""),[b,k]=n([]),_=P(async()=>{const o=await x({url:`${r}/copilotkit/start`,method:"GET",headers:{user_id:e||"",shopify_domain:d}});T(o?.opening_statement||""),k(o?.history||[])},[e]),B=()=>{h||i(!0)};return l(()=>{const o=setTimeout(()=>{B()},3e3);return()=>{clearTimeout(o)}},[]),l(()=>{s||_()},[]),c("div",{className:w,style:v||{},children:[t("style",{children:`
2
- .copilotKitMessage.copilotKitAssistantMessage:has(.copilotKitMarkdown:empty) {
3
- display: none;
4
- }
5
- `}),e&&r&&t(N,{runtimeUrl:`${r}/copilotkit/chat`,showDevConsole:!1,headers:{user_id:e||"",shopify_domain:d},children:t(M,{...u,labels:{title:y||"DTC Live Chat",initial:s||""},makeSystemMessage:()=>s||"",Button:({open:o,setOpen:p})=>{const a=u?.Button;return l(()=>R(o),[o]),c(I,{children:[m?.popupTip&&h&&!K&&t("div",{className:"copilotKitPopup copilotKitPopupTip",children:t("button",{onClick:()=>{p(!0),i(!1)},"aria-label":"Open Chat",className:"copilotKitPopupTipContent",children:m?.popupTip})}),a&&t(a,{open:o,setOpen:p,setOpenTip:i}),!a&&c("button",{onClick:()=>{p(!0),i(!1)},className:"copilotKitButton ","aria-label":"Open Chat",children:[t("div",{className:"copilotKitButtonIcon copilotKitButtonIconOpen",children:t("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",width:"24",height:"24",children:t("g",{transform:"translate(24, 0) scale(-1, 1)",children:t("path",{fillRule:"evenodd",d:"M5.337 21.718a6.707 6.707 0 01-.533-.074.75.75 0 01-.44-1.223 3.73 3.73 0 00.814-1.686c.023-.115-.022-.317-.254-.543C3.274 16.587 2.25 14.41 2.25 12c0-5.03 4.428-9 9.75-9s9.75 3.97 9.75 9c0 5.03-4.428 9-9.75 9-.833 0-1.643-.097-2.417-.279a6.721 6.721 0 01-4.246.997z",clipRule:"evenodd"})})})}),t("div",{className:"copilotKitButtonIcon copilotKitButtonIconClose",children:t("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",width:"24",height:"24",children:t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.5 8.25l-7.5 7.5-7.5-7.5"})})})]})]})},children:t(O,{start:s,history:b,buynowRender:f,signupRender:C})})})]})};var $=E;export{$ as default};
1
+ import{Fragment as Q,jsx as s,jsxs as V}from"react/jsx-runtime";import"react";import{useCallback as T,useState as p,useEffect as f}from"react";import{CopilotKit as x}from"@copilotkit/react-core";import{CopilotPopup as A}from"@copilotkit/react-ui";import F from"./button.js";import I from"./messages.js";import L from"./response.js";import z from"./suggestions.js";import{CopilotAction as H}from"./action.js";import C from"../../helpers/fetcher.js";const J=_=>{const{title:P,runtimeUrl:a,popup:h,shopify_domain:n,user_id:o="",account:i="",locale:r="",query:c="",showResponseButton:R,addtocartRender:B,productRender:w,signupRender:S,style:b,className:v="",lang:g}=_,[E,O]=g?.popupTipTimeout||[3e3,6e3],[y,u]=p(!1),[m,$]=p(!1),[l,k]=p(""),[q,d]=p([]),[K,N]=p([]),D=T(async()=>{const t=await C({url:`${a}/copilotkit/start${c}`,method:"GET",headers:{user_id:o||"",shopify_domain:n,account:i,locale:r}});d(t?.suggested_questions?.map(e=>({message:e,title:e}))||[]),k(t?.opening_statement||""),N(t?.history||[])},[o,n,i,r]),M=T(async()=>{const t=await C({url:`${a}/copilotkit/suggested_questions${c}`,method:"GET",headers:{user_id:o||"",shopify_domain:n,account:i,locale:r}});d(t?.suggested_questions?.data?.map(e=>({message:e,title:e}))||[])},[o,n,i,r]),U=()=>{y||u(!0),setTimeout(()=>{u(!1)},O)};return f(()=>{const t=setTimeout(()=>{U()},E);return()=>{clearTimeout(t)}},[]),f(()=>{l||D()},[]),s("div",{className:v,style:b||{},children:o&&a&&s(x,{runtimeUrl:`${a}/copilotkit/chat${c}`,showDevConsole:!1,headers:{user_id:o||"",shopify_domain:n,account:i,locale:r},children:s(A,{...h,showResponseButton:R!=="follow",labels:{title:P||"DTC Live Chat",initial:l||""},instructions:l||"",onInProgress:t=>{m&&t&&d([]),m&&!t&&M()},Messages:({messages:t,inProgress:e})=>s(I,{messages:t,inProgress:e,ResponseButton:R==="follow"?s(L,{}):void 0,children:s(z,{currentSuggestions:q})}),Button:({open:t,setOpen:e})=>{const G=h?.Button||F;return f(()=>{$(t)},[t]),V(Q,{children:[g?.popupTip&&y&&!m&&s("div",{className:"copilotKitPopup copilotKitPopupTip",children:s("button",{onClick:()=>{e(!0),u(!1)},"aria-label":"Open Chat",className:"copilotKitPopupTipContent",children:g?.popupTip})}),s(G,{open:t,setOpen:e,setOpenTip:u})]})},children:s(H,{start:l,history:K,addtocartRender:B,productRender:w,signupRender:S})})})})};var rt=J;export{rt as default};
6
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": ["import { useCallback, useState, useEffect } from 'react'\nimport { CopilotKit } from '@copilotkit/react-core'\nimport { CopilotPopup } from '@copilotkit/react-ui'\n\nimport { CopilotAction } from './action.js'\nimport fetcher from '../../helpers/fetcher.js'\n\n// import '../../styles/chat.css'\n\nexport interface ChatProps {\n title: string\n runtimeUrl: string\n shopify_domain: string\n /** GA \u7684 client id\n */\n user_id: string\n /** ?a=1&b=2\n */\n query?: string\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 buynowRender?: string | ((_props: any) => React.ReactElement)\n /** \u8BA2\u9605\u5361\u7247\uFF0C\u63A5\u53D7\u53C2\u6570\uFF1A\n * \u540E\u7AEF\u63A5\u53E3\u6587\u6863\uFF1Ahttps://anker-in.feishu.cn/wiki/DOYJwE9oxipWmYk072ncnJNznBb\n */\n signupRender?: 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{\"popupTip\": \"Hi ! Welcome to soundcore Innovations live chat\uFF01\"} */\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 shopify_domain,\n user_id = '',\n query = '',\n buynowRender,\n signupRender,\n style,\n className = '',\n lang,\n } = props\n\n const [openTip, setOpenTip] = useState(false)\n const [openPopup, setOpenPopup] = useState(false)\n const [start, setstart] = useState('')\n const [history, sethistory] = useState<[{ content: string; role: string }] | []>([])\n\n const getStart = useCallback(async () => {\n const result = await fetcher({\n url: `${runtimeUrl}/copilotkit/start`,\n method: 'GET',\n headers: { user_id: user_id || '', shopify_domain: shopify_domain },\n })\n\n setstart(result?.opening_statement || '')\n sethistory(result?.history || [])\n }, [user_id])\n\n const setOpenTipFn = () => {\n if (!openTip) setOpenTip(true)\n }\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setOpenTipFn()\n }, 3000)\n\n return () => {\n clearTimeout(timer)\n }\n }, [])\n\n useEffect(() => {\n if (!start) {\n getStart()\n }\n }, [])\n\n return (\n <div className={className} style={style || {}}>\n <style>\n {`\n .copilotKitMessage.copilotKitAssistantMessage:has(.copilotKitMarkdown:empty) {\n display: none;\n }\n `}\n </style>\n {user_id && runtimeUrl && (\n <CopilotKit\n runtimeUrl={`${runtimeUrl}/copilotkit/chat`}\n showDevConsole={false}\n headers={{ user_id: user_id || '', shopify_domain: shopify_domain }}\n >\n <CopilotPopup\n {...popup}\n labels={{\n title: title || 'DTC Live Chat',\n initial: start || '',\n }}\n makeSystemMessage={() => {\n return start || ''\n }}\n Button={({ open, setOpen }) => {\n const Button = popup?.Button\n useEffect(() => setOpenPopup(open), [open])\n\n return (\n <>\n {lang?.popupTip && openTip && !openPopup && (\n <div className=\"copilotKitPopup copilotKitPopupTip\">\n <button\n onClick={() => {\n setOpen(true)\n setOpenTip(false)\n }}\n aria-label=\"Open Chat\"\n className=\"copilotKitPopupTipContent\"\n >\n {lang?.popupTip}\n </button>\n </div>\n )}\n {Button && <Button open={open} setOpen={setOpen} setOpenTip={setOpenTip} />}\n {!Button && (\n <button\n onClick={() => {\n setOpen(true)\n setOpenTip(false)\n }}\n className=\"copilotKitButton \"\n aria-label=\"Open Chat\"\n >\n <div className=\"copilotKitButtonIcon copilotKitButtonIconOpen\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width=\"24\"\n height=\"24\"\n >\n <g transform=\"translate(24, 0) scale(-1, 1)\">\n <path\n fillRule=\"evenodd\"\n d=\"M5.337 21.718a6.707 6.707 0 01-.533-.074.75.75 0 01-.44-1.223 3.73 3.73 0 00.814-1.686c.023-.115-.022-.317-.254-.543C3.274 16.587 2.25 14.41 2.25 12c0-5.03 4.428-9 9.75-9s9.75 3.97 9.75 9c0 5.03-4.428 9-9.75 9-.833 0-1.643-.097-2.417-.279a6.721 6.721 0 01-4.246.997z\"\n clipRule=\"evenodd\"\n ></path>\n </g>\n </svg>\n </div>\n <div className=\"copilotKitButtonIcon copilotKitButtonIconClose\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"1.5\"\n stroke=\"currentColor\"\n width=\"24\"\n height=\"24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M19.5 8.25l-7.5 7.5-7.5-7.5\"></path>\n </svg>\n </div>\n </button>\n )}\n </>\n )\n }}\n >\n <CopilotAction start={start} history={history} buynowRender={buynowRender} signupRender={signupRender} />\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", "useCallback", "useState", "useEffect", "CopilotKit", "CopilotPopup", "CopilotAction", "fetcher", "Chat", "props", "title", "runtimeUrl", "popup", "shopify_domain", "user_id", "query", "buynowRender", "signupRender", "style", "className", "lang", "openTip", "setOpenTip", "openPopup", "setOpenPopup", "start", "setstart", "history", "sethistory", "getStart", "result", "setOpenTipFn", "timer", "open", "setOpen", "Button", "chat_default"]
4
+ "sourcesContent": ["/* eslint-disable react-hooks/exhaustive-deps */\nimport React 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 shopify_domain: string\n /** GA \u7684 client id\n */\n user_id: 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 /** ?a=1&b=2\n */\n query?: string\n /** 'follow' or 'unfollow' | true or false\n */\n showResponseButton?: string | boolean\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 /** \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 /** \u8BA2\u9605\u5361\u7247\uFF0C\u63A5\u53D7\u53C2\u6570\uFF1A\n * \u540E\u7AEF\u63A5\u53E3\u6587\u6863\uFF1Ahttps://anker-in.feishu.cn/wiki/DOYJwE9oxipWmYk072ncnJNznBb\n */\n signupRender?: 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{\"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 shopify_domain,\n user_id = '',\n account = '',\n locale = '',\n query = '',\n showResponseButton,\n addtocartRender,\n productRender,\n signupRender,\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('')\n const [currentSuggestions, setCurrentSuggestions] = useState([])\n const [history, sethistory] = useState<[{ content: string; role: string }] | []>([])\n\n const getStart = useCallback(async () => {\n const result = await fetcher({\n url: `${runtimeUrl}/copilotkit/start${query}`,\n method: 'GET',\n headers: { user_id: user_id || '', shopify_domain, account, locale },\n })\n\n setCurrentSuggestions(result?.suggested_questions?.map((item: string) => ({ message: item, title: item })) || [])\n setstart(result?.opening_statement || '')\n sethistory(result?.history || [])\n }, [user_id, shopify_domain, account, locale])\n\n const getSuggestions = useCallback(async () => {\n const result = await fetcher({\n url: `${runtimeUrl}/copilotkit/suggested_questions${query}`,\n method: 'GET',\n headers: { user_id: user_id || '', shopify_domain, account, locale },\n })\n\n setCurrentSuggestions(\n result?.suggested_questions?.data?.map((item: string) => ({ message: item, title: item })) || []\n )\n }, [user_id, shopify_domain, account, locale])\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 useEffect(() => {\n if (!start) {\n getStart()\n }\n }, [])\n\n return (\n <div className={className} style={style || {}}>\n {user_id && runtimeUrl && (\n <CopilotKit\n runtimeUrl={`${runtimeUrl}/copilotkit/chat${query}`}\n showDevConsole={false}\n headers={{ user_id: user_id || '', shopify_domain: shopify_domain, account, locale }}\n >\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 }) => {\n const Button = popup?.Button || DefaultButton\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n setOpenPopup(open)\n }, [open])\n return (\n <>\n {lang?.popupTip && openTip && !openPopup && (\n <div className=\"copilotKitPopup copilotKitPopupTip\">\n <button\n onClick={() => {\n setOpen(true)\n setOpenTip(false)\n }}\n aria-label=\"Open Chat\"\n className=\"copilotKitPopupTipContent\"\n >\n {lang?.popupTip}\n </button>\n </div>\n )}\n <Button open={open} setOpen={setOpen} setOpenTip={setOpenTip} />\n </>\n )\n }}\n >\n <CopilotAction\n start={start}\n history={history}\n addtocartRender={addtocartRender}\n productRender={productRender}\n signupRender={signupRender}\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", "useCallback", "useState", "useEffect", "CopilotKit", "CopilotPopup", "DefaultButton", "Messages", "ResponseButton", "Suggestions", "CopilotAction", "fetcher", "Chat", "props", "title", "runtimeUrl", "popup", "shopify_domain", "user_id", "account", "locale", "query", "showResponseButton", "addtocartRender", "productRender", "signupRender", "style", "className", "lang", "autoTipOpen", "autoTipClose", "openTip", "setOpenTip", "openPopup", "setOpenPopup", "start", "setstart", "currentSuggestions", "setCurrentSuggestions", "history", "sethistory", "getStart", "result", "item", "getSuggestions", "setOpenTipFn", "timer", "load", "messages", "inProgress", "open", "setOpen", "Button", "chat_default"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ import{jsx as r}from"react/jsx-runtime";import{memo as n}from"react";import t from"react-markdown";import a from"remark-gfm";import m from"remark-math";const p=n(t,(o,e)=>o.children===e.children&&o.className===e.className),k=({content:o})=>r("div",{className:"copilotKitMarkdown",children:r(p,{components:i,remarkPlugins:[a,m],children:o})}),i={p({children:o}){return r("p",{children:o})},a({children:o,...e}){return r("a",{style:{color:"blue",textDecoration:"underline"},...e,target:"_blank",rel:"noopener noreferrer",children:o})}};export{k as Markdown};
2
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/chat/markdown.tsx"],
4
+ "sourcesContent": ["import { type FC, memo } from 'react'\nimport ReactMarkdown, { type Options, type Components } from 'react-markdown'\nimport remarkGfm from 'remark-gfm'\nimport remarkMath from 'remark-math'\n\nconst MemoizedReactMarkdown: FC<Options> = memo(\n ReactMarkdown,\n (prevProps, nextProps) => prevProps.children === nextProps.children && prevProps.className === nextProps.className\n)\n\ntype MarkdownProps = {\n content: string\n}\n\nexport const Markdown = ({ content }: MarkdownProps) => {\n return (\n <div className=\"copilotKitMarkdown\">\n <MemoizedReactMarkdown components={components} remarkPlugins={[remarkGfm, remarkMath]}>\n {content}\n </MemoizedReactMarkdown>\n </div>\n )\n}\n\nconst components: Components = {\n p({ children }) {\n return <p>{children}</p>\n },\n a({ children, ...props }) {\n return (\n <a style={{ color: 'blue', textDecoration: 'underline' }} {...props} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n </a>\n )\n },\n}\n"],
5
+ "mappings": "AAiBM,cAAAA,MAAA,oBAjBN,OAAkB,QAAAC,MAAY,QAC9B,OAAOC,MAAsD,iBAC7D,OAAOC,MAAe,aACtB,OAAOC,MAAgB,cAEvB,MAAMC,EAAqCJ,EACzCC,EACA,CAACI,EAAWC,IAAcD,EAAU,WAAaC,EAAU,UAAYD,EAAU,YAAcC,EAAU,SAC3G,EAMaC,EAAW,CAAC,CAAE,QAAAC,CAAQ,IAE/BT,EAAC,OAAI,UAAU,qBACb,SAAAA,EAACK,EAAA,CAAsB,WAAYK,EAAY,cAAe,CAACP,EAAWC,CAAU,EACjF,SAAAK,EACH,EACF,EAIEC,EAAyB,CAC7B,EAAE,CAAE,SAAAC,CAAS,EAAG,CACd,OAAOX,EAAC,KAAG,SAAAW,EAAS,CACtB,EACA,EAAE,CAAE,SAAAA,EAAU,GAAGC,CAAM,EAAG,CACxB,OACEZ,EAAC,KAAE,MAAO,CAAE,MAAO,OAAQ,eAAgB,WAAY,EAAI,GAAGY,EAAO,OAAO,SAAS,IAAI,sBACtF,SAAAD,EACH,CAEJ,CACF",
6
+ "names": ["jsx", "memo", "ReactMarkdown", "remarkGfm", "remarkMath", "MemoizedReactMarkdown", "prevProps", "nextProps", "Markdown", "content", "components", "children", "props"]
7
+ }
@@ -0,0 +1,5 @@
1
+ type MarkdownProps = {
2
+ content: string;
3
+ };
4
+ export declare const Markdown: ({ content }: MarkdownProps) => import("react/jsx-runtime").JSX.Element;
5
+ export {};
@@ -0,0 +1,2 @@
1
+ import { MessagesProps } from './props';
2
+ export declare const Messages: ({ messages, inProgress, children }: MessagesProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import{jsx as o,jsxs as g}from"react/jsx-runtime";import A,{useEffect as C,useMemo as N}from"react";import{useChatContext as h}from"@copilotkit/react-ui";import{Markdown as k}from"./markdown.js";import{useCopilotContext as I}from"@copilotkit/react-core";import{MessageStatusCode as E,ActionExecutionMessage as v,ResultMessage as y,TextMessage as M,Role as b}from"@copilotkit/runtime-client-gql";const w=({messages:e,inProgress:n,ResponseButton:u,children:R})=>{const{chatComponentsCache:f}=I(),r=h();e=[...N(()=>B(r.labels.initial),[r.labels.initial]),...e];const p={};for(let t=0;t<e.length;t++)if(e[t]instanceof v){const s=e[t].id,i=e.find(c=>c instanceof y&&c.actionExecutionId===s);i&&(p[s]=y.decodeResult(i.result||""))}const d=A.useRef(null),m=()=>{d.current&&d.current.scrollIntoView({behavior:"auto"})};return C(()=>{m()},[e]),g("div",{className:"copilotKitMessages",children:[e.map((t,s)=>{const i=s===e.length-1;if(t instanceof M&&t.role==="user")return o("div",{className:"copilotKitMessage copilotKitUserMessage",children:t.content},s);if(t instanceof M&&t.role=="assistant")return o("div",{className:"copilotKitMessage copilotKitAssistantMessage",children:i&&n&&!t.content?r.icons.spinnerIcon:o(k,{content:t.content})},s);if(t instanceof v)if(f.current!==null&&f.current[t.name]){const c=f.current[t.name];if(typeof c=="string")return i&&n?g("div",{className:"copilotKitMessage copilotKitAssistantMessage",children:[r.icons.spinnerIcon," ",o("span",{className:"inProgressLabel",children:c})]},s):null;{const K=t.arguments;let l="inProgress";p[t.id]!==void 0?l="complete":t.status.code!==E.Pending&&(l="executing");const a=c({status:l,args:K,result:p[t.id]});return!a&&l==="complete"?null:typeof a=="string"?g("div",{className:"copilotKitMessage copilotKitAssistantMessage",children:[i&&n&&r.icons.spinnerIcon," ",a]},s):o("div",{className:"copilotKitCustomAssistantMessage",children:a},s)}}else return!n||!i?null:o("div",{className:"copilotKitMessage copilotKitAssistantMessage",children:r.icons.spinnerIcon},s)}),o("div",{className:"responseButtonBox",children:u}),o("footer",{ref:d,children:R})]})};function B(e){let n=[];return e&&(Array.isArray(e)?n.push(...e):n.push(e)),n.map(u=>new M({role:b.Assistant,content:u}))}var H=w;export{H as default};
2
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/chat/messages.tsx"],
4
+ "sourcesContent": ["import React, { useEffect, useMemo } 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 { 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\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 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}>{children}</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", "useChatContext", "Markdown", "useCopilotContext", "MessageStatusCode", "ActionExecutionMessage", "ResultMessage", "TextMessage", "Role", "Messages", "messages", "inProgress", "ResponseButton", "children", "chatComponentsCache", "context", "makeInitialMessages", "functionResults", "i", "id", "resultMessage", "message", "messagesEndRef", "scrollToBottom", "index", "isCurrentMessage", "render", "args", "status", "toRender", "initial", "initialArray", "messages_default"]
7
+ }
@@ -0,0 +1,43 @@
1
+ import React from 'react';
2
+ import { Message } from '@copilotkit/runtime-client-gql';
3
+ export interface ButtonProps {
4
+ open: boolean;
5
+ setOpen: (open: boolean) => void;
6
+ setOpenTip: (open: boolean) => void;
7
+ }
8
+ export interface WindowProps {
9
+ open: boolean;
10
+ setOpen: (open: boolean) => void;
11
+ clickOutsideToClose: boolean;
12
+ hitEscapeToClose: boolean;
13
+ shortcut: string;
14
+ children?: React.ReactNode;
15
+ }
16
+ export interface HeaderProps {
17
+ open: boolean;
18
+ setOpen: (open: boolean) => void;
19
+ }
20
+ export interface ChatSuggestions {
21
+ currentSuggestions: SuggestionsProps[];
22
+ }
23
+ export interface SuggestionsProps {
24
+ title: string;
25
+ message: string;
26
+ partial?: boolean;
27
+ className?: string;
28
+ }
29
+ export interface MessagesProps {
30
+ messages: Message[];
31
+ inProgress: boolean;
32
+ ResponseButton?: React.ReactElement;
33
+ children?: React.ReactNode;
34
+ }
35
+ export interface InputProps {
36
+ inProgress: boolean;
37
+ onSend: (text: string) => Promise<Message>;
38
+ isVisible?: boolean;
39
+ }
40
+ export interface ResponseButtonProps {
41
+ onClick: () => void;
42
+ inProgress: boolean;
43
+ }
@@ -0,0 +1,2 @@
1
+ import"react";import"@copilotkit/runtime-client-gql";
2
+ //# sourceMappingURL=props.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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: (open: boolean) => void\n setOpenTip: (open: boolean) => 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"],
5
+ "mappings": "AAAA,MAAkB,QAClB,MAAwB",
6
+ "names": []
7
+ }
@@ -0,0 +1,2 @@
1
+ declare const ResponseButton: () => import("react/jsx-runtime").JSX.Element;
2
+ export default ResponseButton;
@@ -0,0 +1,2 @@
1
+ import{jsx as r,jsxs as i}from"react/jsx-runtime";import{useChatContext as s}from"@copilotkit/react-ui";import{useCopilotChat as a}from"@copilotkit/react-core";const p=()=>{const o=s(),{isLoading:t,reloadMessages:e,stopGeneration:n}=a();return i("button",{onClick:t?n:e,className:"copilotKitResponseButton",children:[t?o.labels.stopGenerating:o.labels.regenerateResponse,r("span",{children:t?o.icons.stopIcon:o.icons.regenerateIcon})]})};var u=p;export{u as default};
2
+ //# sourceMappingURL=response.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/chat/response.tsx"],
4
+ "sourcesContent": ["import { useChatContext } from '@copilotkit/react-ui'\nimport { useCopilotChat } from '@copilotkit/react-core'\n\nconst ResponseButton = () => {\n const context = useChatContext()\n\n const { isLoading, reloadMessages, stopGeneration } = useCopilotChat()\n\n return (\n <button onClick={isLoading ? stopGeneration : reloadMessages} className=\"copilotKitResponseButton\">\n {isLoading ? context.labels.stopGenerating : context.labels.regenerateResponse}\n <span>{isLoading ? context.icons.stopIcon : context.icons.regenerateIcon}</span>\n </button>\n )\n}\n\nexport default ResponseButton\n"],
5
+ "mappings": "AASI,OAEE,OAAAA,EAFF,QAAAC,MAAA,oBATJ,OAAS,kBAAAC,MAAsB,uBAC/B,OAAS,kBAAAC,MAAsB,yBAE/B,MAAMC,EAAiB,IAAM,CAC3B,MAAMC,EAAUH,EAAe,EAEzB,CAAE,UAAAI,EAAW,eAAAC,EAAgB,eAAAC,CAAe,EAAIL,EAAe,EAErE,OACEF,EAAC,UAAO,QAASK,EAAYE,EAAiBD,EAAgB,UAAU,2BACrE,UAAAD,EAAYD,EAAQ,OAAO,eAAiBA,EAAQ,OAAO,mBAC5DL,EAAC,QAAM,SAAAM,EAAYD,EAAQ,MAAM,SAAWA,EAAQ,MAAM,eAAe,GAC3E,CAEJ,EAEA,IAAOI,EAAQL",
6
+ "names": ["jsx", "jsxs", "useChatContext", "useCopilotChat", "ResponseButton", "context", "isLoading", "reloadMessages", "stopGeneration", "response_default"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import { ResponseButtonProps } from "./props";
2
+ export declare const ResponseButton: ({ onClick, inProgress }: ResponseButtonProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import type { ChatSuggestions } from './props.js';
2
+ declare const Suggestions: ({ currentSuggestions }: ChatSuggestions) => false | import("react/jsx-runtime").JSX.Element;
3
+ export default Suggestions;
@@ -0,0 +1,2 @@
1
+ import{jsx as s}from"react/jsx-runtime";import{useCopilotChat as u}from"@copilotkit/react-core";import{Role as l,TextMessage as m}from"@copilotkit/runtime-client-gql";const d=({currentSuggestions:o})=>{const{appendMessage:e}=u();return o?.length>0&&s("div",{className:"suggestions",children:o.map(({title:n,message:t,partial:p,className:a},g)=>s("button",{disabled:p,onClick:i=>{i.preventDefault();const r=new m({content:t,role:l.User});e(r)},className:a||"suggestion",children:s("span",{children:n})},t+g))})};var C=d;export{C as default};
2
+ //# sourceMappingURL=suggestions.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/chat/suggestions.tsx"],
4
+ "sourcesContent": ["import { useCopilotChat } from '@copilotkit/react-core'\nimport { Role, TextMessage } from '@copilotkit/runtime-client-gql'\n\nimport type { SuggestionsProps, ChatSuggestions } from './props.js'\n\nconst Suggestions = ({ currentSuggestions }: ChatSuggestions) => {\n const { appendMessage } = useCopilotChat()\n\n return (\n currentSuggestions?.length > 0 && (\n <div className=\"suggestions\">\n {currentSuggestions.map(({ title, message, partial, className }: SuggestionsProps, index: number) => (\n <button\n key={message + index}\n disabled={partial}\n onClick={e => {\n e.preventDefault()\n const m = new TextMessage({\n content: message,\n role: Role.User,\n })\n appendMessage(m)\n }}\n className={className || 'suggestion'}\n >\n <span>{title}</span>\n </button>\n ))}\n </div>\n )\n )\n}\n\nexport default Suggestions\n"],
5
+ "mappings": "AAyBY,cAAAA,MAAA,oBAzBZ,OAAS,kBAAAC,MAAsB,yBAC/B,OAAS,QAAAC,EAAM,eAAAC,MAAmB,iCAIlC,MAAMC,EAAc,CAAC,CAAE,mBAAAC,CAAmB,IAAuB,CAC/D,KAAM,CAAE,cAAAC,CAAc,EAAIL,EAAe,EAEzC,OACEI,GAAoB,OAAS,GAC3BL,EAAC,OAAI,UAAU,cACZ,SAAAK,EAAmB,IAAI,CAAC,CAAE,MAAAE,EAAO,QAAAC,EAAS,QAAAC,EAAS,UAAAC,CAAU,EAAqBC,IACjFX,EAAC,UAEC,SAAUS,EACV,QAASG,GAAK,CACZA,EAAE,eAAe,EACjB,MAAMC,EAAI,IAAIV,EAAY,CACxB,QAASK,EACT,KAAMN,EAAK,IACb,CAAC,EACDI,EAAcO,CAAC,CACjB,EACA,UAAWH,GAAa,aAExB,SAAAV,EAAC,QAAM,SAAAO,EAAM,GAZRC,EAAUG,CAajB,CACD,EACH,CAGN,EAEA,IAAOG,EAAQV",
6
+ "names": ["jsx", "useCopilotChat", "Role", "TextMessage", "Suggestions", "currentSuggestions", "appendMessage", "title", "message", "partial", "className", "index", "e", "m", "suggestions_default"]
7
+ }
@@ -1,5 +1,6 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react';
2
2
  import { Chat } from '../components/index.js';
3
+ import '../styles/chat.css';
3
4
  type Story = StoryObj<typeof meta>;
4
5
  declare const meta: Meta<typeof Chat>;
5
6
  export default meta;
@@ -1,2 +1,2 @@
1
- import{jsx as t}from"react/jsx-runtime";import"react";import{Chat as e}from"../components/index.js";const a={title:"Campaign/Chat",component:e,args:{title:"DTC Live Chat",runtimeUrl:"https://beta-dtcapi.anker.com",shopify_domain:"soundcoreusa.myshopify.com"},tags:["autodocs"],decorators:[o=>t("div",{style:{marginTop:"40em"},children:t(o,{})})]};var s=a;const m={args:{title:"DTC Live Chat",runtimeUrl:"https://beta-dtcapi.anker.com",shopify_domain:"soundcoreusa.myshopify.com",user_id:"ar_411",query:"",lang:{popupTip:"Hi ! Welcome to soundcore Innovations live chat\uFF01"}}};export{m as Default,s as default};
1
+ import{jsx as t}from"react/jsx-runtime";import"react";import{Chat as e}from"../components/index.js";import"../styles/chat.css";const a={title:"Campaign/Chat",component:e,args:{title:"DTC Live Chat",runtimeUrl:"https://beta-dtcapi.anker.com",shopify_domain:"soundcoreusa.myshopify.com"},tags:["autodocs"],decorators:[o=>t("div",{style:{marginTop:"40em"},children:t(o,{})})]};var m=a;const n={args:{title:"DTC Live Chat",runtimeUrl:"https://beta-dtcapi.anker.com",shopify_domain:"soundcoreusa.myshopify.com",user_id:"arno5",showResponseButton:"follow",lang:{popupTip:"Hi ! Welcome to soundcore Innovations live chat\uFF01",popupTipTimeout:[3e3,6e3]}}};export{n as Default,m as default};
2
2
  //# sourceMappingURL=chat.stories.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/stories/chat.stories.tsx"],
4
- "sourcesContent": ["import React from 'react'\nimport type { Meta, StoryObj } from '@storybook/react'\n\nimport { Chat } from '../components/index.js'\n\ntype Story = StoryObj<typeof meta>\n\n// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export\nconst meta: Meta<typeof Chat> = {\n // \u540C\u65F6\u5B9A\u4E49\u4E86\u9875\u9762\u5DE6\u4FA7\u83DC\u5355\n title: 'Campaign/Chat',\n component: Chat,\n args: {\n title: 'DTC Live Chat',\n runtimeUrl: 'https://beta-dtcapi.anker.com',\n shopify_domain: 'soundcoreusa.myshopify.com',\n },\n // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs\n tags: ['autodocs'],\n // More on argTypes: https://storybook.js.org/docs/api/argtypes\n decorators: [\n Story => (\n <div style={{ marginTop: '40em' }}>\n {/* \uD83D\uDC47 Decorators in Storybook also accept a function. Replace <Story/> with Story() to enable it */}\n <Story />\n </div>\n ),\n ],\n} satisfies Meta<typeof Chat>\n\nexport default meta\n\nexport const Default: Story = {\n args: {\n title: 'DTC Live Chat',\n runtimeUrl: 'https://beta-dtcapi.anker.com',\n shopify_domain: 'soundcoreusa.myshopify.com',\n user_id: 'ar_411',\n query: '',\n lang: { popupTip: 'Hi ! Welcome to soundcore Innovations live chat\uFF01' },\n },\n}\n"],
5
- "mappings": "AAwBQ,cAAAA,MAAA,oBAxBR,MAAkB,QAGlB,OAAS,QAAAC,MAAY,yBAKrB,MAAMC,EAA0B,CAE9B,MAAO,gBACP,UAAWD,EACX,KAAM,CACJ,MAAO,gBACP,WAAY,gCACZ,eAAgB,4BAClB,EAEA,KAAM,CAAC,UAAU,EAEjB,WAAY,CACVE,GACEH,EAAC,OAAI,MAAO,CAAE,UAAW,MAAO,EAE9B,SAAAA,EAACG,EAAA,EAAM,EACT,CAEJ,CACF,EAEA,IAAOC,EAAQF,EAER,MAAMG,EAAiB,CAC5B,KAAM,CACJ,MAAO,gBACP,WAAY,gCACZ,eAAgB,6BAChB,QAAS,SACT,MAAO,GACP,KAAM,CAAE,SAAU,uDAAmD,CACvE,CACF",
4
+ "sourcesContent": ["import React from 'react'\nimport type { Meta, StoryObj } from '@storybook/react'\nimport { Chat } from '../components/index.js'\nimport '../styles/chat.css'\n\ntype Story = StoryObj<typeof meta>\n\n// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export\nconst meta: Meta<typeof Chat> = {\n // \u540C\u65F6\u5B9A\u4E49\u4E86\u9875\u9762\u5DE6\u4FA7\u83DC\u5355\n title: 'Campaign/Chat',\n component: Chat,\n args: {\n title: 'DTC Live Chat',\n runtimeUrl: 'https://beta-dtcapi.anker.com',\n shopify_domain: 'soundcoreusa.myshopify.com',\n },\n // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs\n tags: ['autodocs'],\n // More on argTypes: https://storybook.js.org/docs/api/argtypes\n decorators: [\n Story => (\n <div style={{ marginTop: '40em' }}>\n {/* \uD83D\uDC47 Decorators in Storybook also accept a function. Replace <Story/> with Story() to enable it */}\n <Story />\n </div>\n ),\n ],\n} satisfies Meta<typeof Chat>\n\nexport default meta\n\nexport const Default: Story = {\n args: {\n title: 'DTC Live Chat',\n runtimeUrl: 'https://beta-dtcapi.anker.com',\n shopify_domain: 'soundcoreusa.myshopify.com',\n user_id: 'arno5',\n showResponseButton: 'follow',\n lang: { popupTip: 'Hi ! Welcome to soundcore Innovations live chat\uFF01', popupTipTimeout: [3000, 6000] },\n },\n}\n"],
5
+ "mappings": "AAwBQ,cAAAA,MAAA,oBAxBR,MAAkB,QAElB,OAAS,QAAAC,MAAY,yBACrB,MAAO,qBAKP,MAAMC,EAA0B,CAE9B,MAAO,gBACP,UAAWD,EACX,KAAM,CACJ,MAAO,gBACP,WAAY,gCACZ,eAAgB,4BAClB,EAEA,KAAM,CAAC,UAAU,EAEjB,WAAY,CACVE,GACEH,EAAC,OAAI,MAAO,CAAE,UAAW,MAAO,EAE9B,SAAAA,EAACG,EAAA,EAAM,EACT,CAEJ,CACF,EAEA,IAAOC,EAAQF,EAER,MAAMG,EAAiB,CAC5B,KAAM,CACJ,MAAO,gBACP,WAAY,gCACZ,eAAgB,6BAChB,QAAS,QACT,mBAAoB,SACpB,KAAM,CAAE,SAAU,wDAAoD,gBAAiB,CAAC,IAAM,GAAI,CAAE,CACtG,CACF",
6
6
  "names": ["jsx", "Chat", "meta", "Story", "chat_stories_default", "Default"]
7
7
  }