UNPKG

ondemand-react-chat-bot

Version:

OnDemandChatBot is a React library that provides an easy-to-use AI-powered chatbot component for your application. Built on top of the OnDemand platform, it allows full customization and seamless AI integration.

3 lines (2 loc) 31.2 kB
import{jsxs as e,jsx as n}from"react/jsx-runtime";import*as r from"react";import{useState as t,useRef as o,useEffect as i}from"react";var a=function(){return a=Object.assign||function(e){for(var n,r=1,t=arguments.length;r<t;r++)for(var o in n=arguments[r])Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o]);return e},a.apply(this,arguments)};function s(e,n,r,t){return new(r||(r=Promise))((function(o,i){function a(e){try{l(t.next(e))}catch(e){i(e)}}function s(e){try{l(t.throw(e))}catch(e){i(e)}}function l(e){var n;e.done?o(e.value):(n=e.value,n instanceof r?n:new r((function(e){e(n)}))).then(a,s)}l((t=t.apply(e,n||[])).next())}))}function l(e,n){var r,t,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return a.next=s(0),a.throw=s(1),a.return=s(2),"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(s){return function(l){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;a&&(a=0,s[0]&&(i=0)),i;)try{if(r=1,t&&(o=2&s[0]?t.return:s[0]?t.throw||((o=t.return)&&o.call(t),0):t.next)&&!(o=o.call(t,s[1])).done)return o;switch(t=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return i.label++,{value:s[1],done:!1};case 5:i.label++,t=s[1],s=[0];continue;case 7:s=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){i=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){i.label=s[1];break}if(6===s[0]&&i.label<o[1]){i.label=o[1],o=s;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(s);break}o[2]&&i.ops.pop(),i.trys.pop();continue}s=n.call(e,i)}catch(e){s=[6,e],t=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,l])}}}function c(e,n,r){if(r||2===arguments.length)for(var t,o=0,i=n.length;o<i;o++)!t&&o in n||(t||(t=Array.prototype.slice.call(n,0,o)),t[o]=n[o]);return e.concat(t||Array.prototype.slice.call(n))}"function"==typeof SuppressedError&&SuppressedError;var u=function(r){var t=r.color;return e("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:t,strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",className:"lucide lucide-send-horizontal",children:[n("path",{d:"M3.714 3.048a.498.498 0 0 0-.683.627l2.843 7.627a2 2 0 0 1 0 1.396l-2.842 7.627a.498.498 0 0 0 .682.627l18-8.5a.5.5 0 0 0 0-.904z"}),n("path",{d:"M6 12h16"})]})},d=function(r){var t=r.color;return e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:t,"stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round",className:"lucide lucide-circle-x",children:[n("circle",{cx:"12",cy:"12",r:"10"}),n("path",{d:"m15 9-6 6"}),n("path",{d:"m9 9 6 6"})]})},p=function(r){var t=r.color;return e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:t,"stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",className:"lucide lucide-bot",children:[n("path",{d:"M12 8V4H8"}),n("rect",{width:"16",height:"12",x:"4",y:"8",rx:"2"}),n("path",{d:"M2 14h2"}),n("path",{d:"M20 14h2"}),n("path",{d:"M15 13v2"}),n("path",{d:"M9 13v2"})]})},h={"Analyzing the prompt...":"We're carefully reviewing your request.","Re-analyzing the prompt...":"Checking again to ensure everything is accurate!","Analysis failed":"We couldn't process your request. Please try again with more details.","Execution plan created":"We've mapped out the next steps for you.","Retrieved the agents":"We've found the right tools to assist you.","Executing the agents...":"Processing your request now...","Agents execution completed":"All done! Here's what we found for you.","Agents execution failed":"We ran into an issue while working on your request. Please try again.","Execution log created":"Your request details have been recorded for reference.","Fulfilling the prompt...":"Almost there! We're putting everything together.","Fulfillment completed":"Success! Your request has been completed.","Fulfillment failed":"We hit a snag while finishing up. Please try again or reach out for help."},f=function(e,n){e((function(e){return c(c([],e,!0),[a({message:"",isFetching:!1,id:Date.now().toString(),author:"bot",status:"loading"},n)],!1)}))},m=function(e,n){e((function(e){return c(c([],e.slice(0,-1),!0),[a(a({},e[e.length-1]),"function"==typeof n?n(e[e.length-1]):n)],!1)}))},g=function(e){return"dev"===e?"https://gateway-dev.on-demand.io":"https://api.on-demand.io"};function y(e,n,r,t){return s(this,void 0,void 0,(function(){var o,i,a,s,c,u;return l(this,(function(l){switch(l.label){case 0:return l.trys.push([0,3,,4]),o={pluginIds:[],externalUserId:"1",contextMetadata:t},i=g(n),[4,fetch("".concat(i,"/chat/v1/sessions"),{method:"POST",headers:{"Content-Type":"application/json","x-bot-id":r,apikey:e},body:JSON.stringify(o)})];case 1:if(!(a=l.sent()).ok)throw new Error("HTTP error! status: ".concat(a.status));return[4,a.json()];case 2:return s=l.sent(),[2,null===(u=null==s?void 0:s.data)||void 0===u?void 0:u.id];case 3:throw c=l.sent(),console.error("Failed to generate session:",c),c;case 4:return[2]}}))}))}function b(e,n,r){return s(this,void 0,void 0,(function(){var t,o,i;return l(this,(function(a){switch(a.label){case 0:return a.trys.push([0,3,,4]),t=g(r),[4,fetch("".concat(t,"/config/v1/public/embedded/chatbot/").concat(n),{method:"GET",headers:{"Content-Type":"application/json","x-bot-id":n,apikey:e}})];case 1:if(!(o=a.sent()).ok)throw new Error("HTTP error! status: ".concat(o.status));return[4,o.json()];case 2:return[2,a.sent().data];case 3:throw i=a.sent(),console.error("Failed to get bot configuration:",i),i;case 4:return[2]}}))}))}var v=function(r){var t=r.input,o=r.setInput,i=r.isInputDisabled,a=r.botConfig,s=r.onSubmit;return n("div",{className:"chat-input-container",children:e("form",{onSubmit:s,className:"chat-form",children:[n("input",{type:"text",value:t,disabled:i,onChange:function(e){return o(e.target.value)},placeholder:a.inputPlaceholder,className:"chat-input"}),n("button",{type:"submit",disabled:i||!t.trim(),className:"send-button",style:{background:a.primaryColor},children:n(u,{color:a.secondaryColor})})]})})};function k(){return k=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e},k.apply(this,arguments)}const w=["children","options"],x="0",C="1",E="2",S="3",I="4",M="5",T="6",N="7",A="8",z="9",$="10",O="11",L="12",P="13",j="14",F="15",R="16",W="17",q="18",D="19",B="20",H="21",U="22",_="23",V="24",G="25",Z="27",J="28",X="29",Y="30",K="31",Q="32",ee="33";var ne;!function(e){e[e.MAX=0]="MAX",e[e.HIGH=1]="HIGH",e[e.MED=2]="MED",e[e.LOW=3]="LOW",e[e.MIN=4]="MIN"}(ne||(ne={}));const re=["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,n)=>(e[n.toLowerCase()]=n,e)),{class:"className",for:"htmlFor"}),te={amp:"&",apos:"'",gt:">",lt:"<",nbsp:" ",quot:"“"},oe=["style","script"],ie=/([-A-Z0-9_:]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|(?:\{((?:\\.|{[^}]*?}|[^}])*)\})))?/gi,ae=/mailto:/i,se=/\n{2,}$/,le=/^(\s*>[\s\S]*?)(?=\n\n|$)/,ce=/^ *> ?/gm,ue=/^(?:\[!([^\]]*)\]\n)?([\s\S]*)/,de=/^ {2,}\n/,pe=/^(?:( *[-*_])){3,} *(?:\n *)+\n/,he=/^(?: {1,3})?(`{3,}|~{3,}) *(\S+)? *([^\n]*?)?\n([\s\S]*?)(?:\1\n?|$)/,fe=/^(?: {4}[^\n]+\n*)+(?:\n *)+\n?/,me=/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,ge=/^(?:\n *)*\n/,ye=/\r\n?/g,be=/^\[\^([^\]]+)](:(.*)((\n+ {4,}.*)|(\n(?!\[\^).+))*)/,ve=/^\[\^([^\]]+)]/,ke=/\f/g,we=/^---[ \t]*\n(.|\n)*\n---[ \t]*\n/,xe=/^\s*?\[(x|\s)\]/,Ce=/^ *(#{1,6}) *([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/,Ee=/^ *(#{1,6}) +([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/,Se=/^([^\n]+)\n *(=|-){3,} *(?:\n *)+\n/,Ie=/^ *(?!<[a-z][^ >/]* ?\/>)<([a-z][^ >/]*) ?((?:[^>]*[^/])?)>\n?(\s*(?:<\1[^>]*?>[\s\S]*?<\/\1>|(?!<\1\b)[\s\S])*?)<\/\1>(?!<\/\1>)\n*/i,Me=/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});/gi,Te=/^<!--[\s\S]*?(?:-->)/,Ne=/^(data|aria|x)-[a-z_][a-z\d_.-]*$/,Ae=/^ *<([a-z][a-z0-9:]*)(?:\s+((?:<.*?>|[^>])*))?\/?>(?!<\/\1>)(\s*\n)?/i,ze=/^\{.*\}$/,$e=/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,Oe=/^<([^ >]+@[^ >]+)>/,Le=/^<([^ >]+:\/[^ >]+)>/,Pe=/-([a-z])?/gi,je=/^(\|.*)\n(?: *(\|? *[-:]+ *\|[-| :]*)\n((?:.*\|.*\n)*))?\n?/,Fe=/^\[([^\]]*)\]:\s+<?([^\s>]+)>?\s*("([^"]*)")?/,Re=/^!\[([^\]]*)\] ?\[([^\]]*)\]/,We=/^\[([^\]]*)\] ?\[([^\]]*)\]/,qe=/(\n|^[-*]\s|^#|^ {2,}|^-{2,}|^>\s)/,De=/\t/g,Be=/(^ *\||\| *$)/g,He=/^ *:-+: *$/,Ue=/^ *:-+ *$/,_e=/^ *-+: *$/,Ve="((?:\\[.*?\\][([].*?[)\\]]|<.*?>(?:.*?<.*?>)?|`.*?`|~~.*?~~|==.*?==|.|\\n)*?)",Ge=new RegExp(`^([*_])\\1${Ve}\\1\\1(?!\\1)`),Ze=new RegExp(`^([*_])${Ve}\\1(?!\\1|\\w)`),Je=new RegExp(`^==${Ve}==`),Xe=new RegExp(`^~~${Ve}~~`),Ye=/^\\([^0-9A-Za-z\s])/,Ke=/^[\s\S]+?(?=[^0-9A-Z\s\u00c0-\uffff&#;.()'"]|\d+\.|\n\n| {2,}\n|\w+:\S|$)/i,Qe=/^\n+/,en=/^([ \t]*)/,nn=/\\([^\\])/g,rn=/ *\n+$/,tn=/(?:^|\n)( *)$/,on="(?:\\d+\\.)",an="(?:[*+-])";function sn(e){return"( *)("+(1===e?on:an)+") +"}const ln=sn(1),cn=sn(2);function un(e){return new RegExp("^"+(1===e?ln:cn))}const dn=un(1),pn=un(2);function hn(e){return new RegExp("^"+(1===e?ln:cn)+"[^\\n]*(?:\\n(?!\\1"+(1===e?on:an)+" )[^\\n]*)*(\\n|$)","gm")}const fn=hn(1),mn=hn(2);function gn(e){const n=1===e?on:an;return new RegExp("^( *)("+n+") [\\s\\S]+?(?:\\n{2,}(?! )(?!\\1"+n+" (?!"+n+" ))\\n*|\\s*\\n*$)")}const yn=gn(1),bn=gn(2);function vn(e,n){const r=1===n,t=r?yn:bn,o=r?fn:mn,i=r?dn:pn;return{match(e,n){const r=tn.exec(n.prevCapture);return r&&(n.list||!n.inline&&!n.simple)?t.exec(e=r[1]+e):null},order:1,parse(e,n,t){const a=r?+e[2]:void 0,s=e[0].replace(se,"\n").match(o);let l=!1;return{items:s.map((function(e,r){const o=i.exec(e)[0].length,a=new RegExp("^ {1,"+o+"}","gm"),c=e.replace(a,"").replace(i,""),u=r===s.length-1,d=-1!==c.indexOf("\n\n")||u&&l;l=d;const p=t.inline,h=t.list;let f;t.list=!0,d?(t.inline=!1,f=c.replace(rn,"\n\n")):(t.inline=!0,f=c.replace(rn,""));const m=n(f,t);return t.inline=p,t.list=h,m})),ordered:r,start:a}},render:(n,r,t)=>e(n.ordered?"ol":"ul",{key:t.key,start:n.type===B?n.start:void 0},n.items.map((function(n,o){return e("li",{key:o},r(n,t))})))}}const kn=new RegExp("^\\[((?:\\[[^\\]]*\\]|[^\\[\\]]|\\](?=[^\\[]*\\]))*)\\]\\(\\s*<?((?:\\([^)]*\\)|[^\\s\\\\]|\\\\.)*?)>?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*\\)"),wn=/^!\[(.*?)\]\( *((?:\([^)]*\)|[^() ])*) *"?([^)"]*)?"?\)/,xn=[le,he,fe,Ce,Se,Ee,Te,je,fn,yn,mn,bn],Cn=[...xn,/^[^\n]+(?: \n|\n{2,})/,Ie,Ae];function En(e){return e.replace(/[ÀÁÂÃÄÅàáâãä忯]/g,"a").replace(/[çÇ]/g,"c").replace(/[ðÐ]/g,"d").replace(/[ÈÉÊËéèêë]/g,"e").replace(/[ÏïÎîÍíÌì]/g,"i").replace(/[Ññ]/g,"n").replace(/[øØœŒÕõÔôÓóÒò]/g,"o").replace(/[ÜüÛûÚúÙù]/g,"u").replace(/[ŸÿÝý]/g,"y").replace(/[^a-z0-9- ]/gi,"").replace(/ /gi,"-").toLowerCase()}function Sn(e){return _e.test(e)?"right":He.test(e)?"center":Ue.test(e)?"left":null}function In(e,n,r,t){const o=r.inTable;r.inTable=!0;let i=[[]],a="";function s(){if(!a)return;const e=i[i.length-1];e.push.apply(e,n(a,r)),a=""}return e.trim().split(/(`[^`]*`|\\\||\|)/).filter(Boolean).forEach(((e,n,r)=>{"|"===e.trim()&&(s(),t)?0!==n&&n!==r.length-1&&i.push([]):a+=e})),s(),r.inTable=o,i}function Mn(e,n,r){r.inline=!0;const t=e[2]?e[2].replace(Be,"").split("|").map(Sn):[],o=e[3]?function(e,n,r){return e.trim().split("\n").map((function(e){return In(e,n,r,!0)}))}(e[3],n,r):[],i=In(e[1],n,r,!!o.length);return r.inline=!1,o.length?{align:t,cells:o,header:i,type:G}:{children:i,type:H}}function Tn(e,n){return null==e.align[n]?{}:{textAlign:e.align[n]}}function Nn(e){return function(n,r){return r.inline?e.exec(n):null}}function An(e){return function(n,r){return r.inline||r.simple?e.exec(n):null}}function zn(e){return function(n,r){return r.inline||r.simple?null:e.exec(n)}}function $n(e){return function(n){return e.exec(n)}}function On(e,n){if(n.inline||n.simple)return null;let r="";e.split("\n").every((e=>(e+="\n",!xn.some((n=>n.test(e)))&&(r+=e,!!e.trim()))));const t=r.trimEnd();return""==t?null:[r,t]}function Ln(e){try{if(decodeURIComponent(e).replace(/[^A-Za-z0-9/:]/g,"").match(/^\s*(javascript|vbscript|data(?!:image)):/i))return null}catch(e){return null}return e}function Pn(e){return e.replace(nn,"$1")}function jn(e,n,r){const t=r.inline||!1,o=r.simple||!1;r.inline=!0,r.simple=!0;const i=e(n,r);return r.inline=t,r.simple=o,i}function Fn(e,n,r){const t=r.inline||!1,o=r.simple||!1;r.inline=!1,r.simple=!0;const i=e(n,r);return r.inline=t,r.simple=o,i}function Rn(e,n,r){const t=r.inline||!1;r.inline=!1;const o=e(n,r);return r.inline=t,o}const Wn=(e,n,r)=>({children:jn(n,e[1],r)});function qn(){return{}}function Dn(){return null}function Bn(...e){return e.filter(Boolean).join(" ")}function Hn(e,n,r){let t=e;const o=n.split(".");for(;o.length&&(t=t[o[0]],void 0!==t);)o.shift();return t||r}function Un(e="",n={}){function t(e,r,...t){const o=Hn(n.overrides,`${e}.props`,{});return n.createElement(function(e,n){const r=Hn(n,e);return r?"function"==typeof r||"object"==typeof r&&"render"in r?r:Hn(n,`${e}.component`,e):e}(e,n.overrides),k({},r,o,{className:Bn(null==r?void 0:r.className,o.className)||void 0}),...t)}function o(e){e=e.replace(we,"");let r=!1;n.forceInline?r=!0:n.forceBlock||(r=!1===qe.test(e));const o=u(c(r?e:`${e.trimEnd().replace(Qe,"")}\n\n`,{inline:r}));for(;"string"==typeof o[o.length-1]&&!o[o.length-1].trim();)o.pop();if(null===n.wrapper)return o;const i=n.wrapper||(r?"span":"div");let a;if(o.length>1||n.forceWrapper)a=o;else{if(1===o.length)return a=o[0],"string"==typeof a?t("span",{key:"outer"},a):a;a=null}return n.createElement(i,{key:"outer"},a)}function i(e,r){const t=r.match(ie);return t?t.reduce((function(r,t){const i=t.indexOf("=");if(-1!==i){const a=function(e){return-1!==e.indexOf("-")&&null===e.match(Ne)&&(e=e.replace(Pe,(function(e,n){return n.toUpperCase()}))),e}(t.slice(0,i)).trim(),s=function(e){const n=e[0];return('"'===n||"'"===n)&&e.length>=2&&e[e.length-1]===n?e.slice(1,-1):e}(t.slice(i+1).trim()),l=re[a]||a;if("ref"===l)return r;const c=r[l]=function(e,n,r,t){return"style"===n?r.split(/;\s?/).reduce((function(e,n){const r=n.slice(0,n.indexOf(":"));return e[r.trim().replace(/(-[a-z])/g,(e=>e[1].toUpperCase()))]=n.slice(r.length+1).trim(),e}),{}):"href"===n||"src"===n?t(r,e,n):(r.match(ze)&&(r=r.slice(1,r.length-1)),"true"===r||"false"!==r&&r)}(e,a,s,n.sanitizer);"string"==typeof c&&(Ie.test(c)||Ae.test(c))&&(r[l]=o(c.trim()))}else"style"!==t&&(r[re[t]||t]=!0);return r}),{}):null}n.overrides=n.overrides||{},n.sanitizer=n.sanitizer||Ln,n.slugify=n.slugify||En,n.namedCodesToUnicode=n.namedCodesToUnicode?k({},te,n.namedCodesToUnicode):te,n.createElement=n.createElement||r.createElement;const a=[],s={},l={[x]:{match:zn(le),order:1,parse(e,n,r){const[,t,o]=e[0].replace(ce,"").match(ue);return{alert:t,children:n(o,r)}},render(e,r,o){const i={key:o.key};return e.alert&&(i.className="markdown-alert-"+n.slugify(e.alert.toLowerCase(),En),e.children.unshift({attrs:{},children:[{type:Z,text:e.alert}],noInnerParse:!0,type:O,tag:"header"})),t("blockquote",i,r(e.children,o))}},[C]:{match:$n(de),order:1,parse:qn,render:(e,n,r)=>t("br",{key:r.key})},[E]:{match:zn(pe),order:1,parse:qn,render:(e,n,r)=>t("hr",{key:r.key})},[S]:{match:zn(fe),order:0,parse:e=>({lang:void 0,text:e[0].replace(/^ {4}/gm,"").replace(/\n+$/,"")}),render:(e,n,r)=>t("pre",{key:r.key},t("code",k({},e.attrs,{className:e.lang?`lang-${e.lang}`:""}),e.text))},[I]:{match:zn(he),order:0,parse:e=>({attrs:i("code",e[3]||""),lang:e[2]||void 0,text:e[4],type:S})},[M]:{match:An(me),order:3,parse:e=>({text:e[2]}),render:(e,n,r)=>t("code",{key:r.key},e.text)},[T]:{match:zn(be),order:0,parse:e=>(a.push({footnote:e[2],identifier:e[1]}),{}),render:Dn},[N]:{match:Nn(ve),order:1,parse:e=>({target:`#${n.slugify(e[1],En)}`,text:e[1]}),render:(e,r,o)=>t("a",{key:o.key,href:n.sanitizer(e.target,"a","href")},t("sup",{key:o.key},e.text))},[A]:{match:Nn(xe),order:1,parse:e=>({completed:"x"===e[1].toLowerCase()}),render:(e,n,r)=>t("input",{checked:e.completed,key:r.key,readOnly:!0,type:"checkbox"})},[z]:{match:zn(n.enforceAtxHeadings?Ee:Ce),order:1,parse:(e,r,t)=>({children:jn(r,e[2],t),id:n.slugify(e[2],En),level:e[1].length}),render:(e,n,r)=>t(`h${e.level}`,{id:e.id,key:r.key},n(e.children,r))},[$]:{match:zn(Se),order:0,parse:(e,n,r)=>({children:jn(n,e[1],r),level:"="===e[2]?1:2,type:z})},[O]:{match:$n(Ie),order:1,parse(e,n,r){const[,t]=e[3].match(en),o=new RegExp(`^${t}`,"gm"),a=e[3].replace(o,""),s=(l=a,Cn.some((e=>e.test(l)))?Rn:jn);var l;const c=e[1].toLowerCase(),u=-1!==oe.indexOf(c),d=(u?c:e[1]).trim(),p={attrs:i(d,e[2]),noInnerParse:u,tag:d};return r.inAnchor=r.inAnchor||"a"===c,u?p.text=e[3]:p.children=s(n,a,r),r.inAnchor=!1,p},render:(e,n,r)=>t(e.tag,k({key:r.key},e.attrs),e.text||(e.children?n(e.children,r):""))},[P]:{match:$n(Ae),order:1,parse(e){const n=e[1].trim();return{attrs:i(n,e[2]||""),tag:n}},render:(e,n,r)=>t(e.tag,k({},e.attrs,{key:r.key}))},[L]:{match:$n(Te),order:1,parse:()=>({}),render:Dn},[j]:{match:An(wn),order:1,parse:e=>({alt:e[1],target:Pn(e[2]),title:e[3]}),render:(e,r,o)=>t("img",{key:o.key,alt:e.alt||void 0,title:e.title||void 0,src:n.sanitizer(e.target,"img","src")})},[F]:{match:Nn(kn),order:3,parse:(e,n,r)=>({children:Fn(n,e[1],r),target:Pn(e[2]),title:e[3]}),render:(e,r,o)=>t("a",{key:o.key,href:n.sanitizer(e.target,"a","href"),title:e.title},r(e.children,o))},[R]:{match:Nn(Le),order:0,parse:e=>({children:[{text:e[1],type:Z}],target:e[1],type:F})},[W]:{match:(e,r)=>r.inAnchor||n.disableAutoLink?null:Nn($e)(e,r),order:0,parse:e=>({children:[{text:e[1],type:Z}],target:e[1],title:void 0,type:F})},[q]:{match:Nn(Oe),order:0,parse(e){let n=e[1],r=e[1];return ae.test(r)||(r="mailto:"+r),{children:[{text:n.replace("mailto:",""),type:Z}],target:r,type:F}}},[B]:vn(t,1),[ee]:vn(t,2),[D]:{match:zn(ge),order:3,parse:qn,render:()=>"\n"},[H]:{match:On,order:3,parse:Wn,render:(e,n,r)=>t("p",{key:r.key},n(e.children,r))},[U]:{match:Nn(Fe),order:0,parse:e=>(s[e[1]]={target:e[2],title:e[4]},{}),render:Dn},[_]:{match:An(Re),order:0,parse:e=>({alt:e[1]||void 0,ref:e[2]}),render:(e,r,o)=>s[e.ref]?t("img",{key:o.key,alt:e.alt,src:n.sanitizer(s[e.ref].target,"img","src"),title:s[e.ref].title}):null},[V]:{match:Nn(We),order:0,parse:(e,n,r)=>({children:n(e[1],r),fallbackChildren:e[0],ref:e[2]}),render:(e,r,o)=>s[e.ref]?t("a",{key:o.key,href:n.sanitizer(s[e.ref].target,"a","href"),title:s[e.ref].title},r(e.children,o)):t("span",{key:o.key},e.fallbackChildren)},[G]:{match:zn(je),order:1,parse:Mn,render(e,n,r){const o=e;return t("table",{key:r.key},t("thead",null,t("tr",null,o.header.map((function(e,i){return t("th",{key:i,style:Tn(o,i)},n(e,r))})))),t("tbody",null,o.cells.map((function(e,i){return t("tr",{key:i},e.map((function(e,i){return t("td",{key:i,style:Tn(o,i)},n(e,r))})))}))))}},[Z]:{match:$n(Ke),order:4,parse:e=>({text:e[0].replace(Me,((e,r)=>n.namedCodesToUnicode[r]?n.namedCodesToUnicode[r]:e))}),render:e=>e.text},[J]:{match:An(Ge),order:2,parse:(e,n,r)=>({children:n(e[2],r)}),render:(e,n,r)=>t("strong",{key:r.key},n(e.children,r))},[X]:{match:An(Ze),order:3,parse:(e,n,r)=>({children:n(e[2],r)}),render:(e,n,r)=>t("em",{key:r.key},n(e.children,r))},[Y]:{match:An(Ye),order:1,parse:e=>({text:e[1],type:Z})},[K]:{match:An(Je),order:3,parse:Wn,render:(e,n,r)=>t("mark",{key:r.key},n(e.children,r))},[Q]:{match:An(Xe),order:3,parse:Wn,render:(e,n,r)=>t("del",{key:r.key},n(e.children,r))}};!0===n.disableParsingRawHTML&&(delete l[O],delete l[P]);const c=function(e){let n=Object.keys(e);function r(t,o){let i=[];for(o.prevCapture=o.prevCapture||"";t;){let a=0;for(;a<n.length;){const s=n[a],l=e[s],c=l.match(t,o);if(c){const e=c[0];o.prevCapture+=e,t=t.substring(e.length);const n=l.parse(c,r,o);null==n.type&&(n.type=s),i.push(n);break}a++}}return o.prevCapture="",i}return n.sort((function(n,r){let t=e[n].order,o=e[r].order;return t!==o?t-o:n<r?-1:1})),function(e,n){return r(function(e){return e.replace(ye,"\n").replace(ke,"").replace(De," ")}(e),n)}}(l),u=(d=function(e,n){return function(r,t,o){const i=e[r.type].render;return n?n((()=>i(r,t,o)),r,t,o):i(r,t,o)}}(l,n.renderRule),function e(n,r={}){if(Array.isArray(n)){const t=r.key,o=[];let i=!1;for(let t=0;t<n.length;t++){r.key=t;const a=e(n[t],r),s="string"==typeof a;s&&i?o[o.length-1]+=a:null!==a&&o.push(a),i=s}return r.key=t,o}return d(n,e,r)});var d;const p=o(e);return a.length?t("div",null,p,t("footer",{key:"footer"},a.map((function(e){return t("div",{id:n.slugify(e.identifier,En),key:e.identifier},e.identifier,u(c(e.footnote,{inline:!0})))})))):p}var _n=e=>{let{children:n="",options:t}=e,o=function(e,n){if(null==e)return{};var r,t,o={},i=Object.keys(e);for(t=0;t<i.length;t++)n.indexOf(r=i[t])>=0||(o[r]=e[r]);return o}(e,w);return r.cloneElement(Un(n,t),o)},Vn=function(r){var t=r.message,o=r.botConfig,i=r.messageRef;return n("div",{ref:i,className:"message-wrapper ".concat("user"===t.author?"user":"ai"),children:e("div",{className:"message ".concat("user"===t.author?"user":"ai"," "),style:{background:"user"===t.author?o.primaryColor:"primaryColor",color:"user"===t.author?o.secondaryColor:""},children:[t.isFetching&&n("div",{className:"loader"}),n(_n,{className:"loading"===t.status?"shine":"",children:t.message})]})})};!function(e,n){void 0===n&&(n={});var r=n.insertAt;if("undefined"!=typeof document){var t=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===r&&t.firstChild?t.insertBefore(o,t.firstChild):t.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}("* {\r\n font-family: sans-serif;\r\n}\r\n.ai-chat-container {\r\n position: fixed;\r\n bottom: 1rem;\r\n right: 1rem;\r\n z-index: 50;\r\n}\r\n\r\n.help-button {\r\n cursor: pointer;\r\n background-color: black;\r\n color: #000000;\r\n border-width: 0;\r\n padding: 0.8rem 0.8rem;\r\n color: white;\r\n border-radius: 9999px;\r\n transition: background-color 0.3s;\r\n}\r\n\r\n.chat-window {\r\n display: flex;\r\n flex-direction: column;\r\n height: 35rem;\r\n width: 25rem;\r\n background-color: white;\r\n border-radius: 0.5rem;\r\n box-shadow: 0 10px 15px rgba(0, 0, 0, 0.1);\r\n}\r\n\r\n.chat-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n background-color: black;\r\n height: 3.5rem;\r\n padding: 0 0.5rem;\r\n border-top-left-radius: 0.5rem;\r\n border-top-right-radius: 0.5rem;\r\n color: white;\r\n}\r\n\r\n.cancel {\r\n cursor: pointer;\r\n color: white;\r\n border-width: 0;\r\n background: transparent;\r\n}\r\n\r\n.messages-container {\r\n flex: 1;\r\n overflow-y: auto;\r\n padding: 1rem;\r\n scroll-behavior: smooth;\r\n}\r\n\r\n.messages-container::-webkit-scrollbar {\r\n width: 6px;\r\n}\r\n\r\n.messages-container::-webkit-scrollbar-track {\r\n background: transparent;\r\n}\r\n\r\n.messages-container::-webkit-scrollbar-thumb {\r\n background-color: rgba(0, 0, 0, 0.2);\r\n border-radius: 3px;\r\n}\r\n\r\n.message-wrapper {\r\n display: flex;\r\n margin-bottom: 1rem;\r\n}\r\n\r\n.message-wrapper.user {\r\n justify-content: flex-end;\r\n}\r\n\r\n.message-wrapper.ai {\r\n justify-content: flex-start;\r\n}\r\n\r\n.message {\r\n max-width: 80%;\r\n padding: 0.75rem;\r\n border-radius: 0.5rem;\r\n font-size: 1rem;\r\n line-height: 1.4;\r\n letter-spacing: 0ch;\r\n}\r\n\r\n.message.user {\r\n background-color: #000000;\r\n color: white;\r\n}\r\n\r\n.message.ai {\r\n background-color: #f3f4f6;\r\n color: #1f2937;\r\n}\r\n\r\n.welcome-message {\r\n padding: 0.2rem 1rem;\r\n font-size: 1rem;\r\n font-weight: 500;\r\n color: #0d0d0d52;\r\n}\r\n\r\n.welcome-message span {\r\n font-weight: 600;\r\n color: #adedd5;\r\n}\r\n\r\n.chat-input-container {\r\n border-top: 1px solid #e5e7eb;\r\n padding: 1rem;\r\n}\r\n\r\n.chat-form {\r\n display: flex;\r\n gap: 0.5rem;\r\n}\r\n\r\n.chat-input {\r\n flex: 1;\r\n padding: 0.75rem;\r\n border: 1px solid #1e1e1e18;\r\n border-radius: 0.5rem;\r\n font-size: 0.875rem;\r\n transition: border-color 0.3s;\r\n}\r\n\r\n.chat-input:focus {\r\n outline: none;\r\n box-shadow: 0 0 0 2px rgba(173, 237, 213, 0.2);\r\n}\r\n\r\n.chat-input:disabled {\r\n background-color: #f3f4f6;\r\n cursor: not-allowed;\r\n}\r\n\r\n.send-button {\r\n border-width: 0;\r\n color: white;\r\n padding: 0.5rem 0.75rem;\r\n border-radius: 0.5rem;\r\n transition: background-color 0.3s;\r\n cursor: pointer;\r\n}\r\n\r\n.send-button:disabled {\r\n opacity: 0.7;\r\n cursor: not-allowed;\r\n}\r\n\r\n.loader {\r\n width: 20px;\r\n aspect-ratio: 2;\r\n --_g: no-repeat radial-gradient(circle closest-side, #000 90%, #0000);\r\n background: var(--_g) 0% 50%, var(--_g) 50% 50%, var(--_g) 100% 50%;\r\n background-size: calc(100% / 3) 50%;\r\n animation: l3 1s infinite linear;\r\n}\r\n@keyframes l3 {\r\n 20% {\r\n background-position: 0% 0%, 50% 50%, 100% 50%;\r\n }\r\n 40% {\r\n background-position: 0% 100%, 50% 0%, 100% 50%;\r\n }\r\n 60% {\r\n background-position: 0% 50%, 50% 100%, 100% 0%;\r\n }\r\n 80% {\r\n background-position: 0% 50%, 50% 50%, 100% 100%;\r\n }\r\n}\r\n\r\n.shine {\r\n font-size: 0.8rem;\r\n animation: blink 2s linear infinite;\r\n}\r\n\r\n@keyframes blink {\r\n 0% {\r\n opacity: 0.4;\r\n }\r\n 50% {\r\n opacity: 0.8;\r\n }\r\n 100% {\r\n opacity: 0.4;\r\n }\r\n}\r\n");var Gn=function(r){var a=r.environment,c=void 0===a?"prod":a,u=r.apiKey,k=r.botId,w=r.contextVariables,x=t(!1),C=x[0],E=x[1],S=t([]),I=S[0],M=S[1],T=t(!1),N=T[0],A=T[1],z=t(""),$=z[0],O=z[1],L=t(""),P=L[0],j=L[1],F=t(),R=F[0],W=F[1],q=function(e){return{sendMessage:function(n){return s(void 0,[n],void 0,(function(n){var r,t,o,i,a,s,c,u,d,p,b,v,k,w,x,C,E,S,I,M,T,N,A=n.environment,z=n.modelEndpointId,$=n.input,O=n.setMessages,L=n.sessionId,P=n.setInput,j=n.setIsInputDisabled,F=n.setSessionId,R=n.moreAddedAgents,W=n.fulfillmentPrompt,q=n.contextVariables,D=n.botId,B=n.reasoningMode;return l(this,(function(n){switch(n.label){case 0:if(!$)return[2];f(O,{message:$,author:"user",isFetching:!1,id:Date.now().toString(),status:"complete"}),f(O,{author:"bot",isFetching:!0,status:"loading"}),j(!0),P(""),n.label=1;case 1:return n.trys.push([1,8,9,10]),(r=L)?[3,3]:[4,y(e,A,D,q)];case 2:t=n.sent(),F(r=t),n.label=3;case 3:return o={endpointId:z,query:$,pluginIds:R,responseMode:"stream",debugMode:"on",reasoningMode:B,modelConfigs:{frequencyPenalty:0,fulfillmentPrompt:W,presencePenalty:0,stopTokens:[],temperature:.3,topP:.9}},i=g(A),[4,fetch("".concat(i,"/chat/v1/sessions/").concat(r,"/query"),{method:"POST",headers:{"Content-Type":"application/json","x-bot-id":D,apikey:e},body:JSON.stringify(o)})];case 4:if(!(a=n.sent()).ok)throw new Error("Request failed with status ".concat(a.status));if(!(s=null===(I=a.body)||void 0===I?void 0:I.getReader()))throw new Error("Response stream is not available.");c=new TextDecoder("utf-8"),u="",d=!1,n.label=5;case 5:return d?[3,7]:[4,s.read()];case 6:if(p=n.sent(),b=p.done,v=p.value,b)return[3,7];for(u+=c.decode(v,{stream:!0}),k=u.split("\n\n"),u=null!==(M=k.pop())&&void 0!==M?M:"",w=function(e){var n=e.split("\n").map((function(e){return e.trim()})).filter(Boolean);if(!n.length)return"continue";var r,t=null!==(N=null===(T=n.find((function(e){return e.startsWith("event:")})))||void 0===T?void 0:T.replace("event:","").trim())&&void 0!==N?N:"message",o=n.filter((function(e){return e.startsWith("data:")})).map((function(e){return e.replace("data:","").trim()})).join("\n");if(!o)return"continue";if("[DONE]"===o)return d=!0,"break";try{r=JSON.parse(o)}catch(e){return"continue"}if("heartbeat"===t)return"continue";"statusLog"===r.eventType&&"Fulfillment completed"!==r.currentStatusLog.statusMessage?m(O,{message:h[r.currentStatusLog.statusMessage],isFetching:!1,status:"loading"}):"fulfillment"===r.eventType?m(O,(function(e){return{message:"loading"===(null==e?void 0:e.status)?r.answer:e.message+r.answer,status:"streaming",isFetching:!1}})):"statusLog"===r.eventType&&"Fulfillment completed"===r.currentStatusLog.statusMessage&&m(O,(function(e){var n,t;return{message:null!==(t=null!==(n=null==e?void 0:e.message)&&void 0!==n?n:r.currentStatusLog.answer)&&void 0!==t?t:"",status:"complete",isFetching:!1}}))},x=0,C=k;x<C.length&&(E=C[x],"break"!==w(E));x++);return[3,5];case 7:return[3,10];case 8:return S=n.sent(),console.error("Error sending message:",S),m(O,{message:"An error occurred while processing your request.",status:"error",isFetching:!1}),[3,10];case 9:return j(!1),[7];case 10:return[2]}}))}))}}}(u).sendMessage,D=o(null),B=o(null),H=function(e){D.current&&!D.current.contains(e.target)&&E(!1)};return i((function(){s(void 0,void 0,void 0,(function(){var e;return l(this,(function(n){switch(n.label){case 0:return[4,b(u,k,c)];case 1:return e=n.sent(),W(e),0===I.length&&M([{message:e.introductoryMessage,author:"bot",isFetching:!1,id:Date.now().toString(),status:"complete"}]),[2]}}))}))}),[]),i((function(){return C?(document.body.style.overflow="hidden",document.addEventListener("mousedown",H),function(){document.body.style.overflow="",document.removeEventListener("mousedown",H)}):(document.body.style.overflow="",void document.removeEventListener("mousedown",H))}),[C]),R?n("div",{className:"ai-chat-container",children:C?e("div",{ref:D,className:"chat-window",children:[e("div",{className:"chat-header",style:{background:R.primaryColor},children:[n("img",{src:R.logoUrl,style:{height:"2rem",paddingLeft:"0.5rem"},alt:"Bot Logo"}),n("button",{onClick:function(){return E(!1)},className:"cancel",children:n(d,{color:R.secondaryColor})})]}),n("div",{className:"messages-container",children:I.map((function(e){return n(Vn,{message:e,botConfig:R,messageRef:B},e.id)}))}),n(v,{input:$,setInput:O,isInputDisabled:N,botConfig:R,onSubmit:function(e){return s(void 0,void 0,void 0,(function(){var n,r;return l(this,(function(t){switch(t.label){case 0:return e.preventDefault(),$.trim()?(null===(n=B.current)||void 0===n||n.scrollIntoView({behavior:"smooth"}),[4,q({input:$,sessionId:P,setMessages:M,messages:I,setInput:O,setIsInputDisabled:A,setSessionId:j,moreAddedAgents:null==R?void 0:R.chatPluginIds,fulfillmentPrompt:null==R?void 0:R.fulfillmentPrompt,modelEndpointId:null==R?void 0:R.modelEndpointId,reasoningMode:null!==(r=null==R?void 0:R.reasoningMode)&&void 0!==r?r:"low",environment:c,botId:k,contextVariables:w})]):[2];case 1:return t.sent(),O(""),[2]}}))}))}})]}):n("button",{onClick:function(){return E(!0)},className:"help-button",style:{background:R.primaryColor,color:R.secondaryColor},children:n(p,{color:R.secondaryColor})})}):null};export{Gn as OnDemandChatBot}; //# sourceMappingURL=index.mjs.map