ordify-chat-widget 1.0.30 → 1.0.32
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOrdifyChat.d.ts","sourceRoot":"","sources":["../../src/hooks/useOrdifyChat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAKpE,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,mBAAmB,
|
|
1
|
+
{"version":3,"file":"useOrdifyChat.d.ts","sourceRoot":"","sources":["../../src/hooks/useOrdifyChat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAKpE,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,mBAAmB,CAqOvE"}
|
package/dist/index.cjs.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* This source code is licensed under the MIT license found in the
|
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
|
9
|
-
*/var bn=k,xn=Symbol.for("react.element"),kn=Symbol.for("react.fragment"),vn=Object.prototype.hasOwnProperty,wn=bn.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,Sn={key:!0,ref:!0,__self:!0,__source:!0};function Tr(e,t,r){var n,a={},l=null,d=null;r!==void 0&&(l=""+r),t.key!==void 0&&(l=""+t.key),t.ref!==void 0&&(d=t.ref);for(n in t)vn.call(t,n)&&!Sn.hasOwnProperty(n)&&(a[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps,t)a[n]===void 0&&(a[n]=t[n]);return{$$typeof:xn,type:e,key:l,ref:d,props:a,_owner:wn.current}}qe.Fragment=kn;qe.jsx=Tr;qe.jsxs=Tr;Cr.exports=qe;var g=Cr.exports;function Oe(){return Math.random().toString(36).substr(2,9)}function Ve(e){return new Intl.DateTimeFormat("en-US",{hour:"2-digit",minute:"2-digit",hour12:!0}).format(e)}function $n(e,t){let r;return(...n)=>{clearTimeout(r),r=setTimeout(()=>e(...n),t)}}function Cn(e,t){let r;return(...n)=>{r||(e(...n),r=!0,setTimeout(()=>r=!1,t))}}class Er{constructor(t){Kt(this,"config");this.config=t}async sendMessage(t,r,n){const a=`${this.config.apiBaseUrl}/chat/agents/${this.config.agentId}`,l={message:t,sessionId:r,context:n},d=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json","api-key":this.config.apiKey,accept:"application/json"},body:JSON.stringify(l)});if(!d.ok){const u=await d.json();throw new Error(`API Error: ${u.detail}`)}if(!d.body)throw new Error("No response body");return d.body}async createSession(){const t=`${this.config.apiBaseUrl}/sessions`,r=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json","api-key":this.config.apiKey,accept:"application/json"},body:JSON.stringify({name:"Chat Session",agentConfig:{type:"chat",settings:null}})});if(!r.ok){const n=await r.json();throw new Error(`API Error: ${n.detail}`)}return r.json()}async getAgents(){const t=`${this.config.apiBaseUrl}/chat/agents`,r=await fetch(t,{method:"GET",headers:{"api-key":this.config.apiKey,accept:"application/json"}});if(!r.ok){const a=await r.json();throw new Error(`API Error: ${a.detail}`)}return(await r.json()).agents||[]}async getSessions(){const t=`${this.config.apiBaseUrl}/sessions`,r=await fetch(t,{method:"GET",headers:{"api-key":this.config.apiKey,accept:"application/json"}});if(!r.ok){const n=await r.json();throw new Error(`API Error: ${n.detail}`)}return r.json()}async getSessionWithMessages(t){const r=`${this.config.apiBaseUrl}/sessions/${t}/with-messages`,n=await fetch(r,{method:"GET",headers:{"api-key":this.config.apiKey,accept:"application/json"}});if(!n.ok){const a=await n.json();throw new Error(`API Error: ${a.detail}`)}return n.json()}}function jr(e){try{if(e.startsWith("data: ")){const t=e.slice(6);return t==="[DONE]"?{text:"",sessionId:"",type:"done"}:JSON.parse(t)}}catch(t){console.warn("Failed to parse streaming response:",t)}return null}function Ir(e){const[t,r]=k.useState([]),[n,a]=k.useState(!1),[l,d]=k.useState(null),[u,h]=k.useState(e.sessionId||null),[b,x]=k.useState(!1),[c,S]=k.useState(!1),[$,E]=k.useState(!1),[v,C]=k.useState(!1),o=k.useRef(null),s=k.useRef(!1),i=k.useRef(!1);o.current||(o.current=new Er({apiKey:e.apiKey,apiBaseUrl:e.apiBaseUrl||"https://api.ordify.ai",agentId:e.agentId})),k.useEffect(()=>{e.sessionId&&e.sessionId!==u&&(h(e.sessionId),i.current=!1,E(!1),r([]))},[e.sessionId]),k.useEffect(()=>{(async()=>{const m=u||e.sessionId;if(!(!
|
|
9
|
+
*/var bn=k,xn=Symbol.for("react.element"),kn=Symbol.for("react.fragment"),vn=Object.prototype.hasOwnProperty,wn=bn.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,Sn={key:!0,ref:!0,__self:!0,__source:!0};function Tr(e,t,r){var n,a={},l=null,d=null;r!==void 0&&(l=""+r),t.key!==void 0&&(l=""+t.key),t.ref!==void 0&&(d=t.ref);for(n in t)vn.call(t,n)&&!Sn.hasOwnProperty(n)&&(a[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps,t)a[n]===void 0&&(a[n]=t[n]);return{$$typeof:xn,type:e,key:l,ref:d,props:a,_owner:wn.current}}qe.Fragment=kn;qe.jsx=Tr;qe.jsxs=Tr;Cr.exports=qe;var g=Cr.exports;function Oe(){return Math.random().toString(36).substr(2,9)}function Ve(e){return new Intl.DateTimeFormat("en-US",{hour:"2-digit",minute:"2-digit",hour12:!0}).format(e)}function $n(e,t){let r;return(...n)=>{clearTimeout(r),r=setTimeout(()=>e(...n),t)}}function Cn(e,t){let r;return(...n)=>{r||(e(...n),r=!0,setTimeout(()=>r=!1,t))}}class Er{constructor(t){Kt(this,"config");this.config=t}async sendMessage(t,r,n){const a=`${this.config.apiBaseUrl}/chat/agents/${this.config.agentId}`,l={message:t,sessionId:r,context:n},d=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json","api-key":this.config.apiKey,accept:"application/json"},body:JSON.stringify(l)});if(!d.ok){const u=await d.json();throw new Error(`API Error: ${u.detail}`)}if(!d.body)throw new Error("No response body");return d.body}async createSession(){const t=`${this.config.apiBaseUrl}/sessions`,r=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json","api-key":this.config.apiKey,accept:"application/json"},body:JSON.stringify({name:"Chat Session",agentConfig:{type:"chat",settings:null}})});if(!r.ok){const n=await r.json();throw new Error(`API Error: ${n.detail}`)}return r.json()}async getAgents(){const t=`${this.config.apiBaseUrl}/chat/agents`,r=await fetch(t,{method:"GET",headers:{"api-key":this.config.apiKey,accept:"application/json"}});if(!r.ok){const a=await r.json();throw new Error(`API Error: ${a.detail}`)}return(await r.json()).agents||[]}async getSessions(){const t=`${this.config.apiBaseUrl}/sessions`,r=await fetch(t,{method:"GET",headers:{"api-key":this.config.apiKey,accept:"application/json"}});if(!r.ok){const n=await r.json();throw new Error(`API Error: ${n.detail}`)}return r.json()}async getSessionWithMessages(t){const r=`${this.config.apiBaseUrl}/sessions/${t}/with-messages`,n=await fetch(r,{method:"GET",headers:{"api-key":this.config.apiKey,accept:"application/json"}});if(!n.ok){const a=await n.json();throw new Error(`API Error: ${a.detail}`)}return n.json()}}function jr(e){try{if(e.startsWith("data: ")){const t=e.slice(6);return t==="[DONE]"?{text:"",sessionId:"",type:"done"}:JSON.parse(t)}}catch(t){console.warn("Failed to parse streaming response:",t)}return null}function Ir(e){const[t,r]=k.useState([]),[n,a]=k.useState(!1),[l,d]=k.useState(null),[u,h]=k.useState(e.sessionId||null),[b,x]=k.useState(!1),[c,S]=k.useState(!1),[$,E]=k.useState(!1),[v,C]=k.useState(!1),o=k.useRef(null),s=k.useRef(!1),i=k.useRef(!1);o.current||(o.current=new Er({apiKey:e.apiKey,apiBaseUrl:e.apiBaseUrl||"https://api.ordify.ai",agentId:e.agentId})),k.useEffect(()=>{e.sessionId&&e.sessionId!==u&&(h(e.sessionId),i.current=!1,E(!1),r([]))},[e.sessionId]),k.useEffect(()=>{(async()=>{const m=u||e.sessionId;if(!m){i.current=!0,E(!1);return}if(!i.current){C(!0);try{const w=await o.current.getSessionWithMessages(m);if(w.messages&&w.messages.length>0){const T=w.messages.map(R=>({id:R.id||Oe(),content:R.content||"",role:R.role==="assistant"?"assistant":"user",timestamp:R.timestamp?new Date(R.timestamp):new Date,sessionId:m}));r(T),E(!0)}else E(!1)}catch(w){console.warn("Failed to load session history:",w),E(!1)}finally{C(!1),i.current=!0}}})()},[u,e.sessionId]);const f=k.useCallback(()=>{d(null)},[]),p=k.useCallback(async(y,m)=>{if(!(!y.trim()||n)){a(!0),d(null);try{const w={id:Oe(),content:y.trim(),role:"user",timestamp:new Date,sessionId:u||void 0};r(F=>[...F,w]);let T=u||e.sessionId||null;T?T!==u&&h(T):(T=(await o.current.createSession()).id,h(T),e.onSessionCreated&&e.onSessionCreated(T));const I=(await o.current.sendMessage(y.trim(),T,m)).getReader(),N=new TextDecoder;let M={id:Oe(),content:"",role:"assistant",timestamp:new Date,sessionId:T};for(r(F=>[...F,M]);;){const{done:F,value:q}=await I.read();if(F)break;const H=N.decode(q,{stream:!0}).split(`
|
|
10
10
|
`);for(const K of H){const O=jr(K);if(O){if(O.type==="stream"&&O.text)r(Z=>Z.map(L=>L.id===M.id?{...L,content:L.content+O.text}:L));else if(O.type==="done")break}}}e.onMessage&&e.onMessage(M)}catch(w){const T=w instanceof Error?w.message:"Failed to send message";d(T),e.onError&&e.onError(w instanceof Error?w:new Error(T))}finally{a(!1)}}},[e.onSessionCreated,e.onMessage,e.onError,n,u]);return k.useEffect(()=>{const m=!(u||e.sessionId)||!$;if((e.initialMessage||e.initialContext)&&m&&!c&&!n&&!v&&!s.current&&i.current){S(!0),s.current=!0;let w,T;if(e.initialMessage&&e.initialContext)w=e.initialMessage,T=e.initialContext;else if(e.initialMessage)w=e.initialMessage,T=void 0;else if(e.initialContext)w="Hi",T=e.initialContext;else return;setTimeout(()=>{p(w,T)},0)}},[e.initialMessage,e.initialContext,c,n,v,$,u,e.sessionId,p]),{messages:t,sendMessage:p,isLoading:n,error:l,clearError:f,sessionId:u,isOpen:b,setIsOpen:x}}function Ar(e){return k.useMemo(()=>{const t=e.agentId||process.env.ORDIFY_AGENT_ID,r=e.apiKey||process.env.ORDIFY_API_KEY,n=e.apiBaseUrl||process.env.ORDIFY_API_BASE_URL||"https://r.ordify.ai";if(!t)throw new Error("Ordify agent ID is required. Provide agentId prop or set ORDIFY_AGENT_ID environment variable.");if(!r)throw new Error("Ordify API key is required. Provide apiKey prop or set ORDIFY_API_KEY environment variable.");return{agentId:t,apiKey:r,apiBaseUrl:n,mode:e.mode||"floating",position:e.position||"bottom-right",theme:e.theme||"auto",placeholder:e.placeholder||"Type a message...",height:e.height||"500px",className:e.className||"",buttonStyle:e.buttonStyle||{},chatWindowStyle:e.chatWindowStyle||{},showHeader:e.showHeader!==!1,buttonText:e.buttonText,chatName:e.chatName,primaryColor:e.primaryColor,onMessage:e.onMessage,onError:e.onError,onClose:e.onClose,onSessionCreated:e.onSessionCreated,initialMessage:e.initialMessage,initialContext:e.initialContext,sessionId:e.sessionId}},[e])}function le(){return le=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},le.apply(this,arguments)}const Tn=["children","options"],Gt=["allowFullScreen","allowTransparency","autoComplete","autoFocus","autoPlay","cellPadding","cellSpacing","charSet","classId","colSpan","contentEditable","contextMenu","crossOrigin","encType","formAction","formEncType","formMethod","formNoValidate","formTarget","frameBorder","hrefLang","inputMode","keyParams","keyType","marginHeight","marginWidth","maxLength","mediaGroup","minLength","noValidate","radioGroup","readOnly","rowSpan","spellCheck","srcDoc","srcLang","srcSet","tabIndex","useMap"].reduce((e,t)=>(e[t.toLowerCase()]=t,e),{class:"className",for:"htmlFor"}),Yt={amp:"&",apos:"'",gt:">",lt:"<",nbsp:" ",quot:"“"},En=["style","script","pre"],jn=["src","href","data","formAction","srcDoc","action"],In=/([-A-Z0-9_:]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|(?:\{((?:\\.|{[^}]*?}|[^}])*)\})))?/gi,An=/mailto:/i,Rn=/\n{2,}$/,qt=/^(\s*>[\s\S]*?)(?=\n\n|$)/,_n=/^ *> ?/gm,Mn=/^(?:\[!([^\]]*)\]\n)?([\s\S]*)/,Nn=/^ {2,}\n/,On=/^(?:( *[-*_])){3,} *(?:\n *)+\n/,Vt=/^(?: {1,3})?(`{3,}|~{3,}) *(\S+)? *([^\n]*?)?\n([\s\S]*?)(?:\1\n?|$)/,Zt=/^(?: {4}[^\n]+\n*)+(?:\n *)+\n?/,Pn=/^(`+)((?:\\`|(?!\1)`|[^`])+)\1/,Dn=/^(?:\n *)*\n/,zn=/\r\n?/g,Bn=/^\[\^([^\]]+)](:(.*)((\n+ {4,}.*)|(\n(?!\[\^).+))*)/,Ln=/^\[\^([^\]]+)]/,Fn=/\f/g,Un=/^---[ \t]*\n(.|\n)*\n---[ \t]*\n/,Hn=/^\s*?\[(x|\s)\]/,Jt=/^ *(#{1,6}) *([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/,Qt=/^ *(#{1,6}) +([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/,Xt=/^([^\n]+)\n *(=|-){3,} *\n/,at=/^ *(?!<[a-z][^ >/]* ?\/>)<([a-z][^ >/]*) ?((?:[^>]*[^/])?)>\n?(\s*(?:<\1[^>]*?>[\s\S]*?<\/\1>|(?!<\1\b)[\s\S])*?)<\/\1>(?!<\/\1>)\n*/i,Wn=/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});/gi,er=/^<!--[\s\S]*?(?:-->)/,Kn=/^(data|aria|x)-[a-z_][a-z\d_.-]*$/,ct=/^ *<([a-z][a-z0-9:]*)(?:\s+((?:<.*?>|[^>])*))?\/?>(?!<\/\1>)(\s*\n)?/i,Gn=/^\{.*\}$/,Yn=/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,qn=/^<([^ >]+@[^ >]+)>/,Vn=/^<([^ >]+:\/[^ >]+)>/,Zn=/-([a-z])?/gi,tr=/^(\|.*)\n(?: *(\|? *[-:]+ *\|[-| :]*)\n((?:.*\|.*\n)*))?\n?/,Jn=/^[^\n]+(?: \n|\n{2,})/,Qn=/^\[([^\]]*)\]:\s+<?([^\s>]+)>?\s*("([^"]*)")?/,Xn=/^!\[([^\]]*)\] ?\[([^\]]*)\]/,eo=/^\[([^\]]*)\] ?\[([^\]]*)\]/,to=/(\n|^[-*]\s|^#|^ {2,}|^-{2,}|^>\s)/,ro=/\t/g,no=/(^ *\||\| *$)/g,oo=/^ *:-+: *$/,so=/^ *:-+ *$/,io=/^ *-+: *$/,Ze=e=>`(?=[\\s\\S]+?\\1${e?"\\1":""})`,Je="((?:\\[.*?\\][([].*?[)\\]]|<.*?>(?:.*?<.*?>)?|`.*?`|\\\\\\1|[\\s\\S])+?)",ao=RegExp(`^([*_])\\1${Ze(1)}${Je}\\1\\1(?!\\1)`),co=RegExp(`^([*_])${Ze(0)}${Je}\\1(?!\\1)`),lo=RegExp(`^(==)${Ze(0)}${Je}\\1`),uo=RegExp(`^(~~)${Ze(0)}${Je}\\1`),fo=/^(:[a-zA-Z0-9-_]+:)/,po=/^\\([^0-9A-Za-z\s])/,ho=/\\([^0-9A-Za-z\s])/g,mo=/^[\s\S](?:(?! \n|[0-9]\.|http)[^=*_~\-\n:<`\\\[!])*/,go=/^\n+/,yo=/^([ \t]*)/,bo=/(?:^|\n)( *)$/,It="(?:\\d+\\.)",At="(?:[*+-])";function Rr(e){return"( *)("+(e===1?It:At)+") +"}const _r=Rr(1),Mr=Rr(2);function Nr(e){return RegExp("^"+(e===1?_r:Mr))}const xo=Nr(1),ko=Nr(2);function Or(e){return RegExp("^"+(e===1?_r:Mr)+"[^\\n]*(?:\\n(?!\\1"+(e===1?It:At)+" )[^\\n]*)*(\\n|$)","gm")}const vo=Or(1),wo=Or(2);function Pr(e){const t=e===1?It:At;return RegExp("^( *)("+t+") [\\s\\S]+?(?:\\n{2,}(?! )(?!\\1"+t+" (?!"+t+" ))\\n*|\\s*\\n*$)")}const Dr=Pr(1),zr=Pr(2);function rr(e,t){const r=t===1,n=r?Dr:zr,a=r?vo:wo,l=r?xo:ko;return{t:d=>l.test(d),o:ge(function(d,u){const h=bo.exec(u.prevCapture);return h&&(u.list||!u.inline&&!u.simple)?n.exec(d=h[1]+d):null}),i:1,u(d,u,h){const b=r?+d[2]:void 0,x=d[0].replace(Rn,`
|
|
11
11
|
`).match(a);let c=!1;return{items:x.map(function(S,$){const E=l.exec(S)[0].length,v=RegExp("^ {1,"+E+"}","gm"),C=S.replace(v,"").replace(l,""),o=$===x.length-1,s=C.indexOf(`
|
|
12
12
|
|
package/dist/index.esm.js
CHANGED
|
@@ -162,7 +162,11 @@ function Rn(e) {
|
|
|
162
162
|
}, [e.sessionId]), ze(() => {
|
|
163
163
|
(async () => {
|
|
164
164
|
const m = u || e.sessionId;
|
|
165
|
-
if (!
|
|
165
|
+
if (!m) {
|
|
166
|
+
i.current = !0, T(!1);
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
if (!i.current) {
|
|
166
170
|
$(!0);
|
|
167
171
|
try {
|
|
168
172
|
const k = await o.current.getSessionWithMessages(m);
|
package/package.json
CHANGED