@vemly/sdk 0.1.2 → 0.1.3
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/dist/index.global.js +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
package/dist/index.global.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(){var e,t,n,i,r,l,s,o,a,c,u={},h=[],f=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,d=Array.isArray;function p(e,t){for(var n in t)e[n]=t[n];return e}function m(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function y(t,n,i){var r,l,s,o={};for(s in n)"key"==s?r=n[s]:"ref"==s?l=n[s]:o[s]=n[s];if(arguments.length>2&&(o.children=arguments.length>3?e.call(arguments,2):i),"function"==typeof t&&null!=t.defaultProps)for(s in t.defaultProps)void 0===o[s]&&(o[s]=t.defaultProps[s]);return v(t,o,r,l,null)}function v(e,i,r,l,s){var o={type:e,props:i,key:r,ref:l,o:null,h:null,p:0,m:null,v:void 0,k:null,constructor:void 0,_:s??++n,$:-1,S:0};return null==s&&null!=t.vnode&&t.vnode(o),o}function g(e){return e.children}function b(e,t){this.props=e,this.context=t}function x(e,t){if(null==t)return e.h?x(e.h,e.$+1):null;for(var n;t<e.o.length;t++)if(null!=(n=e.o[t])&&null!=n.m)return n.m;return"function"==typeof e.type?x(e):null}function w(e){var t,n;if(null!=(e=e.h)&&null!=e.k){for(e.m=e.k.base=null,t=0;t<e.o.length;t++)if(null!=(n=e.o[t])&&null!=n.m){e.m=e.k.base=n.m;break}return w(e)}}function k(e){(!e.v&&(e.v=!0)&&i.push(e)&&!_.N++||r!==t.debounceRendering)&&((r=t.debounceRendering)||l)(_)}function _(){var e,n,r,l,o,a,c,u;for(i.sort(s);e=i.shift();)e.v&&(n=i.length,l=void 0,a=(o=(r=e)._).m,c=[],u=[],r.A&&((l=p({},o))._=o._+1,t.vnode&&t.vnode(l),I(r.A,l,o,r.T,r.A.namespaceURI,32&o.S?[a]:null,c,a??x(o),!!(32&o.S),u),l._=o._,l.h.o[l.$]=l,M(c,l,u),l.m!=a&&w(l)),i.length>n&&i.sort(s));_.N=0}function $(e,t,n,i,r,l,s,o,a,c,f){var p,m,y,b,w,k=i&&i.o||h,_=t.length;for(n.v=a,function(e,t,n){var i,r,l,s,o,a=t.length,c=n.length,u=c,h=0;for(e.o=[],i=0;i<a;i++)null!=(r=t[i])&&"boolean"!=typeof r&&"function"!=typeof r?(s=i+h,(r=e.o[i]="string"==typeof r||"number"==typeof r||"bigint"==typeof r||r.constructor==String?v(null,r,null,null,null):d(r)?v(g,{children:r},null,null,null):void 0===r.constructor&&r.p>0?v(r.type,r.props,r.key,r.ref?r.ref:null,r._):r).h=e,r.p=e.p+1,l=null,-1!==(o=r.$=N(r,n,s,u))&&(u--,(l=n[o])&&(l.S|=131072)),null==l||null===l._?(-1==o&&h--,"function"!=typeof r.type&&(r.S|=65536)):o!==s&&(o==s-1?h--:o==s+1?h++:(o>s?h--:h++,r.S|=65536))):r=e.o[i]=null;if(u)for(i=0;i<c;i++)null!=(l=n[i])&&!(131072&l.S)&&(l.m==e.v&&(e.v=x(l)),Z(l,l))}(n,t,k),a=n.v,p=0;p<_;p++)null!=(y=n.o[p])&&(m=-1===y.$?u:k[y.$]||u,y.$=p,I(e,y,m,r,l,s,o,a,c,f),b=y.m,y.ref&&m.ref!=y.ref&&(m.ref&&E(m.ref,null,y),f.push(y.ref,y.k||b,y)),null==w&&null!=b&&(w=b),65536&y.S||m.o===y.o?a=S(y,a,e):"function"==typeof y.type&&void 0!==y.v?a=y.v:b&&(a=b.nextSibling),y.v=void 0,y.S&=-196609);n.v=a,n.m=w}function S(e,t,n){var i,r;if("function"==typeof e.type){for(i=e.o,r=0;i&&r<i.length;r++)i[r]&&(i[r].h=e,t=S(i[r],t,n));return t}e.m!=t&&(t&&e.type&&!n.contains(t)&&(t=x(e)),n.insertBefore(e.m,t||null),t=e.m);do{t=t&&t.nextSibling}while(null!=t&&8===t.nodeType);return t}function z(e,t){return t=t||[],null==e||"boolean"==typeof e||(d(e)?e.some(function(e){z(e,t)}):t.push(e)),t}function N(e,t,n,i){var r=e.key,l=e.type,s=n-1,o=n+1,a=t[n];if(null===a||a&&r==a.key&&l===a.type&&!(131072&a.S))return n;if(i>(null==a||131072&a.S?0:1))for(;s>=0||o<t.length;){if(s>=0){if((a=t[s])&&!(131072&a.S)&&r==a.key&&l===a.type)return s;s--}if(o<t.length){if((a=t[o])&&!(131072&a.S)&&r==a.key&&l===a.type)return o;o++}}return-1}function A(e,t,n){"-"===t[0]?e.setProperty(t,n??""):e[t]=null==n?"":"number"!=typeof n||f.test(t)?n:n+"px"}function T(e,t,n,i,r){var l;e:if("style"===t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof i&&(e.style.cssText=i=""),i)for(t in i)n&&t in n||A(e.style,t,"");if(n)for(t in n)i&&n[t]===i[t]||A(e.style,t,n[t])}else if("o"===t[0]&&"n"===t[1])l=t!==(t=t.replace(/(PointerCapture)$|Capture$/i,"$1")),t=t.toLowerCase()in e||"onFocusOut"===t||"onFocusIn"===t?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+l]=n,n?i?n.u=i.u:(n.u=o,e.addEventListener(t,l?c:a,l)):e.removeEventListener(t,l?c:a,l);else{if("http://www.w3.org/2000/svg"==r)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("width"!=t&&"height"!=t&&"href"!=t&&"list"!=t&&"form"!=t&&"tabIndex"!=t&&"download"!=t&&"rowSpan"!=t&&"colSpan"!=t&&"role"!=t&&"popover"!=t&&t in e)try{e[t]=n??"";break e}catch{}"function"==typeof n||(null==n||!1===n&&"-"!==t[4]?e.removeAttribute(t):e.setAttribute(t,"popover"==t&&1==n?"":n))}}function C(e){return function(n){if(this.l){var i=this.l[n.type+e];if(null==n.t)n.t=o++;else if(n.t<i.u)return;return i(t.event?t.event(n):n)}}}function I(n,i,r,l,s,o,a,c,h,f){var y,v,w,k,_,S,z,N,A,C,I,M,E,Z,q,R,D=i.type;if(void 0!==i.constructor)return null;128&r.S&&(h=!!(32&r.S),o=[c=i.m=r.m]),(y=t.p)&&y(i);e:if("function"==typeof D)try{if(N=i.props,A="prototype"in D&&D.prototype.render,C=(y=D.contextType)&&l[y.k],I=y?C?C.props.value:y.h:l,r.k?z=(v=i.k=r.k).h=v.C:(A?i.k=v=new D(N,I):(i.k=v=new b(N,I),v.constructor=D,v.render=j),C&&C.sub(v),v.props=N,v.state||(v.state={}),v.context=I,v.T=l,w=v.v=!0,v.I=[],v.M=[]),A&&null==v.Z&&(v.Z=v.state),A&&null!=D.getDerivedStateFromProps&&(v.Z==v.state&&(v.Z=p({},v.Z)),p(v.Z,D.getDerivedStateFromProps(N,v.Z))),k=v.props,_=v.state,v._=i,w)A&&null==D.getDerivedStateFromProps&&null!=v.componentWillMount&&v.componentWillMount(),A&&null!=v.componentDidMount&&v.I.push(v.componentDidMount);else{if(A&&null==D.getDerivedStateFromProps&&N!==k&&null!=v.componentWillReceiveProps&&v.componentWillReceiveProps(N,I),!v.m&&(null!=v.shouldComponentUpdate&&!1===v.shouldComponentUpdate(N,v.Z,I)||i._===r._)){for(i._!==r._&&(v.props=N,v.state=v.Z,v.v=!1),i.m=r.m,i.o=r.o,i.o.some(function(e){e&&(e.h=i)}),M=0;M<v.M.length;M++)v.I.push(v.M[M]);v.M=[],v.I.length&&a.push(v);break e}null!=v.componentWillUpdate&&v.componentWillUpdate(N,v.Z,I),A&&null!=v.componentDidUpdate&&v.I.push(function(){v.componentDidUpdate(k,_,S)})}if(v.context=I,v.props=N,v.A=n,v.m=!1,E=t.N,Z=0,A){for(v.state=v.Z,v.v=!1,E&&E(i),y=v.render(v.props,v.state,v.context),q=0;q<v.M.length;q++)v.I.push(v.M[q]);v.M=[]}else do{v.v=!1,E&&E(i),y=v.render(v.props,v.state,v.context),v.state=v.Z}while(v.v&&++Z<25);v.state=v.Z,null!=v.getChildContext&&(l=p(p({},l),v.getChildContext())),A&&!w&&null!=v.getSnapshotBeforeUpdate&&(S=v.getSnapshotBeforeUpdate(k,_)),$(n,d(R=null!=y&&y.type===g&&null==y.key?y.props.children:y)?R:[R],i,r,l,s,o,a,c,h,f),v.base=i.m,i.S&=-161,v.I.length&&a.push(v),z&&(v.C=v.h=null)}catch(e){if(i._=null,h||null!=o){for(i.S|=h?160:128;c&&8===c.nodeType&&c.nextSibling;)c=c.nextSibling;o[o.indexOf(c)]=null,i.m=c}else i.m=r.m,i.o=r.o;t.m(e,i,r)}else null==o&&i._===r._?(i.o=r.o,i.m=r.m):i.m=function(n,i,r,l,s,o,a,c,h){var f,p,y,v,g,b,w,k=r.props,_=i.props,S=i.type;if("svg"===S?s="http://www.w3.org/2000/svg":"math"===S?s="http://www.w3.org/1998/Math/MathML":s||(s="http://www.w3.org/1999/xhtml"),null!=o)for(f=0;f<o.length;f++)if((g=o[f])&&"setAttribute"in g==!!S&&(S?g.localName===S:3===g.nodeType)){n=g,o[f]=null;break}if(null==n){if(null===S)return document.createTextNode(_);n=document.createElementNS(s,S,_.is&&_),c&&(t.j&&t.j(i,o),c=!1),o=null}if(null===S)k===_||c&&n.data===_||(n.data=_);else{if(o=o&&e.call(n.childNodes),k=r.props||u,!c&&null!=o)for(k={},f=0;f<n.attributes.length;f++)k[(g=n.attributes[f]).name]=g.value;for(f in k)if(g=k[f],"children"!=f)if("dangerouslySetInnerHTML"==f)y=g;else if(!(f in _)){if("value"==f&&"defaultValue"in _||"checked"==f&&"defaultChecked"in _)continue;T(n,f,null,g,s)}for(f in _)g=_[f],"children"==f?v=g:"dangerouslySetInnerHTML"==f?p=g:"value"==f?b=g:"checked"==f?w=g:c&&"function"!=typeof g||k[f]===g||T(n,f,g,k[f],s);if(p)c||y&&(p.q===y.q||p.q===n.innerHTML)||(n.innerHTML=p.q),i.o=[];else if(y&&(n.innerHTML=""),$(n,d(v)?v:[v],i,r,l,"foreignObject"===S?"http://www.w3.org/1999/xhtml":s,o,a,o?o[0]:r.o&&x(r,0),c,h),null!=o)for(f=o.length;f--;)m(o[f]);c||(f="value","progress"===S&&null==b?n.removeAttribute("value"):void 0!==b&&(b!==n[f]||"progress"===S&&!b||"option"===S&&b!==k[f])&&T(n,f,b,k[f],s),f="checked",void 0!==w&&w!==n[f]&&T(n,f,w,k[f],s))}return n}(r.m,i,r,l,s,o,a,h,f);(y=t.diffed)&&y(i)}function M(e,n,i){n.v=void 0;for(var r=0;r<i.length;r++)E(i[r],i[++r],i[++r]);t.k&&t.k(n,e),e.some(function(n){try{e=n.I,n.I=[],e.some(function(e){e.call(n)})}catch(e){t.m(e,n._)}})}function E(e,n,i){try{if("function"==typeof e){var r="function"==typeof e.S;r&&e.S(),r&&null==n||(e.S=e(n))}else e.current=n}catch(e){t.m(e,i)}}function Z(e,n,i){var r,l;if(t.unmount&&t.unmount(e),(r=e.ref)&&(r.current&&r.current!==e.m||E(r,null,n)),null!=(r=e.k)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){t.m(e,n)}r.base=r.A=null}if(r=e.o)for(l=0;l<r.length;l++)r[l]&&Z(r[l],n,i||"function"!=typeof e.type);i||m(e.m),e.k=e.h=e.m=e.v=void 0}function j(e,t,n){return this.constructor(e,n)}e=h.slice,t={m:function(e,t,n,i){for(var r,l,s;t=t.h;)if((r=t.k)&&!r.h)try{if((l=r.constructor)&&null!=l.getDerivedStateFromError&&(r.setState(l.getDerivedStateFromError(e)),s=r.v),null!=r.componentDidCatch&&(r.componentDidCatch(e,i||{}),s=r.v),s)return r.C=r}catch(t){e=t}throw e}},n=0,b.prototype.setState=function(e,t){var n;n=null!=this.Z&&this.Z!==this.state?this.Z:this.Z=p({},this.state),"function"==typeof e&&(e=e(p({},n),this.props)),e&&p(n,e),null!=e&&this._&&(t&&this.M.push(t),k(this))},b.prototype.forceUpdate=function(e){this._&&(this.m=!0,e&&this.I.push(e),k(this))},b.prototype.render=g,i=[],l="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,s=function(e,t){return e._.p-t._.p},_.N=0,o=0,a=C(!1),c=C(!0);var q,R,D,P,O=0,F=[],L=t,B=L.p,H=L.N,U=L.diffed,W=L.k,V=L.unmount,Y=L.h;function J(e,t){L.I&&L.I(R,e,O||t),O=0;var n=R.R||(R.R={h:[],I:[]});return e>=n.h.length&&n.h.push({}),n.h[e]}function X(e){return O=1,function(e,t){var n=J(q++,2);if(n.t=e,!n.k&&(n.h=[le(void 0,t),function(e){var t=n.D?n.D[0]:n.h[0],i=n.t(t,e);t!==i&&(n.D=[i,n.h[1]],n.k.setState({}))}],n.k=R,!R.u)){var i=function(e,t,i){if(!n.k.R)return!0;var l=n.k.R.h.filter(function(e){return!!e.k});if(l.every(function(e){return!e.D}))return!r||r.call(this,e,t,i);var s=!1;return l.forEach(function(e){if(e.D){var t=e.h[0];e.h=e.D,e.D=void 0,t!==e.h[0]&&(s=!0)}}),!(!s&&n.k.props===e)&&(!r||r.call(this,e,t,i))};R.u=!0;var r=R.shouldComponentUpdate,l=R.componentWillUpdate;R.componentWillUpdate=function(e,t,n){if(this.m){var s=r;r=void 0,i(e,t,n),r=s}l&&l.call(this,e,t,n)},R.shouldComponentUpdate=i}return n.D||n.h}(le,e)}function G(e,t){var n=J(q++,3);!L.Z&&re(n.R,t)&&(n.h=e,n.i=t,R.R.I.push(n))}function K(e){return O=5,function(e,t){var n=J(q++,7);return re(n.R,t)&&(n.h=e(),n.R=t,n.I=e),n.h}(function(){return{current:e}},[])}function Q(){for(var e;e=F.shift();)if(e.A&&e.R)try{e.R.I.forEach(ne),e.R.I.forEach(ie),e.R.I=[]}catch(t){e.R.I=[],L.m(t,e._)}}L.p=function(e){R=null,B&&B(e)},L.h=function(e,t){e&&t.o&&t.o.j&&(e.j=t.o.j),Y&&Y(e,t)},L.N=function(e){H&&H(e),q=0;var t=(R=e.k).R;t&&(D===R?(t.I=[],R.I=[],t.h.forEach(function(e){e.D&&(e.h=e.D),e.i=e.D=void 0})):(t.I.forEach(ne),t.I.forEach(ie),t.I=[],q=0)),D=R},L.diffed=function(e){U&&U(e);var t=e.k;t&&t.R&&(t.R.I.length&&(1!==F.push(t)&&P===L.requestAnimationFrame||((P=L.requestAnimationFrame)||te)(Q)),t.R.h.forEach(function(e){e.i&&(e.R=e.i),e.i=void 0})),D=R=null},L.k=function(e,t){t.some(function(e){try{e.I.forEach(ne),e.I=e.I.filter(function(e){return!e.h||ie(e)})}catch(n){t.some(function(e){e.I&&(e.I=[])}),t=[],L.m(n,e._)}}),W&&W(e,t)},L.unmount=function(e){V&&V(e);var t,n=e.k;n&&n.R&&(n.R.h.forEach(function(e){try{ne(e)}catch(e){t=e}}),n.R=void 0,t&&L.m(t,n._))};var ee="function"==typeof requestAnimationFrame;function te(e){var t,n=function(){clearTimeout(i),ee&&cancelAnimationFrame(t),setTimeout(e)},i=setTimeout(n,100);ee&&(t=requestAnimationFrame(n))}function ne(e){var t=R,n=e.k;"function"==typeof n&&(e.k=void 0,n()),R=t}function ie(e){var t=R;e.k=e.h(),R=t}function re(e,t){return!e||e.length!==t.length||t.some(function(t,n){return t!==e[n]})}function le(e,t){return"function"==typeof t?t(e):t}var se={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},oe=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),ae=(e,t)=>{let n=({color:n="currentColor",size:i=24,strokeWidth:r=2,absoluteStrokeWidth:l,children:s,...o})=>y("svg",{...se,width:String(i),height:i,stroke:n,"stroke-width":l?24*Number(r)/Number(i):r,class:`lucide lucide-${oe(e)}`,...o},[...t.map(([e,t])=>y(e,t)),...z(s)]);return n.displayName=`${e}`,n},ce=ae("Bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]),ue=ae("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]),he=ae("MessageCircle",[["path",{d:"m3 21 1.9-5.7a8.5 8.5 0 1 1 3.8 3.8z",key:"v2veuj"}]]),fe=ae("Send",[["path",{d:"m22 2-7 20-4-9-9-4Z",key:"1q3vgg"}],["path",{d:"M22 2 11 13",key:"nzbqef"}]]),de=ae("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);var pe={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};function me(e){pe=e}var ye=/[&<>"']/,ve=new RegExp(ye.source,"g"),ge=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,be=new RegExp(ge.source,"g"),xe={"&":"&","<":"<",">":">",'"':""","'":"'"},we=e=>xe[e];function ke(e,t){if(t){if(ye.test(e))return e.replace(ve,we)}else if(ge.test(e))return e.replace(be,we);return e}var _e=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function $e(e){return e.replace(_e,(e,t)=>"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):"")}var Se=/(^|[^\[])\^/g;function ze(e,t){e="string"==typeof e?e:e.source,t=t||"";let n={replace:(t,i)=>(i=(i="object"==typeof i&&"source"in i?i.source:i).replace(Se,"$1"),e=e.replace(t,i),n),getRegex:()=>new RegExp(e,t)};return n}function Ne(e){try{e=encodeURI(e).replace(/%25/g,"%")}catch{return null}return e}var Ae={exec:()=>null};function Te(e,t){let n=e.replace(/\|/g,(e,t,n)=>{let i=!1,r=t;for(;--r>=0&&"\\"===n[r];)i=!i;return i?"|":" |"}).split(/ \|/),i=0;if(n[0].trim()||n.shift(),n.length>0&&!n[n.length-1].trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(;i<n.length;i++)n[i]=n[i].trim().replace(/\\\|/g,"|");return n}function Ce(e,t,n){let i=e.length;if(0===i)return"";let r=0;for(;r<i&&e.charAt(i-r-1)===t;)r++;return e.slice(0,i-r)}function Ie(e,t,n,i){let r=t.href,l=t.title?ke(t.title):null,s=e[1].replace(/\\([\[\]])/g,"$1");if("!"!==e[0].charAt(0)){i.state.inLink=!0;let e={type:"link",raw:n,href:r,title:l,text:s,tokens:i.inlineTokens(s)};return i.state.inLink=!1,e}return{type:"image",raw:n,href:r,title:l,text:ke(s)}}var Me=class{options;rules;lexer;constructor(e){this.options=e||pe}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let e=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?e:Ce(e,"\n")}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let e=t[0],n=function(e,t){let n=e.match(/^(\s+)(?:```)/);if(null===n)return t;let i=n[1];return t.split("\n").map(e=>{let t=e.match(/^\s+/);if(null===t)return e;let[n]=t;return n.length>=i.length?e.slice(i.length):e}).join("\n")}(e,t[3]||"");return{type:"code",raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.P,"$1"):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(/#$/.test(e)){let t=Ce(e,"#");(this.options.pedantic||!t||/ $/.test(t))&&(e=t.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let e=Ce(t[0].replace(/^ *>[ \t]?/gm,""),"\n"),n=this.lexer.state.top;this.lexer.state.top=!0;let i=this.lexer.blockTokens(e);return this.lexer.state.top=n,{type:"blockquote",raw:t[0],tokens:i,text:e}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),i=n.length>1,r={type:"list",raw:"",ordered:i,start:i?+n.slice(0,-1):"",loose:!1,items:[]};n=i?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=i?n:"[*+-]");let l=new RegExp(`^( {0,3}${n})((?:[\t ][^\\n]*)?(?:\\n|$))`),s="",o="",a=!1;for(;e;){let n=!1;if(!(t=l.exec(e))||this.rules.block.hr.test(e))break;s=t[0],e=e.substring(s.length);let i=t[2].split("\n",1)[0].replace(/^\t+/,e=>" ".repeat(3*e.length)),c=e.split("\n",1)[0],u=0;this.options.pedantic?(u=2,o=i.trimStart()):(u=t[2].search(/[^ ]/),u=u>4?1:u,o=i.slice(u),u+=t[1].length);let h=!1;if(!i&&/^ *$/.test(c)&&(s+=c+"\n",e=e.substring(c.length+1),n=!0),!n){let t=new RegExp(`^ {0,${Math.min(3,u-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),n=new RegExp(`^ {0,${Math.min(3,u-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),r=new RegExp(`^ {0,${Math.min(3,u-1)}}(?:\`\`\`|~~~)`),l=new RegExp(`^ {0,${Math.min(3,u-1)}}#`);for(;e;){let a=e.split("\n",1)[0];if(c=a,this.options.pedantic&&(c=c.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),r.test(c)||l.test(c)||t.test(c)||n.test(e))break;if(c.search(/[^ ]/)>=u||!c.trim())o+="\n"+c.slice(u);else{if(h||i.search(/[^ ]/)>=4||r.test(i)||l.test(i)||n.test(i))break;o+="\n"+c}!h&&!c.trim()&&(h=!0),s+=a+"\n",e=e.substring(a.length+1),i=c.slice(u)}}r.loose||(a?r.loose=!0:/\n *\n *$/.test(s)&&(a=!0));let f,d=null;this.options.gfm&&(d=/^\[[ xX]\] /.exec(o),d&&(f="[ ] "!==d[0],o=o.replace(/^\[[ xX]\] +/,""))),r.items.push({type:"list_item",raw:s,task:!!d,checked:f,loose:!1,text:o,tokens:[]}),r.raw+=s}r.items[r.items.length-1].raw=s.trimEnd(),r.items[r.items.length-1].text=o.trimEnd(),r.raw=r.raw.trimEnd();for(let e=0;e<r.items.length;e++)if(this.lexer.state.top=!1,r.items[e].tokens=this.lexer.blockTokens(r.items[e].text,[]),!r.loose){let t=r.items[e].tokens.filter(e=>"space"===e.type),n=t.length>0&&t.some(e=>/\n.*\n/.test(e.raw));r.loose=n}if(r.loose)for(let e=0;e<r.items.length;e++)r.items[e].loose=!0;return r}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:"html",block:!0,raw:t[0],pre:"pre"===t[1]||"script"===t[1]||"style"===t[1],text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let e=t[1].toLowerCase().replace(/\s+/g," "),n=t[2]?t[2].replace(/^<(.*)>$/,"$1").replace(this.rules.inline.P,"$1"):"",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.P,"$1"):t[3];return{type:"def",tag:e,raw:t[0],href:n,title:i}}}table(e){let t=this.rules.block.table.exec(e);if(t){if(!/[:|]/.test(t[2]))return;let e={type:"table",raw:t[0],header:Te(t[1]).map(e=>({text:e,tokens:[]})),align:t[2].replace(/^\||\| *$/g,"").split("|"),rows:t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(e.header.length===e.align.length){let t,n,i,r,l=e.align.length;for(t=0;t<l;t++){let n=e.align[t];n&&(/^ *-+: *$/.test(n)?e.align[t]="right":/^ *:-+: *$/.test(n)?e.align[t]="center":/^ *:-+ *$/.test(n)?e.align[t]="left":e.align[t]=null)}for(l=e.rows.length,t=0;t<l;t++)e.rows[t]=Te(e.rows[t],e.header.length).map(e=>({text:e,tokens:[]}));for(l=e.header.length,n=0;n<l;n++)e.header[n].tokens=this.lexer.inline(e.header[n].text);for(l=e.rows.length,n=0;n<l;n++)for(r=e.rows[n],i=0;i<r.length;i++)r[i].tokens=this.lexer.inline(r[i].text);return e}}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:"="===t[2].charAt(0)?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let e="\n"===t[1].charAt(t[1].length-1)?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:ke(t[1])}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&/^<a /i.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&/^<\/a>/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let e=t[2].trim();if(!this.options.pedantic&&/^</.test(e)){if(!/>$/.test(e))return;let t=Ce(e.slice(0,-1),"\\");if((e.length-t.length)%2==0)return}else{let e=function(e,t){if(-1===e.indexOf(t[1]))return-1;let n=0;for(let i=0;i<e.length;i++)if("\\"===e[i])i++;else if(e[i]===t[0])n++;else if(e[i]===t[1]&&(n--,n<0))return i;return-1}(t[2],"()");if(e>-1){let n=(0===t[0].indexOf("!")?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=""}}let n=t[2],i="";if(this.options.pedantic){let e=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(n);e&&(n=e[1],i=e[3])}else i=t[3]?t[3].slice(1,-1):"";return n=n.trim(),/^</.test(n)&&(n=this.options.pedantic&&!/>$/.test(e)?n.slice(1):n.slice(1,-1)),Ie(t,{href:n&&n.replace(this.rules.inline.P,"$1"),title:i&&i.replace(this.rules.inline.P,"$1")},t[0],this.lexer)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let e=(n[2]||n[1]).replace(/\s+/g," ");if(e=t[e.toLowerCase()],!e){let e=n[0].charAt(0);return{type:"text",raw:e,text:e}}return Ie(n,e,n[0],this.lexer)}}emStrong(e,t,n=""){let i=this.rules.inline.emStrong.lDelim.exec(e);if(!(!i||i[3]&&n.match(/[\p{L}\p{N}]/u))&&(!i[1]&&!i[2]||!n||this.rules.inline.punctuation.exec(n))){let n,r,l=[...i[0]].length-1,s=l,o=0,a="*"===i[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(a.lastIndex=0,t=t.slice(-1*e.length+l);null!=(i=a.exec(t));){if(n=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!n)continue;if(r=[...n].length,i[3]||i[4]){s+=r;continue}if((i[5]||i[6])&&l%3&&!((l+r)%3)){o+=r;continue}if(s-=r,s>0)continue;r=Math.min(r,r+s+o);let t=[...i[0]][0].length,a=e.slice(0,l+i.index+t+r);if(Math.min(l,r)%2){let e=a.slice(1,-1);return{type:"em",raw:a,text:e,tokens:this.lexer.inlineTokens(e)}}let c=a.slice(2,-2);return{type:"strong",raw:a,text:c,tokens:this.lexer.inlineTokens(c)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(/\n/g," "),n=/[^ ]/.test(e),i=/^ /.test(e)&&/ $/.test(e);return n&&i&&(e=e.substring(1,e.length-1)),e=ke(e,!0),{type:"codespan",raw:t[0],text:e}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let e,n;return"@"===t[2]?(e=ke(t[1]),n="mailto:"+e):(e=ke(t[1]),n=e),{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if("@"===t[2])e=ke(t[0]),n="mailto:"+e;else{let i;do{i=t[0],t[0]=this.rules.inline.O.exec(t[0])[0]}while(i!==t[0]);e=ke(t[0]),n="www."===t[1]?"http://"+t[0]:t[0]}return{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let e;return e=this.lexer.state.inRawBlock?t[0]:ke(t[0]),{type:"text",raw:t[0],text:e}}}},Ee={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:Ae,lheading:/^(?!bull )((?:.|\n(?!\s*?\n|bull ))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,F:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,L:/(?!\s*\])(?:\\.|[^\[\]\\])+/,B:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};Ee.def=ze(Ee.def).replace("label",Ee.L).replace("title",Ee.B).getRegex(),Ee.bullet=/(?:[*+-]|\d{1,9}[.)])/,Ee.listItemStart=ze(/^( *)(bull) */).replace("bull",Ee.bullet).getRegex(),Ee.list=ze(Ee.list).replace(/bull/g,Ee.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+Ee.def.source+")").getRegex(),Ee.H="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Ee.U=/<!--(?!-?>)[\s\S]*?(?:-->|$)/,Ee.html=ze(Ee.html,"i").replace("comment",Ee.U).replace("tag",Ee.H).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Ee.lheading=ze(Ee.lheading).replace(/bull/g,Ee.bullet).getRegex(),Ee.paragraph=ze(Ee.F).replace("hr",Ee.hr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ee.H).getRegex(),Ee.blockquote=ze(Ee.blockquote).replace("paragraph",Ee.paragraph).getRegex(),Ee.normal={...Ee},Ee.gfm={...Ee.normal,table:"^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"},Ee.gfm.table=ze(Ee.gfm.table).replace("hr",Ee.hr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ee.H).getRegex(),Ee.gfm.paragraph=ze(Ee.F).replace("hr",Ee.hr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Ee.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ee.H).getRegex(),Ee.pedantic={...Ee.normal,html:ze("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",Ee.U).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Ae,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:ze(Ee.normal.F).replace("hr",Ee.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",Ee.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()};var Ze={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:Ae,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,rDelimAst:/^[^_*]*?__[^_*]*?\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\*)[punct](\*+)(?=[\s]|$)|[^punct\s](\*+)(?!\*)(?=[punct\s]|$)|(?!\*)[punct\s](\*+)(?=[^punct\s])|[\s](\*+)(?!\*)(?=[punct])|(?!\*)[punct](\*+)(?!\*)(?=[punct])|[^punct\s](\*+)(?=[^punct\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\s]|$)|[^punct\s](_+)(?!_)(?=[punct\s]|$)|(?!_)[punct\s](_+)(?=[^punct\s])|[\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:Ae,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,punctuation:/^((?![*_])[\spunctuation])/,W:"\\p{P}$+<=>`^|~"};Ze.punctuation=ze(Ze.punctuation,"u").replace(/punctuation/g,Ze.W).getRegex(),Ze.blockSkip=/\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g,Ze.anyPunctuation=/\\[punct]/g,Ze.P=/\\([punct])/g,Ze.U=ze(Ee.U).replace("(?:--\x3e|$)","--\x3e").getRegex(),Ze.emStrong.lDelim=ze(Ze.emStrong.lDelim,"u").replace(/punct/g,Ze.W).getRegex(),Ze.emStrong.rDelimAst=ze(Ze.emStrong.rDelimAst,"gu").replace(/punct/g,Ze.W).getRegex(),Ze.emStrong.rDelimUnd=ze(Ze.emStrong.rDelimUnd,"gu").replace(/punct/g,Ze.W).getRegex(),Ze.anyPunctuation=ze(Ze.anyPunctuation,"gu").replace(/punct/g,Ze.W).getRegex(),Ze.P=ze(Ze.P,"gu").replace(/punct/g,Ze.W).getRegex(),Ze.V=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,Ze.Y=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,Ze.autolink=ze(Ze.autolink).replace("scheme",Ze.V).replace("email",Ze.Y).getRegex(),Ze.J=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,Ze.tag=ze(Ze.tag).replace("comment",Ze.U).replace("attribute",Ze.J).getRegex(),Ze.L=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,Ze.X=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,Ze.B=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,Ze.link=ze(Ze.link).replace("label",Ze.L).replace("href",Ze.X).replace("title",Ze.B).getRegex(),Ze.reflink=ze(Ze.reflink).replace("label",Ze.L).replace("ref",Ee.L).getRegex(),Ze.nolink=ze(Ze.nolink).replace("ref",Ee.L).getRegex(),Ze.reflinkSearch=ze(Ze.reflinkSearch,"g").replace("reflink",Ze.reflink).replace("nolink",Ze.nolink).getRegex(),Ze.normal={...Ze},Ze.pedantic={...Ze.normal,strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:ze(/^!?\[(label)\]\((.*?)\)/).replace("label",Ze.L).getRegex(),reflink:ze(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Ze.L).getRegex()},Ze.gfm={...Ze.normal,escape:ze(Ze.escape).replace("])","~|])").getRegex(),G:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,O:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/},Ze.gfm.url=ze(Ze.gfm.url,"i").replace("email",Ze.gfm.G).getRegex(),Ze.breaks={...Ze.gfm,br:ze(Ze.br).replace("{2,}","*").getRegex(),text:ze(Ze.gfm.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()};var je=class e{tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||pe,this.options.tokenizer=this.options.tokenizer||new Me,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={block:Ee.normal,inline:Ze.normal};this.options.pedantic?(t.block=Ee.pedantic,t.inline=Ze.pedantic):this.options.gfm&&(t.block=Ee.gfm,this.options.breaks?t.inline=Ze.breaks:t.inline=Ze.gfm),this.tokenizer.rules=t}static get rules(){return{block:Ee,inline:Ze}}static lex(t,n){return new e(n).lex(t)}static lexInline(t,n){return new e(n).inlineTokens(t)}lex(e){let t;for(e=e.replace(/\r\n|\r/g,"\n"),this.blockTokens(e,this.tokens);t=this.inlineQueue.shift();)this.inlineTokens(t.src,t.tokens);return this.tokens}blockTokens(e,t=[]){let n,i,r,l;for(e=this.options.pedantic?e.replace(/\t/g," ").replace(/^ +$/gm,""):e.replace(/^( *)(\t+)/gm,(e,t,n)=>t+" ".repeat(n.length));e;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(i=>!!(n=i.call({lexer:this},e,t))&&(e=e.substring(n.raw.length),t.push(n),!0)))){if(n=this.tokenizer.space(e)){e=e.substring(n.raw.length),1===n.raw.length&&t.length>0?t[t.length-1].raw+="\n":t.push(n);continue}if(n=this.tokenizer.code(e)){e=e.substring(n.raw.length),i=t[t.length-1],!i||"paragraph"!==i.type&&"text"!==i.type?t.push(n):(i.raw+="\n"+n.raw,i.text+="\n"+n.text,this.inlineQueue[this.inlineQueue.length-1].src=i.text);continue}if(n=this.tokenizer.fences(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.heading(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.hr(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.blockquote(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.list(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.html(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.def(e)){e=e.substring(n.raw.length),i=t[t.length-1],!i||"paragraph"!==i.type&&"text"!==i.type?this.tokens.links[n.tag]||(this.tokens.links[n.tag]={href:n.href,title:n.title}):(i.raw+="\n"+n.raw,i.text+="\n"+n.raw,this.inlineQueue[this.inlineQueue.length-1].src=i.text);continue}if(n=this.tokenizer.table(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.lheading(e)){e=e.substring(n.raw.length),t.push(n);continue}if(r=e,this.options.extensions&&this.options.extensions.startBlock){let t,n=1/0,i=e.slice(1);this.options.extensions.startBlock.forEach(e=>{t=e.call({lexer:this},i),"number"==typeof t&&t>=0&&(n=Math.min(n,t))}),n<1/0&&n>=0&&(r=e.substring(0,n+1))}if(this.state.top&&(n=this.tokenizer.paragraph(r))){i=t[t.length-1],l&&"paragraph"===i.type?(i.raw+="\n"+n.raw,i.text+="\n"+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=i.text):t.push(n),l=r.length!==e.length,e=e.substring(n.raw.length);continue}if(n=this.tokenizer.text(e)){e=e.substring(n.raw.length),i=t[t.length-1],i&&"text"===i.type?(i.raw+="\n"+n.raw,i.text+="\n"+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=i.text):t.push(n);continue}if(e){let t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent)break;throw new Error(t)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n,i,r,l,s,o,a=e;if(this.tokens.links){let e=Object.keys(this.tokens.links);if(e.length>0)for(;null!=(l=this.tokenizer.rules.inline.reflinkSearch.exec(a));)e.includes(l[0].slice(l[0].lastIndexOf("[")+1,-1))&&(a=a.slice(0,l.index)+"["+"a".repeat(l[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(l=this.tokenizer.rules.inline.blockSkip.exec(a));)a=a.slice(0,l.index)+"["+"a".repeat(l[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(l=this.tokenizer.rules.inline.anyPunctuation.exec(a));)a=a.slice(0,l.index)+"++"+a.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;e;)if(s||(o=""),s=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(i=>!!(n=i.call({lexer:this},e,t))&&(e=e.substring(n.raw.length),t.push(n),!0)))){if(n=this.tokenizer.escape(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.tag(e)){e=e.substring(n.raw.length),i=t[t.length-1],i&&"text"===n.type&&"text"===i.type?(i.raw+=n.raw,i.text+=n.text):t.push(n);continue}if(n=this.tokenizer.link(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(n.raw.length),i=t[t.length-1],i&&"text"===n.type&&"text"===i.type?(i.raw+=n.raw,i.text+=n.text):t.push(n);continue}if(n=this.tokenizer.emStrong(e,a,o)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.codespan(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.br(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.del(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.autolink(e)){e=e.substring(n.raw.length),t.push(n);continue}if(!this.state.inLink&&(n=this.tokenizer.url(e))){e=e.substring(n.raw.length),t.push(n);continue}if(r=e,this.options.extensions&&this.options.extensions.startInline){let t,n=1/0,i=e.slice(1);this.options.extensions.startInline.forEach(e=>{t=e.call({lexer:this},i),"number"==typeof t&&t>=0&&(n=Math.min(n,t))}),n<1/0&&n>=0&&(r=e.substring(0,n+1))}if(n=this.tokenizer.inlineText(r)){e=e.substring(n.raw.length),"_"!==n.raw.slice(-1)&&(o=n.raw.slice(-1)),s=!0,i=t[t.length-1],i&&"text"===i.type?(i.raw+=n.raw,i.text+=n.text):t.push(n);continue}if(e){let t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent)break;throw new Error(t)}}return t}},qe=class{options;constructor(e){this.options=e||pe}code(e,t,n){let i=(t||"").match(/^\S*/)?.[0];return e=e.replace(/\n$/,"")+"\n",i?'<pre><code class="language-'+ke(i)+'">'+(n?e:ke(e,!0))+"</code></pre>\n":"<pre><code>"+(n?e:ke(e,!0))+"</code></pre>\n"}blockquote(e){return`<blockquote>\n${e}</blockquote>\n`}html(e,t){return e}heading(e,t,n){return`<h${t}>${e}</h${t}>\n`}hr(){return"<hr>\n"}list(e,t,n){let i=t?"ol":"ul";return"<"+i+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"</"+i+">\n"}listitem(e,t,n){return`<li>${e}</li>\n`}checkbox(e){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox">'}paragraph(e){return`<p>${e}</p>\n`}table(e,t){return t&&(t=`<tbody>${t}</tbody>`),"<table>\n<thead>\n"+e+"</thead>\n"+t+"</table>\n"}tablerow(e){return`<tr>\n${e}</tr>\n`}tablecell(e,t){let n=t.header?"th":"td";return(t.align?`<${n} align="${t.align}">`:`<${n}>`)+e+`</${n}>\n`}strong(e){return`<strong>${e}</strong>`}em(e){return`<em>${e}</em>`}codespan(e){return`<code>${e}</code>`}br(){return"<br>"}del(e){return`<del>${e}</del>`}link(e,t,n){let i=Ne(e);if(null===i)return n;let r='<a href="'+(e=i)+'"';return t&&(r+=' title="'+t+'"'),r+=">"+n+"</a>",r}image(e,t,n){let i=Ne(e);if(null===i)return n;let r=`<img src="${e=i}" alt="${n}"`;return t&&(r+=` title="${t}"`),r+=">",r}text(e){return e}},Re=class{strong(e){return e}em(e){return e}codespan(e){return e}del(e){return e}html(e){return e}text(e){return e}link(e,t,n){return""+n}image(e,t,n){return""+n}br(){return""}},De=class e{options;renderer;textRenderer;constructor(e){this.options=e||pe,this.options.renderer=this.options.renderer||new qe,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new Re}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e,t=!0){let n="";for(let i=0;i<e.length;i++){let r=e[i];if(this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[r.type]){let e=r,t=this.options.extensions.renderers[e.type].call({parser:this},e);if(!1!==t||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(e.type)){n+=t||"";continue}}switch(r.type){case"space":continue;case"hr":n+=this.renderer.hr();continue;case"heading":{let e=r;n+=this.renderer.heading(this.parseInline(e.tokens),e.depth,$e(this.parseInline(e.tokens,this.textRenderer)));continue}case"code":{let e=r;n+=this.renderer.code(e.text,e.lang,!!e.escaped);continue}case"table":{let e=r,t="",i="";for(let t=0;t<e.header.length;t++)i+=this.renderer.tablecell(this.parseInline(e.header[t].tokens),{header:!0,align:e.align[t]});t+=this.renderer.tablerow(i);let l="";for(let t=0;t<e.rows.length;t++){let n=e.rows[t];i="";for(let t=0;t<n.length;t++)i+=this.renderer.tablecell(this.parseInline(n[t].tokens),{header:!1,align:e.align[t]});l+=this.renderer.tablerow(i)}n+=this.renderer.table(t,l);continue}case"blockquote":{let e=r,t=this.parse(e.tokens);n+=this.renderer.blockquote(t);continue}case"list":{let e=r,t=e.ordered,i=e.start,l=e.loose,s="";for(let t=0;t<e.items.length;t++){let n=e.items[t],i=n.checked,r=n.task,o="";if(n.task){let e=this.renderer.checkbox(!!i);l?n.tokens.length>0&&"paragraph"===n.tokens[0].type?(n.tokens[0].text=e+" "+n.tokens[0].text,n.tokens[0].tokens&&n.tokens[0].tokens.length>0&&"text"===n.tokens[0].tokens[0].type&&(n.tokens[0].tokens[0].text=e+" "+n.tokens[0].tokens[0].text)):n.tokens.unshift({type:"text",text:e+" "}):o+=e+" "}o+=this.parse(n.tokens,l),s+=this.renderer.listitem(o,r,!!i)}n+=this.renderer.list(s,t,i);continue}case"html":{let e=r;n+=this.renderer.html(e.text,e.block);continue}case"paragraph":{let e=r;n+=this.renderer.paragraph(this.parseInline(e.tokens));continue}case"text":{let l=r,s=l.tokens?this.parseInline(l.tokens):l.text;for(;i+1<e.length&&"text"===e[i+1].type;)l=e[++i],s+="\n"+(l.tokens?this.parseInline(l.tokens):l.text);n+=t?this.renderer.paragraph(s):s;continue}default:{let e='Token with "'+r.type+'" type was not found.';if(this.options.silent)return"";throw new Error(e)}}}return n}parseInline(e,t){t=t||this.renderer;let n="";for(let i=0;i<e.length;i++){let r=e[i];if(this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[r.type]){let e=this.options.extensions.renderers[r.type].call({parser:this},r);if(!1!==e||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(r.type)){n+=e||"";continue}}switch(r.type){case"escape":{let e=r;n+=t.text(e.text);break}case"html":{let e=r;n+=t.html(e.text);break}case"link":{let e=r;n+=t.link(e.href,e.title,this.parseInline(e.tokens,t));break}case"image":{let e=r;n+=t.image(e.href,e.title,e.text);break}case"strong":{let e=r;n+=t.strong(this.parseInline(e.tokens,t));break}case"em":{let e=r;n+=t.em(this.parseInline(e.tokens,t));break}case"codespan":{let e=r;n+=t.codespan(e.text);break}case"br":n+=t.br();break;case"del":{let e=r;n+=t.del(this.parseInline(e.tokens,t));break}case"text":{let e=r;n+=t.text(e.text);break}default:{let e='Token with "'+r.type+'" type was not found.';if(this.options.silent)return"";throw new Error(e)}}}return n}},Pe=class{options;constructor(e){this.options=e||pe}static passThroughHooks=new Set(["preprocess","postprocess"]);preprocess(e){return e}postprocess(e){return e}},Oe=new class{defaults={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};options=this.setOptions;parse=this.#e(je.lex,De.parse);parseInline=this.#e(je.lexInline,De.parseInline);Parser=De;Renderer=qe;TextRenderer=Re;Lexer=je;Tokenizer=Me;Hooks=Pe;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let i of e)switch(n=n.concat(t.call(this,i)),i.type){case"table":{let e=i;for(let i of e.header)n=n.concat(this.walkTokens(i.tokens,t));for(let i of e.rows)for(let e of i)n=n.concat(this.walkTokens(e.tokens,t));break}case"list":{let e=i;n=n.concat(this.walkTokens(e.items,t));break}default:{let e=i;this.defaults.extensions?.childTokens?.[e.type]?this.defaults.extensions.childTokens[e.type].forEach(i=>{n=n.concat(this.walkTokens(e[i],t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw new Error("extension name required");if("renderer"in e){let n=t.renderers[e.name];t.renderers[e.name]=n?function(...t){let i=e.renderer.apply(this,t);return!1===i&&(i=n.apply(this,t)),i}:e.renderer}if("tokenizer"in e){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw new Error("extension level must be 'block' or 'inline'");let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&("block"===e.level?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:"inline"===e.level&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}"childTokens"in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new qe(this.defaults);for(let n in e.renderer){let i=e.renderer[n],r=n,l=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return!1===n&&(n=l.apply(t,e)),n||""}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new Me(this.defaults);for(let n in e.tokenizer){let i=e.tokenizer[n],r=n,l=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return!1===n&&(n=l.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new Pe;for(let n in e.hooks){let i=e.hooks[n],r=n,l=t[r];Pe.passThroughHooks.has(n)?t[r]=e=>{if(this.defaults.async)return Promise.resolve(i.call(t,e)).then(e=>l.call(t,e));let n=i.call(t,e);return l.call(t,n)}:t[r]=(...e)=>{let n=i.apply(t,e);return!1===n&&(n=l.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,i=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(i.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return je.lex(e,t??this.defaults)}parser(e,t){return De.parse(e,t??this.defaults)}#e(e,t){return(n,i)=>{let r={...i},l={...this.defaults,...r};!0===this.defaults.async&&!1===r.async&&(l.silent,l.async=!0);let s=this.#t(!!l.silent,!!l.async);if(typeof n>"u"||null===n)return s(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof n)return s(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));if(l.hooks&&(l.hooks.options=l),l.async)return Promise.resolve(l.hooks?l.hooks.preprocess(n):n).then(t=>e(t,l)).then(e=>l.walkTokens?Promise.all(this.walkTokens(e,l.walkTokens)).then(()=>e):e).then(e=>t(e,l)).then(e=>l.hooks?l.hooks.postprocess(e):e).catch(s);try{l.hooks&&(n=l.hooks.preprocess(n));let i=e(n,l);l.walkTokens&&this.walkTokens(i,l.walkTokens);let r=t(i,l);return l.hooks&&(r=l.hooks.postprocess(r)),r}catch(e){return s(e)}}}#t(e,t){return n=>{if(n.message+="\nPlease report this to https://github.com/markedjs/marked.",e){let e="<p>An error occurred:</p><pre>"+ke(n.message+"",!0)+"</pre>";return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function Fe(e,t){return Oe.parse(e,t)}Fe.options=Fe.setOptions=function(e){return Oe.setOptions(e),Fe.defaults=Oe.defaults,me(Fe.defaults),Fe},Fe.getDefaults=function(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}},Fe.defaults=pe,Fe.use=function(...e){return Oe.use(...e),Fe.defaults=Oe.defaults,me(Fe.defaults),Fe},Fe.walkTokens=function(e,t){return Oe.walkTokens(e,t)},Fe.parseInline=Oe.parseInline,Fe.Parser=De,Fe.parser=De.parse,Fe.Renderer=qe,Fe.TextRenderer=Re,Fe.Lexer=je,Fe.lexer=je.lex,Fe.Tokenizer=Me,Fe.Hooks=Pe,Fe.parse=Fe,Fe.options,Fe.setOptions,Fe.use,Fe.walkTokens,Fe.parseInline,De.parse,je.lex;var Le=0;function Be(e,n,i,r,l,s){n||(n={});var o,a,c=n;"ref"in n&&(o=n.ref,delete n.ref);var u={type:e,props:c,key:i,ref:o,o:null,h:null,p:0,m:null,v:void 0,k:null,constructor:void 0,_:--Le,$:-1,S:0,K:l,ee:s};if("function"==typeof e&&(o=e.defaultProps))for(a in o)void 0===c[a]&&(c[a]=o[a]);return t.vnode&&t.vnode(u),u}function He({client:e}){let[t,n]=X(!1),[i,r]=X("home"),[l,s]=X([]),[o,a]=X([]),[c,u]=X(""),[h,f]=X(!1),[d,p]=X(!1),[m,y]=X(!1),[v,b]=X(null),[x,w]=X(null),k=K(null),[_,$]=X(null),S=K(null),z=K(null),N=K(0);G(()=>{S.current=_},[_]);let[A,T]=X({}),[C,I]=X("#5046e5"),[M,E]=X(24),[Z,j]=X("right"),[q,R]=X("light"),[D,P]=X("#ffffff"),[O,F]=X("#ffffff"),[L,B]=X("message"),[H,U]=X(!0),[W,V]=X(!0),[Y,J]=X(!0),[Q,ee]=X(!0),[te,ne]=X(!1);G(()=>{e.getWidgetConfig().then(t=>{if(t){if("error"===t.status)return V(!1),void ne(!0);if(0===Object.keys(t).length)return V(!1),void ne(!0);void 0!==t.widgetEnabled&&V(t.widgetEnabled),void 0!==t.aiMessagingEnabled&&J(t.aiMessagingEnabled);let n=t.config||{};if(T(n),n.primaryColor&&I(n.primaryColor),n.defaultAgentName&&$(n.defaultAgentName),void 0!==n.borderRadius&&E(n.borderRadius),n.position&&j(n.position),n.theme&&R(n.theme),n.launcherIcon&&B(n.launcherIcon),void 0!==n.showBranding&&U(n.showBranding),n.websiteUrl&&typeof window<"u")try{let t=new URL(n.websiteUrl).origin,i=window.location.origin,r=i.includes("localhost")||i.includes("127.0.0.1"),l=e.apiUrl?.includes("localhost")||e.apiUrl?.includes("127.0.0.1");ee(t===i||r||l)}catch{ee(!0)}else ee(!0)}ne(!0)})},[e]),G(()=>{t&&("home"===i&&le(),ie())},[t,i]),G(()=>{ie()},[o,h]);let ie=()=>{k.current?.scrollIntoView({behavior:"smooth"})},re=()=>n(!t),le=async()=>{let t=await e.getHistory();s(t)},se=()=>{e.connectStream((e,t)=>{if("message-stream"===e){let e=t.text||t.content;e&&pe(e)}else if("token"===e)pe(t);else if("message-complete"===e)f(!1);else if("message"===e){if(!t.id)return;a(e=>{if(e.some(e=>e.id===t.id))return e;if("user"===t.role){let n=e.findIndex(e=>e.id.startsWith("user_")&&e.content===t.content);if(-1!==n){let i=[...e];return i[n]={id:t.id,role:t.role,content:t.content,createdAt:t.createdAt,agentName:void 0},i}}return f(!1),[...e,{id:t.id,role:t.role,content:t.content,createdAt:t.createdAt,agentName:t.agentName||("assistant"===t.role?_:void 0),agentAvatar:t.agentAvatar}]}),f(!1)}else if("human-takeover"===e){let e=t.isHumanTakeover;p(e),e?(f(!1),t.userName&&b(t.userName),t.agentAvatar&&w(t.agentAvatar),a(e=>{if(e.some(e=>"system-takeover"===e.id))return e;let n=t.userName||"a team member";return[...e,{id:"system-takeover",role:"system",content:`You're now connected with ${n}.`,createdAt:(new Date).toISOString()}]})):(b(null),w(null))}else"support-typing"===e?t.isTyping?(f(!0),t.userName&&b(t.userName),t.agentAvatar&&w(t.agentAvatar)):f(!1):"thinking-start"===e||"typing-start"===e?Y&&f(!0):"conversation-closed"===e&&(y(!0),f(!1),a(e=>e.some(e=>"system-closed"===e.id)?e:[...e,{id:"system-closed",role:"system",content:"This conversation has been closed. Thank you for reaching out!",createdAt:(new Date).toISOString()}]))})},oe=()=>{e.sessionId=null,$(null),a([]),y(!1),p(!1),b(null),w(null),r("chat")},ae=async()=>{if(!c.trim())return;let t="user_"+Date.now(),n={id:t,role:"user",content:c,createdAt:(new Date).toISOString()};a(e=>[...e,n]),u(""),d||f(!0);try{let i=await e.sendMessage(n.content);i.isHumanTakeover&&(p(!0),f(!1),$("Support Team"),a(e=>e.some(e=>"system-takeover"===e.id)?e:[...e,{id:"system-takeover",role:"system",content:"A team member will be with you shortly.",createdAt:(new Date).toISOString()}])),i.message?.message?.id&&a(e=>e.map(e=>e.id===t?{...e,id:i.message.message.id}:e)),i.agentName&&!i.isHumanTakeover&&$(i.agentName),se()}catch(e){f(!1)}},pe=e=>{a(t=>{let n=t[t.length-1];return n&&"assistant"===n.role?[...t.slice(0,-1),{...n,content:n.content+e}]:[...t,{id:"bot_"+Date.now(),role:"assistant",content:e,createdAt:(new Date).toISOString(),agentName:S.current||void 0}]})},me="dark"===q,ye="glass"===q,ve={"--vemly-primary":C,"--vemly-primary-hover":C,"--vemly-radius":`${M}px`,"--vemly-header-text":D,"--vemly-user-text":O,"--vemly-bg":me?"#1f2937":ye?"rgba(255, 255, 255, 0.8)":"#ffffff","--vemly-surface":me?"#111827":ye?"rgba(249, 250, 251, 0.5)":"#f9fafb","--vemly-text":me?"#f9fafb":"#111827","--vemly-text-secondary":me?"#9ca3af":"#6b7280","--vemly-text-muted":me?"#6b7280":"#9ca3af","--vemly-border":me?"#374151":"#e5e7eb","--vemly-user-bg":"#111827","--vemly-ai-bg":me?"#374151":"#ffffff"},ge=ye?{backdropFilter:"blur(12px)",WebkitBackdropFilter:"blur(12px)"}:{},be=A.title||"Vemly",xe=A.titleAlignment||"left";return te&&W&&Q&&W?Be("div",{className:"vemly-widget-container",style:ve,"data-position":Z,children:[Be("div",{className:"vemly-window "+(t?"open":""),style:ge,children:[Be("div",{className:"vemly-header",style:{color:D},children:[Be("div",{className:"vemly-header-top",children:[Be("div",{className:"vemly-brand",children:"chat"===i&&Be("button",{className:"vemly-back-btn",onClick:()=>{y(!1),r("home"),le()},children:Be(ue,{size:20})})}),Be("button",{className:"vemly-close",onClick:re,style:{color:D},children:Be(de,{size:20})})]}),Be("div",{className:"vemly-header-content",style:{textAlign:xe},children:[Be("h3",{children:be}),Be("p",{style:{opacity:.9},children:"home"===i?A.greeting||"We're here to help":"Ask us anything"})]}),Be("div",{className:"vemly-status",style:{justifyContent:"center"===xe?"center":"flex-start"},children:[Be("span",{className:"vemly-status-dot"}),Be("span",{style:{opacity:.9},children:"We typically reply instantly"})]})]}),Be("div","home"===i?{className:"vemly-home",children:Be("div",{className:"vemly-home-content",children:[Be("button",{onClick:oe,className:"vemly-start-btn",style:{backgroundColor:me?"#374151":"#111827",color:"#ffffff"},children:[Be(he,{size:18}),Be("span",{children:"Start a conversation"})]}),l.length>0&&Be(g,{children:[Be("div",{className:"vemly-section-title",children:"Recent conversations"}),Be("div",{className:"vemly-session-list",children:l.slice(0,5).map(t=>Be("div",{onClick:()=>(async(t,n)=>{e.sessionId=t,$(n||null),r("chat"),a([]);try{let i=await fetch(`${e.apiUrl}/chat/session/${t}`,{headers:{"x-vemly-api-key":e.apiKey,"Content-Type":"application/json"}});if(i.ok){let e=await i.json(),t=!!e.session?.isHumanTakeover;t&&p(!0);let r=t?"Support Team":e.agent?.name||n;if(r&&$(r),e.session?.closedAt&&y(!0),e.messages){let t=e.messages.map(e=>({...e,agentName:e.agentName||("assistant"===e.role?r:void 0),agentAvatar:e.agentAvatar}));a(t)}}se()}catch(e){}})(t.id,t.agentName),className:"vemly-session-item",style:{backgroundColor:me?"#374151":"#ffffff",borderColor:me?"#4b5563":"#e5e7eb"},children:[Be("div",{className:"vemly-session-title",style:{color:me?"#fff":"#111827"},children:t.title||"New Conversation"}),Be("div",{className:"vemly-session-date",children:new Date(t.createdAt||Date.now()).toLocaleDateString()})]},t.id))})]}),0===l.length&&Be("div",{className:"vemly-empty",children:"No previous conversations"})]})}:{className:"vemly-messages",style:{backgroundColor:me?"#1f2937":"glass"===q?"transparent":"#f9fafb"},children:[o.map((e,t)=>Be("div",{className:`vemly-message-group ${e.role}`,children:"system"===e.role?Be("div",{className:"vemly-message-content",children:Be("p",{children:e.content})}):Be(g,{children:[("assistant"===e.role||"tool"===e.role)&&Be("div",{className:"vemly-sender",children:[e.agentAvatar?Be("img",{src:e.agentAvatar,alt:e.agentName||"Bot",className:"vemly-sender-avatar-img"}):Be("div",{className:"vemly-sender-avatar",children:(e.agentName||_||"Bot").substring(0,2).toUpperCase()}),Be("div",{className:"vemly-sender-name",style:{color:me?"#e5e7eb":"#111827"},children:e.agentName||_||"Bot"})]}),Be("div",{className:"vemly-message-content",children:Be("div",{dangerouslySetInnerHTML:{q:Fe.parse(e.content||"")}})})]})},e.id||t)),h&&(()=>{let e=d&&v?v:_||"Vemly";return Be("div",{className:"vemly-message-group assistant",children:[Be("div",{className:"vemly-sender",children:[d&&x?Be("img",{src:x,alt:e,className:"vemly-sender-avatar-img"}):Be("div",{className:"vemly-sender-avatar",children:e.substring(0,2).toUpperCase()}),Be("div",{className:"vemly-sender-name",children:e})]}),Be("div",{className:"vemly-typing",style:{backgroundColor:me?"#374151":"#ffffff",borderColor:me?"#4b5563":"#e5e7eb"},children:[Be("div",{className:"vemly-dot"}),Be("div",{className:"vemly-dot"}),Be("div",{className:"vemly-dot"})]})]})})(),Be("div",{ref:k})]}),"chat"===i&&Be("div",{className:"vemly-input-container",style:{backgroundColor:me?"#1f2937":"#ffffff",borderColor:me?"#374151":"#e5e7eb",opacity:m?.7:1},children:[Be("div",m?{style:{padding:"12px 16px",textAlign:"center"},children:[Be("p",{style:{fontSize:"13px",color:me?"#9ca3af":"#6b7280",marginBottom:"12px"},children:"This conversation is closed."}),Be("button",{onClick:oe,style:{display:"inline-flex",alignItems:"center",gap:"8px",padding:"8px 16px",backgroundColor:C,color:"#ffffff",border:"none",borderRadius:"8px",fontSize:"13px",fontWeight:500,cursor:"pointer"},children:[Be(he,{size:16}),"Start New Conversation"]})]}:{className:"vemly-input-wrapper",style:{backgroundColor:me?"#111827":"#f9fafb",borderColor:me?"#374151":"#e5e7eb"},children:[Be("textarea",{className:"vemly-input",placeholder:"Send a message...",value:c,onInput:t=>{let n=t.target.value;if(u(n),e.sessionId){let t=Date.now();t-N.current>1500&&(e.sendTyping(!0),N.current=t),z.current&&clearTimeout(z.current),z.current=setTimeout(()=>{e.sendTyping(!1),z.current=null,N.current=0},3e3)}},onKeyDown:e=>{"Enter"===e.key&&!e.shiftKey&&(e.preventDefault(),ae())},rows:1,style:{color:me?"#f3f4f6":"#111827"}}),Be("button",{className:"vemly-send",onClick:ae,disabled:!c.trim()||h,children:Be(fe,{size:16})})]}),H&&Be("div",{className:"vemly-branding",children:["Powered by ",Be("a",{href:"https://usevemly.com",target:"_blank",rel:"noopener",children:"Vemly"})]})]})]}),Be("button",{className:"vemly-bubble",onClick:re,children:Be(t?de:"bot"===L?ce:he,{size:24})})]}):null}var Ue=class{apiUrl;tenantId;agentId;apiKey;deviceId;sessionId=null;sseSource=null;sseController=null;constructor(e){this.apiUrl=e.apiUrl||"https://api.usevemly.com",this.tenantId=e.tenantId,this.agentId=e.agentId,this.apiKey=e.apiKey,this.deviceId=this.getOrCreateDeviceId()}getOrCreateDeviceId(){if(typeof window>"u")return"server";let e=localStorage.getItem("vemly_device_id");return e||(e="dev_"+Math.random().toString(36).substring(2,15),localStorage.setItem("vemly_device_id",e)),e}async createSession(){let e={"Content-Type":"application/json"};this.apiKey&&(e["x-vemly-api-key"]=this.apiKey);let t=await fetch(`${this.apiUrl}/chat/session`,{method:"POST",headers:e,body:JSON.stringify({...this.tenantId?{tenantId:this.tenantId}:{},agentId:this.agentId,deviceId:this.deviceId})});if(!t.ok)throw new Error("Failed to create session");let n=await t.json();return this.sessionId=n.session?.id||n.id,{session:n.session||n,agentName:n.agent?.name}}async resumeSession(){let e={"Content-Type":"application/json"};this.apiKey&&(e["x-vemly-api-key"]=this.apiKey);let t=await fetch(`${this.apiUrl}/chat/session/resume`,{method:"POST",headers:e,body:JSON.stringify({tenantId:this.tenantId,deviceId:this.deviceId})});if(!t.ok)return null;let n=await t.json();return this.sessionId=n.session?.id||null,n.session}async getHistory(e=20){let t={"Content-Type":"application/json"};this.apiKey&&(t["x-vemly-api-key"]=this.apiKey);let n={deviceId:this.deviceId,limit:e.toString()};this.tenantId&&(n.tenantId=this.tenantId);let i=new URLSearchParams(n),r=await fetch(`${this.apiUrl}/chat/sessions/device?${i.toString()}`,{method:"GET",headers:t});return r.ok&&(await r.json()).sessions||[]}async getWidgetConfig(){try{let e=`${this.apiUrl}/chat/config`;this.tenantId&&(e+=`/${this.tenantId}`);let t={};return this.apiKey&&(t["x-vemly-api-key"]=this.apiKey),await(await fetch(e,{method:"GET",headers:t})).json()||{}}catch(e){return{}}}async sendMessage(e,t){let n,i;if(!this.sessionId){let e=await this.createSession();n=e.agentName,i=e.session.isHumanTakeover}let r={"Content-Type":"application/json"};this.apiKey&&(r["x-vemly-api-key"]=this.apiKey);let l=await fetch(`${this.apiUrl}/chat/message`,{method:"POST",headers:r,body:JSON.stringify({sessionId:this.sessionId,content:e,role:"user"})});if(!l.ok)throw new Error("Failed to send message");return{message:await l.json(),agentName:n,isHumanTakeover:i}}async sendTyping(e){if(!this.sessionId)return;let t={"Content-Type":"application/json"};this.apiKey&&(t["x-vemly-api-key"]=this.apiKey),await fetch(`${this.apiUrl}/chat/typing`,{method:"POST",headers:t,body:JSON.stringify({sessionId:this.sessionId,isTyping:e})})}connectStream(e){if(!this.sessionId)return;this.sseController&&this.sseController.abort(),this.sseController=new AbortController;let t=`${this.apiUrl}/chat/stream/${this.sessionId}`,n={"Content-Type":"application/json"};this.apiKey&&(n["x-vemly-api-key"]=this.apiKey),fetch(t,{method:"GET",headers:n,signal:this.sseController.signal}).then(async t=>{if(!t.ok||!t.body)throw new Error(`SSE Error: ${t.status}`);let n=t.body.getReader(),i=new TextDecoder,r="";for(;;){let{value:t,done:l}=await n.read();if(l)break;r+=i.decode(t,{stream:!0});let s=r.split("\n\n");r=s.pop()||"";for(let t of s){if(!t.trim())continue;let n=t.split("\n"),i="message",r=null;for(let e of n)if(e.startsWith("event: "))i=e.substring(7).trim();else if(e.startsWith("data: "))try{r=JSON.parse(e.substring(6).trim())}catch{r=e.substring(6).trim()}null!==r&&e(i,r)}}}).catch(e=>{e.name})}disconnectStream(){this.sseSource?.close(),this.sseSource=null,this.sseController?.abort(),this.sseController=null}getSessionId(){return this.sessionId}},We=new class{client=null;container=null;shadowRoot=null;init(e){if(!this.client&&e.apiKey)try{this.client=new Ue(e),this.createContainer(),this.render()}catch(e){}}createContainer(){let e=document.getElementById("vemly-sdk-root");e&&e.remove(),this.container=document.createElement("div"),this.container.id="vemly-sdk-root",document.body.appendChild(this.container),this.shadowRoot=this.container.attachShadow({mode:"open"});let t=document.createElement("style");t.textContent='\n@import url(\'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\');\n\n:host {\n --vemly-primary: #5046e5;\n --vemly-primary-hover: #4338ca;\n --vemly-bg: #ffffff;\n --vemly-surface: #f9fafb;\n --vemly-text: #111827;\n --vemly-text-secondary: #6b7280;\n --vemly-text-muted: #9ca3af;\n --vemly-border: #e5e7eb;\n --vemly-user-bg: #111827;\n --vemly-ai-bg: #ffffff;\n --vemly-radius: 16px;\n --vemly-font: \'Inter\', -apple-system, BlinkMacSystemFont, \'Segoe UI\', sans-serif;\n}\n\n.vemly-widget-container {\n position: fixed;\n bottom: 20px;\n z-index: 2147483647;\n font-family: var(--vemly-font);\n display: flex;\n flex-direction: column;\n gap: 12px;\n pointer-events: none;\n -webkit-font-smoothing: antialiased;\n}\n\n.vemly-widget-container[data-position="right"] {\n right: 20px;\n left: auto;\n align-items: flex-end;\n}\n\n.vemly-widget-container[data-position="left"] {\n left: 20px;\n right: auto;\n align-items: flex-start;\n}\n\n.vemly-widget-container * {\n box-sizing: border-box;\n pointer-events: auto;\n}\n\n/* Launcher */\n.vemly-bubble {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: var(--vemly-primary);\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.16);\n transition: all 0.2s ease;\n border: none;\n outline: none;\n}\n\n.vemly-bubble:hover {\n background: var(--vemly-primary-hover);\n transform: scale(1.05);\n}\n\n.vemly-bubble:active {\n transform: scale(0.95);\n}\n\n/* Window */\n.vemly-window {\n width: 380px;\n height: 600px;\n max-height: calc(100vh - 100px);\n max-width: calc(100vw - 40px);\n background: var(--vemly-bg);\n border-radius: var(--vemly-radius);\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.05);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n transform-origin: bottom right;\n opacity: 0;\n transform: scale(0.95) translateY(10px);\n transition: all 0.2s ease;\n visibility: hidden;\n}\n\n.vemly-window.open {\n opacity: 1;\n transform: scale(1) translateY(0);\n visibility: visible;\n}\n\n/* Header */\n.vemly-header {\n background: var(--vemly-primary);\n color: white;\n padding: 20px;\n flex-shrink: 0;\n}\n\n.vemly-header-top {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.vemly-brand {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.vemly-back-btn {\n background: rgba(255,255,255,0.15);\n border: none;\n color: white;\n cursor: pointer;\n padding: 6px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s;\n}\n\n.vemly-back-btn:hover {\n background: rgba(255,255,255,0.25);\n}\n\n.vemly-close {\n background: rgba(255,255,255,0.15);\n border: none;\n color: white;\n cursor: pointer;\n padding: 6px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s;\n}\n\n.vemly-close:hover {\n background: rgba(255,255,255,0.25);\n}\n\n.vemly-header-content {\n margin-top: 16px;\n}\n\n.vemly-header-content h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n letter-spacing: -0.01em;\n}\n\n.vemly-header-content p {\n margin: 4px 0 0;\n font-size: 14px;\n opacity: 0.85;\n}\n\n.vemly-status {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 12px;\n font-size: 13px;\n opacity: 0.9;\n}\n\n.vemly-status-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: #22c55e;\n}\n\n/* Messages Area */\n.vemly-messages {\n flex: 1;\n background: var(--vemly-surface);\n padding: 16px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.vemly-message-group {\n display: flex;\n flex-direction: column;\n gap: 4px;\n max-width: 85%;\n animation: vemly-fade-in 0.25s ease-out;\n}\n\n@keyframes vemly-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.vemly-message-group.assistant {\n align-self: flex-start;\n}\n\n.vemly-message-group.user {\n align-self: flex-end;\n}\n\n.vemly-sender {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 4px;\n}\n\n.vemly-sender-avatar {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n background: var(--vemly-primary);\n color: white;\n font-size: 11px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.vemly-sender-avatar-img {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n object-fit: cover;\n}\n\n.vemly-sender-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--vemly-text);\n}\n\n.vemly-message-content {\n padding: 12px 16px;\n border-radius: 16px;\n font-size: 14px;\n line-height: 1.5;\n}\n\n.vemly-message-group.assistant .vemly-message-content {\n background: white;\n color: var(--vemly-text);\n border: 1px solid var(--vemly-border);\n border-top-left-radius: 4px;\n}\n\n.vemly-message-group.user .vemly-message-content {\n background: var(--vemly-user-bg);\n color: white;\n border-top-right-radius: 4px;\n}\n\n.vemly-message-content p { margin: 0 0 8px; }\n.vemly-message-content p:last-child { margin: 0; }\n.vemly-message-content a { color: inherit; text-decoration: underline; }\n.vemly-message-content code {\n background: rgba(0,0,0,0.06);\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 13px;\n}\n.vemly-message-group.user .vemly-message-content code {\n background: rgba(255,255,255,0.15);\n}\n\n/* Home View */\n.vemly-home {\n flex: 1;\n background: var(--vemly-surface);\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.vemly-home-content {\n padding: 16px;\n}\n\n.vemly-start-btn {\n width: 100%;\n padding: 14px 16px;\n background: var(--vemly-text);\n color: white;\n border: none;\n border-radius: 12px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: all 0.15s;\n}\n\n.vemly-start-btn:hover {\n opacity: 0.9;\n transform: translateY(-1px);\n}\n\n.vemly-section-title {\n font-size: 12px;\n font-weight: 600;\n color: var(--vemly-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n margin: 20px 0 12px;\n}\n\n.vemly-session-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.vemly-session-item {\n padding: 12px 14px;\n background: white;\n border: 1px solid var(--vemly-border);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.vemly-session-item:hover {\n border-color: var(--vemly-text-muted);\n background: #fafafa;\n}\n\n.vemly-session-title {\n font-size: 14px;\n font-weight: 500;\n color: var(--vemly-text);\n margin-bottom: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.vemly-session-date {\n font-size: 12px;\n color: var(--vemly-text-muted);\n}\n\n.vemly-empty {\n text-align: center;\n padding: 24px;\n color: var(--vemly-text-muted);\n font-size: 14px;\n}\n\n/* Input */\n.vemly-input-container {\n padding: 12px 16px 16px;\n background: white;\n border-top: 1px solid var(--vemly-border);\n}\n\n.vemly-input-wrapper {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n background: var(--vemly-surface);\n border: 1px solid var(--vemly-border);\n border-radius: 12px;\n padding: 8px 8px 8px 14px;\n transition: all 0.15s;\n}\n\n.vemly-input-wrapper:focus-within {\n border-color: var(--vemly-primary);\n box-shadow: 0 0 0 3px rgba(80, 70, 229, 0.1);\n}\n\n.vemly-input {\n flex: 1;\n border: none;\n background: transparent;\n outline: none;\n font-size: 14px;\n color: var(--vemly-text);\n max-height: 100px;\n resize: none;\n font-family: inherit;\n padding: 4px 0;\n line-height: 1.4;\n}\n\n.vemly-input::placeholder {\n color: var(--vemly-text-muted);\n}\n\n.vemly-send {\n background: var(--vemly-primary);\n color: white;\n border: none;\n cursor: pointer;\n width: 32px;\n height: 32px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.15s;\n flex-shrink: 0;\n}\n\n.vemly-send:hover:not(:disabled) {\n background: var(--vemly-primary-hover);\n}\n\n.vemly-send:disabled {\n background: var(--vemly-border);\n color: var(--vemly-text-muted);\n cursor: default;\n}\n\n.vemly-branding {\n font-size: 11px;\n text-align: center;\n color: var(--vemly-text-muted);\n margin-top: 8px;\n}\n\n.vemly-branding a {\n color: var(--vemly-text-secondary);\n text-decoration: none;\n font-weight: 500;\n}\n\n/* Typing */\n.vemly-typing {\n display: flex;\n gap: 4px;\n padding: 14px 16px;\n background: white;\n border: 1px solid var(--vemly-border);\n border-radius: 16px;\n border-top-left-radius: 4px;\n width: fit-content;\n}\n\n.vemly-dot {\n width: 6px;\n height: 6px;\n background: var(--vemly-text-muted);\n border-radius: 50%;\n animation: vemly-bounce 1.4s infinite ease-in-out;\n}\n\n.vemly-dot:nth-child(1) { animation-delay: -0.32s; }\n.vemly-dot:nth-child(2) { animation-delay: -0.16s; }\n\n@keyframes vemly-bounce {\n 0%, 80%, 100% { transform: scale(0.6); }\n 40% { transform: scale(1); }\n}\n\n/* Mobile */\n@media (max-width: 480px) {\n .vemly-widget-container,\n .vemly-widget-container[data-position="right"],\n .vemly-widget-container[data-position="left"] {\n bottom: 0;\n right: 0;\n left: 0;\n align-items: flex-end; /* Always bottom sheet style or full screen */\n }\n \n .vemly-window {\n width: 100vw;\n height: 100vh;\n max-width: none;\n max-height: none;\n border-radius: 0;\n }\n \n .vemly-bubble {\n position: fixed;\n bottom: 16px;\n right: 16px;\n z-index: 2147483648; /* Ensure bubble is on top if needed */\n }\n}\n',this.shadowRoot.appendChild(t)}render(){if(!this.shadowRoot||!this.client)return;let n=document.createElement("div");this.shadowRoot.appendChild(n),function(n,i){var r,l,s;t.h&&t.h(n,i),r=i.o,l=[],s=[],I(i,n=i.o=y(g,null,[n]),r||u,u,i.namespaceURI,r?null:i.firstChild?e.call(i.childNodes):null,l,r?r.m:i.firstChild,!1,s),M(l,n,s)}(y(He,{client:this.client}),n)}};typeof window<"u"&&(window.Vemly=We)}();
|
|
1
|
+
!function(){var e,t,n,i,r,l,s,o,a,c,u={},h=[],f=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,d=Array.isArray;function p(e,t){for(var n in t)e[n]=t[n];return e}function m(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function y(t,n,i){var r,l,s,o={};for(s in n)"key"==s?r=n[s]:"ref"==s?l=n[s]:o[s]=n[s];if(arguments.length>2&&(o.children=arguments.length>3?e.call(arguments,2):i),"function"==typeof t&&null!=t.defaultProps)for(s in t.defaultProps)void 0===o[s]&&(o[s]=t.defaultProps[s]);return v(t,o,r,l,null)}function v(e,i,r,l,s){var o={type:e,props:i,key:r,ref:l,o:null,h:null,p:0,m:null,v:void 0,k:null,constructor:void 0,_:s??++n,$:-1,S:0};return null==s&&null!=t.vnode&&t.vnode(o),o}function g(e){return e.children}function b(e,t){this.props=e,this.context=t}function x(e,t){if(null==t)return e.h?x(e.h,e.$+1):null;for(var n;t<e.o.length;t++)if(null!=(n=e.o[t])&&null!=n.m)return n.m;return"function"==typeof e.type?x(e):null}function w(e){var t,n;if(null!=(e=e.h)&&null!=e.k){for(e.m=e.k.base=null,t=0;t<e.o.length;t++)if(null!=(n=e.o[t])&&null!=n.m){e.m=e.k.base=n.m;break}return w(e)}}function k(e){(!e.v&&(e.v=!0)&&i.push(e)&&!_.N++||r!==t.debounceRendering)&&((r=t.debounceRendering)||l)(_)}function _(){var e,n,r,l,o,a,c,u;for(i.sort(s);e=i.shift();)e.v&&(n=i.length,l=void 0,a=(o=(r=e)._).m,c=[],u=[],r.A&&((l=p({},o))._=o._+1,t.vnode&&t.vnode(l),I(r.A,l,o,r.T,r.A.namespaceURI,32&o.S?[a]:null,c,a??x(o),!!(32&o.S),u),l._=o._,l.h.o[l.$]=l,M(c,l,u),l.m!=a&&w(l)),i.length>n&&i.sort(s));_.N=0}function $(e,t,n,i,r,l,s,o,a,c,f){var p,m,y,b,w,k=i&&i.o||h,_=t.length;for(n.v=a,function(e,t,n){var i,r,l,s,o,a=t.length,c=n.length,u=c,h=0;for(e.o=[],i=0;i<a;i++)null!=(r=t[i])&&"boolean"!=typeof r&&"function"!=typeof r?(s=i+h,(r=e.o[i]="string"==typeof r||"number"==typeof r||"bigint"==typeof r||r.constructor==String?v(null,r,null,null,null):d(r)?v(g,{children:r},null,null,null):void 0===r.constructor&&r.p>0?v(r.type,r.props,r.key,r.ref?r.ref:null,r._):r).h=e,r.p=e.p+1,l=null,-1!==(o=r.$=N(r,n,s,u))&&(u--,(l=n[o])&&(l.S|=131072)),null==l||null===l._?(-1==o&&h--,"function"!=typeof r.type&&(r.S|=65536)):o!==s&&(o==s-1?h--:o==s+1?h++:(o>s?h--:h++,r.S|=65536))):r=e.o[i]=null;if(u)for(i=0;i<c;i++)null!=(l=n[i])&&!(131072&l.S)&&(l.m==e.v&&(e.v=x(l)),Z(l,l))}(n,t,k),a=n.v,p=0;p<_;p++)null!=(y=n.o[p])&&(m=-1===y.$?u:k[y.$]||u,y.$=p,I(e,y,m,r,l,s,o,a,c,f),b=y.m,y.ref&&m.ref!=y.ref&&(m.ref&&E(m.ref,null,y),f.push(y.ref,y.k||b,y)),null==w&&null!=b&&(w=b),65536&y.S||m.o===y.o?a=S(y,a,e):"function"==typeof y.type&&void 0!==y.v?a=y.v:b&&(a=b.nextSibling),y.v=void 0,y.S&=-196609);n.v=a,n.m=w}function S(e,t,n){var i,r;if("function"==typeof e.type){for(i=e.o,r=0;i&&r<i.length;r++)i[r]&&(i[r].h=e,t=S(i[r],t,n));return t}e.m!=t&&(t&&e.type&&!n.contains(t)&&(t=x(e)),n.insertBefore(e.m,t||null),t=e.m);do{t=t&&t.nextSibling}while(null!=t&&8===t.nodeType);return t}function z(e,t){return t=t||[],null==e||"boolean"==typeof e||(d(e)?e.some(function(e){z(e,t)}):t.push(e)),t}function N(e,t,n,i){var r=e.key,l=e.type,s=n-1,o=n+1,a=t[n];if(null===a||a&&r==a.key&&l===a.type&&!(131072&a.S))return n;if(i>(null==a||131072&a.S?0:1))for(;s>=0||o<t.length;){if(s>=0){if((a=t[s])&&!(131072&a.S)&&r==a.key&&l===a.type)return s;s--}if(o<t.length){if((a=t[o])&&!(131072&a.S)&&r==a.key&&l===a.type)return o;o++}}return-1}function A(e,t,n){"-"===t[0]?e.setProperty(t,n??""):e[t]=null==n?"":"number"!=typeof n||f.test(t)?n:n+"px"}function T(e,t,n,i,r){var l;e:if("style"===t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof i&&(e.style.cssText=i=""),i)for(t in i)n&&t in n||A(e.style,t,"");if(n)for(t in n)i&&n[t]===i[t]||A(e.style,t,n[t])}else if("o"===t[0]&&"n"===t[1])l=t!==(t=t.replace(/(PointerCapture)$|Capture$/i,"$1")),t=t.toLowerCase()in e||"onFocusOut"===t||"onFocusIn"===t?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+l]=n,n?i?n.u=i.u:(n.u=o,e.addEventListener(t,l?c:a,l)):e.removeEventListener(t,l?c:a,l);else{if("http://www.w3.org/2000/svg"==r)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("width"!=t&&"height"!=t&&"href"!=t&&"list"!=t&&"form"!=t&&"tabIndex"!=t&&"download"!=t&&"rowSpan"!=t&&"colSpan"!=t&&"role"!=t&&"popover"!=t&&t in e)try{e[t]=n??"";break e}catch{}"function"==typeof n||(null==n||!1===n&&"-"!==t[4]?e.removeAttribute(t):e.setAttribute(t,"popover"==t&&1==n?"":n))}}function C(e){return function(n){if(this.l){var i=this.l[n.type+e];if(null==n.t)n.t=o++;else if(n.t<i.u)return;return i(t.event?t.event(n):n)}}}function I(n,i,r,l,s,o,a,c,h,f){var y,v,w,k,_,S,z,N,A,C,I,M,E,Z,q,R,D=i.type;if(void 0!==i.constructor)return null;128&r.S&&(h=!!(32&r.S),o=[c=i.m=r.m]),(y=t.p)&&y(i);e:if("function"==typeof D)try{if(N=i.props,A="prototype"in D&&D.prototype.render,C=(y=D.contextType)&&l[y.k],I=y?C?C.props.value:y.h:l,r.k?z=(v=i.k=r.k).h=v.C:(A?i.k=v=new D(N,I):(i.k=v=new b(N,I),v.constructor=D,v.render=j),C&&C.sub(v),v.props=N,v.state||(v.state={}),v.context=I,v.T=l,w=v.v=!0,v.I=[],v.M=[]),A&&null==v.Z&&(v.Z=v.state),A&&null!=D.getDerivedStateFromProps&&(v.Z==v.state&&(v.Z=p({},v.Z)),p(v.Z,D.getDerivedStateFromProps(N,v.Z))),k=v.props,_=v.state,v._=i,w)A&&null==D.getDerivedStateFromProps&&null!=v.componentWillMount&&v.componentWillMount(),A&&null!=v.componentDidMount&&v.I.push(v.componentDidMount);else{if(A&&null==D.getDerivedStateFromProps&&N!==k&&null!=v.componentWillReceiveProps&&v.componentWillReceiveProps(N,I),!v.m&&(null!=v.shouldComponentUpdate&&!1===v.shouldComponentUpdate(N,v.Z,I)||i._===r._)){for(i._!==r._&&(v.props=N,v.state=v.Z,v.v=!1),i.m=r.m,i.o=r.o,i.o.some(function(e){e&&(e.h=i)}),M=0;M<v.M.length;M++)v.I.push(v.M[M]);v.M=[],v.I.length&&a.push(v);break e}null!=v.componentWillUpdate&&v.componentWillUpdate(N,v.Z,I),A&&null!=v.componentDidUpdate&&v.I.push(function(){v.componentDidUpdate(k,_,S)})}if(v.context=I,v.props=N,v.A=n,v.m=!1,E=t.N,Z=0,A){for(v.state=v.Z,v.v=!1,E&&E(i),y=v.render(v.props,v.state,v.context),q=0;q<v.M.length;q++)v.I.push(v.M[q]);v.M=[]}else do{v.v=!1,E&&E(i),y=v.render(v.props,v.state,v.context),v.state=v.Z}while(v.v&&++Z<25);v.state=v.Z,null!=v.getChildContext&&(l=p(p({},l),v.getChildContext())),A&&!w&&null!=v.getSnapshotBeforeUpdate&&(S=v.getSnapshotBeforeUpdate(k,_)),$(n,d(R=null!=y&&y.type===g&&null==y.key?y.props.children:y)?R:[R],i,r,l,s,o,a,c,h,f),v.base=i.m,i.S&=-161,v.I.length&&a.push(v),z&&(v.C=v.h=null)}catch(e){if(i._=null,h||null!=o){for(i.S|=h?160:128;c&&8===c.nodeType&&c.nextSibling;)c=c.nextSibling;o[o.indexOf(c)]=null,i.m=c}else i.m=r.m,i.o=r.o;t.m(e,i,r)}else null==o&&i._===r._?(i.o=r.o,i.m=r.m):i.m=function(n,i,r,l,s,o,a,c,h){var f,p,y,v,g,b,w,k=r.props,_=i.props,S=i.type;if("svg"===S?s="http://www.w3.org/2000/svg":"math"===S?s="http://www.w3.org/1998/Math/MathML":s||(s="http://www.w3.org/1999/xhtml"),null!=o)for(f=0;f<o.length;f++)if((g=o[f])&&"setAttribute"in g==!!S&&(S?g.localName===S:3===g.nodeType)){n=g,o[f]=null;break}if(null==n){if(null===S)return document.createTextNode(_);n=document.createElementNS(s,S,_.is&&_),c&&(t.j&&t.j(i,o),c=!1),o=null}if(null===S)k===_||c&&n.data===_||(n.data=_);else{if(o=o&&e.call(n.childNodes),k=r.props||u,!c&&null!=o)for(k={},f=0;f<n.attributes.length;f++)k[(g=n.attributes[f]).name]=g.value;for(f in k)if(g=k[f],"children"!=f)if("dangerouslySetInnerHTML"==f)y=g;else if(!(f in _)){if("value"==f&&"defaultValue"in _||"checked"==f&&"defaultChecked"in _)continue;T(n,f,null,g,s)}for(f in _)g=_[f],"children"==f?v=g:"dangerouslySetInnerHTML"==f?p=g:"value"==f?b=g:"checked"==f?w=g:c&&"function"!=typeof g||k[f]===g||T(n,f,g,k[f],s);if(p)c||y&&(p.q===y.q||p.q===n.innerHTML)||(n.innerHTML=p.q),i.o=[];else if(y&&(n.innerHTML=""),$(n,d(v)?v:[v],i,r,l,"foreignObject"===S?"http://www.w3.org/1999/xhtml":s,o,a,o?o[0]:r.o&&x(r,0),c,h),null!=o)for(f=o.length;f--;)m(o[f]);c||(f="value","progress"===S&&null==b?n.removeAttribute("value"):void 0!==b&&(b!==n[f]||"progress"===S&&!b||"option"===S&&b!==k[f])&&T(n,f,b,k[f],s),f="checked",void 0!==w&&w!==n[f]&&T(n,f,w,k[f],s))}return n}(r.m,i,r,l,s,o,a,h,f);(y=t.diffed)&&y(i)}function M(e,n,i){n.v=void 0;for(var r=0;r<i.length;r++)E(i[r],i[++r],i[++r]);t.k&&t.k(n,e),e.some(function(n){try{e=n.I,n.I=[],e.some(function(e){e.call(n)})}catch(e){t.m(e,n._)}})}function E(e,n,i){try{if("function"==typeof e){var r="function"==typeof e.S;r&&e.S(),r&&null==n||(e.S=e(n))}else e.current=n}catch(e){t.m(e,i)}}function Z(e,n,i){var r,l;if(t.unmount&&t.unmount(e),(r=e.ref)&&(r.current&&r.current!==e.m||E(r,null,n)),null!=(r=e.k)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){t.m(e,n)}r.base=r.A=null}if(r=e.o)for(l=0;l<r.length;l++)r[l]&&Z(r[l],n,i||"function"!=typeof e.type);i||m(e.m),e.k=e.h=e.m=e.v=void 0}function j(e,t,n){return this.constructor(e,n)}e=h.slice,t={m:function(e,t,n,i){for(var r,l,s;t=t.h;)if((r=t.k)&&!r.h)try{if((l=r.constructor)&&null!=l.getDerivedStateFromError&&(r.setState(l.getDerivedStateFromError(e)),s=r.v),null!=r.componentDidCatch&&(r.componentDidCatch(e,i||{}),s=r.v),s)return r.C=r}catch(t){e=t}throw e}},n=0,b.prototype.setState=function(e,t){var n;n=null!=this.Z&&this.Z!==this.state?this.Z:this.Z=p({},this.state),"function"==typeof e&&(e=e(p({},n),this.props)),e&&p(n,e),null!=e&&this._&&(t&&this.M.push(t),k(this))},b.prototype.forceUpdate=function(e){this._&&(this.m=!0,e&&this.I.push(e),k(this))},b.prototype.render=g,i=[],l="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,s=function(e,t){return e._.p-t._.p},_.N=0,o=0,a=C(!1),c=C(!0);var q,R,D,P,O=0,F=[],L=t,B=L.p,H=L.N,U=L.diffed,W=L.k,V=L.unmount,Y=L.h;function J(e,t){L.I&&L.I(R,e,O||t),O=0;var n=R.R||(R.R={h:[],I:[]});return e>=n.h.length&&n.h.push({}),n.h[e]}function X(e){return O=1,function(e,t){var n=J(q++,2);if(n.t=e,!n.k&&(n.h=[le(void 0,t),function(e){var t=n.D?n.D[0]:n.h[0],i=n.t(t,e);t!==i&&(n.D=[i,n.h[1]],n.k.setState({}))}],n.k=R,!R.u)){var i=function(e,t,i){if(!n.k.R)return!0;var l=n.k.R.h.filter(function(e){return!!e.k});if(l.every(function(e){return!e.D}))return!r||r.call(this,e,t,i);var s=!1;return l.forEach(function(e){if(e.D){var t=e.h[0];e.h=e.D,e.D=void 0,t!==e.h[0]&&(s=!0)}}),!(!s&&n.k.props===e)&&(!r||r.call(this,e,t,i))};R.u=!0;var r=R.shouldComponentUpdate,l=R.componentWillUpdate;R.componentWillUpdate=function(e,t,n){if(this.m){var s=r;r=void 0,i(e,t,n),r=s}l&&l.call(this,e,t,n)},R.shouldComponentUpdate=i}return n.D||n.h}(le,e)}function G(e,t){var n=J(q++,3);!L.Z&&re(n.R,t)&&(n.h=e,n.i=t,R.R.I.push(n))}function K(e){return O=5,function(e,t){var n=J(q++,7);return re(n.R,t)&&(n.h=e(),n.R=t,n.I=e),n.h}(function(){return{current:e}},[])}function Q(){for(var e;e=F.shift();)if(e.A&&e.R)try{e.R.I.forEach(ne),e.R.I.forEach(ie),e.R.I=[]}catch(t){e.R.I=[],L.m(t,e._)}}L.p=function(e){R=null,B&&B(e)},L.h=function(e,t){e&&t.o&&t.o.j&&(e.j=t.o.j),Y&&Y(e,t)},L.N=function(e){H&&H(e),q=0;var t=(R=e.k).R;t&&(D===R?(t.I=[],R.I=[],t.h.forEach(function(e){e.D&&(e.h=e.D),e.i=e.D=void 0})):(t.I.forEach(ne),t.I.forEach(ie),t.I=[],q=0)),D=R},L.diffed=function(e){U&&U(e);var t=e.k;t&&t.R&&(t.R.I.length&&(1!==F.push(t)&&P===L.requestAnimationFrame||((P=L.requestAnimationFrame)||te)(Q)),t.R.h.forEach(function(e){e.i&&(e.R=e.i),e.i=void 0})),D=R=null},L.k=function(e,t){t.some(function(e){try{e.I.forEach(ne),e.I=e.I.filter(function(e){return!e.h||ie(e)})}catch(n){t.some(function(e){e.I&&(e.I=[])}),t=[],L.m(n,e._)}}),W&&W(e,t)},L.unmount=function(e){V&&V(e);var t,n=e.k;n&&n.R&&(n.R.h.forEach(function(e){try{ne(e)}catch(e){t=e}}),n.R=void 0,t&&L.m(t,n._))};var ee="function"==typeof requestAnimationFrame;function te(e){var t,n=function(){clearTimeout(i),ee&&cancelAnimationFrame(t),setTimeout(e)},i=setTimeout(n,100);ee&&(t=requestAnimationFrame(n))}function ne(e){var t=R,n=e.k;"function"==typeof n&&(e.k=void 0,n()),R=t}function ie(e){var t=R;e.k=e.h(),R=t}function re(e,t){return!e||e.length!==t.length||t.some(function(t,n){return t!==e[n]})}function le(e,t){return"function"==typeof t?t(e):t}var se={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},oe=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),ae=(e,t)=>{let n=({color:n="currentColor",size:i=24,strokeWidth:r=2,absoluteStrokeWidth:l,children:s,...o})=>y("svg",{...se,width:String(i),height:i,stroke:n,"stroke-width":l?24*Number(r)/Number(i):r,class:`lucide lucide-${oe(e)}`,...o},[...t.map(([e,t])=>y(e,t)),...z(s)]);return n.displayName=`${e}`,n},ce=ae("Bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]),ue=ae("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]),he=ae("MessageCircle",[["path",{d:"m3 21 1.9-5.7a8.5 8.5 0 1 1 3.8 3.8z",key:"v2veuj"}]]),fe=ae("Send",[["path",{d:"m22 2-7 20-4-9-9-4Z",key:"1q3vgg"}],["path",{d:"M22 2 11 13",key:"nzbqef"}]]),de=ae("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);var pe={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};function me(e){pe=e}var ye=/[&<>"']/,ve=new RegExp(ye.source,"g"),ge=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,be=new RegExp(ge.source,"g"),xe={"&":"&","<":"<",">":">",'"':""","'":"'"},we=e=>xe[e];function ke(e,t){if(t){if(ye.test(e))return e.replace(ve,we)}else if(ge.test(e))return e.replace(be,we);return e}var _e=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function $e(e){return e.replace(_e,(e,t)=>"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):"")}var Se=/(^|[^\[])\^/g;function ze(e,t){e="string"==typeof e?e:e.source,t=t||"";let n={replace:(t,i)=>(i=(i="object"==typeof i&&"source"in i?i.source:i).replace(Se,"$1"),e=e.replace(t,i),n),getRegex:()=>new RegExp(e,t)};return n}function Ne(e){try{e=encodeURI(e).replace(/%25/g,"%")}catch{return null}return e}var Ae={exec:()=>null};function Te(e,t){let n=e.replace(/\|/g,(e,t,n)=>{let i=!1,r=t;for(;--r>=0&&"\\"===n[r];)i=!i;return i?"|":" |"}).split(/ \|/),i=0;if(n[0].trim()||n.shift(),n.length>0&&!n[n.length-1].trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(;i<n.length;i++)n[i]=n[i].trim().replace(/\\\|/g,"|");return n}function Ce(e,t,n){let i=e.length;if(0===i)return"";let r=0;for(;r<i&&e.charAt(i-r-1)===t;)r++;return e.slice(0,i-r)}function Ie(e,t,n,i){let r=t.href,l=t.title?ke(t.title):null,s=e[1].replace(/\\([\[\]])/g,"$1");if("!"!==e[0].charAt(0)){i.state.inLink=!0;let e={type:"link",raw:n,href:r,title:l,text:s,tokens:i.inlineTokens(s)};return i.state.inLink=!1,e}return{type:"image",raw:n,href:r,title:l,text:ke(s)}}var Me=class{options;rules;lexer;constructor(e){this.options=e||pe}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let e=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?e:Ce(e,"\n")}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let e=t[0],n=function(e,t){let n=e.match(/^(\s+)(?:```)/);if(null===n)return t;let i=n[1];return t.split("\n").map(e=>{let t=e.match(/^\s+/);if(null===t)return e;let[n]=t;return n.length>=i.length?e.slice(i.length):e}).join("\n")}(e,t[3]||"");return{type:"code",raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.P,"$1"):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(/#$/.test(e)){let t=Ce(e,"#");(this.options.pedantic||!t||/ $/.test(t))&&(e=t.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let e=Ce(t[0].replace(/^ *>[ \t]?/gm,""),"\n"),n=this.lexer.state.top;this.lexer.state.top=!0;let i=this.lexer.blockTokens(e);return this.lexer.state.top=n,{type:"blockquote",raw:t[0],tokens:i,text:e}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),i=n.length>1,r={type:"list",raw:"",ordered:i,start:i?+n.slice(0,-1):"",loose:!1,items:[]};n=i?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=i?n:"[*+-]");let l=new RegExp(`^( {0,3}${n})((?:[\t ][^\\n]*)?(?:\\n|$))`),s="",o="",a=!1;for(;e;){let n=!1;if(!(t=l.exec(e))||this.rules.block.hr.test(e))break;s=t[0],e=e.substring(s.length);let i=t[2].split("\n",1)[0].replace(/^\t+/,e=>" ".repeat(3*e.length)),c=e.split("\n",1)[0],u=0;this.options.pedantic?(u=2,o=i.trimStart()):(u=t[2].search(/[^ ]/),u=u>4?1:u,o=i.slice(u),u+=t[1].length);let h=!1;if(!i&&/^ *$/.test(c)&&(s+=c+"\n",e=e.substring(c.length+1),n=!0),!n){let t=new RegExp(`^ {0,${Math.min(3,u-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),n=new RegExp(`^ {0,${Math.min(3,u-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),r=new RegExp(`^ {0,${Math.min(3,u-1)}}(?:\`\`\`|~~~)`),l=new RegExp(`^ {0,${Math.min(3,u-1)}}#`);for(;e;){let a=e.split("\n",1)[0];if(c=a,this.options.pedantic&&(c=c.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),r.test(c)||l.test(c)||t.test(c)||n.test(e))break;if(c.search(/[^ ]/)>=u||!c.trim())o+="\n"+c.slice(u);else{if(h||i.search(/[^ ]/)>=4||r.test(i)||l.test(i)||n.test(i))break;o+="\n"+c}!h&&!c.trim()&&(h=!0),s+=a+"\n",e=e.substring(a.length+1),i=c.slice(u)}}r.loose||(a?r.loose=!0:/\n *\n *$/.test(s)&&(a=!0));let f,d=null;this.options.gfm&&(d=/^\[[ xX]\] /.exec(o),d&&(f="[ ] "!==d[0],o=o.replace(/^\[[ xX]\] +/,""))),r.items.push({type:"list_item",raw:s,task:!!d,checked:f,loose:!1,text:o,tokens:[]}),r.raw+=s}r.items[r.items.length-1].raw=s.trimEnd(),r.items[r.items.length-1].text=o.trimEnd(),r.raw=r.raw.trimEnd();for(let e=0;e<r.items.length;e++)if(this.lexer.state.top=!1,r.items[e].tokens=this.lexer.blockTokens(r.items[e].text,[]),!r.loose){let t=r.items[e].tokens.filter(e=>"space"===e.type),n=t.length>0&&t.some(e=>/\n.*\n/.test(e.raw));r.loose=n}if(r.loose)for(let e=0;e<r.items.length;e++)r.items[e].loose=!0;return r}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:"html",block:!0,raw:t[0],pre:"pre"===t[1]||"script"===t[1]||"style"===t[1],text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let e=t[1].toLowerCase().replace(/\s+/g," "),n=t[2]?t[2].replace(/^<(.*)>$/,"$1").replace(this.rules.inline.P,"$1"):"",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.P,"$1"):t[3];return{type:"def",tag:e,raw:t[0],href:n,title:i}}}table(e){let t=this.rules.block.table.exec(e);if(t){if(!/[:|]/.test(t[2]))return;let e={type:"table",raw:t[0],header:Te(t[1]).map(e=>({text:e,tokens:[]})),align:t[2].replace(/^\||\| *$/g,"").split("|"),rows:t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(e.header.length===e.align.length){let t,n,i,r,l=e.align.length;for(t=0;t<l;t++){let n=e.align[t];n&&(/^ *-+: *$/.test(n)?e.align[t]="right":/^ *:-+: *$/.test(n)?e.align[t]="center":/^ *:-+ *$/.test(n)?e.align[t]="left":e.align[t]=null)}for(l=e.rows.length,t=0;t<l;t++)e.rows[t]=Te(e.rows[t],e.header.length).map(e=>({text:e,tokens:[]}));for(l=e.header.length,n=0;n<l;n++)e.header[n].tokens=this.lexer.inline(e.header[n].text);for(l=e.rows.length,n=0;n<l;n++)for(r=e.rows[n],i=0;i<r.length;i++)r[i].tokens=this.lexer.inline(r[i].text);return e}}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:"="===t[2].charAt(0)?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let e="\n"===t[1].charAt(t[1].length-1)?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:ke(t[1])}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&/^<a /i.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&/^<\/a>/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let e=t[2].trim();if(!this.options.pedantic&&/^</.test(e)){if(!/>$/.test(e))return;let t=Ce(e.slice(0,-1),"\\");if((e.length-t.length)%2==0)return}else{let e=function(e,t){if(-1===e.indexOf(t[1]))return-1;let n=0;for(let i=0;i<e.length;i++)if("\\"===e[i])i++;else if(e[i]===t[0])n++;else if(e[i]===t[1]&&(n--,n<0))return i;return-1}(t[2],"()");if(e>-1){let n=(0===t[0].indexOf("!")?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=""}}let n=t[2],i="";if(this.options.pedantic){let e=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(n);e&&(n=e[1],i=e[3])}else i=t[3]?t[3].slice(1,-1):"";return n=n.trim(),/^</.test(n)&&(n=this.options.pedantic&&!/>$/.test(e)?n.slice(1):n.slice(1,-1)),Ie(t,{href:n&&n.replace(this.rules.inline.P,"$1"),title:i&&i.replace(this.rules.inline.P,"$1")},t[0],this.lexer)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let e=(n[2]||n[1]).replace(/\s+/g," ");if(e=t[e.toLowerCase()],!e){let e=n[0].charAt(0);return{type:"text",raw:e,text:e}}return Ie(n,e,n[0],this.lexer)}}emStrong(e,t,n=""){let i=this.rules.inline.emStrong.lDelim.exec(e);if(!(!i||i[3]&&n.match(/[\p{L}\p{N}]/u))&&(!i[1]&&!i[2]||!n||this.rules.inline.punctuation.exec(n))){let n,r,l=[...i[0]].length-1,s=l,o=0,a="*"===i[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(a.lastIndex=0,t=t.slice(-1*e.length+l);null!=(i=a.exec(t));){if(n=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!n)continue;if(r=[...n].length,i[3]||i[4]){s+=r;continue}if((i[5]||i[6])&&l%3&&!((l+r)%3)){o+=r;continue}if(s-=r,s>0)continue;r=Math.min(r,r+s+o);let t=[...i[0]][0].length,a=e.slice(0,l+i.index+t+r);if(Math.min(l,r)%2){let e=a.slice(1,-1);return{type:"em",raw:a,text:e,tokens:this.lexer.inlineTokens(e)}}let c=a.slice(2,-2);return{type:"strong",raw:a,text:c,tokens:this.lexer.inlineTokens(c)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(/\n/g," "),n=/[^ ]/.test(e),i=/^ /.test(e)&&/ $/.test(e);return n&&i&&(e=e.substring(1,e.length-1)),e=ke(e,!0),{type:"codespan",raw:t[0],text:e}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let e,n;return"@"===t[2]?(e=ke(t[1]),n="mailto:"+e):(e=ke(t[1]),n=e),{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if("@"===t[2])e=ke(t[0]),n="mailto:"+e;else{let i;do{i=t[0],t[0]=this.rules.inline.O.exec(t[0])[0]}while(i!==t[0]);e=ke(t[0]),n="www."===t[1]?"http://"+t[0]:t[0]}return{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let e;return e=this.lexer.state.inRawBlock?t[0]:ke(t[0]),{type:"text",raw:t[0],text:e}}}},Ee={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:Ae,lheading:/^(?!bull )((?:.|\n(?!\s*?\n|bull ))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,F:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,L:/(?!\s*\])(?:\\.|[^\[\]\\])+/,B:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};Ee.def=ze(Ee.def).replace("label",Ee.L).replace("title",Ee.B).getRegex(),Ee.bullet=/(?:[*+-]|\d{1,9}[.)])/,Ee.listItemStart=ze(/^( *)(bull) */).replace("bull",Ee.bullet).getRegex(),Ee.list=ze(Ee.list).replace(/bull/g,Ee.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+Ee.def.source+")").getRegex(),Ee.H="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Ee.U=/<!--(?!-?>)[\s\S]*?(?:-->|$)/,Ee.html=ze(Ee.html,"i").replace("comment",Ee.U).replace("tag",Ee.H).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Ee.lheading=ze(Ee.lheading).replace(/bull/g,Ee.bullet).getRegex(),Ee.paragraph=ze(Ee.F).replace("hr",Ee.hr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ee.H).getRegex(),Ee.blockquote=ze(Ee.blockquote).replace("paragraph",Ee.paragraph).getRegex(),Ee.normal={...Ee},Ee.gfm={...Ee.normal,table:"^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"},Ee.gfm.table=ze(Ee.gfm.table).replace("hr",Ee.hr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ee.H).getRegex(),Ee.gfm.paragraph=ze(Ee.F).replace("hr",Ee.hr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Ee.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ee.H).getRegex(),Ee.pedantic={...Ee.normal,html:ze("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",Ee.U).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Ae,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:ze(Ee.normal.F).replace("hr",Ee.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",Ee.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()};var Ze={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:Ae,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,rDelimAst:/^[^_*]*?__[^_*]*?\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\*)[punct](\*+)(?=[\s]|$)|[^punct\s](\*+)(?!\*)(?=[punct\s]|$)|(?!\*)[punct\s](\*+)(?=[^punct\s])|[\s](\*+)(?!\*)(?=[punct])|(?!\*)[punct](\*+)(?!\*)(?=[punct])|[^punct\s](\*+)(?=[^punct\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\s]|$)|[^punct\s](_+)(?!_)(?=[punct\s]|$)|(?!_)[punct\s](_+)(?=[^punct\s])|[\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:Ae,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,punctuation:/^((?![*_])[\spunctuation])/,W:"\\p{P}$+<=>`^|~"};Ze.punctuation=ze(Ze.punctuation,"u").replace(/punctuation/g,Ze.W).getRegex(),Ze.blockSkip=/\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g,Ze.anyPunctuation=/\\[punct]/g,Ze.P=/\\([punct])/g,Ze.U=ze(Ee.U).replace("(?:--\x3e|$)","--\x3e").getRegex(),Ze.emStrong.lDelim=ze(Ze.emStrong.lDelim,"u").replace(/punct/g,Ze.W).getRegex(),Ze.emStrong.rDelimAst=ze(Ze.emStrong.rDelimAst,"gu").replace(/punct/g,Ze.W).getRegex(),Ze.emStrong.rDelimUnd=ze(Ze.emStrong.rDelimUnd,"gu").replace(/punct/g,Ze.W).getRegex(),Ze.anyPunctuation=ze(Ze.anyPunctuation,"gu").replace(/punct/g,Ze.W).getRegex(),Ze.P=ze(Ze.P,"gu").replace(/punct/g,Ze.W).getRegex(),Ze.V=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,Ze.Y=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,Ze.autolink=ze(Ze.autolink).replace("scheme",Ze.V).replace("email",Ze.Y).getRegex(),Ze.J=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,Ze.tag=ze(Ze.tag).replace("comment",Ze.U).replace("attribute",Ze.J).getRegex(),Ze.L=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,Ze.X=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,Ze.B=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,Ze.link=ze(Ze.link).replace("label",Ze.L).replace("href",Ze.X).replace("title",Ze.B).getRegex(),Ze.reflink=ze(Ze.reflink).replace("label",Ze.L).replace("ref",Ee.L).getRegex(),Ze.nolink=ze(Ze.nolink).replace("ref",Ee.L).getRegex(),Ze.reflinkSearch=ze(Ze.reflinkSearch,"g").replace("reflink",Ze.reflink).replace("nolink",Ze.nolink).getRegex(),Ze.normal={...Ze},Ze.pedantic={...Ze.normal,strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:ze(/^!?\[(label)\]\((.*?)\)/).replace("label",Ze.L).getRegex(),reflink:ze(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Ze.L).getRegex()},Ze.gfm={...Ze.normal,escape:ze(Ze.escape).replace("])","~|])").getRegex(),G:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,O:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/},Ze.gfm.url=ze(Ze.gfm.url,"i").replace("email",Ze.gfm.G).getRegex(),Ze.breaks={...Ze.gfm,br:ze(Ze.br).replace("{2,}","*").getRegex(),text:ze(Ze.gfm.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()};var je=class e{tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||pe,this.options.tokenizer=this.options.tokenizer||new Me,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={block:Ee.normal,inline:Ze.normal};this.options.pedantic?(t.block=Ee.pedantic,t.inline=Ze.pedantic):this.options.gfm&&(t.block=Ee.gfm,this.options.breaks?t.inline=Ze.breaks:t.inline=Ze.gfm),this.tokenizer.rules=t}static get rules(){return{block:Ee,inline:Ze}}static lex(t,n){return new e(n).lex(t)}static lexInline(t,n){return new e(n).inlineTokens(t)}lex(e){let t;for(e=e.replace(/\r\n|\r/g,"\n"),this.blockTokens(e,this.tokens);t=this.inlineQueue.shift();)this.inlineTokens(t.src,t.tokens);return this.tokens}blockTokens(e,t=[]){let n,i,r,l;for(e=this.options.pedantic?e.replace(/\t/g," ").replace(/^ +$/gm,""):e.replace(/^( *)(\t+)/gm,(e,t,n)=>t+" ".repeat(n.length));e;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(i=>!!(n=i.call({lexer:this},e,t))&&(e=e.substring(n.raw.length),t.push(n),!0)))){if(n=this.tokenizer.space(e)){e=e.substring(n.raw.length),1===n.raw.length&&t.length>0?t[t.length-1].raw+="\n":t.push(n);continue}if(n=this.tokenizer.code(e)){e=e.substring(n.raw.length),i=t[t.length-1],!i||"paragraph"!==i.type&&"text"!==i.type?t.push(n):(i.raw+="\n"+n.raw,i.text+="\n"+n.text,this.inlineQueue[this.inlineQueue.length-1].src=i.text);continue}if(n=this.tokenizer.fences(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.heading(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.hr(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.blockquote(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.list(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.html(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.def(e)){e=e.substring(n.raw.length),i=t[t.length-1],!i||"paragraph"!==i.type&&"text"!==i.type?this.tokens.links[n.tag]||(this.tokens.links[n.tag]={href:n.href,title:n.title}):(i.raw+="\n"+n.raw,i.text+="\n"+n.raw,this.inlineQueue[this.inlineQueue.length-1].src=i.text);continue}if(n=this.tokenizer.table(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.lheading(e)){e=e.substring(n.raw.length),t.push(n);continue}if(r=e,this.options.extensions&&this.options.extensions.startBlock){let t,n=1/0,i=e.slice(1);this.options.extensions.startBlock.forEach(e=>{t=e.call({lexer:this},i),"number"==typeof t&&t>=0&&(n=Math.min(n,t))}),n<1/0&&n>=0&&(r=e.substring(0,n+1))}if(this.state.top&&(n=this.tokenizer.paragraph(r))){i=t[t.length-1],l&&"paragraph"===i.type?(i.raw+="\n"+n.raw,i.text+="\n"+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=i.text):t.push(n),l=r.length!==e.length,e=e.substring(n.raw.length);continue}if(n=this.tokenizer.text(e)){e=e.substring(n.raw.length),i=t[t.length-1],i&&"text"===i.type?(i.raw+="\n"+n.raw,i.text+="\n"+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=i.text):t.push(n);continue}if(e){let t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent)break;throw new Error(t)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n,i,r,l,s,o,a=e;if(this.tokens.links){let e=Object.keys(this.tokens.links);if(e.length>0)for(;null!=(l=this.tokenizer.rules.inline.reflinkSearch.exec(a));)e.includes(l[0].slice(l[0].lastIndexOf("[")+1,-1))&&(a=a.slice(0,l.index)+"["+"a".repeat(l[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(l=this.tokenizer.rules.inline.blockSkip.exec(a));)a=a.slice(0,l.index)+"["+"a".repeat(l[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(l=this.tokenizer.rules.inline.anyPunctuation.exec(a));)a=a.slice(0,l.index)+"++"+a.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;e;)if(s||(o=""),s=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(i=>!!(n=i.call({lexer:this},e,t))&&(e=e.substring(n.raw.length),t.push(n),!0)))){if(n=this.tokenizer.escape(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.tag(e)){e=e.substring(n.raw.length),i=t[t.length-1],i&&"text"===n.type&&"text"===i.type?(i.raw+=n.raw,i.text+=n.text):t.push(n);continue}if(n=this.tokenizer.link(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(n.raw.length),i=t[t.length-1],i&&"text"===n.type&&"text"===i.type?(i.raw+=n.raw,i.text+=n.text):t.push(n);continue}if(n=this.tokenizer.emStrong(e,a,o)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.codespan(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.br(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.del(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.autolink(e)){e=e.substring(n.raw.length),t.push(n);continue}if(!this.state.inLink&&(n=this.tokenizer.url(e))){e=e.substring(n.raw.length),t.push(n);continue}if(r=e,this.options.extensions&&this.options.extensions.startInline){let t,n=1/0,i=e.slice(1);this.options.extensions.startInline.forEach(e=>{t=e.call({lexer:this},i),"number"==typeof t&&t>=0&&(n=Math.min(n,t))}),n<1/0&&n>=0&&(r=e.substring(0,n+1))}if(n=this.tokenizer.inlineText(r)){e=e.substring(n.raw.length),"_"!==n.raw.slice(-1)&&(o=n.raw.slice(-1)),s=!0,i=t[t.length-1],i&&"text"===i.type?(i.raw+=n.raw,i.text+=n.text):t.push(n);continue}if(e){let t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent)break;throw new Error(t)}}return t}},qe=class{options;constructor(e){this.options=e||pe}code(e,t,n){let i=(t||"").match(/^\S*/)?.[0];return e=e.replace(/\n$/,"")+"\n",i?'<pre><code class="language-'+ke(i)+'">'+(n?e:ke(e,!0))+"</code></pre>\n":"<pre><code>"+(n?e:ke(e,!0))+"</code></pre>\n"}blockquote(e){return`<blockquote>\n${e}</blockquote>\n`}html(e,t){return e}heading(e,t,n){return`<h${t}>${e}</h${t}>\n`}hr(){return"<hr>\n"}list(e,t,n){let i=t?"ol":"ul";return"<"+i+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"</"+i+">\n"}listitem(e,t,n){return`<li>${e}</li>\n`}checkbox(e){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox">'}paragraph(e){return`<p>${e}</p>\n`}table(e,t){return t&&(t=`<tbody>${t}</tbody>`),"<table>\n<thead>\n"+e+"</thead>\n"+t+"</table>\n"}tablerow(e){return`<tr>\n${e}</tr>\n`}tablecell(e,t){let n=t.header?"th":"td";return(t.align?`<${n} align="${t.align}">`:`<${n}>`)+e+`</${n}>\n`}strong(e){return`<strong>${e}</strong>`}em(e){return`<em>${e}</em>`}codespan(e){return`<code>${e}</code>`}br(){return"<br>"}del(e){return`<del>${e}</del>`}link(e,t,n){let i=Ne(e);if(null===i)return n;let r='<a href="'+(e=i)+'"';return t&&(r+=' title="'+t+'"'),r+=">"+n+"</a>",r}image(e,t,n){let i=Ne(e);if(null===i)return n;let r=`<img src="${e=i}" alt="${n}"`;return t&&(r+=` title="${t}"`),r+=">",r}text(e){return e}},Re=class{strong(e){return e}em(e){return e}codespan(e){return e}del(e){return e}html(e){return e}text(e){return e}link(e,t,n){return""+n}image(e,t,n){return""+n}br(){return""}},De=class e{options;renderer;textRenderer;constructor(e){this.options=e||pe,this.options.renderer=this.options.renderer||new qe,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new Re}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e,t=!0){let n="";for(let i=0;i<e.length;i++){let r=e[i];if(this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[r.type]){let e=r,t=this.options.extensions.renderers[e.type].call({parser:this},e);if(!1!==t||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(e.type)){n+=t||"";continue}}switch(r.type){case"space":continue;case"hr":n+=this.renderer.hr();continue;case"heading":{let e=r;n+=this.renderer.heading(this.parseInline(e.tokens),e.depth,$e(this.parseInline(e.tokens,this.textRenderer)));continue}case"code":{let e=r;n+=this.renderer.code(e.text,e.lang,!!e.escaped);continue}case"table":{let e=r,t="",i="";for(let t=0;t<e.header.length;t++)i+=this.renderer.tablecell(this.parseInline(e.header[t].tokens),{header:!0,align:e.align[t]});t+=this.renderer.tablerow(i);let l="";for(let t=0;t<e.rows.length;t++){let n=e.rows[t];i="";for(let t=0;t<n.length;t++)i+=this.renderer.tablecell(this.parseInline(n[t].tokens),{header:!1,align:e.align[t]});l+=this.renderer.tablerow(i)}n+=this.renderer.table(t,l);continue}case"blockquote":{let e=r,t=this.parse(e.tokens);n+=this.renderer.blockquote(t);continue}case"list":{let e=r,t=e.ordered,i=e.start,l=e.loose,s="";for(let t=0;t<e.items.length;t++){let n=e.items[t],i=n.checked,r=n.task,o="";if(n.task){let e=this.renderer.checkbox(!!i);l?n.tokens.length>0&&"paragraph"===n.tokens[0].type?(n.tokens[0].text=e+" "+n.tokens[0].text,n.tokens[0].tokens&&n.tokens[0].tokens.length>0&&"text"===n.tokens[0].tokens[0].type&&(n.tokens[0].tokens[0].text=e+" "+n.tokens[0].tokens[0].text)):n.tokens.unshift({type:"text",text:e+" "}):o+=e+" "}o+=this.parse(n.tokens,l),s+=this.renderer.listitem(o,r,!!i)}n+=this.renderer.list(s,t,i);continue}case"html":{let e=r;n+=this.renderer.html(e.text,e.block);continue}case"paragraph":{let e=r;n+=this.renderer.paragraph(this.parseInline(e.tokens));continue}case"text":{let l=r,s=l.tokens?this.parseInline(l.tokens):l.text;for(;i+1<e.length&&"text"===e[i+1].type;)l=e[++i],s+="\n"+(l.tokens?this.parseInline(l.tokens):l.text);n+=t?this.renderer.paragraph(s):s;continue}default:{let e='Token with "'+r.type+'" type was not found.';if(this.options.silent)return"";throw new Error(e)}}}return n}parseInline(e,t){t=t||this.renderer;let n="";for(let i=0;i<e.length;i++){let r=e[i];if(this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[r.type]){let e=this.options.extensions.renderers[r.type].call({parser:this},r);if(!1!==e||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(r.type)){n+=e||"";continue}}switch(r.type){case"escape":{let e=r;n+=t.text(e.text);break}case"html":{let e=r;n+=t.html(e.text);break}case"link":{let e=r;n+=t.link(e.href,e.title,this.parseInline(e.tokens,t));break}case"image":{let e=r;n+=t.image(e.href,e.title,e.text);break}case"strong":{let e=r;n+=t.strong(this.parseInline(e.tokens,t));break}case"em":{let e=r;n+=t.em(this.parseInline(e.tokens,t));break}case"codespan":{let e=r;n+=t.codespan(e.text);break}case"br":n+=t.br();break;case"del":{let e=r;n+=t.del(this.parseInline(e.tokens,t));break}case"text":{let e=r;n+=t.text(e.text);break}default:{let e='Token with "'+r.type+'" type was not found.';if(this.options.silent)return"";throw new Error(e)}}}return n}},Pe=class{options;constructor(e){this.options=e||pe}static passThroughHooks=new Set(["preprocess","postprocess"]);preprocess(e){return e}postprocess(e){return e}},Oe=new class{defaults={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};options=this.setOptions;parse=this.#e(je.lex,De.parse);parseInline=this.#e(je.lexInline,De.parseInline);Parser=De;Renderer=qe;TextRenderer=Re;Lexer=je;Tokenizer=Me;Hooks=Pe;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let i of e)switch(n=n.concat(t.call(this,i)),i.type){case"table":{let e=i;for(let i of e.header)n=n.concat(this.walkTokens(i.tokens,t));for(let i of e.rows)for(let e of i)n=n.concat(this.walkTokens(e.tokens,t));break}case"list":{let e=i;n=n.concat(this.walkTokens(e.items,t));break}default:{let e=i;this.defaults.extensions?.childTokens?.[e.type]?this.defaults.extensions.childTokens[e.type].forEach(i=>{n=n.concat(this.walkTokens(e[i],t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw new Error("extension name required");if("renderer"in e){let n=t.renderers[e.name];t.renderers[e.name]=n?function(...t){let i=e.renderer.apply(this,t);return!1===i&&(i=n.apply(this,t)),i}:e.renderer}if("tokenizer"in e){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw new Error("extension level must be 'block' or 'inline'");let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&("block"===e.level?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:"inline"===e.level&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}"childTokens"in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new qe(this.defaults);for(let n in e.renderer){let i=e.renderer[n],r=n,l=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return!1===n&&(n=l.apply(t,e)),n||""}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new Me(this.defaults);for(let n in e.tokenizer){let i=e.tokenizer[n],r=n,l=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return!1===n&&(n=l.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new Pe;for(let n in e.hooks){let i=e.hooks[n],r=n,l=t[r];Pe.passThroughHooks.has(n)?t[r]=e=>{if(this.defaults.async)return Promise.resolve(i.call(t,e)).then(e=>l.call(t,e));let n=i.call(t,e);return l.call(t,n)}:t[r]=(...e)=>{let n=i.apply(t,e);return!1===n&&(n=l.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,i=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(i.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return je.lex(e,t??this.defaults)}parser(e,t){return De.parse(e,t??this.defaults)}#e(e,t){return(n,i)=>{let r={...i},l={...this.defaults,...r};!0===this.defaults.async&&!1===r.async&&(l.silent,l.async=!0);let s=this.#t(!!l.silent,!!l.async);if(typeof n>"u"||null===n)return s(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof n)return s(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));if(l.hooks&&(l.hooks.options=l),l.async)return Promise.resolve(l.hooks?l.hooks.preprocess(n):n).then(t=>e(t,l)).then(e=>l.walkTokens?Promise.all(this.walkTokens(e,l.walkTokens)).then(()=>e):e).then(e=>t(e,l)).then(e=>l.hooks?l.hooks.postprocess(e):e).catch(s);try{l.hooks&&(n=l.hooks.preprocess(n));let i=e(n,l);l.walkTokens&&this.walkTokens(i,l.walkTokens);let r=t(i,l);return l.hooks&&(r=l.hooks.postprocess(r)),r}catch(e){return s(e)}}}#t(e,t){return n=>{if(n.message+="\nPlease report this to https://github.com/markedjs/marked.",e){let e="<p>An error occurred:</p><pre>"+ke(n.message+"",!0)+"</pre>";return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function Fe(e,t){return Oe.parse(e,t)}Fe.options=Fe.setOptions=function(e){return Oe.setOptions(e),Fe.defaults=Oe.defaults,me(Fe.defaults),Fe},Fe.getDefaults=function(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}},Fe.defaults=pe,Fe.use=function(...e){return Oe.use(...e),Fe.defaults=Oe.defaults,me(Fe.defaults),Fe},Fe.walkTokens=function(e,t){return Oe.walkTokens(e,t)},Fe.parseInline=Oe.parseInline,Fe.Parser=De,Fe.parser=De.parse,Fe.Renderer=qe,Fe.TextRenderer=Re,Fe.Lexer=je,Fe.lexer=je.lex,Fe.Tokenizer=Me,Fe.Hooks=Pe,Fe.parse=Fe,Fe.options,Fe.setOptions,Fe.use,Fe.walkTokens,Fe.parseInline,De.parse,je.lex;var Le=0;function Be(e,n,i,r,l,s){n||(n={});var o,a,c=n;"ref"in n&&(o=n.ref,delete n.ref);var u={type:e,props:c,key:i,ref:o,o:null,h:null,p:0,m:null,v:void 0,k:null,constructor:void 0,_:--Le,$:-1,S:0,K:l,ee:s};if("function"==typeof e&&(o=e.defaultProps))for(a in o)void 0===c[a]&&(c[a]=o[a]);return t.vnode&&t.vnode(u),u}function He({client:e}){let[t,n]=X(!1),[i,r]=X("home"),[l,s]=X([]),[o,a]=X([]),[c,u]=X(""),[h,f]=X(!1),[d,p]=X(!1),[m,y]=X(!1),[v,b]=X(null),[x,w]=X(null),k=K(null),[_,$]=X(null),S=K(null),z=K(null),N=K(0);G(()=>{S.current=_},[_]);let[A,T]=X({}),[C,I]=X("#5046e5"),[M,E]=X(24),[Z,j]=X("right"),[q,R]=X("light"),[D,P]=X("#ffffff"),[O,F]=X("#ffffff"),[L,B]=X("message"),[H,U]=X(!0),[W,V]=X(!0),[Y,J]=X(!0),[Q,ee]=X(!0),[te,ne]=X(!1);G(()=>{e.getWidgetConfig().then(t=>{if(t){if("error"===t.status)return V(!1),void ne(!0);if(0===Object.keys(t).length)return V(!1),void ne(!0);void 0!==t.widgetEnabled&&V(t.widgetEnabled),void 0!==t.aiMessagingEnabled&&J(t.aiMessagingEnabled);let n=t.config||{};if(T(n),n.primaryColor&&I(n.primaryColor),n.defaultAgentName&&$(n.defaultAgentName),void 0!==n.borderRadius&&E(n.borderRadius),n.position&&j(n.position),n.theme&&R(n.theme),n.launcherIcon&&B(n.launcherIcon),void 0!==n.showBranding&&U(n.showBranding),n.websiteUrl&&typeof window<"u")try{let t=new URL(n.websiteUrl).origin,i=window.location.origin,r=i.includes("localhost")||i.includes("127.0.0.1"),l=e.apiUrl?.includes("localhost")||e.apiUrl?.includes("127.0.0.1");ee(t===i||r||l)}catch{ee(!0)}else ee(!0)}ne(!0)})},[e]),G(()=>{t&&("home"===i&&le(),ie())},[t,i]),G(()=>{ie()},[o,h]);let ie=()=>{k.current?.scrollIntoView({behavior:"smooth"})},re=()=>n(!t),le=async()=>{let t=await e.getHistory();s(t)},se=()=>{e.connectStream((e,t)=>{if("message-stream"===e){let e=t.text||t.content;e&&"string"==typeof e&&"undefined"!==e&&pe(e)}else if("token"===e)t&&"string"==typeof t&&"undefined"!==t&&pe(t);else if("message-complete"===e)f(!1);else if("message"===e){if(!t.id)return;a(e=>{if(e.some(e=>e.id===t.id))return e;if("user"===t.role){let n=e.findIndex(e=>e.id.startsWith("user_")&&e.content===t.content);if(-1!==n){let i=[...e];return i[n]={id:t.id,role:t.role,content:t.content,createdAt:t.createdAt,agentName:void 0},i}}return f(!1),[...e,{id:t.id,role:t.role,content:t.content,createdAt:t.createdAt,agentName:t.agentName||("assistant"===t.role?_:void 0),agentAvatar:t.agentAvatar}]}),f(!1)}else if("human-takeover"===e){let e=t.isHumanTakeover;p(e),e?(f(!1),t.userName&&b(t.userName),t.agentAvatar&&w(t.agentAvatar),a(e=>{if(e.some(e=>"system-takeover"===e.id))return e;let n=t.userName||"a team member";return[...e,{id:"system-takeover",role:"system",content:`You're now connected with ${n}.`,createdAt:(new Date).toISOString()}]})):(b(null),w(null))}else"support-typing"===e?t.isTyping?(f(!0),t.userName&&b(t.userName),t.agentAvatar&&w(t.agentAvatar)):f(!1):"thinking-start"===e||"typing-start"===e?Y&&f(!0):"conversation-closed"===e&&(y(!0),f(!1),a(e=>e.some(e=>"system-closed"===e.id)?e:[...e,{id:"system-closed",role:"system",content:"This conversation has been closed. Thank you for reaching out!",createdAt:(new Date).toISOString()}]))})},oe=()=>{e.sessionId=null,$(null),a([]),y(!1),p(!1),b(null),w(null),r("chat")},ae=async()=>{if(!c.trim())return;let t="user_"+Date.now(),n={id:t,role:"user",content:c,createdAt:(new Date).toISOString()};a(e=>[...e,n]),u(""),d||f(!0);try{let i=await e.sendMessage(n.content);i.isHumanTakeover&&(p(!0),f(!1),$("Support Team"),a(e=>e.some(e=>"system-takeover"===e.id)?e:[...e,{id:"system-takeover",role:"system",content:"A team member will be with you shortly.",createdAt:(new Date).toISOString()}])),i.message?.message?.id&&a(e=>e.map(e=>e.id===t?{...e,id:i.message.message.id}:e)),i.agentName&&!i.isHumanTakeover&&$(i.agentName),se()}catch(e){f(!1)}},pe=e=>{a(t=>{let n=t[t.length-1];return n&&"assistant"===n.role?[...t.slice(0,-1),{...n,content:n.content+e}]:[...t,{id:"bot_"+Date.now(),role:"assistant",content:e,createdAt:(new Date).toISOString(),agentName:S.current||void 0}]})},me="dark"===q,ye="glass"===q,ve={"--vemly-primary":C,"--vemly-primary-hover":C,"--vemly-radius":`${M}px`,"--vemly-header-text":D,"--vemly-user-text":O,"--vemly-bg":me?"#1f2937":ye?"rgba(255, 255, 255, 0.8)":"#ffffff","--vemly-surface":me?"#111827":ye?"rgba(249, 250, 251, 0.5)":"#f9fafb","--vemly-text":me?"#f9fafb":"#111827","--vemly-text-secondary":me?"#9ca3af":"#6b7280","--vemly-text-muted":me?"#6b7280":"#9ca3af","--vemly-border":me?"#374151":"#e5e7eb","--vemly-user-bg":"#111827","--vemly-ai-bg":me?"#374151":"#ffffff"},ge=ye?{backdropFilter:"blur(12px)",WebkitBackdropFilter:"blur(12px)"}:{},be=A.title||"Vemly",xe=A.titleAlignment||"left";return te&&W&&Q&&W?Be("div",{className:"vemly-widget-container",style:ve,"data-position":Z,children:[Be("div",{className:"vemly-window "+(t?"open":""),style:ge,children:[Be("div",{className:"vemly-header",style:{color:D},children:[Be("div",{className:"vemly-header-top",children:[Be("div",{className:"vemly-brand",children:"chat"===i&&Be("button",{className:"vemly-back-btn",onClick:()=>{y(!1),r("home"),le()},children:Be(ue,{size:20})})}),Be("button",{className:"vemly-close",onClick:re,style:{color:D},children:Be(de,{size:20})})]}),Be("div",{className:"vemly-header-content",style:{textAlign:xe},children:[Be("h3",{children:be}),Be("p",{style:{opacity:.9},children:"home"===i?A.greeting||"We're here to help":"Ask us anything"})]}),Be("div",{className:"vemly-status",style:{justifyContent:"center"===xe?"center":"flex-start"},children:[Be("span",{className:"vemly-status-dot"}),Be("span",{style:{opacity:.9},children:"We typically reply instantly"})]})]}),Be("div","home"===i?{className:"vemly-home",children:Be("div",{className:"vemly-home-content",children:[Be("button",{onClick:oe,className:"vemly-start-btn",style:{backgroundColor:me?"#374151":"#111827",color:"#ffffff"},children:[Be(he,{size:18}),Be("span",{children:"Start a conversation"})]}),l.length>0&&Be(g,{children:[Be("div",{className:"vemly-section-title",children:"Recent conversations"}),Be("div",{className:"vemly-session-list",children:l.slice(0,5).map(t=>Be("div",{onClick:()=>(async(t,n)=>{e.sessionId=t,$(n||null),r("chat"),a([]);try{let i=await fetch(`${e.apiUrl}/chat/session/${t}`,{headers:{"x-vemly-api-key":e.apiKey,"Content-Type":"application/json"}});if(i.ok){let e=await i.json(),t=!!e.session?.isHumanTakeover;t&&p(!0);let r=t?"Support Team":e.agent?.name||n;if(r&&$(r),e.session?.closedAt&&y(!0),e.messages){let t=e.messages.map(e=>({...e,agentName:e.agentName||("assistant"===e.role?r:void 0),agentAvatar:e.agentAvatar}));a(t)}}se()}catch(e){}})(t.id,t.agentName),className:"vemly-session-item",style:{backgroundColor:me?"#374151":"#ffffff",borderColor:me?"#4b5563":"#e5e7eb"},children:[Be("div",{className:"vemly-session-title",style:{color:me?"#fff":"#111827"},children:t.title||"New Conversation"}),Be("div",{className:"vemly-session-date",children:new Date(t.createdAt||Date.now()).toLocaleDateString()})]},t.id))})]}),0===l.length&&Be("div",{className:"vemly-empty",children:"No previous conversations"})]})}:{className:"vemly-messages",style:{backgroundColor:me?"#1f2937":"glass"===q?"transparent":"#f9fafb"},children:[o.map((e,t)=>Be("div",{className:`vemly-message-group ${e.role}`,children:"system"===e.role?Be("div",{className:"vemly-message-content",children:Be("p",{children:e.content})}):Be(g,{children:[("assistant"===e.role||"tool"===e.role)&&Be("div",{className:"vemly-sender",children:[e.agentAvatar?Be("img",{src:e.agentAvatar,alt:e.agentName||"Bot",className:"vemly-sender-avatar-img"}):Be("div",{className:"vemly-sender-avatar",children:(e.agentName||_||"Bot").substring(0,2).toUpperCase()}),Be("div",{className:"vemly-sender-name",style:{color:me?"#e5e7eb":"#111827"},children:e.agentName||_||"Bot"})]}),Be("div",{className:"vemly-message-content",children:Be("div",{dangerouslySetInnerHTML:{q:Fe.parse(e.content||"")}})})]})},e.id||t)),h&&(()=>{let e=d&&v?v:_||"Vemly";return Be("div",{className:"vemly-message-group assistant",children:[Be("div",{className:"vemly-sender",children:[d&&x?Be("img",{src:x,alt:e,className:"vemly-sender-avatar-img"}):Be("div",{className:"vemly-sender-avatar",children:e.substring(0,2).toUpperCase()}),Be("div",{className:"vemly-sender-name",children:e})]}),Be("div",{className:"vemly-typing",style:{backgroundColor:me?"#374151":"#ffffff",borderColor:me?"#4b5563":"#e5e7eb"},children:[Be("div",{className:"vemly-dot"}),Be("div",{className:"vemly-dot"}),Be("div",{className:"vemly-dot"})]})]})})(),Be("div",{ref:k})]}),"chat"===i&&Be("div",{className:"vemly-input-container",style:{backgroundColor:me?"#1f2937":"#ffffff",borderColor:me?"#374151":"#e5e7eb",opacity:m?.7:1},children:[Be("div",m?{style:{padding:"12px 16px",textAlign:"center"},children:[Be("p",{style:{fontSize:"13px",color:me?"#9ca3af":"#6b7280",marginBottom:"12px"},children:"This conversation is closed."}),Be("button",{onClick:oe,style:{display:"inline-flex",alignItems:"center",gap:"8px",padding:"8px 16px",backgroundColor:C,color:"#ffffff",border:"none",borderRadius:"8px",fontSize:"13px",fontWeight:500,cursor:"pointer"},children:[Be(he,{size:16}),"Start New Conversation"]})]}:{className:"vemly-input-wrapper",style:{backgroundColor:me?"#111827":"#f9fafb",borderColor:me?"#374151":"#e5e7eb"},children:[Be("textarea",{className:"vemly-input",placeholder:"Send a message...",value:c,onInput:t=>{let n=t.target.value;if(u(n),e.sessionId){let t=Date.now();t-N.current>1500&&(e.sendTyping(!0),N.current=t),z.current&&clearTimeout(z.current),z.current=setTimeout(()=>{e.sendTyping(!1),z.current=null,N.current=0},3e3)}},onKeyDown:e=>{"Enter"===e.key&&!e.shiftKey&&(e.preventDefault(),ae())},rows:1,style:{color:me?"#f3f4f6":"#111827"}}),Be("button",{className:"vemly-send",onClick:ae,disabled:!c.trim()||h,children:Be(fe,{size:16})})]}),H&&Be("div",{className:"vemly-branding",children:["Powered by ",Be("a",{href:"https://usevemly.com",target:"_blank",rel:"noopener",children:"Vemly"})]})]})]}),Be("button",{className:"vemly-bubble",onClick:re,children:Be(t?de:"bot"===L?ce:he,{size:24})})]}):null}var Ue=class{apiUrl;tenantId;agentId;apiKey;deviceId;sessionId=null;sseSource=null;sseController=null;constructor(e){this.apiUrl=e.apiUrl||"https://api.usevemly.com",this.tenantId=e.tenantId,this.agentId=e.agentId,this.apiKey=e.apiKey,this.deviceId=this.getOrCreateDeviceId()}getOrCreateDeviceId(){if(typeof window>"u")return"server";let e=localStorage.getItem("vemly_device_id");return e||(e="dev_"+Math.random().toString(36).substring(2,15),localStorage.setItem("vemly_device_id",e)),e}async createSession(){let e={"Content-Type":"application/json"};this.apiKey&&(e["x-vemly-api-key"]=this.apiKey);let t=await fetch(`${this.apiUrl}/chat/session`,{method:"POST",headers:e,body:JSON.stringify({...this.tenantId?{tenantId:this.tenantId}:{},agentId:this.agentId,deviceId:this.deviceId})});if(!t.ok)throw new Error("Failed to create session");let n=await t.json();return this.sessionId=n.session?.id||n.id,{session:n.session||n,agentName:n.agent?.name}}async resumeSession(){let e={"Content-Type":"application/json"};this.apiKey&&(e["x-vemly-api-key"]=this.apiKey);let t=await fetch(`${this.apiUrl}/chat/session/resume`,{method:"POST",headers:e,body:JSON.stringify({tenantId:this.tenantId,deviceId:this.deviceId})});if(!t.ok)return null;let n=await t.json();return this.sessionId=n.session?.id||null,n.session}async getHistory(e=20){let t={"Content-Type":"application/json"};this.apiKey&&(t["x-vemly-api-key"]=this.apiKey);let n={deviceId:this.deviceId,limit:e.toString()};this.tenantId&&(n.tenantId=this.tenantId);let i=new URLSearchParams(n),r=await fetch(`${this.apiUrl}/chat/sessions/device?${i.toString()}`,{method:"GET",headers:t});return r.ok&&(await r.json()).sessions||[]}async getWidgetConfig(){try{let e=`${this.apiUrl}/chat/config`;this.tenantId&&(e+=`/${this.tenantId}`);let t={};return this.apiKey&&(t["x-vemly-api-key"]=this.apiKey),await(await fetch(e,{method:"GET",headers:t})).json()||{}}catch(e){return{}}}async sendMessage(e,t){let n,i;if(!this.sessionId){let e=await this.createSession();n=e.agentName,i=e.session.isHumanTakeover}let r={"Content-Type":"application/json"};this.apiKey&&(r["x-vemly-api-key"]=this.apiKey);let l=await fetch(`${this.apiUrl}/chat/message`,{method:"POST",headers:r,body:JSON.stringify({sessionId:this.sessionId,content:e,role:"user"})});if(!l.ok)throw new Error("Failed to send message");return{message:await l.json(),agentName:n,isHumanTakeover:i}}async sendTyping(e){if(!this.sessionId)return;let t={"Content-Type":"application/json"};this.apiKey&&(t["x-vemly-api-key"]=this.apiKey),await fetch(`${this.apiUrl}/chat/typing`,{method:"POST",headers:t,body:JSON.stringify({sessionId:this.sessionId,isTyping:e})})}connectStream(e){if(!this.sessionId)return;this.sseController&&this.sseController.abort(),this.sseController=new AbortController;let t=`${this.apiUrl}/chat/stream/${this.sessionId}`,n={"Content-Type":"application/json"};this.apiKey&&(n["x-vemly-api-key"]=this.apiKey),fetch(t,{method:"GET",headers:n,signal:this.sseController.signal}).then(async t=>{if(!t.ok||!t.body)throw new Error(`SSE Error: ${t.status}`);let n=t.body.getReader(),i=new TextDecoder,r="";for(;;){let{value:t,done:l}=await n.read();if(l)break;r+=i.decode(t,{stream:!0});let s=r.split("\n\n");r=s.pop()||"";for(let t of s){if(!t.trim())continue;let n=t.split("\n"),i="message",r=null;for(let e of n)if(e.startsWith("event: "))i=e.substring(7).trim();else if(e.startsWith("data: "))try{r=JSON.parse(e.substring(6).trim())}catch{r=e.substring(6).trim()}null!==r&&e(i,r)}}}).catch(e=>{e.name})}disconnectStream(){this.sseSource?.close(),this.sseSource=null,this.sseController?.abort(),this.sseController=null}getSessionId(){return this.sessionId}},We=new class{client=null;container=null;shadowRoot=null;init(e){if(!this.client&&e.apiKey)try{this.client=new Ue(e),this.createContainer(),this.render()}catch(e){}}createContainer(){let e=document.getElementById("vemly-sdk-root");e&&e.remove(),this.container=document.createElement("div"),this.container.id="vemly-sdk-root",document.body.appendChild(this.container),this.shadowRoot=this.container.attachShadow({mode:"open"});let t=document.createElement("style");t.textContent='\n@import url(\'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\');\n\n:host {\n --vemly-primary: #5046e5;\n --vemly-primary-hover: #4338ca;\n --vemly-bg: #ffffff;\n --vemly-surface: #f9fafb;\n --vemly-text: #111827;\n --vemly-text-secondary: #6b7280;\n --vemly-text-muted: #9ca3af;\n --vemly-border: #e5e7eb;\n --vemly-user-bg: #111827;\n --vemly-ai-bg: #ffffff;\n --vemly-radius: 16px;\n --vemly-font: \'Inter\', -apple-system, BlinkMacSystemFont, \'Segoe UI\', sans-serif;\n}\n\n.vemly-widget-container {\n position: fixed;\n bottom: 20px;\n z-index: 2147483647;\n font-family: var(--vemly-font);\n display: flex;\n flex-direction: column;\n gap: 12px;\n pointer-events: none;\n -webkit-font-smoothing: antialiased;\n}\n\n.vemly-widget-container[data-position="right"] {\n right: 20px;\n left: auto;\n align-items: flex-end;\n}\n\n.vemly-widget-container[data-position="left"] {\n left: 20px;\n right: auto;\n align-items: flex-start;\n}\n\n.vemly-widget-container * {\n box-sizing: border-box;\n pointer-events: auto;\n}\n\n/* Launcher */\n.vemly-bubble {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: var(--vemly-primary);\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.16);\n transition: all 0.2s ease;\n border: none;\n outline: none;\n}\n\n.vemly-bubble:hover {\n background: var(--vemly-primary-hover);\n transform: scale(1.05);\n}\n\n.vemly-bubble:active {\n transform: scale(0.95);\n}\n\n/* Window */\n.vemly-window {\n width: 380px;\n height: 600px;\n max-height: calc(100vh - 100px);\n max-width: calc(100vw - 40px);\n background: var(--vemly-bg);\n border-radius: var(--vemly-radius);\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.05);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n transform-origin: bottom right;\n opacity: 0;\n transform: scale(0.95) translateY(10px);\n transition: all 0.2s ease;\n visibility: hidden;\n}\n\n.vemly-window.open {\n opacity: 1;\n transform: scale(1) translateY(0);\n visibility: visible;\n}\n\n/* Header */\n.vemly-header {\n background: var(--vemly-primary);\n color: white;\n padding: 20px;\n flex-shrink: 0;\n}\n\n.vemly-header-top {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.vemly-brand {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.vemly-back-btn {\n background: rgba(255,255,255,0.15);\n border: none;\n color: white;\n cursor: pointer;\n padding: 6px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s;\n}\n\n.vemly-back-btn:hover {\n background: rgba(255,255,255,0.25);\n}\n\n.vemly-close {\n background: rgba(255,255,255,0.15);\n border: none;\n color: white;\n cursor: pointer;\n padding: 6px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s;\n}\n\n.vemly-close:hover {\n background: rgba(255,255,255,0.25);\n}\n\n.vemly-header-content {\n margin-top: 16px;\n}\n\n.vemly-header-content h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n letter-spacing: -0.01em;\n}\n\n.vemly-header-content p {\n margin: 4px 0 0;\n font-size: 14px;\n opacity: 0.85;\n}\n\n.vemly-status {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 12px;\n font-size: 13px;\n opacity: 0.9;\n}\n\n.vemly-status-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: #22c55e;\n}\n\n/* Messages Area */\n.vemly-messages {\n flex: 1;\n background: var(--vemly-surface);\n padding: 16px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.vemly-message-group {\n display: flex;\n flex-direction: column;\n gap: 4px;\n max-width: 85%;\n animation: vemly-fade-in 0.25s ease-out;\n}\n\n@keyframes vemly-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.vemly-message-group.assistant {\n align-self: flex-start;\n}\n\n.vemly-message-group.user {\n align-self: flex-end;\n}\n\n.vemly-sender {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 4px;\n}\n\n.vemly-sender-avatar {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n background: var(--vemly-primary);\n color: white;\n font-size: 11px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.vemly-sender-avatar-img {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n object-fit: cover;\n}\n\n.vemly-sender-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--vemly-text);\n}\n\n.vemly-message-content {\n padding: 12px 16px;\n border-radius: 16px;\n font-size: 14px;\n line-height: 1.5;\n}\n\n.vemly-message-group.assistant .vemly-message-content {\n background: white;\n color: var(--vemly-text);\n border: 1px solid var(--vemly-border);\n border-top-left-radius: 4px;\n}\n\n.vemly-message-group.user .vemly-message-content {\n background: var(--vemly-user-bg);\n color: white;\n border-top-right-radius: 4px;\n}\n\n.vemly-message-content p { margin: 0 0 8px; }\n.vemly-message-content p:last-child { margin: 0; }\n.vemly-message-content a { color: inherit; text-decoration: underline; }\n.vemly-message-content code {\n background: rgba(0,0,0,0.06);\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 13px;\n}\n.vemly-message-group.user .vemly-message-content code {\n background: rgba(255,255,255,0.15);\n}\n\n/* Home View */\n.vemly-home {\n flex: 1;\n background: var(--vemly-surface);\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.vemly-home-content {\n padding: 16px;\n}\n\n.vemly-start-btn {\n width: 100%;\n padding: 14px 16px;\n background: var(--vemly-text);\n color: white;\n border: none;\n border-radius: 12px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: all 0.15s;\n}\n\n.vemly-start-btn:hover {\n opacity: 0.9;\n transform: translateY(-1px);\n}\n\n.vemly-section-title {\n font-size: 12px;\n font-weight: 600;\n color: var(--vemly-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n margin: 20px 0 12px;\n}\n\n.vemly-session-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.vemly-session-item {\n padding: 12px 14px;\n background: white;\n border: 1px solid var(--vemly-border);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.vemly-session-item:hover {\n border-color: var(--vemly-text-muted);\n background: #fafafa;\n}\n\n.vemly-session-title {\n font-size: 14px;\n font-weight: 500;\n color: var(--vemly-text);\n margin-bottom: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.vemly-session-date {\n font-size: 12px;\n color: var(--vemly-text-muted);\n}\n\n.vemly-empty {\n text-align: center;\n padding: 24px;\n color: var(--vemly-text-muted);\n font-size: 14px;\n}\n\n/* Input */\n.vemly-input-container {\n padding: 12px 16px 16px;\n background: white;\n border-top: 1px solid var(--vemly-border);\n}\n\n.vemly-input-wrapper {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n background: var(--vemly-surface);\n border: 1px solid var(--vemly-border);\n border-radius: 12px;\n padding: 8px 8px 8px 14px;\n transition: all 0.15s;\n}\n\n.vemly-input-wrapper:focus-within {\n border-color: var(--vemly-primary);\n box-shadow: 0 0 0 3px rgba(80, 70, 229, 0.1);\n}\n\n.vemly-input {\n flex: 1;\n border: none;\n background: transparent;\n outline: none;\n font-size: 14px;\n color: var(--vemly-text);\n max-height: 100px;\n resize: none;\n font-family: inherit;\n padding: 4px 0;\n line-height: 1.4;\n}\n\n.vemly-input::placeholder {\n color: var(--vemly-text-muted);\n}\n\n.vemly-send {\n background: var(--vemly-primary);\n color: white;\n border: none;\n cursor: pointer;\n width: 32px;\n height: 32px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.15s;\n flex-shrink: 0;\n}\n\n.vemly-send:hover:not(:disabled) {\n background: var(--vemly-primary-hover);\n}\n\n.vemly-send:disabled {\n background: var(--vemly-border);\n color: var(--vemly-text-muted);\n cursor: default;\n}\n\n.vemly-branding {\n font-size: 11px;\n text-align: center;\n color: var(--vemly-text-muted);\n margin-top: 8px;\n}\n\n.vemly-branding a {\n color: var(--vemly-text-secondary);\n text-decoration: none;\n font-weight: 500;\n}\n\n/* Typing */\n.vemly-typing {\n display: flex;\n gap: 4px;\n padding: 14px 16px;\n background: white;\n border: 1px solid var(--vemly-border);\n border-radius: 16px;\n border-top-left-radius: 4px;\n width: fit-content;\n}\n\n.vemly-dot {\n width: 6px;\n height: 6px;\n background: var(--vemly-text-muted);\n border-radius: 50%;\n animation: vemly-bounce 1.4s infinite ease-in-out;\n}\n\n.vemly-dot:nth-child(1) { animation-delay: -0.32s; }\n.vemly-dot:nth-child(2) { animation-delay: -0.16s; }\n\n@keyframes vemly-bounce {\n 0%, 80%, 100% { transform: scale(0.6); }\n 40% { transform: scale(1); }\n}\n\n/* Mobile */\n@media (max-width: 480px) {\n .vemly-widget-container,\n .vemly-widget-container[data-position="right"],\n .vemly-widget-container[data-position="left"] {\n bottom: 0;\n right: 0;\n left: 0;\n align-items: flex-end; /* Always bottom sheet style or full screen */\n }\n \n .vemly-window {\n width: 100vw;\n height: 100vh;\n max-width: none;\n max-height: none;\n border-radius: 0;\n }\n \n .vemly-bubble {\n position: fixed;\n bottom: 16px;\n right: 16px;\n z-index: 2147483648; /* Ensure bubble is on top if needed */\n }\n}\n',this.shadowRoot.appendChild(t)}render(){if(!this.shadowRoot||!this.client)return;let n=document.createElement("div");this.shadowRoot.appendChild(n),function(n,i){var r,l,s;t.h&&t.h(n,i),r=i.o,l=[],s=[],I(i,n=i.o=y(g,null,[n]),r||u,u,i.namespaceURI,r?null:i.firstChild?e.call(i.childNodes):null,l,r?r.m:i.firstChild,!1,s),M(l,n,s)}(y(He,{client:this.client}),n)}};typeof window<"u"&&(window.Vemly=We)}();
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=require("preact"),n=require("preact/hooks"),t=require("lucide-preact"),a=require("marked"),i=require("preact/jsx-runtime");function r({client:e}){let[r,s]=n.useState(!1),[l,o]=n.useState("home"),[d,c]=n.useState([]),[m,y]=n.useState([]),[v,p]=n.useState(""),[h,f]=n.useState(!1),[u,g]=n.useState(!1),[x,b]=n.useState(!1),[w,k]=n.useState(null),[N,C]=n.useState(null),S=n.useRef(null),[z,T]=n.useState(null),I=n.useRef(null),j=n.useRef(null),A=n.useRef(0);n.useEffect(()=>{I.current=z},[z]);let[$,D]=n.useState({}),[O,_]=n.useState("#5046e5"),[E,B]=n.useState(24),[M,P]=n.useState("right"),[W,Y]=n.useState("light"),[q,F]=n.useState("#ffffff"),[H,J]=n.useState("#ffffff"),[R,L]=n.useState("message"),[U,V]=n.useState(!0),[G,K]=n.useState(!0),[Q,X]=n.useState(!0),[Z,ee]=n.useState(!0),[ne,te]=n.useState(!1);n.useEffect(()=>{e.getWidgetConfig().then(n=>{if(n){if("error"===n.status)return K(!1),void te(!0);if(0===Object.keys(n).length)return K(!1),void te(!0);void 0!==n.widgetEnabled&&K(n.widgetEnabled),void 0!==n.aiMessagingEnabled&&X(n.aiMessagingEnabled);let t=n.config||{};if(D(t),t.primaryColor&&_(t.primaryColor),t.defaultAgentName&&T(t.defaultAgentName),void 0!==t.borderRadius&&B(t.borderRadius),t.position&&P(t.position),t.theme&&Y(t.theme),t.launcherIcon&&L(t.launcherIcon),void 0!==t.showBranding&&V(t.showBranding),t.websiteUrl&&typeof window<"u")try{let n=new URL(t.websiteUrl).origin,a=window.location.origin,i=a.includes("localhost")||a.includes("127.0.0.1"),r=e.apiUrl?.includes("localhost")||e.apiUrl?.includes("127.0.0.1");ee(n===a||i||r)}catch{ee(!0)}else ee(!0)}te(!0)})},[e]),n.useEffect(()=>{r&&("home"===l&&re(),ae())},[r,l]),n.useEffect(()=>{ae()},[m,h]);let ae=()=>{S.current?.scrollIntoView({behavior:"smooth"})},ie=()=>s(!r),re=async()=>{let n=await e.getHistory();c(n)},se=()=>{e.connectStream((e,n)=>{if("message-stream"===e){let e=n.text||n.content;e&&de(e)}else if("token"===e)de(n);else if("message-complete"===e)f(!1);else if("message"===e){if(!n.id)return;y(e=>{if(e.some(e=>e.id===n.id))return e;if("user"===n.role){let t=e.findIndex(e=>e.id.startsWith("user_")&&e.content===n.content);if(-1!==t){let a=[...e];return a[t]={id:n.id,role:n.role,content:n.content,createdAt:n.createdAt,agentName:void 0},a}}return f(!1),[...e,{id:n.id,role:n.role,content:n.content,createdAt:n.createdAt,agentName:n.agentName||("assistant"===n.role?z:void 0),agentAvatar:n.agentAvatar}]}),f(!1)}else if("human-takeover"===e){let e=n.isHumanTakeover;g(e),e?(f(!1),n.userName&&k(n.userName),n.agentAvatar&&C(n.agentAvatar),y(e=>{if(e.some(e=>"system-takeover"===e.id))return e;let t=n.userName||"a team member";return[...e,{id:"system-takeover",role:"system",content:`You're now connected with ${t}.`,createdAt:(new Date).toISOString()}]})):(k(null),C(null))}else"support-typing"===e?n.isTyping?(f(!0),n.userName&&k(n.userName),n.agentAvatar&&C(n.agentAvatar)):f(!1):"thinking-start"===e||"typing-start"===e?Q&&f(!0):"conversation-closed"===e&&(b(!0),f(!1),y(e=>e.some(e=>"system-closed"===e.id)?e:[...e,{id:"system-closed",role:"system",content:"This conversation has been closed. Thank you for reaching out!",createdAt:(new Date).toISOString()}]))})},le=()=>{e.sessionId=null,T(null),y([]),b(!1),g(!1),k(null),C(null),o("chat")},oe=async()=>{if(!v.trim())return;let n="user_"+Date.now(),t={id:n,role:"user",content:v,createdAt:(new Date).toISOString()};y(e=>[...e,t]),p(""),u||f(!0);try{let a=await e.sendMessage(t.content);a.isHumanTakeover&&(g(!0),f(!1),T("Support Team"),y(e=>e.some(e=>"system-takeover"===e.id)?e:[...e,{id:"system-takeover",role:"system",content:"A team member will be with you shortly.",createdAt:(new Date).toISOString()}])),a.message?.message?.id&&y(e=>e.map(e=>e.id===n?{...e,id:a.message.message.id}:e)),a.agentName&&!a.isHumanTakeover&&T(a.agentName),se()}catch(e){f(!1)}},de=e=>{y(n=>{let t=n[n.length-1];return t&&"assistant"===t.role?[...n.slice(0,-1),{...t,content:t.content+e}]:[...n,{id:"bot_"+Date.now(),role:"assistant",content:e,createdAt:(new Date).toISOString(),agentName:I.current||void 0}]})},ce="dark"===W,me="glass"===W,ye={"--vemly-primary":O,"--vemly-primary-hover":O,"--vemly-radius":`${E}px`,"--vemly-header-text":q,"--vemly-user-text":H,"--vemly-bg":ce?"#1f2937":me?"rgba(255, 255, 255, 0.8)":"#ffffff","--vemly-surface":ce?"#111827":me?"rgba(249, 250, 251, 0.5)":"#f9fafb","--vemly-text":ce?"#f9fafb":"#111827","--vemly-text-secondary":ce?"#9ca3af":"#6b7280","--vemly-text-muted":ce?"#6b7280":"#9ca3af","--vemly-border":ce?"#374151":"#e5e7eb","--vemly-user-bg":"#111827","--vemly-ai-bg":ce?"#374151":"#ffffff"},ve=me?{backdropFilter:"blur(12px)",WebkitBackdropFilter:"blur(12px)"}:{},pe=$.title||"Vemly",he=$.titleAlignment||"left";return ne&&G&&Z&&G?i.jsxs("div",{className:"vemly-widget-container",style:ye,"data-position":M,children:[i.jsxs("div",{className:"vemly-window "+(r?"open":""),style:ve,children:[i.jsxs("div",{className:"vemly-header",style:{color:q},children:[i.jsxs("div",{className:"vemly-header-top",children:[i.jsx("div",{className:"vemly-brand",children:"chat"===l&&i.jsx("button",{className:"vemly-back-btn",onClick:()=>{b(!1),o("home"),re()},children:i.jsx(t.ChevronLeft,{size:20})})}),i.jsx("button",{className:"vemly-close",onClick:ie,style:{color:q},children:i.jsx(t.X,{size:20})})]}),i.jsxs("div",{className:"vemly-header-content",style:{textAlign:he},children:[i.jsx("h3",{children:pe}),i.jsx("p",{style:{opacity:.9},children:"home"===l?$.greeting||"We're here to help":"Ask us anything"})]}),i.jsxs("div",{className:"vemly-status",style:{justifyContent:"center"===he?"center":"flex-start"},children:[i.jsx("span",{className:"vemly-status-dot"}),i.jsx("span",{style:{opacity:.9},children:"We typically reply instantly"})]})]}),"home"===l?i.jsx("div",{className:"vemly-home",children:i.jsxs("div",{className:"vemly-home-content",children:[i.jsxs("button",{onClick:le,className:"vemly-start-btn",style:{backgroundColor:ce?"#374151":"#111827",color:"#ffffff"},children:[i.jsx(t.MessageCircle,{size:18}),i.jsx("span",{children:"Start a conversation"})]}),d.length>0&&i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"vemly-section-title",children:"Recent conversations"}),i.jsx("div",{className:"vemly-session-list",children:d.slice(0,5).map(n=>i.jsxs("div",{onClick:()=>(async(n,t)=>{e.sessionId=n,T(t||null),o("chat"),y([]);try{let a=await fetch(`${e.apiUrl}/chat/session/${n}`,{headers:{"x-vemly-api-key":e.apiKey,"Content-Type":"application/json"}});if(a.ok){let e=await a.json(),n=!!e.session?.isHumanTakeover;n&&g(!0);let i=n?"Support Team":e.agent?.name||t;if(i&&T(i),e.session?.closedAt&&b(!0),e.messages){let n=e.messages.map(e=>({...e,agentName:e.agentName||("assistant"===e.role?i:void 0),agentAvatar:e.agentAvatar}));y(n)}}se()}catch(e){}})(n.id,n.agentName),className:"vemly-session-item",style:{backgroundColor:ce?"#374151":"#ffffff",borderColor:ce?"#4b5563":"#e5e7eb"},children:[i.jsx("div",{className:"vemly-session-title",style:{color:ce?"#fff":"#111827"},children:n.title||"New Conversation"}),i.jsx("div",{className:"vemly-session-date",children:new Date(n.createdAt||Date.now()).toLocaleDateString()})]},n.id))})]}),0===d.length&&i.jsx("div",{className:"vemly-empty",children:"No previous conversations"})]})}):i.jsxs("div",{className:"vemly-messages",style:{backgroundColor:ce?"#1f2937":"glass"===W?"transparent":"#f9fafb"},children:[m.map((e,n)=>i.jsx("div",{className:`vemly-message-group ${e.role}`,children:"system"===e.role?i.jsx("div",{className:"vemly-message-content",children:i.jsx("p",{children:e.content})}):i.jsxs(i.Fragment,{children:[("assistant"===e.role||"tool"===e.role)&&i.jsxs("div",{className:"vemly-sender",children:[e.agentAvatar?i.jsx("img",{src:e.agentAvatar,alt:e.agentName||"Bot",className:"vemly-sender-avatar-img"}):i.jsx("div",{className:"vemly-sender-avatar",children:(e.agentName||z||"Bot").substring(0,2).toUpperCase()}),i.jsx("div",{className:"vemly-sender-name",style:{color:ce?"#e5e7eb":"#111827"},children:e.agentName||z||"Bot"})]}),i.jsx("div",{className:"vemly-message-content",children:i.jsx("div",{dangerouslySetInnerHTML:{t:a.marked.parse(e.content||"")}})})]})},e.id||n)),h&&(()=>{let e=u&&w?w:z||"Vemly";return i.jsxs("div",{className:"vemly-message-group assistant",children:[i.jsxs("div",{className:"vemly-sender",children:[u&&N?i.jsx("img",{src:N,alt:e,className:"vemly-sender-avatar-img"}):i.jsx("div",{className:"vemly-sender-avatar",children:e.substring(0,2).toUpperCase()}),i.jsx("div",{className:"vemly-sender-name",children:e})]}),i.jsxs("div",{className:"vemly-typing",style:{backgroundColor:ce?"#374151":"#ffffff",borderColor:ce?"#4b5563":"#e5e7eb"},children:[i.jsx("div",{className:"vemly-dot"}),i.jsx("div",{className:"vemly-dot"}),i.jsx("div",{className:"vemly-dot"})]})]})})(),i.jsx("div",{ref:S})]}),"chat"===l&&i.jsxs("div",{className:"vemly-input-container",style:{backgroundColor:ce?"#1f2937":"#ffffff",borderColor:ce?"#374151":"#e5e7eb",opacity:x?.7:1},children:[x?i.jsxs("div",{style:{padding:"12px 16px",textAlign:"center"},children:[i.jsx("p",{style:{fontSize:"13px",color:ce?"#9ca3af":"#6b7280",marginBottom:"12px"},children:"This conversation is closed."}),i.jsxs("button",{onClick:le,style:{display:"inline-flex",alignItems:"center",gap:"8px",padding:"8px 16px",backgroundColor:O,color:"#ffffff",border:"none",borderRadius:"8px",fontSize:"13px",fontWeight:500,cursor:"pointer"},children:[i.jsx(t.MessageCircle,{size:16}),"Start New Conversation"]})]}):i.jsxs("div",{className:"vemly-input-wrapper",style:{backgroundColor:ce?"#111827":"#f9fafb",borderColor:ce?"#374151":"#e5e7eb"},children:[i.jsx("textarea",{className:"vemly-input",placeholder:"Send a message...",value:v,onInput:n=>{let t=n.target.value;if(p(t),e.sessionId){let n=Date.now();n-A.current>1500&&(e.sendTyping(!0),A.current=n),j.current&&clearTimeout(j.current),j.current=setTimeout(()=>{e.sendTyping(!1),j.current=null,A.current=0},3e3)}},onKeyDown:e=>{"Enter"===e.key&&!e.shiftKey&&(e.preventDefault(),oe())},rows:1,style:{color:ce?"#f3f4f6":"#111827"}}),i.jsx("button",{className:"vemly-send",onClick:oe,disabled:!v.trim()||h,children:i.jsx(t.Send,{size:16})})]}),U&&i.jsxs("div",{className:"vemly-branding",children:["Powered by ",i.jsx("a",{href:"https://usevemly.com",target:"_blank",rel:"noopener",children:"Vemly"})]})]})]}),i.jsx("button",{className:"vemly-bubble",onClick:ie,children:r?i.jsx(t.X,{size:24}):"bot"===R?i.jsx(t.Bot,{size:24}):i.jsx(t.MessageCircle,{size:24})})]}):null}var s=class{apiUrl;tenantId;agentId;apiKey;deviceId;sessionId=null;sseSource=null;sseController=null;constructor(e){this.apiUrl=e.apiUrl||"https://api.usevemly.com",this.tenantId=e.tenantId,this.agentId=e.agentId,this.apiKey=e.apiKey,this.deviceId=this.getOrCreateDeviceId()}getOrCreateDeviceId(){if(typeof window>"u")return"server";let e=localStorage.getItem("vemly_device_id");return e||(e="dev_"+Math.random().toString(36).substring(2,15),localStorage.setItem("vemly_device_id",e)),e}async createSession(){let e={"Content-Type":"application/json"};this.apiKey&&(e["x-vemly-api-key"]=this.apiKey);let n=await fetch(`${this.apiUrl}/chat/session`,{method:"POST",headers:e,body:JSON.stringify({...this.tenantId?{tenantId:this.tenantId}:{},agentId:this.agentId,deviceId:this.deviceId})});if(!n.ok)throw new Error("Failed to create session");let t=await n.json();return this.sessionId=t.session?.id||t.id,{session:t.session||t,agentName:t.agent?.name}}async resumeSession(){let e={"Content-Type":"application/json"};this.apiKey&&(e["x-vemly-api-key"]=this.apiKey);let n=await fetch(`${this.apiUrl}/chat/session/resume`,{method:"POST",headers:e,body:JSON.stringify({tenantId:this.tenantId,deviceId:this.deviceId})});if(!n.ok)return null;let t=await n.json();return this.sessionId=t.session?.id||null,t.session}async getHistory(e=20){let n={"Content-Type":"application/json"};this.apiKey&&(n["x-vemly-api-key"]=this.apiKey);let t={deviceId:this.deviceId,limit:e.toString()};this.tenantId&&(t.tenantId=this.tenantId);let a=new URLSearchParams(t),i=await fetch(`${this.apiUrl}/chat/sessions/device?${a.toString()}`,{method:"GET",headers:n});return i.ok&&(await i.json()).sessions||[]}async getWidgetConfig(){try{let e=`${this.apiUrl}/chat/config`;this.tenantId&&(e+=`/${this.tenantId}`);let n={};return this.apiKey&&(n["x-vemly-api-key"]=this.apiKey),await(await fetch(e,{method:"GET",headers:n})).json()||{}}catch(e){return{}}}async sendMessage(e,n){let t,a;if(!this.sessionId){let e=await this.createSession();t=e.agentName,a=e.session.isHumanTakeover}let i={"Content-Type":"application/json"};this.apiKey&&(i["x-vemly-api-key"]=this.apiKey);let r=await fetch(`${this.apiUrl}/chat/message`,{method:"POST",headers:i,body:JSON.stringify({sessionId:this.sessionId,content:e,role:"user"})});if(!r.ok)throw new Error("Failed to send message");return{message:await r.json(),agentName:t,isHumanTakeover:a}}async sendTyping(e){if(!this.sessionId)return;let n={"Content-Type":"application/json"};this.apiKey&&(n["x-vemly-api-key"]=this.apiKey),await fetch(`${this.apiUrl}/chat/typing`,{method:"POST",headers:n,body:JSON.stringify({sessionId:this.sessionId,isTyping:e})})}connectStream(e){if(!this.sessionId)return;this.sseController&&this.sseController.abort(),this.sseController=new AbortController;let n=`${this.apiUrl}/chat/stream/${this.sessionId}`,t={"Content-Type":"application/json"};this.apiKey&&(t["x-vemly-api-key"]=this.apiKey),fetch(n,{method:"GET",headers:t,signal:this.sseController.signal}).then(async n=>{if(!n.ok||!n.body)throw new Error(`SSE Error: ${n.status}`);let t=n.body.getReader(),a=new TextDecoder,i="";for(;;){let{value:n,done:r}=await t.read();if(r)break;i+=a.decode(n,{stream:!0});let s=i.split("\n\n");i=s.pop()||"";for(let n of s){if(!n.trim())continue;let t=n.split("\n"),a="message",i=null;for(let e of t)if(e.startsWith("event: "))a=e.substring(7).trim();else if(e.startsWith("data: "))try{i=JSON.parse(e.substring(6).trim())}catch{i=e.substring(6).trim()}null!==i&&e(a,i)}}}).catch(e=>{e.name})}disconnectStream(){this.sseSource?.close(),this.sseSource=null,this.sseController?.abort(),this.sseController=null}getSessionId(){return this.sessionId}},l=new class{client=null;container=null;shadowRoot=null;init(e){if(!this.client&&e.apiKey)try{this.client=new s(e),this.createContainer(),this.render()}catch(e){}}createContainer(){let e=document.getElementById("vemly-sdk-root");e&&e.remove(),this.container=document.createElement("div"),this.container.id="vemly-sdk-root",document.body.appendChild(this.container),this.shadowRoot=this.container.attachShadow({mode:"open"});let n=document.createElement("style");n.textContent='\n@import url(\'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\');\n\n:host {\n --vemly-primary: #5046e5;\n --vemly-primary-hover: #4338ca;\n --vemly-bg: #ffffff;\n --vemly-surface: #f9fafb;\n --vemly-text: #111827;\n --vemly-text-secondary: #6b7280;\n --vemly-text-muted: #9ca3af;\n --vemly-border: #e5e7eb;\n --vemly-user-bg: #111827;\n --vemly-ai-bg: #ffffff;\n --vemly-radius: 16px;\n --vemly-font: \'Inter\', -apple-system, BlinkMacSystemFont, \'Segoe UI\', sans-serif;\n}\n\n.vemly-widget-container {\n position: fixed;\n bottom: 20px;\n z-index: 2147483647;\n font-family: var(--vemly-font);\n display: flex;\n flex-direction: column;\n gap: 12px;\n pointer-events: none;\n -webkit-font-smoothing: antialiased;\n}\n\n.vemly-widget-container[data-position="right"] {\n right: 20px;\n left: auto;\n align-items: flex-end;\n}\n\n.vemly-widget-container[data-position="left"] {\n left: 20px;\n right: auto;\n align-items: flex-start;\n}\n\n.vemly-widget-container * {\n box-sizing: border-box;\n pointer-events: auto;\n}\n\n/* Launcher */\n.vemly-bubble {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: var(--vemly-primary);\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.16);\n transition: all 0.2s ease;\n border: none;\n outline: none;\n}\n\n.vemly-bubble:hover {\n background: var(--vemly-primary-hover);\n transform: scale(1.05);\n}\n\n.vemly-bubble:active {\n transform: scale(0.95);\n}\n\n/* Window */\n.vemly-window {\n width: 380px;\n height: 600px;\n max-height: calc(100vh - 100px);\n max-width: calc(100vw - 40px);\n background: var(--vemly-bg);\n border-radius: var(--vemly-radius);\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.05);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n transform-origin: bottom right;\n opacity: 0;\n transform: scale(0.95) translateY(10px);\n transition: all 0.2s ease;\n visibility: hidden;\n}\n\n.vemly-window.open {\n opacity: 1;\n transform: scale(1) translateY(0);\n visibility: visible;\n}\n\n/* Header */\n.vemly-header {\n background: var(--vemly-primary);\n color: white;\n padding: 20px;\n flex-shrink: 0;\n}\n\n.vemly-header-top {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.vemly-brand {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.vemly-back-btn {\n background: rgba(255,255,255,0.15);\n border: none;\n color: white;\n cursor: pointer;\n padding: 6px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s;\n}\n\n.vemly-back-btn:hover {\n background: rgba(255,255,255,0.25);\n}\n\n.vemly-close {\n background: rgba(255,255,255,0.15);\n border: none;\n color: white;\n cursor: pointer;\n padding: 6px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s;\n}\n\n.vemly-close:hover {\n background: rgba(255,255,255,0.25);\n}\n\n.vemly-header-content {\n margin-top: 16px;\n}\n\n.vemly-header-content h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n letter-spacing: -0.01em;\n}\n\n.vemly-header-content p {\n margin: 4px 0 0;\n font-size: 14px;\n opacity: 0.85;\n}\n\n.vemly-status {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 12px;\n font-size: 13px;\n opacity: 0.9;\n}\n\n.vemly-status-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: #22c55e;\n}\n\n/* Messages Area */\n.vemly-messages {\n flex: 1;\n background: var(--vemly-surface);\n padding: 16px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.vemly-message-group {\n display: flex;\n flex-direction: column;\n gap: 4px;\n max-width: 85%;\n animation: vemly-fade-in 0.25s ease-out;\n}\n\n@keyframes vemly-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.vemly-message-group.assistant {\n align-self: flex-start;\n}\n\n.vemly-message-group.user {\n align-self: flex-end;\n}\n\n.vemly-sender {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 4px;\n}\n\n.vemly-sender-avatar {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n background: var(--vemly-primary);\n color: white;\n font-size: 11px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.vemly-sender-avatar-img {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n object-fit: cover;\n}\n\n.vemly-sender-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--vemly-text);\n}\n\n.vemly-message-content {\n padding: 12px 16px;\n border-radius: 16px;\n font-size: 14px;\n line-height: 1.5;\n}\n\n.vemly-message-group.assistant .vemly-message-content {\n background: white;\n color: var(--vemly-text);\n border: 1px solid var(--vemly-border);\n border-top-left-radius: 4px;\n}\n\n.vemly-message-group.user .vemly-message-content {\n background: var(--vemly-user-bg);\n color: white;\n border-top-right-radius: 4px;\n}\n\n.vemly-message-content p { margin: 0 0 8px; }\n.vemly-message-content p:last-child { margin: 0; }\n.vemly-message-content a { color: inherit; text-decoration: underline; }\n.vemly-message-content code {\n background: rgba(0,0,0,0.06);\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 13px;\n}\n.vemly-message-group.user .vemly-message-content code {\n background: rgba(255,255,255,0.15);\n}\n\n/* Home View */\n.vemly-home {\n flex: 1;\n background: var(--vemly-surface);\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.vemly-home-content {\n padding: 16px;\n}\n\n.vemly-start-btn {\n width: 100%;\n padding: 14px 16px;\n background: var(--vemly-text);\n color: white;\n border: none;\n border-radius: 12px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: all 0.15s;\n}\n\n.vemly-start-btn:hover {\n opacity: 0.9;\n transform: translateY(-1px);\n}\n\n.vemly-section-title {\n font-size: 12px;\n font-weight: 600;\n color: var(--vemly-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n margin: 20px 0 12px;\n}\n\n.vemly-session-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.vemly-session-item {\n padding: 12px 14px;\n background: white;\n border: 1px solid var(--vemly-border);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.vemly-session-item:hover {\n border-color: var(--vemly-text-muted);\n background: #fafafa;\n}\n\n.vemly-session-title {\n font-size: 14px;\n font-weight: 500;\n color: var(--vemly-text);\n margin-bottom: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.vemly-session-date {\n font-size: 12px;\n color: var(--vemly-text-muted);\n}\n\n.vemly-empty {\n text-align: center;\n padding: 24px;\n color: var(--vemly-text-muted);\n font-size: 14px;\n}\n\n/* Input */\n.vemly-input-container {\n padding: 12px 16px 16px;\n background: white;\n border-top: 1px solid var(--vemly-border);\n}\n\n.vemly-input-wrapper {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n background: var(--vemly-surface);\n border: 1px solid var(--vemly-border);\n border-radius: 12px;\n padding: 8px 8px 8px 14px;\n transition: all 0.15s;\n}\n\n.vemly-input-wrapper:focus-within {\n border-color: var(--vemly-primary);\n box-shadow: 0 0 0 3px rgba(80, 70, 229, 0.1);\n}\n\n.vemly-input {\n flex: 1;\n border: none;\n background: transparent;\n outline: none;\n font-size: 14px;\n color: var(--vemly-text);\n max-height: 100px;\n resize: none;\n font-family: inherit;\n padding: 4px 0;\n line-height: 1.4;\n}\n\n.vemly-input::placeholder {\n color: var(--vemly-text-muted);\n}\n\n.vemly-send {\n background: var(--vemly-primary);\n color: white;\n border: none;\n cursor: pointer;\n width: 32px;\n height: 32px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.15s;\n flex-shrink: 0;\n}\n\n.vemly-send:hover:not(:disabled) {\n background: var(--vemly-primary-hover);\n}\n\n.vemly-send:disabled {\n background: var(--vemly-border);\n color: var(--vemly-text-muted);\n cursor: default;\n}\n\n.vemly-branding {\n font-size: 11px;\n text-align: center;\n color: var(--vemly-text-muted);\n margin-top: 8px;\n}\n\n.vemly-branding a {\n color: var(--vemly-text-secondary);\n text-decoration: none;\n font-weight: 500;\n}\n\n/* Typing */\n.vemly-typing {\n display: flex;\n gap: 4px;\n padding: 14px 16px;\n background: white;\n border: 1px solid var(--vemly-border);\n border-radius: 16px;\n border-top-left-radius: 4px;\n width: fit-content;\n}\n\n.vemly-dot {\n width: 6px;\n height: 6px;\n background: var(--vemly-text-muted);\n border-radius: 50%;\n animation: vemly-bounce 1.4s infinite ease-in-out;\n}\n\n.vemly-dot:nth-child(1) { animation-delay: -0.32s; }\n.vemly-dot:nth-child(2) { animation-delay: -0.16s; }\n\n@keyframes vemly-bounce {\n 0%, 80%, 100% { transform: scale(0.6); }\n 40% { transform: scale(1); }\n}\n\n/* Mobile */\n@media (max-width: 480px) {\n .vemly-widget-container,\n .vemly-widget-container[data-position="right"],\n .vemly-widget-container[data-position="left"] {\n bottom: 0;\n right: 0;\n left: 0;\n align-items: flex-end; /* Always bottom sheet style or full screen */\n }\n \n .vemly-window {\n width: 100vw;\n height: 100vh;\n max-width: none;\n max-height: none;\n border-radius: 0;\n }\n \n .vemly-bubble {\n position: fixed;\n bottom: 16px;\n right: 16px;\n z-index: 2147483648; /* Ensure bubble is on top if needed */\n }\n}\n',this.shadowRoot.appendChild(n)}render(){if(!this.shadowRoot||!this.client)return;let n=document.createElement("div");this.shadowRoot.appendChild(n),e.render(e.h(r,{client:this.client}),n)}},o=l;typeof window<"u"&&(window.Vemly=l),module.exports=o;
|
|
1
|
+
"use strict";var e=require("preact"),n=require("preact/hooks"),t=require("lucide-preact"),a=require("marked"),i=require("preact/jsx-runtime");function r({client:e}){let[r,s]=n.useState(!1),[l,o]=n.useState("home"),[d,c]=n.useState([]),[m,y]=n.useState([]),[v,p]=n.useState(""),[h,f]=n.useState(!1),[u,g]=n.useState(!1),[x,b]=n.useState(!1),[w,k]=n.useState(null),[N,C]=n.useState(null),S=n.useRef(null),[z,T]=n.useState(null),I=n.useRef(null),j=n.useRef(null),A=n.useRef(0);n.useEffect(()=>{I.current=z},[z]);let[$,D]=n.useState({}),[O,_]=n.useState("#5046e5"),[E,B]=n.useState(24),[M,P]=n.useState("right"),[W,Y]=n.useState("light"),[q,F]=n.useState("#ffffff"),[H,J]=n.useState("#ffffff"),[R,L]=n.useState("message"),[U,V]=n.useState(!0),[G,K]=n.useState(!0),[Q,X]=n.useState(!0),[Z,ee]=n.useState(!0),[ne,te]=n.useState(!1);n.useEffect(()=>{e.getWidgetConfig().then(n=>{if(n){if("error"===n.status)return K(!1),void te(!0);if(0===Object.keys(n).length)return K(!1),void te(!0);void 0!==n.widgetEnabled&&K(n.widgetEnabled),void 0!==n.aiMessagingEnabled&&X(n.aiMessagingEnabled);let t=n.config||{};if(D(t),t.primaryColor&&_(t.primaryColor),t.defaultAgentName&&T(t.defaultAgentName),void 0!==t.borderRadius&&B(t.borderRadius),t.position&&P(t.position),t.theme&&Y(t.theme),t.launcherIcon&&L(t.launcherIcon),void 0!==t.showBranding&&V(t.showBranding),t.websiteUrl&&typeof window<"u")try{let n=new URL(t.websiteUrl).origin,a=window.location.origin,i=a.includes("localhost")||a.includes("127.0.0.1"),r=e.apiUrl?.includes("localhost")||e.apiUrl?.includes("127.0.0.1");ee(n===a||i||r)}catch{ee(!0)}else ee(!0)}te(!0)})},[e]),n.useEffect(()=>{r&&("home"===l&&re(),ae())},[r,l]),n.useEffect(()=>{ae()},[m,h]);let ae=()=>{S.current?.scrollIntoView({behavior:"smooth"})},ie=()=>s(!r),re=async()=>{let n=await e.getHistory();c(n)},se=()=>{e.connectStream((e,n)=>{if("message-stream"===e){let e=n.text||n.content;e&&"string"==typeof e&&"undefined"!==e&&de(e)}else if("token"===e)n&&"string"==typeof n&&"undefined"!==n&&de(n);else if("message-complete"===e)f(!1);else if("message"===e){if(!n.id)return;y(e=>{if(e.some(e=>e.id===n.id))return e;if("user"===n.role){let t=e.findIndex(e=>e.id.startsWith("user_")&&e.content===n.content);if(-1!==t){let a=[...e];return a[t]={id:n.id,role:n.role,content:n.content,createdAt:n.createdAt,agentName:void 0},a}}return f(!1),[...e,{id:n.id,role:n.role,content:n.content,createdAt:n.createdAt,agentName:n.agentName||("assistant"===n.role?z:void 0),agentAvatar:n.agentAvatar}]}),f(!1)}else if("human-takeover"===e){let e=n.isHumanTakeover;g(e),e?(f(!1),n.userName&&k(n.userName),n.agentAvatar&&C(n.agentAvatar),y(e=>{if(e.some(e=>"system-takeover"===e.id))return e;let t=n.userName||"a team member";return[...e,{id:"system-takeover",role:"system",content:`You're now connected with ${t}.`,createdAt:(new Date).toISOString()}]})):(k(null),C(null))}else"support-typing"===e?n.isTyping?(f(!0),n.userName&&k(n.userName),n.agentAvatar&&C(n.agentAvatar)):f(!1):"thinking-start"===e||"typing-start"===e?Q&&f(!0):"conversation-closed"===e&&(b(!0),f(!1),y(e=>e.some(e=>"system-closed"===e.id)?e:[...e,{id:"system-closed",role:"system",content:"This conversation has been closed. Thank you for reaching out!",createdAt:(new Date).toISOString()}]))})},le=()=>{e.sessionId=null,T(null),y([]),b(!1),g(!1),k(null),C(null),o("chat")},oe=async()=>{if(!v.trim())return;let n="user_"+Date.now(),t={id:n,role:"user",content:v,createdAt:(new Date).toISOString()};y(e=>[...e,t]),p(""),u||f(!0);try{let a=await e.sendMessage(t.content);a.isHumanTakeover&&(g(!0),f(!1),T("Support Team"),y(e=>e.some(e=>"system-takeover"===e.id)?e:[...e,{id:"system-takeover",role:"system",content:"A team member will be with you shortly.",createdAt:(new Date).toISOString()}])),a.message?.message?.id&&y(e=>e.map(e=>e.id===n?{...e,id:a.message.message.id}:e)),a.agentName&&!a.isHumanTakeover&&T(a.agentName),se()}catch(e){f(!1)}},de=e=>{y(n=>{let t=n[n.length-1];return t&&"assistant"===t.role?[...n.slice(0,-1),{...t,content:t.content+e}]:[...n,{id:"bot_"+Date.now(),role:"assistant",content:e,createdAt:(new Date).toISOString(),agentName:I.current||void 0}]})},ce="dark"===W,me="glass"===W,ye={"--vemly-primary":O,"--vemly-primary-hover":O,"--vemly-radius":`${E}px`,"--vemly-header-text":q,"--vemly-user-text":H,"--vemly-bg":ce?"#1f2937":me?"rgba(255, 255, 255, 0.8)":"#ffffff","--vemly-surface":ce?"#111827":me?"rgba(249, 250, 251, 0.5)":"#f9fafb","--vemly-text":ce?"#f9fafb":"#111827","--vemly-text-secondary":ce?"#9ca3af":"#6b7280","--vemly-text-muted":ce?"#6b7280":"#9ca3af","--vemly-border":ce?"#374151":"#e5e7eb","--vemly-user-bg":"#111827","--vemly-ai-bg":ce?"#374151":"#ffffff"},ve=me?{backdropFilter:"blur(12px)",WebkitBackdropFilter:"blur(12px)"}:{},pe=$.title||"Vemly",he=$.titleAlignment||"left";return ne&&G&&Z&&G?i.jsxs("div",{className:"vemly-widget-container",style:ye,"data-position":M,children:[i.jsxs("div",{className:"vemly-window "+(r?"open":""),style:ve,children:[i.jsxs("div",{className:"vemly-header",style:{color:q},children:[i.jsxs("div",{className:"vemly-header-top",children:[i.jsx("div",{className:"vemly-brand",children:"chat"===l&&i.jsx("button",{className:"vemly-back-btn",onClick:()=>{b(!1),o("home"),re()},children:i.jsx(t.ChevronLeft,{size:20})})}),i.jsx("button",{className:"vemly-close",onClick:ie,style:{color:q},children:i.jsx(t.X,{size:20})})]}),i.jsxs("div",{className:"vemly-header-content",style:{textAlign:he},children:[i.jsx("h3",{children:pe}),i.jsx("p",{style:{opacity:.9},children:"home"===l?$.greeting||"We're here to help":"Ask us anything"})]}),i.jsxs("div",{className:"vemly-status",style:{justifyContent:"center"===he?"center":"flex-start"},children:[i.jsx("span",{className:"vemly-status-dot"}),i.jsx("span",{style:{opacity:.9},children:"We typically reply instantly"})]})]}),"home"===l?i.jsx("div",{className:"vemly-home",children:i.jsxs("div",{className:"vemly-home-content",children:[i.jsxs("button",{onClick:le,className:"vemly-start-btn",style:{backgroundColor:ce?"#374151":"#111827",color:"#ffffff"},children:[i.jsx(t.MessageCircle,{size:18}),i.jsx("span",{children:"Start a conversation"})]}),d.length>0&&i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"vemly-section-title",children:"Recent conversations"}),i.jsx("div",{className:"vemly-session-list",children:d.slice(0,5).map(n=>i.jsxs("div",{onClick:()=>(async(n,t)=>{e.sessionId=n,T(t||null),o("chat"),y([]);try{let a=await fetch(`${e.apiUrl}/chat/session/${n}`,{headers:{"x-vemly-api-key":e.apiKey,"Content-Type":"application/json"}});if(a.ok){let e=await a.json(),n=!!e.session?.isHumanTakeover;n&&g(!0);let i=n?"Support Team":e.agent?.name||t;if(i&&T(i),e.session?.closedAt&&b(!0),e.messages){let n=e.messages.map(e=>({...e,agentName:e.agentName||("assistant"===e.role?i:void 0),agentAvatar:e.agentAvatar}));y(n)}}se()}catch(e){}})(n.id,n.agentName),className:"vemly-session-item",style:{backgroundColor:ce?"#374151":"#ffffff",borderColor:ce?"#4b5563":"#e5e7eb"},children:[i.jsx("div",{className:"vemly-session-title",style:{color:ce?"#fff":"#111827"},children:n.title||"New Conversation"}),i.jsx("div",{className:"vemly-session-date",children:new Date(n.createdAt||Date.now()).toLocaleDateString()})]},n.id))})]}),0===d.length&&i.jsx("div",{className:"vemly-empty",children:"No previous conversations"})]})}):i.jsxs("div",{className:"vemly-messages",style:{backgroundColor:ce?"#1f2937":"glass"===W?"transparent":"#f9fafb"},children:[m.map((e,n)=>i.jsx("div",{className:`vemly-message-group ${e.role}`,children:"system"===e.role?i.jsx("div",{className:"vemly-message-content",children:i.jsx("p",{children:e.content})}):i.jsxs(i.Fragment,{children:[("assistant"===e.role||"tool"===e.role)&&i.jsxs("div",{className:"vemly-sender",children:[e.agentAvatar?i.jsx("img",{src:e.agentAvatar,alt:e.agentName||"Bot",className:"vemly-sender-avatar-img"}):i.jsx("div",{className:"vemly-sender-avatar",children:(e.agentName||z||"Bot").substring(0,2).toUpperCase()}),i.jsx("div",{className:"vemly-sender-name",style:{color:ce?"#e5e7eb":"#111827"},children:e.agentName||z||"Bot"})]}),i.jsx("div",{className:"vemly-message-content",children:i.jsx("div",{dangerouslySetInnerHTML:{t:a.marked.parse(e.content||"")}})})]})},e.id||n)),h&&(()=>{let e=u&&w?w:z||"Vemly";return i.jsxs("div",{className:"vemly-message-group assistant",children:[i.jsxs("div",{className:"vemly-sender",children:[u&&N?i.jsx("img",{src:N,alt:e,className:"vemly-sender-avatar-img"}):i.jsx("div",{className:"vemly-sender-avatar",children:e.substring(0,2).toUpperCase()}),i.jsx("div",{className:"vemly-sender-name",children:e})]}),i.jsxs("div",{className:"vemly-typing",style:{backgroundColor:ce?"#374151":"#ffffff",borderColor:ce?"#4b5563":"#e5e7eb"},children:[i.jsx("div",{className:"vemly-dot"}),i.jsx("div",{className:"vemly-dot"}),i.jsx("div",{className:"vemly-dot"})]})]})})(),i.jsx("div",{ref:S})]}),"chat"===l&&i.jsxs("div",{className:"vemly-input-container",style:{backgroundColor:ce?"#1f2937":"#ffffff",borderColor:ce?"#374151":"#e5e7eb",opacity:x?.7:1},children:[x?i.jsxs("div",{style:{padding:"12px 16px",textAlign:"center"},children:[i.jsx("p",{style:{fontSize:"13px",color:ce?"#9ca3af":"#6b7280",marginBottom:"12px"},children:"This conversation is closed."}),i.jsxs("button",{onClick:le,style:{display:"inline-flex",alignItems:"center",gap:"8px",padding:"8px 16px",backgroundColor:O,color:"#ffffff",border:"none",borderRadius:"8px",fontSize:"13px",fontWeight:500,cursor:"pointer"},children:[i.jsx(t.MessageCircle,{size:16}),"Start New Conversation"]})]}):i.jsxs("div",{className:"vemly-input-wrapper",style:{backgroundColor:ce?"#111827":"#f9fafb",borderColor:ce?"#374151":"#e5e7eb"},children:[i.jsx("textarea",{className:"vemly-input",placeholder:"Send a message...",value:v,onInput:n=>{let t=n.target.value;if(p(t),e.sessionId){let n=Date.now();n-A.current>1500&&(e.sendTyping(!0),A.current=n),j.current&&clearTimeout(j.current),j.current=setTimeout(()=>{e.sendTyping(!1),j.current=null,A.current=0},3e3)}},onKeyDown:e=>{"Enter"===e.key&&!e.shiftKey&&(e.preventDefault(),oe())},rows:1,style:{color:ce?"#f3f4f6":"#111827"}}),i.jsx("button",{className:"vemly-send",onClick:oe,disabled:!v.trim()||h,children:i.jsx(t.Send,{size:16})})]}),U&&i.jsxs("div",{className:"vemly-branding",children:["Powered by ",i.jsx("a",{href:"https://usevemly.com",target:"_blank",rel:"noopener",children:"Vemly"})]})]})]}),i.jsx("button",{className:"vemly-bubble",onClick:ie,children:r?i.jsx(t.X,{size:24}):"bot"===R?i.jsx(t.Bot,{size:24}):i.jsx(t.MessageCircle,{size:24})})]}):null}var s=class{apiUrl;tenantId;agentId;apiKey;deviceId;sessionId=null;sseSource=null;sseController=null;constructor(e){this.apiUrl=e.apiUrl||"https://api.usevemly.com",this.tenantId=e.tenantId,this.agentId=e.agentId,this.apiKey=e.apiKey,this.deviceId=this.getOrCreateDeviceId()}getOrCreateDeviceId(){if(typeof window>"u")return"server";let e=localStorage.getItem("vemly_device_id");return e||(e="dev_"+Math.random().toString(36).substring(2,15),localStorage.setItem("vemly_device_id",e)),e}async createSession(){let e={"Content-Type":"application/json"};this.apiKey&&(e["x-vemly-api-key"]=this.apiKey);let n=await fetch(`${this.apiUrl}/chat/session`,{method:"POST",headers:e,body:JSON.stringify({...this.tenantId?{tenantId:this.tenantId}:{},agentId:this.agentId,deviceId:this.deviceId})});if(!n.ok)throw new Error("Failed to create session");let t=await n.json();return this.sessionId=t.session?.id||t.id,{session:t.session||t,agentName:t.agent?.name}}async resumeSession(){let e={"Content-Type":"application/json"};this.apiKey&&(e["x-vemly-api-key"]=this.apiKey);let n=await fetch(`${this.apiUrl}/chat/session/resume`,{method:"POST",headers:e,body:JSON.stringify({tenantId:this.tenantId,deviceId:this.deviceId})});if(!n.ok)return null;let t=await n.json();return this.sessionId=t.session?.id||null,t.session}async getHistory(e=20){let n={"Content-Type":"application/json"};this.apiKey&&(n["x-vemly-api-key"]=this.apiKey);let t={deviceId:this.deviceId,limit:e.toString()};this.tenantId&&(t.tenantId=this.tenantId);let a=new URLSearchParams(t),i=await fetch(`${this.apiUrl}/chat/sessions/device?${a.toString()}`,{method:"GET",headers:n});return i.ok&&(await i.json()).sessions||[]}async getWidgetConfig(){try{let e=`${this.apiUrl}/chat/config`;this.tenantId&&(e+=`/${this.tenantId}`);let n={};return this.apiKey&&(n["x-vemly-api-key"]=this.apiKey),await(await fetch(e,{method:"GET",headers:n})).json()||{}}catch(e){return{}}}async sendMessage(e,n){let t,a;if(!this.sessionId){let e=await this.createSession();t=e.agentName,a=e.session.isHumanTakeover}let i={"Content-Type":"application/json"};this.apiKey&&(i["x-vemly-api-key"]=this.apiKey);let r=await fetch(`${this.apiUrl}/chat/message`,{method:"POST",headers:i,body:JSON.stringify({sessionId:this.sessionId,content:e,role:"user"})});if(!r.ok)throw new Error("Failed to send message");return{message:await r.json(),agentName:t,isHumanTakeover:a}}async sendTyping(e){if(!this.sessionId)return;let n={"Content-Type":"application/json"};this.apiKey&&(n["x-vemly-api-key"]=this.apiKey),await fetch(`${this.apiUrl}/chat/typing`,{method:"POST",headers:n,body:JSON.stringify({sessionId:this.sessionId,isTyping:e})})}connectStream(e){if(!this.sessionId)return;this.sseController&&this.sseController.abort(),this.sseController=new AbortController;let n=`${this.apiUrl}/chat/stream/${this.sessionId}`,t={"Content-Type":"application/json"};this.apiKey&&(t["x-vemly-api-key"]=this.apiKey),fetch(n,{method:"GET",headers:t,signal:this.sseController.signal}).then(async n=>{if(!n.ok||!n.body)throw new Error(`SSE Error: ${n.status}`);let t=n.body.getReader(),a=new TextDecoder,i="";for(;;){let{value:n,done:r}=await t.read();if(r)break;i+=a.decode(n,{stream:!0});let s=i.split("\n\n");i=s.pop()||"";for(let n of s){if(!n.trim())continue;let t=n.split("\n"),a="message",i=null;for(let e of t)if(e.startsWith("event: "))a=e.substring(7).trim();else if(e.startsWith("data: "))try{i=JSON.parse(e.substring(6).trim())}catch{i=e.substring(6).trim()}null!==i&&e(a,i)}}}).catch(e=>{e.name})}disconnectStream(){this.sseSource?.close(),this.sseSource=null,this.sseController?.abort(),this.sseController=null}getSessionId(){return this.sessionId}},l=new class{client=null;container=null;shadowRoot=null;init(e){if(!this.client&&e.apiKey)try{this.client=new s(e),this.createContainer(),this.render()}catch(e){}}createContainer(){let e=document.getElementById("vemly-sdk-root");e&&e.remove(),this.container=document.createElement("div"),this.container.id="vemly-sdk-root",document.body.appendChild(this.container),this.shadowRoot=this.container.attachShadow({mode:"open"});let n=document.createElement("style");n.textContent='\n@import url(\'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\');\n\n:host {\n --vemly-primary: #5046e5;\n --vemly-primary-hover: #4338ca;\n --vemly-bg: #ffffff;\n --vemly-surface: #f9fafb;\n --vemly-text: #111827;\n --vemly-text-secondary: #6b7280;\n --vemly-text-muted: #9ca3af;\n --vemly-border: #e5e7eb;\n --vemly-user-bg: #111827;\n --vemly-ai-bg: #ffffff;\n --vemly-radius: 16px;\n --vemly-font: \'Inter\', -apple-system, BlinkMacSystemFont, \'Segoe UI\', sans-serif;\n}\n\n.vemly-widget-container {\n position: fixed;\n bottom: 20px;\n z-index: 2147483647;\n font-family: var(--vemly-font);\n display: flex;\n flex-direction: column;\n gap: 12px;\n pointer-events: none;\n -webkit-font-smoothing: antialiased;\n}\n\n.vemly-widget-container[data-position="right"] {\n right: 20px;\n left: auto;\n align-items: flex-end;\n}\n\n.vemly-widget-container[data-position="left"] {\n left: 20px;\n right: auto;\n align-items: flex-start;\n}\n\n.vemly-widget-container * {\n box-sizing: border-box;\n pointer-events: auto;\n}\n\n/* Launcher */\n.vemly-bubble {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: var(--vemly-primary);\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.16);\n transition: all 0.2s ease;\n border: none;\n outline: none;\n}\n\n.vemly-bubble:hover {\n background: var(--vemly-primary-hover);\n transform: scale(1.05);\n}\n\n.vemly-bubble:active {\n transform: scale(0.95);\n}\n\n/* Window */\n.vemly-window {\n width: 380px;\n height: 600px;\n max-height: calc(100vh - 100px);\n max-width: calc(100vw - 40px);\n background: var(--vemly-bg);\n border-radius: var(--vemly-radius);\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.05);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n transform-origin: bottom right;\n opacity: 0;\n transform: scale(0.95) translateY(10px);\n transition: all 0.2s ease;\n visibility: hidden;\n}\n\n.vemly-window.open {\n opacity: 1;\n transform: scale(1) translateY(0);\n visibility: visible;\n}\n\n/* Header */\n.vemly-header {\n background: var(--vemly-primary);\n color: white;\n padding: 20px;\n flex-shrink: 0;\n}\n\n.vemly-header-top {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.vemly-brand {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.vemly-back-btn {\n background: rgba(255,255,255,0.15);\n border: none;\n color: white;\n cursor: pointer;\n padding: 6px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s;\n}\n\n.vemly-back-btn:hover {\n background: rgba(255,255,255,0.25);\n}\n\n.vemly-close {\n background: rgba(255,255,255,0.15);\n border: none;\n color: white;\n cursor: pointer;\n padding: 6px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s;\n}\n\n.vemly-close:hover {\n background: rgba(255,255,255,0.25);\n}\n\n.vemly-header-content {\n margin-top: 16px;\n}\n\n.vemly-header-content h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n letter-spacing: -0.01em;\n}\n\n.vemly-header-content p {\n margin: 4px 0 0;\n font-size: 14px;\n opacity: 0.85;\n}\n\n.vemly-status {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 12px;\n font-size: 13px;\n opacity: 0.9;\n}\n\n.vemly-status-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: #22c55e;\n}\n\n/* Messages Area */\n.vemly-messages {\n flex: 1;\n background: var(--vemly-surface);\n padding: 16px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.vemly-message-group {\n display: flex;\n flex-direction: column;\n gap: 4px;\n max-width: 85%;\n animation: vemly-fade-in 0.25s ease-out;\n}\n\n@keyframes vemly-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.vemly-message-group.assistant {\n align-self: flex-start;\n}\n\n.vemly-message-group.user {\n align-self: flex-end;\n}\n\n.vemly-sender {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 4px;\n}\n\n.vemly-sender-avatar {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n background: var(--vemly-primary);\n color: white;\n font-size: 11px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.vemly-sender-avatar-img {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n object-fit: cover;\n}\n\n.vemly-sender-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--vemly-text);\n}\n\n.vemly-message-content {\n padding: 12px 16px;\n border-radius: 16px;\n font-size: 14px;\n line-height: 1.5;\n}\n\n.vemly-message-group.assistant .vemly-message-content {\n background: white;\n color: var(--vemly-text);\n border: 1px solid var(--vemly-border);\n border-top-left-radius: 4px;\n}\n\n.vemly-message-group.user .vemly-message-content {\n background: var(--vemly-user-bg);\n color: white;\n border-top-right-radius: 4px;\n}\n\n.vemly-message-content p { margin: 0 0 8px; }\n.vemly-message-content p:last-child { margin: 0; }\n.vemly-message-content a { color: inherit; text-decoration: underline; }\n.vemly-message-content code {\n background: rgba(0,0,0,0.06);\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 13px;\n}\n.vemly-message-group.user .vemly-message-content code {\n background: rgba(255,255,255,0.15);\n}\n\n/* Home View */\n.vemly-home {\n flex: 1;\n background: var(--vemly-surface);\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.vemly-home-content {\n padding: 16px;\n}\n\n.vemly-start-btn {\n width: 100%;\n padding: 14px 16px;\n background: var(--vemly-text);\n color: white;\n border: none;\n border-radius: 12px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: all 0.15s;\n}\n\n.vemly-start-btn:hover {\n opacity: 0.9;\n transform: translateY(-1px);\n}\n\n.vemly-section-title {\n font-size: 12px;\n font-weight: 600;\n color: var(--vemly-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n margin: 20px 0 12px;\n}\n\n.vemly-session-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.vemly-session-item {\n padding: 12px 14px;\n background: white;\n border: 1px solid var(--vemly-border);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.vemly-session-item:hover {\n border-color: var(--vemly-text-muted);\n background: #fafafa;\n}\n\n.vemly-session-title {\n font-size: 14px;\n font-weight: 500;\n color: var(--vemly-text);\n margin-bottom: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.vemly-session-date {\n font-size: 12px;\n color: var(--vemly-text-muted);\n}\n\n.vemly-empty {\n text-align: center;\n padding: 24px;\n color: var(--vemly-text-muted);\n font-size: 14px;\n}\n\n/* Input */\n.vemly-input-container {\n padding: 12px 16px 16px;\n background: white;\n border-top: 1px solid var(--vemly-border);\n}\n\n.vemly-input-wrapper {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n background: var(--vemly-surface);\n border: 1px solid var(--vemly-border);\n border-radius: 12px;\n padding: 8px 8px 8px 14px;\n transition: all 0.15s;\n}\n\n.vemly-input-wrapper:focus-within {\n border-color: var(--vemly-primary);\n box-shadow: 0 0 0 3px rgba(80, 70, 229, 0.1);\n}\n\n.vemly-input {\n flex: 1;\n border: none;\n background: transparent;\n outline: none;\n font-size: 14px;\n color: var(--vemly-text);\n max-height: 100px;\n resize: none;\n font-family: inherit;\n padding: 4px 0;\n line-height: 1.4;\n}\n\n.vemly-input::placeholder {\n color: var(--vemly-text-muted);\n}\n\n.vemly-send {\n background: var(--vemly-primary);\n color: white;\n border: none;\n cursor: pointer;\n width: 32px;\n height: 32px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.15s;\n flex-shrink: 0;\n}\n\n.vemly-send:hover:not(:disabled) {\n background: var(--vemly-primary-hover);\n}\n\n.vemly-send:disabled {\n background: var(--vemly-border);\n color: var(--vemly-text-muted);\n cursor: default;\n}\n\n.vemly-branding {\n font-size: 11px;\n text-align: center;\n color: var(--vemly-text-muted);\n margin-top: 8px;\n}\n\n.vemly-branding a {\n color: var(--vemly-text-secondary);\n text-decoration: none;\n font-weight: 500;\n}\n\n/* Typing */\n.vemly-typing {\n display: flex;\n gap: 4px;\n padding: 14px 16px;\n background: white;\n border: 1px solid var(--vemly-border);\n border-radius: 16px;\n border-top-left-radius: 4px;\n width: fit-content;\n}\n\n.vemly-dot {\n width: 6px;\n height: 6px;\n background: var(--vemly-text-muted);\n border-radius: 50%;\n animation: vemly-bounce 1.4s infinite ease-in-out;\n}\n\n.vemly-dot:nth-child(1) { animation-delay: -0.32s; }\n.vemly-dot:nth-child(2) { animation-delay: -0.16s; }\n\n@keyframes vemly-bounce {\n 0%, 80%, 100% { transform: scale(0.6); }\n 40% { transform: scale(1); }\n}\n\n/* Mobile */\n@media (max-width: 480px) {\n .vemly-widget-container,\n .vemly-widget-container[data-position="right"],\n .vemly-widget-container[data-position="left"] {\n bottom: 0;\n right: 0;\n left: 0;\n align-items: flex-end; /* Always bottom sheet style or full screen */\n }\n \n .vemly-window {\n width: 100vw;\n height: 100vh;\n max-width: none;\n max-height: none;\n border-radius: 0;\n }\n \n .vemly-bubble {\n position: fixed;\n bottom: 16px;\n right: 16px;\n z-index: 2147483648; /* Ensure bubble is on top if needed */\n }\n}\n',this.shadowRoot.appendChild(n)}render(){if(!this.shadowRoot||!this.client)return;let n=document.createElement("div");this.shadowRoot.appendChild(n),e.render(e.h(r,{client:this.client}),n)}},o=l;typeof window<"u"&&(window.Vemly=l),module.exports=o;
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{render as e,h as n}from"preact";import{useState as t,useRef as a,useEffect as i}from"preact/hooks";import{ChevronLeft as r,X as s,MessageCircle as l,Send as o,Bot as d}from"lucide-preact";import{marked as m}from"marked";import{jsxs as c,jsx as y,Fragment as p}from"preact/jsx-runtime";function v({client:e}){let[n,v]=t(!1),[h,f]=t("home"),[u,g]=t([]),[x,b]=t([]),[w,k]=t(""),[N,C]=t(!1),[S,T]=t(!1),[z,I]=t(!1),[j,A]=t(null),[$,D]=t(null),O=a(null),[_,E]=t(null),B=a(null),M=a(null),P=a(0);i(()=>{B.current=_},[_]);let[W,Y]=t({}),[F,H]=t("#5046e5"),[J,R]=t(24),[L,U]=t("right"),[V,G]=t("light"),[K,q]=t("#ffffff"),[Q,X]=t("#ffffff"),[Z,ee]=t("message"),[ne,te]=t(!0),[ae,ie]=t(!0),[re,se]=t(!0),[le,oe]=t(!0),[de,me]=t(!1);i(()=>{e.getWidgetConfig().then(n=>{if(n){if("error"===n.status)return ie(!1),void me(!0);if(0===Object.keys(n).length)return ie(!1),void me(!0);void 0!==n.widgetEnabled&&ie(n.widgetEnabled),void 0!==n.aiMessagingEnabled&&se(n.aiMessagingEnabled);let t=n.config||{};if(Y(t),t.primaryColor&&H(t.primaryColor),t.defaultAgentName&&E(t.defaultAgentName),void 0!==t.borderRadius&&R(t.borderRadius),t.position&&U(t.position),t.theme&&G(t.theme),t.launcherIcon&&ee(t.launcherIcon),void 0!==t.showBranding&&te(t.showBranding),t.websiteUrl&&typeof window<"u")try{let n=new URL(t.websiteUrl).origin,a=window.location.origin,i=a.includes("localhost")||a.includes("127.0.0.1"),r=e.apiUrl?.includes("localhost")||e.apiUrl?.includes("127.0.0.1");oe(n===a||i||r)}catch{oe(!0)}else oe(!0)}me(!0)})},[e]),i(()=>{n&&("home"===h&&pe(),ce())},[n,h]),i(()=>{ce()},[x,N]);let ce=()=>{O.current?.scrollIntoView({behavior:"smooth"})},ye=()=>v(!n),pe=async()=>{let n=await e.getHistory();g(n)},ve=()=>{e.connectStream((e,n)=>{if("message-stream"===e){let e=n.text||n.content;e&&ue(e)}else if("token"===e)ue(n);else if("message-complete"===e)C(!1);else if("message"===e){if(!n.id)return;b(e=>{if(e.some(e=>e.id===n.id))return e;if("user"===n.role){let t=e.findIndex(e=>e.id.startsWith("user_")&&e.content===n.content);if(-1!==t){let a=[...e];return a[t]={id:n.id,role:n.role,content:n.content,createdAt:n.createdAt,agentName:void 0},a}}return C(!1),[...e,{id:n.id,role:n.role,content:n.content,createdAt:n.createdAt,agentName:n.agentName||("assistant"===n.role?_:void 0),agentAvatar:n.agentAvatar}]}),C(!1)}else if("human-takeover"===e){let e=n.isHumanTakeover;T(e),e?(C(!1),n.userName&&A(n.userName),n.agentAvatar&&D(n.agentAvatar),b(e=>{if(e.some(e=>"system-takeover"===e.id))return e;let t=n.userName||"a team member";return[...e,{id:"system-takeover",role:"system",content:`You're now connected with ${t}.`,createdAt:(new Date).toISOString()}]})):(A(null),D(null))}else"support-typing"===e?n.isTyping?(C(!0),n.userName&&A(n.userName),n.agentAvatar&&D(n.agentAvatar)):C(!1):"thinking-start"===e||"typing-start"===e?re&&C(!0):"conversation-closed"===e&&(I(!0),C(!1),b(e=>e.some(e=>"system-closed"===e.id)?e:[...e,{id:"system-closed",role:"system",content:"This conversation has been closed. Thank you for reaching out!",createdAt:(new Date).toISOString()}]))})},he=()=>{e.sessionId=null,E(null),b([]),I(!1),T(!1),A(null),D(null),f("chat")},fe=async()=>{if(!w.trim())return;let n="user_"+Date.now(),t={id:n,role:"user",content:w,createdAt:(new Date).toISOString()};b(e=>[...e,t]),k(""),S||C(!0);try{let a=await e.sendMessage(t.content);a.isHumanTakeover&&(T(!0),C(!1),E("Support Team"),b(e=>e.some(e=>"system-takeover"===e.id)?e:[...e,{id:"system-takeover",role:"system",content:"A team member will be with you shortly.",createdAt:(new Date).toISOString()}])),a.message?.message?.id&&b(e=>e.map(e=>e.id===n?{...e,id:a.message.message.id}:e)),a.agentName&&!a.isHumanTakeover&&E(a.agentName),ve()}catch(e){C(!1)}},ue=e=>{b(n=>{let t=n[n.length-1];return t&&"assistant"===t.role?[...n.slice(0,-1),{...t,content:t.content+e}]:[...n,{id:"bot_"+Date.now(),role:"assistant",content:e,createdAt:(new Date).toISOString(),agentName:B.current||void 0}]})},ge="dark"===V,xe="glass"===V,be={"--vemly-primary":F,"--vemly-primary-hover":F,"--vemly-radius":`${J}px`,"--vemly-header-text":K,"--vemly-user-text":Q,"--vemly-bg":ge?"#1f2937":xe?"rgba(255, 255, 255, 0.8)":"#ffffff","--vemly-surface":ge?"#111827":xe?"rgba(249, 250, 251, 0.5)":"#f9fafb","--vemly-text":ge?"#f9fafb":"#111827","--vemly-text-secondary":ge?"#9ca3af":"#6b7280","--vemly-text-muted":ge?"#6b7280":"#9ca3af","--vemly-border":ge?"#374151":"#e5e7eb","--vemly-user-bg":"#111827","--vemly-ai-bg":ge?"#374151":"#ffffff"},we=xe?{backdropFilter:"blur(12px)",WebkitBackdropFilter:"blur(12px)"}:{},ke=W.title||"Vemly",Ne=W.titleAlignment||"left";return de&&ae&&le&&ae?c("div",{className:"vemly-widget-container",style:be,"data-position":L,children:[c("div",{className:"vemly-window "+(n?"open":""),style:we,children:[c("div",{className:"vemly-header",style:{color:K},children:[c("div",{className:"vemly-header-top",children:[y("div",{className:"vemly-brand",children:"chat"===h&&y("button",{className:"vemly-back-btn",onClick:()=>{I(!1),f("home"),pe()},children:y(r,{size:20})})}),y("button",{className:"vemly-close",onClick:ye,style:{color:K},children:y(s,{size:20})})]}),c("div",{className:"vemly-header-content",style:{textAlign:Ne},children:[y("h3",{children:ke}),y("p",{style:{opacity:.9},children:"home"===h?W.greeting||"We're here to help":"Ask us anything"})]}),c("div",{className:"vemly-status",style:{justifyContent:"center"===Ne?"center":"flex-start"},children:[y("span",{className:"vemly-status-dot"}),y("span",{style:{opacity:.9},children:"We typically reply instantly"})]})]}),"home"===h?y("div",{className:"vemly-home",children:c("div",{className:"vemly-home-content",children:[c("button",{onClick:he,className:"vemly-start-btn",style:{backgroundColor:ge?"#374151":"#111827",color:"#ffffff"},children:[y(l,{size:18}),y("span",{children:"Start a conversation"})]}),u.length>0&&c(p,{children:[y("div",{className:"vemly-section-title",children:"Recent conversations"}),y("div",{className:"vemly-session-list",children:u.slice(0,5).map(n=>c("div",{onClick:()=>(async(n,t)=>{e.sessionId=n,E(t||null),f("chat"),b([]);try{let a=await fetch(`${e.apiUrl}/chat/session/${n}`,{headers:{"x-vemly-api-key":e.apiKey,"Content-Type":"application/json"}});if(a.ok){let e=await a.json(),n=!!e.session?.isHumanTakeover;n&&T(!0);let i=n?"Support Team":e.agent?.name||t;if(i&&E(i),e.session?.closedAt&&I(!0),e.messages){let n=e.messages.map(e=>({...e,agentName:e.agentName||("assistant"===e.role?i:void 0),agentAvatar:e.agentAvatar}));b(n)}}ve()}catch(e){}})(n.id,n.agentName),className:"vemly-session-item",style:{backgroundColor:ge?"#374151":"#ffffff",borderColor:ge?"#4b5563":"#e5e7eb"},children:[y("div",{className:"vemly-session-title",style:{color:ge?"#fff":"#111827"},children:n.title||"New Conversation"}),y("div",{className:"vemly-session-date",children:new Date(n.createdAt||Date.now()).toLocaleDateString()})]},n.id))})]}),0===u.length&&y("div",{className:"vemly-empty",children:"No previous conversations"})]})}):c("div",{className:"vemly-messages",style:{backgroundColor:ge?"#1f2937":"glass"===V?"transparent":"#f9fafb"},children:[x.map((e,n)=>y("div",{className:`vemly-message-group ${e.role}`,children:"system"===e.role?y("div",{className:"vemly-message-content",children:y("p",{children:e.content})}):c(p,{children:[("assistant"===e.role||"tool"===e.role)&&c("div",{className:"vemly-sender",children:[e.agentAvatar?y("img",{src:e.agentAvatar,alt:e.agentName||"Bot",className:"vemly-sender-avatar-img"}):y("div",{className:"vemly-sender-avatar",children:(e.agentName||_||"Bot").substring(0,2).toUpperCase()}),y("div",{className:"vemly-sender-name",style:{color:ge?"#e5e7eb":"#111827"},children:e.agentName||_||"Bot"})]}),y("div",{className:"vemly-message-content",children:y("div",{dangerouslySetInnerHTML:{t:m.parse(e.content||"")}})})]})},e.id||n)),N&&(()=>{let e=S&&j?j:_||"Vemly";return c("div",{className:"vemly-message-group assistant",children:[c("div",{className:"vemly-sender",children:[S&&$?y("img",{src:$,alt:e,className:"vemly-sender-avatar-img"}):y("div",{className:"vemly-sender-avatar",children:e.substring(0,2).toUpperCase()}),y("div",{className:"vemly-sender-name",children:e})]}),c("div",{className:"vemly-typing",style:{backgroundColor:ge?"#374151":"#ffffff",borderColor:ge?"#4b5563":"#e5e7eb"},children:[y("div",{className:"vemly-dot"}),y("div",{className:"vemly-dot"}),y("div",{className:"vemly-dot"})]})]})})(),y("div",{ref:O})]}),"chat"===h&&c("div",{className:"vemly-input-container",style:{backgroundColor:ge?"#1f2937":"#ffffff",borderColor:ge?"#374151":"#e5e7eb",opacity:z?.7:1},children:[c("div",z?{style:{padding:"12px 16px",textAlign:"center"},children:[y("p",{style:{fontSize:"13px",color:ge?"#9ca3af":"#6b7280",marginBottom:"12px"},children:"This conversation is closed."}),c("button",{onClick:he,style:{display:"inline-flex",alignItems:"center",gap:"8px",padding:"8px 16px",backgroundColor:F,color:"#ffffff",border:"none",borderRadius:"8px",fontSize:"13px",fontWeight:500,cursor:"pointer"},children:[y(l,{size:16}),"Start New Conversation"]})]}:{className:"vemly-input-wrapper",style:{backgroundColor:ge?"#111827":"#f9fafb",borderColor:ge?"#374151":"#e5e7eb"},children:[y("textarea",{className:"vemly-input",placeholder:"Send a message...",value:w,onInput:n=>{let t=n.target.value;if(k(t),e.sessionId){let n=Date.now();n-P.current>1500&&(e.sendTyping(!0),P.current=n),M.current&&clearTimeout(M.current),M.current=setTimeout(()=>{e.sendTyping(!1),M.current=null,P.current=0},3e3)}},onKeyDown:e=>{"Enter"===e.key&&!e.shiftKey&&(e.preventDefault(),fe())},rows:1,style:{color:ge?"#f3f4f6":"#111827"}}),y("button",{className:"vemly-send",onClick:fe,disabled:!w.trim()||N,children:y(o,{size:16})})]}),ne&&c("div",{className:"vemly-branding",children:["Powered by ",y("a",{href:"https://usevemly.com",target:"_blank",rel:"noopener",children:"Vemly"})]})]})]}),y("button",{className:"vemly-bubble",onClick:ye,children:y(n?s:"bot"===Z?d:l,{size:24})})]}):null}var h=class{apiUrl;tenantId;agentId;apiKey;deviceId;sessionId=null;sseSource=null;sseController=null;constructor(e){this.apiUrl=e.apiUrl||"https://api.usevemly.com",this.tenantId=e.tenantId,this.agentId=e.agentId,this.apiKey=e.apiKey,this.deviceId=this.getOrCreateDeviceId()}getOrCreateDeviceId(){if(typeof window>"u")return"server";let e=localStorage.getItem("vemly_device_id");return e||(e="dev_"+Math.random().toString(36).substring(2,15),localStorage.setItem("vemly_device_id",e)),e}async createSession(){let e={"Content-Type":"application/json"};this.apiKey&&(e["x-vemly-api-key"]=this.apiKey);let n=await fetch(`${this.apiUrl}/chat/session`,{method:"POST",headers:e,body:JSON.stringify({...this.tenantId?{tenantId:this.tenantId}:{},agentId:this.agentId,deviceId:this.deviceId})});if(!n.ok)throw new Error("Failed to create session");let t=await n.json();return this.sessionId=t.session?.id||t.id,{session:t.session||t,agentName:t.agent?.name}}async resumeSession(){let e={"Content-Type":"application/json"};this.apiKey&&(e["x-vemly-api-key"]=this.apiKey);let n=await fetch(`${this.apiUrl}/chat/session/resume`,{method:"POST",headers:e,body:JSON.stringify({tenantId:this.tenantId,deviceId:this.deviceId})});if(!n.ok)return null;let t=await n.json();return this.sessionId=t.session?.id||null,t.session}async getHistory(e=20){let n={"Content-Type":"application/json"};this.apiKey&&(n["x-vemly-api-key"]=this.apiKey);let t={deviceId:this.deviceId,limit:e.toString()};this.tenantId&&(t.tenantId=this.tenantId);let a=new URLSearchParams(t),i=await fetch(`${this.apiUrl}/chat/sessions/device?${a.toString()}`,{method:"GET",headers:n});return i.ok&&(await i.json()).sessions||[]}async getWidgetConfig(){try{let e=`${this.apiUrl}/chat/config`;this.tenantId&&(e+=`/${this.tenantId}`);let n={};return this.apiKey&&(n["x-vemly-api-key"]=this.apiKey),await(await fetch(e,{method:"GET",headers:n})).json()||{}}catch(e){return{}}}async sendMessage(e,n){let t,a;if(!this.sessionId){let e=await this.createSession();t=e.agentName,a=e.session.isHumanTakeover}let i={"Content-Type":"application/json"};this.apiKey&&(i["x-vemly-api-key"]=this.apiKey);let r=await fetch(`${this.apiUrl}/chat/message`,{method:"POST",headers:i,body:JSON.stringify({sessionId:this.sessionId,content:e,role:"user"})});if(!r.ok)throw new Error("Failed to send message");return{message:await r.json(),agentName:t,isHumanTakeover:a}}async sendTyping(e){if(!this.sessionId)return;let n={"Content-Type":"application/json"};this.apiKey&&(n["x-vemly-api-key"]=this.apiKey),await fetch(`${this.apiUrl}/chat/typing`,{method:"POST",headers:n,body:JSON.stringify({sessionId:this.sessionId,isTyping:e})})}connectStream(e){if(!this.sessionId)return;this.sseController&&this.sseController.abort(),this.sseController=new AbortController;let n=`${this.apiUrl}/chat/stream/${this.sessionId}`,t={"Content-Type":"application/json"};this.apiKey&&(t["x-vemly-api-key"]=this.apiKey),fetch(n,{method:"GET",headers:t,signal:this.sseController.signal}).then(async n=>{if(!n.ok||!n.body)throw new Error(`SSE Error: ${n.status}`);let t=n.body.getReader(),a=new TextDecoder,i="";for(;;){let{value:n,done:r}=await t.read();if(r)break;i+=a.decode(n,{stream:!0});let s=i.split("\n\n");i=s.pop()||"";for(let n of s){if(!n.trim())continue;let t=n.split("\n"),a="message",i=null;for(let e of t)if(e.startsWith("event: "))a=e.substring(7).trim();else if(e.startsWith("data: "))try{i=JSON.parse(e.substring(6).trim())}catch{i=e.substring(6).trim()}null!==i&&e(a,i)}}}).catch(e=>{e.name})}disconnectStream(){this.sseSource?.close(),this.sseSource=null,this.sseController?.abort(),this.sseController=null}getSessionId(){return this.sessionId}},f=new class{client=null;container=null;shadowRoot=null;init(e){if(!this.client&&e.apiKey)try{this.client=new h(e),this.createContainer(),this.render()}catch(e){}}createContainer(){let e=document.getElementById("vemly-sdk-root");e&&e.remove(),this.container=document.createElement("div"),this.container.id="vemly-sdk-root",document.body.appendChild(this.container),this.shadowRoot=this.container.attachShadow({mode:"open"});let n=document.createElement("style");n.textContent='\n@import url(\'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\');\n\n:host {\n --vemly-primary: #5046e5;\n --vemly-primary-hover: #4338ca;\n --vemly-bg: #ffffff;\n --vemly-surface: #f9fafb;\n --vemly-text: #111827;\n --vemly-text-secondary: #6b7280;\n --vemly-text-muted: #9ca3af;\n --vemly-border: #e5e7eb;\n --vemly-user-bg: #111827;\n --vemly-ai-bg: #ffffff;\n --vemly-radius: 16px;\n --vemly-font: \'Inter\', -apple-system, BlinkMacSystemFont, \'Segoe UI\', sans-serif;\n}\n\n.vemly-widget-container {\n position: fixed;\n bottom: 20px;\n z-index: 2147483647;\n font-family: var(--vemly-font);\n display: flex;\n flex-direction: column;\n gap: 12px;\n pointer-events: none;\n -webkit-font-smoothing: antialiased;\n}\n\n.vemly-widget-container[data-position="right"] {\n right: 20px;\n left: auto;\n align-items: flex-end;\n}\n\n.vemly-widget-container[data-position="left"] {\n left: 20px;\n right: auto;\n align-items: flex-start;\n}\n\n.vemly-widget-container * {\n box-sizing: border-box;\n pointer-events: auto;\n}\n\n/* Launcher */\n.vemly-bubble {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: var(--vemly-primary);\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.16);\n transition: all 0.2s ease;\n border: none;\n outline: none;\n}\n\n.vemly-bubble:hover {\n background: var(--vemly-primary-hover);\n transform: scale(1.05);\n}\n\n.vemly-bubble:active {\n transform: scale(0.95);\n}\n\n/* Window */\n.vemly-window {\n width: 380px;\n height: 600px;\n max-height: calc(100vh - 100px);\n max-width: calc(100vw - 40px);\n background: var(--vemly-bg);\n border-radius: var(--vemly-radius);\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.05);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n transform-origin: bottom right;\n opacity: 0;\n transform: scale(0.95) translateY(10px);\n transition: all 0.2s ease;\n visibility: hidden;\n}\n\n.vemly-window.open {\n opacity: 1;\n transform: scale(1) translateY(0);\n visibility: visible;\n}\n\n/* Header */\n.vemly-header {\n background: var(--vemly-primary);\n color: white;\n padding: 20px;\n flex-shrink: 0;\n}\n\n.vemly-header-top {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.vemly-brand {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.vemly-back-btn {\n background: rgba(255,255,255,0.15);\n border: none;\n color: white;\n cursor: pointer;\n padding: 6px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s;\n}\n\n.vemly-back-btn:hover {\n background: rgba(255,255,255,0.25);\n}\n\n.vemly-close {\n background: rgba(255,255,255,0.15);\n border: none;\n color: white;\n cursor: pointer;\n padding: 6px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s;\n}\n\n.vemly-close:hover {\n background: rgba(255,255,255,0.25);\n}\n\n.vemly-header-content {\n margin-top: 16px;\n}\n\n.vemly-header-content h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n letter-spacing: -0.01em;\n}\n\n.vemly-header-content p {\n margin: 4px 0 0;\n font-size: 14px;\n opacity: 0.85;\n}\n\n.vemly-status {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 12px;\n font-size: 13px;\n opacity: 0.9;\n}\n\n.vemly-status-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: #22c55e;\n}\n\n/* Messages Area */\n.vemly-messages {\n flex: 1;\n background: var(--vemly-surface);\n padding: 16px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.vemly-message-group {\n display: flex;\n flex-direction: column;\n gap: 4px;\n max-width: 85%;\n animation: vemly-fade-in 0.25s ease-out;\n}\n\n@keyframes vemly-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.vemly-message-group.assistant {\n align-self: flex-start;\n}\n\n.vemly-message-group.user {\n align-self: flex-end;\n}\n\n.vemly-sender {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 4px;\n}\n\n.vemly-sender-avatar {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n background: var(--vemly-primary);\n color: white;\n font-size: 11px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.vemly-sender-avatar-img {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n object-fit: cover;\n}\n\n.vemly-sender-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--vemly-text);\n}\n\n.vemly-message-content {\n padding: 12px 16px;\n border-radius: 16px;\n font-size: 14px;\n line-height: 1.5;\n}\n\n.vemly-message-group.assistant .vemly-message-content {\n background: white;\n color: var(--vemly-text);\n border: 1px solid var(--vemly-border);\n border-top-left-radius: 4px;\n}\n\n.vemly-message-group.user .vemly-message-content {\n background: var(--vemly-user-bg);\n color: white;\n border-top-right-radius: 4px;\n}\n\n.vemly-message-content p { margin: 0 0 8px; }\n.vemly-message-content p:last-child { margin: 0; }\n.vemly-message-content a { color: inherit; text-decoration: underline; }\n.vemly-message-content code {\n background: rgba(0,0,0,0.06);\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 13px;\n}\n.vemly-message-group.user .vemly-message-content code {\n background: rgba(255,255,255,0.15);\n}\n\n/* Home View */\n.vemly-home {\n flex: 1;\n background: var(--vemly-surface);\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.vemly-home-content {\n padding: 16px;\n}\n\n.vemly-start-btn {\n width: 100%;\n padding: 14px 16px;\n background: var(--vemly-text);\n color: white;\n border: none;\n border-radius: 12px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: all 0.15s;\n}\n\n.vemly-start-btn:hover {\n opacity: 0.9;\n transform: translateY(-1px);\n}\n\n.vemly-section-title {\n font-size: 12px;\n font-weight: 600;\n color: var(--vemly-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n margin: 20px 0 12px;\n}\n\n.vemly-session-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.vemly-session-item {\n padding: 12px 14px;\n background: white;\n border: 1px solid var(--vemly-border);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.vemly-session-item:hover {\n border-color: var(--vemly-text-muted);\n background: #fafafa;\n}\n\n.vemly-session-title {\n font-size: 14px;\n font-weight: 500;\n color: var(--vemly-text);\n margin-bottom: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.vemly-session-date {\n font-size: 12px;\n color: var(--vemly-text-muted);\n}\n\n.vemly-empty {\n text-align: center;\n padding: 24px;\n color: var(--vemly-text-muted);\n font-size: 14px;\n}\n\n/* Input */\n.vemly-input-container {\n padding: 12px 16px 16px;\n background: white;\n border-top: 1px solid var(--vemly-border);\n}\n\n.vemly-input-wrapper {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n background: var(--vemly-surface);\n border: 1px solid var(--vemly-border);\n border-radius: 12px;\n padding: 8px 8px 8px 14px;\n transition: all 0.15s;\n}\n\n.vemly-input-wrapper:focus-within {\n border-color: var(--vemly-primary);\n box-shadow: 0 0 0 3px rgba(80, 70, 229, 0.1);\n}\n\n.vemly-input {\n flex: 1;\n border: none;\n background: transparent;\n outline: none;\n font-size: 14px;\n color: var(--vemly-text);\n max-height: 100px;\n resize: none;\n font-family: inherit;\n padding: 4px 0;\n line-height: 1.4;\n}\n\n.vemly-input::placeholder {\n color: var(--vemly-text-muted);\n}\n\n.vemly-send {\n background: var(--vemly-primary);\n color: white;\n border: none;\n cursor: pointer;\n width: 32px;\n height: 32px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.15s;\n flex-shrink: 0;\n}\n\n.vemly-send:hover:not(:disabled) {\n background: var(--vemly-primary-hover);\n}\n\n.vemly-send:disabled {\n background: var(--vemly-border);\n color: var(--vemly-text-muted);\n cursor: default;\n}\n\n.vemly-branding {\n font-size: 11px;\n text-align: center;\n color: var(--vemly-text-muted);\n margin-top: 8px;\n}\n\n.vemly-branding a {\n color: var(--vemly-text-secondary);\n text-decoration: none;\n font-weight: 500;\n}\n\n/* Typing */\n.vemly-typing {\n display: flex;\n gap: 4px;\n padding: 14px 16px;\n background: white;\n border: 1px solid var(--vemly-border);\n border-radius: 16px;\n border-top-left-radius: 4px;\n width: fit-content;\n}\n\n.vemly-dot {\n width: 6px;\n height: 6px;\n background: var(--vemly-text-muted);\n border-radius: 50%;\n animation: vemly-bounce 1.4s infinite ease-in-out;\n}\n\n.vemly-dot:nth-child(1) { animation-delay: -0.32s; }\n.vemly-dot:nth-child(2) { animation-delay: -0.16s; }\n\n@keyframes vemly-bounce {\n 0%, 80%, 100% { transform: scale(0.6); }\n 40% { transform: scale(1); }\n}\n\n/* Mobile */\n@media (max-width: 480px) {\n .vemly-widget-container,\n .vemly-widget-container[data-position="right"],\n .vemly-widget-container[data-position="left"] {\n bottom: 0;\n right: 0;\n left: 0;\n align-items: flex-end; /* Always bottom sheet style or full screen */\n }\n \n .vemly-window {\n width: 100vw;\n height: 100vh;\n max-width: none;\n max-height: none;\n border-radius: 0;\n }\n \n .vemly-bubble {\n position: fixed;\n bottom: 16px;\n right: 16px;\n z-index: 2147483648; /* Ensure bubble is on top if needed */\n }\n}\n',this.shadowRoot.appendChild(n)}render(){if(!this.shadowRoot||!this.client)return;let t=document.createElement("div");this.shadowRoot.appendChild(t),e(n(v,{client:this.client}),t)}},u=f;typeof window<"u"&&(window.Vemly=f);export{u as default};
|
|
1
|
+
import{render as e,h as n}from"preact";import{useState as t,useRef as a,useEffect as i}from"preact/hooks";import{ChevronLeft as r,X as s,MessageCircle as l,Send as o,Bot as d}from"lucide-preact";import{marked as m}from"marked";import{jsxs as c,jsx as y,Fragment as p}from"preact/jsx-runtime";function v({client:e}){let[n,v]=t(!1),[h,f]=t("home"),[u,g]=t([]),[x,b]=t([]),[w,k]=t(""),[N,C]=t(!1),[S,T]=t(!1),[z,I]=t(!1),[j,A]=t(null),[$,D]=t(null),O=a(null),[_,E]=t(null),B=a(null),M=a(null),P=a(0);i(()=>{B.current=_},[_]);let[W,Y]=t({}),[F,H]=t("#5046e5"),[J,R]=t(24),[L,U]=t("right"),[V,G]=t("light"),[K,q]=t("#ffffff"),[Q,X]=t("#ffffff"),[Z,ee]=t("message"),[ne,te]=t(!0),[ae,ie]=t(!0),[re,se]=t(!0),[le,oe]=t(!0),[de,me]=t(!1);i(()=>{e.getWidgetConfig().then(n=>{if(n){if("error"===n.status)return ie(!1),void me(!0);if(0===Object.keys(n).length)return ie(!1),void me(!0);void 0!==n.widgetEnabled&&ie(n.widgetEnabled),void 0!==n.aiMessagingEnabled&&se(n.aiMessagingEnabled);let t=n.config||{};if(Y(t),t.primaryColor&&H(t.primaryColor),t.defaultAgentName&&E(t.defaultAgentName),void 0!==t.borderRadius&&R(t.borderRadius),t.position&&U(t.position),t.theme&&G(t.theme),t.launcherIcon&&ee(t.launcherIcon),void 0!==t.showBranding&&te(t.showBranding),t.websiteUrl&&typeof window<"u")try{let n=new URL(t.websiteUrl).origin,a=window.location.origin,i=a.includes("localhost")||a.includes("127.0.0.1"),r=e.apiUrl?.includes("localhost")||e.apiUrl?.includes("127.0.0.1");oe(n===a||i||r)}catch{oe(!0)}else oe(!0)}me(!0)})},[e]),i(()=>{n&&("home"===h&&pe(),ce())},[n,h]),i(()=>{ce()},[x,N]);let ce=()=>{O.current?.scrollIntoView({behavior:"smooth"})},ye=()=>v(!n),pe=async()=>{let n=await e.getHistory();g(n)},ve=()=>{e.connectStream((e,n)=>{if("message-stream"===e){let e=n.text||n.content;e&&"string"==typeof e&&"undefined"!==e&&ue(e)}else if("token"===e)n&&"string"==typeof n&&"undefined"!==n&&ue(n);else if("message-complete"===e)C(!1);else if("message"===e){if(!n.id)return;b(e=>{if(e.some(e=>e.id===n.id))return e;if("user"===n.role){let t=e.findIndex(e=>e.id.startsWith("user_")&&e.content===n.content);if(-1!==t){let a=[...e];return a[t]={id:n.id,role:n.role,content:n.content,createdAt:n.createdAt,agentName:void 0},a}}return C(!1),[...e,{id:n.id,role:n.role,content:n.content,createdAt:n.createdAt,agentName:n.agentName||("assistant"===n.role?_:void 0),agentAvatar:n.agentAvatar}]}),C(!1)}else if("human-takeover"===e){let e=n.isHumanTakeover;T(e),e?(C(!1),n.userName&&A(n.userName),n.agentAvatar&&D(n.agentAvatar),b(e=>{if(e.some(e=>"system-takeover"===e.id))return e;let t=n.userName||"a team member";return[...e,{id:"system-takeover",role:"system",content:`You're now connected with ${t}.`,createdAt:(new Date).toISOString()}]})):(A(null),D(null))}else"support-typing"===e?n.isTyping?(C(!0),n.userName&&A(n.userName),n.agentAvatar&&D(n.agentAvatar)):C(!1):"thinking-start"===e||"typing-start"===e?re&&C(!0):"conversation-closed"===e&&(I(!0),C(!1),b(e=>e.some(e=>"system-closed"===e.id)?e:[...e,{id:"system-closed",role:"system",content:"This conversation has been closed. Thank you for reaching out!",createdAt:(new Date).toISOString()}]))})},he=()=>{e.sessionId=null,E(null),b([]),I(!1),T(!1),A(null),D(null),f("chat")},fe=async()=>{if(!w.trim())return;let n="user_"+Date.now(),t={id:n,role:"user",content:w,createdAt:(new Date).toISOString()};b(e=>[...e,t]),k(""),S||C(!0);try{let a=await e.sendMessage(t.content);a.isHumanTakeover&&(T(!0),C(!1),E("Support Team"),b(e=>e.some(e=>"system-takeover"===e.id)?e:[...e,{id:"system-takeover",role:"system",content:"A team member will be with you shortly.",createdAt:(new Date).toISOString()}])),a.message?.message?.id&&b(e=>e.map(e=>e.id===n?{...e,id:a.message.message.id}:e)),a.agentName&&!a.isHumanTakeover&&E(a.agentName),ve()}catch(e){C(!1)}},ue=e=>{b(n=>{let t=n[n.length-1];return t&&"assistant"===t.role?[...n.slice(0,-1),{...t,content:t.content+e}]:[...n,{id:"bot_"+Date.now(),role:"assistant",content:e,createdAt:(new Date).toISOString(),agentName:B.current||void 0}]})},ge="dark"===V,xe="glass"===V,be={"--vemly-primary":F,"--vemly-primary-hover":F,"--vemly-radius":`${J}px`,"--vemly-header-text":K,"--vemly-user-text":Q,"--vemly-bg":ge?"#1f2937":xe?"rgba(255, 255, 255, 0.8)":"#ffffff","--vemly-surface":ge?"#111827":xe?"rgba(249, 250, 251, 0.5)":"#f9fafb","--vemly-text":ge?"#f9fafb":"#111827","--vemly-text-secondary":ge?"#9ca3af":"#6b7280","--vemly-text-muted":ge?"#6b7280":"#9ca3af","--vemly-border":ge?"#374151":"#e5e7eb","--vemly-user-bg":"#111827","--vemly-ai-bg":ge?"#374151":"#ffffff"},we=xe?{backdropFilter:"blur(12px)",WebkitBackdropFilter:"blur(12px)"}:{},ke=W.title||"Vemly",Ne=W.titleAlignment||"left";return de&&ae&&le&&ae?c("div",{className:"vemly-widget-container",style:be,"data-position":L,children:[c("div",{className:"vemly-window "+(n?"open":""),style:we,children:[c("div",{className:"vemly-header",style:{color:K},children:[c("div",{className:"vemly-header-top",children:[y("div",{className:"vemly-brand",children:"chat"===h&&y("button",{className:"vemly-back-btn",onClick:()=>{I(!1),f("home"),pe()},children:y(r,{size:20})})}),y("button",{className:"vemly-close",onClick:ye,style:{color:K},children:y(s,{size:20})})]}),c("div",{className:"vemly-header-content",style:{textAlign:Ne},children:[y("h3",{children:ke}),y("p",{style:{opacity:.9},children:"home"===h?W.greeting||"We're here to help":"Ask us anything"})]}),c("div",{className:"vemly-status",style:{justifyContent:"center"===Ne?"center":"flex-start"},children:[y("span",{className:"vemly-status-dot"}),y("span",{style:{opacity:.9},children:"We typically reply instantly"})]})]}),"home"===h?y("div",{className:"vemly-home",children:c("div",{className:"vemly-home-content",children:[c("button",{onClick:he,className:"vemly-start-btn",style:{backgroundColor:ge?"#374151":"#111827",color:"#ffffff"},children:[y(l,{size:18}),y("span",{children:"Start a conversation"})]}),u.length>0&&c(p,{children:[y("div",{className:"vemly-section-title",children:"Recent conversations"}),y("div",{className:"vemly-session-list",children:u.slice(0,5).map(n=>c("div",{onClick:()=>(async(n,t)=>{e.sessionId=n,E(t||null),f("chat"),b([]);try{let a=await fetch(`${e.apiUrl}/chat/session/${n}`,{headers:{"x-vemly-api-key":e.apiKey,"Content-Type":"application/json"}});if(a.ok){let e=await a.json(),n=!!e.session?.isHumanTakeover;n&&T(!0);let i=n?"Support Team":e.agent?.name||t;if(i&&E(i),e.session?.closedAt&&I(!0),e.messages){let n=e.messages.map(e=>({...e,agentName:e.agentName||("assistant"===e.role?i:void 0),agentAvatar:e.agentAvatar}));b(n)}}ve()}catch(e){}})(n.id,n.agentName),className:"vemly-session-item",style:{backgroundColor:ge?"#374151":"#ffffff",borderColor:ge?"#4b5563":"#e5e7eb"},children:[y("div",{className:"vemly-session-title",style:{color:ge?"#fff":"#111827"},children:n.title||"New Conversation"}),y("div",{className:"vemly-session-date",children:new Date(n.createdAt||Date.now()).toLocaleDateString()})]},n.id))})]}),0===u.length&&y("div",{className:"vemly-empty",children:"No previous conversations"})]})}):c("div",{className:"vemly-messages",style:{backgroundColor:ge?"#1f2937":"glass"===V?"transparent":"#f9fafb"},children:[x.map((e,n)=>y("div",{className:`vemly-message-group ${e.role}`,children:"system"===e.role?y("div",{className:"vemly-message-content",children:y("p",{children:e.content})}):c(p,{children:[("assistant"===e.role||"tool"===e.role)&&c("div",{className:"vemly-sender",children:[e.agentAvatar?y("img",{src:e.agentAvatar,alt:e.agentName||"Bot",className:"vemly-sender-avatar-img"}):y("div",{className:"vemly-sender-avatar",children:(e.agentName||_||"Bot").substring(0,2).toUpperCase()}),y("div",{className:"vemly-sender-name",style:{color:ge?"#e5e7eb":"#111827"},children:e.agentName||_||"Bot"})]}),y("div",{className:"vemly-message-content",children:y("div",{dangerouslySetInnerHTML:{t:m.parse(e.content||"")}})})]})},e.id||n)),N&&(()=>{let e=S&&j?j:_||"Vemly";return c("div",{className:"vemly-message-group assistant",children:[c("div",{className:"vemly-sender",children:[S&&$?y("img",{src:$,alt:e,className:"vemly-sender-avatar-img"}):y("div",{className:"vemly-sender-avatar",children:e.substring(0,2).toUpperCase()}),y("div",{className:"vemly-sender-name",children:e})]}),c("div",{className:"vemly-typing",style:{backgroundColor:ge?"#374151":"#ffffff",borderColor:ge?"#4b5563":"#e5e7eb"},children:[y("div",{className:"vemly-dot"}),y("div",{className:"vemly-dot"}),y("div",{className:"vemly-dot"})]})]})})(),y("div",{ref:O})]}),"chat"===h&&c("div",{className:"vemly-input-container",style:{backgroundColor:ge?"#1f2937":"#ffffff",borderColor:ge?"#374151":"#e5e7eb",opacity:z?.7:1},children:[c("div",z?{style:{padding:"12px 16px",textAlign:"center"},children:[y("p",{style:{fontSize:"13px",color:ge?"#9ca3af":"#6b7280",marginBottom:"12px"},children:"This conversation is closed."}),c("button",{onClick:he,style:{display:"inline-flex",alignItems:"center",gap:"8px",padding:"8px 16px",backgroundColor:F,color:"#ffffff",border:"none",borderRadius:"8px",fontSize:"13px",fontWeight:500,cursor:"pointer"},children:[y(l,{size:16}),"Start New Conversation"]})]}:{className:"vemly-input-wrapper",style:{backgroundColor:ge?"#111827":"#f9fafb",borderColor:ge?"#374151":"#e5e7eb"},children:[y("textarea",{className:"vemly-input",placeholder:"Send a message...",value:w,onInput:n=>{let t=n.target.value;if(k(t),e.sessionId){let n=Date.now();n-P.current>1500&&(e.sendTyping(!0),P.current=n),M.current&&clearTimeout(M.current),M.current=setTimeout(()=>{e.sendTyping(!1),M.current=null,P.current=0},3e3)}},onKeyDown:e=>{"Enter"===e.key&&!e.shiftKey&&(e.preventDefault(),fe())},rows:1,style:{color:ge?"#f3f4f6":"#111827"}}),y("button",{className:"vemly-send",onClick:fe,disabled:!w.trim()||N,children:y(o,{size:16})})]}),ne&&c("div",{className:"vemly-branding",children:["Powered by ",y("a",{href:"https://usevemly.com",target:"_blank",rel:"noopener",children:"Vemly"})]})]})]}),y("button",{className:"vemly-bubble",onClick:ye,children:y(n?s:"bot"===Z?d:l,{size:24})})]}):null}var h=class{apiUrl;tenantId;agentId;apiKey;deviceId;sessionId=null;sseSource=null;sseController=null;constructor(e){this.apiUrl=e.apiUrl||"https://api.usevemly.com",this.tenantId=e.tenantId,this.agentId=e.agentId,this.apiKey=e.apiKey,this.deviceId=this.getOrCreateDeviceId()}getOrCreateDeviceId(){if(typeof window>"u")return"server";let e=localStorage.getItem("vemly_device_id");return e||(e="dev_"+Math.random().toString(36).substring(2,15),localStorage.setItem("vemly_device_id",e)),e}async createSession(){let e={"Content-Type":"application/json"};this.apiKey&&(e["x-vemly-api-key"]=this.apiKey);let n=await fetch(`${this.apiUrl}/chat/session`,{method:"POST",headers:e,body:JSON.stringify({...this.tenantId?{tenantId:this.tenantId}:{},agentId:this.agentId,deviceId:this.deviceId})});if(!n.ok)throw new Error("Failed to create session");let t=await n.json();return this.sessionId=t.session?.id||t.id,{session:t.session||t,agentName:t.agent?.name}}async resumeSession(){let e={"Content-Type":"application/json"};this.apiKey&&(e["x-vemly-api-key"]=this.apiKey);let n=await fetch(`${this.apiUrl}/chat/session/resume`,{method:"POST",headers:e,body:JSON.stringify({tenantId:this.tenantId,deviceId:this.deviceId})});if(!n.ok)return null;let t=await n.json();return this.sessionId=t.session?.id||null,t.session}async getHistory(e=20){let n={"Content-Type":"application/json"};this.apiKey&&(n["x-vemly-api-key"]=this.apiKey);let t={deviceId:this.deviceId,limit:e.toString()};this.tenantId&&(t.tenantId=this.tenantId);let a=new URLSearchParams(t),i=await fetch(`${this.apiUrl}/chat/sessions/device?${a.toString()}`,{method:"GET",headers:n});return i.ok&&(await i.json()).sessions||[]}async getWidgetConfig(){try{let e=`${this.apiUrl}/chat/config`;this.tenantId&&(e+=`/${this.tenantId}`);let n={};return this.apiKey&&(n["x-vemly-api-key"]=this.apiKey),await(await fetch(e,{method:"GET",headers:n})).json()||{}}catch(e){return{}}}async sendMessage(e,n){let t,a;if(!this.sessionId){let e=await this.createSession();t=e.agentName,a=e.session.isHumanTakeover}let i={"Content-Type":"application/json"};this.apiKey&&(i["x-vemly-api-key"]=this.apiKey);let r=await fetch(`${this.apiUrl}/chat/message`,{method:"POST",headers:i,body:JSON.stringify({sessionId:this.sessionId,content:e,role:"user"})});if(!r.ok)throw new Error("Failed to send message");return{message:await r.json(),agentName:t,isHumanTakeover:a}}async sendTyping(e){if(!this.sessionId)return;let n={"Content-Type":"application/json"};this.apiKey&&(n["x-vemly-api-key"]=this.apiKey),await fetch(`${this.apiUrl}/chat/typing`,{method:"POST",headers:n,body:JSON.stringify({sessionId:this.sessionId,isTyping:e})})}connectStream(e){if(!this.sessionId)return;this.sseController&&this.sseController.abort(),this.sseController=new AbortController;let n=`${this.apiUrl}/chat/stream/${this.sessionId}`,t={"Content-Type":"application/json"};this.apiKey&&(t["x-vemly-api-key"]=this.apiKey),fetch(n,{method:"GET",headers:t,signal:this.sseController.signal}).then(async n=>{if(!n.ok||!n.body)throw new Error(`SSE Error: ${n.status}`);let t=n.body.getReader(),a=new TextDecoder,i="";for(;;){let{value:n,done:r}=await t.read();if(r)break;i+=a.decode(n,{stream:!0});let s=i.split("\n\n");i=s.pop()||"";for(let n of s){if(!n.trim())continue;let t=n.split("\n"),a="message",i=null;for(let e of t)if(e.startsWith("event: "))a=e.substring(7).trim();else if(e.startsWith("data: "))try{i=JSON.parse(e.substring(6).trim())}catch{i=e.substring(6).trim()}null!==i&&e(a,i)}}}).catch(e=>{e.name})}disconnectStream(){this.sseSource?.close(),this.sseSource=null,this.sseController?.abort(),this.sseController=null}getSessionId(){return this.sessionId}},f=new class{client=null;container=null;shadowRoot=null;init(e){if(!this.client&&e.apiKey)try{this.client=new h(e),this.createContainer(),this.render()}catch(e){}}createContainer(){let e=document.getElementById("vemly-sdk-root");e&&e.remove(),this.container=document.createElement("div"),this.container.id="vemly-sdk-root",document.body.appendChild(this.container),this.shadowRoot=this.container.attachShadow({mode:"open"});let n=document.createElement("style");n.textContent='\n@import url(\'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\');\n\n:host {\n --vemly-primary: #5046e5;\n --vemly-primary-hover: #4338ca;\n --vemly-bg: #ffffff;\n --vemly-surface: #f9fafb;\n --vemly-text: #111827;\n --vemly-text-secondary: #6b7280;\n --vemly-text-muted: #9ca3af;\n --vemly-border: #e5e7eb;\n --vemly-user-bg: #111827;\n --vemly-ai-bg: #ffffff;\n --vemly-radius: 16px;\n --vemly-font: \'Inter\', -apple-system, BlinkMacSystemFont, \'Segoe UI\', sans-serif;\n}\n\n.vemly-widget-container {\n position: fixed;\n bottom: 20px;\n z-index: 2147483647;\n font-family: var(--vemly-font);\n display: flex;\n flex-direction: column;\n gap: 12px;\n pointer-events: none;\n -webkit-font-smoothing: antialiased;\n}\n\n.vemly-widget-container[data-position="right"] {\n right: 20px;\n left: auto;\n align-items: flex-end;\n}\n\n.vemly-widget-container[data-position="left"] {\n left: 20px;\n right: auto;\n align-items: flex-start;\n}\n\n.vemly-widget-container * {\n box-sizing: border-box;\n pointer-events: auto;\n}\n\n/* Launcher */\n.vemly-bubble {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: var(--vemly-primary);\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.16);\n transition: all 0.2s ease;\n border: none;\n outline: none;\n}\n\n.vemly-bubble:hover {\n background: var(--vemly-primary-hover);\n transform: scale(1.05);\n}\n\n.vemly-bubble:active {\n transform: scale(0.95);\n}\n\n/* Window */\n.vemly-window {\n width: 380px;\n height: 600px;\n max-height: calc(100vh - 100px);\n max-width: calc(100vw - 40px);\n background: var(--vemly-bg);\n border-radius: var(--vemly-radius);\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.05);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n transform-origin: bottom right;\n opacity: 0;\n transform: scale(0.95) translateY(10px);\n transition: all 0.2s ease;\n visibility: hidden;\n}\n\n.vemly-window.open {\n opacity: 1;\n transform: scale(1) translateY(0);\n visibility: visible;\n}\n\n/* Header */\n.vemly-header {\n background: var(--vemly-primary);\n color: white;\n padding: 20px;\n flex-shrink: 0;\n}\n\n.vemly-header-top {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.vemly-brand {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.vemly-back-btn {\n background: rgba(255,255,255,0.15);\n border: none;\n color: white;\n cursor: pointer;\n padding: 6px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s;\n}\n\n.vemly-back-btn:hover {\n background: rgba(255,255,255,0.25);\n}\n\n.vemly-close {\n background: rgba(255,255,255,0.15);\n border: none;\n color: white;\n cursor: pointer;\n padding: 6px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s;\n}\n\n.vemly-close:hover {\n background: rgba(255,255,255,0.25);\n}\n\n.vemly-header-content {\n margin-top: 16px;\n}\n\n.vemly-header-content h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n letter-spacing: -0.01em;\n}\n\n.vemly-header-content p {\n margin: 4px 0 0;\n font-size: 14px;\n opacity: 0.85;\n}\n\n.vemly-status {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 12px;\n font-size: 13px;\n opacity: 0.9;\n}\n\n.vemly-status-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: #22c55e;\n}\n\n/* Messages Area */\n.vemly-messages {\n flex: 1;\n background: var(--vemly-surface);\n padding: 16px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.vemly-message-group {\n display: flex;\n flex-direction: column;\n gap: 4px;\n max-width: 85%;\n animation: vemly-fade-in 0.25s ease-out;\n}\n\n@keyframes vemly-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.vemly-message-group.assistant {\n align-self: flex-start;\n}\n\n.vemly-message-group.user {\n align-self: flex-end;\n}\n\n.vemly-sender {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 4px;\n}\n\n.vemly-sender-avatar {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n background: var(--vemly-primary);\n color: white;\n font-size: 11px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.vemly-sender-avatar-img {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n object-fit: cover;\n}\n\n.vemly-sender-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--vemly-text);\n}\n\n.vemly-message-content {\n padding: 12px 16px;\n border-radius: 16px;\n font-size: 14px;\n line-height: 1.5;\n}\n\n.vemly-message-group.assistant .vemly-message-content {\n background: white;\n color: var(--vemly-text);\n border: 1px solid var(--vemly-border);\n border-top-left-radius: 4px;\n}\n\n.vemly-message-group.user .vemly-message-content {\n background: var(--vemly-user-bg);\n color: white;\n border-top-right-radius: 4px;\n}\n\n.vemly-message-content p { margin: 0 0 8px; }\n.vemly-message-content p:last-child { margin: 0; }\n.vemly-message-content a { color: inherit; text-decoration: underline; }\n.vemly-message-content code {\n background: rgba(0,0,0,0.06);\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 13px;\n}\n.vemly-message-group.user .vemly-message-content code {\n background: rgba(255,255,255,0.15);\n}\n\n/* Home View */\n.vemly-home {\n flex: 1;\n background: var(--vemly-surface);\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.vemly-home-content {\n padding: 16px;\n}\n\n.vemly-start-btn {\n width: 100%;\n padding: 14px 16px;\n background: var(--vemly-text);\n color: white;\n border: none;\n border-radius: 12px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: all 0.15s;\n}\n\n.vemly-start-btn:hover {\n opacity: 0.9;\n transform: translateY(-1px);\n}\n\n.vemly-section-title {\n font-size: 12px;\n font-weight: 600;\n color: var(--vemly-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n margin: 20px 0 12px;\n}\n\n.vemly-session-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.vemly-session-item {\n padding: 12px 14px;\n background: white;\n border: 1px solid var(--vemly-border);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.vemly-session-item:hover {\n border-color: var(--vemly-text-muted);\n background: #fafafa;\n}\n\n.vemly-session-title {\n font-size: 14px;\n font-weight: 500;\n color: var(--vemly-text);\n margin-bottom: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.vemly-session-date {\n font-size: 12px;\n color: var(--vemly-text-muted);\n}\n\n.vemly-empty {\n text-align: center;\n padding: 24px;\n color: var(--vemly-text-muted);\n font-size: 14px;\n}\n\n/* Input */\n.vemly-input-container {\n padding: 12px 16px 16px;\n background: white;\n border-top: 1px solid var(--vemly-border);\n}\n\n.vemly-input-wrapper {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n background: var(--vemly-surface);\n border: 1px solid var(--vemly-border);\n border-radius: 12px;\n padding: 8px 8px 8px 14px;\n transition: all 0.15s;\n}\n\n.vemly-input-wrapper:focus-within {\n border-color: var(--vemly-primary);\n box-shadow: 0 0 0 3px rgba(80, 70, 229, 0.1);\n}\n\n.vemly-input {\n flex: 1;\n border: none;\n background: transparent;\n outline: none;\n font-size: 14px;\n color: var(--vemly-text);\n max-height: 100px;\n resize: none;\n font-family: inherit;\n padding: 4px 0;\n line-height: 1.4;\n}\n\n.vemly-input::placeholder {\n color: var(--vemly-text-muted);\n}\n\n.vemly-send {\n background: var(--vemly-primary);\n color: white;\n border: none;\n cursor: pointer;\n width: 32px;\n height: 32px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.15s;\n flex-shrink: 0;\n}\n\n.vemly-send:hover:not(:disabled) {\n background: var(--vemly-primary-hover);\n}\n\n.vemly-send:disabled {\n background: var(--vemly-border);\n color: var(--vemly-text-muted);\n cursor: default;\n}\n\n.vemly-branding {\n font-size: 11px;\n text-align: center;\n color: var(--vemly-text-muted);\n margin-top: 8px;\n}\n\n.vemly-branding a {\n color: var(--vemly-text-secondary);\n text-decoration: none;\n font-weight: 500;\n}\n\n/* Typing */\n.vemly-typing {\n display: flex;\n gap: 4px;\n padding: 14px 16px;\n background: white;\n border: 1px solid var(--vemly-border);\n border-radius: 16px;\n border-top-left-radius: 4px;\n width: fit-content;\n}\n\n.vemly-dot {\n width: 6px;\n height: 6px;\n background: var(--vemly-text-muted);\n border-radius: 50%;\n animation: vemly-bounce 1.4s infinite ease-in-out;\n}\n\n.vemly-dot:nth-child(1) { animation-delay: -0.32s; }\n.vemly-dot:nth-child(2) { animation-delay: -0.16s; }\n\n@keyframes vemly-bounce {\n 0%, 80%, 100% { transform: scale(0.6); }\n 40% { transform: scale(1); }\n}\n\n/* Mobile */\n@media (max-width: 480px) {\n .vemly-widget-container,\n .vemly-widget-container[data-position="right"],\n .vemly-widget-container[data-position="left"] {\n bottom: 0;\n right: 0;\n left: 0;\n align-items: flex-end; /* Always bottom sheet style or full screen */\n }\n \n .vemly-window {\n width: 100vw;\n height: 100vh;\n max-width: none;\n max-height: none;\n border-radius: 0;\n }\n \n .vemly-bubble {\n position: fixed;\n bottom: 16px;\n right: 16px;\n z-index: 2147483648; /* Ensure bubble is on top if needed */\n }\n}\n',this.shadowRoot.appendChild(n)}render(){if(!this.shadowRoot||!this.client)return;let t=document.createElement("div");this.shadowRoot.appendChild(t),e(n(v,{client:this.client}),t)}},u=f;typeof window<"u"&&(window.Vemly=f);export{u as default};
|