@anker-in/campaign-ui 0.0.33-alpha6 → 0.1.2
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.
- package/README.md +0 -7
- package/dist/cjs/components/chat/action.d.ts +2 -1
- package/dist/cjs/components/chat/action.js +1 -1
- package/dist/cjs/components/chat/action.js.map +3 -3
- package/dist/cjs/components/chat/chatContext.js +2 -0
- package/dist/cjs/components/chat/chatContext.js.map +7 -0
- package/dist/cjs/components/chat/index.d.ts +3 -0
- package/dist/cjs/components/chat/index.js +1 -1
- package/dist/cjs/components/chat/index.js.map +3 -3
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/components/chat/action.d.ts +2 -1
- package/dist/esm/components/chat/action.js +1 -1
- package/dist/esm/components/chat/action.js.map +3 -3
- package/dist/esm/components/chat/chatContext.js +2 -0
- package/dist/esm/components/chat/chatContext.js.map +7 -0
- package/dist/esm/components/chat/index.d.ts +3 -0
- package/dist/esm/components/chat/index.js +1 -1
- package/dist/esm/components/chat/index.js.map +3 -3
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/components/chat/action.tsx +12 -0
- package/src/components/chat/chatContext.tsx +161 -0
- package/src/components/chat/index.tsx +5 -0
- package/CONTRIBUTING.md +0 -175
package/README.md
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
### 开发
|
|
2
|
-
|
|
3
|
-
[CONTRIBUTING.md](CONTRIBUTING.md)
|
|
4
|
-
|
|
5
1
|
# 使用方法
|
|
6
2
|
|
|
7
3
|
```shell
|
|
@@ -25,6 +21,3 @@ import { Chat } from '@anker-in/campaign-ui'
|
|
|
25
21
|
shopify_domain='xxx.myshopify.com'
|
|
26
22
|
/>
|
|
27
23
|
```
|
|
28
|
-
|
|
29
|
-

|
|
30
|
-
|
|
@@ -10,6 +10,7 @@ export interface ActionProps {
|
|
|
10
10
|
start?: string;
|
|
11
11
|
history: Message[];
|
|
12
12
|
addtocartHandler?: (_args: any) => Promise<any>;
|
|
13
|
+
commonRender?: string | ((_props: any) => React.ReactElement);
|
|
13
14
|
gotocheckoutRender?: string | ((_props: any) => React.ReactElement);
|
|
14
15
|
gotocartRender?: string | ((_props: any) => React.ReactElement);
|
|
15
16
|
addtocartRender?: string | ((_props: any) => React.ReactElement);
|
|
@@ -18,5 +19,5 @@ export interface ActionProps {
|
|
|
18
19
|
productRenderTipMessage?: string;
|
|
19
20
|
children?: React.ReactNode;
|
|
20
21
|
}
|
|
21
|
-
export declare const CopilotAction: ({ start, history, addtocartHandler, gotocheckoutRender, gotocartRender, addtocartRender, productRender, signupRender, children, }: ActionProps) => import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export declare const CopilotAction: ({ start, history, addtocartHandler, commonRender, gotocheckoutRender, gotocartRender, addtocartRender, productRender, signupRender, children, }: ActionProps) => import("react/jsx-runtime").JSX.Element;
|
|
22
23
|
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var m=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var M=Object.prototype.hasOwnProperty;var S=(a,n)=>{for(var s in n)m(a,s,{get:n[s],enumerable:!0})},k=(a,n,s,d)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of E(n))!M.call(a,o)&&o!==s&&m(a,o,{get:()=>n[o],enumerable:!(d=v(n,o))||d.enumerable});return a};var A=a=>k(m({},"__esModule",{value:!0}),a);var O={};S(O,{CopilotAction:()=>J});module.exports=A(O);var r=require("react/jsx-runtime"),P=require("react"),l=require("react"),t=require("@copilotkit/react-core"),c=require("@copilotkit/runtime-client-gql");const J=({start:a,history:n,addtocartHandler:s,commonRender:d,gotocheckoutRender:o,gotocartRender:u,addtocartRender:y,productRender:h,signupRender:R,children:f})=>{const{setMessages:_,appendMessage:w,isLoading:C}=(0,t.useCopilotChat)();return(0,l.useEffect)(()=>{const e=n?.filter(p=>p?.content||p?.arguments);if(e?.length>0){const p=e?.map(i=>{if(i?.name&&i?.arguments){const N=i?.arguments?.map(g=>g?{...g,ishistory:!0}:{});return new c.ActionExecutionMessage({name:i?.name,arguments:N,scope:i?.scope})}return new c.TextMessage({...i,role:i?.role==="user"?c.Role.User:c.Role.Assistant})});_(p)}},[n]),(0,t.useCopilotAction)({name:"go_to_checkout",description:"go to cart",parameters:[{sku:"",handle:""}],render:o||(e=>(0,r.jsx)("div",{className:"hidden",children:JSON.stringify(e)})),handler:function(){}}),(0,t.useCopilotAction)({name:"common_action",description:"common action",parameters:[{act:""}],render:d||(e=>(0,r.jsx)("div",{className:"hidden",children:JSON.stringify(e)})),handler:function(){}}),(0,t.useCopilotAction)({name:"go_to_cart",description:"go to cart",parameters:[{sku:"",handle:""}],render:u||(e=>(0,r.jsx)("div",{className:"hidden",children:JSON.stringify(e)})),handler:function(){}}),(0,t.useCopilotAction)({name:"add_to_cart",description:"add to cart",parameters:[{sku:"",handle:""}],render:y||(e=>(0,r.jsx)("div",{className:"hidden",children:JSON.stringify(e)})),handler:function(e){s&&s(e)}}),(0,t.useCopilotAction)({name:"show_product_card",description:"product card",parameters:[{sku:"",handle:""}],render:h||(e=>(0,r.jsx)("div",{className:"hidden",children:JSON.stringify(e)})),handler:function(e){console.log("show_product_card-props",e)}}),(0,t.useCopilotAction)({name:"signup",description:"signup",parameters:[{name:"signup"}],render:R||(e=>(0,r.jsx)("div",{className:"hidden",children:JSON.stringify(e)})),handler:function(){}}),(0,t.useCopilotReadable)({description:"Today's date",value:new Date().toLocaleDateString()}),(0,r.jsx)("div",{children:f})};
|
|
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 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 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: '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": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,
|
|
6
|
-
"names": ["action_exports", "__export", "CopilotAction", "__toCommonJS", "import_jsx_runtime", "import_react", "import_react_core", "import_runtime_client_gql", "start", "history", "addtocartHandler", "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 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": ["action_exports", "__export", "CopilotAction", "__toCommonJS", "import_jsx_runtime", "import_react", "import_react_core", "import_runtime_client_gql", "start", "history", "addtocartHandler", "commonRender", "gotocheckoutRender", "gotocartRender", "addtocartRender", "productRender", "signupRender", "children", "setMessages", "appendMessage", "isLoading", "originhistory", "value", "content", "args", "item", "props"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var p=Object.create;var a=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var h=(e,t)=>{for(var o in t)a(e,o,{get:t[o],enumerable:!0})},i=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of d(t))!R.call(e,n)&&n!==o&&a(e,n,{get:()=>t[n],enumerable:!(r=C(t,n))||r.enumerable});return e};var x=(e,t,o)=>(o=e!=null?p(l(e)):{},i(t||!e||!e.__esModule?a(o,"default",{value:e,enumerable:!0}):o,e)),u=e=>i(a({},"__esModule",{value:!0}),e);var I={};h(I,{ChatContext:()=>s,useChatContext:()=>f});module.exports=u(I);var c=x(require("react"));const s=c.default.createContext(void 0);function f(){const e=c.default.useContext(s);if(e===void 0)throw new Error("Context not found. Did you forget to wrap your app in a <ChatContextProvider> component?");return e}
|
|
2
|
+
//# sourceMappingURL=chatContext.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/chat/chatContext.tsx"],
|
|
4
|
+
"sourcesContent": ["import React from 'react'\n\n/**\n * Icons for CopilotChat component.\n */\nexport interface CopilotChatIcons {\n /**\n * The icon to use for the open chat button.\n * @default <OpenIcon />\n */\n openIcon?: React.ReactNode\n\n /**\n * The icon to use for the close chat button.\n * @default <CloseIcon />\n */\n closeIcon?: React.ReactNode\n\n /**\n * The icon to use for the close chat button in the header.\n * @default <HeaderCloseIcon />\n */\n headerCloseIcon?: React.ReactNode\n\n /**\n * The icon to use for the send button.\n * @default <SendIcon />\n */\n sendIcon?: React.ReactNode\n\n /**\n * The icon to use for the activity indicator.\n * @default <ActivityIcon />\n */\n activityIcon?: React.ReactNode\n\n /**\n * The icon to use for the spinner.\n * @default <SpinnerIcon />\n */\n spinnerIcon?: React.ReactNode\n\n /**\n * The icon to use for the stop button.\n * @default <StopIcon />\n */\n stopIcon?: React.ReactNode\n\n /**\n * The icon to use for the regenerate button.\n * @default <RegenerateIcon />\n */\n regenerateIcon?: React.ReactNode\n\n /**\n * The icons to use for push to talk.\n * @default <PushToTalkIcon />\n */\n\n pushToTalkIcon?: React.ReactNode\n}\n\n/**\n * Labels for CopilotChat component.\n */\nexport interface CopilotChatLabels {\n /**\n * The initial message(s) to display in the chat window.\n */\n initial?: string | string[]\n\n /**\n * The title to display in the header.\n * @default \"CopilotKit\"\n */\n title?: string\n\n /**\n * The placeholder to display in the input.\n * @default \"Type a message...\"\n */\n placeholder?: string\n\n /**\n * The message to display when an error occurs.\n * @default \"\u274C An error occurred. Please try again.\"\n */\n error?: string\n\n /**\n * The label to display on the stop button.\n * @default \"Stop generating\"\n */\n stopGenerating?: string\n\n /**\n * The label to display on the regenerate button.\n * @default \"Regenerate response\"\n */\n regenerateResponse?: string\n}\n\ninterface ChatContext {\n labels: Required<CopilotChatLabels>\n icons: Required<CopilotChatIcons>\n open: boolean\n setOpen: (_open: boolean) => void\n}\n\nexport const ChatContext = React.createContext<ChatContext | undefined>(undefined)\n\nexport function useChatContext(): ChatContext {\n const context = React.useContext(ChatContext)\n if (context === undefined) {\n throw new Error('Context not found. Did you forget to wrap your app in a <ChatContextProvider> component?')\n }\n return context\n}\n\nexport interface ChatContextProps {\n // temperature?: number;\n // instructions?: string;\n // maxFeedback?: number;\n labels?: CopilotChatLabels\n icons?: CopilotChatIcons\n children?: React.ReactNode\n open: boolean\n setOpen: (_open: boolean) => void\n}\n\n// export const ChatContextProvider = ({\n// // temperature,\n// // instructions,\n// // maxFeedback,\n// labels,\n// icons,\n// children,\n// open,\n// setOpen,\n// }: ChatContextProps) => {\n// const context = {\n// labels: {\n// ...{\n// initial: \"\",\n// title: \"CopilotKit\",\n// placeholder: \"Type a message...\",\n// error: \"\u274C An error occurred. Please try again.\",\n// stopGenerating: \"Stop generating\",\n// regenerateResponse: \"Regenerate response\",\n// },\n// ...labels,\n// },\n\n// icons: {\n// ...icons,\n// },\n// open,\n// setOpen,\n// };\n// return <ChatContext.Provider value={context}>{children}</ChatContext.Provider>;\n// };\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iBAAAE,EAAA,mBAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAAkB,oBA6GX,MAAMH,EAAc,EAAAI,QAAM,cAAuC,MAAS,EAE1E,SAASH,GAA8B,CAC5C,MAAMI,EAAU,EAAAD,QAAM,WAAWJ,CAAW,EAC5C,GAAIK,IAAY,OACd,MAAM,IAAI,MAAM,0FAA0F,EAE5G,OAAOA,CACT",
|
|
6
|
+
"names": ["chatContext_exports", "__export", "ChatContext", "useChatContext", "__toCommonJS", "import_react", "React", "context"]
|
|
7
|
+
}
|
|
@@ -26,6 +26,9 @@ export interface ChatProps {
|
|
|
26
26
|
/** 跳转 checkout action 卡片,接受参数: {"status":"complete","args":[{"sku":["A3936031"],"handle":"space-a40-a3936031"}],"result":""}
|
|
27
27
|
* 后端接口文档:https://anker-in.feishu.cn/wiki/DOYJwE9oxipWmYk072ncnJNznBb
|
|
28
28
|
*/
|
|
29
|
+
commonRender?: string | ((_props: any) => React.ReactElement);
|
|
30
|
+
/** 通用 action 的触发事件
|
|
31
|
+
*/
|
|
29
32
|
gotocheckoutRender?: string | ((_props: any) => React.ReactElement);
|
|
30
33
|
/** 打开购物车 action 卡片,接受参数: {"status":"complete","args":[{"sku":["A3936031"],"handle":"space-a40-a3936031"}],"result":""}
|
|
31
34
|
* 后端接口文档:https://anker-in.feishu.cn/wiki/DOYJwE9oxipWmYk072ncnJNznBb
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var et=Object.create;var R=Object.defineProperty;var ot=Object.getOwnPropertyDescriptor;var st=Object.getOwnPropertyNames;var nt=Object.getPrototypeOf,rt=Object.prototype.hasOwnProperty;var it=(e,s)=>{for(var n in s)R(e,n,{get:s[n],enumerable:!0})},w=(e,s,n,p)=>{if(s&&typeof s=="object"||typeof s=="function")for(let i of st(s))!rt.call(e,i)&&i!==n&&R(e,i,{get:()=>s[i],enumerable:!(p=ot(s,i))||p.enumerable});return e};var l=(e,s,n)=>(n=e!=null?et(nt(e)):{},w(s||!e||!e.__esModule?R(n,"default",{value:e,enumerable:!0}):n,e)),at=e=>w(R({},"__esModule",{value:!0}),e);var ut={};it(ut,{default:()=>ct});module.exports=at(ut);var o=require("react/jsx-runtime"),O=require("react"),r=require("react"),b=require("@copilotkit/react-core"),S=require("@copilotkit/react-ui"),v=l(require("./button.js")),M=l(require("./messages.js")),$=l(require("./response.js")),q=l(require("./suggestions.js")),x=require("./action.js"),P=l(require("../../helpers/fetcher.js"));const pt=e=>{const{title:s,runtimeUrl:n,popup:p,shopifyDomain:i,userId:c="",account:g="",prologue:D="",locale:d="",query:f="",showResponseButton:_,gotocheckoutRender:K,commonRender:N,gotocartRender:H,addtocartRender:I,productRender:U,signupRender:G,addtocartHandler:A,style:F,className:L="",lang:m}=e,[z,J]=m?.popupTipTimeout||[3e3,6e3],[B,h]=(0,r.useState)(!1),[y,Q]=(0,r.useState)(!1),[u,V]=(0,r.useState)(D),[W,T]=(0,r.useState)([]),[E,X]=(0,r.useState)([]),C=(0,O.useMemo)(()=>({"x-user-id":c||"","x-shopify-domain":i,"x-member-ship":g,"x-user-locale":d}),[c,i,g,d]),Y=(0,r.useCallback)(async()=>{const t=await(0,P.default)({url:`${n}/copilotkit/start${f}`,method:"GET",headers:C});T(t?.suggested_questions?.map(a=>({message:a,title:a}))||[]),V(t?.opening_statement||""),X(t?.history||[])},[c,i,g,d]),Z=(0,r.useCallback)(async()=>{const t=await(0,P.default)({url:`${n}/copilotkit/suggested_questions${f}`,method:"GET",headers:C});T(t?.suggested_questions?.data?.map(a=>({message:a,title:a}))||[])},[c,i,g,d]),j=()=>{B||h(!0),setTimeout(()=>{h(!1)},J)};return(0,r.useEffect)(()=>{const t=setTimeout(()=>{j()},z);return()=>{clearTimeout(t)}},[]),(0,o.jsx)("div",{className:L,style:F||{},children:c&&n&&(0,o.jsx)(b.CopilotKit,{runtimeUrl:`${n}/copilotkit/chat${f}`,showDevConsole:!1,headers:C,children:(0,o.jsx)(S.CopilotPopup,{...p,showResponseButton:_!=="follow",labels:{title:s||"DTC Live Chat",initial:u||""},instructions:u||"",onInProgress:t=>{y&&t&&T([]),y&&!t&&Z()},Messages:({messages:t,inProgress:a})=>(0,o.jsx)(M.default,{messages:t,inProgress:a,ResponseButton:_==="follow"?(0,o.jsx)($.default,{}):void 0,children:(0,o.jsx)(q.default,{currentSuggestions:W})}),Button:({open:t,setOpen:a})=>{const tt=p?.Button||v.default;(0,r.useEffect)(()=>{Q(t)},[t]);const k=(0,r.useCallback)(()=>{a(!t),h(!1),(!u||!E?.length)&&Y()},[u]);return(0,o.jsxs)(o.Fragment,{children:[m?.popupTip&&B&&!y&&(0,o.jsx)("div",{className:"copilotKitPopup copilotKitPopupTip",children:(0,o.jsx)("button",{onClick:k,"aria-label":"Open Chat",className:"copilotKitPopupTipContent",children:m?.popupTip})}),(0,o.jsx)(tt,{open:t,setOpen:k})]})},children:(0,o.jsx)(x.CopilotAction,{start:u,history:E,commonRender:N,gotocartRender:H,gotocheckoutRender:K,addtocartRender:I,signupRender:G,productRender:U,addtocartHandler:A,productRenderTipMessage:m?.productRenderTipMessage})})})})};var ct=pt;
|
|
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 /** \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 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])\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])\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 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": "skBAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,aAAAE,KAAA,eAAAC,GAAAH,
|
|
6
|
-
"names": ["chat_exports", "__export", "chat_default", "__toCommonJS", "import_jsx_runtime", "import_react", "import_react_core", "import_react_ui", "import_button", "import_messages", "import_response", "import_suggestions", "import_action", "import_fetcher", "Chat", "props", "title", "runtimeUrl", "popup", "shopifyDomain", "userId", "account", "prologue", "locale", "query", "showResponseButton", "gotocheckoutRender", "gotocartRender", "addtocartRender", "productRender", "signupRender", "addtocartHandler", "style", "className", "lang", "autoTipOpen", "autoTipClose", "openTip", "setOpenTip", "openPopup", "setOpenPopup", "start", "setstart", "currentSuggestions", "setCurrentSuggestions", "history", "sethistory", "headers", "getStart", "result", "fetcher", "item", "getSuggestions", "setOpenTipFn", "timer", "load", "messages", "inProgress", "Messages", "ResponseButton", "Suggestions", "open", "setOpenDefault", "Button", "DefaultButton", "setOpen"]
|
|
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 /** \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 commonRender?: string | ((_props: any) => React.ReactElement)\n /** \u901A\u7528 action \u7684\u89E6\u53D1\u4E8B\u4EF6\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])\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])\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": ["chat_exports", "__export", "chat_default", "__toCommonJS", "import_jsx_runtime", "import_react", "import_react_core", "import_react_ui", "import_button", "import_messages", "import_response", "import_suggestions", "import_action", "import_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", "fetcher", "item", "getSuggestions", "setOpenTipFn", "timer", "load", "messages", "inProgress", "Messages", "ResponseButton", "Suggestions", "open", "setOpenDefault", "Button", "DefaultButton", "setOpen"]
|
|
7
7
|
}
|